diff --git a/rad/static/dv3d/index.js b/rad/static/dv3d/index.js index 271f2839..a4ed21e4 100644 --- a/rad/static/dv3d/index.js +++ b/rad/static/dv3d/index.js @@ -1,4 +1,4 @@ -var bH=Object.defineProperty;var DH=(t,e,r)=>e in t?bH(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var VD=(t,e,r)=>DH(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 to=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Vl(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function IH(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 _O={exports:{}},Dw={},EO={exports:{}},zn={};/** +var E$=Object.defineProperty;var b$=(t,e,r)=>e in t?E$(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var Eb=(t,e,r)=>b$(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 zi=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function yl(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function D$(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 cO={exports:{}},G5={},lO={exports:{}},Gn={};/** * @license React * react.production.min.js * @@ -6,7 +6,7 @@ var bH=Object.defineProperty;var DH=(t,e,r)=>e in t?bH(t,e,{enumerable:!0,config * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var km=Symbol.for("react.element"),MH=Symbol.for("react.portal"),OH=Symbol.for("react.fragment"),PH=Symbol.for("react.strict_mode"),RH=Symbol.for("react.profiler"),AH=Symbol.for("react.provider"),LH=Symbol.for("react.context"),NH=Symbol.for("react.forward_ref"),kH=Symbol.for("react.suspense"),VH=Symbol.for("react.memo"),FH=Symbol.for("react.lazy"),FD=Symbol.iterator;function UH(t){return t===null||typeof t!="object"?null:(t=FD&&t[FD]||t["@@iterator"],typeof t=="function"?t:null)}var bO={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},DO=Object.assign,IO={};function Eg(t,e,r){this.props=t,this.context=e,this.refs=IO,this.updater=r||bO}Eg.prototype.isReactComponent={};Eg.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")};Eg.prototype.forceUpdate=function(t){this.updater.enqueueForceUpdate(this,t,"forceUpdate")};function MO(){}MO.prototype=Eg.prototype;function J_(t,e,r){this.props=t,this.context=e,this.refs=IO,this.updater=r||bO}var Z_=J_.prototype=new MO;Z_.constructor=J_;DO(Z_,Eg.prototype);Z_.isPureReactComponent=!0;var UD=Array.isArray,OO=Object.prototype.hasOwnProperty,Q_={current:null},PO={key:!0,ref:!0,__self:!0,__source:!0};function RO(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)OO.call(e,n)&&!PO.hasOwnProperty(n)&&(i[n]=e[n]);var s=arguments.length-2;if(s===1)i.children=r;else if(1e in t?bH(t,e,{enumerable:!0,config * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var zH=ot,jH=Symbol.for("react.element"),HH=Symbol.for("react.fragment"),KH=Object.prototype.hasOwnProperty,XH=zH.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,qH={key:!0,ref:!0,__self:!0,__source:!0};function LO(t,e,r){var n,i={},o=null,a=null;r!==void 0&&(o=""+r),e.key!==void 0&&(o=""+e.key),e.ref!==void 0&&(a=e.ref);for(n in e)KH.call(e,n)&&!qH.hasOwnProperty(n)&&(i[n]=e[n]);if(t&&t.defaultProps)for(n in e=t.defaultProps,e)i[n]===void 0&&(i[n]=e[n]);return{$$typeof:jH,type:t,key:o,ref:a,props:i,_owner:XH.current}}Dw.Fragment=HH;Dw.jsx=LO;Dw.jsxs=LO;_O.exports=Dw;var Ne=_O.exports,NO={exports:{}},cs={},kO={exports:{}},VO={};/** + */var z$=ot,$$=Symbol.for("react.element"),j$=Symbol.for("react.fragment"),H$=Object.prototype.hasOwnProperty,K$=z$.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,q$={key:!0,ref:!0,__self:!0,__source:!0};function yO(t,e,r){var n,i={},o=null,a=null;r!==void 0&&(o=""+r),e.key!==void 0&&(o=""+e.key),e.ref!==void 0&&(a=e.ref);for(n in e)H$.call(e,n)&&!q$.hasOwnProperty(n)&&(i[n]=e[n]);if(t&&t.defaultProps)for(n in e=t.defaultProps,e)i[n]===void 0&&(i[n]=e[n]);return{$$typeof:$$,type:t,key:o,ref:a,props:i,_owner:K$.current}}G5.Fragment=j$;G5.jsx=yO;G5.jsxs=yO;cO.exports=G5;var Re=cO.exports,wO={exports:{}},Qa={},xO={exports:{}},CO={};/** * @license React * scheduler.production.min.js * @@ -22,7 +22,7 @@ var bH=Object.defineProperty;var DH=(t,e,r)=>e in t?bH(t,e,{enumerable:!0,config * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */(function(t){function e(V,F){var G=V.length;V.push(F);e:for(;0>>1,ne=V[X];if(0>>1;Xi(ge,G))yei(Ie,ge)?(V[X]=Ie,V[ye]=G,X=ye):(V[X]=ge,V[me]=G,X=me);else if(yei(Ie,G))V[X]=Ie,V[ye]=G,X=ye;else break e}}return F}function i(V,F){var G=V.sortIndex-F.sortIndex;return G!==0?G:V.id-F.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,y=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 w(V){for(var F=r(l);F!==null;){if(F.callback===null)n(l);else if(F.startTime<=V)n(l),F.sortIndex=F.expirationTime,e(c,F);else break;F=r(l)}}function x(V){if(p=!1,w(V),!g)if(r(c)!==null)g=!0,B(C);else{var F=r(l);F!==null&&j(x,F.startTime-V)}}function C(V,F){g=!1,p&&(p=!1,y(_),_=-1),h=!0;var G=d;try{for(w(F),u=r(c);u!==null&&(!(u.expirationTime>F)||V&&!D());){var X=u.callback;if(typeof X=="function"){u.callback=null,d=u.priorityLevel;var ne=X(u.expirationTime<=F);F=t.unstable_now(),typeof ne=="function"?u.callback=ne:u===r(c)&&n(c),w(F)}else n(c);u=r(c)}if(u!==null)var ue=!0;else{var me=r(l);me!==null&&j(x,me.startTime-F),ue=!1}return ue}finally{u=null,d=G,h=!1}}var S=!1,T=null,_=-1,E=5,b=-1;function D(){return!(t.unstable_now()-bV||125X?(V.sortIndex=G,e(l,V),r(c)===null&&V===r(l)&&(p?(y(_),_=-1):p=!0,j(x,G-X))):(V.sortIndex=ne,e(c,V),g||h||(g=!0,B(C))),V},t.unstable_shouldYield=D,t.unstable_wrapCallback=function(V){var F=d;return function(){var G=d;d=F;try{return V.apply(this,arguments)}finally{d=G}}}})(VO);kO.exports=VO;var YH=kO.exports;/** + */(function(t){function e(F,U){var W=F.length;F.push(U);e:for(;0>>1,te=F[J];if(0>>1;Ji(pe,W))yei(Ie,pe)?(F[J]=Ie,F[ye]=W,J=ye):(F[J]=pe,F[ve]=W,J=ve);else if(yei(Ie,W))F[J]=Ie,F[ye]=W,J=ye;else break e}}return U}function i(F,U){var W=F.sortIndex-U.sortIndex;return W!==0?W:F.id-U.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,y=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 w(F){for(var U=r(l);U!==null;){if(U.callback===null)n(l);else if(U.startTime<=F)n(l),U.sortIndex=U.expirationTime,e(c,U);else break;U=r(l)}}function x(F){if(p=!1,w(F),!g)if(r(c)!==null)g=!0,G(C);else{var U=r(l);U!==null&&j(x,U.startTime-F)}}function C(F,U){g=!1,p&&(p=!1,y(_),_=-1),h=!0;var W=d;try{for(w(U),u=r(c);u!==null&&(!(u.expirationTime>U)||F&&!D());){var J=u.callback;if(typeof J=="function"){u.callback=null,d=u.priorityLevel;var te=J(u.expirationTime<=U);U=t.unstable_now(),typeof te=="function"?u.callback=te:u===r(c)&&n(c),w(U)}else n(c);u=r(c)}if(u!==null)var le=!0;else{var ve=r(l);ve!==null&&j(x,ve.startTime-U),le=!1}return le}finally{u=null,d=W,h=!1}}var S=!1,T=null,_=-1,E=5,b=-1;function D(){return!(t.unstable_now()-bF||125J?(F.sortIndex=W,e(l,F),r(c)===null&&F===r(l)&&(p?(y(_),_=-1):p=!0,j(x,W-J))):(F.sortIndex=te,e(c,F),g||h||(g=!0,G(C))),F},t.unstable_shouldYield=D,t.unstable_wrapCallback=function(F){var U=d;return function(){var W=d;d=U;try{return F.apply(this,arguments)}finally{d=W}}}})(CO);xO.exports=CO;var X$=xO.exports;/** * @license React * react-dom.production.min.js * @@ -30,42 +30,15 @@ var bH=Object.defineProperty;var DH=(t,e,r)=>e in t?bH(t,e,{enumerable:!0,config * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var JH=ot,rs=YH;function vt(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"),iS=Object.prototype.hasOwnProperty,ZH=/^[: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]*$/,GD={},WD={};function QH(t){return iS.call(WD,t)?!0:iS.call(GD,t)?!1:ZH.test(t)?WD[t]=!0:(GD[t]=!0,!1)}function eK(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 tK(t,e,r,n){if(e===null||typeof e>"u"||eK(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 va(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 Oo={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(t){Oo[t]=new va(t,0,!1,t,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(t){var e=t[0];Oo[e]=new va(e,1,!1,t[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(t){Oo[t]=new va(t,2,!1,t.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(t){Oo[t]=new va(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){Oo[t]=new va(t,3,!1,t.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(t){Oo[t]=new va(t,3,!0,t,null,!1,!1)});["capture","download"].forEach(function(t){Oo[t]=new va(t,4,!1,t,null,!1,!1)});["cols","rows","size","span"].forEach(function(t){Oo[t]=new va(t,6,!1,t,null,!1,!1)});["rowSpan","start"].forEach(function(t){Oo[t]=new va(t,5,!1,t.toLowerCase(),null,!1,!1)});var tE=/[\-:]([a-z])/g;function nE(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(tE,nE);Oo[e]=new va(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(tE,nE);Oo[e]=new va(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(tE,nE);Oo[e]=new va(e,1,!1,t,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(t){Oo[t]=new va(t,1,!1,t.toLowerCase(),null,!1,!1)});Oo.xlinkHref=new va("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(t){Oo[t]=new va(t,1,!1,t.toLowerCase(),null,!0,!0)});function rE(t,e,r,n){var i=Oo.hasOwnProperty(e)?Oo[e]:null;(i!==null?i.type!==0:n||!(2"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),l3=Object.prototype.hasOwnProperty,J$=/^[: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]*$/,Ob={},Mb={};function Z$(t){return l3.call(Mb,t)?!0:l3.call(Ob,t)?!1:J$.test(t)?Mb[t]=!0:(Ob[t]=!0,!1)}function Q$(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 ej(t,e,r,n){if(e===null||typeof e>"u"||Q$(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 ca(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 yo={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(t){yo[t]=new ca(t,0,!1,t,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(t){var e=t[0];yo[e]=new ca(e,1,!1,t[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(t){yo[t]=new ca(t,2,!1,t.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(t){yo[t]=new ca(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){yo[t]=new ca(t,3,!1,t.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(t){yo[t]=new ca(t,3,!0,t,null,!1,!1)});["capture","download"].forEach(function(t){yo[t]=new ca(t,4,!1,t,null,!1,!1)});["cols","rows","size","span"].forEach(function(t){yo[t]=new ca(t,6,!1,t,null,!1,!1)});["rowSpan","start"].forEach(function(t){yo[t]=new ca(t,5,!1,t.toLowerCase(),null,!1,!1)});var $T=/[\-:]([a-z])/g;function jT(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($T,jT);yo[e]=new ca(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($T,jT);yo[e]=new ca(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($T,jT);yo[e]=new ca(e,1,!1,t,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(t){yo[t]=new ca(t,1,!1,t.toLowerCase(),null,!1,!1)});yo.xlinkHref=new ca("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(t){yo[t]=new ca(t,1,!1,t.toLowerCase(),null,!0,!0)});function HT(t,e,r,n){var i=yo.hasOwnProperty(e)?yo[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{oC=!1,Error.prepareStackTrace=r}return(t=t?t.displayName||t.name:"")?Op(t):""}function nK(t){switch(t.tag){case 5:return Op(t.type);case 16:return Op("Lazy");case 13:return Op("Suspense");case 19:return Op("SuspenseList");case 0:case 2:case 15:return t=aC(t.type,!1),t;case 11:return t=aC(t.type.render,!1),t;case 1:return t=aC(t.type,!0),t;default:return""}}function cS(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 J0:return"Fragment";case Y0:return"Portal";case oS:return"Profiler";case iE:return"StrictMode";case aS:return"Suspense";case sS:return"SuspenseList"}if(typeof t=="object")switch(t.$$typeof){case BO:return(t.displayName||"Context")+".Consumer";case UO:return(t._context.displayName||"Context")+".Provider";case oE:var e=t.render;return t=t.displayName,t||(t=e.displayName||e.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case aE:return e=t.displayName||null,e!==null?e:cS(t.type)||"Memo";case tf:e=t._payload,t=t._init;try{return cS(t(e))}catch{}}return null}function rK(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 cS(e);case 8:return e===iE?"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 kf(t){switch(typeof t){case"boolean":case"number":case"string":case"undefined":return t;case"object":return t;default:return""}}function WO(t){var e=t.type;return(t=t.nodeName)&&t.toLowerCase()==="input"&&(e==="checkbox"||e==="radio")}function iK(t){var e=WO(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 Ov(t){t._valueTracker||(t._valueTracker=iK(t))}function $O(t){if(!t)return!1;var e=t._valueTracker;if(!e)return!0;var r=e.getValue(),n="";return t&&(n=WO(t)?t.checked?"true":"false":t.value),t=n,t!==r?(e.setValue(t),!0):!1}function Ny(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 lS(t,e){var r=e.checked;return gi({},e,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:r??t._wrapperState.initialChecked})}function zD(t,e){var r=e.defaultValue==null?"":e.defaultValue,n=e.checked!=null?e.checked:e.defaultChecked;r=kf(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 zO(t,e){e=e.checked,e!=null&&rE(t,"checked",e,!1)}function uS(t,e){zO(t,e);var r=kf(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")?fS(t,e.type,r):e.hasOwnProperty("defaultValue")&&fS(t,e.type,kf(e.defaultValue)),e.checked==null&&e.defaultChecked!=null&&(t.defaultChecked=!!e.defaultChecked)}function jD(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 fS(t,e,r){(e!=="number"||Ny(t.ownerDocument)!==t)&&(r==null?t.defaultValue=""+t._wrapperState.initialValue:t.defaultValue!==""+r&&(t.defaultValue=""+r))}var Pp=Array.isArray;function Dh(t,e,r,n){if(t=t.options,e){e={};for(var i=0;i"+e.valueOf().toString()+"",e=Pv.firstChild;t.firstChild;)t.removeChild(t.firstChild);for(;e.firstChild;)t.appendChild(e.firstChild)}});function A1(t,e){if(e){var r=t.firstChild;if(r&&r===t.lastChild&&r.nodeType===3){r.nodeValue=e;return}}t.textContent=e}var Yp={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},oK=["Webkit","ms","Moz","O"];Object.keys(Yp).forEach(function(t){oK.forEach(function(e){e=e+t.charAt(0).toUpperCase()+t.substring(1),Yp[e]=Yp[t]})});function XO(t,e,r){return e==null||typeof e=="boolean"||e===""?"":r||typeof e!="number"||e===0||Yp.hasOwnProperty(t)&&Yp[t]?(""+e).trim():e+"px"}function qO(t,e){t=t.style;for(var r in e)if(e.hasOwnProperty(r)){var n=r.indexOf("--")===0,i=XO(r,e[r],n);r==="float"&&(r="cssFloat"),n?t.setProperty(r,i):t[r]=i}}var aK=gi({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 gS(t,e){if(e){if(aK[t]&&(e.children!=null||e.dangerouslySetInnerHTML!=null))throw Error(vt(137,t));if(e.dangerouslySetInnerHTML!=null){if(e.children!=null)throw Error(vt(60));if(typeof e.dangerouslySetInnerHTML!="object"||!("__html"in e.dangerouslySetInnerHTML))throw Error(vt(61))}if(e.style!=null&&typeof e.style!="object")throw Error(vt(62))}}function pS(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 mS=null;function sE(t){return t=t.target||t.srcElement||window,t.correspondingUseElement&&(t=t.correspondingUseElement),t.nodeType===3?t.parentNode:t}var vS=null,Ih=null,Mh=null;function XD(t){if(t=Um(t)){if(typeof vS!="function")throw Error(vt(280));var e=t.stateNode;e&&(e=Rw(e),vS(t.stateNode,t.type,e))}}function YO(t){Ih?Mh?Mh.push(t):Mh=[t]:Ih=t}function JO(){if(Ih){var t=Ih,e=Mh;if(Mh=Ih=null,XD(t),e)for(t=0;t>>=0,t===0?32:31-(vK(t)/yK|0)|0}var Rv=64,Av=4194304;function Rp(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 Uy(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=Rp(s):(o&=a,o!==0&&(n=Rp(o)))}else a=r&~i,a!==0?n=Rp(a):o!==0&&(n=Rp(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 Vm(t,e,r){t.pendingLanes|=e,e!==536870912&&(t.suspendedLanes=0,t.pingedLanes=0),t=t.eventTimes,e=31-bc(e),t[e]=r}function SK(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=Zp),rI=" ",iI=!1;function vP(t,e){switch(t){case"keyup":return YK.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function yP(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var Z0=!1;function ZK(t,e){switch(t){case"compositionend":return yP(e);case"keypress":return e.which!==32?null:(iI=!0,rI);case"textInput":return t=e.data,t===rI&&iI?null:t;default:return null}}function QK(t,e){if(Z0)return t==="compositionend"||!pE&&vP(t,e)?(t=pP(),Y2=dE=ff=null,Z0=!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=cI(r)}}function SP(t,e){return t&&e?t===e?!0:t&&t.nodeType===3?!1:e&&e.nodeType===3?SP(t,e.parentNode):"contains"in t?t.contains(e):t.compareDocumentPosition?!!(t.compareDocumentPosition(e)&16):!1:!1}function TP(){for(var t=window,e=Ny();e instanceof t.HTMLIFrameElement;){try{var r=typeof e.contentWindow.location.href=="string"}catch{r=!1}if(r)t=e.contentWindow;else break;e=Ny(t.document)}return e}function mE(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 cX(t){var e=TP(),r=t.focusedElem,n=t.selectionRange;if(e!==r&&r&&r.ownerDocument&&SP(r.ownerDocument.documentElement,r)){if(n!==null&&mE(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=lI(r,o);var a=lI(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,Q0=null,TS=null,e1=null,_S=!1;function uI(t,e,r){var n=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;_S||Q0==null||Q0!==Ny(n)||(n=Q0,"selectionStart"in n&&mE(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}),e1&&U1(e1,n)||(e1=n,n=Wy(TS,"onSelect"),0nh||(t.current=OS[nh],OS[nh]=null,nh--)}function Nr(t,e){nh++,OS[nh]=t.current,t.current=e}var Vf={},qo=qf(Vf),Oa=qf(!1),Zd=Vf;function Jh(t,e){var r=t.type.contextTypes;if(!r)return Vf;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 Pa(t){return t=t.childContextTypes,t!=null}function zy(){Hr(Oa),Hr(qo)}function vI(t,e,r){if(qo.current!==Vf)throw Error(vt(168));Nr(qo,e),Nr(Oa,r)}function RP(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(vt(108,rK(t)||"Unknown",i));return gi({},r,n)}function jy(t){return t=(t=t.stateNode)&&t.__reactInternalMemoizedMergedChildContext||Vf,Zd=qo.current,Nr(qo,t),Nr(Oa,Oa.current),!0}function yI(t,e,r){var n=t.stateNode;if(!n)throw Error(vt(169));r?(t=RP(t,e,Zd),n.__reactInternalMemoizedMergedChildContext=t,Hr(Oa),Hr(qo),Nr(qo,t)):Hr(Oa),Nr(Oa,r)}var ou=null,Aw=!1,xC=!1;function AP(t){ou===null?ou=[t]:ou.push(t)}function xX(t){Aw=!0,AP(t)}function Yf(){if(!xC&&ou!==null){xC=!0;var t=0,e=yr;try{var r=ou;for(yr=1;t>=a,i-=a,du=1<<32-bc(e)+i|r<_?(E=T,T=null):E=T.sibling;var b=d(y,T,w[_],x);if(b===null){T===null&&(T=E);break}t&&T&&b.alternate===null&&e(y,T),m=o(b,m,_),S===null?C=b:S.sibling=b,S=b,T=E}if(_===w.length)return r(y,T),Jr&&md(y,_),C;if(T===null){for(;__?(E=T,T=null):E=T.sibling;var D=d(y,T,b.value,x);if(D===null){T===null&&(T=E);break}t&&T&&D.alternate===null&&e(y,T),m=o(D,m,_),S===null?C=D:S.sibling=D,S=D,T=E}if(b.done)return r(y,T),Jr&&md(y,_),C;if(T===null){for(;!b.done;_++,b=w.next())b=u(y,b.value,x),b!==null&&(m=o(b,m,_),S===null?C=b:S.sibling=b,S=b);return Jr&&md(y,_),C}for(T=n(y,T);!b.done;_++,b=w.next())b=h(T,y,_,b.value,x),b!==null&&(t&&b.alternate!==null&&T.delete(b.key===null?_:b.key),m=o(b,m,_),S===null?C=b:S.sibling=b,S=b);return t&&T.forEach(function(I){return e(y,I)}),Jr&&md(y,_),C}function v(y,m,w,x){if(typeof w=="object"&&w!==null&&w.type===J0&&w.key===null&&(w=w.props.children),typeof w=="object"&&w!==null){switch(w.$$typeof){case Mv:e:{for(var C=w.key,S=m;S!==null;){if(S.key===C){if(C=w.type,C===J0){if(S.tag===7){r(y,S.sibling),m=i(S,w.props.children),m.return=y,y=m;break e}}else if(S.elementType===C||typeof C=="object"&&C!==null&&C.$$typeof===tf&&CI(C)===S.type){r(y,S.sibling),m=i(S,w.props),m.ref=cp(y,S,w),m.return=y,y=m;break e}r(y,S);break}else e(y,S);S=S.sibling}w.type===J0?(m=Bd(w.props.children,y.mode,x,w.key),m.return=y,y=m):(x=iy(w.type,w.key,w.props,null,y.mode,x),x.ref=cp(y,m,w),x.return=y,y=x)}return a(y);case Y0:e:{for(S=w.key;m!==null;){if(m.key===S)if(m.tag===4&&m.stateNode.containerInfo===w.containerInfo&&m.stateNode.implementation===w.implementation){r(y,m.sibling),m=i(m,w.children||[]),m.return=y,y=m;break e}else{r(y,m);break}else e(y,m);m=m.sibling}m=IC(w,y.mode,x),m.return=y,y=m}return a(y);case tf:return S=w._init,v(y,m,S(w._payload),x)}if(Pp(w))return g(y,m,w,x);if(rp(w))return p(y,m,w,x);Bv(y,w)}return typeof w=="string"&&w!==""||typeof w=="number"?(w=""+w,m!==null&&m.tag===6?(r(y,m.sibling),m=i(m,w),m.return=y,y=m):(r(y,m),m=DC(w,y.mode,x),m.return=y,y=m),a(y)):r(y,m)}return v}var Qh=VP(!0),FP=VP(!1),Xy=qf(null),qy=null,oh=null,xE=null;function CE(){xE=oh=qy=null}function SE(t){var e=Xy.current;Hr(Xy),t._currentValue=e}function AS(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 Ph(t,e){qy=t,xE=oh=null,t=t.dependencies,t!==null&&t.firstContext!==null&&(t.lanes&e&&(Da=!0),t.firstContext=null)}function As(t){var e=t._currentValue;if(xE!==t)if(t={context:t,memoizedValue:e,next:null},oh===null){if(qy===null)throw Error(vt(308));oh=t,qy.dependencies={lanes:0,firstContext:t}}else oh=oh.next=t;return e}var Od=null;function TE(t){Od===null?Od=[t]:Od.push(t)}function UP(t,e,r,n){var i=e.interleaved;return i===null?(r.next=r,TE(e)):(r.next=i.next,i.next=r),e.interleaved=r,bu(t,n)}function bu(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 nf=!1;function _E(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function BP(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 yu(t,e){return{eventTime:t,lane:e,tag:0,payload:null,callback:null,next:null}}function Ef(t,e,r){var n=t.updateQueue;if(n===null)return null;if(n=n.shared,nr&2){var i=n.pending;return i===null?e.next=e:(e.next=i.next,i.next=e),n.pending=e,bu(t,r)}return i=n.interleaved,i===null?(e.next=e,TE(n)):(e.next=i.next,i.next=e),n.interleaved=e,bu(t,r)}function Z2(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,lE(t,r)}}function SI(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 Yy(t,e,r,n){var i=t.updateQueue;nf=!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=gi({},u,d);break e;case 2:nf=!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);t0|=a,t.lanes=a,t.memoizedState=u}}function TI(t,e,r){if(t=e.effects,e.effects=null,t!==null)for(e=0;er?r:4,t(!0);var n=SC.transition;SC.transition={};try{t(!1),e()}finally{yr=r,SC.transition=n}}function rR(){return Ls().memoizedState}function _X(t,e,r){var n=Df(t);if(r={lane:n,action:r,hasEagerState:!1,eagerState:null,next:null},iR(t))oR(e,r);else if(r=UP(t,e,r,n),r!==null){var i=fa();Dc(r,t,n,i),aR(r,e,n)}}function EX(t,e,r){var n=Df(t),i={lane:n,action:r,hasEagerState:!1,eagerState:null,next:null};if(iR(t))oR(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,Pc(s,a)){var c=e.interleaved;c===null?(i.next=i,TE(e)):(i.next=c.next,c.next=i),e.interleaved=i;return}}catch{}finally{}r=UP(t,e,i,n),r!==null&&(i=fa(),Dc(r,t,n,i),aR(r,e,n))}}function iR(t){var e=t.alternate;return t===hi||e!==null&&e===hi}function oR(t,e){t1=Zy=!0;var r=t.pending;r===null?e.next=e:(e.next=r.next,r.next=e),t.pending=e}function aR(t,e,r){if(r&4194240){var n=e.lanes;n&=t.pendingLanes,r|=n,e.lanes=r,lE(t,r)}}var Qy={readContext:As,useCallback:Fo,useContext:Fo,useEffect:Fo,useImperativeHandle:Fo,useInsertionEffect:Fo,useLayoutEffect:Fo,useMemo:Fo,useReducer:Fo,useRef:Fo,useState:Fo,useDebugValue:Fo,useDeferredValue:Fo,useTransition:Fo,useMutableSource:Fo,useSyncExternalStore:Fo,useId:Fo,unstable_isNewReconciler:!1},bX={readContext:As,useCallback:function(t,e){return cl().memoizedState=[t,e===void 0?null:e],t},useContext:As,useEffect:EI,useImperativeHandle:function(t,e,r){return r=r!=null?r.concat([t]):null,ey(4194308,4,ZP.bind(null,e,t),r)},useLayoutEffect:function(t,e){return ey(4194308,4,t,e)},useInsertionEffect:function(t,e){return ey(4,2,t,e)},useMemo:function(t,e){var r=cl();return e=e===void 0?null:e,t=t(),r.memoizedState=[t,e],t},useReducer:function(t,e,r){var n=cl();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=_X.bind(null,hi,t),[n.memoizedState,t]},useRef:function(t){var e=cl();return t={current:t},e.memoizedState=t},useState:_I,useDebugValue:RE,useDeferredValue:function(t){return cl().memoizedState=t},useTransition:function(){var t=_I(!1),e=t[0];return t=TX.bind(null,t[1]),cl().memoizedState=t,[e,t]},useMutableSource:function(){},useSyncExternalStore:function(t,e,r){var n=hi,i=cl();if(Jr){if(r===void 0)throw Error(vt(407));r=r()}else{if(r=e(),vo===null)throw Error(vt(349));e0&30||zP(n,e,r)}i.memoizedState=r;var o={value:r,getSnapshot:e};return i.queue=o,EI(HP.bind(null,n,o,t),[t]),n.flags|=2048,K1(9,jP.bind(null,n,o,r,e),void 0,null),r},useId:function(){var t=cl(),e=vo.identifierPrefix;if(Jr){var r=hu,n=du;r=(n&~(1<<32-bc(n)-1)).toString(32)+r,e=":"+e+"R"+r,r=j1++,0")&&(c=c.replace("",t.displayName)),c}while(1<=a&&0<=s);break}}}finally{yx=!1,Error.prepareStackTrace=r}return(t=t?t.displayName||t.name:"")?qg(t):""}function tj(t){switch(t.tag){case 5:return qg(t.type);case 16:return qg("Lazy");case 13:return qg("Suspense");case 19:return qg("SuspenseList");case 0:case 2:case 15:return t=wx(t.type,!1),t;case 11:return t=wx(t.type.render,!1),t;case 1:return t=wx(t.type,!0),t;default:return""}}function h3(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 x0:return"Fragment";case w0:return"Portal";case u3:return"Profiler";case KT:return"StrictMode";case f3:return"Suspense";case d3:return"SuspenseList"}if(typeof t=="object")switch(t.$$typeof){case _O:return(t.displayName||"Context")+".Consumer";case TO:return(t._context.displayName||"Context")+".Provider";case qT:var e=t.render;return t=t.displayName,t||(t=e.displayName||e.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case XT:return e=t.displayName||null,e!==null?e:h3(t.type)||"Memo";case Lu:e=t._payload,t=t._init;try{return h3(t(e))}catch{}}return null}function nj(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 h3(e);case 8:return e===KT?"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 ff(t){switch(typeof t){case"boolean":case"number":case"string":case"undefined":return t;case"object":return t;default:return""}}function bO(t){var e=t.type;return(t=t.nodeName)&&t.toLowerCase()==="input"&&(e==="checkbox"||e==="radio")}function rj(t){var e=bO(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 $1(t){t._valueTracker||(t._valueTracker=rj(t))}function DO(t){if(!t)return!1;var e=t._valueTracker;if(!e)return!0;var r=e.getValue(),n="";return t&&(n=bO(t)?t.checked?"true":"false":t.value),t=n,t!==r?(e.setValue(t),!0):!1}function Xv(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 g3(t,e){var r=e.checked;return ii({},e,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:r??t._wrapperState.initialChecked})}function Rb(t,e){var r=e.defaultValue==null?"":e.defaultValue,n=e.checked!=null?e.checked:e.defaultChecked;r=ff(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 IO(t,e){e=e.checked,e!=null&&HT(t,"checked",e,!1)}function p3(t,e){IO(t,e);var r=ff(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")?m3(t,e.type,r):e.hasOwnProperty("defaultValue")&&m3(t,e.type,ff(e.defaultValue)),e.checked==null&&e.defaultChecked!=null&&(t.defaultChecked=!!e.defaultChecked)}function Lb(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 m3(t,e,r){(e!=="number"||Xv(t.ownerDocument)!==t)&&(r==null?t.defaultValue=""+t._wrapperState.initialValue:t.defaultValue!==""+r&&(t.defaultValue=""+r))}var Xg=Array.isArray;function Y0(t,e,r,n){if(t=t.options,e){e={};for(var i=0;i"+e.valueOf().toString()+"",e=j1.firstChild;t.firstChild;)t.removeChild(t.firstChild);for(;e.firstChild;)t.appendChild(e.firstChild)}});function Yp(t,e){if(e){var r=t.firstChild;if(r&&r===t.lastChild&&r.nodeType===3){r.nodeValue=e;return}}t.textContent=e}var gp={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},ij=["Webkit","ms","Moz","O"];Object.keys(gp).forEach(function(t){ij.forEach(function(e){e=e+t.charAt(0).toUpperCase()+t.substring(1),gp[e]=gp[t]})});function RO(t,e,r){return e==null||typeof e=="boolean"||e===""?"":r||typeof e!="number"||e===0||gp.hasOwnProperty(t)&&gp[t]?(""+e).trim():e+"px"}function LO(t,e){t=t.style;for(var r in e)if(e.hasOwnProperty(r)){var n=r.indexOf("--")===0,i=RO(r,e[r],n);r==="float"&&(r="cssFloat"),n?t.setProperty(r,i):t[r]=i}}var oj=ii({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 w3(t,e){if(e){if(oj[t]&&(e.children!=null||e.dangerouslySetInnerHTML!=null))throw Error(mt(137,t));if(e.dangerouslySetInnerHTML!=null){if(e.children!=null)throw Error(mt(60));if(typeof e.dangerouslySetInnerHTML!="object"||!("__html"in e.dangerouslySetInnerHTML))throw Error(mt(61))}if(e.style!=null&&typeof e.style!="object")throw Error(mt(62))}}function x3(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 C3=null;function YT(t){return t=t.target||t.srcElement||window,t.correspondingUseElement&&(t=t.correspondingUseElement),t.nodeType===3?t.parentNode:t}var S3=null,J0=null,Z0=null;function kb(t){if(t=e1(t)){if(typeof S3!="function")throw Error(mt(280));var e=t.stateNode;e&&(e=H5(e),S3(t.stateNode,t.type,e))}}function AO(t){J0?Z0?Z0.push(t):Z0=[t]:J0=t}function NO(){if(J0){var t=J0,e=Z0;if(Z0=J0=null,kb(t),e)for(t=0;t>>=0,t===0?32:31-(mj(t)/vj|0)|0}var H1=64,K1=4194304;function Yg(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 Qv(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=Yg(s):(o&=a,o!==0&&(n=Yg(o)))}else a=r&~i,a!==0?n=Yg(a):o!==0&&(n=Yg(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 Zm(t,e,r){t.pendingLanes|=e,e!==536870912&&(t.suspendedLanes=0,t.pingedLanes=0),t=t.eventTimes,e=31-gc(e),t[e]=r}function Cj(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=mp),jb=" ",Hb=!1;function tM(t,e){switch(t){case"keyup":return Xj.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function nM(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var C0=!1;function Jj(t,e){switch(t){case"compositionend":return nM(e);case"keypress":return e.which!==32?null:(Hb=!0,jb);case"textInput":return t=e.data,t===jb&&Hb?null:t;default:return null}}function Zj(t,e){if(C0)return t==="compositionend"||!i_&&tM(t,e)?(t=QO(),fv=t_=Wu=null,C0=!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=Yb(r)}}function aM(t,e){return t&&e?t===e?!0:t&&t.nodeType===3?!1:e&&e.nodeType===3?aM(t,e.parentNode):"contains"in t?t.contains(e):t.compareDocumentPosition?!!(t.compareDocumentPosition(e)&16):!1:!1}function sM(){for(var t=window,e=Xv();e instanceof t.HTMLIFrameElement;){try{var r=typeof e.contentWindow.location.href=="string"}catch{r=!1}if(r)t=e.contentWindow;else break;e=Xv(t.document)}return e}function o_(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 sH(t){var e=sM(),r=t.focusedElem,n=t.selectionRange;if(e!==r&&r&&r.ownerDocument&&aM(r.ownerDocument.documentElement,r)){if(n!==null&&o_(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=Jb(r,o);var a=Jb(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,S0=null,I3=null,yp=null,O3=!1;function Zb(t,e,r){var n=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;O3||S0==null||S0!==Xv(n)||(n=S0,"selectionStart"in n&&o_(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}),yp&&nm(yp,n)||(yp=n,n=ny(I3,"onSelect"),0E0||(t.current=N3[E0],N3[E0]=null,E0--)}function Er(t,e){E0++,N3[E0]=t.current,t.current=e}var df={},Uo=Df(df),xa=Df(!1),Ed=df;function Ch(t,e){var r=t.type.contextTypes;if(!r)return df;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 Ca(t){return t=t.childContextTypes,t!=null}function iy(){Lr(xa),Lr(Uo)}function o6(t,e,r){if(Uo.current!==df)throw Error(mt(168));Er(Uo,e),Er(xa,r)}function mM(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(mt(108,nj(t)||"Unknown",i));return ii({},r,n)}function oy(t){return t=(t=t.stateNode)&&t.__reactInternalMemoizedMergedChildContext||df,Ed=Uo.current,Er(Uo,t),Er(xa,xa.current),!0}function a6(t,e,r){var n=t.stateNode;if(!n)throw Error(mt(169));r?(t=mM(t,e,Ed),n.__reactInternalMemoizedMergedChildContext=t,Lr(xa),Lr(Uo),Er(Uo,t)):Lr(xa),Er(xa,r)}var Gl=null,K5=!1,Lx=!1;function vM(t){Gl===null?Gl=[t]:Gl.push(t)}function wH(t){K5=!0,vM(t)}function If(){if(!Lx&&Gl!==null){Lx=!0;var t=0,e=dr;try{var r=Gl;for(dr=1;t>=a,i-=a,jl=1<<32-gc(e)+i|r<_?(E=T,T=null):E=T.sibling;var b=d(y,T,w[_],x);if(b===null){T===null&&(T=E);break}t&&T&&b.alternate===null&&e(y,T),m=o(b,m,_),S===null?C=b:S.sibling=b,S=b,T=E}if(_===w.length)return r(y,T),Wr&&Xf(y,_),C;if(T===null){for(;__?(E=T,T=null):E=T.sibling;var D=d(y,T,b.value,x);if(D===null){T===null&&(T=E);break}t&&T&&D.alternate===null&&e(y,T),m=o(D,m,_),S===null?C=D:S.sibling=D,S=D,T=E}if(b.done)return r(y,T),Wr&&Xf(y,_),C;if(T===null){for(;!b.done;_++,b=w.next())b=u(y,b.value,x),b!==null&&(m=o(b,m,_),S===null?C=b:S.sibling=b,S=b);return Wr&&Xf(y,_),C}for(T=n(y,T);!b.done;_++,b=w.next())b=h(T,y,_,b.value,x),b!==null&&(t&&b.alternate!==null&&T.delete(b.key===null?_:b.key),m=o(b,m,_),S===null?C=b:S.sibling=b,S=b);return t&&T.forEach(function(O){return e(y,O)}),Wr&&Xf(y,_),C}function v(y,m,w,x){if(typeof w=="object"&&w!==null&&w.type===x0&&w.key===null&&(w=w.props.children),typeof w=="object"&&w!==null){switch(w.$$typeof){case z1:e:{for(var C=w.key,S=m;S!==null;){if(S.key===C){if(C=w.type,C===x0){if(S.tag===7){r(y,S.sibling),m=i(S,w.props.children),m.return=y,y=m;break e}}else if(S.elementType===C||typeof C=="object"&&C!==null&&C.$$typeof===Lu&&l6(C)===S.type){r(y,S.sibling),m=i(S,w.props),m.ref=Eg(y,S,w),m.return=y,y=m;break e}r(y,S);break}else e(y,S);S=S.sibling}w.type===x0?(m=md(w.props.children,y.mode,x,w.key),m.return=y,y=m):(x=wv(w.type,w.key,w.props,null,y.mode,x),x.ref=Eg(y,m,w),x.return=y,y=x)}return a(y);case w0:e:{for(S=w.key;m!==null;){if(m.key===S)if(m.tag===4&&m.stateNode.containerInfo===w.containerInfo&&m.stateNode.implementation===w.implementation){r(y,m.sibling),m=i(m,w.children||[]),m.return=y,y=m;break e}else{r(y,m);break}else e(y,m);m=m.sibling}m=Gx(w,y.mode,x),m.return=y,y=m}return a(y);case Lu:return S=w._init,v(y,m,S(w._payload),x)}if(Xg(w))return g(y,m,w,x);if(xg(w))return p(y,m,w,x);e2(y,w)}return typeof w=="string"&&w!==""||typeof w=="number"?(w=""+w,m!==null&&m.tag===6?(r(y,m.sibling),m=i(m,w),m.return=y,y=m):(r(y,m),m=Bx(w,y.mode,x),m.return=y,y=m),a(y)):r(y,m)}return v}var Th=CM(!0),SM=CM(!1),cy=Df(null),ly=null,I0=null,l_=null;function u_(){l_=I0=ly=null}function f_(t){var e=cy.current;Lr(cy),t._currentValue=e}function F3(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 eh(t,e){ly=t,l_=I0=null,t=t.dependencies,t!==null&&t.firstContext!==null&&(t.lanes&e&&(ma=!0),t.firstContext=null)}function _s(t){var e=t._currentValue;if(l_!==t)if(t={context:t,memoizedValue:e,next:null},I0===null){if(ly===null)throw Error(mt(308));I0=t,ly.dependencies={lanes:0,firstContext:t}}else I0=I0.next=t;return e}var ld=null;function d_(t){ld===null?ld=[t]:ld.push(t)}function TM(t,e,r,n){var i=e.interleaved;return i===null?(r.next=r,d_(e)):(r.next=i.next,i.next=r),e.interleaved=r,ou(t,n)}function ou(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 Au=!1;function h_(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function _M(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 Zl(t,e){return{eventTime:t,lane:e,tag:0,payload:null,callback:null,next:null}}function tf(t,e,r){var n=t.updateQueue;if(n===null)return null;if(n=n.shared,Qn&2){var i=n.pending;return i===null?e.next=e:(e.next=i.next,i.next=e),n.pending=e,ou(t,r)}return i=n.interleaved,i===null?(e.next=e,d_(n)):(e.next=i.next,i.next=e),n.interleaved=e,ou(t,r)}function hv(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,ZT(t,r)}}function u6(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 uy(t,e,r,n){var i=t.updateQueue;Au=!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=ii({},u,d);break e;case 2:Au=!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);Id|=a,t.lanes=a,t.memoizedState=u}}function f6(t,e,r){if(t=e.effects,e.effects=null,t!==null)for(e=0;er?r:4,t(!0);var n=Nx.transition;Nx.transition={};try{t(!1),e()}finally{dr=r,Nx.transition=n}}function GM(){return Es().memoizedState}function TH(t,e,r){var n=rf(t);if(r={lane:n,action:r,hasEagerState:!1,eagerState:null,next:null},WM(t))zM(e,r);else if(r=TM(t,e,r,n),r!==null){var i=na();pc(r,t,n,i),$M(r,e,n)}}function _H(t,e,r){var n=rf(t),i={lane:n,action:r,hasEagerState:!1,eagerState:null,next:null};if(WM(t))zM(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,vc(s,a)){var c=e.interleaved;c===null?(i.next=i,d_(e)):(i.next=c.next,c.next=i),e.interleaved=i;return}}catch{}finally{}r=TM(t,e,i,n),r!==null&&(i=na(),pc(r,t,n,i),$M(r,e,n))}}function WM(t){var e=t.alternate;return t===ri||e!==null&&e===ri}function zM(t,e){wp=dy=!0;var r=t.pending;r===null?e.next=e:(e.next=r.next,r.next=e),t.pending=e}function $M(t,e,r){if(r&4194240){var n=e.lanes;n&=t.pendingLanes,r|=n,e.lanes=r,ZT(t,r)}}var hy={readContext:_s,useCallback:Do,useContext:Do,useEffect:Do,useImperativeHandle:Do,useInsertionEffect:Do,useLayoutEffect:Do,useMemo:Do,useReducer:Do,useRef:Do,useState:Do,useDebugValue:Do,useDeferredValue:Do,useTransition:Do,useMutableSource:Do,useSyncExternalStore:Do,useId:Do,unstable_isNewReconciler:!1},EH={readContext:_s,useCallback:function(t,e){return $c().memoizedState=[t,e===void 0?null:e],t},useContext:_s,useEffect:h6,useImperativeHandle:function(t,e,r){return r=r!=null?r.concat([t]):null,pv(4194308,4,kM.bind(null,e,t),r)},useLayoutEffect:function(t,e){return pv(4194308,4,t,e)},useInsertionEffect:function(t,e){return pv(4,2,t,e)},useMemo:function(t,e){var r=$c();return e=e===void 0?null:e,t=t(),r.memoizedState=[t,e],t},useReducer:function(t,e,r){var n=$c();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=TH.bind(null,ri,t),[n.memoizedState,t]},useRef:function(t){var e=$c();return t={current:t},e.memoizedState=t},useState:d6,useDebugValue:C_,useDeferredValue:function(t){return $c().memoizedState=t},useTransition:function(){var t=d6(!1),e=t[0];return t=SH.bind(null,t[1]),$c().memoizedState=t,[e,t]},useMutableSource:function(){},useSyncExternalStore:function(t,e,r){var n=ri,i=$c();if(Wr){if(r===void 0)throw Error(mt(407));r=r()}else{if(r=e(),oo===null)throw Error(mt(349));Dd&30||IM(n,e,r)}i.memoizedState=r;var o={value:r,getSnapshot:e};return i.queue=o,h6(MM.bind(null,n,o,t),[t]),n.flags|=2048,um(9,OM.bind(null,n,o,r,e),void 0,null),r},useId:function(){var t=$c(),e=oo.identifierPrefix;if(Wr){var r=Hl,n=jl;r=(n&~(1<<32-gc(n)-1)).toString(32)+r,e=":"+e+"R"+r,r=cm++,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[gl]=e,t[W1]=n,mR(t,e,!1,!1),e.stateNode=t;e:{switch(a=pS(r,n),r){case"dialog":Gr("cancel",t),Gr("close",t),i=n;break;case"iframe":case"object":case"embed":Gr("load",t),i=n;break;case"video":case"audio":for(i=0;ing&&(e.flags|=128,n=!0,lp(o,!1),e.lanes=4194304)}else{if(!n)if(t=Jy(a),t!==null){if(e.flags|=128,n=!0,r=t.updateQueue,r!==null&&(e.updateQueue=r,e.flags|=4),lp(o,!0),o.tail===null&&o.tailMode==="hidden"&&!a.alternate&&!Jr)return Uo(e),null}else 2*Pi()-o.renderingStartTime>ng&&r!==1073741824&&(e.flags|=128,n=!0,lp(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=Pi(),e.sibling=null,r=fi.current,Nr(fi,n?r&1|2:r&1),e):(Uo(e),null);case 22:case 23:return FE(),n=e.memoizedState!==null,t!==null&&t.memoizedState!==null!==n&&(e.flags|=8192),n&&e.mode&1?Ka&1073741824&&(Uo(e),e.subtreeFlags&6&&(e.flags|=8192)):Uo(e),null;case 24:return null;case 25:return null}throw Error(vt(156,e.tag))}function LX(t,e){switch(yE(e),e.tag){case 1:return Pa(e.type)&&zy(),t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 3:return eg(),Hr(Oa),Hr(qo),DE(),t=e.flags,t&65536&&!(t&128)?(e.flags=t&-65537|128,e):null;case 5:return bE(e),null;case 13:if(Hr(fi),t=e.memoizedState,t!==null&&t.dehydrated!==null){if(e.alternate===null)throw Error(vt(340));Zh()}return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 19:return Hr(fi),null;case 4:return eg(),null;case 10:return SE(e.type._context),null;case 22:case 23:return FE(),null;case 24:return null;default:return null}}var Wv=!1,jo=!1,NX=typeof WeakSet=="function"?WeakSet:Set,Ft=null;function ah(t,e){var r=t.ref;if(r!==null)if(typeof r=="function")try{r(null)}catch(n){Ci(t,e,n)}else r.current=null}function WS(t,e,r){try{r()}catch(n){Ci(t,e,n)}}var kI=!1;function kX(t,e){if(ES=By,t=TP(),mE(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(bS={focusedElem:t,selectionRange:r},By=!1,Ft=e;Ft!==null;)if(e=Ft,t=e.child,(e.subtreeFlags&1028)!==0&&t!==null)t.return=e,Ft=t;else for(;Ft!==null;){e=Ft;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,y=e.stateNode,m=y.getSnapshotBeforeUpdate(e.elementType===e.type?p:dc(e.type,p),v);y.__reactInternalSnapshotBeforeUpdate=m}break;case 3:var w=e.stateNode.containerInfo;w.nodeType===1?w.textContent="":w.nodeType===9&&w.documentElement&&w.removeChild(w.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(vt(163))}}catch(x){Ci(e,e.return,x)}if(t=e.sibling,t!==null){t.return=e.return,Ft=t;break}Ft=e.return}return g=kI,kI=!1,g}function n1(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&&WS(e,r,o)}i=i.next}while(i!==n)}}function kw(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 $S(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 wR(t){var e=t.alternate;e!==null&&(t.alternate=null,wR(e)),t.child=null,t.deletions=null,t.sibling=null,t.tag===5&&(e=t.stateNode,e!==null&&(delete e[gl],delete e[W1],delete e[MS],delete e[yX],delete e[wX])),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 xR(t){return t.tag===5||t.tag===3||t.tag===4}function VI(t){e:for(;;){for(;t.sibling===null;){if(t.return===null||xR(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 zS(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=$y));else if(n!==4&&(t=t.child,t!==null))for(zS(t,e,r),t=t.sibling;t!==null;)zS(t,e,r),t=t.sibling}function jS(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(jS(t,e,r),t=t.sibling;t!==null;)jS(t,e,r),t=t.sibling}var Eo=null,gc=!1;function $u(t,e,r){for(r=r.child;r!==null;)CR(t,e,r),r=r.sibling}function CR(t,e,r){if(xl&&typeof xl.onCommitFiberUnmount=="function")try{xl.onCommitFiberUnmount(Iw,r)}catch{}switch(r.tag){case 5:jo||ah(r,e);case 6:var n=Eo,i=gc;Eo=null,$u(t,e,r),Eo=n,gc=i,Eo!==null&&(gc?(t=Eo,r=r.stateNode,t.nodeType===8?t.parentNode.removeChild(r):t.removeChild(r)):Eo.removeChild(r.stateNode));break;case 18:Eo!==null&&(gc?(t=Eo,r=r.stateNode,t.nodeType===8?wC(t.parentNode,r):t.nodeType===1&&wC(t,r),V1(t)):wC(Eo,r.stateNode));break;case 4:n=Eo,i=gc,Eo=r.stateNode.containerInfo,gc=!0,$u(t,e,r),Eo=n,gc=i;break;case 0:case 11:case 14:case 15:if(!jo&&(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)&&WS(r,e,a),i=i.next}while(i!==n)}$u(t,e,r);break;case 1:if(!jo&&(ah(r,e),n=r.stateNode,typeof n.componentWillUnmount=="function"))try{n.props=r.memoizedProps,n.state=r.memoizedState,n.componentWillUnmount()}catch(s){Ci(r,e,s)}$u(t,e,r);break;case 21:$u(t,e,r);break;case 22:r.mode&1?(jo=(n=jo)||r.memoizedState!==null,$u(t,e,r),jo=n):$u(t,e,r);break;default:$u(t,e,r)}}function FI(t){var e=t.updateQueue;if(e!==null){t.updateQueue=null;var r=t.stateNode;r===null&&(r=t.stateNode=new NX),e.forEach(function(n){var i=jX.bind(null,t,n);r.has(n)||(r.add(n),n.then(i,i))})}}function oc(t,e){var r=e.deletions;if(r!==null)for(var n=0;ni&&(i=a),n&=~o}if(n=i,n=Pi()-n,n=(120>n?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*FX(n/1960))-n,10t?16:t,df===null)var n=!1;else{if(t=df,df=null,n5=0,nr&6)throw Error(vt(331));var i=nr;for(nr|=4,Ft=t.current;Ft!==null;){var o=Ft,a=o.child;if(Ft.flags&16){var s=o.deletions;if(s!==null){for(var c=0;cPi()-kE?Ud(t,0):NE|=r),Ra(t,e)}function MR(t,e){e===0&&(t.mode&1?(e=Av,Av<<=1,!(Av&130023424)&&(Av=4194304)):e=1);var r=fa();t=bu(t,e),t!==null&&(Vm(t,e,r),Ra(t,r))}function zX(t){var e=t.memoizedState,r=0;e!==null&&(r=e.retryLane),MR(t,r)}function jX(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(vt(314))}n!==null&&n.delete(e),MR(t,r)}var OR;OR=function(t,e,r){if(t!==null)if(t.memoizedProps!==e.pendingProps||Oa.current)Da=!0;else{if(!(t.lanes&r)&&!(e.flags&128))return Da=!1,RX(t,e,r);Da=!!(t.flags&131072)}else Da=!1,Jr&&e.flags&1048576&&LP(e,Ky,e.index);switch(e.lanes=0,e.tag){case 2:var n=e.type;ty(t,e),t=e.pendingProps;var i=Jh(e,qo.current);Ph(e,r),i=ME(null,e,n,t,i,r);var o=OE();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,Pa(n)?(o=!0,jy(e)):o=!1,e.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,_E(e),i.updater=Nw,e.stateNode=i,i._reactInternals=e,NS(e,n,t,r),e=FS(null,e,n,!0,o,r)):(e.tag=0,Jr&&o&&vE(e),ca(null,e,i,r),e=e.child),e;case 16:n=e.elementType;e:{switch(ty(t,e),t=e.pendingProps,i=n._init,n=i(n._payload),e.type=n,i=e.tag=KX(n),t=dc(n,t),i){case 0:e=VS(null,e,n,t,r);break e;case 1:e=AI(null,e,n,t,r);break e;case 11:e=PI(null,e,n,t,r);break e;case 14:e=RI(null,e,n,dc(n.type,t),r);break e}throw Error(vt(306,n,""))}return e;case 0:return n=e.type,i=e.pendingProps,i=e.elementType===n?i:dc(n,i),VS(t,e,n,i,r);case 1:return n=e.type,i=e.pendingProps,i=e.elementType===n?i:dc(n,i),AI(t,e,n,i,r);case 3:e:{if(hR(e),t===null)throw Error(vt(387));n=e.pendingProps,o=e.memoizedState,i=o.element,BP(t,e),Yy(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=tg(Error(vt(423)),e),e=LI(t,e,n,r,i);break e}else if(n!==i){i=tg(Error(vt(424)),e),e=LI(t,e,n,r,i);break e}else for(Ja=_f(e.stateNode.containerInfo.firstChild),es=e,Jr=!0,mc=null,r=FP(e,null,n,r),e.child=r;r;)r.flags=r.flags&-3|4096,r=r.sibling;else{if(Zh(),n===i){e=Du(t,e,r);break e}ca(t,e,n,r)}e=e.child}return e;case 5:return GP(e),t===null&&RS(e),n=e.type,i=e.pendingProps,o=t!==null?t.memoizedProps:null,a=i.children,DS(n,i)?a=null:o!==null&&DS(n,o)&&(e.flags|=32),dR(t,e),ca(t,e,a,r),e.child;case 6:return t===null&&RS(e),null;case 13:return gR(t,e,r);case 4:return EE(e,e.stateNode.containerInfo),n=e.pendingProps,t===null?e.child=Qh(e,null,n,r):ca(t,e,n,r),e.child;case 11:return n=e.type,i=e.pendingProps,i=e.elementType===n?i:dc(n,i),PI(t,e,n,i,r);case 7:return ca(t,e,e.pendingProps,r),e.child;case 8:return ca(t,e,e.pendingProps.children,r),e.child;case 12:return ca(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,Nr(Xy,n._currentValue),n._currentValue=a,o!==null)if(Pc(o.value,a)){if(o.children===i.children&&!Oa.current){e=Du(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=yu(-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),AS(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(vt(341));a.lanes|=r,s=a.alternate,s!==null&&(s.lanes|=r),AS(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}ca(t,e,i.children,r),e=e.child}return e;case 9:return i=e.type,n=e.pendingProps.children,Ph(e,r),i=As(i),n=n(i),e.flags|=1,ca(t,e,n,r),e.child;case 14:return n=e.type,i=dc(n,e.pendingProps),i=dc(n.type,i),RI(t,e,n,i,r);case 15:return uR(t,e,e.type,e.pendingProps,r);case 17:return n=e.type,i=e.pendingProps,i=e.elementType===n?i:dc(n,i),ty(t,e),e.tag=1,Pa(n)?(t=!0,jy(e)):t=!1,Ph(e,r),sR(e,n,i),NS(e,n,i,r),FS(null,e,n,!0,t,r);case 19:return pR(t,e,r);case 22:return fR(t,e,r)}throw Error(vt(156,e.tag))};function PR(t,e){return iP(t,e)}function HX(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 Ms(t,e,r,n){return new HX(t,e,r,n)}function BE(t){return t=t.prototype,!(!t||!t.isReactComponent)}function KX(t){if(typeof t=="function")return BE(t)?1:0;if(t!=null){if(t=t.$$typeof,t===oE)return 11;if(t===aE)return 14}return 2}function If(t,e){var r=t.alternate;return r===null?(r=Ms(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 iy(t,e,r,n,i,o){var a=2;if(n=t,typeof t=="function")BE(t)&&(a=1);else if(typeof t=="string")a=5;else e:switch(t){case J0:return Bd(r.children,i,o,e);case iE:a=8,i|=8;break;case oS:return t=Ms(12,r,e,i|2),t.elementType=oS,t.lanes=o,t;case aS:return t=Ms(13,r,e,i),t.elementType=aS,t.lanes=o,t;case sS:return t=Ms(19,r,e,i),t.elementType=sS,t.lanes=o,t;case GO:return Fw(r,i,o,e);default:if(typeof t=="object"&&t!==null)switch(t.$$typeof){case UO:a=10;break e;case BO:a=9;break e;case oE:a=11;break e;case aE:a=14;break e;case tf:a=16,n=null;break e}throw Error(vt(130,t==null?t:typeof t,""))}return e=Ms(a,r,e,i),e.elementType=t,e.type=n,e.lanes=o,e}function Bd(t,e,r,n){return t=Ms(7,t,n,e),t.lanes=r,t}function Fw(t,e,r,n){return t=Ms(22,t,n,e),t.elementType=GO,t.lanes=r,t.stateNode={isHidden:!1},t}function DC(t,e,r){return t=Ms(6,t,null,e),t.lanes=r,t}function IC(t,e,r){return e=Ms(4,t.children!==null?t.children:[],t.key,e),e.lanes=r,e.stateNode={containerInfo:t.containerInfo,pendingChildren:null,implementation:t.implementation},e}function XX(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=cC(0),this.expirationTimes=cC(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=cC(0),this.identifierPrefix=n,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function GE(t,e,r,n,i,o,a,s,c){return t=new XX(t,e,r,s,c),e===1?(e=1,o===!0&&(e|=8)):e=0,o=Ms(3,null,null,e),t.current=o,o.stateNode=t,o.memoizedState={element:n,isDehydrated:r,cache:null,transitions:null,pendingSuspenseBoundaries:null},_E(o),t}function qX(t,e,r){var n=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(NR)}catch(t){console.error(t)}}NR(),NO.exports=cs;var eq=NO.exports,kR,HI=eq;kR=HI.createRoot,HI.hydrateRoot;var qe;(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"})(qe||(qe={}));var gn;(function(t){t.Interaction="interaction",t.Thumbnail="thumbnail",t.Prefetch="prefetch",t.Compute="compute"})(gn||(gn={}));var Jn;(function(t){t.STACK="stack",t.ORTHOGRAPHIC="orthographic",t.PERSPECTIVE="perspective",t.VOLUME_3D="volume3d",t.VIDEO="video",t.WHOLE_SLIDE="wholeSlide"})(Jn||(Jn={}));var YS;(function(t){t[t.NEAREST=0]="NEAREST",t[t.LINEAR=1]="LINEAR",t[t.FAST_LINEAR=2]="FAST_LINEAR"})(YS||(YS={}));const Rd=YS,oy={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},tq={OFF:0,NORMALIZED:1,RAW:2};var VR={BlendMode:oy,FilterMode:tq};const{BlendMode:fp}=VR;var JS;(function(t){t[t.COMPOSITE=fp.COMPOSITE_BLEND]="COMPOSITE",t[t.MAXIMUM_INTENSITY_BLEND=fp.MAXIMUM_INTENSITY_BLEND]="MAXIMUM_INTENSITY_BLEND",t[t.MINIMUM_INTENSITY_BLEND=fp.MINIMUM_INTENSITY_BLEND]="MINIMUM_INTENSITY_BLEND",t[t.AVERAGE_INTENSITY_BLEND=fp.AVERAGE_INTENSITY_BLEND]="AVERAGE_INTENSITY_BLEND",t[t.LABELMAP_EDGE_PROJECTION_BLEND=fp.LABELMAP_EDGE_PROJECTION_BLEND]="LABELMAP_EDGE_PROJECTION_BLEND"})(JS||(JS={}));const Mf=JS;var ZS;(function(t){t.AXIAL="axial",t.CORONAL="coronal",t.SAGITTAL="sagittal",t.ACQUISITION="acquisition",t.AXIAL_REFORMAT="axial_reformat",t.CORONAL_REFORMAT="coronal_reformat",t.SAGITTAL_REFORMAT="sagittal_reformat",t.REFORMAT="reformat"})(ZS||(ZS={}));const wu=ZS;var QS;(function(t){t.CONTOUR="CONTOUR",t.SURFACE="SURFACE",t.MESH="MESH"})(QS||(QS={}));const Of=QS;var eT;(function(t){t.CLOSED_PLANAR="CLOSED_PLANAR",t.OPEN_PLANAR="OPEN_PLANAR"})(eT||(eT={}));const nq=eT;var tT;(function(t){t.PLY="PLY",t.STL="STL",t.OBJ="OBJ",t.VTP="VTP"})(tT||(tT={}));const Cc=tT;var Do;(function(t){t.LINEAR="LINEAR",t.SAMPLED_SIGMOID="SIGMOID",t.LINEAR_EXACT="LINEAR_EXACT"})(Do||(Do={}));var nT;(function(t){t.SUM="SUM",t.AVERAGE="AVERAGE",t.SUBTRACT="SUBTRACT"})(nT||(nT={}));const rq=nT;var vc;(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"})(vc||(vc={}));var rT;(function(t){t.NO_DATA="noData",t.LOADING="loading",t.PRE_RENDER="preRender",t.RESIZE="resize",t.RENDERED="rendered"})(rT||(rT={}));const Ea=rT;var Ia;(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"})(Ia||(Ia={}));var q1;(function(t){t.FRAME="f",t.SECOND="s"})(q1||(q1={}));const iq=Object.freeze(Object.defineProperty({__proto__:null,get SpeedUnit(){return q1}},Symbol.toStringTag,{value:"Module"}));var iT;(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"})(iT||(iT={}));const Za=iT;var Ah;(function(t){t.SUM="SUM",t.SUBTRACT="SUBTRACT",t.AVERAGE="AVERAGE"})(Ah||(Ah={}));var oT;(function(t){t.RLE="RLE",t.Volume="Volume"})(oT||(oT={}));const FR=oT;var aT;(function(t){t.Tiled="tiled",t.ContextPool="contextPool"})(aT||(aT={}));const Y1=aT,ka=Object.freeze(Object.defineProperty({__proto__:null,BlendModes:Mf,CalibrationTypes:vc,ContourType:nq,DynamicOperatorType:rq,Events:qe,get GenerateImageType(){return Ah},GeometryType:Of,ImageQualityStatus:Ia,InterpolationType:Rd,MeshType:Cc,MetadataModules:Za,OrientationAxis:wu,RenderingEngineModeEnum:Y1,RequestType:gn,VOILUTFunctionType:Do,VideoEnums:iq,ViewportStatus:Ea,ViewportType:Jn,VoxelManagerEnum:FR},Symbol.toStringTag,{value:"Module"})),sT={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]]}}},li={MINIMUM_SLAB_THICKNESS:.05,MAXIMUM_RAY_DISTANCE:1e6};Object.freeze(li);const is=.001;function UR(t){const e=Object.getOwnPropertyNames(t);for(const r of e){const n=t[r];n&&typeof n=="object"&&UR(n)}return Object.freeze(t)}const oq={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]}},gu=UR(oq),BR=[{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"}],aq={slicer3D:[160/255,164/255,217/255]},Uu=Object.freeze(Object.defineProperty({__proto__:null,BACKGROUND_COLORS:aq,CPU_COLORMAPS:sT,EPSILON:is,MPR_CAMERA_VALUES:gu,RENDERING_DEFAULTS:li,VIEWPORT_PRESETS:BR},Symbol.toStringTag,{value:"Module"})),dp={},J1={get:t=>dp[t],set:t=>{const e=t.id;dp[e]=t},delete:t=>delete dp[t],getAll:()=>{const e=Object.keys(dp).map(r=>dp[r]);return e.sort((r,n)=>r.id[0]==="_"&&n.id[0]!=="_"?1:r.id[0]!=="_"&&n.id[0]==="_"?-1:0),e}};function ir(t){return J1.get(t)}function Yo(){return J1.getAll()}const o5=t=>t&&typeof t=="object"&&Object.prototype.toString.call(t)!=="[object RegExp]"&&Object.prototype.toString.call(t)!=="[object Date]",sq=t=>Array.isArray(t)?[]:{},Z1=(t,e)=>e&&e.clone===!0&&o5(t)?$i(sq(t),t,e):t,KI=(t,e,r)=>{const n=t.slice();return e.forEach(function(i,o){typeof n[o]>"u"?n[o]=Z1(i,r):o5(i)?n[o]=$i(t[o],i,r):t.indexOf(i)===-1&&(n[o]=Z1(i,r))}),n},cq=(t,e,r)=>{const n={};return o5(t)&&Object.keys(t).forEach(function(i){n[i]=Z1(t[i],r)}),Object.keys(e).forEach(function(i){!o5(e[i])||!t[i]?n[i]=Z1(e[i],r):n[i]=$i(t[i],e[i],r)}),n},$i=(t={},e={},r=void 0)=>{const n=Array.isArray(e),o=(r||{arrayMerge:KI}).arrayMerge||KI;return n?Array.isArray(t)?o(t,e,r):Z1(e,r):cq(t,e,r)};/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */const GR=Symbol("Comlink.proxy"),lq=Symbol("Comlink.endpoint"),WR=Symbol("Comlink.releaseProxy"),MC=Symbol("Comlink.finalizer"),ay=Symbol("Comlink.thrown"),$R=t=>typeof t=="object"&&t!==null||typeof t=="function",uq={canHandle:t=>$R(t)&&t[GR],serialize(t){const{port1:e,port2:r}=new MessageChannel;return jE(t,e),[r,[r]]},deserialize(t){return t.start(),cT(t)}},fq={canHandle:t=>$R(t)&&ay 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}},zR=new Map([["proxy",uq],["throw",fq]]);function dq(t,e){for(const r of t)if(e===r||r==="*"||r instanceof RegExp&&r.test(e))return!0;return!1}function jE(t,e=globalThis,r=["*"]){e.addEventListener("message",function n(i){if(!i||!i.data)return;if(!dq(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(Cd);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]]=Cd(i.data.value),l=!0;break;case"APPLY":l=u.apply(f,c);break;case"CONSTRUCT":{const d=new u(...c);l=XR(d)}break;case"ENDPOINT":{const{port1:d,port2:h}=new MessageChannel;jE(t,h),l=vq(d,[d])}break;case"RELEASE":l=void 0;break;default:return}}catch(f){l={value:f,[ay]:0}}Promise.resolve(l).catch(f=>({value:f,[ay]:0})).then(f=>{const[u,d]=c5(f);e.postMessage(Object.assign(Object.assign({},u),{id:o}),d),a==="RELEASE"&&(e.removeEventListener("message",n),jR(e),MC in t&&typeof t[MC]=="function"&&t[MC]())}).catch(f=>{const[u,d]=c5({value:new TypeError("Unserializable return value"),[ay]:0});e.postMessage(Object.assign(Object.assign({},u),{id:o}),d)})}),e.start&&e.start()}function hq(t){return t.constructor.name==="MessagePort"}function jR(t){hq(t)&&t.close()}function cT(t,e){return lT(t,[],e)}function jv(t){if(t)throw new Error("Proxy has been released and is not useable")}function HR(t){return H0(t,{type:"RELEASE"}).then(()=>{jR(t)})}const a5=new WeakMap,s5="FinalizationRegistry"in globalThis&&new FinalizationRegistry(t=>{const e=(a5.get(t)||0)-1;a5.set(t,e),e===0&&HR(t)});function gq(t,e){const r=(a5.get(e)||0)+1;a5.set(e,r),s5&&s5.register(t,e,t)}function pq(t){s5&&s5.unregister(t)}function lT(t,e=[],r=function(){}){let n=!1;const i=new Proxy(r,{get(o,a){if(jv(n),a===WR)return()=>{pq(i),HR(t),n=!0};if(a==="then"){if(e.length===0)return{then:()=>i};const s=H0(t,{type:"GET",path:e.map(c=>c.toString())}).then(Cd);return s.then.bind(s)}return lT(t,[...e,a])},set(o,a,s){jv(n);const[c,l]=c5(s);return H0(t,{type:"SET",path:[...e,a].map(f=>f.toString()),value:c},l).then(Cd)},apply(o,a,s){jv(n);const c=e[e.length-1];if(c===lq)return H0(t,{type:"ENDPOINT"}).then(Cd);if(c==="bind")return lT(t,e.slice(0,-1));const[l,f]=XI(s);return H0(t,{type:"APPLY",path:e.map(u=>u.toString()),argumentList:l},f).then(Cd)},construct(o,a){jv(n);const[s,c]=XI(a);return H0(t,{type:"CONSTRUCT",path:e.map(l=>l.toString()),argumentList:s},c).then(Cd)}});return gq(i,t),i}function mq(t){return Array.prototype.concat.apply([],t)}function XI(t){const e=t.map(c5);return[e.map(r=>r[0]),mq(e.map(r=>r[1]))]}const KR=new WeakMap;function vq(t,e){return KR.set(t,e),t}function XR(t){return Object.assign(t,{[GR]:!0})}function c5(t){for(const[e,r]of zR)if(r.canHandle(t)){const[n,i]=r.serialize(t);return[{type:"HANDLER",name:e,value:n},i]}return[{type:"RAW",value:t},KR.get(t)||[]]}function Cd(t){switch(t.type){case"HANDLER":return zR.get(t.name).deserialize(t.value);case"RAW":return t.value}}function H0(t,e,r){return new Promise(n=>{const i=yq();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 yq(){return new Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}function Pn(){return typeof crypto.randomUUID=="function"?crypto.randomUUID():("10000000-1000-4000-8000"+-1e11).replace(/[018]/g,t=>(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16))}class HE{constructor(e){this.numRequests={[gn.Interaction]:0,[gn.Thumbnail]:0,[gn.Prefetch]:0,[gn.Compute]:0},this.id=e||Pn(),this.requestPool={[gn.Interaction]:{0:[]},[gn.Thumbnail]:{0:[]},[gn.Prefetch]:{0:[]},[gn.Compute]:{0:[]}},this.grabDelay=5,this.awake=!1,this.numRequests={[gn.Interaction]:0,[gn.Thumbnail]:0,[gn.Prefetch]:0,[gn.Compute]:0},this.maxNumRequests={[gn.Interaction]:6,[gn.Thumbnail]:6,[gn.Prefetch]:5,[gn.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(gn.Interaction),r=this.sendRequests(gn.Thumbnail),n=this.sendRequests(gn.Prefetch),i=this.sendRequests(gn.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 qR{constructor(){this.workerRegistry={},this.workerPoolManager=new HE("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=>XR(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[WR](),n.nativeWorkers[r].terminate(),n.instances[r]=null,n.lastActiveTime[r]=null)}}const OC=4,wq=5,xq=1,qI=[1,1];function YI({ext:t,filterType:e,texData:r,internalFormat:n,glDataType:i}){try{const o=document.createElement("canvas");o.width=OC,o.height=OC;const a=o.getContext("webgl2");if(!a)return!1;const s=`#version 300 es - void main() { - gl_PointSize = ${OC.toFixed(1)}; - gl_Position = vec4(0, 0, 0, 1); - } - `,c=`#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 l;if(t&&(l=a.getExtension(t),!l))return!1;const f=a.createShader(a.VERTEX_SHADER);if(a.shaderSource(f,s),a.compileShader(f),!a.getShaderParameter(f,a.COMPILE_STATUS))return!1;const u=a.createShader(a.FRAGMENT_SHADER);if(a.shaderSource(u,c),a.compileShader(u),!a.getShaderParameter(u,a.COMPILE_STATUS))return!1;const d=a.createProgram();if(a.attachShader(d,f),a.attachShader(d,u),a.linkProgram(d),!a.getProgramParameter(d,a.LINK_STATUS))return!1;const h=a.createTexture();a.bindTexture(a.TEXTURE_2D,h),a.texImage2D(a.TEXTURE_2D,0,n(a,l),wq,xq,0,a.RED,i(a,l),r);const g=e==="LINEAR"?a.LINEAR:a.NEAREST;a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,g),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,g),a.useProgram(d),a.drawArrays(a.POINTS,0,1);const p=new Uint8Array(4);a.readPixels(qI[0],qI[1],1,1,a.RGBA,a.UNSIGNED_BYTE,p);const[v,y,m]=p,w=a.getExtension("WEBGL_lose_context");return w&&w.loseContext(),v===y&&y===m&&v!==0}catch{return!1}}function Cq(){const t=new Int16Array([32767,2e3,3e3,4e3,5e3,16784,7e3,8e3,9e3,32767]);return{norm16:YI({ext:"EXT_texture_norm16",filterType:"NEAREST",texData:t,internalFormat:(e,r)=>r.R16_SNORM_EXT,glDataType:e=>e.SHORT}),norm16Linear:YI({ext:"EXT_texture_norm16",filterType:"LINEAR",texData:t,internalFormat:(e,r)=>r.R16_SNORM_EXT,glDataType:e=>e.SHORT})}}let hf=!1;const uT={gpuTier:{tier:2},isMobile:!1,rendering:{useCPURendering:!1,preferSizeOverAccuracy:!1,strictZSpacingForVolumeViewport:!0,renderingEngineMode:Y1.ContextPool,webGlContextCount:7,volumeRendering:{sampleDistanceMultiplier:1}},debug:{statsOverlay:!1},peerImport:t=>null};let qa={...uT,rendering:{...uT.rendering}},o1=null,YR=!1;function Sq(){const t=document.createElement("canvas");return t.getContext("webgl2")||t.getContext("webgl")||t.getContext("experimental-webgl")}function JR(){const t=Sq();return t instanceof WebGLRenderingContext||t instanceof WebGL2RenderingContext}function Tq(){const t=Cq();return t.norm16&&t.norm16Linear}function ZR(){return/iPad|iPhone|iPod/.test(navigator.platform)?!0:navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&navigator.platform.includes("MacIntel")}function QR(t=qa){var r;return hf||(YR=Tq(),qa=$i(uT,t),qa.isMobile&&(qa.rendering.webGlContextCount=1),ZR()&&((r=t.rendering)!=null&&r.preferSizeOverAccuracy?qa.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")),JR()?console.log("CornerstoneRender: using GPU rendering"):(console.log("CornerstoneRender: GPU not detected, using CPU rendering"),qa.rendering.useCPURendering=!0),hf=!0,o1||(o1=new qR),hf)}function _q(){return YR}function Eq(t,e=!0){qa.rendering.useCPURendering=t,hf=!0,e&&zw()}function bq(t){qa.rendering.preferSizeOverAccuracy=t,hf=!0,zw()}function $w(){return!ZR()}function Dq(){qa.rendering.useCPURendering=!JR(),zw()}function Lh(){return qa.rendering.useCPURendering}function eA(){return hf}function Iq(){hf=!1}function Iu(){return qa}function Mq(t){qa=t,zw()}function zw(){Yo().forEach(t=>{t.getViewports().forEach(e=>{e.updateRenderingPipeline()})})}function Fl(){return o1||(o1=new qR),o1}async function tA(t){return qa.peerImport(t)}class Oq{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=0&&JI.call(e.callee)==="[object Function]"),n},PC,ZI;function Rq(){if(ZI)return PC;ZI=1;var t;if(!Object.keys){var e=Object.prototype.hasOwnProperty,r=Object.prototype.toString,n=nA,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),y=g&&r.call(h)==="[object String]",m=[];if(!g&&!p&&!v)throw new TypeError("Object.keys called on a non-object");var w=a&&p;if(y&&h.length>0&&!e.call(h,0))for(var x=0;x0)for(var C=0;C"u"||!go?Hn:go(Uint8Array),Wd={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?Hn:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?Hn:ArrayBuffer,"%ArrayIteratorPrototype%":M0&&go?go([][Symbol.iterator]()):Hn,"%AsyncFromSyncIteratorPrototype%":Hn,"%AsyncFunction%":K0,"%AsyncGenerator%":K0,"%AsyncGeneratorFunction%":K0,"%AsyncIteratorPrototype%":K0,"%Atomics%":typeof Atomics>"u"?Hn:Atomics,"%BigInt%":typeof BigInt>"u"?Hn:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?Hn:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?Hn:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?Hn:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":iY,"%eval%":eval,"%EvalError%":oY,"%Float32Array%":typeof Float32Array>"u"?Hn:Float32Array,"%Float64Array%":typeof Float64Array>"u"?Hn:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?Hn:FinalizationRegistry,"%Function%":aA,"%GeneratorFunction%":K0,"%Int8Array%":typeof Int8Array>"u"?Hn:Int8Array,"%Int16Array%":typeof Int16Array>"u"?Hn:Int16Array,"%Int32Array%":typeof Int32Array>"u"?Hn:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":M0&&go?go(go([][Symbol.iterator]())):Hn,"%JSON%":typeof JSON=="object"?JSON:Hn,"%Map%":typeof Map>"u"?Hn:Map,"%MapIteratorPrototype%":typeof Map>"u"||!M0||!go?Hn:go(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?Hn:Promise,"%Proxy%":typeof Proxy>"u"?Hn:Proxy,"%RangeError%":aY,"%ReferenceError%":sY,"%Reflect%":typeof Reflect>"u"?Hn:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?Hn:Set,"%SetIteratorPrototype%":typeof Set>"u"||!M0||!go?Hn:go(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?Hn:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":M0&&go?go(""[Symbol.iterator]()):Hn,"%Symbol%":M0?Symbol:Hn,"%SyntaxError%":rg,"%ThrowTypeError%":lY,"%TypedArray%":fY,"%TypeError%":Nh,"%Uint8Array%":typeof Uint8Array>"u"?Hn:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?Hn:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?Hn:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?Hn:Uint32Array,"%URIError%":cY,"%WeakMap%":typeof WeakMap>"u"?Hn:WeakMap,"%WeakRef%":typeof WeakRef>"u"?Hn:WeakRef,"%WeakSet%":typeof WeakSet>"u"?Hn:WeakSet};if(go)try{null.error}catch(t){var dY=go(go(t));Wd["%Error.prototype%"]=dY}var hY=function t(e){var r;if(e==="%AsyncFunction%")r=AC("async function () {}");else if(e==="%GeneratorFunction%")r=AC("function* () {}");else if(e==="%AsyncGeneratorFunction%")r=AC("async function* () {}");else if(e==="%AsyncGenerator%"){var n=t("%AsyncGeneratorFunction%");n&&(r=n.prototype)}else if(e==="%AsyncIteratorPrototype%"){var i=t("%AsyncGenerator%");i&&go&&(r=go(i.prototype))}return Wd[e]=r,r},r6={__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"]},Gm=oA,l5=rY,gY=Gm.call(Function.call,Array.prototype.concat),pY=Gm.call(Function.apply,Array.prototype.splice),i6=Gm.call(Function.call,String.prototype.replace),u5=Gm.call(Function.call,String.prototype.slice),mY=Gm.call(Function.call,RegExp.prototype.exec),vY=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,yY=/\\(\\)?/g,wY=function(e){var r=u5(e,0,1),n=u5(e,-1);if(r==="%"&&n!=="%")throw new rg("invalid intrinsic syntax, expected closing `%`");if(n==="%"&&r!=="%")throw new rg("invalid intrinsic syntax, expected opening `%`");var i=[];return i6(e,vY,function(o,a,s,c){i[i.length]=s?i6(c,yY,"$1"):a||o}),i},xY=function(e,r){var n=e,i;if(l5(r6,n)&&(i=r6[n],n="%"+i[0]+"%"),l5(Wd,n)){var o=Wd[n];if(o===K0&&(o=hY(n)),typeof o>"u"&&!r)throw new Nh("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:i,name:n,value:o}}throw new rg("intrinsic "+e+" does not exist!")},sA=function(e,r){if(typeof e!="string"||e.length===0)throw new Nh("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof r!="boolean")throw new Nh('"allowMissing" argument must be a boolean');if(mY(/^%?[^%]*%?$/,e)===null)throw new rg("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=wY(e),i=n.length>0?n[0]:"",o=xY("%"+i+"%",r),a=o.name,s=o.value,c=!1,l=o.alias;l&&(i=l[0],pY(n,gY([0,1],l)));for(var f=1,u=!0;f=n.length){var p=Gd(s,d);u=!!p,u&&"get"in p&&!("originalValue"in p.get)?s=p.get:s=s[d]}else u=l5(s,d),s=s[d];u&&!c&&(Wd[a]=s)}}return s},CY=sA,cy=CY("%Object.defineProperty%",!0)||!1;if(cy)try{cy({},"a",{value:1})}catch{cy=!1}var cA=cy,SY=sA,ly=SY("%Object.getOwnPropertyDescriptor%",!0);if(ly)try{ly([],"length")}catch{ly=null}var TY=ly,o6=cA,_Y=rA,O0=iA,a6=TY,EY=function(e,r,n){if(!e||typeof e!="object"&&typeof e!="function")throw new O0("`obj` must be an object or a function`");if(typeof r!="string"&&typeof r!="symbol")throw new O0("`property` must be a string or a symbol`");if(arguments.length>3&&typeof arguments[3]!="boolean"&&arguments[3]!==null)throw new O0("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!="boolean"&&arguments[4]!==null)throw new O0("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!="boolean"&&arguments[5]!==null)throw new O0("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!="boolean")throw new O0("`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=!!a6&&a6(e,r);if(o6)o6(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 _Y("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")},fT=cA,lA=function(){return!!fT};lA.hasArrayLengthDefineBug=function(){if(!fT)return null;try{return fT([],"length",{value:1}).length!==1}catch{return!0}};var bY=lA,DY=Nq,IY=typeof Symbol=="function"&&typeof Symbol("foo")=="symbol",MY=Object.prototype.toString,OY=Array.prototype.concat,s6=EY,PY=function(t){return typeof t=="function"&&MY.call(t)==="[object Function]"},uA=bY(),RY=function(t,e,r,n){if(e in t){if(n===!0){if(t[e]===r)return}else if(!PY(n)||!n())return}uA?s6(t,e,r,!0):s6(t,e,r)},fA=function(t,e){var r=arguments.length>2?arguments[2]:{},n=DY(e);IY&&(n=OY.call(n,Object.getOwnPropertySymbols(e)));for(var i=0;inull};function Sc(t){if(t==null||t.isA)return t;if(!t.vtkClass)return yc.console&&yc.console.error&&yc.console.error("Invalid VTK object"),null;const e=vA[t.vtkClass];if(!e)return yc.console&&yc.console.error&&yc.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]=Sc(r[i]))});const n=e(r);return n&&n.modified&&n.modified(),n}function $Y(t,e){vA[t]=e}Sc.register=$Y;class NC extends Array{push(){for(let e=0;e{wA[t]=Sd});yc.console=console.hasOwnProperty("log")?console:wA;const Ff={debug:Sd,error:yc.console.error||Sd,info:yc.console.info||Sd,log:yc.console.log||Sd,warn:yc.console.warn||Sd};function xA(t,e){Ff[t]&&(Ff[t]=e||Sd)}function CA(){Ff.log(...arguments)}function SA(){Ff.info(...arguments)}function f5(){Ff.debug(...arguments)}function An(){Ff.error(...arguments)}function jw(){Ff.warn(...arguments)}const c6={};function TA(t){c6[t]||(Ff.error(t),c6[t]=!0)}const Jo=Object.create(null);Jo.Float32Array=Float32Array;Jo.Float64Array=Float64Array;Jo.Uint8Array=Uint8Array;Jo.Int8Array=Int8Array;Jo.Uint16Array=Uint16Array;Jo.Int16Array=Int16Array;Jo.Uint32Array=Uint32Array;Jo.Int32Array=Int32Array;Jo.Uint8ClampedArray=Uint8ClampedArray;try{Jo.BigInt64Array=BigInt64Array,Jo.BigUint64Array=BigUint64Array}catch{}function Ig(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 bA(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 DA(t){Object.keys(t).forEach(e=>{Array.isArray(t[e])&&(t[e]=[].concat(t[e]))})}function HY(t){return Object.values(Jo).some(e=>t instanceof e)}function KY(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 IA(t){return t&&t.isA?t.getState():t}function XE(t){setTimeout(t,0)}function MA(t,e){const r=performance.now();t.finally(()=>{const n=performance.now()-r;e(n)})}function xr(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};DA(e);const r=[];if(Number.isInteger(e.mtime)||(e.mtime=++dT),!("classHierarchy"in e))e.classHierarchy=new NC("vtkObject");else if(!(e.classHierarchy instanceof NC)){const o=new NC;for(let a=0;a!!e.deleted,t.modified=o=>{if(e.deleted){An("instance deleted - cannot call any method");return}o&&oa&&a(t)))},t.onModified=o=>{if(e.deleted)return An("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${Kw(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&&jw(`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(IA):HY(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&&f5(`add ${f} in shallowCopy`):c.splice(u,1),e[f]=s[f]}),c.length&&a&&f5(`Untouched keys: ${c.join(", ")}`),t.modified()},t.toJSON=function(){return t.getState()},t}const qY={object(t,e,r){return function(){return{...e[r.name]}}}};function Qo(t,e,r){r.forEach(n=>{if(typeof n=="object"){const i=qY[n.type];i?t[`get${Ti(n.name)}`]=i(t,e,n):t[`get${Ti(n.name)}`]=()=>e[n.name]}else t[`get${Ti(n)}`]=()=>e[n]})}const OA={enum(t,e,r){const n=`_on${Ti(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 An(`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 An(`Set Enum outside numeric range ${r}, ${i}`),new RangeError("Set Enum outside numeric range")}return!1}throw An(`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&&jw('Setter of type "object" with a single "param" field is not supported');const n=`_on${Ti(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],!KE(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 l6(t){if(typeof t=="object"){const e=OA[t.type];if(e)return(r,n)=>e(r,n,t);throw An(`No setter for field ${t}`),new TypeError("No setter for field")}return function(r,n){const i=`_on${Ti(t)}Changed`;return function(a){var s;if(n.deleted)return An("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 Wm(t,e,r){r.forEach(n=>{typeof n=="object"?t[`set${Ti(n.name)}`]=l6(n)(t,e):t[`set${Ti(n)}`]=l6(n)(t,e)})}function vi(t,e,r){Qo(t,e,r),Wm(t,e,r)}function Mg(t,e,r){r.forEach(n=>{t[`get${Ti(n)}`]=()=>e[n]?Array.from(e[n]):e[n],t[`get${Ti(n)}ByReference`]=()=>e[n]})}function qE(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${Ti(o)}Changed`;t[`set${Ti(o)}`]=function(){var h;if(e.deleted)return An("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 YE(t,e,r,n){let i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:void 0;Mg(t,e,r),qE(t,e,r,n,i)}function $m(t,e,r){for(let n=0;n1&&arguments[1]!==void 0?arguments[1]:0;if(e.deleted){An("instance deleted - cannot call any method");return}if(g>=e.numberOfInputs){An(`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){An("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()",An(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){An("instance deleted - cannot call any method");return}a(h,c())}function f(h){if(e.deleted){An("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?(An("instance deleted - cannot call any method"),null):(t.shouldUpdate()&&t.update(),e.output[h])}t.shouldUpdate=()=>{var v,y;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)===ZE)break}}}t[`invoke${Ti(r)}`]=c,t[`on${Ti(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 An("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 jn(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&&Sc.register(e,r),r}function zm(){for(var t=arguments.length,e=new Array(t),r=0;r!!a).map(a=>a(...i))}}function e4(t){return t&&t.isA&&t.isA("vtkObject")}function d5(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:[];if(e4(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=>{d5(c,e,r,n)}):d5(s,e,r,n)})}return r}function PA(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 RA(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 YY=1;const Hv="__root__";function AA(t,e){t4(t,e);const r=t.delete;e.proxyId=`${YY++}`,e.ui=JSON.parse(JSON.stringify(e.ui||[])),Qo(t,e,["proxyId","proxyGroup","proxyName"]),vi(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,Hv),t.modified()};function a(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Hv;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${Ti(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(x){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===x?T=E:S.push(E)}if(!T)return null;const _=T.instance[`get${Ti(T.propertyName)}`]();if(!KY(_,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(x,C){const S=[];for(h=d.length;h--;){const T=d[h];T.instance===x&&(T.propertyName===C||C===void 0)&&(T.subscription.unsubscribe(),S.push(h))}for(;S.length;)d.splice(S.pop(),1)}function y(x,C){let S=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;const T=x.onModified(p),_=d[0];return d.push({instance:x,propertyName:C,subscription:T}),S&&(e.propertyLinkMap[l].persistent&&e.propertyLinkMap[l].value!==void 0?x.set({[C]:e.propertyLinkMap[l].value}):_&&p(_.instance,!0)),{unsubscribe:()=>v(x,C)}}function m(){for(;d.length;)d.pop().subscription.unsubscribe()}const w={bind:y,unbind:v,unsubscribe:m,persistent:f};return e.propertyLinkMap[l]=w,w};function s(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Hv;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 NA(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${Ti(s)}`]=l=>{if(l!==e[s]){e[s]=l;const f=c[l];i(f),t.modified()}}}o.length&&Qo(t,e,o)}const u6=10,f6=40,d6=800;function kA(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*u6,i=r*u6,"deltaY"in t&&(i=t.deltaY),"deltaX"in t&&(n=t.deltaX),(n||i)&&t.deltaMode&&(t.deltaMode===1?(n*=f6,i*=f6):(n*=d6,i*=d6)),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 Q={algo:JE,capitalize:Kw,chain:zm,debounce:PA,enumToString:XY,event:QE,EVENT_ABORT:ZE,formatBytesToProperUnit:EA,formatNumbersWithThousandSeparator:bA,get:Qo,getArray:Mg,getCurrentGlobalMTime:zY,getStateArrayMapFunc:IA,isVtkObject:e4,keystore:t4,measurePromiseExecution:MA,moveToProtected:$m,newInstance:jn,newTypedArray:Ig,newTypedArrayFrom:Hw,normalizeWheel:kA,obj:xr,proxy:AA,proxyPropertyMapping:LA,proxyPropertyState:NA,safeArrays:DA,set:Wm,setArray:qE,setGet:vi,setGetArray:YE,setImmediate:XE,setLoggerFunction:xA,throttle:RA,traverseInstanceTree:d5,TYPED_ARRAYS:Jo,uncapitalize:_A,VOID:yA,vtkDebugMacro:f5,vtkErrorMacro:An,vtkInfoMacro:SA,vtkLogMacro:CA,vtkOnceErrorMacro:TA,vtkWarningMacro:jw,objectSetterMap:OA},Ao=Object.freeze({__proto__:null,VOID:yA,setLoggerFunction:xA,vtkLogMacro:CA,vtkInfoMacro:SA,vtkDebugMacro:f5,vtkErrorMacro:An,vtkWarningMacro:jw,vtkOnceErrorMacro:TA,TYPED_ARRAYS:Jo,newTypedArray:Ig,newTypedArrayFrom:Hw,capitalize:Kw,_capitalize:Ti,uncapitalize:_A,formatBytesToProperUnit:EA,formatNumbersWithThousandSeparator:bA,setImmediateVTK:XE,measurePromiseExecution:MA,obj:xr,get:Qo,set:Wm,setGet:vi,getArray:Mg,setArray:qE,setGetArray:YE,moveToProtected:$m,algo:JE,EVENT_ABORT:ZE,event:QE,newInstance:jn,chain:zm,isVtkObject:e4,traverseInstanceTree:d5,debounce:PA,throttle:RA,keystore:t4,proxy:AA,proxyPropertyMapping:LA,proxyPropertyState:NA,normalizeWheel:kA,default:Q}),n4={exports:{}};n4.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})(to,t)})(n4);var JY=n4.exports,r4={exports:{}};r4.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})(to,t)})(r4);var ZY=r4.exports,i4={exports:{}};i4.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})(to,t)})(i4);var QY=i4.exports,o4={exports:{}};o4.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})(to,t)})(o4);var eJ=o4.exports,a4={exports:{}};a4.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,y=[],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=y[p&127]^=h+v,g=d==0?g+1:0);for(g>=128&&(y[(u&&u.length||0)&127]=-1),g=127,p=4*128;p>0;--p)h=y[g+34&127],d=y[g=g+1&127],h^=h<<13,d^=d<<17,h^=h>>>15,d^=d>>>12,y[g]=h^d;f.w=v,f.X=y,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})(to,t)})(a4);var tJ=a4.exports,s4={exports:{}};s4.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})(to,t)})(s4);var nJ=s4.exports,VA={exports:{}};const rJ={},iJ=Object.freeze(Object.defineProperty({__proto__:null,default:rJ},Symbol.toStringTag,{value:"Module"})),Dl=IH(iJ);(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(x,C,S){var T=[];C=C==!0?{entropy:!0}:C||{};var _=y(v(C.entropy?[x,w(r)]:x??m(),3),T),E=new g(T),b=function(){for(var D=E.g(o),I=c,P=0;D=f;)D/=2,I/=2,P>>>=1;return(D+P)/I};return b.int32=function(){return E.g(4)|0},b.quick=function(){return E.g(4)/4294967296},b.double=b,y(w(E.S),r),(C.pass||S||function(D,I,P,M){return M&&(M.S&&p(M,E),D.state=function(){return p(E,{})}),P?(n[s]=D,I):D})(b,_,"global"in C?C.global:this==n,C.state)}function g(x){var C,S=x.length,T=this,_=0,E=T.i=T.j=0,b=T.S=[];for(S||(x=[S++]);_FA(`vtkMath::${t} - NOT IMPLEMENTED`)}function a1(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 mJ(t,e){return e>1023?t*2**1023*2**(e-1023):e<-1074?t*2**-1074*2**(e+1074):t*2**e}function ci(t){return t/180*Math.PI}function h5(t){return t*180/Math.PI}const{round:Np,floor:f4,ceil:vJ,min:yJ,max:wJ}=Math;function xJ(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 PJ=jm("gaussian");function g5(t,e,r){return r[0]=t[0]+e[0],r[1]=t[1]+e[1],r[2]=t[2]+e[2],r}function xu(t,e,r){return r[0]=t[0]-e[0],r[1]=t[1]-e[1],r[2]=t[2]-e[2],r}function BA(t,e){return t[0]*=e,t[1]*=e,t[2]*=e,t}function GA(t,e){return t[0]*=e,t[1]*=e,t}function hT(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 RJ(t,e,r,n){return n[0]=t[0]+e[0]*r,n[1]=t[1]+e[1]*r,n}function En(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function AJ(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 Il(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 gf(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 NJ(t,e,r){const n=En(e,e);if(n===0)return r[0]=0,r[1]=0,r[2]=0,!1;const i=En(t,e)/n;for(let o=0;o<3;o++)r[o]=e[o];return BA(r,i),!0}function gT(t,e){return t[0]*e[0]+t[1]*e[1]}function kJ(t,e,r){const n=gT(e,e);if(n===0)return r[0]=0,r[1]=0,!1;const i=gT(t,e)/n;for(let o=0;o<2;o++)r[o]=e[o];return GA(r,i),!0}function fl(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 VJ(t,e){const r=[0,0,0];return Il(t,e,r),Math.atan2(gf(r),En(t,e))}function FJ(t,e,r){const n=Math.abs(t-r);return 1/Math.sqrt(2*Math.PI*e)*Math.exp(-(n**2)/(2*e))}function UJ(t,e,r){const n=Math.abs(t-r);return Math.exp(-(n**2)/(2*e))}function BJ(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 WA(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function $A(t){const e=WA(t);return e!==0&&(t[0]/=e,t[1]/=e),e}function ui(){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&&(a1(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,a1(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 WJ(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 $J(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=+ui(s,f,c,u),h=-ui(a,l,c,u),g=+ui(a,l,s,f),p=-ui(i,f,o,u),v=+ui(n,l,o,u),y=-ui(n,l,i,f),m=+ui(i,s,o,c),w=-ui(n,a,o,c),x=+ui(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]+w*e[2],_=g*e[0]+y*e[1]+x*e[2];r[0]=S/C,r[1]=T/C,r[2]=_/C}function fy(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 pT(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 zJ(t,e,r,n,i,o,a){n!==i&&FA("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]:l4;if(t.length!==e.length)return!1;function n(i,o){return Math.abs(i-e[o])<=r}return t.every(n)}const Hm=zA;function jA(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 HA(t,e){for(let r=0;r1&&arguments[1]!==void 0?arguments[1]:l4;return Hm(t,c4,e)}function KJ(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:l4;return Hm(t,gJ,e)}function KA(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 dy(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 mT(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]=dy(t[0],r),e[1]=dy(t[1],r),e[2]=dy(t[2],r),e}function Km(t,e,r,n){let i,o,a,s,c,l,f,u,d,h,g,p,v,y,m,w;const x=Lr(e),C=Lr(e),S=(_,E,b)=>{y=_[E],v=_[b],_[E]=y-p*(v+y*h),_[b]=v+p*(y-v*h)};for(HA(e,n),c=0;c3&&Math.abs(r[c])+y===Math.abs(r[c])&&Math.abs(r[s])+y===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)+y===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=h6)return r0("vtkMath::Jacobi: Error extracting eigenfunctions"),0;for(o=0;o=w||Math.abs(r[i]-w)>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&&(Lp(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,Lp(e,3,1,2)),n[2]=2;let f=0;if(Xw(e)<0){f=1;for(let d=0;d<9;d++)e[d]=-e[d]}const u=Lr(4);if(XA(e,u),KA(u,e),f)for(let d=0;d<9;d++)e[d]=-e[d];n[1]!==1&&Lp(e,3,n[1],1),n[0]!==0&&Lp(e,3,n[0],0)}function YA(t,e,r){let n,i,o,a,s,c;const l=[...t];if(Km(l,3,e,r),e[0]===e[1]&&e[0]===e[2]){jA(r);return}for(kh(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,a1(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=Il([r[a*3],r[a*3+1],r[a*3+2]],[r[i*3],r[i*3+1],r[i*3+2]],[]);i0(f);const u=Il(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];kh(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,a1(r,3,a,0)}if(Math.abs(r[4])a&&(a=f);if(a===0)return r0("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||Lr(r),a=i||Lr(r);if(d4(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(tu4&&(c=0,s[d]=0);if(c&&i===1)return r0("Detected homogeneous system (Y=0), calling SolveHomogeneousLeastSquares()"),vT(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 Vp(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 Td(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 QA(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 eL(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 tL(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 nL(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 Ad(t,e){const r=[0,0,0];nL(t,r),eL(r,e)}function p5(t,e){const r=[0,0,0];QA(t,r),tL(r,e)}function Og(t){return t[0]=1,t[1]=-1,t[2]=1,t[3]=-1,t[4]=1,t[5]=-1,t}function hy(t){return!(t[1]-t[0]<0)}function eZ(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 Tc(t,e,r){return tr?r:t}function yT(t,e,r){let n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:[0,0,0];return n[0]=Tc(t[0],e[0],r[0]),n[1]=Tc(t[1],e[1],r[1]),n[2]=Tc(t[2],e[2],r[2]),n}function tZ(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 nZ=jm("GetScalarTypeFittingRange"),rZ=jm("GetAdjustedScalarRange");function iZ(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 oZ(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 aZ(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 sZ(t,e,r,n){const i=Lr(3),o=Lr(3),a=Lr(3),s=Lr(3),c=Lr(3),l=Lr(3);for(let x=0;x<3;++x)i[x]=t[x]-e[x],o[x]=e[x]-r[x],a[x]=r[x]-t[x],s[x]=-i[x],c[x]=-o[x],l[x]=-a[x];const f=gf(s),u=gf(c),d=gf(a),h=Lr(3);Il(i,o,h);const g=gf(h),p=f*u*d/(2*g),v=2*g*g,y=u*u*En(i,l)/v,m=d*d*En(s,o)/v,w=f*f*En(a,c)/v;for(let x=0;x<3;++x)n[x]=y*t[x]+m*e[x]+w*r[x];return p}const cZ=1/0,lZ=-1/0,rL=t=>!Number.isFinite(t),{isFinite:uZ,isNaN:wT}=Number,m5=wT;function Uf(){return[].concat([Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE])}function fZ(t){let e=-1,r=-1;for(let n=0;ne&&(r=n,e=i)}return r}function iL(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(oL).join("")}`}function Kv(t){return Math.round(t*255)}function hZ(t){return t.length===3?`rgb(${t.map(Kv).join(", ")})`:`rgba(${Kv(t[0]||0)}, ${Kv(t[1]||0)}, ${Kv(t[2]||0)}, ${t[3]||0})`}var Dt={Pi:pJ,ldexp:mJ,radiansFromDegrees:ci,degreesFromRadians:h5,round:Np,floor:f4,ceil:vJ,ceilLog2:TJ,min:yJ,max:wJ,arrayMin:xJ,arrayMax:CJ,arrayRange:SJ,isPowerOfTwo:kp,nearestPowerOfTwo:bs,factorial:_J,binomial:EJ,beginCombination:bJ,nextCombination:DJ,randomSeed:IJ,getSeed:MJ,random:OJ,gaussian:PJ,add:g5,subtract:xu,multiplyScalar:BA,multiplyScalar2D:GA,multiplyAccumulate:hT,multiplyAccumulate2D:RJ,dot:En,outer:AJ,cross:Il,norm:gf,normalize:i0,perpendiculars:LJ,projectVector:NJ,projectVector2D:kJ,distance2BetweenPoints:fl,angleBetweenVectors:VJ,gaussianAmplitude:FJ,gaussianWeight:UJ,dot2D:gT,outer2D:BJ,norm2D:WA,normalize2D:$A,determinant2x2:ui,LUFactor3x3:GJ,LUSolve3x3:WJ,linearSolve3x3:$J,multiply3x3_vect3:fy,multiply3x3_mat3:pT,multiplyMatrix:zJ,transpose3x3:kh,invert3x3:jJ,identity3x3:jA,identity:HA,isIdentity:HJ,isIdentity3x3:KJ,determinant3x3:Xw,quaternionToMatrix3x3:KA,areEquals:zA,areMatricesEqual:Hm,roundNumber:dy,roundVector:mT,matrix3x3ToQuaternion:XA,multiplyQuaternion:XJ,orthogonalize3x3:qA,diagonalize3x3:YA,singularValueDecomposition3x3:qJ,solveLinearSystem:JA,invertMatrix:ZA,luFactorLinearSystem:d4,luSolveLinearSystem:h4,estimateMatrixCondition:YJ,jacobi:JJ,jacobiN:Km,solveHomogeneousLeastSquares:vT,solveLeastSquares:ZJ,hex2float:QJ,rgb2hsv:Vp,hsv2rgb:Td,lab2xyz:QA,xyz2lab:eL,xyz2rgb:tL,rgb2xyz:nL,rgb2lab:Ad,lab2rgb:p5,uninitializeBounds:Og,areBoundsInitialized:hy,computeBoundsFromPoints:eZ,clampValue:Tc,clampVector:yT,clampAndNormalizeValue:tZ,getScalarTypeFittingRange:nZ,getAdjustedScalarRange:rZ,extentIsWithinOtherExtent:iZ,boundsIsWithinOtherBounds:oZ,pointIsWithinBounds:aZ,solve3PointCircle:sZ,inf:cZ,negInf:lZ,isInf:rL,isNan:wT,isNaN:wT,isFinite:uZ,createUninitializedBounds:Uf,getMajorAxisIndex:fZ,getSparseOrthogonalMatrix:iL,floatToHex2:oL,floatRGB2HexCode:dZ,float2CssRGBA:hZ};const aL={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},xn={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"},gZ=xn.FLOAT;var sL={DefaultDataType:gZ,DataTypeByteSize:aL,VtkDataTypes:xn};const{vtkErrorMacro:pZ}=Ao,{DefaultDataType:mZ}=sL,vZ=1e-6;function xT(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 yZ(){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 g4(t){return Object.prototype.toString.call(t).slice(8,-1)}function wZ(t){const e=t.getNumberOfComponents();let r=0;const n=new Array(e);for(let i=0;ir&&(r=o)}return r}const xZ={computeRange:cL,createRangeHelper:yZ,fastComputeRange:xT,getDataType:g4,getMaxNorm:wZ};function CZ(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=Ig(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=g6(e.ranges,e.numberOfComponents)),o=e.ranges[i],o?(e.rangeTuple[0]=o.min,e.rangeTuple[1]=o.max,e.rangeTuple):(o=cL(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=g6(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.getRanges=function(){if(!(arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0))return structuredClone(e.ranges);const i=[];for(let o=0;o1){const[o,a]=t.getRange(-1),s={min:o,max:a};i.push(s)}return i},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]:vZ;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=()=>uL({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=g4(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),e.ranges=structuredClone(n.getRanges()),(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())&&pZ("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,SZ,r),Array.isArray(r.values)&&r.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=Hw(e.dataType,e.values)):e.values=Ig(e.dataType,e.size),e.values&&(e.size=e.size??e.values.length,e.dataType=g4(e.values)),xr(t,e),Wm(t,e,["name","numberOfComponents"]),e.size%e.numberOfComponents!==0)throw new RangeError("model.size is not a multiple of model.numberOfComponents");CZ(t,e)}const uL=jn(lL,"vtkDataArray");var Nt={newInstance:uL,extend:lL,...xZ,...sL};const TZ={MAGNITUDE:0,COMPONENT:1,RGBCOLORS:2},CT={LUMINANCE:1,LUMINANCE_ALPHA:2,RGB:3,RGBA:4};var p4={VectorMode:TZ,ScalarMappingTarget:CT};const _Z={DEFAULT:0,MAP_SCALARS:1,DIRECT_SCALARS:2},EZ={DEFAULT:0,USE_POINT_DATA:1,USE_CELL_DATA:2,USE_POINT_FIELD_DATA:3,USE_CELL_FIELD_DATA:4,USE_FIELD_DATA:5},bZ={BY_ID:0,BY_NAME:1};var qw={ColorMode:_Z,GetArray:bZ,ScalarMode:EZ};const{ScalarMappingTarget:p6,VectorMode:al}=p4,{VtkDataTypes:zu}=Nt,{ColorMode:Xv}=qw,{vtkErrorMacro:m6}=Q;function DZ(t){return t}function v6(t){return Math.floor(t*255+.5)}function IZ(t,e){e.classHierarchy.push("vtkScalarsToColors"),t.setVectorModeToMagnitude=()=>t.setVectorMode(al.MAGNITUDE),t.setVectorModeToComponent=()=>t.setVectorMode(al.COMPONENT),t.setVectorModeToRGBColors=()=>t.setVectorMode(al.RGBCOLORS),t.build=()=>{},t.isOpaque=()=>!0,t.setAnnotations=(r,n)=>{if(!(r&&!n||!r&&n)){if(r&&n&&r.length!==n.length){m6("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===Xv.DEFAULT&&(r.getDataType()===zu.UNSIGNED_CHAR||r.getDataType()===zu.UNSIGNED_CHAR_CLAMPED)||n===Xv.DIRECT_SCALARS&&r)a=t.convertToRGBA(r,o,r.getNumberOfTuples());else{const s={type:"vtkDataArray",name:"temp",numberOfComponents:4,dataType:zu.UNSIGNED_CHAR},c=Q.newTypedArray(s.dataType,4*r.getNumberOfTuples());s.values=c,s.size=c.length,a=Nt.newInstance(s);let l=i;l<0&&o>1?t.mapVectorsThroughTable(r,a,p6.RGBA,-1,-1):(l<0&&(l=0),l>=o&&(l=o-1),t.mapScalarsThroughTable(r,a,p6.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===al.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===al.MAGNITUDE&&(f===1||c===1)&&(s=al.COMPONENT));let u=0;switch(l>0&&(u=l),s){case al.COMPONENT:{t.mapScalarsThroughTable(r,n,i,u);break}case al.RGBCOLORS:break;case al.MAGNITUDE:default:{const d=Nt.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=v6(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()===zu.UNSIGNED_CHAR)return r;const a=Nt.newInstance({numberOfComponents:4,empty:!0,size:4*i,dataType:zu.UNSIGNED_CHAR});if(i<=0)return a;o=o>0?o:0,o=o<1?o:1;let s=DZ;switch((r.getDataType()===zu.FLOAT||r.getDataType()===zu.DOUBLE)&&(s=v6),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 m6("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===Xv.DEFAULT&&r.getDataType()===zu.UNSIGNED_CHAR||n===Xv.DIRECT_SCALARS?o===3||o===1?e.alpha>=1:r.getRange(o-1)[0]===255:!0}}const MZ={alpha:1,vectorComponent:0,vectorSize:-1,vectorMode:al.COMPONENT,mappingRange:null,annotationArray:null,annotatedValueMap:null,indexedLookup:!1};function fL(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,MZ,r),Q.obj(t,e),e.mappingRange=[0,255],e.annotationArray=[],e.annotatedValueMap=[],Q.setGet(t,e,["vectorSize","vectorComponent","vectorMode","alpha","indexedLookup"]),Q.setArray(t,e,["mappingRange"],2),Q.getArray(t,e,["mappingRange"]),IZ(t,e)}const OZ=Q.newInstance(fL,"vtkScalarsToColors");var Yw={newInstance:OZ,extend:fL,...p4};const PZ={RGB:0,HSV:1,LAB:2,DIVERGING:3},RZ={LINEAR:0,LOG10:1};var dL={ColorSpace:PZ,Scale:RZ};const{ColorSpace:Cs,Scale:m4}=dL,{ScalarMappingTarget:qv}=Yw,{vtkDebugMacro:AZ,vtkErrorMacro:Xl,vtkWarningMacro:LZ}=Q;function y6(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 NZ(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 w6(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 kZ(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 x6(t,e,r,n){const i=[],o=[];Ad(e,i),Ad(r,o);const a=[],s=[];y6(i,a),y6(o,s);let c=t;if(a[1]>.05&&s[1]>.05&&kZ(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]=w6(s,a[0]):s[1]<.05&&a[1]>.05&&(s[2]=w6(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=[];NZ(l,f),p5(f,n)}function VZ(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 Xl("Midpoint outside range [0.0, 1.0]"),-1;if(s<0||s>1)return Xl("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 Td([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=[];Td(f,d),Td(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(m5(a)||m5(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 D=e.mappingRange;if(h>=D[0]&&h<=D[1]){const I=e.numberOfValues,P=D[1]-D[0];if(I<=1)h=D[0]+P/2;else{const M=(h-D[0])/P,L=f4(I*M);h=D[0]+L/(I-1)*P}}}for(;ce.nodes[c].x;)c++,c.99999&&(m=.99999));if(h>e.mappingRange[1])o[b]=0,o[b+1]=0,o[b+2]=0,e.clamping&&(t.getUseAboveRangeColor()?(o[b]=e.aboveRangeColor[0],o[b+1]=e.aboveRangeColor[1],o[b+2]=e.aboveRangeColor[2]):(o[b]=f,o[b+1]=u,o[b+2]=d));else if(h0&&(o[b]=e.nodes[0].r,o[b+1]=e.nodes[0].g,o[b+2]=e.nodes[0].b));else if(c===0&&(Math.abs(h-a)<1e-6||e.discretize))l>0?(o[b]=e.nodes[0].r,o[b+1]=e.nodes[0].g,o[b+2]=e.nodes[0].b):(o[b]=0,o[b+1]=0,o[b+2]=0);else{let D=0;if(C?D=(_-g)/(p-g):D=(h-g)/(p-g),D.99)if(D<.5){o[b]=v[0],o[b+1]=v[1],o[b+2]=v[2];continue}else{o[b]=y[0],o[b+1]=y[1],o[b+2]=y[2];continue}if(w<.01){if(e.colorSpace===Cs.RGB)o[b]=(1-D)*v[0]+D*y[0],o[b+1]=(1-D)*v[1]+D*y[1],o[b+2]=(1-D)*v[2]+D*y[2];else if(e.colorSpace===Cs.HSV){const G=[],X=[];Vp(v,G),Vp(y,X),e.hSVWrap&&(G[0]-X[0]>.5||X[0]-G[0]>.5)&&(G[0]>X[0]?G[0]-=1:X[0]-=1);const ne=[];ne[0]=(1-D)*G[0]+D*X[0],ne[0]<0&&(ne[0]+=1),ne[1]=(1-D)*G[1]+D*X[1],ne[2]=(1-D)*G[2]+D*X[2],Td(ne,x),o[b]=x[0],o[b+1]=x[1],o[b+2]=x[2]}else if(e.colorSpace===Cs.LAB){const G=[],X=[];Ad(v,G),Ad(y,X);const ne=[];ne[0]=(1-D)*G[0]+D*X[0],ne[1]=(1-D)*G[1]+D*X[1],ne[2]=(1-D)*G[2]+D*X[2],p5(ne,x),o[b]=x[0],o[b+1]=x[1],o[b+2]=x[2]}else e.colorSpace===Cs.DIVERGING?(x6(D,v,y,x),o[b]=x[0],o[b+1]=x[1],o[b+2]=x[2]):Xl("ColorSpace set to invalid value.",e.colorSpace);continue}D<.5?D=.5*(D*2)**(1+10*w):D>.5&&(D=1-.5*((1-D)*2)**(1+10*w));const I=D*D,P=I*D,M=2*P-3*I+1,L=-2*P+3*I,B=P-2*I+D,j=P-I;let V,F;if(e.colorSpace===Cs.RGB)for(let G=0;G<3;G++)V=y[G]-v[G],F=(1-w)*V,o[b+G]=M*v[G]+L*y[G]+B*F+j*F;else if(e.colorSpace===Cs.HSV){const G=[],X=[];Vp(v,G),Vp(y,X),e.hSVWrap&&(G[0]-X[0]>.5||X[0]-G[0]>.5)&&(G[0]>X[0]?G[0]-=1:X[0]-=1);const ne=[];for(let ue=0;ue<3;ue++)V=X[ue]-G[ue],F=(1-w)*V,ne[ue]=M*G[ue]+L*X[ue]+B*F+j*F,ue===0&&ne[ue]<0&&(ne[ue]+=1);Td(ne,x),o[b]=x[0],o[b+1]=x[1],o[b+2]=x[2]}else if(e.colorSpace===Cs.LAB){const G=[],X=[];Ad(v,G),Ad(y,X);const ne=[];for(let ue=0;ue<3;ue++)V=X[ue]-G[ue],F=(1-w)*V,ne[ue]=M*G[ue]+L*X[ue]+B*F+j*F;p5(ne,x),o[b]=x[0],o[b+1]=x[1],o[b+2]=x[2]}else e.colorSpace===Cs.DIVERGING?(x6(D,v,y,x),o[b]=x[0],o[b+1]=x[1],o[b+2]=x[2]):Xl("ColorSpace set to invalid value.");for(let G=0;G<3;G++)o[b+G]=o[b+G]<0?0:o[b+G],o[b+G]=o[b+G]>1?1:o[b+G]}}},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 Xl("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?(Xl("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 Xl("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]){Xl("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){AZ("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){LZ("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===qv.RGBA)for(let d=0;d{const n=JSON.stringify(e.colorSpace);r.ColorSpace&&(e.colorSpace=Cs[r.ColorSpace.toUpperCase()],e.colorSpace===void 0&&(Xl(`ColorSpace ${r.ColorSpace} not supported, using RGB instead`),e.colorSpace=Cs.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,FZ,r),Yw.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={},Q.obj(e.buildTime),Q.get(t,e,["buildTime","mappingRange"]),Q.setGet(t,e,["useAboveRangeColor","useBelowRangeColor","discretize","numberOfValues",{type:"enum",name:"colorSpace",enum:Cs},{type:"enum",name:"scale",enum:m4}]),Q.setArray(t,e,["nanColor","belowRangeColor","aboveRangeColor"],4),Q.getArray(t,e,["nanColor","belowRangeColor","aboveRangeColor"]),VZ(t,e)}const UZ=Q.newInstance(hL,"vtkColorTransferFunction");var Mu={newInstance:UZ,extend:hL,...dL},BZ=[{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 ig=Object.create(null);BZ.filter(t=>t.RGBPoints).filter(t=>t.ColorSpace!=="CIELAB").forEach(t=>{ig[t.Name]=t});const og=Object.keys(ig);og.sort();function GZ(t){return ig[t]}function WZ(t){!t.RGBPoints||t.ColorSpace==="CIELAB"||(ig[t.Name]||(og.push(t.Name),og.sort()),ig[t.Name]=t)}function $Z(t){const e=og.indexOf(t);e>-1&&og.splice(e,1),delete ig[t]}var Q1={addPreset:WZ,removePresetByName:$Z,getPresetByName:GZ,rgbPresetNames:og};const{vtkErrorMacro:Yv}=Q;function zZ(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?(Yv("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 Yv("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 Yv("Midpoint outside range [0.0, 1.0]"),-1;if(o<0||o>1)return Yv("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,y=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 w=(u-d)/(h-d);if(w.99)if(w<.5){o[m]=g;continue}else{o[m]=p;continue}if(y<.01){o[m]=(1-w)*g+w*p;continue}w<.5?w=.5*(w*2)**(1+10*y):w>.5&&(w=1-.5*((1-w)*2)**(1+10*y));const x=w*w,C=x*w,S=2*C-3*x+1,T=-2*C+3*x,_=C-2*x+w,E=C-x,b=p-g,D=(1-y)*b;o[m]=S*g+T*p+_*D+E*D;const I=gp?g:p;o[m]=o[m]P?P:o[m]}}}}const jZ={range:[0,0],clamping:!0,allowDuplicateScalars:!1};function gL(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,jZ,r),Q.obj(t,e),e.nodes=[],Q.setGet(t,e,["allowDuplicateScalars","clamping"]),Q.setArray(t,e,["range"],2),Q.getArray(t,e,["range"]),zZ(t,e)}const HZ=Q.newInstance(gL,"vtkPiecewiseFunction");var o0={newInstance:HZ,extend:gL},Xn=1e-6,pi=typeof Float32Array<"u"?Float32Array:Array,KZ=Math.PI/180;function XZ(t){return t*KZ}function a0(t,e){return Math.abs(t-e)<=Xn*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 em(){var t=new pi(9);return pi!=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 Xm(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 qZ(t){var e=new pi(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 YZ(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 Fp(t,e,r,n,i,o,a,s,c){var l=new pi(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 pL(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 Ns(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 Jw(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 Pg(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 JZ(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 yd(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 ag(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],y=r[5],m=r[6],w=r[7],x=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+y*l,t[4]=p*i+v*s+y*f,t[5]=p*o+v*c+y*u,t[6]=m*n+w*a+x*l,t[7]=m*i+w*s+x*f,t[8]=m*o+w*c+x*u,t}function ZZ(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 QZ(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 eQ(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 tQ(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 nQ(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 rQ(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 iQ(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 oQ(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,y=o*c;return t[0]=1-u-g,t[3]=f-y,t[6]=d+v,t[1]=f+y,t[4]=1-l-g,t[7]=h-p,t[2]=d-v,t[5]=h+p,t[8]=1-l-u,t}function aQ(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],y=e[15],m=r*s-n*a,w=r*c-i*a,x=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,b=f*y-h*g,D=u*v-d*p,I=u*y-h*p,P=d*y-h*v,M=m*P-w*I+x*D+C*b-S*E+T*_;return M?(M=1/M,t[0]=(s*P-c*I+l*D)*M,t[1]=(c*b-a*P-l*E)*M,t[2]=(a*I-s*b+l*_)*M,t[3]=(i*I-n*P-o*D)*M,t[4]=(r*P-i*b+o*E)*M,t[5]=(n*b-r*I-o*_)*M,t[6]=(p*T-v*S+y*C)*M,t[7]=(v*x-g*T-y*w)*M,t[8]=(g*S-p*x+y*m)*M,t):null}function sQ(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 cQ(t){return"mat3("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+")"}function lQ(t){return Math.hypot(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])}function uQ(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 mL(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 fQ(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 dQ(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 hQ(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 gQ(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],y=e[6],m=e[7],w=e[8];return Math.abs(r-u)<=Xn*Math.max(1,Math.abs(r),Math.abs(u))&&Math.abs(n-d)<=Xn*Math.max(1,Math.abs(n),Math.abs(d))&&Math.abs(i-h)<=Xn*Math.max(1,Math.abs(i),Math.abs(h))&&Math.abs(o-g)<=Xn*Math.max(1,Math.abs(o),Math.abs(g))&&Math.abs(a-p)<=Xn*Math.max(1,Math.abs(a),Math.abs(p))&&Math.abs(s-v)<=Xn*Math.max(1,Math.abs(s),Math.abs(v))&&Math.abs(c-y)<=Xn*Math.max(1,Math.abs(c),Math.abs(y))&&Math.abs(l-m)<=Xn*Math.max(1,Math.abs(l),Math.abs(m))&&Math.abs(f-w)<=Xn*Math.max(1,Math.abs(f),Math.abs(w))}var pQ=ag,mQ=mL;const vQ=Object.freeze(Object.defineProperty({__proto__:null,add:uQ,adjoint:JZ,clone:qZ,copy:YZ,create:em,determinant:yd,equals:gQ,exactEquals:hQ,frob:lQ,fromMat2d:iQ,fromMat4:Xm,fromQuat:oQ,fromRotation:nQ,fromScaling:rQ,fromTranslation:tQ,fromValues:Fp,identity:Ns,invert:Pg,mul:pQ,multiply:ag,multiplyScalar:fQ,multiplyScalarAndAdd:dQ,normalFromMat4:aQ,projection:sQ,rotate:QZ,scale:eQ,set:pL,str:cQ,sub:mQ,subtract:mL,translate:ZZ,transpose:Jw},Symbol.toStringTag,{value:"Module"}));function La(){var t=new pi(16);return pi!=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 yQ(t){var e=new pi(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 zr(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 v4(t,e,r,n,i,o,a,s,c,l,f,u,d,h,g,p){var v=new pi(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 wQ(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 Lt(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 Mn(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 ei(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],y=e[15],m=r*s-n*a,w=r*c-i*a,x=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,b=f*y-h*g,D=u*v-d*p,I=u*y-h*p,P=d*y-h*v,M=m*P-w*I+x*D+C*b-S*E+T*_;return M?(M=1/M,t[0]=(s*P-c*I+l*D)*M,t[1]=(i*I-n*P-o*D)*M,t[2]=(p*T-v*S+y*C)*M,t[3]=(d*S-u*T-h*C)*M,t[4]=(c*b-a*P-l*E)*M,t[5]=(r*P-i*b+o*E)*M,t[6]=(v*x-g*T-y*w)*M,t[7]=(f*T-d*x+h*w)*M,t[8]=(a*I-s*b+l*_)*M,t[9]=(n*b-r*I-o*_)*M,t[10]=(g*S-p*x+y*m)*M,t[11]=(u*x-f*S-h*m)*M,t[12]=(s*E-a*D-c*_)*M,t[13]=(r*D-n*E+i*_)*M,t[14]=(p*w-g*C-v*m)*M,t[15]=(f*C-u*w+d*m)*M,t):null}function xQ(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],y=e[15];return t[0]=s*(d*y-h*v)-u*(c*y-l*v)+p*(c*h-l*d),t[1]=-(n*(d*y-h*v)-u*(i*y-o*v)+p*(i*h-o*d)),t[2]=n*(c*y-l*v)-s*(i*y-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*y-h*v)-f*(c*y-l*v)+g*(c*h-l*d)),t[5]=r*(d*y-h*v)-f*(i*y-o*v)+g*(i*h-o*d),t[6]=-(r*(c*y-l*v)-a*(i*y-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*y-h*p)-f*(s*y-l*p)+g*(s*h-l*u),t[9]=-(r*(u*y-h*p)-f*(n*y-o*p)+g*(n*h-o*u)),t[10]=r*(s*y-l*p)-a*(n*y-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 CQ(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],y=e*a-r*o,m=e*s-n*o,w=e*c-i*o,x=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,b=f*p-u*g,D=f*v-d*g,I=u*v-d*p;return y*I-m*D+w*b+x*E-C*_+S*T}function Ln(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],y=e[14],m=e[15],w=r[0],x=r[1],C=r[2],S=r[3];return t[0]=w*n+x*s+C*u+S*p,t[1]=w*i+x*c+C*d+S*v,t[2]=w*o+x*l+C*h+S*y,t[3]=w*a+x*f+C*g+S*m,w=r[4],x=r[5],C=r[6],S=r[7],t[4]=w*n+x*s+C*u+S*p,t[5]=w*i+x*c+C*d+S*v,t[6]=w*o+x*l+C*h+S*y,t[7]=w*a+x*f+C*g+S*m,w=r[8],x=r[9],C=r[10],S=r[11],t[8]=w*n+x*s+C*u+S*p,t[9]=w*i+x*c+C*d+S*v,t[10]=w*o+x*l+C*h+S*y,t[11]=w*a+x*f+C*g+S*m,w=r[12],x=r[13],C=r[14],S=r[15],t[12]=w*n+x*s+C*u+S*p,t[13]=w*i+x*c+C*d+S*v,t[14]=w*o+x*l+C*h+S*y,t[15]=w*a+x*f+C*g+S*m,t}function or(t,e,r){var n=r[0],i=r[1],o=r[2],a,s,c,l,f,u,d,h,g,p,v,y;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],y=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]=y,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+y*o+e[15]),t}function Ml(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 po(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,y,m,w,x,C,S,T,_,E,b,D,I,P,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),vL(t,e,r),t}function bQ(t,e){return t[0]=e[12],t[1]=e[13],t[2]=e[14],t}function yL(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 ST(t,e){var r=new pi(3);yL(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 wL(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,y=s*c,m=s*l,w=s*f,x=n[0],C=n[1],S=n[2];return t[0]=(1-(g+v))*x,t[1]=(d+w)*x,t[2]=(h-m)*x,t[3]=0,t[4]=(d-w)*C,t[5]=(1-(u+v))*C,t[6]=(p+y)*C,t[7]=0,t[8]=(h+m)*S,t[9]=(p-y)*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 DQ(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,y=s*u,m=c*l,w=c*f,x=c*u,C=n[0],S=n[1],T=n[2],_=i[0],E=i[1],b=i[2],D=(1-(p+y))*C,I=(h+x)*C,P=(g-w)*C,M=(h-x)*S,L=(1-(d+y))*S,B=(v+m)*S,j=(g+w)*T,V=(v-m)*T,F=(1-(d+p))*T;return t[0]=D,t[1]=I,t[2]=P,t[3]=0,t[4]=M,t[5]=L,t[6]=B,t[7]=0,t[8]=j,t[9]=V,t[10]=F,t[11]=0,t[12]=r[0]+_-(D*_+M*E+j*b),t[13]=r[1]+E-(I*_+L*E+V*b),t[14]=r[2]+b-(P*_+B*E+F*b),t[15]=1,t}function v5(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,y=o*c;return t[0]=1-u-g,t[1]=f+y,t[2]=d-v,t[3]=0,t[4]=f-y,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 IQ(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 xL(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 MQ=xL;function OQ(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 PQ(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 CL(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 T4=CL;function RQ(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 _4(t,e,r,n){var i,o,a,s,c,l,f,u,d,h,g=e[0],p=e[1],v=e[2],y=n[0],m=n[1],w=n[2],x=r[0],C=r[1],S=r[2];return Math.abs(g-x)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 LQ(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 NQ(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 kQ(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 SL(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 TL(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 VQ(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 FQ(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 UQ(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],y=t[15],m=e[0],w=e[1],x=e[2],C=e[3],S=e[4],T=e[5],_=e[6],E=e[7],b=e[8],D=e[9],I=e[10],P=e[11],M=e[12],L=e[13],B=e[14],j=e[15];return Math.abs(r-m)<=Xn*Math.max(1,Math.abs(r),Math.abs(m))&&Math.abs(n-w)<=Xn*Math.max(1,Math.abs(n),Math.abs(w))&&Math.abs(i-x)<=Xn*Math.max(1,Math.abs(i),Math.abs(x))&&Math.abs(o-C)<=Xn*Math.max(1,Math.abs(o),Math.abs(C))&&Math.abs(a-S)<=Xn*Math.max(1,Math.abs(a),Math.abs(S))&&Math.abs(s-T)<=Xn*Math.max(1,Math.abs(s),Math.abs(T))&&Math.abs(c-_)<=Xn*Math.max(1,Math.abs(c),Math.abs(_))&&Math.abs(l-E)<=Xn*Math.max(1,Math.abs(l),Math.abs(E))&&Math.abs(f-b)<=Xn*Math.max(1,Math.abs(f),Math.abs(b))&&Math.abs(u-D)<=Xn*Math.max(1,Math.abs(u),Math.abs(D))&&Math.abs(d-I)<=Xn*Math.max(1,Math.abs(d),Math.abs(I))&&Math.abs(h-P)<=Xn*Math.max(1,Math.abs(h),Math.abs(P))&&Math.abs(g-M)<=Xn*Math.max(1,Math.abs(g),Math.abs(M))&&Math.abs(p-L)<=Xn*Math.max(1,Math.abs(p),Math.abs(L))&&Math.abs(v-B)<=Xn*Math.max(1,Math.abs(v),Math.abs(B))&&Math.abs(y-j)<=Xn*Math.max(1,Math.abs(y),Math.abs(j))}var y5=Ln,BQ=SL;const tm=Object.freeze(Object.defineProperty({__proto__:null,add:kQ,adjoint:xQ,clone:yQ,copy:zr,create:La,determinant:CQ,equals:UQ,exactEquals:FQ,frob:NQ,fromQuat:v5,fromQuat2:EQ,fromRotation:S4,fromRotationTranslation:vL,fromRotationTranslationScale:wL,fromRotationTranslationScaleOrigin:DQ,fromScaling:C4,fromTranslation:qm,fromValues:v4,fromXRotation:SQ,fromYRotation:TQ,fromZRotation:_Q,frustum:IQ,getRotation:ST,getScaling:yL,getTranslation:bQ,identity:Lt,invert:ei,lookAt:_4,mul:y5,multiply:Ln,multiplyScalar:TL,multiplyScalarAndAdd:VQ,ortho:T4,orthoNO:CL,orthoZO:RQ,perspective:MQ,perspectiveFromFieldOfView:PQ,perspectiveNO:xL,perspectiveZO:OQ,rotate:po,rotateX:y4,rotateY:w4,rotateZ:x4,scale:Ml,set:wQ,str:LQ,sub:BQ,subtract:SL,targetTo:AQ,translate:or,transpose:Mn},Symbol.toStringTag,{value:"Module"}));function Ve(){var t=new pi(3);return pi!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function Vh(t){var e=new pi(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function _i(t){var e=t[0],r=t[1],n=t[2];return Math.hypot(e,r,n)}function Et(t,e,r){var n=new pi(3);return n[0]=t,n[1]=e,n[2]=r,n}function E4(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function tr(t,e,r,n){return t[0]=e,t[1]=r,t[2]=n,t}function Kr(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t}function pn(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t}function GQ(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t}function WQ(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,r){return t[0]=Math.min(e[0],r[0]),t[1]=Math.min(e[1],r[1]),t[2]=Math.min(e[2],r[2]),t}function zQ(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t[2]=Math.max(e[2],r[2]),t}function jQ(t,e){return t[0]=Math.round(e[0]),t[1]=Math.round(e[1]),t[2]=Math.round(e[2]),t}function Er(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t}function bn(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 Po(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 _L(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 Ic(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t}function EL(t,e){return t[0]=1/e[0],t[1]=1/e[1],t[2]=1/e[2],t}function en(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 pt(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function mn(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 Gt(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 s1(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 HQ(t,e,r){var n=r[0],i=r[1],o=r[2],a=r[3],s=e[0],c=e[1],l=e[2],f=i*l-o*c,u=o*s-n*l,d=n*c-i*s,h=i*d-o*u,g=o*f-n*d,p=n*u-i*f,v=a*2;return f*=v,u*=v,d*=v,h*=2,g*=2,p*=2,t[0]=s+f+h,t[1]=c+u+g,t[2]=l+d+p,t}function b4(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&&pt(t,e)/f;return Math.acos(Math.min(Math.max(u,-1),1))}function KQ(t){return t[0]=0,t[1]=0,t[2]=0,t}function C6(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]}function TT(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)<=Xn*Math.max(1,Math.abs(r),Math.abs(o))&&Math.abs(n-a)<=Xn*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=Xn*Math.max(1,Math.abs(i),Math.abs(s))}var Sn=pn,XQ=GQ,_T=_L,sg=_i;(function(){var t=Ve();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 T6(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]}function pf(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=bL();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;sXn?(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 _6(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 py(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>Xn?(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 JQ(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=e[3],t}function ZQ(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 E6=gy,DL=qQ;(function(){var t=Ve(),e=Et(1,0,0),r=Et(0,1,0);return function(n,i,o){var a=pt(i,o);return a<-.999999?(mn(t,e,i),sg(t)<1e-6&&mn(t,r,i),en(t,t),Zw(n,t,Math.PI),n):a>.999999?(n[0]=0,n[1]=0,n[2]=0,n[3]=1,n):(mn(t,i,o),n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=1+a,DL(n,n))}})();(function(){var t=Bf(),e=Bf();return function(r,n,i,o,a,s){return py(t,n,a,s),py(e,i,o,s),py(r,t,e,2*s*(1-s)),r}})();(function(){var t=em();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],DL(e,ZQ(e,t))}})();function bt(){var t=new pi(2);return pi!=Float32Array&&(t[0]=0,t[1]=0),t}function mf(t){var e=new pi(2);return e[0]=t[0],e[1]=t[1],e}function b6(t,e){var r=new pi(2);return r[0]=t,r[1]=e,r}function Ds(t,e,r){return t[0]=e,t[1]=r,t}function Zi(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t}function Wn(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t}function hl(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t}function Up(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t}function dr(t,e){var r=e[0]-t[0],n=e[1]-t[1];return Math.hypot(r,n)}function vf(t,e){var r=e[0]-t[0],n=e[1]-t[1];return r*r+n*n}function w5(t){var e=t[0],r=t[1];return Math.hypot(e,r)}function ml(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 au(t,e){return t[0]*e[0]+t[1]*e[1]}function QQ(t,e,r,n){var i=e[0]-r[0],o=e[1]-r[1],a=Math.sin(n),s=Math.cos(n);return t[0]=i*s-o*a+r[0],t[1]=i*a+o*s+r[1],t}function eee(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 tee=w5,Ps=Wn,D4=dr;(function(){var t=bt();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;s>>0).toString(36)}const nee=1073741824;class ree{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*nee,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)=>{var o;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;(o=n.image)!=null&&o.referencedImageId&&this._referencedImageIdToImageIdCache.delete(n.image.referencedImageId),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}),nt(ze,qe.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),nt(ze,qe.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};nt(ze,qe.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.getImageByReferencedImageId=e=>{var n;const r=this._referencedImageIdToImageIdCache.get(e);if(r)return(n=this._imageCache.get(r))==null?void 0:n.image},this.getImage=(e,r=Ia.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};nt(ze,qe.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};nt(ze,qe.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}}generateVolumeId(e){const r=e.map(Qr).sort();let n=2166136261;for(const i of r){const o=IL(i);for(let a=0;a>>0).toString(36)}`}getImageIdsForVolumeId(e){return Array.from(this._imageIdsToVolumeIdCache.entries()).filter(([r,n])=>n===e).map(([r])=>r)}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),nt(ze,qe.IMAGE_CACHE_IMAGE_REMOVED,{imageId:c}),n=this.getBytesAvailable(),n>=e)return n;for(const c of a)if(this.removeImageLoadObject(c),nt(ze,qe.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(qe.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};r.referencedImageId&&this._referencedImageIdToImageIdCache.set(r.referencedImageId,e),nt(ze,qe.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),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=Qr(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=Qr(e),i=Array.from(this._imageCache.keys()).find(o=>Qr(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};nt(ze,qe.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(qe.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};nt(ze,qe.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||Ia.FULL_RESOLUTION:void 0}}const Ue=new ree;function ML(t,e,r){return Math.abs(t-e)<=r}function iee(t,e,r=1e-5){if(t.length!==e.length)return!1;for(let n=0;n0&&typeof t[0]=="number"}function Vt(t,e,r=1e-5){return typeof t!=typeof e||t===null||e===null?!1:D6(t)&&D6(e)?ML(t,e,r):I6(t)&&I6(e)?iee(t,e,r):!1}const OL=t=>typeof t=="number"?-t:t!=null&&t.map?t.map(OL):!t,ET=t=>typeof t=="number"?Math.abs(t):t!=null&&t.map?t.map(ET):t,PL=(t,e,r=void 0)=>Vt(t,OL(e),r),my=(t,e,r=void 0)=>Vt(ET(t),ET(e),r);function $r(t){return Array.isArray(t)?$r(t[0]):isFinite(t)&&!isNaN(t)}function wc(t){return da(t,"vtkVolume")||da(t,"vtkImageSlice")}function da(t,e){const r="isA"in t?t:t.actor;return r?!!r.isA(e):!1}const I4=new Map;function oee(t){t.name=t.name||t.Name,I4.set(t.name,t)}function nm(t){return I4.get(t)}function RL(){return Array.from(I4.keys())}function M4(t,e){const r=Q1.rgbPresetNames.map(c=>Q1.getPresetByName(c)),n=RL().map(c=>nm(c)),o=r.concat(n).find(c=>{const{RGBPoints:l}=c;if(l.length!==t.length)return!1;for(let f=0;f0&&{opacity:a},...typeof a=="number"&&{opacity:a}}}function aee(t){const{volumeActor:e,preset:r,opacity:n=.9,threshold:i=null,colorRange:o=[0,5]}=t;e.getMapper().setSampleDistance(1);const s=Mu.newInstance(),c=r||Q1.getPresetByName("hsv");s.applyColorMap(c),s.setMappingRange(o[0],o[1]),e.getProperty().setRGBTransferFunction(0,s),O4(e,n,i)}function AL(t,e){const r=P4(t);O4(t,e,r)}function LL(t,e){const r=R4(t);O4(t,r,e)}function O4(t,e,r){const n=t.getMapper().getInputData().get("voxelManager");if(!(n!=null&&n.voxelManager))throw new Error("No voxel manager was found for the volume actor, or you cannot yet update opacity with a threshold using stacked images");const i=n.voxelManager.getRange(),o=o0.newInstance();if(r!==null){const a=Math.abs(i[1]-i[0])*.001,s=Math.max(i[0],Math.min(i[1],r));o.addPoint(i[0],0),o.addPoint(s-a,0),o.addPoint(s,e),o.addPoint(i[1],e)}else o.addPoint(i[0],e),o.addPoint(i[1],e);t.getProperty().setScalarOpacity(0,o)}function P4(t){const e=t.getProperty().getScalarOpacity(0);if(!e)return null;const r=e.getDataPointer();if(!r||r.length<=4)return null;for(let n=0;n0)return o}return null}function R4(t){const e=t.getProperty().getScalarOpacity(0);if(!e)return 1;const r=e.getDataPointer();if(!r||r.length===0)return 1;let n=0;for(let i=1;in&&(n=r[i]);return n}const see=Object.freeze(Object.defineProperty({__proto__:null,findMatchingColormap:M4,getColormap:nm,getColormapNames:RL,getMaxOpacity:R4,getThresholdValue:P4,registerColormap:oee,setColorMapTransferFunctionForVolumeActor:aee,updateOpacity:AL,updateThreshold:LL},Symbol.toStringTag,{value:"Module"}));function c1(t){if(!t)return;const e=t.getSize();for(let r=0;re-r/4*Math.log((1-t)/t);function Rg(t,e){const r=Math.abs(e-t)+1,n=(t+e+1)/2;return{windowWidth:r,windowCenter:n}}function Pf(t,e,r=Do.LINEAR){if(r===Do.LINEAR)return{lower:e-.5-(t-1)/2,upper:e-.5+(t-1)/2};if(r===Do.LINEAR_EXACT)return{lower:e-t/2,upper:e+t/2};if(r===Do.SAMPLED_SIGMOID){const n=bT(.01,e,t),i=bT(.99,e,t);return{lower:n,upper:i}}else throw new Error("Invalid VOI LUT function")}const cee=Object.freeze(Object.defineProperty({__proto__:null,toLowHighRange:Pf,toWindowLevel:Rg},Symbol.toStringTag,{value:"Module"}));function A4(t,e=1024){const{windowWidth:r,windowCenter:n}=Rg(t.lower,t.upper),o=Array.from({length:e},(s,c)=>(c+1)/(e+2)).flatMap(s=>[bT(s,n,r),s,s,s,.5,0]),a=Mu.newInstance();return a.buildFunctionFromArray(Nt.newInstance({values:o,numberOfComponents:6})),a}function Zr(t,e){return t.worldToIndex(e).map(Math.round)}function vy(t,e){return t.worldToIndex(e)}function x5(t){const e=t.getSize(),r=[];for(let n=0;n{t.addRGBPoint(...r)}))}const lee=Object.freeze(Object.defineProperty({__proto__:null,getTransferFunctionNodes:x5,setTransferFunctionNodes:Qw},Symbol.toStringTag,{value:"Module"}));function uee(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=>{Q.vtkErrorMacro("not implemented")}}const fee={};function NL(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,fee,r),Q.obj(t,e),Q.setGet(t,e,["transform"]),uee(t,e)}const dee=Q.newInstance(NL,"vtkImplicitFunction");var hee={newInstance:dee,extend:NL};const DT=1e-6,kL="coincide",VL="disjoint";function gee(t,e,r){return t[0]*(r[0]-e[0])+t[1]*(r[1]-e[1])+t[2]*(r[2]-e[2])}function FL(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 UL(t,e,r,n){const i=[];xu(t,e,i);const o=En(r,i);n[0]=t[0]-o*r[0],n[1]=t[1]-o*r[1],n[2]=t[2]-o*r[2]}function BL(t,e,r){const n=En(t,e);let i=En(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 GL(t,e,r,n){const i=[];xu(t,e,i);const o=En(r,i),a=En(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 WL(t,e,r,n){const i={intersection:!1,betweenPoints:!1,t:Number.MAX_VALUE,x:[]},o=[],a=[];xu(e,t,o),xu(r,t,a);const s=En(n,a),c=En(n,o);let l,f;return c<0?l=-c:l=c,s<0?f=-s*DT:f=s*DT,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 $L(t,e,r,n){const i={intersection:!1,l0:[],l1:[],error:null},o=[];Il(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=-En(e,t),f=-En(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,g5(c,o,i.l1),i.intersection=!0,i}const pee={evaluate:gee,distanceToPlane:FL,projectPoint:UL,projectVector:BL,generalizedProjectPoint:GL,intersectWithLine:WL,intersectWithPlane:$L,DISJOINT:VL,COINCIDE:kL};function mee(t,e){e.classHierarchy.push("vtkPlane"),t.distanceToPlane=r=>FL(r,e.origin,e.normal),t.projectPoint=(r,n)=>{UL(r,e.origin,e.normal,n)},t.projectVector=(r,n)=>BL(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)=>{GL(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)=>WL(r,n,e.origin,e.normal),t.intersectWithPlane=(r,n)=>$L(r,n,e.origin,e.normal)}const vee={normal:[0,0,1],origin:[0,0,0]};function zL(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,vee,r),hee.extend(t,e,r),Q.setGetArray(t,e,["normal","origin"],3),mee(t,e)}const yee=Q.newInstance(zL,"vtkPlane");var Wr={newInstance:yee,extend:zL,...pee};const ex=[Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE];function jL(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 Ou(t){return(t==null?void 0:t.length)>=6&&t[0]<=t[1]&&t[2]<=t[3]&&t[4]<=t[5]}function L4(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 N4(t){return L4(t,ex)}function C5(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 k4(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 XL(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 F4(t){return[.5*(t[0]+t[1]),.5*(t[2]+t[3]),.5*(t[4]+t[5])]}function wee(t,e,r,n){if(!Ou(t))return!1;const i=F4(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],V4(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 l1(t,e){return t[e*2+1]-t[e*2]}function tx(t){return[l1(t,0),l1(t,1),l1(t,2)]}function YL(t){return t.slice(0,2)}function JL(t){return t.slice(2,4)}function ZL(t){return t.slice(4,6)}function QL(t){const e=tx(t);return e[0]>e[1]?e[0]>e[2]?e[0]:e[2]:e[1]>e[2]?e[1]:e[2]}function eN(t){if(Ou(t)){const e=tx(t);return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2])}return null}function U4(t){return[t[0],t[2],t[4]]}function B4(t){return[t[1],t[3],t[5]]}function Jv(t,e){return t<=0&&e>=0||t>=0&&e<=0}function G4(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 tN(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 nN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[];const n=G4(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 iN(t,e,r,n){const i=[].concat(ex),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 aN(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=Wr.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 sN(t,e){if(!(Ou(t)&&Ou(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 S5(t,e){if(!(Ou(t)&&Ou(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 T5(t,e,r,n){return!(et[1]||rt[3]||nt[5])}function xee(t,e){return!(!S5(t,e)||!T5(t,...U4(e))||!T5(t,...B4(e)))}function cN(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++]=Wr.evaluate(r,e,g)}let a=2;for(;a--&&!(Jv(i[n[a][0]],i[n[a][4]])&&Jv(i[n[a][1]],i[n[a][5]])&&Jv(i[n[a][2]],i[n[a][6]])&&Jv(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 Cee{constructor(e){this.bounds=e,this.bounds||(this.bounds=new Float64Array(ex))}getBounds(){return this.bounds}equals(e){return jL(this.bounds,e)}isValid(){return Ou(this.bounds)}setBounds(e){return L4(this.bounds,e)}reset(){return N4(this.bounds)}addPoint(){for(var e=arguments.length,r=new Array(e),n=0;n1&&arguments[1]!==void 0?arguments[1]:[];return nN(this.bounds,e,r)}computeScale3(e){return rN(this.bounds,e)}cutWithPlane(e,r){return cN(this.bounds,e,r)}intersectBox(e,r,n,i){return oN(this.bounds,e,r,n,i)}intersectPlane(e,r){return aN(this.bounds,e,r)}intersect(e){return sN(this.bounds,e)}intersects(e){return S5(this.bounds,e)}containsPoint(e,r,n){return T5(this.bounds,e,r,n)}contains(e){return S5(this.bounds,e)}}function See(t){const e=t&&t.bounds;return new Cee(e)}const Tee={equals:jL,isValid:Ou,setBounds:L4,reset:N4,addPoint:C5,addPoints:k4,addBounds:HL,setMinPoint:KL,setMaxPoint:XL,inflate:qL,scale:V4,scaleAboutCenter:wee,getCenter:F4,getLength:l1,getLengths:tx,getMaxLength:QL,getDiagonalLength:eN,getMinPoint:U4,getMaxPoint:B4,getXRange:YL,getYRange:JL,getZRange:ZL,getCorners:G4,computeCornerPoints:tN,computeLocalBounds:iN,transformBounds:nN,computeScale3:rN,cutWithPlane:cN,intersectBox:oN,intersectPlane:aN,intersect:sN,intersects:S5,containsPoint:T5,contains:xee,INIT_BOUNDS:ex};var ar={newInstance:See,...Tee};const _ee={DISPLAY:0,WORLD:1};var lN={CoordinateSystem:_ee};const{CoordinateSystem:IT}=lN;function M6(t){return()=>Q.vtkErrorMacro(`vtkProp::${t} - NOT IMPLEMENTED`)}function Eee(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=M6("pick"),t.hasKey=M6("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(IT.WORLD),t.setCoordinateSystemToDisplay=()=>t.setCoordinateSystem(IT.DISPLAY)}const bee={allocatedRenderTime:10,coordinateSystem:IT.WORLD,dragable:!0,estimatedRenderTime:0,paths:null,pickable:!0,renderTimeMultiplier:1,savedEstimatedRenderTime:0,textures:[],useBounds:!0,visibility:!0};function uN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,bee,r),Q.obj(t,e),Q.get(t,e,["estimatedRenderTime","allocatedRenderTime"]),Q.setGet(t,e,["_parentProp","coordinateSystem","dragable","pickable","renderTimeMultiplier","useBounds","visibility"]),Q.moveToProtected(t,e,["parentProp"]),Eee(t,e)}const Dee=Q.newInstance(uN,"vtkProp");var Ym={newInstance:Dee,extend:uN,...lN};const Iee=1e-6;function Mee(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=Bf();ST(n,e.rotation);const i=new Float64Array(3),o=YQ(i,n);return[h5(o),i[0],i[1],i[2]]},t.getOrientationQuaternion=function(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];return ST(n,e.rotation)},t.rotateX=n=>{n!==0&&(y4(e.rotation,e.rotation,ci(n)),t.modified())},t.rotateY=n=>{n!==0&&(w4(e.rotation,e.rotation,ci(n)),t.modified())},t.rotateZ=n=>{n!==0&&(x4(e.rotation,e.rotation,ci(n)),t.modified())},t.rotateWXYZ=(n,i,o,a)=>{if(n===0||i===0&&o===0&&a===0)return;const s=ci(n),c=Bf();Zw(c,[i,o,a],s);const l=new Float64Array(16);v5(l,c),Ln(e.rotation,e.rotation,l),t.modified()},t.rotateQuaternion=n=>{if(Math.abs(n[3])>=1-Iee)return;const i=v5(new Float64Array(16),n);Ln(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],Lt(e.rotation),t.rotateZ(o),t.rotateX(n),t.rotateY(i),t.modified(),!0),t.setUserMatrix=n=>Hm(e.userMatrix,n)?!1:(zr(e.userMatrix,n),t.modified(),!0),t.getMatrix=()=>(t.computeMatrix(),e.matrix),t.computeMatrix=()=>{if(t.getMTime()>e.matrixMTime.getMTime()){Lt(e.matrix),e.userMatrix&&Ln(e.matrix,e.matrix,e.userMatrix),or(e.matrix,e.matrix,e.origin),or(e.matrix,e.matrix,e.position),Ln(e.matrix,e.matrix,e.rotation),Ml(e.matrix,e.matrix,e.scale),or(e.matrix,e.matrix,[-e.origin[0],-e.origin[1],-e.origin[2]]),Mn(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=()=>ar.getCenter(e.bounds),t.getLength=()=>ar.getLength(e.bounds),t.getXRange=()=>ar.getXRange(e.bounds),t.getYRange=()=>ar.getYRange(e.bounds),t.getZRange=()=>ar.getZRange(e.bounds),t.getUserMatrix=()=>e.userMatrix;function r(){t.computeMatrix()}t.onModified(r)}const Oee={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 fN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Oee,r),Ym.extend(t,e,r),e.matrixMTime={},Q.obj(e.matrixMTime),Q.get(t,e,["bounds","isIdentity"]),Q.getArray(t,e,["orientation"]),Q.setGetArray(t,e,["origin","position","scale"],3),e.matrix=Lt(new Float64Array(16)),e.rotation=Lt(new Float64Array(16)),e.userMatrix=Lt(new Float64Array(16)),e.transform=null,Mee(t,e)}const Pee=Q.newInstance(fN,"vtkProp3D");var W4={newInstance:Pee,extend:fN};const MT={NEAREST:0,LINEAR:1,FAST_LINEAR:2},dN={FRACTIONAL:0,PROPORTIONAL:1},yy={CUSTOM:0,ADDITIVE:1,COLORIZE:2};var hN={InterpolationType:MT,OpacityMode:dN,ColorMixPreset:yy};const{InterpolationType:Bp,OpacityMode:Ree}=hN,{vtkErrorMacro:kC}=Q,wy=4;function Aee(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?(kC("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=o0.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=Mu.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=o0.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>=wy)return kC("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>=wy?(kC("Invalid index"),0):e.componentData[i].componentWeight},t.setInterpolationTypeToNearest=()=>t.setInterpolationType(Bp.NEAREST),t.setInterpolationTypeToLinear=()=>t.setInterpolationType(Bp.LINEAR),t.setInterpolationTypeToFastLinear=()=>t.setInterpolationType(Bp.FAST_LINEAR),t.getInterpolationTypeAsString=()=>Q.enumToString(Bp,e.interpolationType),["useGradientOpacity","scalarOpacityUnitDistance","gradientOpacityMinimumValue","gradientOpacityMinimumOpacity","gradientOpacityMaximumValue","gradientOpacityMaximumOpacity","opacityMode","forceNearestInterpolation"].forEach(i=>{const o=Q.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=Q.capitalize(i);t[`get${o}`]=a=>e.componentData[a][`${i}`]})}const Lee={colorMixPreset:null,independentComponents:!0,interpolationType:Bp.FAST_LINEAR,shade:!1,ambient:.1,diffuse:.7,specular:.2,specularPower:10,useLabelOutline:!1,labelOutlineThickness:[1],labelOutlineOpacity:1};function gN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(Object.assign(e,Lee,r),Q.obj(t,e),!e.componentData){e.componentData=[];for(let n=0;nt,t.makeProperty=kee.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()){Vee("Recomputing bounds..."),e.mapperBounds=r.map(a=>a);const i=[];ar.getCorners(r,i),t.computeMatrix();const o=new Float64Array(16);Mn(o,e.matrix),i.forEach(a=>Gt(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 Uee={mapper:null,property:null,bounds:[1,-1,1,-1,1,-1]};function pN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Uee,r),W4.extend(t,e,r),e.boundsMTime={},Q.obj(e.boundsMTime),Q.set(t,e,["property"]),Q.setGet(t,e,["mapper"]),Q.getArray(t,e,["bounds"],6),Fee(t,e)}const Bee=Q.newInstance(pN,"vtkVolume");var Gee={newInstance:Bee,extend:pN};const{vtkErrorMacro:Wee}=Q,$ee=["Build","Render"];function zee(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 Wee("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,jee,r),Q.obj(t,e),Q.event(t,e,"event"),e._renderableChildMap=new Map,Q.get(t,e,["visited"]),Q.setGet(t,e,["_parent","renderable","myFactory"]),Q.getArray(t,e,["children"]),Q.moveToProtected(t,e,["parent"]),zee(t,e)}const Hee=Q.newInstance(mN,"vtkViewNode");var gr={newInstance:Hee,extend:mN,PASS_TYPES:$ee};function Kee(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 Xee={};function vN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Xee,r),Q.obj(t,e),Kee(t,e)}const qee=Q.newInstance(vN,"vtkViewNodeFactory");var $4={newInstance:qee,extend:vN};const yN=Object.create(null);function Ri(t,e){yN[t]=e}function Yee(t,e){e.classHierarchy.push("vtkOpenGLViewNodeFactory")}const Jee={};function wN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Jee,r),e.overrides=yN,$4.extend(t,e,r),Yee(t,e)}const Zee=Q.newInstance(wN,"vtkOpenGLViewNodeFactory");var Qee={newInstance:Zee,extend:wN};function ete(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()){zr(e.keyMatrices.wcvc,e.renderable.getViewMatrix()),Xm(e.keyMatrices.normalMatrix,e.keyMatrices.wcvc),Pg(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix),Mn(e.keyMatrices.wcvc,e.keyMatrices.wcvc);const n=e._openGLRenderer.getAspectRatio();zr(e.keyMatrices.vcpc,e.renderable.getProjectionMatrix(n,-1,1)),Mn(e.keyMatrices.vcpc,e.keyMatrices.vcpc),Ln(e.keyMatrices.wcpc,e.keyMatrices.vcpc,e.keyMatrices.wcvc),e.keyMatrixTime.modified(),e.lastRenderer=r}return e.keyMatrices}}const tte={context:null,lastRenderer:null,keyMatrixTime:null,keyMatrices:null};function xN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,tte,r),gr.extend(t,e,r),e.keyMatrixTime={},xr(e.keyMatrixTime),e.keyMatrices={normalMatrix:new Float64Array(9),vcpc:new Float64Array(16),wcvc:new Float64Array(16),wcpc:new Float64Array(16)},vi(t,e,["context","keyMatrixTime"]),ete(t,e)}const CN=jn(xN);var nte={newInstance:CN,extend:xN};Ri("vtkCamera",CN);const{vtkDebugMacro:rte}=Ao;function ite(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||(rte("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 ote={context:null,_openGLRenderWindow:null,selector:null};function SN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ote,r),gr.extend(t,e,r),Qo(t,e,["shaderCache"]),vi(t,e,["selector"]),$m(t,e,["openGLRenderWindow"]),ite(t,e)}const TN=jn(SN,"vtkOpenGLRenderer");var ate={newInstance:TN,extend:SN};Ri("vtkRenderer",TN);function _N(t){let e=0;return t.filter((r,n)=>n===e?(e+=r+1,!0):!1)}function EN(t){let e=0;for(let r=0;r(e.numberOfCells!==void 0&&!n||(e.cellSizes?e.numberOfCells=e.cellSizes.length:e.numberOfCells=EN(t.getData())),e.numberOfCells),t.getCellSizes=n=>(e.cellSizes!==void 0&&!n||(e.cellSizes=_N(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 lte(t){return{empty:!0,numberOfComponents:1,dataType:xn.UNSIGNED_INT,...t}}function bN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Nt.extend(t,e,lte(r)),cte(t,e)}const ute=Q.newInstance(bN,"vtkCellArray");var Gf={newInstance:ute,extend:bN,...ste};const{vtkErrorMacro:fte}=Q,dte=[1,-1,1,-1,1,-1];function hte(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=Q.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 fte(`getBounds called on an array with components of - ${t.getNumberOfComponents()}`),dte;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 gte={empty:!0,numberOfComponents:3,dataType:xn.FLOAT,bounds:[1,-1,1,-1,1,-1]};function DN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,gte,r),Nt.extend(t,e,r),hte(t,e)}const pte=Q.newInstance(DN,"vtkPoints");var cg={newInstance:pte,extend:DN};function mte(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=Q.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 Og(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)=>{Q.vtkErrorMacro("vtkCell.evaluatePosition is not implemented.")}}const vte={bounds:[-1,-1,-1,-1,-1,-1],pointsIds:[]};function IN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,vte,r),Q.obj(t,e),e.points||(e.points=cg.newInstance()),Q.get(t,e,["points","pointsIds"]),mte(t,e)}const yte=Q.newInstance(IN,"vtkCell");var _5={newInstance:yte,extend:IN};function wte(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 xte(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=()=>{wte(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 Cte={array:null,maxId:0,extend:0};function MN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Cte,r),Q.obj(t,e),xte(t,e)}const Ste=Q.newInstance(MN,"vtkCellLinks");var Tte={newInstance:Ste,extend:MN};const Ar={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},OT=["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 _te(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]=Ar.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 Ote={size:0,maxId:-1,extend:1e3};function ON(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Ote,r),Q.obj(t,e),Q.get(t,e,["size","maxId","extend"]),Q.getArray(t,e,["typeArray","locationArray"]),Mte(t,e)}const Pte=Q.newInstance(ON,"vtkCellTypes");var Rte={newInstance:Pte,extend:ON,...Ite};const Ate={NO_INTERSECTION:0,YES_INTERSECTION:1,ON_LINE:2};var PN={IntersectionState:Ate};const{IntersectionState:xy}=PN;function ch(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=En(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=fl(a,t),i}function RN(t,e,r,n,i,o){const a=[],s=[],c=[];i[0]=0,o[0]=0,xu(e,t,a),xu(n,r,s),xu(r,t,c);const l=[En(a,a),-En(a,s),-En(a,s),En(s,s)],f=[];if(f[0]=En(a,c),f[1]=-En(s,c),JA(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=ch(d[v],h[v],g[v]),p.distance=0&&i[0]<=1&&o[0]>=0&&o[0]<=1?xy.YES_INTERSECTION:xy.NO_INTERSECTION}const Lte={distanceToLine:ch,intersection:RN};function Nte(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=RN(n,i,f,u,d,h);if(c.t=d[0],c.betweenPoints=r(c.t),s[0]=h[0],g===xy.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(fl(a,l)<=o*o)return c.intersect=1,c}else{let p;if(c.t<0)return p=ch(n,f,u,a),p.distance<=o*o&&(c.t=0,c.intersect=1,c.betweenPoints=!0),c;if(c.t>1)return p=ch(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=ch(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=ch(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?(py(i,e.orientations[0],e.orientations[1],n[0]),o[0]=1-n[0],o[1]=n[0],!0):!1}const kte={orientations:null};function AN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,kte,r),_5.extend(t,e,r),Q.setGet(t,e,["orientations"]),Nte(t,e)}const Vte=Q.newInstance(AN,"vtkLine");var Ss={newInstance:Vte,extend:AN,...Lte,...PN};const{vtkErrorMacro:O6,vtkWarningMacro:Fte}=Q;function Ute(t,e){e.classHierarchy.push("vtkFieldData");const r=t.getState;e.arrays&&(e.arrays=e.arrays.map(n=>({data:Sc(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 O6("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=Nt.newInstance({name:a.getName(),dataType:a.getDataType(),numberOfComponents:l,values:Q.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),Fte("Unexpected case in interpolateData")}else f.insertTuples(c.getTuples());else O6("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=Nt.newInstance({name:c.getName(),dataType:c.getDataType(),numberOfComponents:u,values:Q.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 Bte={arrays:[],copyFieldFlags:[],doCopyAllOn:!0,doCopyAllOff:!1};function LN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Bte,r),Q.obj(t,e),Ute(t,e)}const Gte=Q.newInstance(LN,"vtkFieldData");var Wte={newInstance:Gte,extend:LN};const $te={SCALARS:0,VECTORS:1,NORMALS:2,TCOORDS:3,TENSORS:4,GLOBALIDS:5,PEDIGREEIDS:6,EDGEFLAG:7,NUM_ATTRIBUTES:8},zte={MAX:0,EXACT:1,NOLIMIT:2},jte={DUPLICATECELL:1,HIGHCONNECTIVITYCELL:2,LOWCONNECTIVITYCELL:4,REFINEDCELL:8,EXTERIORCELL:16,HIDDENCELL:32},Hte={DUPLICATEPOINT:1,HIDDENPOINT:2},Kte={COPYTUPLE:0,INTERPOLATE:1,PASSDATA:2,ALLCOPY:3},Xte="vtkGhostType",E5={DEFAULT:0,SINGLE:1,DOUBLE:2};var NN={AttributeCopyOperations:Kte,AttributeLimitTypes:zte,AttributeTypes:$te,CellGhostTypes:jte,DesiredOutputPrecision:E5,PointGhostTypes:Hte,ghostArrayName:Xte};const{AttributeTypes:ju,AttributeCopyOperations:rd}=NN,{vtkWarningMacro:Zv}=Q;function qte(t,e){const r=["Scalars","Vectors","Normals","TCoords","Tensors","GlobalIds","PedigreeIds"];function n(a){let s=r.find(c=>ju[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 Zv(`Cannot set attribute ${c}. The attribute must be a vtkDataArray.`),-1;if(a&&!t.checkNumberOfComponents(a,c))return Zv(`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[rd.PASSDATA][ju[c]]=!1},t[`copy${a}On`]=()=>{const c=a.toUpperCase();e.copyAttributeFlags[rd.PASSDATA][ju[c]]=!0}}),t.initializeAttributeCopyFlags=()=>{e.copyAttributeFlags=[],Object.keys(rd).filter(a=>a!=="ALLCOPY").forEach(a=>{e.copyAttributeFlags[rd[a]]=Object.keys(ju).filter(s=>s!=="NUM_ATTRIBUTES").reduce((s,c)=>(s[ju[c]]=!0,s),[])}),e.copyAttributeFlags[rd.COPYTUPLE][ju.GLOBALIDS]=!1,e.copyAttributeFlags[rd.INTERPOLATE][ju.GLOBALIDS]=!1,e.copyAttributeFlags[rd.COPYTUPLE][ju.PEDIGREEIDS]=!1},t.initialize=Q.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(Nt.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 Yte={activeScalars:-1,activeVectors:-1,activeTensors:-1,activeNormals:-1,activeTCoords:-1,activeGlobalIds:-1,activePedigreeIds:-1};function kN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Yte,r),Wte.extend(t,e,r),Q.setGet(t,e,["activeScalars","activeNormals","activeTCoords","activeVectors","activeTensors","activeGlobalIds","activePedigreeIds"]),e.arrays||(e.arrays={}),qte(t,e)}const Jte=Q.newInstance(kN,"vtkDataSetAttributes");var P6={newInstance:Jte,extend:kN,...NN};const Zte={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},Qte={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 ene={FieldDataTypes:Zte,FieldAssociations:Qte};const PT=["pointData","cellData","fieldData"];function tne(t,e){e.classHierarchy.push("vtkDataSet"),PT.forEach(n=>{e[n]?e[n]=Sc(e[n]):e[n]=P6.newInstance()});const r=t.shallowCopy;t.shallowCopy=function(n){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;r(n,i),PT.forEach(o=>{e[o]=P6.newInstance(),e[o].shallowCopy(n.getReferenceByName(o))})}}const nne={};function VN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,nne,r),Q.obj(t,e),Q.setGet(t,e,PT),tne(t,e)}const rne=Q.newInstance(VN,"vtkDataSet");var Ag={newInstance:rne,extend:VN,...ene};function ine(t,e){e.classHierarchy.push("vtkPointSet"),e.points?e.points=Sc(e.points):e.points=cg.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=cg.newInstance(),e.points.shallowCopy(n.getPoints())}}const one={};function FN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,one,r),Ag.extend(t,e,r),Q.setGet(t,e,["points"]),ine(t,e)}const ane=Q.newInstance(FN,"vtkPointSet");var sne={newInstance:ane,extend:FN};function z4(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 b5(t,e,r,n){z4(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 cne(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=[];b5(t,e,r,u),b5(n,i,o,d);const h=-En(u,t),g=-En(d,n),p=[En(d,t)+g,En(d,e)+g,En(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=[En(u,n)+h,En(u,i)+h,En(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 y=[t,e,r],m=[n,i,o],w=En(u,d),x=(h-g*w)/(w*w-1),C=(g-h*w)/(w*w-1),S=[x*u[0]+C*d[0],x*u[1]+C*d[1],x*u[2]+C*d[2]],T=Il(u,d,[]);i0(T);let _=0,E=0;const b=[],D=[];let I=50,P=50;for(let B=0;B<3;B++){const j=B,V=(B+1)%3,F=Wr.intersectWithLine(y[j],y[V],n,d);F.intersection&&F.t>0-a&&F.t<1+a&&(F.t<1+a&&F.t>1-a&&(I=_),b[_++]=En(F.x,T)-En(S,T));const G=Wr.intersectWithLine(m[j],m[V],t,u);G.intersection&&G.t>0-a&&G.t<1+a&&(G.t<1+a&&G.t>1-a&&(P=E),D[E++]=En(G.x,T)-En(S,T))}if(_>2){_--;const B=b[2];b[2]=b[I],b[I]=B}if(E>2){E--;const B=D[2];D[2]=D[P],D[P]=B}if(_!==2||E!==2)return{intersect:!1,coplanar:s,pt1:c,pt2:l,surfaceId:f};if(Number.isNaN(b[0])||Number.isNaN(b[1])||Number.isNaN(D[0])||Number.isNaN(D[1]))return{intersect:!1,coplanar:s,pt1:c,pt2:l,surfaceId:f};if(b[0]>b[1]){const B=b[1];b[1]=b[0],b[0]=B}if(D[0]>D[1]){const B=D[1];D[1]=D[0],D[0]=B}let M,L;return b[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(b5(f,u,d,h),h[0]!==0||h[1]!==0||h[2]!==0){const w=Wr.intersectWithLine(r,n,f,h);if(s.betweenPoints=w.betweenPoints,s.t=w.t,o[0]=w.x[0],o[1]=w.x[1],o[2]=w.x[2],!w.intersection)return a[0]=0,a[1]=0,s.intersect=0,s;const x=t.evaluatePosition(o,c,a,g);if(x.evaluation>=0)return x.dist2<=l?(s.intersect=1,s):(s.intersect=x.evaluation,s)}const p=fl(f,u),v=fl(u,d),y=fl(d,f);e.line||(e.line=Ss.newInstance()),p>v&&p>y?(e.line.getPoints().setPoint(0,f),e.line.getPoints().setPoint(1,u)):v>y&&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 w=[],x=[],C=[];for(let S=0;S<3;S++)w[S]=f[S]-d[S],x[S]=u[S]-d[S],C[S]=o[S]-d[S];return a[0]=En(C,w)/y,a[1]=En(C,x)/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 y=0,m=0;const w=[];let x,C,S,T=[];const _=[],E=[],b=[];a.subId=0,i[2]=0,e.points.getPoint(1,l),e.points.getPoint(2,f),e.points.getPoint(0,u),z4(l,f,u,d),Wr.generalizedProjectPoint(r,l,d,b);let D=0;for(s=0;s<3;s++)d[s]<0?h=-d[s]:h=d[s],h>D&&(D=h,m=s);for(c=0,s=0;s<3;s++)s!==m&&(w[c++]=s);for(s=0;s<2;s++)g[s]=b[w[s]]-u[w[s]],p[s]=l[w[s]]-u[w[s]],v[s]=f[w[s]]-u[w[s]];if(y=ui(p,v),y===0)return i[0]=0,i[1]=0,a.evaluation=-1,a;if(i[0]=ui(g,v)/y,i[1]=ui(p,g)/y,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=fl(b,r),n[0]=b[0],n[1]=b[1],n[2]=b[2]),a.evaluation=1;else{let I;if(n){if(o[1]<0&&o[2]<0)for(x=fl(r,u),C=Ss.distanceToLine(r,l,u,I,_),S=Ss.distanceToLine(r,u,f,I,E),x{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 fne={};function UN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,fne,r),_5.extend(t,e,r),une(t,e)}const dne=Q.newInstance(UN,"vtkTriangle");var BN={newInstance:dne,extend:UN,...lne};const VC=["verts","lines","polys","strips"],{vtkWarningMacro:R6}=Q,hne={[Ar.VTK_LINE]:Ss,[Ar.VTK_POLY_LINE]:Ss,[Ar.VTK_TRIANGLE]:BN};function gne(t,e){e.classHierarchy.push("vtkPolyData");function r(i){return i.replace(/(?:^\w|[A-Z]|\b\w)/g,o=>o.toUpperCase()).replace(/\s+/g,"")}VC.forEach(i=>{t[`getNumberOf${r(i)}`]=()=>e[i].getNumberOfCells(),e[i]?e[i]=Sc(e[i]):e[i]=Gf.newInstance()}),t.getNumberOfCells=()=>VC.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),VC.forEach(a=>{e[a]=Gf.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?Ar.VTK_POLY_VERTEX:Ar.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?Ar.VTK_POLY_LINE:Ar.VTK_LINE,g===1&&R6("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]=Ar.VTK_TRIANGLE;break;case 4:f[p]=Ar.VTK_QUAD;break;default:f[p]=Ar.VTK_POLYGON;break}g<3&&R6("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(Ar.VTK_TRIANGLE_STRIP,0,s),e.strips.getCellSizes().forEach((g,p)=>{d[p]=h,h+=g+1})}e.cells=Rte.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=Tte.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 Ar.VTK_VERTEX:case Ar.VTK_POLY_VERTEX:a=e.verts;break;case Ar.VTK_LINE:case Ar.VTK_POLY_LINE:a=e.lines;break;case Ar.VTK_TRIANGLE:case Ar.VTK_QUAD:case Ar.VTK_POLYGON:a=e.polys;break;case Ar.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||hne[a.cellType].newInstance();return s.initialize(t.getPoints(),a.cellPointIds),s}}const pne={};function GN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,pne,r),sne.extend(t,e,r),Q.get(t,e,["cells","links"]),Q.setGet(t,e,["verts","lines","polys","strips"]),gne(t,e)}const mne=Q.newInstance(GN,"vtkPolyData");var Dr={newInstance:mne,extend:GN};const{vtkErrorMacro:vne}=Q;class yne{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){vne("Invalid or missing input");return}const o=Dr.newInstance();o.shallowCopy(i);const a=new yne,s=i.getLines().getData();let c=0;for(;c2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,xne,r),Q.obj(t,e),Q.algo(t,e,1,1),wne(t,e)}const Cne=Q.newInstance(WN,"vtkClosedPolyLineToSurfaceFilter");var Sne={newInstance:Cne,extend:WN};const{vtkErrorMacro:A6}=Ao;function Tne(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!==x){C=!1;break}if(C)continue;const S=[];for(let _=0;_0;if(y[E]>0===b)continue;let I=_,P=E,M=y[P]-y[I];M<=0&&(I=E,P=_,M*=-1);let L=0;M!==0&&(L=(e.cutValue-y[I])/M);const B=w.cell[I],j=w.cell[P];p[0]=s[B*3],p[1]=s[B*3+1],p[2]=s[B*3+2],v[0]=s[j*3],v[1]=s[j*3+1],v[2]=s[j*3+2];const V=[p[0]+L*(v[0]-p[0]),p[1]+L*(v[1]-p[1]),p[2]+L*(v[2]-p[2])];S.push({pointEdge1:B,pointEdge2:j,intersectedPoint:V,newPointID:-1})}for(let _=0;_2&&(u.push(T),S.forEach(_=>{u.push(_.newPointID)}))}o.getPoints().setData(Hw(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){A6("Invalid or missing input");return}if(!e.cutFunction){A6("Missing cut function");return}const s=Dr.newInstance();n(a,s),o[0]=s}}const Ene={cutFunction:null,cutScalars:null,cutValue:0};function $N(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Ene,r),xr(t,e),JE(t,e,1,1),vi(t,e,["cutFunction","cutValue"]),_ne(t,e)}const bne=jn($N,"vtkCutter");var Dne={newInstance:bne,extend:$N};const Cu={ARRAY_BUFFER:0,ELEMENT_ARRAY_BUFFER:1,TEXTURE_BUFFER:2};var zN={ObjectType:Cu};const{ObjectType:Cy}=zN,Ine={};function Mne(t,e){e.classHierarchy.push("vtkOpenGLBufferObject");function r(s){switch(s){case Cy.ELEMENT_ARRAY_BUFFER:return e.context.ELEMENT_ARRAY_BUFFER;case Cy.TEXTURE_BUFFER:if("TEXTURE_BUFFER"in e.context)return e.context.TEXTURE_BUFFER;case Cy.ARRAY_BUFFER:default:return e.context.ARRAY_BUFFER}}let n=null,i=null,o=!0,a="";t.getType=()=>n,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 One={objectType:Cy.ARRAY_BUFFER,context:null,allocatedGPUMemoryInBytes:0};function jN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,One,r),Q.obj(t,e),Q.get(t,e,["_openGLRenderWindow","allocatedGPUMemoryInBytes"]),Q.moveToProtected(t,e,["openGLRenderWindow"]),Mne(t,e)}const Pne=Q.newInstance(jN);var pu={newInstance:Pne,extend:jN,...Ine,...zN};const HN={FLAT:0,GOURAUD:1,PHONG:2},Io={POINTS:0,WIREFRAME:1,SURFACE:2},Rne=HN;var KN={Shading:HN,Representation:Io,Interpolation:Rne};const{vtkErrorMacro:L6}=Q;function Ane(t,e){const r=new Float64Array(3);EL(r,e);const n=new Float64Array(16);return wL(n,Bf(),t,r),n}function Lne(t,e){return t===null||e===null?!1:!(C6(t,[0,0,0])&&C6(e,[1,1,1]))}function Nne(t,e){e.classHierarchy.push("vtkOpenGLCellArrayBufferObject"),t.setType(Cu.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(F=>{F&&(e.customData.push({data:F.getData(),offset:4*e.blockSize,components:F.getNumberOfComponents(),name:F.getName()}),e.blockSize+=F.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=pu.newInstance()),e.colorBO.setOpenGLRenderWindow(e._openGLRenderWindow)):e.colorBO=null,e.stride=4*e.blockSize;let h=0,g=0,p=0,v=0,y=0,m=0,w;const x={anythingToPoints(F,G,X,ne){for(let ue=0;ue2)for(let ue=0;ue2){for(let ue=0;ue1?(F-1)*2:0},polysToWireframe(F,G){return F>2?F*2:0},stripsToWireframe(F,G){return F>2?F*4-6:0},polysToSurface(F,G){return F>2?(F-2)*3:0},stripsToSurface(F,G,X){return F>2?(F-2)*3:0}};let S=null,T=null;i===Io.POINTS||n==="verts"?(S=x.anythingToPoints,T=C.anythingToPoints):i===Io.WIREFRAME||n==="lines"?(S=x[`${n}ToWireframe`],T=C[`${n}ToWireframe`]):(S=x[`${n}ToSurface`],T=C[`${n}ToSurface`]);const _=r.getData(),E=_.length;let b=0;for(let F=0;F0&&(Math.abs(B)/L>1e6||Math.abs(Math.log10(L))>3||L===0&&B>1e6)){const F=new Float64Array(3),G=new Float64Array(3);for(let X=0;X<3;++X){const ne=o.points.getRange(X),ue=ne[1]-ne[0];F[X]=.5*(ne[1]+ne[0]),G[X]=ue>0?1/ue:1}t.setCoordShiftAndScale(F,G)}else e.coordShiftAndScaleEnabled===!0&&t.setCoordShiftAndScale(null,null);if(a)if(!a.points&&!a.cells)a.points=new Int32Array(b),a.cells=new Int32Array(b);else{const F=new Int32Array(b+a.points.length);F.set(a.points),a.points=F;const G=new Int32Array(b+a.cells.length);G.set(a.cells),a.cells=G}let V=o.vertexOffset;w=function(G,X){if(a&&(a.points[V]=G,a.cells[V]=m+o.cellOffset),++V,h=G*3,e.coordShiftAndScaleEnabled?(I[P++]=(s[h++]-e.coordShift[0])*e.coordScale[0],I[P++]=(s[h++]-e.coordShift[1])*e.coordScale[1],I[P++]=(s[h++]-e.coordShift[2])*e.coordScale[2]):(I[P++]=s[h++],I[P++]=s[h++],I[P++]=s[h++]),c!==null&&(o.haveCellNormals?g=(m+o.cellOffset)*3:g=G*3,I[P++]=c[g++],I[P++]=c[g++],I[P++]=c[g++]),e.customData.forEach(ne=>{y=G*ne.components;for(let ue=0;ue{if(r!==null&&(r.constructor!==Float64Array||r.length!==3)){L6("Wrong type for coordShift, expected vec3 or null");return}if(n!==null&&(n.constructor!==Float64Array||n.length!==3)){L6("Wrong type for coordScale, expected vec3 or null");return}(e.coordShift===null||r===null||!TT(r,e.coordShift))&&(e.coordShift=r),(e.coordScale===null||n===null||!TT(n,e.coordScale))&&(e.coordScale=n),e.coordShiftAndScaleEnabled=Lne(e.coordShift,e.coordScale),e.coordShiftAndScaleEnabled?e.inverseShiftAndScaleMatrix=Ane(e.coordShift,e.coordScale):e.inverseShiftAndScaleMatrix=null}}const kne={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 XN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,kne,r),pu.extend(t,e,r),Q.setGet(t,e,["colorBO","elementCount","stride","colorBOStride","vertexOffset","normalOffset","tCoordOffset","tCoordComponents","colorOffset","colorComponents","customData"]),Q.get(t,e,["coordShift","coordScale","coordShiftAndScaleEnabled","inverseShiftAndScaleMatrix"]),Nne(t,e)}const Vne=Q.newInstance(XN);var Fne={newInstance:Vne,extend:XN};const{vtkErrorMacro:Une}=Q;function Bne(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 Une(`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 Gne={shaderType:"Unknown",source:"",error:"",handle:0,dirty:!1,context:null};function qN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Gne,r),Q.obj(t,e),Q.setGet(t,e,["shaderType","source","error","handle","context"]),Bne(t,e)}const Wne=Q.newInstance(qN,"vtkShader");var FC={newInstance:Wne,extend:qN};const{vtkErrorMacro:il}=Q;function $ne(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 zne(t,e){e.classHierarchy.push("vtkShaderProgram"),t.compileShader=()=>e.vertexShader.compile()?e.fragmentShader.compile()?!t.attachShader(e.vertexShader)||!t.attachShader(e.fragmentShader)?(il(e.error),0):t.link()?(t.setCompiled(!0),1):(il(`Links failed: ${e.error}`),0):(il(e.fragmentShader.getSource().split(` -`).map((r,n)=>`${n}: ${r}`).join(` -`)),il(e.fragmentShader.getError()),0):(il(e.vertexShader.getSource().split(` -`).map((r,n)=>`${n}: ${r}`).join(` -`)),il(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 il(`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):(il("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 il("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 jne={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 YN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,jne,r),e.attributesLocs={},e.uniformLocs={},e.vertexShader=FC.newInstance(),e.vertexShader.setShaderType("Vertex"),e.fragmentShader=FC.newInstance(),e.fragmentShader.setShaderType("Fragment"),e.geometryShader=FC.newInstance(),e.geometryShader.setShaderType("Geometry"),Q.obj(t,e),Q.get(t,e,["lastCameraMTime"]),Q.setGet(t,e,["error","handle","compiled","bound","md5Hash","vertexShader","fragmentShader","geometryShader","linked"]),zne(t,e)}const Hne=Q.newInstance(YN,"vtkShaderProgram");var Le={newInstance:Hne,extend:YN,substitute:$ne};function Kne(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()!==Cu.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 Xne={forceEmulation:!1,handleVAO:0,handleProgram:0,supported:!0,buffers:null,context:null};function JN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Xne,r),e.buffers=[],Q.obj(t,e),Q.get(t,e,["supported"]),Q.setGet(t,e,["forceEmulation"]),Kne(t,e)}const qne=Q.newInstance(JN,"vtkOpenGLVertexArrayObject");var j4={newInstance:qne,extend:JN};const Zu={Start:0,Points:0,Lines:1,Tris:2,TriStrips:3,TrisEdges:4,TriStripsEdges:5,End:6};function Yne(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===Io.POINTS||n===Zu.Points?e.context.POINTS:r===Io.WIREFRAME||n===Zu.Lines||n===Zu.TrisEdges||n===Zu.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===Zu.Points||n.getProperty().getRepresentation()===Io.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=Le.substitute(o,"//VTK::PositionVC::Dec",["//VTK::PositionVC::Dec","uniform float pointSize;"]).result,o=Le.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=Le.substitute(o,"//VTK::PositionVC::Dec",["//VTK::PositionVC::Dec","uniform vec2 viewportSize;","uniform float lineWidthStepSize;","uniform float halfLineWidth;"]).result,o=Le.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===Zu.Points?2:e.primitiveType===Zu.Lines?4:6,t.getAllocatedGPUMemoryInBytes=()=>t.getCABO().getAllocatedGPUMemoryInBytes()}const Jne={context:null,program:null,shaderSourceTime:null,VAO:null,attributeUpdateTime:null,CABO:null,primitiveType:0,pointPicking:!1};function ZN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Jne,r),Q.obj(t,e),e.shaderSourceTime={},Q.obj(e.shaderSourceTime),e.attributeUpdateTime={},Q.obj(e.attributeUpdateTime),Q.setGet(t,e,["program","shaderSourceTime","VAO","attributeUpdateTime","CABO","primitiveType","pointPicking"]),e.program=Le.newInstance(),e.VAO=j4.newInstance(),e.CABO=Fne.newInstance(),Yne(t,e)}const Zne=Q.newInstance(ZN);var Ul={newInstance:Zne,extend:ZN,primTypes:Zu};const Qne=t=>t,N6=1e-6;let QN=class{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;this.matrix=Lt(new Float64Array(16)),this.tmp=new Float64Array(3),this.angleConv=e?XZ:Qne}rotateFromDirections(e,r){const n=new Float64Array(3),i=new Float64Array(3),o=new Float64Array(16);tr(n,e[0],e[1],e[2]),tr(i,r[0],r[1],r[2]),en(n,n),en(i,i);const a=pt(n,i);return a>=1?this:(mn(this.tmp,n,i),_i(this.tmp)1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:-1;if(Hm(c4,this.matrix))return this;const i=n===-1?e.length:r+n*3;for(let o=r;o2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ore,r),Q.obj(t,e),Q.setGet(t,e,["xLength","yLength","zLength","generate3DTextureCoordinates","generateFaces","generateLines"]),Q.setGetArray(t,e,["center","rotations"],3),Q.setGetArray(t,e,["matrix"],16),e._polys=Gf.newInstance({values:Uint16Array.from(rre)}),e._lineCells=Gf.newInstance({values:Uint16Array.from(nre)}),Q.moveToProtected(t,e,["polys","lineCells"]),Q.algo(t,e,0,1),ire(t,e)}const are=Q.newInstance(ek,"vtkCubeSource");var tk={newInstance:are,extend:ek};const{vtkErrorMacro:k6}=Q;function sre(t,e){e.classHierarchy.push("vtkImageDataOutlineFilter");const r={...t};t.requestData=(n,i)=>{const o=n[0];if(!o||!o.isA("vtkImageData")){k6("Invalid or missing input");return}const a=o.getSpatialExtent();if(!a){k6("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 cre={};function nk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,cre,r),Q.obj(t,e),Q.algo(t,e,1,1),e._cubeSource=tk.newInstance(),Q.moveToProtected(t,e,["cubeSource","tmpOut"]),sre(t,e)}const lre=Q.newInstance(nk,"vtkImageDataOutlineFilter");var ure={newInstance:lre,extend:nk};const rm={CLAMP_TO_EDGE:0,REPEAT:1,MIRRORED_REPEAT:2},Wt={NEAREST:0,LINEAR:1,NEAREST_MIPMAP_NEAREST:2,NEAREST_MIPMAP_LINEAR:3,LINEAR_MIPMAP_NEAREST:4,LINEAR_MIPMAP_LINEAR:5};var rk={Wrap:rm,Filter:Wt};const ik=new Float32Array(1),fre=new Int32Array(ik.buffer);function dre(t){ik[0]=t;const e=fre[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 hre(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 _d={fromHalf:hre,toHalf:dre};function gre(){try{const n=new Int16Array([0,32767]),i=[1,1],o=document.createElement("canvas");o.width=4,o.height=4;const a=o.getContext("webgl2");if(!a)return!1;const s=a.getExtension("EXT_texture_norm16");if(!s)return!1;const c=`#version 300 es +`+o.stack}return{value:t,source:e,stack:i,digest:null}}function Fx(t,e,r){return{value:t,source:null,stack:r??null,digest:e??null}}function G3(t,e){try{console.error(e.value)}catch(r){setTimeout(function(){throw r})}}var IH=typeof WeakMap=="function"?WeakMap:Map;function HM(t,e,r){r=Zl(-1,r),r.tag=3,r.payload={element:null};var n=e.value;return r.callback=function(){py||(py=!0,J3=n),G3(t,e)},r}function KM(t,e,r){r=Zl(-1,r),r.tag=3;var n=t.type.getDerivedStateFromError;if(typeof n=="function"){var i=e.value;r.payload=function(){return n(i)},r.callback=function(){G3(t,e)}}var o=t.stateNode;return o!==null&&typeof o.componentDidCatch=="function"&&(r.callback=function(){G3(t,e),typeof n!="function"&&(nf===null?nf=new Set([this]):nf.add(this));var a=e.stack;this.componentDidCatch(e.value,{componentStack:a!==null?a:""})}),r}function m6(t,e,r){var n=t.pingCache;if(n===null){n=t.pingCache=new IH;var i=new Set;n.set(e,i)}else i=n.get(e),i===void 0&&(i=new Set,n.set(e,i));i.has(r)||(i.add(r),t=WH.bind(null,t,e,r),e.then(t,t))}function v6(t){do{var e;if((e=t.tag===13)&&(e=t.memoizedState,e=e!==null?e.dehydrated!==null:!0),e)return t;t=t.return}while(t!==null);return null}function y6(t,e,r,n,i){return t.mode&1?(t.flags|=65536,t.lanes=i,t):(t===e?t.flags|=65536:(t.flags|=128,r.flags|=131072,r.flags&=-52805,r.tag===1&&(r.alternate===null?r.tag=17:(e=Zl(-1,1),e.tag=2,tf(r,e,1))),r.lanes|=1),t)}var OH=vu.ReactCurrentOwner,ma=!1;function Qo(t,e,r,n){e.child=t===null?SM(e,null,r,n):Th(e,t.child,r,n)}function w6(t,e,r,n,i){r=r.render;var o=e.ref;return eh(e,i),n=y_(t,e,r,n,o,i),r=w_(),t!==null&&!ma?(e.updateQueue=t.updateQueue,e.flags&=-2053,t.lanes&=~i,au(t,e,i)):(Wr&&r&&a_(e),e.flags|=1,Qo(t,e,n,i),e.child)}function x6(t,e,r,n,i){if(t===null){var o=r.type;return typeof o=="function"&&!O_(o)&&o.defaultProps===void 0&&r.compare===null&&r.defaultProps===void 0?(e.tag=15,e.type=o,qM(t,e,o,n,i)):(t=wv(r.type,null,n,e,e.mode,i),t.ref=e.ref,t.return=e,e.child=t)}if(o=t.child,!(t.lanes&i)){var a=o.memoizedProps;if(r=r.compare,r=r!==null?r:nm,r(a,n)&&t.ref===e.ref)return au(t,e,i)}return e.flags|=1,t=of(o,n),t.ref=e.ref,t.return=e,e.child=t}function qM(t,e,r,n,i){if(t!==null){var o=t.memoizedProps;if(nm(o,n)&&t.ref===e.ref)if(ma=!1,e.pendingProps=n=o,(t.lanes&i)!==0)t.flags&131072&&(ma=!0);else return e.lanes=t.lanes,au(t,e,i)}return W3(t,e,r,n,i)}function XM(t,e,r){var n=e.pendingProps,i=n.children,o=t!==null?t.memoizedState:null;if(n.mode==="hidden")if(!(e.mode&1))e.memoizedState={baseLanes:0,cachePool:null,transitions:null},Er(M0,Ga),Ga|=r;else{if(!(r&1073741824))return t=o!==null?o.baseLanes|r:r,e.lanes=e.childLanes=1073741824,e.memoizedState={baseLanes:t,cachePool:null,transitions:null},e.updateQueue=null,Er(M0,Ga),Ga|=t,null;e.memoizedState={baseLanes:0,cachePool:null,transitions:null},n=o!==null?o.baseLanes:r,Er(M0,Ga),Ga|=n}else o!==null?(n=o.baseLanes|r,e.memoizedState=null):n=r,Er(M0,Ga),Ga|=n;return Qo(t,e,i,r),e.child}function YM(t,e){var r=e.ref;(t===null&&r!==null||t!==null&&t.ref!==r)&&(e.flags|=512,e.flags|=2097152)}function W3(t,e,r,n,i){var o=Ca(r)?Ed:Uo.current;return o=Ch(e,o),eh(e,i),r=y_(t,e,r,n,o,i),n=w_(),t!==null&&!ma?(e.updateQueue=t.updateQueue,e.flags&=-2053,t.lanes&=~i,au(t,e,i)):(Wr&&n&&a_(e),e.flags|=1,Qo(t,e,r,i),e.child)}function C6(t,e,r,n,i){if(Ca(r)){var o=!0;oy(e)}else o=!1;if(eh(e,i),e.stateNode===null)mv(t,e),jM(e,r,n),B3(e,r,n,i),n=!0;else if(t===null){var a=e.stateNode,s=e.memoizedProps;a.props=s;var c=a.context,l=r.contextType;typeof l=="object"&&l!==null?l=_s(l):(l=Ca(r)?Ed:Uo.current,l=Ch(e,l));var f=r.getDerivedStateFromProps,u=typeof f=="function"||typeof a.getSnapshotBeforeUpdate=="function";u||typeof a.UNSAFE_componentWillReceiveProps!="function"&&typeof a.componentWillReceiveProps!="function"||(s!==n||c!==l)&&p6(e,a,n,l),Au=!1;var d=e.memoizedState;a.state=d,uy(e,n,a,i),c=e.memoizedState,s!==n||d!==c||xa.current||Au?(typeof f=="function"&&(U3(e,r,f,n),c=e.memoizedState),(s=Au||g6(e,r,s,n,d,c,l))?(u||typeof a.UNSAFE_componentWillMount!="function"&&typeof a.componentWillMount!="function"||(typeof a.componentWillMount=="function"&&a.componentWillMount(),typeof a.UNSAFE_componentWillMount=="function"&&a.UNSAFE_componentWillMount()),typeof a.componentDidMount=="function"&&(e.flags|=4194308)):(typeof a.componentDidMount=="function"&&(e.flags|=4194308),e.memoizedProps=n,e.memoizedState=c),a.props=n,a.state=c,a.context=l,n=s):(typeof a.componentDidMount=="function"&&(e.flags|=4194308),n=!1)}else{a=e.stateNode,_M(t,e),s=e.memoizedProps,l=e.type===e.elementType?s:ec(e.type,s),a.props=l,u=e.pendingProps,d=a.context,c=r.contextType,typeof c=="object"&&c!==null?c=_s(c):(c=Ca(r)?Ed:Uo.current,c=Ch(e,c));var h=r.getDerivedStateFromProps;(f=typeof h=="function"||typeof a.getSnapshotBeforeUpdate=="function")||typeof a.UNSAFE_componentWillReceiveProps!="function"&&typeof a.componentWillReceiveProps!="function"||(s!==u||d!==c)&&p6(e,a,n,c),Au=!1,d=e.memoizedState,a.state=d,uy(e,n,a,i);var g=e.memoizedState;s!==u||d!==g||xa.current||Au?(typeof h=="function"&&(U3(e,r,h,n),g=e.memoizedState),(l=Au||g6(e,r,l,n,d,g,c)||!1)?(f||typeof a.UNSAFE_componentWillUpdate!="function"&&typeof a.componentWillUpdate!="function"||(typeof a.componentWillUpdate=="function"&&a.componentWillUpdate(n,g,c),typeof a.UNSAFE_componentWillUpdate=="function"&&a.UNSAFE_componentWillUpdate(n,g,c)),typeof a.componentDidUpdate=="function"&&(e.flags|=4),typeof a.getSnapshotBeforeUpdate=="function"&&(e.flags|=1024)):(typeof a.componentDidUpdate!="function"||s===t.memoizedProps&&d===t.memoizedState||(e.flags|=4),typeof a.getSnapshotBeforeUpdate!="function"||s===t.memoizedProps&&d===t.memoizedState||(e.flags|=1024),e.memoizedProps=n,e.memoizedState=g),a.props=n,a.state=g,a.context=c,n=l):(typeof a.componentDidUpdate!="function"||s===t.memoizedProps&&d===t.memoizedState||(e.flags|=4),typeof a.getSnapshotBeforeUpdate!="function"||s===t.memoizedProps&&d===t.memoizedState||(e.flags|=1024),n=!1)}return z3(t,e,r,n,o,i)}function z3(t,e,r,n,i,o){YM(t,e);var a=(e.flags&128)!==0;if(!n&&!a)return i&&a6(e,r,!1),au(t,e,o);n=e.stateNode,OH.current=e;var s=a&&typeof r.getDerivedStateFromError!="function"?null:n.render();return e.flags|=1,t!==null&&a?(e.child=Th(e,t.child,null,o),e.child=Th(e,null,s,o)):Qo(t,e,s,o),e.memoizedState=n.state,i&&a6(e,r,!0),e.child}function JM(t){var e=t.stateNode;e.pendingContext?o6(t,e.pendingContext,e.pendingContext!==e.context):e.context&&o6(t,e.context,!1),g_(t,e.containerInfo)}function S6(t,e,r,n,i){return Sh(),c_(i),e.flags|=256,Qo(t,e,r,n),e.child}var $3={dehydrated:null,treeContext:null,retryLane:0};function j3(t){return{baseLanes:t,cachePool:null,transitions:null}}function ZM(t,e,r){var n=e.pendingProps,i=ei.current,o=!1,a=(e.flags&128)!==0,s;if((s=a)||(s=t!==null&&t.memoizedState===null?!1:(i&2)!==0),s?(o=!0,e.flags&=-129):(t===null||t.memoizedState!==null)&&(i|=1),Er(ei,i&1),t===null)return V3(e),t=e.memoizedState,t!==null&&(t=t.dehydrated,t!==null)?(e.mode&1?t.data==="$!"?e.lanes=8:e.lanes=1073741824:e.lanes=1,null):(a=n.children,t=n.fallback,o?(n=e.mode,o=e.child,a={mode:"hidden",children:a},!(n&1)&&o!==null?(o.childLanes=0,o.pendingProps=a):o=Z5(a,n,0,null),t=md(t,n,r,null),o.return=e,t.return=e,o.sibling=t,e.child=o,e.child.memoizedState=j3(r),e.memoizedState=$3,t):S_(e,a));if(i=t.memoizedState,i!==null&&(s=i.dehydrated,s!==null))return MH(t,e,a,n,s,i,r);if(o){o=n.fallback,a=e.mode,i=t.child,s=i.sibling;var c={mode:"hidden",children:n.children};return!(a&1)&&e.child!==i?(n=e.child,n.childLanes=0,n.pendingProps=c,e.deletions=null):(n=of(i,c),n.subtreeFlags=i.subtreeFlags&14680064),s!==null?o=of(s,o):(o=md(o,a,r,null),o.flags|=2),o.return=e,n.return=e,n.sibling=o,e.child=n,n=o,o=e.child,a=t.child.memoizedState,a=a===null?j3(r):{baseLanes:a.baseLanes|r,cachePool:null,transitions:a.transitions},o.memoizedState=a,o.childLanes=t.childLanes&~r,e.memoizedState=$3,n}return o=t.child,t=o.sibling,n=of(o,{mode:"visible",children:n.children}),!(e.mode&1)&&(n.lanes=r),n.return=e,n.sibling=null,t!==null&&(r=e.deletions,r===null?(e.deletions=[t],e.flags|=16):r.push(t)),e.child=n,e.memoizedState=null,n}function S_(t,e){return e=Z5({mode:"visible",children:e},t.mode,0,null),e.return=t,t.child=e}function t2(t,e,r,n){return n!==null&&c_(n),Th(e,t.child,null,r),t=S_(e,e.pendingProps.children),t.flags|=2,e.memoizedState=null,t}function MH(t,e,r,n,i,o,a){if(r)return e.flags&256?(e.flags&=-257,n=Fx(Error(mt(422))),t2(t,e,a,n)):e.memoizedState!==null?(e.child=t.child,e.flags|=128,null):(o=n.fallback,i=e.mode,n=Z5({mode:"visible",children:n.children},i,0,null),o=md(o,i,a,null),o.flags|=2,n.return=e,o.return=e,n.sibling=o,e.child=n,e.mode&1&&Th(e,t.child,null,a),e.child.memoizedState=j3(a),e.memoizedState=$3,o);if(!(e.mode&1))return t2(t,e,a,null);if(i.data==="$!"){if(n=i.nextSibling&&i.nextSibling.dataset,n)var s=n.dgst;return n=s,o=Error(mt(419)),n=Fx(o,n,void 0),t2(t,e,a,n)}if(s=(a&t.childLanes)!==0,ma||s){if(n=oo,n!==null){switch(a&-a){case 4:i=2;break;case 16:i=8;break;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:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:i=32;break;case 536870912:i=268435456;break;default:i=0}i=i&(n.suspendedLanes|a)?0:i,i!==0&&i!==o.retryLane&&(o.retryLane=i,ou(t,i),pc(n,t,i,-1))}return I_(),n=Fx(Error(mt(421))),t2(t,e,a,n)}return i.data==="$?"?(e.flags|=128,e.child=t.child,e=zH.bind(null,t),i._reactRetry=e,null):(t=o.treeContext,$a=ef(i.nextSibling),Ka=e,Wr=!0,ic=null,t!==null&&(ms[vs++]=jl,ms[vs++]=Hl,ms[vs++]=bd,jl=t.id,Hl=t.overflow,bd=e),e=S_(e,n.children),e.flags|=4096,e)}function T6(t,e,r){t.lanes|=e;var n=t.alternate;n!==null&&(n.lanes|=e),F3(t.return,e,r)}function Ux(t,e,r,n,i){var o=t.memoizedState;o===null?t.memoizedState={isBackwards:e,rendering:null,renderingStartTime:0,last:n,tail:r,tailMode:i}:(o.isBackwards=e,o.rendering=null,o.renderingStartTime=0,o.last=n,o.tail=r,o.tailMode=i)}function QM(t,e,r){var n=e.pendingProps,i=n.revealOrder,o=n.tail;if(Qo(t,e,n.children,r),n=ei.current,n&2)n=n&1|2,e.flags|=128;else{if(t!==null&&t.flags&128)e:for(t=e.child;t!==null;){if(t.tag===13)t.memoizedState!==null&&T6(t,r,e);else if(t.tag===19)T6(t,r,e);else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break e;for(;t.sibling===null;){if(t.return===null||t.return===e)break e;t=t.return}t.sibling.return=t.return,t=t.sibling}n&=1}if(Er(ei,n),!(e.mode&1))e.memoizedState=null;else switch(i){case"forwards":for(r=e.child,i=null;r!==null;)t=r.alternate,t!==null&&fy(t)===null&&(i=r),r=r.sibling;r=i,r===null?(i=e.child,e.child=null):(i=r.sibling,r.sibling=null),Ux(e,!1,i,r,o);break;case"backwards":for(r=null,i=e.child,e.child=null;i!==null;){if(t=i.alternate,t!==null&&fy(t)===null){e.child=i;break}t=i.sibling,i.sibling=r,r=i,i=t}Ux(e,!0,r,null,o);break;case"together":Ux(e,!1,null,null,void 0);break;default:e.memoizedState=null}return e.child}function mv(t,e){!(e.mode&1)&&t!==null&&(t.alternate=null,e.alternate=null,e.flags|=2)}function au(t,e,r){if(t!==null&&(e.dependencies=t.dependencies),Id|=e.lanes,!(r&e.childLanes))return null;if(t!==null&&e.child!==t.child)throw Error(mt(153));if(e.child!==null){for(t=e.child,r=of(t,t.pendingProps),e.child=r,r.return=e;t.sibling!==null;)t=t.sibling,r=r.sibling=of(t,t.pendingProps),r.return=e;r.sibling=null}return e.child}function PH(t,e,r){switch(e.tag){case 3:JM(e),Sh();break;case 5:EM(e);break;case 1:Ca(e.type)&&oy(e);break;case 4:g_(e,e.stateNode.containerInfo);break;case 10:var n=e.type._context,i=e.memoizedProps.value;Er(cy,n._currentValue),n._currentValue=i;break;case 13:if(n=e.memoizedState,n!==null)return n.dehydrated!==null?(Er(ei,ei.current&1),e.flags|=128,null):r&e.child.childLanes?ZM(t,e,r):(Er(ei,ei.current&1),t=au(t,e,r),t!==null?t.sibling:null);Er(ei,ei.current&1);break;case 19:if(n=(r&e.childLanes)!==0,t.flags&128){if(n)return QM(t,e,r);e.flags|=128}if(i=e.memoizedState,i!==null&&(i.rendering=null,i.tail=null,i.lastEffect=null),Er(ei,ei.current),n)break;return null;case 22:case 23:return e.lanes=0,XM(t,e,r)}return au(t,e,r)}var eP,H3,tP,nP;eP=function(t,e){for(var r=e.child;r!==null;){if(r.tag===5||r.tag===6)t.appendChild(r.stateNode);else if(r.tag!==4&&r.child!==null){r.child.return=r,r=r.child;continue}if(r===e)break;for(;r.sibling===null;){if(r.return===null||r.return===e)return;r=r.return}r.sibling.return=r.return,r=r.sibling}};H3=function(){};tP=function(t,e,r,n){var i=t.memoizedProps;if(i!==n){t=e.stateNode,ud(el.current);var o=null;switch(r){case"input":i=g3(t,i),n=g3(t,n),o=[];break;case"select":i=ii({},i,{value:void 0}),n=ii({},n,{value:void 0}),o=[];break;case"textarea":i=v3(t,i),n=v3(t,n),o=[];break;default:typeof i.onClick!="function"&&typeof n.onClick=="function"&&(t.onclick=ry)}w3(r,n);var a;r=null;for(l in i)if(!n.hasOwnProperty(l)&&i.hasOwnProperty(l)&&i[l]!=null)if(l==="style"){var s=i[l];for(a in s)s.hasOwnProperty(a)&&(r||(r={}),r[a]="")}else l!=="dangerouslySetInnerHTML"&&l!=="children"&&l!=="suppressContentEditableWarning"&&l!=="suppressHydrationWarning"&&l!=="autoFocus"&&(Xp.hasOwnProperty(l)?o||(o=[]):(o=o||[]).push(l,null));for(l in n){var c=n[l];if(s=i!=null?i[l]:void 0,n.hasOwnProperty(l)&&c!==s&&(c!=null||s!=null))if(l==="style")if(s){for(a in s)!s.hasOwnProperty(a)||c&&c.hasOwnProperty(a)||(r||(r={}),r[a]="");for(a in c)c.hasOwnProperty(a)&&s[a]!==c[a]&&(r||(r={}),r[a]=c[a])}else r||(o||(o=[]),o.push(l,r)),r=c;else l==="dangerouslySetInnerHTML"?(c=c?c.__html:void 0,s=s?s.__html:void 0,c!=null&&s!==c&&(o=o||[]).push(l,c)):l==="children"?typeof c!="string"&&typeof c!="number"||(o=o||[]).push(l,""+c):l!=="suppressContentEditableWarning"&&l!=="suppressHydrationWarning"&&(Xp.hasOwnProperty(l)?(c!=null&&l==="onScroll"&&Or("scroll",t),o||s===c||(o=[])):(o=o||[]).push(l,c))}r&&(o=o||[]).push("style",r);var l=o;(e.updateQueue=l)&&(e.flags|=4)}};nP=function(t,e,r,n){r!==n&&(e.flags|=4)};function bg(t,e){if(!Wr)switch(t.tailMode){case"hidden":e=t.tail;for(var r=null;e!==null;)e.alternate!==null&&(r=e),e=e.sibling;r===null?t.tail=null:r.sibling=null;break;case"collapsed":r=t.tail;for(var n=null;r!==null;)r.alternate!==null&&(n=r),r=r.sibling;n===null?e||t.tail===null?t.tail=null:t.tail.sibling=null:n.sibling=null}}function Io(t){var e=t.alternate!==null&&t.alternate.child===t.child,r=0,n=0;if(e)for(var i=t.child;i!==null;)r|=i.lanes|i.childLanes,n|=i.subtreeFlags&14680064,n|=i.flags&14680064,i.return=t,i=i.sibling;else for(i=t.child;i!==null;)r|=i.lanes|i.childLanes,n|=i.subtreeFlags,n|=i.flags,i.return=t,i=i.sibling;return t.subtreeFlags|=n,t.childLanes=r,e}function RH(t,e,r){var n=e.pendingProps;switch(s_(e),e.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Io(e),null;case 1:return Ca(e.type)&&iy(),Io(e),null;case 3:return n=e.stateNode,_h(),Lr(xa),Lr(Uo),m_(),n.pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),(t===null||t.child===null)&&(Q1(e)?e.flags|=4:t===null||t.memoizedState.isDehydrated&&!(e.flags&256)||(e.flags|=1024,ic!==null&&(eS(ic),ic=null))),H3(t,e),Io(e),null;case 5:p_(e);var i=ud(sm.current);if(r=e.type,t!==null&&e.stateNode!=null)tP(t,e,r,n,i),t.ref!==e.ref&&(e.flags|=512,e.flags|=2097152);else{if(!n){if(e.stateNode===null)throw Error(mt(166));return Io(e),null}if(t=ud(el.current),Q1(e)){n=e.stateNode,r=e.type;var o=e.memoizedProps;switch(n[Yc]=e,n[om]=o,t=(e.mode&1)!==0,r){case"dialog":Or("cancel",n),Or("close",n);break;case"iframe":case"object":case"embed":Or("load",n);break;case"video":case"audio":for(i=0;i<\/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[Yc]=e,t[om]=n,eP(t,e,!1,!1),e.stateNode=t;e:{switch(a=x3(r,n),r){case"dialog":Or("cancel",t),Or("close",t),i=n;break;case"iframe":case"object":case"embed":Or("load",t),i=n;break;case"video":case"audio":for(i=0;ibh&&(e.flags|=128,n=!0,bg(o,!1),e.lanes=4194304)}else{if(!n)if(t=fy(a),t!==null){if(e.flags|=128,n=!0,r=t.updateQueue,r!==null&&(e.updateQueue=r,e.flags|=4),bg(o,!0),o.tail===null&&o.tailMode==="hidden"&&!a.alternate&&!Wr)return Io(e),null}else 2*wi()-o.renderingStartTime>bh&&r!==1073741824&&(e.flags|=128,n=!0,bg(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=wi(),e.sibling=null,r=ei.current,Er(ei,n?r&1|2:r&1),e):(Io(e),null);case 22:case 23:return D_(),n=e.memoizedState!==null,t!==null&&t.memoizedState!==null!==n&&(e.flags|=8192),n&&e.mode&1?Ga&1073741824&&(Io(e),e.subtreeFlags&6&&(e.flags|=8192)):Io(e),null;case 24:return null;case 25:return null}throw Error(mt(156,e.tag))}function LH(t,e){switch(s_(e),e.tag){case 1:return Ca(e.type)&&iy(),t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 3:return _h(),Lr(xa),Lr(Uo),m_(),t=e.flags,t&65536&&!(t&128)?(e.flags=t&-65537|128,e):null;case 5:return p_(e),null;case 13:if(Lr(ei),t=e.memoizedState,t!==null&&t.dehydrated!==null){if(e.alternate===null)throw Error(mt(340));Sh()}return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 19:return Lr(ei),null;case 4:return _h(),null;case 10:return f_(e.type._context),null;case 22:case 23:return D_(),null;case 24:return null;default:return null}}var n2=!1,No=!1,AH=typeof WeakSet=="function"?WeakSet:Set,At=null;function O0(t,e){var r=t.ref;if(r!==null)if(typeof r=="function")try{r(null)}catch(n){fi(t,e,n)}else r.current=null}function K3(t,e,r){try{r()}catch(n){fi(t,e,n)}}var _6=!1;function NH(t,e){if(M3=ey,t=sM(),o_(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(P3={focusedElem:t,selectionRange:r},ey=!1,At=e;At!==null;)if(e=At,t=e.child,(e.subtreeFlags&1028)!==0&&t!==null)t.return=e,At=t;else for(;At!==null;){e=At;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,y=e.stateNode,m=y.getSnapshotBeforeUpdate(e.elementType===e.type?p:ec(e.type,p),v);y.__reactInternalSnapshotBeforeUpdate=m}break;case 3:var w=e.stateNode.containerInfo;w.nodeType===1?w.textContent="":w.nodeType===9&&w.documentElement&&w.removeChild(w.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(mt(163))}}catch(x){fi(e,e.return,x)}if(t=e.sibling,t!==null){t.return=e.return,At=t;break}At=e.return}return g=_6,_6=!1,g}function xp(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&&K3(e,r,o)}i=i.next}while(i!==n)}}function Y5(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 q3(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 rP(t){var e=t.alternate;e!==null&&(t.alternate=null,rP(e)),t.child=null,t.deletions=null,t.sibling=null,t.tag===5&&(e=t.stateNode,e!==null&&(delete e[Yc],delete e[om],delete e[A3],delete e[vH],delete e[yH])),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 iP(t){return t.tag===5||t.tag===3||t.tag===4}function E6(t){e:for(;;){for(;t.sibling===null;){if(t.return===null||iP(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 X3(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=ry));else if(n!==4&&(t=t.child,t!==null))for(X3(t,e,r),t=t.sibling;t!==null;)X3(t,e,r),t=t.sibling}function Y3(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(Y3(t,e,r),t=t.sibling;t!==null;)Y3(t,e,r),t=t.sibling}var ho=null,nc=!1;function Cu(t,e,r){for(r=r.child;r!==null;)oP(t,e,r),r=r.sibling}function oP(t,e,r){if(Qc&&typeof Qc.onCommitFiberUnmount=="function")try{Qc.onCommitFiberUnmount(W5,r)}catch{}switch(r.tag){case 5:No||O0(r,e);case 6:var n=ho,i=nc;ho=null,Cu(t,e,r),ho=n,nc=i,ho!==null&&(nc?(t=ho,r=r.stateNode,t.nodeType===8?t.parentNode.removeChild(r):t.removeChild(r)):ho.removeChild(r.stateNode));break;case 18:ho!==null&&(nc?(t=ho,r=r.stateNode,t.nodeType===8?Rx(t.parentNode,r):t.nodeType===1&&Rx(t,r),em(t)):Rx(ho,r.stateNode));break;case 4:n=ho,i=nc,ho=r.stateNode.containerInfo,nc=!0,Cu(t,e,r),ho=n,nc=i;break;case 0:case 11:case 14:case 15:if(!No&&(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)&&K3(r,e,a),i=i.next}while(i!==n)}Cu(t,e,r);break;case 1:if(!No&&(O0(r,e),n=r.stateNode,typeof n.componentWillUnmount=="function"))try{n.props=r.memoizedProps,n.state=r.memoizedState,n.componentWillUnmount()}catch(s){fi(r,e,s)}Cu(t,e,r);break;case 21:Cu(t,e,r);break;case 22:r.mode&1?(No=(n=No)||r.memoizedState!==null,Cu(t,e,r),No=n):Cu(t,e,r);break;default:Cu(t,e,r)}}function b6(t){var e=t.updateQueue;if(e!==null){t.updateQueue=null;var r=t.stateNode;r===null&&(r=t.stateNode=new AH),e.forEach(function(n){var i=$H.bind(null,t,n);r.has(n)||(r.add(n),n.then(i,i))})}}function Ks(t,e){var r=e.deletions;if(r!==null)for(var n=0;ni&&(i=a),n&=~o}if(n=i,n=wi()-n,n=(120>n?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*VH(n/1960))-n,10t?16:t,zu===null)var n=!1;else{if(t=zu,zu=null,my=0,Qn&6)throw Error(mt(331));var i=Qn;for(Qn|=4,At=t.current;At!==null;){var o=At,a=o.child;if(At.flags&16){var s=o.deletions;if(s!==null){for(var c=0;cwi()-E_?pd(t,0):__|=r),Sa(t,e)}function hP(t,e){e===0&&(t.mode&1?(e=K1,K1<<=1,!(K1&130023424)&&(K1=4194304)):e=1);var r=na();t=ou(t,e),t!==null&&(Zm(t,e,r),Sa(t,r))}function zH(t){var e=t.memoizedState,r=0;e!==null&&(r=e.retryLane),hP(t,r)}function $H(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(mt(314))}n!==null&&n.delete(e),hP(t,r)}var gP;gP=function(t,e,r){if(t!==null)if(t.memoizedProps!==e.pendingProps||xa.current)ma=!0;else{if(!(t.lanes&r)&&!(e.flags&128))return ma=!1,PH(t,e,r);ma=!!(t.flags&131072)}else ma=!1,Wr&&e.flags&1048576&&yM(e,sy,e.index);switch(e.lanes=0,e.tag){case 2:var n=e.type;mv(t,e),t=e.pendingProps;var i=Ch(e,Uo.current);eh(e,r),i=y_(null,e,n,t,i,r);var o=w_();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,Ca(n)?(o=!0,oy(e)):o=!1,e.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,h_(e),i.updater=X5,e.stateNode=i,i._reactInternals=e,B3(e,n,t,r),e=z3(null,e,n,!0,o,r)):(e.tag=0,Wr&&o&&a_(e),Qo(null,e,i,r),e=e.child),e;case 16:n=e.elementType;e:{switch(mv(t,e),t=e.pendingProps,i=n._init,n=i(n._payload),e.type=n,i=e.tag=HH(n),t=ec(n,t),i){case 0:e=W3(null,e,n,t,r);break e;case 1:e=C6(null,e,n,t,r);break e;case 11:e=w6(null,e,n,t,r);break e;case 14:e=x6(null,e,n,ec(n.type,t),r);break e}throw Error(mt(306,n,""))}return e;case 0:return n=e.type,i=e.pendingProps,i=e.elementType===n?i:ec(n,i),W3(t,e,n,i,r);case 1:return n=e.type,i=e.pendingProps,i=e.elementType===n?i:ec(n,i),C6(t,e,n,i,r);case 3:e:{if(JM(e),t===null)throw Error(mt(387));n=e.pendingProps,o=e.memoizedState,i=o.element,_M(t,e),uy(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=Eh(Error(mt(423)),e),e=S6(t,e,n,r,i);break e}else if(n!==i){i=Eh(Error(mt(424)),e),e=S6(t,e,n,r,i);break e}else for($a=ef(e.stateNode.containerInfo.firstChild),Ka=e,Wr=!0,ic=null,r=SM(e,null,n,r),e.child=r;r;)r.flags=r.flags&-3|4096,r=r.sibling;else{if(Sh(),n===i){e=au(t,e,r);break e}Qo(t,e,n,r)}e=e.child}return e;case 5:return EM(e),t===null&&V3(e),n=e.type,i=e.pendingProps,o=t!==null?t.memoizedProps:null,a=i.children,R3(n,i)?a=null:o!==null&&R3(n,o)&&(e.flags|=32),YM(t,e),Qo(t,e,a,r),e.child;case 6:return t===null&&V3(e),null;case 13:return ZM(t,e,r);case 4:return g_(e,e.stateNode.containerInfo),n=e.pendingProps,t===null?e.child=Th(e,null,n,r):Qo(t,e,n,r),e.child;case 11:return n=e.type,i=e.pendingProps,i=e.elementType===n?i:ec(n,i),w6(t,e,n,i,r);case 7:return Qo(t,e,e.pendingProps,r),e.child;case 8:return Qo(t,e,e.pendingProps.children,r),e.child;case 12:return Qo(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,Er(cy,n._currentValue),n._currentValue=a,o!==null)if(vc(o.value,a)){if(o.children===i.children&&!xa.current){e=au(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=Zl(-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),F3(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(mt(341));a.lanes|=r,s=a.alternate,s!==null&&(s.lanes|=r),F3(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}Qo(t,e,i.children,r),e=e.child}return e;case 9:return i=e.type,n=e.pendingProps.children,eh(e,r),i=_s(i),n=n(i),e.flags|=1,Qo(t,e,n,r),e.child;case 14:return n=e.type,i=ec(n,e.pendingProps),i=ec(n.type,i),x6(t,e,n,i,r);case 15:return qM(t,e,e.type,e.pendingProps,r);case 17:return n=e.type,i=e.pendingProps,i=e.elementType===n?i:ec(n,i),mv(t,e),e.tag=1,Ca(n)?(t=!0,oy(e)):t=!1,eh(e,r),jM(e,n,i),B3(e,n,i,r),z3(null,e,n,!0,t,r);case 19:return QM(t,e,r);case 22:return XM(t,e,r)}throw Error(mt(156,e.tag))};function pP(t,e){return WO(t,e)}function jH(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 Cs(t,e,r,n){return new jH(t,e,r,n)}function O_(t){return t=t.prototype,!(!t||!t.isReactComponent)}function HH(t){if(typeof t=="function")return O_(t)?1:0;if(t!=null){if(t=t.$$typeof,t===qT)return 11;if(t===XT)return 14}return 2}function of(t,e){var r=t.alternate;return r===null?(r=Cs(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 wv(t,e,r,n,i,o){var a=2;if(n=t,typeof t=="function")O_(t)&&(a=1);else if(typeof t=="string")a=5;else e:switch(t){case x0:return md(r.children,i,o,e);case KT:a=8,i|=8;break;case u3:return t=Cs(12,r,e,i|2),t.elementType=u3,t.lanes=o,t;case f3:return t=Cs(13,r,e,i),t.elementType=f3,t.lanes=o,t;case d3:return t=Cs(19,r,e,i),t.elementType=d3,t.lanes=o,t;case EO:return Z5(r,i,o,e);default:if(typeof t=="object"&&t!==null)switch(t.$$typeof){case TO:a=10;break e;case _O:a=9;break e;case qT:a=11;break e;case XT:a=14;break e;case Lu:a=16,n=null;break e}throw Error(mt(130,t==null?t:typeof t,""))}return e=Cs(a,r,e,i),e.elementType=t,e.type=n,e.lanes=o,e}function md(t,e,r,n){return t=Cs(7,t,n,e),t.lanes=r,t}function Z5(t,e,r,n){return t=Cs(22,t,n,e),t.elementType=EO,t.lanes=r,t.stateNode={isHidden:!1},t}function Bx(t,e,r){return t=Cs(6,t,null,e),t.lanes=r,t}function Gx(t,e,r){return e=Cs(4,t.children!==null?t.children:[],t.key,e),e.lanes=r,e.stateNode={containerInfo:t.containerInfo,pendingChildren:null,implementation:t.implementation},e}function KH(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=Cx(0),this.expirationTimes=Cx(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Cx(0),this.identifierPrefix=n,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function M_(t,e,r,n,i,o,a,s,c){return t=new KH(t,e,r,s,c),e===1?(e=1,o===!0&&(e|=8)):e=0,o=Cs(3,null,null,e),t.current=o,o.stateNode=t,o.memoizedState={element:n,isDehydrated:r,cache:null,transitions:null,pendingSuspenseBoundaries:null},h_(o),t}function qH(t,e,r){var n=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(wP)}catch(t){console.error(t)}}wP(),wO.exports=Qa;var QH=wO.exports,xP,A6=QH;xP=A6.createRoot,A6.hydrateRoot;var Xe;(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"})(Xe||(Xe={}));var un;(function(t){t.Interaction="interaction",t.Thumbnail="thumbnail",t.Prefetch="prefetch",t.Compute="compute"})(un||(un={}));var gr;(function(t){t.STACK="stack",t.ORTHOGRAPHIC="orthographic",t.PERSPECTIVE="perspective",t.VOLUME_3D="volume3d",t.VIDEO="video",t.WHOLE_SLIDE="wholeSlide"})(gr||(gr={}));var Kl;(function(t){t[t.NEAREST=0]="NEAREST",t[t.LINEAR=1]="LINEAR",t[t.FAST_LINEAR=2]="FAST_LINEAR"})(Kl||(Kl={}));const xv={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},eK={OFF:0,NORMALIZED:1,RAW:2};var CP={BlendMode:xv,FilterMode:eK};const{BlendMode:Ig}=CP;var tl;(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",t[t.LABELMAP_EDGE_PROJECTION_BLEND=Ig.LABELMAP_EDGE_PROJECTION_BLEND]="LABELMAP_EDGE_PROJECTION_BLEND"})(tl||(tl={}));var Md;(function(t){t.AXIAL="axial",t.CORONAL="coronal",t.SAGITTAL="sagittal",t.ACQUISITION="acquisition"})(Md||(Md={}));var nl;(function(t){t.CONTOUR="CONTOUR",t.SURFACE="SURFACE",t.MESH="MESH"})(nl||(nl={}));var tS;(function(t){t.CLOSED_PLANAR="CLOSED_PLANAR",t.OPEN_PLANAR="OPEN_PLANAR"})(tS||(tS={}));const tK=tS;var ja;(function(t){t.PLY="PLY",t.STL="STL",t.OBJ="OBJ",t.VTP="VTP"})(ja||(ja={}));var po;(function(t){t.LINEAR="LINEAR",t.SAMPLED_SIGMOID="SIGMOID",t.LINEAR_EXACT="LINEAR_EXACT"})(po||(po={}));var nS;(function(t){t.SUM="SUM",t.AVERAGE="AVERAGE",t.SUBTRACT="SUBTRACT"})(nS||(nS={}));const nK=nS;var oc;(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"})(oc||(oc={}));var Ao;(function(t){t.NO_DATA="noData",t.LOADING="loading",t.PRE_RENDER="preRender",t.RESIZE="resize",t.RENDERED="rendered"})(Ao||(Ao={}));var va;(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"})(va||(va={}));var dm;(function(t){t.FRAME="f",t.SECOND="s"})(dm||(dm={}));const rK=Object.freeze(Object.defineProperty({__proto__:null,get SpeedUnit(){return dm}},Symbol.toStringTag,{value:"Module"}));var ta;(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"})(ta||(ta={}));var nh;(function(t){t.SUM="SUM",t.SUBTRACT="SUBTRACT",t.AVERAGE="AVERAGE"})(nh||(nh={}));var wy;(function(t){t.RLE="RLE",t.Volume="Volume"})(wy||(wy={}));const ts=Object.freeze(Object.defineProperty({__proto__:null,BlendModes:tl,CalibrationTypes:oc,ContourType:tK,DynamicOperatorType:nK,Events:Xe,get GenerateImageType(){return nh},GeometryType:nl,ImageQualityStatus:va,InterpolationType:Kl,MeshType:ja,MetadataModules:ta,OrientationAxis:Md,RequestType:un,VOILUTFunctionType:po,VideoEnums:rK,ViewportStatus:Ao,ViewportType:gr,VoxelManagerEnum:wy},Symbol.toStringTag,{value:"Module"})),rS={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]]}}},Zr={MINIMUM_SLAB_THICKNESS:.05,MAXIMUM_RAY_DISTANCE:1e6};Object.freeze(Zr);const Ya=.001;function SP(t){const e=Object.getOwnPropertyNames(t);for(const r of e){const n=t[r];n&&typeof n=="object"&&SP(n)}return Object.freeze(t)}const iK={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]}},$u=SP(iK),TP=[{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"}],oK={slicer3D:[160/255,164/255,217/255]},Of=Object.freeze(Object.defineProperty({__proto__:null,BACKGROUND_COLORS:oK,CPU_COLORMAPS:rS,EPSILON:Ya,MPR_CAMERA_VALUES:$u,RENDERING_DEFAULTS:Zr,VIEWPORT_PRESETS:TP},Symbol.toStringTag,{value:"Module"})),Og={},hm={get:t=>Og[t],set:t=>{const e=t.id;Og[e]=t},delete:t=>delete Og[t],getAll:()=>{const e=Object.keys(Og).map(r=>Og[r]);return e.sort((r,n)=>r.id[0]==="_"&&n.id[0]!=="_"?1:r.id[0]!=="_"&&n.id[0]==="_"?-1:0),e}};class aK{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 nt(t=He,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 sK=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 A_=yl(sK);var N6=Object.prototype.toString,_P=function(e){var r=N6.call(e),n=r==="[object Arguments]";return n||(n=r!=="[object Array]"&&e!==null&&typeof e=="object"&&typeof e.length=="number"&&e.length>=0&&N6.call(e.callee)==="[object Function]"),n},Wx,k6;function cK(){if(k6)return Wx;k6=1;var t;if(!Object.keys){var e=Object.prototype.hasOwnProperty,r=Object.prototype.toString,n=_P,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),y=g&&r.call(h)==="[object String]",m=[];if(!g&&!p&&!v)throw new TypeError("Object.keys called on a non-object");var w=a&&p;if(y&&h.length>0&&!e.call(h,0))for(var x=0;x0)for(var C=0;C3&&typeof arguments[3]!="boolean"&&arguments[3]!==null)throw new t0("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!="boolean"&&arguments[4]!==null)throw new t0("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!="boolean"&&arguments[5]!==null)throw new t0("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!="boolean")throw new t0("`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=!!B6&&B6(e,r);if(U6)U6(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 mK("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")},iS=EP,bP=function(){return!!iS};bP.hasArrayLengthDefineBug=function(){if(!iS)return null;try{return iS([],"length",{value:1}).length!==1}catch{return!0}};var yK=bP,wK=fK,xK=typeof Symbol=="function"&&typeof Symbol("foo")=="symbol",CK=Object.prototype.toString,SK=Array.prototype.concat,G6=vK,TK=function(t){return typeof t=="function"&&CK.call(t)==="[object Function]"},DP=yK(),_K=function(t,e,r,n){if(e in t){if(n===!0){if(t[e]===r)return}else if(!TK(n)||!n())return}DP?G6(t,e,r,!0):G6(t,e,r)},IP=function(t,e){var r=arguments.length>2?arguments[2]:{},n=wK(e);xK&&(n=SK.call(n,Object.getOwnPropertySymbols(e)));for(var i=0;inull};function uc(t){if(t==null||t.isA)return t;if(!t.vtkClass)return ac.console&&ac.console.error&&ac.console.error("Invalid VTK object"),null;const e=AP[t.vtkClass];if(!e)return ac.console&&ac.console.error&&ac.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]=uc(r[i]))});const n=e(r);return n&&n.modified&&n.modified(),n}function NK(t,e){AP[t]=e}uc.register=NK;class zx extends Array{push(){for(let e=0;e{kP[t]=ed});ac.console=console.hasOwnProperty("log")?console:kP;const hf={debug:ed,error:ac.console.error||ed,info:ac.console.info||ed,log:ac.console.log||ed,warn:ac.console.warn||ed};function VP(t,e){hf[t]&&(hf[t]=e||ed)}function FP(){hf.log(...arguments)}function UP(){hf.info(...arguments)}function xy(){hf.debug(...arguments)}function bn(){hf.error(...arguments)}function rw(){hf.warn(...arguments)}const W6={};function BP(t){W6[t]||(hf.error(t),W6[t]=!0)}const Bo=Object.create(null);Bo.Float32Array=Float32Array;Bo.Float64Array=Float64Array;Bo.Uint8Array=Uint8Array;Bo.Int8Array=Int8Array;Bo.Uint16Array=Uint16Array;Bo.Int16Array=Int16Array;Bo.Uint32Array=Uint32Array;Bo.Int32Array=Int32Array;Bo.Uint8ClampedArray=Uint8ClampedArray;try{Bo.BigInt64Array=BigInt64Array,Bo.BigUint64Array=BigUint64Array}catch{}function qh(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 zP(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 $P(t){Object.keys(t).forEach(e=>{Array.isArray(t[e])&&(t[e]=[].concat(t[e]))})}function FK(t){return Object.values(Bo).some(e=>t instanceof e)}function UK(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 jP(t){return t&&t.isA?t.getState():t}function N_(t){setTimeout(t,0)}function HP(t,e){const r=performance.now();t.finally(()=>{const n=performance.now()-r;e(n)})}function pr(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};$P(e);const r=[];if(Number.isInteger(e.mtime)||(e.mtime=++oS),!("classHierarchy"in e))e.classHierarchy=new zx("vtkObject");else if(!(e.classHierarchy instanceof zx)){const o=new zx;for(let a=0;a!!e.deleted,t.modified=o=>{if(e.deleted){bn("instance deleted - cannot call any method");return}o&&oa&&a(t)))},t.onModified=o=>{if(e.deleted)return bn("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${ow(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&&rw(`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(jP):FK(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&&xy(`add ${f} in shallowCopy`):c.splice(u,1),e[f]=s[f]}),c.length&&a&&xy(`Untouched keys: ${c.join(", ")}`),t.modified()},t.toJSON=function(){return t.getState()},t}const GK={object(t,e,r){return function(){return{...e[r.name]}}}};function Wo(t,e,r){r.forEach(n=>{if(typeof n=="object"){const i=GK[n.type];i?t[`get${di(n.name)}`]=i(t,e,n):t[`get${di(n.name)}`]=()=>e[n.name]}else t[`get${di(n)}`]=()=>e[n]})}const KP={enum(t,e,r){const n=`_on${di(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 bn(`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 bn(`Set Enum outside numeric range ${r}, ${i}`),new RangeError("Set Enum outside numeric range")}return!1}throw bn(`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&&rw('Setter of type "object" with a single "param" field is not supported');const n=`_on${di(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],!A_(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 z6(t){if(typeof t=="object"){const e=KP[t.type];if(e)return(r,n)=>e(r,n,t);throw bn(`No setter for field ${t}`),new TypeError("No setter for field")}return function(r,n){const i=`_on${di(t)}Changed`;return function(a){var s;if(n.deleted)return bn("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 n1(t,e,r){r.forEach(n=>{typeof n=="object"?t[`set${di(n.name)}`]=z6(n)(t,e):t[`set${di(n)}`]=z6(n)(t,e)})}function si(t,e,r){Wo(t,e,r),n1(t,e,r)}function Xh(t,e,r){r.forEach(n=>{t[`get${di(n)}`]=()=>e[n]?Array.from(e[n]):e[n],t[`get${di(n)}ByReference`]=()=>e[n]})}function k_(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${di(o)}Changed`;t[`set${di(o)}`]=function(){var h;if(e.deleted)return bn("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 V_(t,e,r,n){let i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:void 0;Xh(t,e,r),k_(t,e,r,n,i)}function r1(t,e,r){for(let n=0;n1&&arguments[1]!==void 0?arguments[1]:0;if(e.deleted){bn("instance deleted - cannot call any method");return}if(g>=e.numberOfInputs){bn(`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){bn("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()",bn(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){bn("instance deleted - cannot call any method");return}a(h,c())}function f(h){if(e.deleted){bn("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?(bn("instance deleted - cannot call any method"),null):(t.shouldUpdate()&&t.update(),e.output[h])}t.shouldUpdate=()=>{var v,y;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)===U_)break}}}t[`invoke${di(r)}`]=c,t[`on${di(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 bn("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 Wn(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&&uc.register(e,r),r}function i1(){for(var t=arguments.length,e=new Array(t),r=0;r!!a).map(a=>a(...i))}}function G_(t){return t&&t.isA&&t.isA("vtkObject")}function Cy(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:[];if(G_(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=>{Cy(c,e,r,n)}):Cy(s,e,r,n)})}return r}function qP(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 XP(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 WK=1;const o2="__root__";function YP(t,e){W_(t,e);const r=t.delete;e.proxyId=`${WK++}`,e.ui=JSON.parse(JSON.stringify(e.ui||[])),Wo(t,e,["proxyId","proxyGroup","proxyName"]),si(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,o2),t.modified()};function a(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:o2;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${di(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(x){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===x?T=E:S.push(E)}if(!T)return null;const _=T.instance[`get${di(T.propertyName)}`]();if(!UK(_,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(x,C){const S=[];for(h=d.length;h--;){const T=d[h];T.instance===x&&(T.propertyName===C||C===void 0)&&(T.subscription.unsubscribe(),S.push(h))}for(;S.length;)d.splice(S.pop(),1)}function y(x,C){let S=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;const T=x.onModified(p),_=d[0];return d.push({instance:x,propertyName:C,subscription:T}),S&&(e.propertyLinkMap[l].persistent&&e.propertyLinkMap[l].value!==void 0?x.set({[C]:e.propertyLinkMap[l].value}):_&&p(_.instance,!0)),{unsubscribe:()=>v(x,C)}}function m(){for(;d.length;)d.pop().subscription.unsubscribe()}const w={bind:y,unbind:v,unsubscribe:m,persistent:f};return e.propertyLinkMap[l]=w,w};function s(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:o2;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 ZP(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${di(s)}`]=l=>{if(l!==e[s]){e[s]=l;const f=c[l];i(f),t.modified()}}}o.length&&Wo(t,e,o)}const $6=10,j6=40,H6=800;function QP(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*$6,i=r*$6,"deltaY"in t&&(i=t.deltaY),"deltaX"in t&&(n=t.deltaX),(n||i)&&t.deltaMode&&(t.deltaMode===1?(n*=j6,i*=j6):(n*=H6,i*=H6)),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 Q={algo:F_,capitalize:ow,chain:i1,debounce:qP,enumToString:BK,event:B_,EVENT_ABORT:U_,formatBytesToProperUnit:WP,formatNumbersWithThousandSeparator:zP,get:Wo,getArray:Xh,getCurrentGlobalMTime:kK,getStateArrayMapFunc:jP,isVtkObject:G_,keystore:W_,measurePromiseExecution:HP,moveToProtected:r1,newInstance:Wn,newTypedArray:qh,newTypedArrayFrom:iw,normalizeWheel:QP,obj:pr,proxy:YP,proxyPropertyMapping:JP,proxyPropertyState:ZP,safeArrays:$P,set:n1,setArray:k_,setGet:si,setGetArray:V_,setImmediate:N_,setLoggerFunction:VP,throttle:XP,traverseInstanceTree:Cy,TYPED_ARRAYS:Bo,uncapitalize:GP,VOID:NP,vtkDebugMacro:xy,vtkErrorMacro:bn,vtkInfoMacro:UP,vtkLogMacro:FP,vtkOnceErrorMacro:BP,vtkWarningMacro:rw,objectSetterMap:KP},xo=Object.freeze({__proto__:null,VOID:NP,setLoggerFunction:VP,vtkLogMacro:FP,vtkInfoMacro:UP,vtkDebugMacro:xy,vtkErrorMacro:bn,vtkWarningMacro:rw,vtkOnceErrorMacro:BP,TYPED_ARRAYS:Bo,newTypedArray:qh,newTypedArrayFrom:iw,capitalize:ow,_capitalize:di,uncapitalize:GP,formatBytesToProperUnit:WP,formatNumbersWithThousandSeparator:zP,setImmediateVTK:N_,measurePromiseExecution:HP,obj:pr,get:Wo,set:n1,setGet:si,getArray:Xh,setArray:k_,setGetArray:V_,moveToProtected:r1,algo:F_,EVENT_ABORT:U_,event:B_,newInstance:Wn,chain:i1,isVtkObject:G_,traverseInstanceTree:Cy,debounce:qP,throttle:XP,keystore:W_,proxy:YP,proxyPropertyMapping:JP,proxyPropertyState:ZP,normalizeWheel:QP,default:Q});const eR={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},gn={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"},zK=gn.FLOAT;var tR={DefaultDataType:zK,DataTypeByteSize:eR,VtkDataTypes:gn};const $K="WebGL",Sy=Object.create(null);function nR(t,e){Sy[t]=e}function jK(){return Object.keys(Sy)}function rR(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Sy[t]&&Sy[t](e)}function HK(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 rR(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 Q.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 KK={defaultViewAPI:$K,renderers:[],views:[],interactor:null,neverRendered:!0,numberOfLayers:1,childRenderWindows:[]};function iR(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,KK,r),Q.obj(t,e),Q.setGet(t,e,["interactor","numberOfLayers","_views","defaultViewAPI"]),Q.get(t,e,["neverRendered"]),Q.getArray(t,e,["renderers","childRenderWindows"]),Q.moveToProtected(t,e,["views"]),Q.event(t,e,"completion"),HK(t,e)}const qK=Q.newInstance(iR,"vtkRenderWindow");var XK={newInstance:qK,extend:iR,registerViewConstructor:nR,listViewAPIs:jK,newAPISpecificView:rR};const gm={CLAMP_TO_EDGE:0,REPEAT:1,MIRRORED_REPEAT:2},Ft={NEAREST:0,LINEAR:1,NEAREST_MIPMAP_NEAREST:2,NEAREST_MIPMAP_LINEAR:3,LINEAR_MIPMAP_NEAREST:4,LINEAR_MIPMAP_LINEAR:5};var oR={Wrap:gm,Filter:Ft};const aR=new Float32Array(1),YK=new Int32Array(aR.buffer);function JK(t){aR[0]=t;const e=YK[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 ZK(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 td={fromHalf:ZK,toHalf:JK},z_={exports:{}};z_.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})(zi,t)})(z_);var QK=z_.exports,$_={exports:{}};$_.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})(zi,t)})($_);var eq=$_.exports,j_={exports:{}};j_.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})(zi,t)})(j_);var tq=j_.exports,H_={exports:{}};H_.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})(zi,t)})(H_);var nq=H_.exports,K_={exports:{}};K_.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,y=[],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=y[p&127]^=h+v,g=d==0?g+1:0);for(g>=128&&(y[(u&&u.length||0)&127]=-1),g=127,p=4*128;p>0;--p)h=y[g+34&127],d=y[g=g+1&127],h^=h<<13,d^=d<<17,h^=h>>>15,d^=d>>>12,y[g]=h^d;f.w=v,f.X=y,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})(zi,t)})(K_);var rq=K_.exports,q_={exports:{}};q_.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})(zi,t)})(q_);var iq=q_.exports,sR={exports:{}};const oq={},aq=Object.freeze(Object.defineProperty({__proto__:null,default:oq},Symbol.toStringTag,{value:"Module"})),ll=D$(aq);(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(x,C,S){var T=[];C=C==!0?{entropy:!0}:C||{};var _=y(v(C.entropy?[x,w(r)]:x??m(),3),T),E=new g(T),b=function(){for(var D=E.g(o),O=c,L=0;D=f;)D/=2,O/=2,L>>>=1;return(D+L)/O};return b.int32=function(){return E.g(4)|0},b.quick=function(){return E.g(4)/4294967296},b.double=b,y(w(E.S),r),(C.pass||S||function(D,O,L,P){return P&&(P.S&&p(P,E),D.state=function(){return p(E,{})}),L?(n[s]=D,O):D})(b,_,"global"in C?C.global:this==n,C.state)}function g(x){var C,S=x.length,T=this,_=0,E=T.i=T.j=0,b=T.S=[];for(S||(x=[S++]);_cR(`vtkMath::${t} - NOT IMPLEMENTED`)}function Tp(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 yq(t,e){return e>1023?t*2**1023*2**(e-1023):e<-1074?t*2**-1074*2**(e+1074):t*2**e}function Jr(t){return t/180*Math.PI}function Ty(t){return t*180/Math.PI}const{round:Qg,floor:Z_,ceil:wq,min:xq,max:Cq}=Math;function Sq(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 Lq=o1("gaussian");function _y(t,e,r){return r[0]=t[0]+e[0],r[1]=t[1]+e[1],r[2]=t[2]+e[2],r}function Ql(t,e,r){return r[0]=t[0]-e[0],r[1]=t[1]-e[1],r[2]=t[2]-e[2],r}function uR(t,e){return t[0]*=e,t[1]*=e,t[2]*=e,t}function fR(t,e){return t[0]*=e,t[1]*=e,t}function aS(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 Aq(t,e,r,n){return n[0]=t[0]+e[0]*r,n[1]=t[1]+e[1]*r,n}function yn(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function Nq(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 ul(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 ju(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 Vq(t,e,r){const n=yn(e,e);if(n===0)return r[0]=0,r[1]=0,r[2]=0,!1;const i=yn(t,e)/n;for(let o=0;o<3;o++)r[o]=e[o];return uR(r,i),!0}function sS(t,e){return t[0]*e[0]+t[1]*e[1]}function Fq(t,e,r){const n=sS(e,e);if(n===0)return r[0]=0,r[1]=0,!1;const i=sS(t,e)/n;for(let o=0;o<2;o++)r[o]=e[o];return fR(r,i),!0}function Kc(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 Uq(t,e){const r=[0,0,0];return ul(t,e,r),Math.atan2(ju(r),yn(t,e))}function Bq(t,e,r){const n=Math.abs(t-r);return 1/Math.sqrt(2*Math.PI*e)*Math.exp(-(n**2)/(2*e))}function Gq(t,e,r){const n=Math.abs(t-r);return Math.exp(-(n**2)/(2*e))}function Wq(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 dR(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function hR(t){const e=dR(t);return e!==0&&(t[0]/=e,t[1]/=e),e}function Qr(){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&&(Tp(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,Tp(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 $q(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 jq(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=+Qr(s,f,c,u),h=-Qr(a,l,c,u),g=+Qr(a,l,s,f),p=-Qr(i,f,o,u),v=+Qr(n,l,o,u),y=-Qr(n,l,i,f),m=+Qr(i,s,o,c),w=-Qr(n,a,o,c),x=+Qr(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]+w*e[2],_=g*e[0]+y*e[1]+x*e[2];r[0]=S/C,r[1]=T/C,r[2]=_/C}function Ev(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 cS(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 Hq(t,e,r,n,i,o,a){n!==i&&cR("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]:Y_;if(t.length!==e.length)return!1;function n(i,o){return Math.abs(i-e[o])<=r}return t.every(n)}const a1=gR;function pR(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 mR(t,e){for(let r=0;r1&&arguments[1]!==void 0?arguments[1]:Y_;return a1(t,X_,e)}function Xq(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Y_;return a1(t,mq,e)}function vR(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 bv(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 lS(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]=bv(t[0],r),e[1]=bv(t[1],r),e[2]=bv(t[2],r),e}function s1(t,e,r,n){let i,o,a,s,c,l,f,u,d,h,g,p,v,y,m,w;const x=Tr(e),C=Tr(e),S=(_,E,b)=>{y=_[E],v=_[b],_[E]=y-p*(v+y*h),_[b]=v+p*(y-v*h)};for(mR(e,n),c=0;c3&&Math.abs(r[c])+y===Math.abs(r[c])&&Math.abs(r[s])+y===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)+y===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=K6)return Pd("vtkMath::Jacobi: Error extracting eigenfunctions"),0;for(o=0;o=w||Math.abs(r[i]-w)>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&&(Zg(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,Zg(e,3,1,2)),n[2]=2;let f=0;if(aw(e)<0){f=1;for(let d=0;d<9;d++)e[d]=-e[d]}const u=Tr(4);if(yR(e,u),vR(u,e),f)for(let d=0;d<9;d++)e[d]=-e[d];n[1]!==1&&Zg(e,3,n[1],1),n[0]!==0&&Zg(e,3,n[0],0)}function xR(t,e,r){let n,i,o,a,s,c;const l=[...t];if(s1(l,3,e,r),e[0]===e[1]&&e[0]===e[2]){pR(r);return}for(rh(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,Tp(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=ul([r[a*3],r[a*3+1],r[a*3+2]],[r[i*3],r[i*3+1],r[i*3+2]],[]);Rd(f);const u=ul(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];rh(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,Tp(r,3,a,0)}if(Math.abs(r[4])a&&(a=f);if(a===0)return Pd("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||Tr(r),a=i||Tr(r);if(Q_(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(tJ_&&(c=0,s[d]=0);if(c&&i===1)return Pd("Detected homogeneous system (Y=0), calling SolveHomogeneousLeastSquares()"),uS(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 tp(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 nd(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 TR(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 _R(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 ER(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 bR(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 fd(t,e){const r=[0,0,0];bR(t,r),_R(r,e)}function Ey(t,e){const r=[0,0,0];TR(t,r),ER(r,e)}function Yh(t){return t[0]=1,t[1]=-1,t[2]=1,t[3]=-1,t[4]=1,t[5]=-1,t}function Dv(t){return!(t[1]-t[0]<0)}function nX(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 fc(t,e,r){return tr?r:t}function fS(t,e,r){let n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:[0,0,0];return n[0]=fc(t[0],e[0],r[0]),n[1]=fc(t[1],e[1],r[1]),n[2]=fc(t[2],e[2],r[2]),n}function rX(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 iX=o1("GetScalarTypeFittingRange"),oX=o1("GetAdjustedScalarRange");function aX(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 sX(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 cX(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 lX(t,e,r,n){const i=Tr(3),o=Tr(3),a=Tr(3),s=Tr(3),c=Tr(3),l=Tr(3);for(let x=0;x<3;++x)i[x]=t[x]-e[x],o[x]=e[x]-r[x],a[x]=r[x]-t[x],s[x]=-i[x],c[x]=-o[x],l[x]=-a[x];const f=ju(s),u=ju(c),d=ju(a),h=Tr(3);ul(i,o,h);const g=ju(h),p=f*u*d/(2*g),v=2*g*g,y=u*u*yn(i,l)/v,m=d*d*yn(s,o)/v,w=f*f*yn(a,c)/v;for(let x=0;x<3;++x)n[x]=y*t[x]+m*e[x]+w*r[x];return p}const uX=1/0,fX=-1/0,DR=t=>!Number.isFinite(t),{isFinite:dX,isNaN:dS}=Number,by=dS;function gf(){return[].concat([Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE])}function hX(t){let e=-1,r=-1;for(let n=0;ne&&(r=n,e=i)}return r}function IR(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 gX(t){return`${arguments.length>1&&arguments[1]!==void 0?arguments[1]:"#"}${t.map(OR).join("")}`}function a2(t){return Math.round(t*255)}function pX(t){return t.length===3?`rgb(${t.map(a2).join(", ")})`:`rgba(${a2(t[0]||0)}, ${a2(t[1]||0)}, ${a2(t[2]||0)}, ${t[3]||0})`}var Yt={Pi:vq,ldexp:yq,radiansFromDegrees:Jr,degreesFromRadians:Ty,round:Qg,floor:Z_,ceil:wq,ceilLog2:Eq,min:xq,max:Cq,arrayMin:Sq,arrayMax:Tq,arrayRange:_q,isPowerOfTwo:ep,nearestPowerOfTwo:ys,factorial:bq,binomial:Dq,beginCombination:Iq,nextCombination:Oq,randomSeed:Mq,getSeed:Pq,random:Rq,gaussian:Lq,add:_y,subtract:Ql,multiplyScalar:uR,multiplyScalar2D:fR,multiplyAccumulate:aS,multiplyAccumulate2D:Aq,dot:yn,outer:Nq,cross:ul,norm:ju,normalize:Rd,perpendiculars:kq,projectVector:Vq,projectVector2D:Fq,distance2BetweenPoints:Kc,angleBetweenVectors:Uq,gaussianAmplitude:Bq,gaussianWeight:Gq,dot2D:sS,outer2D:Wq,norm2D:dR,normalize2D:hR,determinant2x2:Qr,LUFactor3x3:zq,LUSolve3x3:$q,linearSolve3x3:jq,multiply3x3_vect3:Ev,multiply3x3_mat3:cS,multiplyMatrix:Hq,transpose3x3:rh,invert3x3:Kq,identity3x3:pR,identity:mR,isIdentity:qq,isIdentity3x3:Xq,determinant3x3:aw,quaternionToMatrix3x3:vR,areEquals:gR,areMatricesEqual:a1,roundNumber:bv,roundVector:lS,matrix3x3ToQuaternion:yR,multiplyQuaternion:Yq,orthogonalize3x3:wR,diagonalize3x3:xR,singularValueDecomposition3x3:Jq,solveLinearSystem:CR,invertMatrix:SR,luFactorLinearSystem:Q_,luSolveLinearSystem:e4,estimateMatrixCondition:Zq,jacobi:Qq,jacobiN:s1,solveHomogeneousLeastSquares:uS,solveLeastSquares:eX,hex2float:tX,rgb2hsv:tp,hsv2rgb:nd,lab2xyz:TR,xyz2lab:_R,xyz2rgb:ER,rgb2xyz:bR,rgb2lab:fd,lab2rgb:Ey,uninitializeBounds:Yh,areBoundsInitialized:Dv,computeBoundsFromPoints:nX,clampValue:fc,clampVector:fS,clampAndNormalizeValue:rX,getScalarTypeFittingRange:iX,getAdjustedScalarRange:oX,extentIsWithinOtherExtent:aX,boundsIsWithinOtherBounds:sX,pointIsWithinBounds:cX,solve3PointCircle:lX,inf:uX,negInf:fX,isInf:DR,isNan:dS,isNaN:dS,isFinite:dX,createUninitializedBounds:gf,getMajorAxisIndex:hX,getSparseOrthogonalMatrix:IR,floatToHex2:OR,floatRGB2HexCode:gX,float2CssRGBA:pX};const{vtkErrorMacro:mX}=xo,{DefaultDataType:vX}=tR,yX=1e-6;function hS(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 wX(){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 t4(t){return Object.prototype.toString.call(t).slice(8,-1)}function xX(t){const e=t.getNumberOfComponents();let r=0;const n=new Array(e);for(let i=0;ir&&(r=o)}return r}const CX={computeRange:MR,createRangeHelper:wX,fastComputeRange:hS,getDataType:t4,getMaxNorm:xX};function SX(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=qh(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=q6(e.ranges,e.numberOfComponents)),o=e.ranges[i],o?(e.rangeTuple[0]=o.min,e.rangeTuple[1]=o.max,e.rangeTuple):(o=MR(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=q6(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.getRanges=function(){if(!(arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0))return structuredClone(e.ranges);const i=[];for(let o=0;o1){const[o,a]=t.getRange(-1),s={min:o,max:a};i.push(s)}return i},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]:yX;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=()=>RR({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=t4(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),e.ranges=structuredClone(n.getRanges()),(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())&&mX("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,TX,r),Array.isArray(r.values)&&r.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=iw(e.dataType,e.values)):e.values=qh(e.dataType,e.size),e.values&&(e.size=e.size??e.values.length,e.dataType=t4(e.values)),pr(t,e),n1(t,e,["name","numberOfComponents"]),e.size%e.numberOfComponents!==0)throw new RangeError("model.size is not a multiple of model.numberOfComponents");SX(t,e)}const RR=Wn(PR,"vtkDataArray");var Ot={newInstance:RR,extend:PR,...CX,...tR};const{vtkErrorMacro:_X}=Q,EX=["Build","Render"];function bX(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 _X("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,DX,r),Q.obj(t,e),Q.event(t,e,"event"),e._renderableChildMap=new Map,Q.get(t,e,["visited"]),Q.setGet(t,e,["_parent","renderable","myFactory"]),Q.getArray(t,e,["children"]),Q.moveToProtected(t,e,["parent"]),bX(t,e)}const IX=Q.newInstance(LR,"vtkViewNode");var cr={newInstance:IX,extend:LR,PASS_TYPES:EX};function OX(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 MX={};function AR(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,MX,r),Q.obj(t,e),OX(t,e)}const PX=Q.newInstance(AR,"vtkViewNodeFactory");var n4={newInstance:PX,extend:AR};const NR=Object.create(null);function Si(t,e){NR[t]=e}function RX(t,e){e.classHierarchy.push("vtkOpenGLViewNodeFactory")}const LX={};function kR(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,LX,r),e.overrides=NR,n4.extend(t,e,r),RX(t,e)}const AX=Q.newInstance(kR,"vtkOpenGLViewNodeFactory");var NX={newInstance:AX,extend:kR};function kX(){try{const n=new Int16Array([0,32767]),i=[1,1],o=document.createElement("canvas");o.width=4,o.height=4;const a=o.getContext("webgl2");if(!a)return!1;const s=a.getExtension("EXT_texture_norm16");if(!s)return!1;const c=`#version 300 es void main() { gl_PointSize = ${4 .toFixed(1)}; gl_Position = vec4(0, 0, 0, 1); @@ -83,119 +56,48 @@ Error generating stack: `+o.message+` vec4 intColor = texture(u_image, gl_PointCoord.xy); color = vec4(vec3(intColor.rrr), 1); } - `,f=a.createShader(a.VERTEX_SHADER);if(a.shaderSource(f,c),a.compileShader(f),!a.getShaderParameter(f,a.COMPILE_STATUS))return!1;const u=a.createShader(a.FRAGMENT_SHADER);if(a.shaderSource(u,l),a.compileShader(u),!a.getShaderParameter(u,a.COMPILE_STATUS))return!1;const d=a.createProgram();if(a.attachShader(d,f),a.attachShader(d,u),a.linkProgram(d),!a.getProgramParameter(d,a.LINK_STATUS))return!1;const h=a.createTexture();a.bindTexture(a.TEXTURE_2D,h),a.texImage2D(a.TEXTURE_2D,0,s.R16_SNORM_EXT,2,1,0,a.RED,a.SHORT,n),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.LINEAR),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR),a.useProgram(d),a.drawArrays(a.POINTS,0,1);const g=new Uint8Array(4);a.readPixels(i[0],i[1],1,1,a.RGBA,a.UNSIGNED_BYTE,g);const[p,v,y]=g,m=a.getExtension("WEBGL_lose_context");return m&&m.loseContext(),p===v&&v===y&&p!==0}catch{return!1}}let UC;function pre(){return UC===void 0&&(UC=gre()),UC}const{Wrap:su,Filter:Yi}=rk,{VtkDataTypes:Yn}=Nt,{vtkDebugMacro:BC,vtkErrorMacro:P0,vtkWarningMacro:V6}=Ao,{toHalf:mre}=_d;function vre(t,e){e.classHierarchy.push("vtkOpenGLTexture");function r(){return{internalFormat:e.internalFormat,format:e.format,openGLDataType:e.openGLDataType,width:e.width,height:e.height}}t.render=function(){let g=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;if(g?e._openGLRenderWindow=g:(e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer"),e._openGLRenderWindow=e._openGLRenderer.getLastAncestorOfType("vtkOpenGLRenderWindow")),e.context=e._openGLRenderWindow.getContext(),e.renderable.getInterpolate()?(e.generateMipmap?t.setMinificationFilter(Yi.LINEAR_MIPMAP_LINEAR):t.setMinificationFilter(Yi.LINEAR),t.setMagnificationFilter(Yi.LINEAR)):(t.setMinificationFilter(Yi.NEAREST),t.setMagnificationFilter(Yi.NEAREST)),e.renderable.getRepeat()&&(t.setWrapR(su.REPEAT),t.setWrapS(su.REPEAT),t.setWrapT(su.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(Yi.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(Yi.LINEAR_MIPMAP_LINEAR));const v=e.renderable.getCanvas();t.create2DFromRaw(v.width,v.height,4,Yn.UNSIGNED_CHAR,v,!0),t.activate(),t.sendParameters(),e.textureBuildTime.modified()}if(e.renderable.getJsImageData()!==null){const v=e.renderable.getJsImageData();e.renderable.getInterpolate()&&(e.generateMipmap=!0,t.setMinificationFilter(Yi.LINEAR_MIPMAP_LINEAR)),t.create2DFromRaw(v.width,v.height,4,Yn.UNSIGNED_CHAR,v.data,!0),t.activate(),t.sendParameters(),e.textureBuildTime.modified()}const p=e.renderable.getInputData(0);if(p&&p.getPointData().getScalars()){const v=p.getExtent(),y=p.getPointData().getScalars(),m=[];for(let w=0;w{if(!((e.minificationFilter===Yi.LINEAR||e.magnificationFilter===Yi.LINEAR)&&!pre()))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=g=>{g&&e.handle&&(g.activateTexture(t),g.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(g),e.shaderProgram=null)},t.bind=()=>{e.context.bindTexture(e.target,e.handle),e.autoParameters&&t.getMTime()>e.sendParametersTime.getMTime()&&t.sendParameters()},t.isBound=()=>{let g=!1;if(e.context&&e.handle){let p=0;switch(e.target){case e.context.TEXTURE_2D:p=e.context.TEXTURE_BINDING_2D;break;default:V6("impossible case");break}g=e.context.getIntegerv(p)===e.handle}return g},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=(g,p)=>(e._forceInternalFormat||(e.internalFormat=t.getDefaultInternalFormat(g,p)),e.internalFormat||BC(`Unable to find suitable internal format for T=${g} NC= ${p}`),[e.context.R32F,e.context.RG32F,e.context.RGB32F,e.context.RGBA32F].includes(e.internalFormat)&&!e.context.getExtension("OES_texture_float_linear")&&V6("Failed to load OES_texture_float_linear. Texture filtering is not available for *32F internal formats."),e.internalFormat),t.getDefaultInternalFormat=(g,p)=>{let v=0;return v=e._openGLRenderWindow.getDefaultTextureInternalFormat(g,p,n(),t.useHalfFloat()),v||(v||(BC("Unsupported internal texture type!"),BC(`Unable to find suitable internal format for T=${g} NC= ${p}`)),v)},t.useHalfFloat=()=>e.enableUseHalfFloat&&e.canUseHalfFloat,t.setInternalFormat=g=>{e._forceInternalFormat=!0,g!==e.internalFormat&&(e.internalFormat=g,t.modified())},t.getFormat=(g,p)=>(e.format=t.getDefaultFormat(g,p),e.format),t.getDefaultFormat=(g,p)=>{if(e._openGLRenderWindow.getWebgl2())switch(p){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(p){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=g=>{const p=t.useHalfFloat();if(e._openGLRenderWindow.getWebgl2())switch(g){case Yn.UNSIGNED_CHAR:return e.context.UNSIGNED_BYTE;case(n()&&!p&&Yn.SHORT):return e.context.SHORT;case(n()&&!p&&Yn.UNSIGNED_SHORT):return e.context.UNSIGNED_SHORT;case(p&&Yn.SHORT):return e.context.HALF_FLOAT;case(p&&Yn.UNSIGNED_SHORT):return e.context.HALF_FLOAT;case Yn.FLOAT:case Yn.VOID:default:return e.context.FLOAT}switch(g){case Yn.UNSIGNED_CHAR:return e.context.UNSIGNED_BYTE;case Yn.FLOAT:case Yn.VOID:default:if(e.context.getExtension("OES_texture_float")&&e.context.getExtension("OES_texture_float_linear"))return e.context.FLOAT;{const v=e.context.getExtension("OES_texture_half_float");if(v&&e.context.getExtension("OES_texture_half_float_linear"))return v.HALF_FLOAT_OES}return e.context.UNSIGNED_BYTE}},t.getOpenGLDataType=function(g){let p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return(!e.openGLDataType||p)&&(e.openGLDataType=t.getDefaultDataType(g)),e.openGLDataType},t.getShiftAndScale=()=>{let g=0,p=1;switch(e.openGLDataType){case e.context.BYTE:p=127.5,g=p-128;break;case e.context.UNSIGNED_BYTE:p=255,g=0;break;case e.context.SHORT:p=32767.5,g=p-32768;break;case e.context.UNSIGNED_SHORT:p=65536,g=0;break;case e.context.INT:p=21474836475e-1,g=p-2147483648;break;case e.context.UNSIGNED_INT:p=4294967295,g=0;break;case e.context.FLOAT:}return{shift:g,scale:p}},t.getOpenGLFilterMode=g=>{switch(g){case Yi.NEAREST:return e.context.NEAREST;case Yi.LINEAR:return e.context.LINEAR;case Yi.NEAREST_MIPMAP_NEAREST:return e.context.NEAREST_MIPMAP_NEAREST;case Yi.NEAREST_MIPMAP_LINEAR:return e.context.NEAREST_MIPMAP_LINEAR;case Yi.LINEAR_MIPMAP_NEAREST:return e.context.LINEAR_MIPMAP_NEAREST;case Yi.LINEAR_MIPMAP_LINEAR:return e.context.LINEAR_MIPMAP_LINEAR;default:return e.context.NEAREST}},t.getOpenGLWrapMode=g=>{switch(g){case su.CLAMP_TO_EDGE:return e.context.CLAMP_TO_EDGE;case su.REPEAT:return e.context.REPEAT;case su.MIRRORED_REPEAT:return e.context.MIRRORED_REPEAT;default:return e.context.CLAMP_TO_EDGE}};function i(g){const[p,v,y,m,w,x]=g;return[v-p+1,m-y+1,x-w+1]}function o(g){const[p,v,y]=i(g);return p*v*y}function a(g,p,v,y,m){const[w,x,C,S,T,_]=v,[E,b]=p,D=E*b;let I=m;for(let P=T;P<=_;P++){const M=P*D;for(let L=C;L<=S;L++){const B=M+L*E;for(let j=B+w,V=B+x;j<=V;j++,I++)y[I]=g[j]}}}function s(g,p){const y=(arguments.length>2&&arguments[2]!==void 0?arguments[2]:null)||g.constructor,m=p.reduce((S,T)=>S+o(T),0),w=new y(m),x=[e.width,e.height,e.depth];let C=0;return p.forEach(S=>{a(g,x,S,w,C),C+=o(S)}),w}t.updateArrayDataTypeForGL=function(g,p){let v=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,y=arguments.length>3&&arguments[3]!==void 0?arguments[3]:[];const m=[];let w=e.width*e.height*e.components;v&&(w*=e.depth);const x=!!y.length;if(g!==Yn.FLOAT&&e.openGLDataType===e.context.FLOAT)for(let S=0;Sw?p[S].subarray(0,w):p[S];m.push(new Float32Array(T))}else m.push(null);if(g!==Yn.UNSIGNED_CHAR&&e.openGLDataType===e.context.UNSIGNED_BYTE)for(let S=0;Sw?p[S].subarray(0,w):p[S];m.push(new Uint8Array(T))}else m.push(null);let C=!1;if(e._openGLRenderWindow.getWebgl2())C=e.openGLDataType===e.context.HALF_FLOAT;else{const S=e.context.getExtension("OES_texture_half_float");C=S&&e.openGLDataType===S.HALF_FLOAT_OES}if(C)for(let S=0;S=y&&(B=y-1);const j=M-L,V=1-j;L=L*v*m,B=B*v*m;for(let F=0;F=v&&(ue=v-1);const me=X-ne;ne*=m,ue*=m;for(let ge=0;ge5&&arguments[5]!==void 0?arguments[5]:!1;if(t.getOpenGLDataType(y,!0),t.getInternalFormat(y,v),t.getFormat(y,v),!e.internalFormat||!e.format||!e.openGLDataType)return P0("Failed to determine texture parameters."),!1;e.target=e.context.TEXTURE_2D,e.components=v,e.width=g,e.height=p,e.depth=1,e.numberOfDimensions=2,e._openGLRenderWindow.activateTexture(t),t.createTexture(),t.bind();const x=[m],C=t.updateArrayDataTypeForGL(y,x),S=c(C);return e.context.pixelStorei(e.context.UNPACK_FLIP_Y_WEBGL,w),e.context.pixelStorei(e.context.UNPACK_ALIGNMENT,1),l(y)?(e.context.texStorage2D(e.target,1,e.internalFormat,e.width,e.height),S[0]!=null&&e.context.texSubImage2D(e.target,0,0,0,e.width,e.height,e.format,e.openGLDataType,S[0])):e.context.texImage2D(e.target,0,e.internalFormat,e.width,e.height,0,e.format,e.openGLDataType,S[0]),e.generateMipmap&&e.context.generateMipmap(e.target),w&&e.context.pixelStorei(e.context.UNPACK_FLIP_Y_WEBGL,!1),e.allocatedGPUMemoryInBytes=e.width*e.height*e.depth*v*e._openGLRenderWindow.getDefaultTextureByteSize(y,n(),t.useHalfFloat()),t.deactivate(),!0},t.createCubeFromRaw=(g,p,v,y,m)=>{if(t.getOpenGLDataType(y),t.getInternalFormat(y,v),t.getFormat(y,v),!e.internalFormat||!e.format||!e.openGLDataType)return P0("Failed to determine texture parameters."),!1;e.target=e.context.TEXTURE_CUBE_MAP,e.components=v,e.width=g,e.height=p,e.depth=1,e.numberOfDimensions=2,e._openGLRenderWindow.activateTexture(t),e.maxLevel=m.length/6-1,t.createTexture(),t.bind();const w=t.updateArrayDataTypeForGL(y,m),x=c(w),C=[];let S=e.width,T=e.height;for(let _=0;_=1&&D>=1;){let I=null;E<=e.maxLevel&&(I=C[6*E+_]),l(y)?I!=null&&e.context.texSubImage2D(e.context.TEXTURE_CUBE_MAP_POSITIVE_X+_,E,0,0,b,D,e.format,e.openGLDataType,I):e.context.texImage2D(e.context.TEXTURE_CUBE_MAP_POSITIVE_X+_,E,e.internalFormat,b,D,0,e.format,e.openGLDataType,I),E++,b/=2,D/=2}}return e.allocatedGPUMemoryInBytes=e.width*e.height*e.depth*v*e._openGLRenderWindow.getDefaultTextureByteSize(y,n(),t.useHalfFloat()),t.deactivate(),!0},t.createDepthFromRaw=(g,p,v,y)=>(t.getOpenGLDataType(v),e.format=e.context.DEPTH_COMPONENT,e._openGLRenderWindow.getWebgl2()?v===Yn.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?(P0("Failed to determine texture parameters."),!1):(e.target=e.context.TEXTURE_2D,e.components=1,e.width=g,e.height=p,e.depth=1,e.numberOfDimensions=2,e._openGLRenderWindow.activateTexture(t),t.createTexture(),t.bind(),e.context.pixelStorei(e.context.UNPACK_ALIGNMENT,1),l(v)?(e.context.texStorage2D(e.target,1,e.internalFormat,e.width,e.height),y!=null&&e.context.texSubImage2D(e.target,0,0,0,e.width,e.height,e.format,e.openGLDataType,y)):e.context.texImage2D(e.target,0,e.internalFormat,e.width,e.height,0,e.format,e.openGLDataType,y),e.generateMipmap&&e.context.generateMipmap(e.target),e.allocatedGPUMemoryInBytes=e.width*e.height*e.depth*e.components*e._openGLRenderWindow.getDefaultTextureByteSize(v,n(),t.useHalfFloat()),t.deactivate(),!0)),t.create2DFromImage=g=>{if(t.getOpenGLDataType(Yn.UNSIGNED_CHAR),t.getInternalFormat(Yn.UNSIGNED_CHAR,4),t.getFormat(Yn.UNSIGNED_CHAR,4),!e.internalFormat||!e.format||!e.openGLDataType)return P0("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 p=!e._openGLRenderWindow.getWebgl2()&&(!kp(g.width)||!kp(g.height)),v=document.createElement("canvas");v.width=p?bs(g.width):g.width,v.height=p?bs(g.height):g.height,e.width=v.width,e.height=v.height;const y=v.getContext("2d");y.translate(0,v.height),y.scale(1,-1),y.drawImage(g,0,0,g.width,g.height,0,0,v.width,v.height);const m=v;return l(Yn.UNSIGNED_CHAR)?(e.context.texStorage2D(e.target,1,e.internalFormat,e.width,e.height),m!=null&&e.context.texSubImage2D(e.target,0,0,0,e.width,e.height,e.format,e.openGLDataType,m)):e.context.texImage2D(e.target,0,e.internalFormat,e.width,e.height,0,e.format,e.openGLDataType,m),e.generateMipmap&&e.context.generateMipmap(e.target),e.allocatedGPUMemoryInBytes=e.width*e.height*e.depth*e.components*e._openGLRenderWindow.getDefaultTextureByteSize(Yn.UNSIGNED_CHAR,n(),t.useHalfFloat()),t.deactivate(),!0};function f(g,p,v){const y=new Array(v),m=new Array(v);for(let w=0;w2048||m<-2048||m>2048)return!1}return!0}function d(g,p,v,y){t.getOpenGLDataType(g);const m=u(p,v)||y;let w=!1;if(e._openGLRenderWindow.getWebgl2())w=e.openGLDataType===e.context.FLOAT&&e.context.getExtension("OES_texture_float_linear")===null&&m||e.openGLDataType===e.context.HALF_FLOAT;else{const x=e.context.getExtension("OES_texture_half_float");w=x&&e.openGLDataType===x.HALF_FLOAT_OES}e.canUseHalfFloat=w&&m}function h(g,p){const v=g.getNumberOfComponents(),y=g.getDataType(),m=g.getData(),w=new Array(v),x=new Array(v);for(let S=0;S5&&arguments[5]!==void 0?arguments[5]:!1,x=arguments.length>6&&arguments[6]!==void 0?arguments[6]:void 0;return t.create2DFilterableFromDataArray(g,p,Nt.newInstance({numberOfComponents:v,dataType:y,values:m,ranges:x}),w)},t.create2DFilterableFromDataArray=function(g,p,v){let y=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;const{numComps:m,dataType:w,data:x}=h(v,y);t.create2DFromRaw(g,p,m,w,x)},t.updateVolumeInfoForGL=(g,p)=>{var m,w;let v=!1;const y=t.useHalfFloat();(!((m=e.volumeInfo)!=null&&m.scale)||!((w=e.volumeInfo)!=null&&w.offset))&&(e.volumeInfo={scale:new Array(p),offset:new Array(p)});for(let x=0;x6&&arguments[6]!==void 0?arguments[6]:[],C=m,S=w;if(!t.updateVolumeInfoForGL(C,y)&&S){const P=g*p*v,M=structuredClone(e.volumeInfo),L=new Float32Array(P*y);e.volumeInfo.offset=M.offset,e.volumeInfo.scale=M.scale;let B=0;const j=M.scale.map(V=>1/V);for(let V=0;V0,_=!T||!KE(e._prevTexParams,r()),E=[S],D=t.updateArrayDataTypeForGL(C,E,!0,_?[]:x),I=c(D);if(e.context.pixelStorei(e.context.UNPACK_ALIGNMENT,1),_)l(C)?(e.context.texStorage3D(e.target,1,e.internalFormat,e.width,e.height,e.depth),I[0]!=null&&e.context.texSubImage3D(e.target,0,0,0,0,e.width,e.height,e.depth,e.format,e.openGLDataType,I[0])):e.context.texImage3D(e.target,0,e.internalFormat,e.width,e.height,e.depth,0,e.format,e.openGLDataType,I[0]),e._prevTexParams=r();else if(T){const P=I[0];let M=0;for(let L=0;L6&&arguments[6]!==void 0?arguments[6]:!1,C=arguments.length>7&&arguments[7]!==void 0?arguments[7]:void 0,S=arguments.length>8&&arguments[8]!==void 0?arguments[8]:[];return t.create3DFilterableFromDataArray(g,p,v,Nt.newInstance({numberOfComponents:y,dataType:m,values:w,ranges:C}),x,S)},t.create3DFilterableFromDataArray=function(g,p,v,y){let m=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1,w=arguments.length>5&&arguments[5]!==void 0?arguments[5]:[];const{numComps:x,dataType:C,data:S,scaleOffsets:T}=h(y,m),_=[],E=[];for(let ye=0;ye{ye[Ie]=Pe},P=Yn.UNSIGNED_CHAR;if(C===Yn.UNSIGNED_CHAR)for(let ye=0;ye{ye[Ie]=(Pe-Ee)/H}):(P=Yn.UNSIGNED_CHAR,I=(ye,Ie,Pe,Ee,H)=>{ye[Ie]=255*(Pe-Ee)/H});if(t.getOpenGLDataType(P),t.getInternalFormat(P,x),t.getFormat(P,x),!e.internalFormat||!e.format||!e.openGLDataType)return P0("Failed to determine texture parameters."),!1;e.target=e.context.TEXTURE_2D,e.components=x,e.depth=1,e.numberOfDimensions=2;let M=e.context.getParameter(e.context.MAX_TEXTURE_SIZE);M>4096&&(P===Yn.FLOAT||x>=3)&&(M=4096);let L=1,B=1;b>M*M&&(L=Math.ceil(Math.sqrt(b/(M*M))),B=L);let j=Math.sqrt(b)/L;j=bs(j);const V=Math.floor(j*L/g),F=Math.ceil(v/V),G=bs(p*F/B);e.width=j,e.height=G,e._openGLRenderWindow.activateTexture(t),t.createTexture(),t.bind(),e.volumeInfo.xreps=V,e.volumeInfo.yreps=F,e.volumeInfo.xstride=L,e.volumeInfo.ystride=B,e.volumeInfo.offset=D.offset,e.volumeInfo.scale=D.scale;let X;const ne=j*G*x;P===Yn.FLOAT?X=new Float32Array(ne):X=new Uint8Array(ne);let ue=0;const me=Math.floor(g/L),ge=Math.floor(p/B);for(let ye=0;ye{e._openGLRenderWindow!==g&&(t.releaseGraphicsResources(),e._openGLRenderWindow=g,e.context=null,g&&(e.context=e._openGLRenderWindow.getContext()))},t.getMaximumTextureSize=g=>g&&g.isCurrent()?g.getIntegerv(g.MAX_TEXTURE_SIZE):-1,t.enableUseHalfFloat=g=>{e.enableUseHalfFloat=g}}const yre={_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:su.CLAMP_TO_EDGE,wrapT:su.CLAMP_TO_EDGE,wrapR:su.CLAMP_TO_EDGE,minificationFilter:Yi.NEAREST,magnificationFilter:Yi.NEAREST,minLOD:-1e3,maxLOD:1e3,baseLevel:0,maxLevel:1e3,generateMipmap:!1,oglNorm16Ext:null,allocatedGPUMemoryInBytes:0,enableUseHalfFloat:!0,canUseHalfFloat:!1};function ok(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,yre,r),gr.extend(t,e,r),e.sendParametersTime={},xr(e.sendParametersTime,{mtime:0}),e.textureBuildTime={},xr(e.textureBuildTime,{mtime:0}),Wm(t,e,["format","openGLDataType"]),vi(t,e,["keyMatrixTime","minificationFilter","magnificationFilter","wrapS","wrapT","wrapR","generateMipmap","oglNorm16Ext"]),Qo(t,e,["width","height","volumeInfo","components","handle","target","allocatedGPUMemoryInBytes"]),$m(t,e,["openGLRenderWindow"]),vre(t,e)}const ak=jn(ok,"vtkOpenGLTexture");var Vr={newInstance:ak,extend:ok,...rk};Ri("vtkTexture",ak);function wre(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=Le.substitute(a,"//VTK::Coincident::Dec",["uniform float cfactor;","uniform float coffset;"]).result,e.context.getExtension("EXT_frag_depth")&&(o.factor!==0?(a=Le.substitute(a,"//VTK::UniformFlow::Impl",["float cscale = length(vec2(dFdx(gl_FragCoord.z),dFdy(gl_FragCoord.z)));","//VTK::UniformFlow::Impl"],!1).result,a=Le.substitute(a,"//VTK::Depth::Impl","gl_FragDepthEXT = gl_FragCoord.z + cfactor*cscale + 0.000016*coffset;").result):a=Le.substitute(a,"//VTK::Depth::Impl","gl_FragDepthEXT = gl_FragCoord.z + 0.000016*coffset;").result),e._openGLRenderWindow.getWebgl2()&&(o.factor!==0?(a=Le.substitute(a,"//VTK::UniformFlow::Impl",["float cscale = length(vec2(dFdx(gl_FragCoord.z),dFdy(gl_FragCoord.z)));","//VTK::UniformFlow::Impl"],!1).result,a=Le.substitute(a,"//VTK::Depth::Impl","gl_FragDepth = gl_FragCoord.z + cfactor*cscale + 0.000016*coffset;").result):a=Le.substitute(a,"//VTK::Depth::Impl","gl_FragDepth = gl_FragCoord.z + 0.000016*coffset;").result),r.Fragment=a}}}function xre(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 Ol={implementReplaceShaderCoincidentOffset:wre,implementBuildShadersWithReplacements:xre};let H4;function Cre(t,e){e.classHierarchy.push("vtkAbstractTransform","vtkHomogeneousTransform","vtkTransform"),t.transformPoint=(r,n)=>(Gt(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?Ln(n,e.matrix,r):Ln(n,r,e.matrix),n),t.transformMatrices=(r,n)=>{const i=new Float64Array(16),o=new Float64Array(16),a=e.preMultiplyFlag?()=>Ln(o,e.matrix,i):()=>Ln(o,i,e.matrix);for(let s=0;sH4({matrix:Dt.invertMatrix(Array.from(e.matrix),[],4),preMultiplyFlag:e.preMultiplyFlag})}const Sre={preMultiplyFlag:!1,matrix:[...c4]};function sk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Sre,r),Q.obj(t,e),Q.setGet(t,e,["preMultiplyFlag"]),Q.setGetArray(t,e,["matrix"],16),Cre(t,e)}H4=Q.newInstance(sk,"vtkTransform");var Tre={newInstance:H4,extend:sk};function Pl(t,e,r){return t?`${t.getMTime()}-${e}-${r}`:"0"}function K4(t,e){return`${t.getMTime()}A${e.getMTime()}`}var _re=`//VTK::System::Dec + `,f=a.createShader(a.VERTEX_SHADER);if(a.shaderSource(f,c),a.compileShader(f),!a.getShaderParameter(f,a.COMPILE_STATUS))return!1;const u=a.createShader(a.FRAGMENT_SHADER);if(a.shaderSource(u,l),a.compileShader(u),!a.getShaderParameter(u,a.COMPILE_STATUS))return!1;const d=a.createProgram();if(a.attachShader(d,f),a.attachShader(d,u),a.linkProgram(d),!a.getProgramParameter(d,a.LINK_STATUS))return!1;const h=a.createTexture();a.bindTexture(a.TEXTURE_2D,h),a.texImage2D(a.TEXTURE_2D,0,s.R16_SNORM_EXT,2,1,0,a.RED,a.SHORT,n),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.LINEAR),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR),a.useProgram(d),a.drawArrays(a.POINTS,0,1);const g=new Uint8Array(4);a.readPixels(i[0],i[1],1,1,a.RGBA,a.UNSIGNED_BYTE,g);const[p,v,y]=g,m=a.getExtension("WEBGL_lose_context");return m&&m.loseContext(),p===v&&v===y&&p!==0}catch{return!1}}let $x;function VX(){return $x===void 0&&($x=kX()),$x}const{Wrap:Wl,Filter:Ui}=oR,{VtkDataTypes:Hn}=Ot,{vtkDebugMacro:jx,vtkErrorMacro:n0,vtkWarningMacro:X6}=xo,{toHalf:FX}=td;function UX(t,e){e.classHierarchy.push("vtkOpenGLTexture");function r(){return{internalFormat:e.internalFormat,format:e.format,openGLDataType:e.openGLDataType,width:e.width,height:e.height}}t.render=function(){let g=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;if(g?e._openGLRenderWindow=g:(e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer"),e._openGLRenderWindow=e._openGLRenderer.getLastAncestorOfType("vtkOpenGLRenderWindow")),e.context=e._openGLRenderWindow.getContext(),e.renderable.getInterpolate()?(e.generateMipmap?t.setMinificationFilter(Ui.LINEAR_MIPMAP_LINEAR):t.setMinificationFilter(Ui.LINEAR),t.setMagnificationFilter(Ui.LINEAR)):(t.setMinificationFilter(Ui.NEAREST),t.setMagnificationFilter(Ui.NEAREST)),e.renderable.getRepeat()&&(t.setWrapR(Wl.REPEAT),t.setWrapS(Wl.REPEAT),t.setWrapT(Wl.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(Ui.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(Ui.LINEAR_MIPMAP_LINEAR));const v=e.renderable.getCanvas();t.create2DFromRaw(v.width,v.height,4,Hn.UNSIGNED_CHAR,v,!0),t.activate(),t.sendParameters(),e.textureBuildTime.modified()}if(e.renderable.getJsImageData()!==null){const v=e.renderable.getJsImageData();e.renderable.getInterpolate()&&(e.generateMipmap=!0,t.setMinificationFilter(Ui.LINEAR_MIPMAP_LINEAR)),t.create2DFromRaw(v.width,v.height,4,Hn.UNSIGNED_CHAR,v.data,!0),t.activate(),t.sendParameters(),e.textureBuildTime.modified()}const p=e.renderable.getInputData(0);if(p&&p.getPointData().getScalars()){const v=p.getExtent(),y=p.getPointData().getScalars(),m=[];for(let w=0;w{if(!((e.minificationFilter===Ui.LINEAR||e.magnificationFilter===Ui.LINEAR)&&!VX()))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=g=>{g&&e.handle&&(g.activateTexture(t),g.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(g),e.shaderProgram=null)},t.bind=()=>{e.context.bindTexture(e.target,e.handle),e.autoParameters&&t.getMTime()>e.sendParametersTime.getMTime()&&t.sendParameters()},t.isBound=()=>{let g=!1;if(e.context&&e.handle){let p=0;switch(e.target){case e.context.TEXTURE_2D:p=e.context.TEXTURE_BINDING_2D;break;default:X6("impossible case");break}g=e.context.getIntegerv(p)===e.handle}return g},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=(g,p)=>(e._forceInternalFormat||(e.internalFormat=t.getDefaultInternalFormat(g,p)),e.internalFormat||jx(`Unable to find suitable internal format for T=${g} NC= ${p}`),[e.context.R32F,e.context.RG32F,e.context.RGB32F,e.context.RGBA32F].includes(e.internalFormat)&&!e.context.getExtension("OES_texture_float_linear")&&X6("Failed to load OES_texture_float_linear. Texture filtering is not available for *32F internal formats."),e.internalFormat),t.getDefaultInternalFormat=(g,p)=>{let v=0;return v=e._openGLRenderWindow.getDefaultTextureInternalFormat(g,p,n(),t.useHalfFloat()),v||(v||(jx("Unsupported internal texture type!"),jx(`Unable to find suitable internal format for T=${g} NC= ${p}`)),v)},t.useHalfFloat=()=>e.enableUseHalfFloat&&e.canUseHalfFloat,t.setInternalFormat=g=>{e._forceInternalFormat=!0,g!==e.internalFormat&&(e.internalFormat=g,t.modified())},t.getFormat=(g,p)=>(e.format=t.getDefaultFormat(g,p),e.format),t.getDefaultFormat=(g,p)=>{if(e._openGLRenderWindow.getWebgl2())switch(p){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(p){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=g=>{const p=t.useHalfFloat();if(e._openGLRenderWindow.getWebgl2())switch(g){case Hn.UNSIGNED_CHAR:return e.context.UNSIGNED_BYTE;case(n()&&!p&&Hn.SHORT):return e.context.SHORT;case(n()&&!p&&Hn.UNSIGNED_SHORT):return e.context.UNSIGNED_SHORT;case(p&&Hn.SHORT):return e.context.HALF_FLOAT;case(p&&Hn.UNSIGNED_SHORT):return e.context.HALF_FLOAT;case Hn.FLOAT:case Hn.VOID:default:return e.context.FLOAT}switch(g){case Hn.UNSIGNED_CHAR:return e.context.UNSIGNED_BYTE;case Hn.FLOAT:case Hn.VOID:default:if(e.context.getExtension("OES_texture_float")&&e.context.getExtension("OES_texture_float_linear"))return e.context.FLOAT;{const v=e.context.getExtension("OES_texture_half_float");if(v&&e.context.getExtension("OES_texture_half_float_linear"))return v.HALF_FLOAT_OES}return e.context.UNSIGNED_BYTE}},t.getOpenGLDataType=function(g){let p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return(!e.openGLDataType||p)&&(e.openGLDataType=t.getDefaultDataType(g)),e.openGLDataType},t.getShiftAndScale=()=>{let g=0,p=1;switch(e.openGLDataType){case e.context.BYTE:p=127.5,g=p-128;break;case e.context.UNSIGNED_BYTE:p=255,g=0;break;case e.context.SHORT:p=32767.5,g=p-32768;break;case e.context.UNSIGNED_SHORT:p=65536,g=0;break;case e.context.INT:p=21474836475e-1,g=p-2147483648;break;case e.context.UNSIGNED_INT:p=4294967295,g=0;break;case e.context.FLOAT:}return{shift:g,scale:p}},t.getOpenGLFilterMode=g=>{switch(g){case Ui.NEAREST:return e.context.NEAREST;case Ui.LINEAR:return e.context.LINEAR;case Ui.NEAREST_MIPMAP_NEAREST:return e.context.NEAREST_MIPMAP_NEAREST;case Ui.NEAREST_MIPMAP_LINEAR:return e.context.NEAREST_MIPMAP_LINEAR;case Ui.LINEAR_MIPMAP_NEAREST:return e.context.LINEAR_MIPMAP_NEAREST;case Ui.LINEAR_MIPMAP_LINEAR:return e.context.LINEAR_MIPMAP_LINEAR;default:return e.context.NEAREST}},t.getOpenGLWrapMode=g=>{switch(g){case Wl.CLAMP_TO_EDGE:return e.context.CLAMP_TO_EDGE;case Wl.REPEAT:return e.context.REPEAT;case Wl.MIRRORED_REPEAT:return e.context.MIRRORED_REPEAT;default:return e.context.CLAMP_TO_EDGE}};function i(g){const[p,v,y,m,w,x]=g;return[v-p+1,m-y+1,x-w+1]}function o(g){const[p,v,y]=i(g);return p*v*y}function a(g,p,v,y,m){const[w,x,C,S,T,_]=v,[E,b]=p,D=E*b;let O=m;for(let L=T;L<=_;L++){const P=L*D;for(let k=C;k<=S;k++){const G=P+k*E;for(let j=G+w,F=G+x;j<=F;j++,O++)y[O]=g[j]}}}function s(g,p){const y=(arguments.length>2&&arguments[2]!==void 0?arguments[2]:null)||g.constructor,m=p.reduce((S,T)=>S+o(T),0),w=new y(m),x=[e.width,e.height,e.depth];let C=0;return p.forEach(S=>{a(g,x,S,w,C),C+=o(S)}),w}t.updateArrayDataTypeForGL=function(g,p){let v=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,y=arguments.length>3&&arguments[3]!==void 0?arguments[3]:[];const m=[];let w=e.width*e.height*e.components;v&&(w*=e.depth);const x=!!y.length;if(g!==Hn.FLOAT&&e.openGLDataType===e.context.FLOAT)for(let S=0;Sw?p[S].subarray(0,w):p[S];m.push(new Float32Array(T))}else m.push(null);if(g!==Hn.UNSIGNED_CHAR&&e.openGLDataType===e.context.UNSIGNED_BYTE)for(let S=0;Sw?p[S].subarray(0,w):p[S];m.push(new Uint8Array(T))}else m.push(null);let C=!1;if(e._openGLRenderWindow.getWebgl2())C=e.openGLDataType===e.context.HALF_FLOAT;else{const S=e.context.getExtension("OES_texture_half_float");C=S&&e.openGLDataType===S.HALF_FLOAT_OES}if(C)for(let S=0;S=y&&(G=y-1);const j=P-k,F=1-j;k=k*v*m,G=G*v*m;for(let U=0;U=v&&(le=v-1);const ve=J-te;te*=m,le*=m;for(let pe=0;pe5&&arguments[5]!==void 0?arguments[5]:!1;if(t.getOpenGLDataType(y,!0),t.getInternalFormat(y,v),t.getFormat(y,v),!e.internalFormat||!e.format||!e.openGLDataType)return n0("Failed to determine texture parameters."),!1;e.target=e.context.TEXTURE_2D,e.components=v,e.width=g,e.height=p,e.depth=1,e.numberOfDimensions=2,e._openGLRenderWindow.activateTexture(t),t.createTexture(),t.bind();const x=[m],C=t.updateArrayDataTypeForGL(y,x),S=c(C);return e.context.pixelStorei(e.context.UNPACK_FLIP_Y_WEBGL,w),e.context.pixelStorei(e.context.UNPACK_ALIGNMENT,1),l(y)?(e.context.texStorage2D(e.target,1,e.internalFormat,e.width,e.height),S[0]!=null&&e.context.texSubImage2D(e.target,0,0,0,e.width,e.height,e.format,e.openGLDataType,S[0])):e.context.texImage2D(e.target,0,e.internalFormat,e.width,e.height,0,e.format,e.openGLDataType,S[0]),e.generateMipmap&&e.context.generateMipmap(e.target),w&&e.context.pixelStorei(e.context.UNPACK_FLIP_Y_WEBGL,!1),e.allocatedGPUMemoryInBytes=e.width*e.height*e.depth*v*e._openGLRenderWindow.getDefaultTextureByteSize(y,n(),t.useHalfFloat()),t.deactivate(),!0},t.createCubeFromRaw=(g,p,v,y,m)=>{if(t.getOpenGLDataType(y),t.getInternalFormat(y,v),t.getFormat(y,v),!e.internalFormat||!e.format||!e.openGLDataType)return n0("Failed to determine texture parameters."),!1;e.target=e.context.TEXTURE_CUBE_MAP,e.components=v,e.width=g,e.height=p,e.depth=1,e.numberOfDimensions=2,e._openGLRenderWindow.activateTexture(t),e.maxLevel=m.length/6-1,t.createTexture(),t.bind();const w=t.updateArrayDataTypeForGL(y,m),x=c(w),C=[];let S=e.width,T=e.height;for(let _=0;_=1&&D>=1;){let O=null;E<=e.maxLevel&&(O=C[6*E+_]),l(y)?O!=null&&e.context.texSubImage2D(e.context.TEXTURE_CUBE_MAP_POSITIVE_X+_,E,0,0,b,D,e.format,e.openGLDataType,O):e.context.texImage2D(e.context.TEXTURE_CUBE_MAP_POSITIVE_X+_,E,e.internalFormat,b,D,0,e.format,e.openGLDataType,O),E++,b/=2,D/=2}}return e.allocatedGPUMemoryInBytes=e.width*e.height*e.depth*v*e._openGLRenderWindow.getDefaultTextureByteSize(y,n(),t.useHalfFloat()),t.deactivate(),!0},t.createDepthFromRaw=(g,p,v,y)=>(t.getOpenGLDataType(v),e.format=e.context.DEPTH_COMPONENT,e._openGLRenderWindow.getWebgl2()?v===Hn.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?(n0("Failed to determine texture parameters."),!1):(e.target=e.context.TEXTURE_2D,e.components=1,e.width=g,e.height=p,e.depth=1,e.numberOfDimensions=2,e._openGLRenderWindow.activateTexture(t),t.createTexture(),t.bind(),e.context.pixelStorei(e.context.UNPACK_ALIGNMENT,1),l(v)?(e.context.texStorage2D(e.target,1,e.internalFormat,e.width,e.height),y!=null&&e.context.texSubImage2D(e.target,0,0,0,e.width,e.height,e.format,e.openGLDataType,y)):e.context.texImage2D(e.target,0,e.internalFormat,e.width,e.height,0,e.format,e.openGLDataType,y),e.generateMipmap&&e.context.generateMipmap(e.target),e.allocatedGPUMemoryInBytes=e.width*e.height*e.depth*e.components*e._openGLRenderWindow.getDefaultTextureByteSize(v,n(),t.useHalfFloat()),t.deactivate(),!0)),t.create2DFromImage=g=>{if(t.getOpenGLDataType(Hn.UNSIGNED_CHAR),t.getInternalFormat(Hn.UNSIGNED_CHAR,4),t.getFormat(Hn.UNSIGNED_CHAR,4),!e.internalFormat||!e.format||!e.openGLDataType)return n0("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 p=!e._openGLRenderWindow.getWebgl2()&&(!ep(g.width)||!ep(g.height)),v=document.createElement("canvas");v.width=p?ys(g.width):g.width,v.height=p?ys(g.height):g.height,e.width=v.width,e.height=v.height;const y=v.getContext("2d");y.translate(0,v.height),y.scale(1,-1),y.drawImage(g,0,0,g.width,g.height,0,0,v.width,v.height);const m=v;return l(Hn.UNSIGNED_CHAR)?(e.context.texStorage2D(e.target,1,e.internalFormat,e.width,e.height),m!=null&&e.context.texSubImage2D(e.target,0,0,0,e.width,e.height,e.format,e.openGLDataType,m)):e.context.texImage2D(e.target,0,e.internalFormat,e.width,e.height,0,e.format,e.openGLDataType,m),e.generateMipmap&&e.context.generateMipmap(e.target),e.allocatedGPUMemoryInBytes=e.width*e.height*e.depth*e.components*e._openGLRenderWindow.getDefaultTextureByteSize(Hn.UNSIGNED_CHAR,n(),t.useHalfFloat()),t.deactivate(),!0};function f(g,p,v){const y=new Array(v),m=new Array(v);for(let w=0;w2048||m<-2048||m>2048)return!1}return!0}function d(g,p,v,y){t.getOpenGLDataType(g);const m=u(p,v)||y;let w=!1;if(e._openGLRenderWindow.getWebgl2())w=e.openGLDataType===e.context.FLOAT&&e.context.getExtension("OES_texture_float_linear")===null&&m||e.openGLDataType===e.context.HALF_FLOAT;else{const x=e.context.getExtension("OES_texture_half_float");w=x&&e.openGLDataType===x.HALF_FLOAT_OES}e.canUseHalfFloat=w&&m}function h(g,p){const v=g.getNumberOfComponents(),y=g.getDataType(),m=g.getData(),w=new Array(v),x=new Array(v);for(let S=0;S5&&arguments[5]!==void 0?arguments[5]:!1,x=arguments.length>6&&arguments[6]!==void 0?arguments[6]:void 0;return t.create2DFilterableFromDataArray(g,p,Ot.newInstance({numberOfComponents:v,dataType:y,values:m,ranges:x}),w)},t.create2DFilterableFromDataArray=function(g,p,v){let y=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;const{numComps:m,dataType:w,data:x}=h(v,y);t.create2DFromRaw(g,p,m,w,x)},t.updateVolumeInfoForGL=(g,p)=>{var m,w;let v=!1;const y=t.useHalfFloat();(!((m=e.volumeInfo)!=null&&m.scale)||!((w=e.volumeInfo)!=null&&w.offset))&&(e.volumeInfo={scale:new Array(p),offset:new Array(p)});for(let x=0;x6&&arguments[6]!==void 0?arguments[6]:[],C=m,S=w;if(!t.updateVolumeInfoForGL(C,y)&&S){const L=g*p*v,P=structuredClone(e.volumeInfo),k=new Float32Array(L*y);e.volumeInfo.offset=P.offset,e.volumeInfo.scale=P.scale;let G=0;const j=P.scale.map(F=>1/F);for(let F=0;F0,_=!T||!A_(e._prevTexParams,r()),E=[S],D=t.updateArrayDataTypeForGL(C,E,!0,_?[]:x),O=c(D);if(e.context.pixelStorei(e.context.UNPACK_ALIGNMENT,1),_)l(C)?(e.context.texStorage3D(e.target,1,e.internalFormat,e.width,e.height,e.depth),O[0]!=null&&e.context.texSubImage3D(e.target,0,0,0,0,e.width,e.height,e.depth,e.format,e.openGLDataType,O[0])):e.context.texImage3D(e.target,0,e.internalFormat,e.width,e.height,e.depth,0,e.format,e.openGLDataType,O[0]),e._prevTexParams=r();else if(T){const L=O[0];let P=0;for(let k=0;k6&&arguments[6]!==void 0?arguments[6]:!1,C=arguments.length>7&&arguments[7]!==void 0?arguments[7]:void 0,S=arguments.length>8&&arguments[8]!==void 0?arguments[8]:[];return t.create3DFilterableFromDataArray(g,p,v,Ot.newInstance({numberOfComponents:y,dataType:m,values:w,ranges:C}),x,S)},t.create3DFilterableFromDataArray=function(g,p,v,y){let m=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1,w=arguments.length>5&&arguments[5]!==void 0?arguments[5]:[];const{numComps:x,dataType:C,data:S,scaleOffsets:T}=h(y,m),_=[],E=[];for(let ye=0;ye{ye[Ie]=Le},L=Hn.UNSIGNED_CHAR;if(C===Hn.UNSIGNED_CHAR)for(let ye=0;ye{ye[Ie]=(Le-be)/$}):(L=Hn.UNSIGNED_CHAR,O=(ye,Ie,Le,be,$)=>{ye[Ie]=255*(Le-be)/$});if(t.getOpenGLDataType(L),t.getInternalFormat(L,x),t.getFormat(L,x),!e.internalFormat||!e.format||!e.openGLDataType)return n0("Failed to determine texture parameters."),!1;e.target=e.context.TEXTURE_2D,e.components=x,e.depth=1,e.numberOfDimensions=2;let P=e.context.getParameter(e.context.MAX_TEXTURE_SIZE);P>4096&&(L===Hn.FLOAT||x>=3)&&(P=4096);let k=1,G=1;b>P*P&&(k=Math.ceil(Math.sqrt(b/(P*P))),G=k);let j=Math.sqrt(b)/k;j=ys(j);const F=Math.floor(j*k/g),U=Math.ceil(v/F),W=ys(p*U/G);e.width=j,e.height=W,e._openGLRenderWindow.activateTexture(t),t.createTexture(),t.bind(),e.volumeInfo.xreps=F,e.volumeInfo.yreps=U,e.volumeInfo.xstride=k,e.volumeInfo.ystride=G,e.volumeInfo.offset=D.offset,e.volumeInfo.scale=D.scale;let J;const te=j*W*x;L===Hn.FLOAT?J=new Float32Array(te):J=new Uint8Array(te);let le=0;const ve=Math.floor(g/k),pe=Math.floor(p/G);for(let ye=0;ye{e._openGLRenderWindow!==g&&(t.releaseGraphicsResources(),e._openGLRenderWindow=g,e.context=null,g&&(e.context=e._openGLRenderWindow.getContext()))},t.getMaximumTextureSize=g=>g&&g.isCurrent()?g.getIntegerv(g.MAX_TEXTURE_SIZE):-1,t.enableUseHalfFloat=g=>{e.enableUseHalfFloat=g}}const BX={_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:Wl.CLAMP_TO_EDGE,wrapT:Wl.CLAMP_TO_EDGE,wrapR:Wl.CLAMP_TO_EDGE,minificationFilter:Ui.NEAREST,magnificationFilter:Ui.NEAREST,minLOD:-1e3,maxLOD:1e3,baseLevel:0,maxLevel:1e3,generateMipmap:!1,oglNorm16Ext:null,allocatedGPUMemoryInBytes:0,enableUseHalfFloat:!0,canUseHalfFloat:!1};function VR(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,BX,r),cr.extend(t,e,r),e.sendParametersTime={},pr(e.sendParametersTime,{mtime:0}),e.textureBuildTime={},pr(e.textureBuildTime,{mtime:0}),n1(t,e,["format","openGLDataType"]),si(t,e,["keyMatrixTime","minificationFilter","magnificationFilter","wrapS","wrapT","wrapR","generateMipmap","oglNorm16Ext"]),Wo(t,e,["width","height","volumeInfo","components","handle","target","allocatedGPUMemoryInBytes"]),r1(t,e,["openGLRenderWindow"]),UX(t,e)}const FR=Wn(VR,"vtkOpenGLTexture");var br={newInstance:FR,extend:VR,...oR};Si("vtkTexture",FR);function GX(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){bn("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){bn("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){bn("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){bn("you must set the OpenGLRenderWindow before calling setColorBuffer");return}let o=i.COLOR_ATTACHMENT0;if(n>0)if(e._openGLRenderWindow.getWebgl2())o+=n;else{bn("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){bn("you must set the OpenGLRenderWindow before calling removeColorBuffer");return}let i=n.COLOR_ATTACHMENT0;if(r>0)if(e._openGLRenderWindow.getWebgl2())i+=r;else{bn("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){bn("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 bn("Attaching depth buffer textures to fbo requires WebGL 2")},t.removeDepthBuffer=()=>{if(!e.context){bn("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 bn("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){bn("you must set the OpenGLRenderWindow before calling populateFrameBuffer");return}t.bind();const r=e.context,n=br.newInstance();n.setOpenGLRenderWindow(e._openGLRenderWindow),n.setMinificationFilter(Ft.LINEAR),n.setMagnificationFilter(Ft.LINEAR),n.create2DFromRaw(e.glFramebuffer.width,e.glFramebuffer.height,4,gn.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 WX={glFramebuffer:null,colorBuffers:null,depthTexture:null,previousDrawBinding:0,previousReadBinding:0,previousDrawBuffer:0,previousReadBuffer:0,previousActiveFramebuffer:null};function UR(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,WX,r),pr(t,e),e.colorBuffers&&bn("you cannot initialize colorBuffers through the constructor. You should call setColorBuffer() instead."),e.colorBuffers=[],Xh(t,e,["colorBuffers"]),GX(t,e)}const zX=Wn(UR,"vtkFramebuffer");var sw={newInstance:zX,extend:UR};function $X(t,e){e.classHierarchy.push("vtkRenderPass"),t.getOperation=()=>e.currentOperation,t.setCurrentOperation=r=>{e.currentOperation=r,e.currentTraverseOperation=`traverse${Q.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 jX={delegates:[],currentOperation:null,preDelegateOperations:[],postDelegateOperations:[],currentParent:null};function BR(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,jX,r),Q.obj(t,e),Q.get(t,e,["currentOperation"]),Q.setGet(t,e,["delegates","_currentParent","preDelegateOperations","postDelegateOperations"]),Q.moveToProtected(t,e,["currentParent"]),$X(t,e)}const HX=Q.newInstance(BR,"vtkRenderPass");var r4={newInstance:HX,extend:BR},$n=1e-6,oi=typeof Float32Array<"u"?Float32Array:Array,KX=Math.PI/180;function qX(t){return t*KX}function pf(t,e){return Math.abs(t-e)<=$n*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 i4(){var t=new oi(9);return oi!=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 cw(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 XX(t){var e=new oi(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 YX(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 np(t,e,r,n,i,o,a,s,c){var l=new oi(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 GR(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 bs(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 o4(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 c1(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 JX(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 Jf(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 Dh(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],y=r[5],m=r[6],w=r[7],x=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+y*l,t[4]=p*i+v*s+y*f,t[5]=p*o+v*c+y*u,t[6]=m*n+w*a+x*l,t[7]=m*i+w*s+x*f,t[8]=m*o+w*c+x*u,t}function ZX(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 QX(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 eY(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 tY(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 nY(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 rY(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 iY(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 oY(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,y=o*c;return t[0]=1-u-g,t[3]=f-y,t[6]=d+v,t[1]=f+y,t[4]=1-l-g,t[7]=h-p,t[2]=d-v,t[5]=h+p,t[8]=1-l-u,t}function aY(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],y=e[15],m=r*s-n*a,w=r*c-i*a,x=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,b=f*y-h*g,D=u*v-d*p,O=u*y-h*p,L=d*y-h*v,P=m*L-w*O+x*D+C*b-S*E+T*_;return P?(P=1/P,t[0]=(s*L-c*O+l*D)*P,t[1]=(c*b-a*L-l*E)*P,t[2]=(a*O-s*b+l*_)*P,t[3]=(i*O-n*L-o*D)*P,t[4]=(r*L-i*b+o*E)*P,t[5]=(n*b-r*O-o*_)*P,t[6]=(p*T-v*S+y*C)*P,t[7]=(v*x-g*T-y*w)*P,t[8]=(g*S-p*x+y*m)*P,t):null}function sY(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 cY(t){return"mat3("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+")"}function lY(t){return Math.hypot(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])}function uY(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 WR(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 fY(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 dY(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 hY(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 gY(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],y=e[6],m=e[7],w=e[8];return Math.abs(r-u)<=$n*Math.max(1,Math.abs(r),Math.abs(u))&&Math.abs(n-d)<=$n*Math.max(1,Math.abs(n),Math.abs(d))&&Math.abs(i-h)<=$n*Math.max(1,Math.abs(i),Math.abs(h))&&Math.abs(o-g)<=$n*Math.max(1,Math.abs(o),Math.abs(g))&&Math.abs(a-p)<=$n*Math.max(1,Math.abs(a),Math.abs(p))&&Math.abs(s-v)<=$n*Math.max(1,Math.abs(s),Math.abs(v))&&Math.abs(c-y)<=$n*Math.max(1,Math.abs(c),Math.abs(y))&&Math.abs(l-m)<=$n*Math.max(1,Math.abs(l),Math.abs(m))&&Math.abs(f-w)<=$n*Math.max(1,Math.abs(f),Math.abs(w))}var pY=Dh,mY=WR;const vY=Object.freeze(Object.defineProperty({__proto__:null,add:uY,adjoint:JX,clone:XX,copy:YX,create:i4,determinant:Jf,equals:gY,exactEquals:hY,frob:lY,fromMat2d:iY,fromMat4:cw,fromQuat:oY,fromRotation:nY,fromScaling:rY,fromTranslation:tY,fromValues:np,identity:bs,invert:c1,mul:pY,multiply:Dh,multiplyScalar:fY,multiplyScalarAndAdd:dY,normalFromMat4:aY,projection:sY,rotate:QX,scale:eY,set:GR,str:cY,sub:mY,subtract:WR,translate:ZX,transpose:o4},Symbol.toStringTag,{value:"Module"}));function Ea(){var t=new oi(16);return oi!=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 yY(t){var e=new oi(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 Pr(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 a4(t,e,r,n,i,o,a,s,c,l,f,u,d,h,g,p){var v=new oi(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 wY(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 Pt(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 wn(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 $r(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],y=e[15],m=r*s-n*a,w=r*c-i*a,x=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,b=f*y-h*g,D=u*v-d*p,O=u*y-h*p,L=d*y-h*v,P=m*L-w*O+x*D+C*b-S*E+T*_;return P?(P=1/P,t[0]=(s*L-c*O+l*D)*P,t[1]=(i*O-n*L-o*D)*P,t[2]=(p*T-v*S+y*C)*P,t[3]=(d*S-u*T-h*C)*P,t[4]=(c*b-a*L-l*E)*P,t[5]=(r*L-i*b+o*E)*P,t[6]=(v*x-g*T-y*w)*P,t[7]=(f*T-d*x+h*w)*P,t[8]=(a*O-s*b+l*_)*P,t[9]=(n*b-r*O-o*_)*P,t[10]=(g*S-p*x+y*m)*P,t[11]=(u*x-f*S-h*m)*P,t[12]=(s*E-a*D-c*_)*P,t[13]=(r*D-n*E+i*_)*P,t[14]=(p*w-g*C-v*m)*P,t[15]=(f*C-u*w+d*m)*P,t):null}function xY(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],y=e[15];return t[0]=s*(d*y-h*v)-u*(c*y-l*v)+p*(c*h-l*d),t[1]=-(n*(d*y-h*v)-u*(i*y-o*v)+p*(i*h-o*d)),t[2]=n*(c*y-l*v)-s*(i*y-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*y-h*v)-f*(c*y-l*v)+g*(c*h-l*d)),t[5]=r*(d*y-h*v)-f*(i*y-o*v)+g*(i*h-o*d),t[6]=-(r*(c*y-l*v)-a*(i*y-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*y-h*p)-f*(s*y-l*p)+g*(s*h-l*u),t[9]=-(r*(u*y-h*p)-f*(n*y-o*p)+g*(n*h-o*u)),t[10]=r*(s*y-l*p)-a*(n*y-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 CY(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],y=e*a-r*o,m=e*s-n*o,w=e*c-i*o,x=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,b=f*p-u*g,D=f*v-d*g,O=u*v-d*p;return y*O-m*D+w*b+x*E-C*_+S*T}function Dn(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],y=e[14],m=e[15],w=r[0],x=r[1],C=r[2],S=r[3];return t[0]=w*n+x*s+C*u+S*p,t[1]=w*i+x*c+C*d+S*v,t[2]=w*o+x*l+C*h+S*y,t[3]=w*a+x*f+C*g+S*m,w=r[4],x=r[5],C=r[6],S=r[7],t[4]=w*n+x*s+C*u+S*p,t[5]=w*i+x*c+C*d+S*v,t[6]=w*o+x*l+C*h+S*y,t[7]=w*a+x*f+C*g+S*m,w=r[8],x=r[9],C=r[10],S=r[11],t[8]=w*n+x*s+C*u+S*p,t[9]=w*i+x*c+C*d+S*v,t[10]=w*o+x*l+C*h+S*y,t[11]=w*a+x*f+C*g+S*m,w=r[12],x=r[13],C=r[14],S=r[15],t[12]=w*n+x*s+C*u+S*p,t[13]=w*i+x*c+C*d+S*v,t[14]=w*o+x*l+C*h+S*y,t[15]=w*a+x*f+C*g+S*m,t}function ur(t,e,r){var n=r[0],i=r[1],o=r[2],a,s,c,l,f,u,d,h,g,p,v,y;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],y=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]=y,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+y*o+e[15]),t}function fl(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 Lo(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,y,m,w,x,C,S,T,_,E,b,D,O,L,P,k;return s<$n?null:(s=1/s,i*=s,o*=s,a*=s,c=Math.sin(r),l=Math.cos(r),f=1-l,u=e[0],d=e[1],h=e[2],g=e[3],p=e[4],v=e[5],y=e[6],m=e[7],w=e[8],x=e[9],C=e[10],S=e[11],T=i*i*f+l,_=o*i*f+a*c,E=a*i*f-o*c,b=i*o*f-a*c,D=o*o*f+l,O=a*o*f+i*c,L=i*a*f+o*c,P=o*a*f-i*c,k=a*a*f+l,t[0]=u*T+p*_+w*E,t[1]=d*T+v*_+x*E,t[2]=h*T+y*_+C*E,t[3]=g*T+m*_+S*E,t[4]=u*b+p*D+w*O,t[5]=d*b+v*D+x*O,t[6]=h*b+y*D+C*O,t[7]=g*b+m*D+S*O,t[8]=u*L+p*P+w*k,t[9]=d*L+v*P+x*k,t[10]=h*L+y*P+C*k,t[11]=g*L+m*P+S*k,e!==t&&(t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t)}function s4(t,e,r){var n=Math.sin(r),i=Math.cos(r),o=e[4],a=e[5],s=e[6],c=e[7],l=e[8],f=e[9],u=e[10],d=e[11];return e!==t&&(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[4]=o*i+l*n,t[5]=a*i+f*n,t[6]=s*i+u*n,t[7]=c*i+d*n,t[8]=l*i-o*n,t[9]=f*i-a*n,t[10]=u*i-s*n,t[11]=d*i-c*n,t}function c4(t,e,r){var n=Math.sin(r),i=Math.cos(r),o=e[0],a=e[1],s=e[2],c=e[3],l=e[8],f=e[9],u=e[10],d=e[11];return e!==t&&(t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=o*i-l*n,t[1]=a*i-f*n,t[2]=s*i-u*n,t[3]=c*i-d*n,t[8]=o*n+l*i,t[9]=a*n+f*i,t[10]=s*n+u*i,t[11]=c*n+d*i,t}function l4(t,e,r){var n=Math.sin(r),i=Math.cos(r),o=e[0],a=e[1],s=e[2],c=e[3],l=e[4],f=e[5],u=e[6],d=e[7];return e!==t&&(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[0]=o*i+l*n,t[1]=a*i+f*n,t[2]=s*i+u*n,t[3]=c*i+d*n,t[4]=l*i-o*n,t[5]=f*i-a*n,t[6]=u*i-s*n,t[7]=d*i-c*n,t}function l1(t,e){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]=e[0],t[13]=e[1],t[14]=e[2],t[15]=1,t}function u4(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function f4(t,e,r){var n=r[0],i=r[1],o=r[2],a=Math.hypot(n,i,o),s,c,l;return a<$n?null:(a=1/a,n*=a,i*=a,o*=a,s=Math.sin(e),c=Math.cos(e),l=1-c,t[0]=n*n*l+c,t[1]=i*n*l+o*s,t[2]=o*n*l-i*s,t[3]=0,t[4]=n*i*l-o*s,t[5]=i*i*l+c,t[6]=o*i*l+n*s,t[7]=0,t[8]=n*o*l+i*s,t[9]=i*o*l-n*s,t[10]=o*o*l+c,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t)}function SY(t,e){var r=Math.sin(e),n=Math.cos(e);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=n,t[6]=r,t[7]=0,t[8]=0,t[9]=-r,t[10]=n,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function TY(t,e){var r=Math.sin(e),n=Math.cos(e);return t[0]=n,t[1]=0,t[2]=-r,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=r,t[9]=0,t[10]=n,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function _Y(t,e){var r=Math.sin(e),n=Math.cos(e);return t[0]=n,t[1]=r,t[2]=0,t[3]=0,t[4]=-r,t[5]=n,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 zR(t,e,r){var n=e[0],i=e[1],o=e[2],a=e[3],s=n+n,c=i+i,l=o+o,f=n*s,u=n*c,d=n*l,h=i*c,g=i*l,p=o*l,v=a*s,y=a*c,m=a*l;return t[0]=1-(h+p),t[1]=u+m,t[2]=d-y,t[3]=0,t[4]=u-m,t[5]=1-(f+p),t[6]=g+v,t[7]=0,t[8]=d+y,t[9]=g-v,t[10]=1-(f+h),t[11]=0,t[12]=r[0],t[13]=r[1],t[14]=r[2],t[15]=1,t}function EY(t,e){var r=new oi(3),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=n*n+i*i+o*o+a*a;return u>0?(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),zR(t,e,r),t}function bY(t,e){return t[0]=e[12],t[1]=e[13],t[2]=e[14],t}function $R(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 gS(t,e){var r=new oi(3);$R(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 jR(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,y=s*c,m=s*l,w=s*f,x=n[0],C=n[1],S=n[2];return t[0]=(1-(g+v))*x,t[1]=(d+w)*x,t[2]=(h-m)*x,t[3]=0,t[4]=(d-w)*C,t[5]=(1-(u+v))*C,t[6]=(p+y)*C,t[7]=0,t[8]=(h+m)*S,t[9]=(p-y)*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 DY(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,y=s*u,m=c*l,w=c*f,x=c*u,C=n[0],S=n[1],T=n[2],_=i[0],E=i[1],b=i[2],D=(1-(p+y))*C,O=(h+x)*C,L=(g-w)*C,P=(h-x)*S,k=(1-(d+y))*S,G=(v+m)*S,j=(g+w)*T,F=(v-m)*T,U=(1-(d+p))*T;return t[0]=D,t[1]=O,t[2]=L,t[3]=0,t[4]=P,t[5]=k,t[6]=G,t[7]=0,t[8]=j,t[9]=F,t[10]=U,t[11]=0,t[12]=r[0]+_-(D*_+P*E+j*b),t[13]=r[1]+E-(O*_+k*E+F*b),t[14]=r[2]+b-(L*_+G*E+U*b),t[15]=1,t}function Dy(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,y=o*c;return t[0]=1-u-g,t[1]=f+y,t[2]=d-v,t[3]=0,t[4]=f-y,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 IY(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 HR(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 OY=HR;function MY(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 PY(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 KR(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 d4=KR;function RY(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 h4(t,e,r,n){var i,o,a,s,c,l,f,u,d,h,g=e[0],p=e[1],v=e[2],y=n[0],m=n[1],w=n[2],x=r[0],C=r[1],S=r[2];return Math.abs(g-x)<$n&&Math.abs(p-C)<$n&&Math.abs(v-S)<$n?Pt(t):(f=g-x,u=p-C,d=v-S,h=1/Math.hypot(f,u,d),f*=h,u*=h,d*=h,i=m*d-w*u,o=w*f-y*d,a=y*u-m*f,h=Math.hypot(i,o,a),h?(h=1/h,i*=h,o*=h,a*=h):(i=0,o=0,a=0),s=u*a-d*o,c=d*i-f*a,l=f*o-u*i,h=Math.hypot(s,c,l),h?(h=1/h,s*=h,c*=h,l*=h):(s=0,c=0,l=0),t[0]=i,t[1]=s,t[2]=f,t[3]=0,t[4]=o,t[5]=c,t[6]=u,t[7]=0,t[8]=a,t[9]=l,t[10]=d,t[11]=0,t[12]=-(i*g+o*p+a*v),t[13]=-(s*g+c*p+l*v),t[14]=-(f*g+u*p+d*v),t[15]=1,t)}function LY(t,e,r,n){var i=e[0],o=e[1],a=e[2],s=n[0],c=n[1],l=n[2],f=i-r[0],u=o-r[1],d=a-r[2],h=f*f+u*u+d*d;h>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 AY(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 NY(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 kY(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 qR(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 XR(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 VY(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 FY(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 UY(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],y=t[15],m=e[0],w=e[1],x=e[2],C=e[3],S=e[4],T=e[5],_=e[6],E=e[7],b=e[8],D=e[9],O=e[10],L=e[11],P=e[12],k=e[13],G=e[14],j=e[15];return Math.abs(r-m)<=$n*Math.max(1,Math.abs(r),Math.abs(m))&&Math.abs(n-w)<=$n*Math.max(1,Math.abs(n),Math.abs(w))&&Math.abs(i-x)<=$n*Math.max(1,Math.abs(i),Math.abs(x))&&Math.abs(o-C)<=$n*Math.max(1,Math.abs(o),Math.abs(C))&&Math.abs(a-S)<=$n*Math.max(1,Math.abs(a),Math.abs(S))&&Math.abs(s-T)<=$n*Math.max(1,Math.abs(s),Math.abs(T))&&Math.abs(c-_)<=$n*Math.max(1,Math.abs(c),Math.abs(_))&&Math.abs(l-E)<=$n*Math.max(1,Math.abs(l),Math.abs(E))&&Math.abs(f-b)<=$n*Math.max(1,Math.abs(f),Math.abs(b))&&Math.abs(u-D)<=$n*Math.max(1,Math.abs(u),Math.abs(D))&&Math.abs(d-O)<=$n*Math.max(1,Math.abs(d),Math.abs(O))&&Math.abs(h-L)<=$n*Math.max(1,Math.abs(h),Math.abs(L))&&Math.abs(g-P)<=$n*Math.max(1,Math.abs(g),Math.abs(P))&&Math.abs(p-k)<=$n*Math.max(1,Math.abs(p),Math.abs(k))&&Math.abs(v-G)<=$n*Math.max(1,Math.abs(v),Math.abs(G))&&Math.abs(y-j)<=$n*Math.max(1,Math.abs(y),Math.abs(j))}var Iy=Dn,BY=qR;const pm=Object.freeze(Object.defineProperty({__proto__:null,add:kY,adjoint:xY,clone:yY,copy:Pr,create:Ea,determinant:CY,equals:UY,exactEquals:FY,frob:NY,fromQuat:Dy,fromQuat2:EY,fromRotation:f4,fromRotationTranslation:zR,fromRotationTranslationScale:jR,fromRotationTranslationScaleOrigin:DY,fromScaling:u4,fromTranslation:l1,fromValues:a4,fromXRotation:SY,fromYRotation:TY,fromZRotation:_Y,frustum:IY,getRotation:gS,getScaling:$R,getTranslation:bY,identity:Pt,invert:$r,lookAt:h4,mul:Iy,multiply:Dn,multiplyScalar:XR,multiplyScalarAndAdd:VY,ortho:d4,orthoNO:KR,orthoZO:RY,perspective:OY,perspectiveFromFieldOfView:PY,perspectiveNO:HR,perspectiveZO:MY,rotate:Lo,rotateX:s4,rotateY:c4,rotateZ:l4,scale:fl,set:wY,str:AY,sub:BY,subtract:qR,targetTo:LY,translate:ur,transpose:wn},Symbol.toStringTag,{value:"Module"}));function Be(){var t=new oi(3);return oi!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function YR(t){var e=new oi(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function ra(t){var e=t[0],r=t[1],n=t[2];return Math.hypot(e,r,n)}function bt(t,e,r){var n=new oi(3);return n[0]=t,n[1]=e,n[2]=r,n}function GY(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function Zn(t,e,r,n){return t[0]=e,t[1]=r,t[2]=n,t}function ni(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t}function jn(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t}function WY(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t}function zY(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t[2]=e[2]/r[2],t}function $Y(t,e,r){return t[0]=Math.min(e[0],r[0]),t[1]=Math.min(e[1],r[1]),t[2]=Math.min(e[2],r[2]),t}function jY(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t[2]=Math.max(e[2],r[2]),t}function HY(t,e){return t[0]=Math.round(e[0]),t[1]=Math.round(e[1]),t[2]=Math.round(e[2]),t}function _r(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t}function Cn(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 Ki(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 JR(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 rl(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t}function ZR(t,e){return t[0]=1/e[0],t[1]=1/e[1],t[2]=1/e[2],t}function Yn(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 St(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function Ln(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 Wt(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 Iv(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 KY(t,e,r){var n=r[0],i=r[1],o=r[2],a=r[3],s=e[0],c=e[1],l=e[2],f=i*l-o*c,u=o*s-n*l,d=n*c-i*s,h=i*d-o*u,g=o*f-n*d,p=n*u-i*f,v=a*2;return f*=v,u*=v,d*=v,h*=2,g*=2,p*=2,t[0]=s+f+h,t[1]=c+u+g,t[2]=l+d+p,t}function g4(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&&St(t,e)/f;return Math.acos(Math.min(Math.max(u,-1),1))}function qY(t){return t[0]=0,t[1]=0,t[2]=0,t}function Y6(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]}function pS(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)<=$n*Math.max(1,Math.abs(r),Math.abs(o))&&Math.abs(n-a)<=$n*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=$n*Math.max(1,Math.abs(i),Math.abs(s))}var Sn=jn,XY=WY,mS=JR,Ih=ra;(function(){var t=Be();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 Z6(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]}function Hu(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=QR();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;s$n?(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 Q6(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 Mv(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>$n?(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 ZY(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=e[3],t}function QY(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 eD=Ov,eL=YY;(function(){var t=Be(),e=bt(1,0,0),r=bt(0,1,0);return function(n,i,o){var a=St(i,o);return a<-.999999?(Ln(t,e,i),Ih(t)<1e-6&&Ln(t,r,i),Yn(t,t),lw(n,t,Math.PI),n):a>.999999?(n[0]=0,n[1]=0,n[2]=0,n[3]=1,n):(Ln(t,i,o),n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=1+a,eL(n,n))}})();(function(){var t=mf(),e=mf();return function(r,n,i,o,a,s){return Mv(t,n,a,s),Mv(e,i,o,s),Mv(r,t,e,2*s*(1-s)),r}})();(function(){var t=i4();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],eL(e,QY(e,t))}})();function Jt(){var t=new oi(2);return oi!=Float32Array&&(t[0]=0,t[1]=0),t}function s2(t){var e=new oi(2);return e[0]=t[0],e[1]=t[1],e}function tD(t,e){var r=new oi(2);return r[0]=t,r[1]=e,r}function ws(t,e,r){return t[0]=e,t[1]=r,t}function fo(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t}function Yr(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t}function zl(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t}function eJ(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t}function xr(t,e){var r=e[0]-t[0],n=e[1]-t[1];return Math.hypot(r,n)}function Oy(t){var e=t[0],r=t[1];return Math.hypot(e,r)}function ql(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 p4(t,e){return t[0]*e[0]+t[1]*e[1]}function tJ(t,e,r,n){var i=e[0]-r[0],o=e[1]-r[1],a=Math.sin(n),s=Math.cos(n);return t[0]=i*s-o*a+r[0],t[1]=i*a+o*s+r[1],t}function nJ(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 rJ=Oy,Ts=Yr,m4=xr;(function(){var t=Jt();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 aJ={objectType:Pv.ARRAY_BUFFER,context:null,allocatedGPUMemoryInBytes:0};function nL(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,aJ,r),Q.obj(t,e),Q.get(t,e,["_openGLRenderWindow","allocatedGPUMemoryInBytes"]),Q.moveToProtected(t,e,["openGLRenderWindow"]),oJ(t,e)}const sJ=Q.newInstance(nL);var Xl={newInstance:sJ,extend:nL,...iJ,...tL};const rL={FLAT:0,GOURAUD:1,PHONG:2},mo={POINTS:0,WIREFRAME:1,SURFACE:2},cJ=rL;var iL={Shading:rL,Representation:mo,Interpolation:cJ};const{vtkErrorMacro:nD}=Q;function lJ(t,e){const r=new Float64Array(3);ZR(r,e);const n=new Float64Array(16);return jR(n,mf(),t,r),n}function uJ(t,e){return t===null||e===null?!1:!(Y6(t,[0,0,0])&&Y6(e,[1,1,1]))}function fJ(t,e){e.classHierarchy.push("vtkOpenGLCellArrayBufferObject"),t.setType(eu.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(U=>{U&&(e.customData.push({data:U.getData(),offset:4*e.blockSize,components:U.getNumberOfComponents(),name:U.getName()}),e.blockSize+=U.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=Xl.newInstance()),e.colorBO.setOpenGLRenderWindow(e._openGLRenderWindow)):e.colorBO=null,e.stride=4*e.blockSize;let h=0,g=0,p=0,v=0,y=0,m=0,w;const x={anythingToPoints(U,W,J,te){for(let le=0;le2)for(let le=0;le2){for(let le=0;le1?(U-1)*2:0},polysToWireframe(U,W){return U>2?U*2:0},stripsToWireframe(U,W){return U>2?U*4-6:0},polysToSurface(U,W){return U>2?(U-2)*3:0},stripsToSurface(U,W,J){return U>2?(U-2)*3:0}};let S=null,T=null;i===mo.POINTS||n==="verts"?(S=x.anythingToPoints,T=C.anythingToPoints):i===mo.WIREFRAME||n==="lines"?(S=x[`${n}ToWireframe`],T=C[`${n}ToWireframe`]):(S=x[`${n}ToSurface`],T=C[`${n}ToSurface`]);const _=r.getData(),E=_.length;let b=0;for(let U=0;U0&&(Math.abs(G)/k>1e6||Math.abs(Math.log10(k))>3||k===0&&G>1e6)){const U=new Float64Array(3),W=new Float64Array(3);for(let J=0;J<3;++J){const te=o.points.getRange(J),le=te[1]-te[0];U[J]=.5*(te[1]+te[0]),W[J]=le>0?1/le:1}t.setCoordShiftAndScale(U,W)}else e.coordShiftAndScaleEnabled===!0&&t.setCoordShiftAndScale(null,null);if(a)if(!a.points&&!a.cells)a.points=new Int32Array(b),a.cells=new Int32Array(b);else{const U=new Int32Array(b+a.points.length);U.set(a.points),a.points=U;const W=new Int32Array(b+a.cells.length);W.set(a.cells),a.cells=W}let F=o.vertexOffset;w=function(W,J){if(a&&(a.points[F]=W,a.cells[F]=m+o.cellOffset),++F,h=W*3,e.coordShiftAndScaleEnabled?(O[L++]=(s[h++]-e.coordShift[0])*e.coordScale[0],O[L++]=(s[h++]-e.coordShift[1])*e.coordScale[1],O[L++]=(s[h++]-e.coordShift[2])*e.coordScale[2]):(O[L++]=s[h++],O[L++]=s[h++],O[L++]=s[h++]),c!==null&&(o.haveCellNormals?g=(m+o.cellOffset)*3:g=W*3,O[L++]=c[g++],O[L++]=c[g++],O[L++]=c[g++]),e.customData.forEach(te=>{y=W*te.components;for(let le=0;le{if(r!==null&&(r.constructor!==Float64Array||r.length!==3)){nD("Wrong type for coordShift, expected vec3 or null");return}if(n!==null&&(n.constructor!==Float64Array||n.length!==3)){nD("Wrong type for coordScale, expected vec3 or null");return}(e.coordShift===null||r===null||!pS(r,e.coordShift))&&(e.coordShift=r),(e.coordScale===null||n===null||!pS(n,e.coordScale))&&(e.coordScale=n),e.coordShiftAndScaleEnabled=uJ(e.coordShift,e.coordScale),e.coordShiftAndScaleEnabled?e.inverseShiftAndScaleMatrix=lJ(e.coordShift,e.coordScale):e.inverseShiftAndScaleMatrix=null}}const dJ={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 oL(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,dJ,r),Xl.extend(t,e,r),Q.setGet(t,e,["colorBO","elementCount","stride","colorBOStride","vertexOffset","normalOffset","tCoordOffset","tCoordComponents","colorOffset","colorComponents","customData"]),Q.get(t,e,["coordShift","coordScale","coordShiftAndScaleEnabled","inverseShiftAndScaleMatrix"]),fJ(t,e)}const hJ=Q.newInstance(oL);var gJ={newInstance:hJ,extend:oL};const{vtkErrorMacro:pJ}=Q;function mJ(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 pJ(`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 vJ={shaderType:"Unknown",source:"",error:"",handle:0,dirty:!1,context:null};function aL(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,vJ,r),Q.obj(t,e),Q.setGet(t,e,["shaderType","source","error","handle","context"]),mJ(t,e)}const yJ=Q.newInstance(aL,"vtkShader");var Hx={newInstance:yJ,extend:aL};const{vtkErrorMacro:Bc}=Q;function wJ(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 xJ(t,e){e.classHierarchy.push("vtkShaderProgram"),t.compileShader=()=>e.vertexShader.compile()?e.fragmentShader.compile()?!t.attachShader(e.vertexShader)||!t.attachShader(e.fragmentShader)?(Bc(e.error),0):t.link()?(t.setCompiled(!0),1):(Bc(`Links failed: ${e.error}`),0):(Bc(e.fragmentShader.getSource().split(` +`).map((r,n)=>`${n}: ${r}`).join(` +`)),Bc(e.fragmentShader.getError()),0):(Bc(e.vertexShader.getSource().split(` +`).map((r,n)=>`${n}: ${r}`).join(` +`)),Bc(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 Bc(`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):(Bc("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 Bc("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 CJ={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 sL(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,CJ,r),e.attributesLocs={},e.uniformLocs={},e.vertexShader=Hx.newInstance(),e.vertexShader.setShaderType("Vertex"),e.fragmentShader=Hx.newInstance(),e.fragmentShader.setShaderType("Fragment"),e.geometryShader=Hx.newInstance(),e.geometryShader.setShaderType("Geometry"),Q.obj(t,e),Q.get(t,e,["lastCameraMTime"]),Q.setGet(t,e,["error","handle","compiled","bound","md5Hash","vertexShader","fragmentShader","geometryShader","linked"]),xJ(t,e)}const SJ=Q.newInstance(sL,"vtkShaderProgram");var Pe={newInstance:SJ,extend:sL,substitute:wJ};function TJ(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()!==eu.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 _J={forceEmulation:!1,handleVAO:0,handleProgram:0,supported:!0,buffers:null,context:null};function cL(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,_J,r),e.buffers=[],Q.obj(t,e),Q.get(t,e,["supported"]),Q.setGet(t,e,["forceEmulation"]),TJ(t,e)}const EJ=Q.newInstance(cL,"vtkOpenGLVertexArrayObject");var v4={newInstance:EJ,extend:cL};const Mu={Start:0,Points:0,Lines:1,Tris:2,TriStrips:3,TrisEdges:4,TriStripsEdges:5,End:6};function bJ(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===mo.POINTS||n===Mu.Points?e.context.POINTS:r===mo.WIREFRAME||n===Mu.Lines||n===Mu.TrisEdges||n===Mu.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===Mu.Points||n.getProperty().getRepresentation()===mo.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=Pe.substitute(o,"//VTK::PositionVC::Dec",["//VTK::PositionVC::Dec","uniform float pointSize;"]).result,o=Pe.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=Pe.substitute(o,"//VTK::PositionVC::Dec",["//VTK::PositionVC::Dec","uniform vec2 viewportSize;","uniform float lineWidthStepSize;","uniform float halfLineWidth;"]).result,o=Pe.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===Mu.Points?2:e.primitiveType===Mu.Lines?4:6,t.getAllocatedGPUMemoryInBytes=()=>t.getCABO().getAllocatedGPUMemoryInBytes()}const DJ={context:null,program:null,shaderSourceTime:null,VAO:null,attributeUpdateTime:null,CABO:null,primitiveType:0,pointPicking:!1};function lL(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,DJ,r),Q.obj(t,e),e.shaderSourceTime={},Q.obj(e.shaderSourceTime),e.attributeUpdateTime={},Q.obj(e.attributeUpdateTime),Q.setGet(t,e,["program","shaderSourceTime","VAO","attributeUpdateTime","CABO","primitiveType","pointPicking"]),e.program=Pe.newInstance(),e.VAO=v4.newInstance(),e.CABO=gJ.newInstance(),bJ(t,e)}const IJ=Q.newInstance(lL);var wl={newInstance:IJ,extend:lL,primTypes:Mu};const{Representation:rp,Interpolation:ip}=iL;function rD(t){return()=>Q.vtkErrorMacro(`vtkProperty::${t} - NOT IMPLEMENTED`)}function OJ(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=rD("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=rD("AddShaderVariable"),t.setInterpolationToFlat=()=>t.setInterpolation(ip.FLAT),t.setInterpolationToGouraud=()=>t.setInterpolation(ip.GOURAUD),t.setInterpolationToPhong=()=>t.setInterpolation(ip.PHONG),t.getInterpolationAsString=()=>Q.enumToString(ip,e.interpolation),t.setRepresentationToWireframe=()=>t.setRepresentation(rp.WIREFRAME),t.setRepresentationToSurface=()=>t.setRepresentation(rp.SURFACE),t.setRepresentationToPoints=()=>t.setRepresentation(rp.POINTS),t.getRepresentationAsString=()=>Q.enumToString(rp,e.representation)}const MJ={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:ip.GOURAUD,representation:rp.SURFACE,edgeVisibility:!1,backfaceCulling:!1,frontfaceCulling:!1,pointSize:1,lineWidth:1,lighting:!0,shading:!1,materialName:null};function uL(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,MJ,r),Q.obj(t,e),Q.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"]),Q.setGetArray(t,e,["ambientColor","specularColor","diffuseColor","edgeColor"],3),OJ(t,e)}const PJ=Q.newInstance(uL,"vtkProperty");var Kd={newInstance:PJ,extend:uL,...iL};const{Representation:RJ}=Kd,{vtkErrorMacro:iD}=Q;function LJ(t){const e=Pe.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 AJ=`//VTK::System::Dec -/*========================================================================= +in vec2 tcoord; - 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 -} -`,Ere=`//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 +uniform sampler2D translucentRTexture; +uniform sampler2D translucentRGBATexture; // 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 + 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); } -`;const $d={NEAREST:0,LINEAR:1};var bre={InterpolationType:$d};const Vc={Off:0,PolygonOffset:1};let RT=Vc.PolygonOffset,D5=Vc.Off;const Dre=["VTK_RESOLVE_OFF","VTK_RESOLVE_POLYGON_OFFSET"];function Ire(){return RT}function Mre(t){const e=RT===t;return RT=t,e}function Ore(){return D5}function nx(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;const e=D5===t;return D5=t,e}function Pre(){return nx(Vc.Off)}function Rre(){return nx(Vc.Off)}function Are(){return nx(Vc.PolygonOffset)}function Lre(){return Dre[D5]}var AT={Resolve:Vc,getResolveCoincidentTopologyAsString:Lre,getResolveCoincidentTopologyPolygonOffsetFaces:Ire,getResolveCoincidentTopology:Ore,setResolveCoincidentTopology:nx,setResolveCoincidentTopologyPolygonOffsetFaces:Mre,setResolveCoincidentTopologyToDefault:Pre,setResolveCoincidentTopologyToOff:Rre,setResolveCoincidentTopologyToPolygonOffset:Are};function ck(t,e,r){r.forEach(n=>{t[`get${n.method}`]=()=>e[n.key],t[`set${n.method}`]=Q.objectSetterMap.object(t,e,{name:n.key,params:["factor","offset"]})})}const X4=["Polygon","Line","Point"],Nre={Polygon:{factor:2,offset:0},Line:{factor:1,offset:-1},Point:{factor:0,offset:-2}},kre=()=>{},Ed={modified:kre};ck(Ed,Nre,X4.map(t=>({key:t,method:`ResolveCoincidentTopology${t}OffsetParameters`})));function Vre(t,e){e.resolveCoincidentTopology===void 0&&(e.resolveCoincidentTopology=!1),Q.setGet(t,e,["resolveCoincidentTopology"]),e.topologyOffset={Polygon:{factor:0,offset:0},Line:{factor:0,offset:0},Point:{factor:0,offset:0}},Object.keys(AT).forEach(r=>{t[r]=AT[r]}),Object.keys(Ed).filter(r=>r!=="modified").forEach(r=>{t[r]=Ed[r]}),ck(t,e.topologyOffset,X4.map(r=>({key:r,method:`RelativeCoincidentTopology${r}OffsetParameters`}))),t.getCoincidentTopologyPolygonOffsetParameters=()=>{const r=Ed.getResolveCoincidentTopologyPolygonOffsetParameters(),n=t.getRelativeCoincidentTopologyPolygonOffsetParameters();return{factor:r.factor+n.factor,offset:r.offset+n.offset}},t.getCoincidentTopologyLineOffsetParameters=()=>{const r=Ed.getResolveCoincidentTopologyLineOffsetParameters(),n=t.getRelativeCoincidentTopologyLineOffsetParameters();return{factor:r.factor+n.factor,offset:r.offset+n.offset}},t.getCoincidentTopologyPointOffsetParameter=()=>{const r=Ed.getResolveCoincidentTopologyPointOffsetParameters(),n=t.getRelativeCoincidentTopologyPointOffsetParameters();return{factor:r.factor+n.factor,offset:r.offset+n.offset}}}var rx={implementCoincidentTopologyMethods:Vre,staticOffsetAPI:Ed,otherStaticMethods:AT,CATEGORIES:X4,Resolve:Vc};const{vtkErrorMacro:id}=Ao;function F6(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 Fre(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()==Vc.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){id("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()===$d.NEAREST?(e.openGLTexture.setMinificationFilter(Wt.NEAREST),e.openGLTexture.setMagnificationFilter(Wt.NEAREST),e.colorTexture.setMinificationFilter(Wt.NEAREST),e.colorTexture.setMagnificationFilter(Wt.NEAREST),e.pwfTexture.setMinificationFilter(Wt.NEAREST),e.pwfTexture.setMagnificationFilter(Wt.NEAREST)):(e.openGLTexture.setMinificationFilter(Wt.LINEAR),e.openGLTexture.setMagnificationFilter(Wt.LINEAR),e.colorTexture.setMinificationFilter(Wt.LINEAR),e.colorTexture.setMagnificationFilter(Wt.LINEAR),e.pwfTexture.setMinificationFilter(Wt.LINEAR),e.pwfTexture.setMagnificationFilter(Wt.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 E,b,D,I;const a=e.currentInput;if(!a)return;const s=(E=a.getPointData())==null?void 0:E.getScalars();if(!s)return;const c=s.getNumberOfComponents();let l=K4(a,s);const f=e._openGLRenderWindow.getGraphicsResourceForObject(s),u=!((b=f==null?void 0:f.oglObject)!=null&&b.getHandle())||(f==null?void 0:f.hash)!==l,d=e.renderable.getUpdatedExtents(),h=!!d.length;if(u&&!h){e.openGLTexture=Vr.newInstance(),e.openGLTexture.setOpenGLRenderWindow(e._openGLRenderWindow),e.openGLTexture.setOglNorm16Ext(e.context.getExtension("EXT_texture_norm16")),e.openGLTexture.resetFormatAndType();const P=a.getDimensions();e.openGLTexture.create3DFilterableFromDataArray(P[0],P[1],P[2],s,!1,d),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;if(h){e.renderable.setUpdatedExtents([]);const P=a.getDimensions();e.openGLTexture.create3DFilterableFromDataArray(P[0],P[1],P[2],s,!1,d)}const g=o.getProperty(),p=g.getIndependentComponents(),v=p?c:1,y=p?2*v:1,m=g.getRGBTransferFunction();l=Pl(m,p,v);const w=e._openGLRenderWindow.getGraphicsResourceForObject(m);if(!((D=w==null?void 0:w.oglObject)!=null&&D.getHandle())||(w==null?void 0:w.hash)!==l){const M=1024*y*3,L=new Uint8ClampedArray(M);if(e.colorTexture=Vr.newInstance(),e.colorTexture.setOpenGLRenderWindow(e._openGLRenderWindow),m){const B=new Float32Array(3072);for(let j=0;j0){const B=e.resliceGeom.getPointData().getNormals();B?L.normals=B:id("Slab mode requested without normals")}e.tris.getCABO().createVBO(M,"polys",Io.SURFACE,L)}e.VBOBuildString=_,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)||id("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)||id("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();zr(e.tmpMat4,f.getIndexToWorld()),or(e.tmpMat4,e.tmpMat4,[-.5,-.5,-.5]),Ml(e.tmpMat4,e.tmpMat4,u),ei(e.tmpMat4,e.tmpMat4),l&&Ln(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")&&(Lt(e.tmpMat4),u.setUniformMatrix("MCPCMatrix",F6([s.wcpc,c.mcwc,f],tm,e.tmpMat4))),u.isUniformUsed("MCVCMatrix")&&(Lt(e.tmpMat4),u.setUniformMatrix("MCVCMatrix",F6([s.wcvc,c.mcwc,f],tm,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=_re,i.Fragment=Ere,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=Le.substitute(s,"//VTK::ZBuffer::Dec","uniform int depthRequest;").result,s=Le.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=Le.substitute(s,"//VTK::TCoord::Dec",f).result;const d=["fragTexCoord = (WCTCMatrix * vertexWC).xyz;"];s=Le.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 y=1;y0&&(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=Le.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 y=["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=Le.substitute(s,"//VTK::PositionVC::Dec",u).result;let d=["gl_Position = MCPCMatrix * vertexWC;"];f>0&&(d=d.concat(["normalWCVSOutput = normalWC;","vertexWCVSOutput = vertexWC;"])),s=Le.substitute(s,"//VTK::PositionVC::Impl",d).result,s=Le.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=Le.substitute(l,"//VTK::PositionVC::Dec",h).result,i.Vertex=s,i.Geometry=c,i.Fragment=l};function n(i){Dt.normalize(i);const o=[0,0,0];for(let a=0;a<3;++a){KQ(o),o[a]=1;const s=Dt.dot(i,o);if(s<-.999999||s>.999999)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=em();o&&(i=i.concat(`Image${o.getMTime()}`),pL(d,...o.getDirection()),Pg(d,d));const h=[...f.getNormal()];s1(h,h,d),[s,c]=n(h)}else{const d=Wr.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=Dr.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 y=new Uint16Array(8);y[0]=3,y[1]=0,y[2]=1,y[3]=3,y[4]=3,y[5]=0,y[6]=3,y[7]=2;const m=f.getNormal();Dt.normalize(m);const w=new Float32Array(12);for(let C=0;C<4;++C)w[3*C]=m[0],w[3*C+1]=m[1],w[3*C+2]=m[2];e.resliceGeom||(e.resliceGeom=Dr.newInstance()),e.resliceGeom.getPoints().setData(d,3),e.resliceGeom.getPolys().setData(y,1);const x=Nt.newInstance({numberOfComponents:3,values:w,name:"Normals"});e.resliceGeom.getPointData().setNormals(x)}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=Dr.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();Dt.normalize(h);const p=new Float32Array(g*3);for(let y=0;y{i&&(e.openGLTexture=i,e._externalOpenGLTexture=!0)},t.delete=zm(()=>{e._openGLRenderWindow&&r(e._openGLRenderWindow)},t.delete)}const Ure={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 Bre(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Ure,r),gr.extend(t,e,r),Ol.implementReplaceShaderCoincidentOffset(t,e,r),Ol.implementBuildShadersWithReplacements(t,e,r),e.tris=Ul.newInstance(),e.openGLTexture=null,e.colorTexture=null,e.pwfTexture=null,e.VBOBuildTime={},xr(e.VBOBuildTime),e.tmpMat4=Lt(new Float64Array(16)),e.outlineFilter=ure.newInstance(),e.outlineFilter.setGenerateFaces(!0),e.outlineFilter.setGenerateLines(!1),e.cubePolyData=Dr.newInstance(),e.cutter=Dne.newInstance(),e.lineToSurfaceFilter=Sne.newInstance(),e.transform=Tre.newInstance(),Qo(t,e,["openGLTexture"]),Fre(t,e)}const Gre=jn(Bre,"vtkOpenGLImageResliceMapper");Ri("vtkImageResliceMapper",Gre);const Wre={NONE:-1,I:0,J:1,K:2,X:3,Y:4,Z:5};var ix={SlicingMode:Wre},q4=`//VTK::System::Dec +`;function NJ(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=Ot.newInstance({numberOfComponents:3,values:r});o.setName("points");const a=Ot.newInstance({numberOfComponents:2,values:n});a.setName("tcoords");const s=Ot.newInstance({numberOfComponents:1,values:i});e.tris.getCABO().createVBO(s,"polys",RJ.SURFACE,{points:o,tcoords:a,cellOffset:0}),e.VBOBuildTime.modified()},t.createFramebuffer=r=>{const n=r.getSize(),i=r.getContext();e.framebuffer=sw.newInstance(),e.framebuffer.setOpenGLRenderWindow(r),e.framebuffer.create(...n),e.framebuffer.saveCurrentBindingsAndBuffers(),e.framebuffer.bind(),e.translucentRGBATexture=br.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=br.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=br.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(` +`),AJ,"")},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)||iD("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)||iD("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=v4.newInstance(),e.copyVAO.setOpenGLRenderWindow(r)),e.copyVAO.bind(),e.VBOBuildTime.getMTime()e._supported?LJ: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 kJ={framebuffer:null,copyShader:null,tris:null};function fL(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,kJ,r),r4.extend(t,e,r),e.VBOBuildTime={},Q.obj(e.VBOBuildTime,{mtime:0}),e.tris=wl.newInstance(),Q.get(t,e,["framebuffer"]),NJ(t,e)}const VJ=Q.newInstance(fL,"vtkOpenGLOrderIndependentTranslucentPass");var FJ={newInstance:VJ,extend:fL};function UJ(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=sw.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=FJ.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 BJ={opaqueActorCount:0,translucentActorCount:0,volumeCount:0,overlayActorCount:0,framebuffer:null,depthRequested:!1};function dL(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,BJ,r),r4.extend(t,e,r),Q.get(t,e,["framebuffer","opaqueActorCount","translucentActorCount","volumeCount"]),UJ(t,e)}const GJ=Q.newInstance(dL,"vtkForwardPass");var WJ={newInstance:GJ,extend:dL};const ea={MIN_KNOWN_PASS:0,ACTOR_PASS:0,COMPOSITE_INDEX_PASS:1,ID_LOW24:2,ID_HIGH24:3,MAX_KNOWN_PASS:3};var hL={PassTypes:ea};const{vtkErrorMacro:oD,vtkWarningMacro:zJ}=Q;function $J(t,e){e.classHierarchy.push("vtkFieldData");const r=t.getState;e.arrays&&(e.arrays=e.arrays.map(n=>({data:uc(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 oD("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=Ot.newInstance({name:a.getName(),dataType:a.getDataType(),numberOfComponents:l,values:Q.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),zJ("Unexpected case in interpolateData")}else f.insertTuples(c.getTuples());else oD("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=Ot.newInstance({name:c.getName(),dataType:c.getDataType(),numberOfComponents:u,values:Q.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 jJ={arrays:[],copyFieldFlags:[],doCopyAllOn:!0,doCopyAllOff:!1};function gL(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,jJ,r),Q.obj(t,e),$J(t,e)}const HJ=Q.newInstance(gL,"vtkFieldData");var KJ={newInstance:HJ,extend:gL};const qJ={SCALARS:0,VECTORS:1,NORMALS:2,TCOORDS:3,TENSORS:4,GLOBALIDS:5,PEDIGREEIDS:6,EDGEFLAG:7,NUM_ATTRIBUTES:8},XJ={MAX:0,EXACT:1,NOLIMIT:2},YJ={DUPLICATECELL:1,HIGHCONNECTIVITYCELL:2,LOWCONNECTIVITYCELL:4,REFINEDCELL:8,EXTERIORCELL:16,HIDDENCELL:32},JJ={DUPLICATEPOINT:1,HIDDENPOINT:2},ZJ={COPYTUPLE:0,INTERPOLATE:1,PASSDATA:2,ALLCOPY:3},QJ="vtkGhostType",My={DEFAULT:0,SINGLE:1,DOUBLE:2};var pL={AttributeCopyOperations:ZJ,AttributeLimitTypes:XJ,AttributeTypes:qJ,CellGhostTypes:YJ,DesiredOutputPrecision:My,PointGhostTypes:JJ,ghostArrayName:QJ};const{AttributeTypes:Su,AttributeCopyOperations:kf}=pL,{vtkWarningMacro:c2}=Q;function eZ(t,e){const r=["Scalars","Vectors","Normals","TCoords","Tensors","GlobalIds","PedigreeIds"];function n(a){let s=r.find(c=>Su[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 c2(`Cannot set attribute ${c}. The attribute must be a vtkDataArray.`),-1;if(a&&!t.checkNumberOfComponents(a,c))return c2(`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[kf.PASSDATA][Su[c]]=!1},t[`copy${a}On`]=()=>{const c=a.toUpperCase();e.copyAttributeFlags[kf.PASSDATA][Su[c]]=!0}}),t.initializeAttributeCopyFlags=()=>{e.copyAttributeFlags=[],Object.keys(kf).filter(a=>a!=="ALLCOPY").forEach(a=>{e.copyAttributeFlags[kf[a]]=Object.keys(Su).filter(s=>s!=="NUM_ATTRIBUTES").reduce((s,c)=>(s[Su[c]]=!0,s),[])}),e.copyAttributeFlags[kf.COPYTUPLE][Su.GLOBALIDS]=!1,e.copyAttributeFlags[kf.INTERPOLATE][Su.GLOBALIDS]=!1,e.copyAttributeFlags[kf.COPYTUPLE][Su.PEDIGREEIDS]=!1},t.initialize=Q.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(Ot.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 tZ={activeScalars:-1,activeVectors:-1,activeTensors:-1,activeNormals:-1,activeTCoords:-1,activeGlobalIds:-1,activePedigreeIds:-1};function mL(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,tZ,r),KJ.extend(t,e,r),Q.setGet(t,e,["activeScalars","activeNormals","activeTCoords","activeVectors","activeTensors","activeGlobalIds","activePedigreeIds"]),e.arrays||(e.arrays={}),eZ(t,e)}const nZ=Q.newInstance(mL,"vtkDataSetAttributes");var aD={newInstance:nZ,extend:mL,...pL};const rZ={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},iZ={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 oZ={FieldDataTypes:rZ,FieldAssociations:iZ};const vS=["pointData","cellData","fieldData"];function aZ(t,e){e.classHierarchy.push("vtkDataSet"),vS.forEach(n=>{e[n]?e[n]=uc(e[n]):e[n]=aD.newInstance()});const r=t.shallowCopy;t.shallowCopy=function(n){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;r(n,i),vS.forEach(o=>{e[o]=aD.newInstance(),e[o].shallowCopy(n.getReferenceByName(o))})}}const sZ={};function vL(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,sZ,r),Q.obj(t,e),Q.setGet(t,e,vS),aZ(t,e)}const cZ=Q.newInstance(vL,"vtkDataSet");var Jh={newInstance:cZ,extend:vL,...oZ};const{FieldAssociations:lZ}=Jh;function uZ(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 fZ={fieldAssociation:lZ.FIELD_ASSOCIATION_CELLS,captureZValues:!1};function yL(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,fZ,r),Q.obj(t,e),Q.setGet(t,e,["fieldAssociation","captureZValues"]),uZ(t,e)}const dZ=Q.newInstance(yL,"vtkHardwareSelector");var hZ={newInstance:dZ,extend:yL};const gZ={GLOBALIDS:0,PEDIGREEIDS:1,VALUES:2,INDICES:3,FRUSTUM:4,LOCATIONS:5,THRESHOLDS:6,BLOCKS:7,QUERY:8},pZ={CELL:0,POINT:1,FIELD:2,VERTEX:3,EDGE:4,ROW:5};var mZ={SelectionContent:gZ,SelectionField:pZ};function vZ(t,e){e.classHierarchy.push("vtkSelectionNode"),t.getBounds=()=>e.points.getBounds()}const yZ={contentType:-1,fieldType:-1,properties:null,selectionList:[]};function wL(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,yZ,r),Q.obj(t,e),e.properties={},Q.setGet(t,e,["contentType","fieldType","properties","selectionList"]),vZ(t,e)}const wZ=Q.newInstance(wL,"vtkSelectionNode");var xL={newInstance:wZ,extend:wL,...mZ};const{PassTypes:vi}=hL,{SelectionContent:xZ,SelectionField:sD}=xL,{FieldAssociations:_p}=Jh,{vtkErrorMacro:CL}=Q,Bu=1;function SL(t){return`${t.propID} ${t.compositeID}`}function TL(t,e,r,n){if(!r)return 0;const i=(e*(n[2]-n[0]+1)+t)*4;return r[i+3]}function $l(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 _L(t,e){let r=e;return r<<=24,r|=t,r}function CZ(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=$l(i[0],i[1],t.pixBuffer[vi.ACTOR_PASS],t.area);if(o<=0||o-Bu>=t.props.length)return null;const a={};a.valid=!0,a.propID=o-Bu,a.prop=t.props[a.propID];let s=$l(i[0],i[1],t.pixBuffer[vi.COMPOSITE_INDEX_PASS],t.area);if((s<0||s>16777215)&&(s=0),a.compositeID=s-Bu,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[vi.ID_LOW24]&&TL(i[0],i[1],t.pixBuffer[vi.ID_LOW24],t.area)===0)return a;const c=$l(i[0],i[1],t.pixBuffer[vi.ID_LOW24],t.area),l=$l(i[0],i[1],t.pixBuffer[vi.ID_HIGH24],t.area);return a.attributeID=_L(c,l),a}}function EL(t,e,r,n,i){const o=[];let a=0;return e.forEach((s,c)=>{const l=xL.newInstance();switch(l.setContentType(xZ.INDICES),t){case _p.FIELD_ASSOCIATION_CELLS:l.setFieldType(sD.CELL);break;case _p.FIELD_ASSOCIATION_POINTS:l.setFieldType(sD.POINT);break;default:CL("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 SZ(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=CZ(t,[d,u],0,f);if(g&&g.valid){const p=SL(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=sw.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===_p.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 CL("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=vi.MIN_KNOWN_PASS;e.currentPass<=vi.MAX_KNOWN_PASS;e.currentPass++)t.passRequired(e.currentPass)&&(t.preCapturePass(e.currentPass),e.captureZValues&&e.currentPass===vi.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=vi.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===vi.ID_HIGH24){if(e.fieldAssociation===_p.FIELD_ASSOCIATION_POINTS)return e.maximumPointId>16777215;if(e.fieldAssociation===_p.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===vi.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=$l(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===vi.ACTOR_PASS&&(t.setPropColorValueFromInt(e.props.length+Bu),e.props.push(n))},t.renderCompositeIndex=n=>{e.currentPass===vi.COMPOSITE_INDEX_PASS&&t.setPropColorValueFromInt(n+Bu)},t.renderAttributeId=n=>{n<0||(e.maxAttributeId=n>e.maxAttributeId?n:e.maxAttributeId)},t.passTypeToString=n=>Q.enumToString(vi,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=$l(f[0],f[1],e.pixBuffer[vi.ACTOR_PASS],e.area);if(u<=0||u-Bu>=e.props.length)return null;const d={};d.valid=!0,d.propID=u-Bu,d.prop=e.props[d.propID];let h=$l(f[0],f[1],e.pixBuffer[vi.COMPOSITE_INDEX_PASS],e.area);if((h<0||h>16777215)&&(h=0),d.compositeID=h-Bu,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[vi.ID_LOW24]&&TL(f[0],f[1],e.pixBuffer[vi.ID_LOW24],e.area)===0)return d;const g=$l(f[0],f[1],e.pixBuffer[vi.ID_LOW24],e.area),p=$l(f[0],f[1],e.pixBuffer[vi.ID_HIGH24],e.area);return d.attributeID=_L(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 y=SL(v);if(!u.has(y))u.set(y,{info:v,pixelCount:1,attributeIDs:[v.attributeID]});else{const m=u.get(y);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 _Z={area:void 0,currentPass:-1,propColorValue:null,props:null,maximumPointId:0,maximumCellId:0,idOffset:1};function bL(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,_Z,r),hZ.extend(t,e,r),e.propColorValue=[0,0,0],e.props=[],e.area||(e.area=[0,0,0,0]),Q.setGetArray(t,e,["area"],4),Q.setGet(t,e,["_renderer","currentPass","_openGLRenderWindow","maximumPointId","maximumCellId"]),Q.setGetArray(t,e,["propColorValue"],3),Q.moveToProtected(t,e,["renderer","openGLRenderWindow"]),Q.event(t,e,"event"),TZ(t,e)}const EZ=Q.newInstance(bL,"vtkOpenGLHardwareSelector");var y4={newInstance:EZ,extend:bL,...hL},DL={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(y,m){var w=y[0],x=y[1],C=y[2],S=y[3];w+=(x&C|~x&S)+m[0]-680876936|0,w=(w<<7|w>>>25)+x|0,S+=(w&x|~w&C)+m[1]-389564586|0,S=(S<<12|S>>>20)+w|0,C+=(S&w|~S&x)+m[2]+606105819|0,C=(C<<17|C>>>15)+S|0,x+=(C&S|~C&w)+m[3]-1044525330|0,x=(x<<22|x>>>10)+C|0,w+=(x&C|~x&S)+m[4]-176418897|0,w=(w<<7|w>>>25)+x|0,S+=(w&x|~w&C)+m[5]+1200080426|0,S=(S<<12|S>>>20)+w|0,C+=(S&w|~S&x)+m[6]-1473231341|0,C=(C<<17|C>>>15)+S|0,x+=(C&S|~C&w)+m[7]-45705983|0,x=(x<<22|x>>>10)+C|0,w+=(x&C|~x&S)+m[8]+1770035416|0,w=(w<<7|w>>>25)+x|0,S+=(w&x|~w&C)+m[9]-1958414417|0,S=(S<<12|S>>>20)+w|0,C+=(S&w|~S&x)+m[10]-42063|0,C=(C<<17|C>>>15)+S|0,x+=(C&S|~C&w)+m[11]-1990404162|0,x=(x<<22|x>>>10)+C|0,w+=(x&C|~x&S)+m[12]+1804603682|0,w=(w<<7|w>>>25)+x|0,S+=(w&x|~w&C)+m[13]-40341101|0,S=(S<<12|S>>>20)+w|0,C+=(S&w|~S&x)+m[14]-1502002290|0,C=(C<<17|C>>>15)+S|0,x+=(C&S|~C&w)+m[15]+1236535329|0,x=(x<<22|x>>>10)+C|0,w+=(x&S|C&~S)+m[1]-165796510|0,w=(w<<5|w>>>27)+x|0,S+=(w&C|x&~C)+m[6]-1069501632|0,S=(S<<9|S>>>23)+w|0,C+=(S&x|w&~x)+m[11]+643717713|0,C=(C<<14|C>>>18)+S|0,x+=(C&w|S&~w)+m[0]-373897302|0,x=(x<<20|x>>>12)+C|0,w+=(x&S|C&~S)+m[5]-701558691|0,w=(w<<5|w>>>27)+x|0,S+=(w&C|x&~C)+m[10]+38016083|0,S=(S<<9|S>>>23)+w|0,C+=(S&x|w&~x)+m[15]-660478335|0,C=(C<<14|C>>>18)+S|0,x+=(C&w|S&~w)+m[4]-405537848|0,x=(x<<20|x>>>12)+C|0,w+=(x&S|C&~S)+m[9]+568446438|0,w=(w<<5|w>>>27)+x|0,S+=(w&C|x&~C)+m[14]-1019803690|0,S=(S<<9|S>>>23)+w|0,C+=(S&x|w&~x)+m[3]-187363961|0,C=(C<<14|C>>>18)+S|0,x+=(C&w|S&~w)+m[8]+1163531501|0,x=(x<<20|x>>>12)+C|0,w+=(x&S|C&~S)+m[13]-1444681467|0,w=(w<<5|w>>>27)+x|0,S+=(w&C|x&~C)+m[2]-51403784|0,S=(S<<9|S>>>23)+w|0,C+=(S&x|w&~x)+m[7]+1735328473|0,C=(C<<14|C>>>18)+S|0,x+=(C&w|S&~w)+m[12]-1926607734|0,x=(x<<20|x>>>12)+C|0,w+=(x^C^S)+m[5]-378558|0,w=(w<<4|w>>>28)+x|0,S+=(w^x^C)+m[8]-2022574463|0,S=(S<<11|S>>>21)+w|0,C+=(S^w^x)+m[11]+1839030562|0,C=(C<<16|C>>>16)+S|0,x+=(C^S^w)+m[14]-35309556|0,x=(x<<23|x>>>9)+C|0,w+=(x^C^S)+m[1]-1530992060|0,w=(w<<4|w>>>28)+x|0,S+=(w^x^C)+m[4]+1272893353|0,S=(S<<11|S>>>21)+w|0,C+=(S^w^x)+m[7]-155497632|0,C=(C<<16|C>>>16)+S|0,x+=(C^S^w)+m[10]-1094730640|0,x=(x<<23|x>>>9)+C|0,w+=(x^C^S)+m[13]+681279174|0,w=(w<<4|w>>>28)+x|0,S+=(w^x^C)+m[0]-358537222|0,S=(S<<11|S>>>21)+w|0,C+=(S^w^x)+m[3]-722521979|0,C=(C<<16|C>>>16)+S|0,x+=(C^S^w)+m[6]+76029189|0,x=(x<<23|x>>>9)+C|0,w+=(x^C^S)+m[9]-640364487|0,w=(w<<4|w>>>28)+x|0,S+=(w^x^C)+m[12]-421815835|0,S=(S<<11|S>>>21)+w|0,C+=(S^w^x)+m[15]+530742520|0,C=(C<<16|C>>>16)+S|0,x+=(C^S^w)+m[2]-995338651|0,x=(x<<23|x>>>9)+C|0,w+=(C^(x|~S))+m[0]-198630844|0,w=(w<<6|w>>>26)+x|0,S+=(x^(w|~C))+m[7]+1126891415|0,S=(S<<10|S>>>22)+w|0,C+=(w^(S|~x))+m[14]-1416354905|0,C=(C<<15|C>>>17)+S|0,x+=(S^(C|~w))+m[5]-57434055|0,x=(x<<21|x>>>11)+C|0,w+=(C^(x|~S))+m[12]+1700485571|0,w=(w<<6|w>>>26)+x|0,S+=(x^(w|~C))+m[3]-1894986606|0,S=(S<<10|S>>>22)+w|0,C+=(w^(S|~x))+m[10]-1051523|0,C=(C<<15|C>>>17)+S|0,x+=(S^(C|~w))+m[1]-2054922799|0,x=(x<<21|x>>>11)+C|0,w+=(C^(x|~S))+m[8]+1873313359|0,w=(w<<6|w>>>26)+x|0,S+=(x^(w|~C))+m[15]-30611744|0,S=(S<<10|S>>>22)+w|0,C+=(w^(S|~x))+m[6]-1560198380|0,C=(C<<15|C>>>17)+S|0,x+=(S^(C|~w))+m[13]+1309151649|0,x=(x<<21|x>>>11)+C|0,w+=(C^(x|~S))+m[4]-145523070|0,w=(w<<6|w>>>26)+x|0,S+=(x^(w|~C))+m[11]-1120210379|0,S=(S<<10|S>>>22)+w|0,C+=(w^(S|~x))+m[2]+718787259|0,C=(C<<15|C>>>17)+S|0,x+=(S^(C|~w))+m[9]-343485551|0,x=(x<<21|x>>>11)+C|0,y[0]=w+y[0]|0,y[1]=x+y[1]|0,y[2]=C+y[2]|0,y[3]=S+y[3]|0}function o(y){var m=[],w;for(w=0;w<64;w+=4)m[w>>2]=y.charCodeAt(w)+(y.charCodeAt(w+1)<<8)+(y.charCodeAt(w+2)<<16)+(y.charCodeAt(w+3)<<24);return m}function a(y){var m=[],w;for(w=0;w<64;w+=4)m[w>>2]=y[w]+(y[w+1]<<8)+(y[w+2]<<16)+(y[w+3]<<24);return m}function s(y){var m=y.length,w=[1732584193,-271733879,-1732584194,271733878],x,C,S,T,_,E;for(x=64;x<=m;x+=64)i(w,o(y.substring(x-64,x)));for(y=y.substring(x-64),C=y.length,S=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],x=0;x>2]|=y.charCodeAt(x)<<(x%4<<3);if(S[x>>2]|=128<<(x%4<<3),x>55)for(i(w,S),x=0;x<16;x+=1)S[x]=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(w,S),w}function c(y){var m=y.length,w=[1732584193,-271733879,-1732584194,271733878],x,C,S,T,_,E;for(x=64;x<=m;x+=64)i(w,a(y.subarray(x-64,x)));for(y=x-64>2]|=y[x]<<(x%4<<3);if(S[x>>2]|=128<<(x%4<<3),x>55)for(i(w,S),x=0;x<16;x+=1)S[x]=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(w,S),w}function l(y){var m="",w;for(w=0;w<4;w+=1)m+=n[y>>w*8+4&15]+n[y>>w*8&15];return m}function f(y){var m;for(m=0;mS?new ArrayBuffer(0):(T=S-C,_=new ArrayBuffer(T),E=new Uint8Array(_),b=new Uint8Array(this,C,T),E.set(b),_)}}();function u(y){return/[\u0080-\uFFFF]/.test(y)&&(y=unescape(encodeURIComponent(y))),y}function d(y,m){var w=y.length,x=new ArrayBuffer(w),C=new Uint8Array(x),S;for(S=0;S>2]|=m.charCodeAt(x)<<(x%4<<3);return this._finish(C,w),S=f(this._hash),y&&(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(y){return this._buff=y.buff,this._length=y.length,this._hash=y.hash,this},v.prototype.destroy=function(){delete this._hash,delete this._buff,delete this._length},v.prototype._finish=function(y,m){var w=m,x,C,S;if(y[w>>2]|=128<<(w%4<<3),w>55)for(i(this._hash,y),w=0;w<16;w+=1)y[w]=0;x=this._length*8,x=x.toString(16).match(/(.*?)(.{0,8})$/),C=parseInt(x[2],16),S=parseInt(x[1],16)||0,y[14]=C,y[15]=S,i(this._hash,y)},v.hash=function(y,m){return v.hashBinary(u(y),m)},v.hashBinary=function(y,m){var w=s(y),x=f(w);return m?p(x):x},v.ArrayBuffer=function(){this.reset()},v.ArrayBuffer.prototype.append=function(y){var m=g(this._buff.buffer,y),w=m.length,x;for(this._length+=y.byteLength,x=64;x<=w;x+=64)i(this._hash,a(m.subarray(x-64,x)));return this._buff=x-64>2]|=m[C]<<(C%4<<3);return this._finish(x,w),S=f(this._hash),y&&(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 y=v.prototype.getState.call(this);return y.buff=h(y.buff),y},v.ArrayBuffer.prototype.setState=function(y){return y.buff=d(y.buff,!0),v.prototype.setState.call(this,y)},v.ArrayBuffer.prototype.destroy=v.prototype.destroy,v.ArrayBuffer.prototype._finish=v.prototype._finish,v.ArrayBuffer.hash=function(y,m){var w=c(new Uint8Array(y)),x=f(w);return m?p(x):x},v})})(DL);var bZ=DL.exports;const DZ=yl(bZ),IZ=["lastShaderProgramBound","context","_openGLRenderWindow"];function OZ(t,e){e.classHierarchy.push("vtkShaderCache"),t.replaceShaderValues=(r,n,i)=>{let o=n;i.length>0&&(o=Pe.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=Pe.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=Pe.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=Pe.substitute(l,"varying","out").result,o=Pe.substitute(o,"varying","in").result;let u="",d=0;for(;o.includes(`gl_FragData[${d}]`);)o=Pe.substitute(o,`gl_FragData\\[${d}\\]`,`fragOutput${d}`).result,u+=`layout(location = ${d}) out vec4 fragOutput${d}; +`,d++;o=Pe.substitute(o,"//VTK::Output::Dec",u).result}const f=Pe.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=DZ.hash(o);if(!(a in e.shaderPrograms)){const s=Pe.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 MZ={lastShaderProgramBound:null,shaderPrograms:null,context:null};function IL(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,MZ,r),e.shaderPrograms={},Q.obj(t,e),Q.setGet(t,e,IZ),Q.moveToProtected(t,e,["openGLRenderWindow"]),OZ(t,e)}const PZ=Q.newInstance(IL,"vtkShaderCache");var RZ={newInstance:PZ,extend:IL};const{vtkErrorMacro:LZ}=Q;function AZ(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,NZ,r),Q.obj(t,e),e.textureUnits=[],Q.get(t,e,["numberOfTextureUnits"]),Q.setGet(t,e,["context"]),AZ(t,e)}const kZ=Q.newInstance(OL,"vtkOpenGLTextureUnitManager");var VZ={newInstance:kZ,extend:OL};function FZ(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=()=>{Q.vtkErrorMacro("not implemented")},t.getPixelData=(r,n,i,o)=>{Q.vtkErrorMacro("not implemented")},t.createSelector=()=>{Q.vtkErrorMacro("not implemented")}}const UZ={size:void 0,selector:void 0};function ML(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,UZ,r),e.size||(e.size=[300,300]),Q.getArray(t,e,["size"],2),Q.get(t,e,["selector"]),cr.extend(t,e,r),FZ(t,e)}const BZ=Q.newInstance(ML,"vtkRenderWindowViewNode");var GZ={newInstance:BZ,extend:ML};const WZ="__getUnderlyingContext";function zZ(){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===WZ)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:cD,vtkErrorMacro:lD}=Q,$Z={position:"absolute",top:0,left:0,width:"100%",height:"100%"},jZ=["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 Jo(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 Py=0;const uw=[];function HZ(){Py++,uw.forEach(t=>t(Py))}function KZ(){Py--,uw.forEach(t=>t(Py))}function qZ(t){uw.push(t)}function XZ(t){return uw.pop()}function uD(t){t.preventDefault()}function YZ(t,e){e.classHierarchy.push("vtkOpenGLRenderWindow");let r;function n(){return r||(r=zZ()),r}t.getViewNodeFactory=()=>e.myFactory,e.canvas.addEventListener("webglcontextlost",uD,!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&&HZ(),e.textureUnitManager=VZ.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&&lD("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,cD("using webgl2"))),d||(cD("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=r4.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){lD("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 gn.CHAR:case gn.SIGNED_CHAR:case gn.UNSIGNED_CHAR:return 1;case d:case h:case gn.UNSIGNED_SHORT:case gn.SHORT:case gn.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 gn.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&&gn.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&&gn.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 gn.UNSIGNED_SHORT:case gn.SHORT:case gn.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(x=>{if(x.getContainer){const S=x.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,y)=>{const m=t.onImageReady(w=>{var x;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(C=>{let{restoreParamsFn:S,arg:T}=C;return S(T)}),t.traverseAllPasses(),e.el.removeChild(e._screenshot.placeHolder),e._screenshot.placeHolder.remove(),e._screenshot=null),v(w);else{const C=document.createElement("img");if(C.style=$Z,C.src=w,e._screenshot.placeHolder=e.el.appendChild(C),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,t.modified(),d){const S=d!==!0;e._screenshot.cameras=e.renderable.getRenderers().map(T=>{const _=T.getActiveCamera(),E=_.get("focalPoint","position","parallelScale");return{resetCameraArgs:S?{renderer:T}:void 0,resetCameraFn:S?d:T.resetCamera,restoreParamsFn:_.set,arg:JSON.parse(JSON.stringify(E))}}),e._screenshot.cameras.forEach(T=>{let{resetCameraFn:_,resetCameraArgs:E}=T;return _(E)})}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"),y=[["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&&Jo(u,u.RGBA,u.UNSIGNED_BYTE)?"RGBA":"",d&&Jo(u,u.RGB,u.UNSIGNED_BYTE)?"RGB":"",d&&Jo(u,u.LUMINANCE,u.UNSIGNED_BYTE)?"LUMINANCE":"",d&&Jo(u,u.ALPHA,u.UNSIGNED_BYTE)?"ALPHA":"",d&&Jo(u,u.LUMINANCE_ALPHA,u.UNSIGNED_BYTE)?"LUMINANCE_ALPHA":""].join(" ")],["Supported Formats for Half Float Render Targets","HALF FLOAT RENDER TARGET FORMATS",[h&&Jo(u,u.RGBA,h.HALF_FLOAT_OES)?"RGBA":"",h&&Jo(u,u.RGB,h.HALF_FLOAT_OES)?"RGB":"",h&&Jo(u,u.LUMINANCE,h.HALF_FLOAT_OES)?"LUMINANCE":"",h&&Jo(u,u.ALPHA,h.HALF_FLOAT_OES)?"ALPHA":"",h&&Jo(u,u.LUMINANCE_ALPHA,h.HALF_FLOAT_OES)?"LUMINANCE_ALPHA":""].join(" ")],["Supported Formats for Full Float Render Targets","FLOAT RENDER TARGET FORMATS",[d&&Jo(u,u.RGBA,u.FLOAT)?"RGBA":"",d&&Jo(u,u.RGB,u.FLOAT)?"RGB":"",d&&Jo(u,u.LUMINANCE,u.FLOAT)?"LUMINANCE":"",d&&Jo(u,u.ALPHA,u.FLOAT)?"ALPHA":"",d&&Jo(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(;y.length;){const[w,x,C]=y.pop();x&&(m[x]={label:w,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=y4.newInstance();return u.setOpenGLRenderWindow(t),u};function c(){e.canvas.removeEventListener("webglcontextlost",uD),e.canvas.removeEventListener("webglcontextrestored",t.restoreContext)}t.delete=Q.chain(()=>{e.context&&KZ(),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};jZ.forEach(u=>{t[u]=function(){return e.rootOpenGLRenderWindow?e.rootOpenGLRenderWindow[u](...arguments):f[u](...arguments)}})}const JZ={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 PL(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,JZ,r),GZ.extend(t,e,r),e.canvas||(e.canvas=document.createElement("canvas"),e.canvas.style.width="100%"),e.selector||(e.selector=y4.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=NX.newInstance(),e.shaderCache=RZ.newInstance(),e.shaderCache.setOpenGLRenderWindow(t),e.renderPasses[0]=WJ.newInstance(),Q.get(t,e,["shaderCache","textureUnitManager","webgl2","useBackgroundImage","activeFramebuffer","rootOpenGLRenderWindow"]),Q.setGet(t,e,["initialized","context","context2D","canvas","renderPasses","notifyStartCaptureImage","defaultToWebgl2","cursor","useOffScreen"]),Q.setGetArray(t,e,["size"],2),Q.event(t,e,"imageReady"),Q.event(t,e,"windowResizeEvent"),YZ(t,e)}const w4=Q.newInstance(PL,"vtkOpenGLRenderWindow");nR("WebGL",w4);var ZZ={newInstance:w4,extend:PL,pushMonitorGLContextCount:qZ,popMonitorGLContextCount:XZ};Si("vtkRenderWindow",w4);function QZ(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(),Pr(e.keyMatrices.mcwc,e.renderable.getMatrix()),wn(e.keyMatrices.mcwc,e.keyMatrices.mcwc),e.renderable.getIsIdentity()?bs(e.keyMatrices.normalMatrix):(cw(e.keyMatrices.normalMatrix,e.keyMatrices.mcwc),c1(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix),o4(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix)),e.keyMatrixTime.modified()),e.keyMatrices)}const eQ={context:null,keyMatrixTime:null,keyMatrices:null,activeTextures:null};function tQ(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,eQ,r),cr.extend(t,e,r),e.keyMatrixTime={},pr(e.keyMatrixTime,{mtime:0}),e.keyMatrices={normalMatrix:bs(new Float64Array(9)),mcwc:Pt(new Float64Array(16))},si(t,e,["context"]),Wo(t,e,["activeTextures"]),QZ(t,e)}const RL=Wn(tQ);var nQ={newInstance:RL};Si("vtkActor",RL);function rQ(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,iQ,r),cr.extend(t,e,r),si(t,e,["context"]),Wo(t,e,["activeTextures"]),rQ(t,e)}const LL=Wn(oQ);var aQ={newInstance:LL};Si("vtkActor2D",LL);function sQ(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()){Pr(e.keyMatrices.wcvc,e.renderable.getViewMatrix()),cw(e.keyMatrices.normalMatrix,e.keyMatrices.wcvc),c1(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix),wn(e.keyMatrices.wcvc,e.keyMatrices.wcvc);const n=e._openGLRenderer.getAspectRatio();Pr(e.keyMatrices.vcpc,e.renderable.getProjectionMatrix(n,-1,1)),wn(e.keyMatrices.vcpc,e.keyMatrices.vcpc),Dn(e.keyMatrices.wcpc,e.keyMatrices.vcpc,e.keyMatrices.wcvc),e.keyMatrixTime.modified(),e.lastRenderer=r}return e.keyMatrices}}const cQ={context:null,lastRenderer:null,keyMatrixTime:null,keyMatrices:null};function lQ(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,cQ,r),cr.extend(t,e,r),e.keyMatrixTime={},pr(e.keyMatrixTime),e.keyMatrices={normalMatrix:new Float64Array(9),vcpc:new Float64Array(16),wcvc:new Float64Array(16),wcpc:new Float64Array(16)},si(t,e,["context","keyMatrixTime"]),sQ(t,e)}const AL=Wn(lQ);var uQ={newInstance:AL};Si("vtkCamera",AL);function fQ(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,dQ,r),Q.obj(t,e),Q.algo(t,e,1,0),e.clippingPlanes||(e.clippingPlanes=[]),fQ(t,e)}var NL={extend:hQ};function gQ(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=>{Q.vtkErrorMacro("not implemented")}}const pQ={};function kL(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,pQ,r),Q.obj(t,e),Q.setGet(t,e,["transform"]),gQ(t,e)}const mQ=Q.newInstance(kL,"vtkImplicitFunction");var vQ={newInstance:mQ,extend:kL};const yS=1e-6,VL="coincide",FL="disjoint";function yQ(t,e,r){return t[0]*(r[0]-e[0])+t[1]*(r[1]-e[1])+t[2]*(r[2]-e[2])}function UL(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 BL(t,e,r,n){const i=[];Ql(t,e,i);const o=yn(r,i);n[0]=t[0]-o*r[0],n[1]=t[1]-o*r[1],n[2]=t[2]-o*r[2]}function GL(t,e,r){const n=yn(t,e);let i=yn(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 WL(t,e,r,n){const i=[];Ql(t,e,i);const o=yn(r,i),a=yn(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 zL(t,e,r,n){const i={intersection:!1,betweenPoints:!1,t:Number.MAX_VALUE,x:[]},o=[],a=[];Ql(e,t,o),Ql(r,t,a);const s=yn(n,a),c=yn(n,o);let l,f;return c<0?l=-c:l=c,s<0?f=-s*yS:f=s*yS,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 $L(t,e,r,n){const i={intersection:!1,l0:[],l1:[],error:null},o=[];ul(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=-yn(e,t),f=-yn(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,_y(c,o,i.l1),i.intersection=!0,i}const wQ={evaluate:yQ,distanceToPlane:UL,projectPoint:BL,projectVector:GL,generalizedProjectPoint:WL,intersectWithLine:zL,intersectWithPlane:$L,DISJOINT:FL,COINCIDE:VL};function xQ(t,e){e.classHierarchy.push("vtkPlane"),t.distanceToPlane=r=>UL(r,e.origin,e.normal),t.projectPoint=(r,n)=>{BL(r,e.origin,e.normal,n)},t.projectVector=(r,n)=>GL(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)=>{WL(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)=>zL(r,n,e.origin,e.normal),t.intersectWithPlane=(r,n)=>$L(r,n,e.origin,e.normal)}const CQ={normal:[0,0,1],origin:[0,0,0]};function jL(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,CQ,r),vQ.extend(t,e,r),Q.setGetArray(t,e,["normal","origin"],3),xQ(t,e)}const SQ=Q.newInstance(jL,"vtkPlane");var Fo={newInstance:SQ,extend:jL,...wQ};const fw=[Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE];function HL(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 su(t){return(t==null?void 0:t.length)>=6&&t[0]<=t[1]&&t[2]<=t[3]&&t[4]<=t[5]}function x4(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 C4(t){return x4(t,fw)}function Ry(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 S4(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 XL(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 _4(t){return[.5*(t[0]+t[1]),.5*(t[2]+t[3]),.5*(t[4]+t[5])]}function TQ(t,e,r,n){if(!su(t))return!1;const i=_4(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],T4(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 Ep(t,e){return t[e*2+1]-t[e*2]}function dw(t){return[Ep(t,0),Ep(t,1),Ep(t,2)]}function JL(t){return t.slice(0,2)}function ZL(t){return t.slice(2,4)}function QL(t){return t.slice(4,6)}function eA(t){const e=dw(t);return e[0]>e[1]?e[0]>e[2]?e[0]:e[2]:e[1]>e[2]?e[1]:e[2]}function tA(t){if(su(t)){const e=dw(t);return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2])}return null}function E4(t){return[t[0],t[2],t[4]]}function b4(t){return[t[1],t[3],t[5]]}function l2(t,e){return t<=0&&e>=0||t>=0&&e<=0}function D4(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 nA(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 rA(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[];const n=D4(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 oA(t,e,r,n){const i=[].concat(fw),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 sA(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=Fo.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 cA(t,e){if(!(su(t)&&su(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 Ly(t,e){if(!(su(t)&&su(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 Ay(t,e,r,n){return!(et[1]||rt[3]||nt[5])}function _Q(t,e){return!(!Ly(t,e)||!Ay(t,...E4(e))||!Ay(t,...b4(e)))}function lA(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++]=Fo.evaluate(r,e,g)}let a=2;for(;a--&&!(l2(i[n[a][0]],i[n[a][4]])&&l2(i[n[a][1]],i[n[a][5]])&&l2(i[n[a][2]],i[n[a][6]])&&l2(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 EQ{constructor(e){this.bounds=e,this.bounds||(this.bounds=new Float64Array(fw))}getBounds(){return this.bounds}equals(e){return HL(this.bounds,e)}isValid(){return su(this.bounds)}setBounds(e){return x4(this.bounds,e)}reset(){return C4(this.bounds)}addPoint(){for(var e=arguments.length,r=new Array(e),n=0;n1&&arguments[1]!==void 0?arguments[1]:[];return rA(this.bounds,e,r)}computeScale3(e){return iA(this.bounds,e)}cutWithPlane(e,r){return lA(this.bounds,e,r)}intersectBox(e,r,n,i){return aA(this.bounds,e,r,n,i)}intersectPlane(e,r){return sA(this.bounds,e,r)}intersect(e){return cA(this.bounds,e)}intersects(e){return Ly(this.bounds,e)}containsPoint(e,r,n){return Ay(this.bounds,e,r,n)}contains(e){return Ly(this.bounds,e)}}function bQ(t){const e=t&&t.bounds;return new EQ(e)}const DQ={equals:HL,isValid:su,setBounds:x4,reset:C4,addPoint:Ry,addPoints:S4,addBounds:KL,setMinPoint:qL,setMaxPoint:XL,inflate:YL,scale:T4,scaleAboutCenter:TQ,getCenter:_4,getLength:Ep,getLengths:dw,getMaxLength:eA,getDiagonalLength:tA,getMinPoint:E4,getMaxPoint:b4,getXRange:JL,getYRange:ZL,getZRange:QL,getCorners:D4,computeCornerPoints:nA,computeLocalBounds:oA,transformBounds:rA,computeScale3:iA,cutWithPlane:lA,intersectBox:aA,intersectPlane:sA,intersect:cA,intersects:Ly,containsPoint:Ay,contains:_Q,INIT_BOUNDS:fw};var tr={newInstance:bQ,...DQ};function IQ(t,e){t.getBounds=()=>(Q.vtkErrorMacro("vtkAbstractMapper3D.getBounds - NOT IMPLEMENTED"),gf()),t.getCenter=()=>{var n;const r=t.getBounds();return e.center=tr.isValid(r)?tr.getCenter(r):null,(n=e.center)==null?void 0:n.slice()},t.getLength=()=>{const r=t.getBounds();return tr.getDiagonalLength(r)}}const OQ=t=>({bounds:[...tr.INIT_BOUNDS],center:[0,0,0],viewSpecificProperties:{},...t});function MQ(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,OQ(r)),NL.extend(t,e,r),Q.setGet(t,e,["viewSpecificProperties"]),IQ(t,e)}var I4={extend:MQ};const Zs={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 uA={StructuredType:Zs};const{StructuredType:Pl}=uA;function PQ(t){let e=0;for(let r=0;r<3;++r)t[r*2]t[1]||t[2]>t[3]||t[4]>t[5]?Pl.EMPTY:e===3?Pl.XYZ_GRID:e===2?t[0]===t[1]?Pl.YZ_PLANE:t[2]===t[3]?Pl.XZ_PLANE:Pl.XY_PLANE:e===1?t[0]s!==o[c]);return a&&(e.extent=o.slice(),e.dataDescription=RQ.getDataDescriptionFromExtent(e.extent),t.modified()),a},t.setDimensions=function(){let r,n,i;if(e.deleted){Vf("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{Vf("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 Vf("Requesting a point from an empty image."),null;const i=new Float64Array(3);switch(e.dataDescription){case Zs.EMPTY:return null;case Zs.SINGLE_POINT:break;case Zs.X_LINE:i[0]=r;break;case Zs.Y_LINE:i[1]=r;break;case Zs.Z_LINE:i[2]=r;break;case Zs.XY_PLANE:i[0]=r%n[0],i[1]=r/n[0];break;case Zs.YZ_PLANE:i[1]=r%n[1],i[2]=r/n[1];break;case Zs.XZ_PLANE:i[0]=r%n[0],i[2]=r/n[0];break;case Zs.XYZ_GRID:i[0]=r%n[0],i[1]=r/n[0]%n[1],i[2]=r/(n[0]*n[1]);break;default:Vf("Invalid dataDescription");break}const o=[0,0,0];return t.indexToWorld(i,o),o},t.getBounds=()=>t.extentToBounds(t.getSpatialExtent()),t.extentToBounds=r=>tr.transformBounds(r,e.indexToWorld),t.getSpatialExtent=()=>tr.inflate([...e.extent],.5),t.computeTransforms=()=>{l1(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],fl(e.indexToWorld,e.indexToWorld,e.spacing),$r(e.worldToIndex,e.indexToWorld)},t.indexToWorld=function(r){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return Wt(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 Wt(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 tr.transformBounds(r,e.indexToWorld,n)},t.worldToIndexBounds=function(r){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return tr.transformBounds(r,e.worldToIndex,n)},t.onModified(t.computeTransforms),t.computeTransforms(),t.getCenter=()=>tr.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];tr.computeCornerPoints(i,o,a),lS(o,o),lS(a,a);const s=t.getDimensions();fS(o,[0,0,0],[s[0]-1,s[1]-1,s[2]-1],o),fS(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 w=o[2];w<=a[2];w++)for(let x=o[1];x<=a[1];x++){let C=o[0]+x*c+w*l;for(let S=o[0];S<=a[0];S++){if(!n||n([S,x,w],i)){const T=f[C];T>u&&(u=T),T0?g/p:0,y=p?Math.abs(h/p-v*v):0,m=Math.sqrt(y);return{minimum:d,maximum:u,average:v,variance:y,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 Vf(`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 Vf(`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 AQ={direction:null,indexToWorld:null,worldToIndex:null,spacing:[1,1,1],origin:[0,0,0],extent:[0,-1,0,-1,0,-1],dataDescription:Zs.EMPTY};function fA(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,AQ,r),Jh.extend(t,e,r),e.direction?Array.isArray(e.direction)&&(e.direction=new Float64Array(e.direction.slice(0,9))):e.direction=bs(new Float64Array(9)),e.indexToWorld=new Float64Array(16),e.worldToIndex=new Float64Array(16),Q.get(t,e,["indexToWorld","worldToIndex"]),Q.setGetArray(t,e,["origin","spacing"],3),Q.setGetArray(t,e,["direction"],9),Q.getArray(t,e,["extent"],6),LQ(t,e)}const NQ=Q.newInstance(fA,"vtkImageData");var u1={newInstance:NQ,extend:fA};const kQ={MAGNITUDE:0,COMPONENT:1,RGBCOLORS:2},wS={LUMINANCE:1,LUMINANCE_ALPHA:2,RGB:3,RGBA:4};var O4={VectorMode:kQ,ScalarMappingTarget:wS};const VQ={DEFAULT:0,MAP_SCALARS:1,DIRECT_SCALARS:2},FQ={DEFAULT:0,USE_POINT_DATA:1,USE_CELL_DATA:2,USE_POINT_FIELD_DATA:3,USE_CELL_FIELD_DATA:4,USE_FIELD_DATA:5},UQ={BY_ID:0,BY_NAME:1};var hw={ColorMode:VQ,GetArray:UQ,ScalarMode:FQ};const{ScalarMappingTarget:fD,VectorMode:Wc}=O4,{VtkDataTypes:Tu}=Ot,{ColorMode:u2}=hw,{vtkErrorMacro:dD}=Q;function BQ(t){return t}function hD(t){return Math.floor(t*255+.5)}function GQ(t,e){e.classHierarchy.push("vtkScalarsToColors"),t.setVectorModeToMagnitude=()=>t.setVectorMode(Wc.MAGNITUDE),t.setVectorModeToComponent=()=>t.setVectorMode(Wc.COMPONENT),t.setVectorModeToRGBColors=()=>t.setVectorMode(Wc.RGBCOLORS),t.build=()=>{},t.isOpaque=()=>!0,t.setAnnotations=(r,n)=>{if(!(r&&!n||!r&&n)){if(r&&n&&r.length!==n.length){dD("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===u2.DEFAULT&&(r.getDataType()===Tu.UNSIGNED_CHAR||r.getDataType()===Tu.UNSIGNED_CHAR_CLAMPED)||n===u2.DIRECT_SCALARS&&r)a=t.convertToRGBA(r,o,r.getNumberOfTuples());else{const s={type:"vtkDataArray",name:"temp",numberOfComponents:4,dataType:Tu.UNSIGNED_CHAR},c=Q.newTypedArray(s.dataType,4*r.getNumberOfTuples());s.values=c,s.size=c.length,a=Ot.newInstance(s);let l=i;l<0&&o>1?t.mapVectorsThroughTable(r,a,fD.RGBA,-1,-1):(l<0&&(l=0),l>=o&&(l=o-1),t.mapScalarsThroughTable(r,a,fD.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===Wc.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===Wc.MAGNITUDE&&(f===1||c===1)&&(s=Wc.COMPONENT));let u=0;switch(l>0&&(u=l),s){case Wc.COMPONENT:{t.mapScalarsThroughTable(r,n,i,u);break}case Wc.RGBCOLORS:break;case Wc.MAGNITUDE:default:{const d=Ot.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=hD(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()===Tu.UNSIGNED_CHAR)return r;const a=Ot.newInstance({numberOfComponents:4,empty:!0,size:4*i,dataType:Tu.UNSIGNED_CHAR});if(i<=0)return a;o=o>0?o:0,o=o<1?o:1;let s=BQ;switch((r.getDataType()===Tu.FLOAT||r.getDataType()===Tu.DOUBLE)&&(s=hD),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 dD("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===u2.DEFAULT&&r.getDataType()===Tu.UNSIGNED_CHAR||n===u2.DIRECT_SCALARS?o===3||o===1?e.alpha>=1:r.getRange(o-1)[0]===255:!0}}const WQ={alpha:1,vectorComponent:0,vectorSize:-1,vectorMode:Wc.COMPONENT,mappingRange:null,annotationArray:null,annotatedValueMap:null,indexedLookup:!1};function dA(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,WQ,r),Q.obj(t,e),e.mappingRange=[0,255],e.annotationArray=[],e.annotatedValueMap=[],Q.setGet(t,e,["vectorSize","vectorComponent","vectorMode","alpha","indexedLookup"]),Q.setArray(t,e,["mappingRange"],2),Q.getArray(t,e,["mappingRange"]),GQ(t,e)}const zQ=Q.newInstance(dA,"vtkScalarsToColors");var gw={newInstance:zQ,extend:dA,...O4};const{vtkErrorMacro:gD}=Q,pD=0,mD=1,Kx=2;function $Q(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+mD+1.5:(i=(o+n.shift)*n.scale,i=i{let o=0;by(r)?o=Math.floor(i.maxIndex+1.5+Kx):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+Kx);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===wS.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,nd(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+pD)*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+mD)*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+Kx)*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 jQ={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 hA(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,jQ,r),gw.extend(t,e,r),e.table||(e.table=[]),e.buildTime={},Q.obj(e.buildTime),e.opaqueFlagBuildTime={},Q.obj(e.opaqueFlagBuildTime,{mtime:0}),e.insertTime={},Q.obj(e.insertTime,{mtime:0}),Q.get(t,e,["buildTime"]),Q.setGet(t,e,["numberOfColors","useAboveRangeColor","useBelowRangeColor"]),Q.setArray(t,e,["alphaRange","hueRange","saturationRange","valueRange"],2),Q.setArray(t,e,["nanColor","belowRangeColor","aboveRangeColor"],4),Q.getArray(t,e,["hueRange","saturationRange","valueRange","alphaRange","nanColor","belowRangeColor","aboveRangeColor"]),$Q(t,e)}const HQ=Q.newInstance(hA,"vtkLookupTable");var Ny={newInstance:HQ,extend:hA};const Tc={Off:0,PolygonOffset:1};let xS=Tc.PolygonOffset,ky=Tc.Off;const KQ=["VTK_RESOLVE_OFF","VTK_RESOLVE_POLYGON_OFFSET"];function qQ(){return xS}function XQ(t){const e=xS===t;return xS=t,e}function YQ(){return ky}function pw(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;const e=ky===t;return ky=t,e}function JQ(){return pw(Tc.Off)}function ZQ(){return pw(Tc.Off)}function QQ(){return pw(Tc.PolygonOffset)}function eee(){return KQ[ky]}var CS={Resolve:Tc,getResolveCoincidentTopologyAsString:eee,getResolveCoincidentTopologyPolygonOffsetFaces:qQ,getResolveCoincidentTopology:YQ,setResolveCoincidentTopology:pw,setResolveCoincidentTopologyPolygonOffsetFaces:XQ,setResolveCoincidentTopologyToDefault:JQ,setResolveCoincidentTopologyToOff:ZQ,setResolveCoincidentTopologyToPolygonOffset:QQ};function gA(t,e,r){r.forEach(n=>{t[`get${n.method}`]=()=>e[n.key],t[`set${n.method}`]=Q.objectSetterMap.object(t,e,{name:n.key,params:["factor","offset"]})})}const M4=["Polygon","Line","Point"],tee={Polygon:{factor:2,offset:0},Line:{factor:1,offset:-1},Point:{factor:0,offset:-2}},nee=()=>{},rd={modified:nee};gA(rd,tee,M4.map(t=>({key:t,method:`ResolveCoincidentTopology${t}OffsetParameters`})));function ree(t,e){e.resolveCoincidentTopology===void 0&&(e.resolveCoincidentTopology=!1),Q.setGet(t,e,["resolveCoincidentTopology"]),e.topologyOffset={Polygon:{factor:0,offset:0},Line:{factor:0,offset:0},Point:{factor:0,offset:0}},Object.keys(CS).forEach(r=>{t[r]=CS[r]}),Object.keys(rd).filter(r=>r!=="modified").forEach(r=>{t[r]=rd[r]}),gA(t,e.topologyOffset,M4.map(r=>({key:r,method:`RelativeCoincidentTopology${r}OffsetParameters`}))),t.getCoincidentTopologyPolygonOffsetParameters=()=>{const r=rd.getResolveCoincidentTopologyPolygonOffsetParameters(),n=t.getRelativeCoincidentTopologyPolygonOffsetParameters();return{factor:r.factor+n.factor,offset:r.offset+n.offset}},t.getCoincidentTopologyLineOffsetParameters=()=>{const r=rd.getResolveCoincidentTopologyLineOffsetParameters(),n=t.getRelativeCoincidentTopologyLineOffsetParameters();return{factor:r.factor+n.factor,offset:r.offset+n.offset}},t.getCoincidentTopologyPointOffsetParameter=()=>{const r=rd.getResolveCoincidentTopologyPointOffsetParameters(),n=t.getRelativeCoincidentTopologyPointOffsetParameters();return{factor:r.factor+n.factor,offset:r.offset+n.offset}}}var mw={implementCoincidentTopologyMethods:ree,staticOffsetAPI:rd,otherStaticMethods:CS,CATEGORIES:M4,Resolve:Tc};const{FieldAssociations:vD}=Jh,{staticOffsetAPI:iee,otherStaticMethods:oee}=mw,{ColorMode:f2,ScalarMode:Ff,GetArray:qx}=hw,{VectorMode:aee}=O4,{VtkDataTypes:see}=Ot;function Mg(t){return()=>Q.vtkErrorMacro(`vtkMapper::${t} - NOT IMPLEMENTED`)}function cee(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 lee(t,e){return t[0]+e[0]*(t[1]+e[1]*t[2])}function yD(t,e,r){const n=Math.floor(e),i=n%(2*r[0]);let o,a;i=w,C=i[2]<=1?2:3,S=Ot.newInstance({numberOfComponents:C,values:new Float32Array(m*C)}),T=S.getData(),_=[0,0,0];yD(_,n+2,i);let E=0,b=0;const D=[.5,.5,.5];for(let L=0;Ln&&(k=n+1),yD(D,k,i)}else{D[1]=.49;const k=(P-h)*g;k>1e3?D[0]=1e3:k<-1e3?D[0]=-1e3:D[0]=k}for(let k=0;k{const r=t.getInputData();return r?(e.static||t.update(),e.bounds=r.getBounds()):e.bounds=gf(),e.bounds},t.setForceCompileOnly=r=>{e.forceCompileOnly=r},t.setSelectionWebGLIdsToVTKIds=r=>{e.selectionWebGLIdsToVTKIds=r},t.createDefaultLookupTable=()=>{e.lookupTable=Ny.newInstance()},t.getColorModeAsString=()=>Q.enumToString(f2,e.colorMode),t.setColorModeToDefault=()=>t.setColorMode(0),t.setColorModeToMapScalars=()=>t.setColorMode(1),t.setColorModeToDirectScalars=()=>t.setColorMode(2),t.getScalarModeAsString=()=>Q.enumToString(Ff,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===Ff.DEFAULT)s=r.getPointData().getScalars(),s||(s=r.getCellData().getScalars(),c=!0);else if(n===Ff.USE_POINT_DATA)s=r.getPointData().getScalars();else if(n===Ff.USE_CELL_DATA)s=r.getCellData().getScalars(),c=!0;else if(n===Ff.USE_POINT_FIELD_DATA){const l=r.getPointData();i===qx.BY_ID?s=l.getArrayByIndex(o):s=l.getArrayByName(a)}else if(n===Ff.USE_CELL_FIELD_DATA){const l=r.getCellData();c=!0,i===qx.BY_ID?s=l.getArrayByIndex(o):s=l.getArrayByName(a)}else if(n===Ff.USE_FIELD_DATA){const l=r.getFieldData();i===qx.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&&Ny.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,y=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)]:[y,2,1],w=m[0]*m[1]*m[2],x=new Float64Array(w);x.fill(NaN);const C=e.numberOfColorsInRange,S=C+2,T=[0,0,0],_=o[0],E=o[1]-o[0];for(let O=0;O1?-1:e.lookupTable.getVectorComponent();e.colorCoordinates=uee(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!==f2.DIRECT_SCALARS?!0:!(!e.interpolateScalarsBeforeMapping||e.lookupTable&&e.lookupTable.getIndexedLookup()||!r||e.colorMode===f2.DEFAULT&&r.getDataType()===see.UNSIGNED_CHAR||e.colorMode===f2.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=Mg("AcquireInvertibleLookupTable"),t.valueToColor=Mg("ValueToColor"),t.colorToValue=Mg("ColorToValue"),t.useInvertibleColorFor=Mg("UseInvertibleColorFor"),t.clearInvertibleColor=Mg("ClearInvertibleColor"),t.processSelectorPixelBuffers=(r,n)=>{if(!r||!e.selectionWebGLIdsToVTKIds||!e.populateSelectionSettings)return;const i=r.getRawPixelBuffer(ea.ID_LOW24),o=r.getRawPixelBuffer(ea.ID_HIGH24),a=r.getCurrentPass(),s=r.getFieldAssociation();let c=null;s===vD.FIELD_ASSOCIATION_POINTS?c=e.selectionWebGLIdsToVTKIds.points:s===vD.FIELD_ASSOCIATION_CELLS&&(c=e.selectionWebGLIdsToVTKIds.cells),c&&n.forEach(l=>{if(a===ea.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(ea.ID_LOW24);d[l]=u&255,d[l+1]=(u&65280)>>8,d[l+2]=(u&16711680)>>16}else if(a===ea.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(ea.ID_HIGH24);d[l]=(u&4278190080)>>24}})}}const dee={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 pA(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,dee,r),I4.extend(t,e,r),Q.get(t,e,["areScalarsMappedFromCells","colorCoordinates","colorMapColors","colorTextureMap","numberOfColorsInRange","selectionWebGLIdsToVTKIds"]),Q.setGet(t,e,["colorByArrayName","arrayAccessMode","colorMode","fieldDataTupleId","interpolateScalarsBeforeMapping","lookupTable","populateSelectionSettings","renderTime","scalarMode","scalarVisibility","static","useLookupTableScalarRange","customShaderAttributes"]),Q.setGetArray(t,e,["scalarRange"],2),mw.implementCoincidentTopologyMethods(t,e),fee(t,e)}const hee=Q.newInstance(pA,"vtkMapper");var ya={newInstance:hee,extend:pA,...iee,...oee,...hw};const gee={DISPLAY:0,WORLD:1};var mA={CoordinateSystem:gee};const{CoordinateSystem:SS}=mA;function xD(t){return()=>Q.vtkErrorMacro(`vtkProp::${t} - NOT IMPLEMENTED`)}function pee(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=xD("pick"),t.hasKey=xD("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(SS.WORLD),t.setCoordinateSystemToDisplay=()=>t.setCoordinateSystem(SS.DISPLAY)}const mee={allocatedRenderTime:10,coordinateSystem:SS.WORLD,dragable:!0,estimatedRenderTime:0,paths:null,pickable:!0,renderTimeMultiplier:1,savedEstimatedRenderTime:0,textures:[],useBounds:!0,visibility:!0};function vA(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,mee,r),Q.obj(t,e),Q.get(t,e,["estimatedRenderTime","allocatedRenderTime"]),Q.setGet(t,e,["_parentProp","coordinateSystem","dragable","pickable","renderTimeMultiplier","useBounds","visibility"]),Q.moveToProtected(t,e,["parentProp"]),pee(t,e)}const vee=Q.newInstance(vA,"vtkProp");var f1={newInstance:vee,extend:vA,...mA},P4=`//VTK::System::Dec /*========================================================================= @@ -259,7 +161,7 @@ void main() //VTK::Picking::Impl } -`,Jm=`//VTK::System::Dec +`,d1=`//VTK::System::Dec /*========================================================================= @@ -366,8 +268,19 @@ void main() //VTK::RenderPassFragmentShader::Impl } -`;const{vtkErrorMacro:R0}=Ao,{SlicingMode:$a}=ix;function $re(t){const e=t.split(` -`),r=[];for(let n=0;n0&&r.push(i)}return r}function zre(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()==Vc.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=q4,n.Fragment=Jm,n.Geometry=""},t.replaceShaderValues=(n,i,o)=>{let a=n.Vertex,s=n.Fragment;a=Le.substitute(a,"//VTK::Camera::Dec",["uniform mat4 MCPCMatrix;"]).result,a=Le.substitute(a,"//VTK::PositionVC::Impl",[" gl_Position = MCPCMatrix * vertexMC;"]).result,a=Le.substitute(a,"//VTK::TCoord::Impl","tcoordVCVSOutput = tcoordMC;").result,a=Le.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{const o=t.getCoincidentParameters(n,i);if(o&&(o.factor!==0||o.offset!==0)){let a=r.Fragment;a=Pe.substitute(a,"//VTK::Coincident::Dec",["uniform float cfactor;","uniform float coffset;"]).result,e.context.getExtension("EXT_frag_depth")&&(o.factor!==0?(a=Pe.substitute(a,"//VTK::UniformFlow::Impl",["float cscale = length(vec2(dFdx(gl_FragCoord.z),dFdy(gl_FragCoord.z)));","//VTK::UniformFlow::Impl"],!1).result,a=Pe.substitute(a,"//VTK::Depth::Impl","gl_FragDepthEXT = gl_FragCoord.z + cfactor*cscale + 0.000016*coffset;").result):a=Pe.substitute(a,"//VTK::Depth::Impl","gl_FragDepthEXT = gl_FragCoord.z + 0.000016*coffset;").result),e._openGLRenderWindow.getWebgl2()&&(o.factor!==0?(a=Pe.substitute(a,"//VTK::UniformFlow::Impl",["float cscale = length(vec2(dFdx(gl_FragCoord.z),dFdy(gl_FragCoord.z)));","//VTK::UniformFlow::Impl"],!1).result,a=Pe.substitute(a,"//VTK::Depth::Impl","gl_FragDepth = gl_FragCoord.z + cfactor*cscale + 0.000016*coffset;").result):a=Pe.substitute(a,"//VTK::Depth::Impl","gl_FragDepth = gl_FragCoord.z + 0.000016*coffset;").result),r.Fragment=a}}}function wee(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 dl={implementReplaceShaderCoincidentOffset:yee,implementBuildShadersWithReplacements:wee};const{FieldAssociations:Xx}=Jh,{primTypes:Bi}=wl,{Representation:r0,Shading:CD}=Kd,{ScalarMode:d2}=ya,{Filter:SD,Wrap:TD}=br,{vtkErrorMacro:Uf}=xo,xee={type:"StartEvent"},Cee={type:"EndEvent"},{CoordinateSystem:See}=f1;function Tee(t){const e=t.getSelector();return e?e.getCurrentPass():ea.MIN_KNOWN_PASS-1}function _ee(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=Bi.Start;a{n.Vertex=P4,n.Fragment=d1,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=Pe.substitute(a,"//VTK::Color::Dec",["attribute vec4 scalarColor;","varying vec4 vertexColorVSOutput;"]).result,a=Pe.substitute(a,"//VTK::Color::Impl",["vertexColorVSOutput = scalarColor;"]).result,s=Pe.substitute(s,"//VTK::Color::Dec",["in vec4 vertexColorVSOutput[];","out vec4 vertexColorGSOutput;"]).result,s=Pe.substitute(s,"//VTK::Color::Impl",["vertexColorGSOutput = vertexColorVSOutput[i];"]).result),e.lastBoundBO.getCABO().getColorComponents()!==0&&!e.drawingEdges?c=Pe.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=Pe.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=Pe.substitute(c,"//VTK::Color::Impl",u).result),c=Pe.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=Pe.substitute(a,"//VTK::Light::Impl",[" gl_FragData[0] = vec4(ambientColor * ambient + diffuseColor * diffuse, opacity);"," //VTK::Light::Impl"],!1).result;break;case 1:a=Pe.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=Pe.substitute(a,"//VTK::Light::Impl",f,!1).result;break;default:Uf("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=Pe.substitute(s,"//VTK::Normal::Dec",["attribute vec3 normalMC;","uniform mat3 normalMatrix;","varying vec3 normalVCVSOutput;"]).result,s=Pe.substitute(s,"//VTK::Normal::Impl",["normalVCVSOutput = normalMatrix * normalMC;"]).result,c=Pe.substitute(c,"//VTK::Normal::Dec",["in vec3 normalVCVSOutput[];","out vec3 normalVCGSOutput;"]).result,c=Pe.substitute(c,"//VTK::Normal::Impl",["normalVCGSOutput = normalVCVSOutput[i];"]).result,l=Pe.substitute(l,"//VTK::Normal::Dec",["varying vec3 normalVCVSOutput;"]).result,l=Pe.substitute(l,"//VTK::Normal::Impl",["vec3 normalVCVSOutput = normalize(normalVCVSOutput);"," if (gl_FrontFacing == false) { normalVCVSOutput = -normalVCVSOutput; }"]).result):e.haveCellNormals?(l=Pe.substitute(l,"//VTK::Normal::Dec",["uniform mat3 normalMatrix;","uniform samplerBuffer textureN;"]).result,l=Pe.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=Pe.substitute(l,"//VTK::UniformFlow::Impl",[" vec3 fdx = dFdx(vertexVC.xyz);"," vec3 fdy = dFdy(vertexVC.xyz);"," //VTK::UniformFlow::Impl"]).result,l=Pe.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=Pe.substitute(l,"//VTK::Normal::Dec",["uniform int cameraParallel;"]).result,l=Pe.substitute(l,"//VTK::UniformFlow::Impl",[" vec3 fdx = dFdx(vertexVC.xyz);"," vec3 fdy = dFdy(vertexVC.xyz);"," //VTK::UniformFlow::Impl"]).result,l=Pe.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=Pe.substitute(a,"//VTK::PositionVC::Dec",["varying vec4 vertexVCVSOutput;"]).result,a=Pe.substitute(a,"//VTK::PositionVC::Impl",["vertexVCVSOutput = MCVCMatrix * vertexMC;"," gl_Position = MCPCMatrix * vertexMC;"]).result,a=Pe.substitute(a,"//VTK::Camera::Dec",["uniform mat4 MCPCMatrix;","uniform mat4 MCVCMatrix;"]).result,s=Pe.substitute(s,"//VTK::PositionVC::Dec",["in vec4 vertexVCVSOutput[];","out vec4 vertexVCGSOutput;"]).result,s=Pe.substitute(s,"//VTK::PositionVC::Impl",["vertexVCGSOutput = vertexVCVSOutput[i];"]).result,c=Pe.substitute(c,"//VTK::PositionVC::Dec",["varying vec4 vertexVCVSOutput;"]).result,c=Pe.substitute(c,"//VTK::PositionVC::Impl",["vec4 vertexVC = vertexVCVSOutput;"]).result):(a=Pe.substitute(a,"//VTK::Camera::Dec",["uniform mat4 MCPCMatrix;"]).result,a=Pe.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=Pe.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=Pe.substitute(a,"//VTK::TCoord::Dec","attribute vec2 tcoordMC; varying vec2 tcoordVCVSOutput;").result,s=Pe.substitute(s,"//VTK::TCoord::Dec",["in vec2 tcoordVCVSOutput[];","out vec2 tcoordVCGSOutput;"]).result,s=Pe.substitute(s,"//VTK::TCoord::Impl","tcoordVCGSOutput = tcoordVCVSOutput[i];").result,c=Pe.substitute(c,"//VTK::TCoord::Dec",["varying vec2 tcoordVCVSOutput;","uniform sampler2D texture1;"]).result,l&&l.length>=1)switch(f){case 1:c=Pe.substitute(c,"//VTK::TCoord::Impl",[" vec4 tcolor = texture2D(texture1, tcoordVCVSOutput);"," ambientColor = ambientColor*tcolor.r;"," diffuseColor = diffuseColor*tcolor.r;"]).result;break;case 2:c=Pe.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=Pe.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=Pe.substitute(a,"//VTK::TCoord::Dec","attribute vec3 tcoordMC; varying vec3 tcoordVCVSOutput;").result,s=Pe.substitute(s,"//VTK::TCoord::Dec",["in vec3 tcoordVCVSOutput[];","out vec3 tcoordVCGSOutput;"]).result,s=Pe.substitute(s,"//VTK::TCoord::Impl","tcoordVCGSOutput = tcoordVCVSOutput[i];").result,c=Pe.substitute(c,"//VTK::TCoord::Dec",["varying vec3 tcoordVCVSOutput;","uniform samplerCube texture1;"]).result,f){case 1:c=Pe.substitute(c,"//VTK::TCoord::Impl",[" vec4 tcolor = textureCube(texture1, tcoordVCVSOutput);"," ambientColor = ambientColor*tcolor.r;"," diffuseColor = diffuseColor*tcolor.r;"]).result;break;case 2:c=Pe.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=Pe.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=Pe.substitute(a,"//VTK::Clip::Dec",["uniform int numClipPlanes;",`uniform vec4 clipPlanes[${c}];`,`varying float clipDistancesVSOutput[${c}];`]).result,a=Pe.substitute(a,"//VTK::Clip::Impl",[`for (int planeNum = 0; planeNum < ${c}; planeNum++)`," {"," if (planeNum >= numClipPlanes)"," {"," break;"," }"," clipDistancesVSOutput[planeNum] = dot(clipPlanes[planeNum], vertexMC);"," }"]).result,s=Pe.substitute(s,"//VTK::Clip::Dec",["uniform int numClipPlanes;",`varying float clipDistancesVSOutput[${c}];`]).result,s=Pe.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()==Tc.PolygonOffset||a.getEdgeVisibility()&&a.getRepresentation()===r0.SURFACE){const c=e.lastBoundBO.getPrimitiveType();c===Bi.Points||a.getRepresentation()===r0.POINTS?o=e.renderable.getCoincidentTopologyPointOffsetParameter():c===Bi.Lines||a.getRepresentation()===r0.WIREFRAME?o=e.renderable.getCoincidentTopologyLineOffsetParameters():(c===Bi.Tris||c===Bi.TriStrips)&&(o=e.renderable.getCoincidentTopologyPolygonOffsetParameters()),(c===Bi.TrisEdges||c===Bi.TriStripsEdges)&&(o=e.renderable.getCoincidentTopologyPolygonOffsetParameters(),o.factor/=2,o.offset/=2)}const s=e._openGLRenderer.getSelector();return s&&s.getFieldAssociation()===Xx.FIELD_ASSOCIATION_POINTS&&(o.offset-=2),o},t.replaceShaderPicking=(n,i,o)=>{let a=n.Fragment,s=n.Vertex;if(a=Pe.substitute(a,"//VTK::Picking::Dec",["uniform int picking;","//VTK::Picking::Dec"]).result,!!e._openGLRenderer.getSelector()){switch((e.lastSelectionState===ea.ID_LOW24||e.lastSelectionState===ea.ID_HIGH24)&&(s=Pe.substitute(s,"//VTK::Picking::Dec",[`flat out int vertexIDVSOutput; +`,`uniform int VertexIDOffset; +`]).result,s=Pe.substitute(s,"//VTK::Picking::Impl",` vertexIDVSOutput = gl_VertexID + VertexIDOffset; +`).result,a=Pe.substitute(a,"//VTK::Picking::Dec",`flat in int vertexIDVSOutput; +`).result,a=Pe.substitute(a,"//VTK::Picking::Impl",[" int idx = vertexIDVSOutput;","//VTK::Picking::Impl"]).result),e.lastSelectionState){case ea.ID_LOW24:a=Pe.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 ea.ID_HIGH24:a=Pe.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=Pe.substitute(a,"//VTK::Picking::Dec","uniform vec3 mapperIndex;").result,a=Pe.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=Pe.substitute(a,"//VTK::ZBuffer::Dec","uniform int depthRequest;").result,a=Pe.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()===CD.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 w=i.getLightsByReference();for(let x=0;x0&&(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 y=e.lastBoundBO.getReferenceByName("lastLightComplexity"),m=e.lastBoundBO.getReferenceByName("lastLightCount");return(y!==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)||Uf("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)||Uf("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)||Uf(`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)||Uf("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)||Uf("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?Pr(e.tmpMat4,o.getMatrix()):o.getMatrix();u&&(wn(d,d),Dn(d,d,u),wn(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 y=h.getDirection(),m=i.getActiveCamera().getViewMatrix(),w=[...y];h.lightTypeIsSceneLight()&&(w[0]=m[0]*y[0]+m[1]*y[1]+m[2]*y[2],w[1]=m[4]*y[0]+m[5]*y[1]+m[6]*y[2],w[2]=m[8]*y[0]+m[9]*y[1]+m[10]*y[2],Rd(w)),e.lightDirection[0]=w[0],e.lightDirection[1]=w[1],e.lightDirection[2]=w[2],Rd(e.lightDirection),s.setUniform3fArray(`lightColor${c}`,e.lightColor),s.setUniform3fArray(`lightDirectionVC${c}`,e.lightDirection),c++}}if(a<3)return;const u=i.getActiveCamera().getViewMatrix();wn(u,u),c=0;for(let d=0;d0){const p=h.getTransformedPosition(),v=new Float64Array(3);Wt(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()===See.DISPLAY){const p=e._openGLRenderer.getTiledSizeAndOrigin();Pt(e.tmpMat4),e.tmpMat4[0]=2/p.usize,e.tmpMat4[12]=-1,e.tmpMat4[5]=2/p.vsize,e.tmpMat4[13]=-1,Dn(e.tmpMat4,e.tmpMat4,d),a.setUniformMatrix("MCPCMatrix",e.tmpMat4)}else a.setUniformMatrix("MCPCMatrix",r([s.wcpc,g.mcwc,d],pm,e.tmpMat4));a.isUniformUsed("MCVCMatrix")&&a.setUniformMatrix("MCVCMatrix",r([s.wcvc,g.mcwc,d],pm,e.tmpMat4)),a.isUniformUsed("normalMatrix")&&a.setUniformMatrix3x3("normalMatrix",r([s.normalMatrix,g.normalMatrix],vY,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()===Xx.FIELD_ASSOCIATION_POINTS&&(e.pointPicking=!0)},t.renderPieceStart=(n,i)=>{e.primitiveIDOffset=0,e.vertexIDOffset=0;const o=Tee(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===r0.SURFACE,s=e._openGLRenderer.getSelector(),c=s&&s.getFieldAssociation()===Xx.FIELD_ASSOCIATION_POINTS&&(e.lastSelectionState===ea.ID_LOW24||e.lastSelectionState===ea.ID_HIGH24);for(let l=Bi.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(xee),e.renderable.getStatic()||e.renderable.update(),e.currentInput=e.renderable.getInputData(),t.invokeEvent(Cee),!e.currentInput){Uf("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()){Yh(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===d2.USE_CELL_DATA||s===d2.USE_CELL_FIELD_DATA||s===d2.USE_FIELD_DATA||!o.getPointData().getScalars())&&s!==d2.USE_POINT_FIELD_DATA&&a&&(e.haveCellScalars=!0);let c=i.getProperty().getInterpolation()!==CD.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=br.newInstance({resizable:!0}));const h=e.internalColorTexture;h.setMinificationFilter(SD.NEAREST),h.setMagnificationFilter(SD.NEAREST),h.setWrapS(TD.CLAMP_TO_EDGE),h.setWrapT(TD.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(y=>o.getPointData().getArrayByName(y))};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===r0.SURFACE;for(let y=Bi.Start;y{let n=0;return e.primitives.forEach(i=>{n+=i.getAllocatedGPUMemoryInBytes()}),n}}const Eee={context:null,VBOBuildTime:0,VBOBuildString:null,primitives:null,primTypes:null,shaderRebuildString:null,tmpMat4:null,ambientColor:[],diffuseColor:[],specularColor:[],lightColor:[],lightDirection:[],lastHaveSeenDepthRequest:!1,haveSeenDepthRequest:!1,lastSelectionState:ea.MIN_KNOWN_PASS-1,selectionStateChanged:null,selectionWebGLIdsToVTKIds:null,pointPicking:!1};function yA(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Eee,r),cr.extend(t,e,r),dl.implementReplaceShaderCoincidentOffset(t,e,r),dl.implementBuildShadersWithReplacements(t,e,r),e.primitives=[],e.primTypes=Bi,e.tmpMat3=bs(new Float64Array(9)),e.tmpMat4=Pt(new Float64Array(16));for(let n=Bi.Start;n{if(t.invokeEvent(Iee),e.renderable.getStatic()||e.renderable.update(),e.currentInput=e.renderable.getInputData(1),t.invokeEvent(Oee),!e.currentInput){Pg("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],y=i[10],m=i[11],w=i[12],x=i[13],C=i[14],S=i[15];let T=o[a],_=o[a+1],E=o[a+2],b=o[a+3];n[0]=T*s+_*u+E*p+b*w,n[1]=T*c+_*d+E*v+b*x,n[2]=T*l+_*h+E*y+b*C,n[3]=T*f+_*g+E*m+b*S,T=o[a+4],_=o[a+5],E=o[a+6],b=o[a+7],n[4]=T*s+_*u+E*p+b*w,n[5]=T*c+_*d+E*v+b*x,n[6]=T*l+_*h+E*y+b*C,n[7]=T*f+_*g+E*m+b*S,T=o[a+8],_=o[a+9],E=o[a+10],b=o[a+11],n[8]=T*s+_*u+E*p+b*w,n[9]=T*c+_*d+E*v+b*x,n[10]=T*l+_*h+E*y+b*C,n[11]=T*f+_*g+E*m+b*S,T=o[a+12],_=o[a+13],E=o[a+14],b=o[a+15],n[12]=T*s+_*u+E*p+b*w,n[13]=T*c+_*d+E*v+b*x,n[14]=T*l+_*h+E*y+b*C,n[15]=T*f+_*g+E*m+b*S},t.replaceShaderNormal=(n,i,o)=>{if(e.hardwareSupport&&e.lastBoundBO.getReferenceByName("lastLightComplexity")>0){let s=n.Vertex;e.lastBoundBO.getCABO().getNormalOffset()&&(s=Pe.substitute(s,"//VTK::Normal::Dec",["attribute vec3 normalMC;","attribute mat3 gNormal;","uniform mat3 normalMatrix;","varying vec3 normalVCVSOutput;"]).result,s=Pe.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=Pe.substitute(a,"//VTK::Color::Dec",["attribute vec4 gColor;","varying vec4 vertexColorVSOutput;"]).result,a=Pe.substitute(a,"//VTK::Color::Impl",["vertexColorVSOutput = gColor;"]).result,s=Pe.substitute(s,"//VTK::Color::Dec",["in vec4 vertexColorVSOutput[];","out vec4 vertexColorGSOutput;"]).result,s=Pe.substitute(s,"//VTK::Color::Impl",["vertexColorGSOutput = vertexColorVSOutput[i];"]).result,u=u.concat([" diffuseColor = vertexColorVSOutput.rgb;"," ambientColor = vertexColorVSOutput.rgb;"," opacity = opacity*vertexColorVSOutput.a;"])),c=Pe.substitute(c,"//VTK::Color::Impl",u).result,c=Pe.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=Pe.substitute(a,"//VTK::PositionVC::Impl",["vec4 gVertexMC = gMatrix * vertexMC;","vertexVCVSOutput = MCVCMatrix * gVertexMC;"," gl_Position = MCPCMatrix * gVertexMC;"]).result,a=Pe.substitute(a,"//VTK::Camera::Dec",["attribute mat4 gMatrix;","uniform mat4 MCPCMatrix;","uniform mat4 MCVCMatrix;"]).result):(a=Pe.substitute(a,"//VTK::Camera::Dec",["attribute mat4 gMatrix;","uniform mat4 MCPCMatrix;"]).result,a=Pe.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=Pe.substitute(s,"//VTK::Picking::Dec",["attribute vec3 mapperIndexVS;","varying vec3 mapperIndexVSOutput;"]).result,s=Pe.substitute(s,"//VTK::Picking::Impl"," mapperIndexVSOutput = mapperIndexVS;").result,n.Vertex=s,a=Pe.substitute(a,"//VTK::Picking::Dec",["varying vec3 mapperIndexVSOutput;","uniform vec3 mapperIndex;","uniform int picking;"]).result,a=Pe.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],y=d[1],m=d[2],w=d[3],x=d[4],C=d[5],S=d[6],T=d[7],_=d[8],E=h[g],b=h[g+1],D=h[g+2],O=h[g+3],L=h[g+4],P=h[g+5],k=h[g+6],G=h[g+7],j=h[g+8];p[0]=E*v+b*w+D*S,p[1]=E*y+b*x+D*T,p[2]=E*m+b*C+D*_,p[3]=O*v+L*w+P*S,p[4]=O*y+L*x+P*T,p[5]=O*m+L*C+P*_,p[6]=k*v+G*w+j*S,p[7]=k*y+G*x+j*T,p[8]=k*m+G*C+j*_,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===bee.SURFACE,c=e.openGLCamera.getKeyMatrices(n),l=e.openGLActor.getKeyMatrices();Dh(e.normalMatrix,c.normalMatrix,l.normalMatrix),Dn(e.mcpcMatrix,c.wcpc,l.mcwc),Dn(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()===Dee.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)||Pg("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)||Pg("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)||Pg("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)||Pg("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=Xl.newInstance(),e.matrixBuffer.setOpenGLRenderWindow(e._openGLRenderWindow),e.normalBuffer=Xl.newInstance(),e.normalBuffer.setOpenGLRenderWindow(e._openGLRenderWindow),e.colorBuffer=Xl.newInstance(),e.colorBuffer.setOpenGLRenderWindow(e._openGLRenderWindow),e.pickBuffer=Xl.newInstance(),e.pickBuffer.setOpenGLRenderWindow(e._openGLRenderWindow)),e.renderable.getBuildTime().getMTime()>e.glyphBOBuildTime.getMTime()){e.matrixBuffer.upload(o,h2.ARRAY_BUFFER),e.normalBuffer.upload(a,h2.ARRAY_BUFFER),s?e.colorBuffer.upload(s.getData(),h2.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,Pee,r),vw.extend(t,e,r),e.tmpMat3=bs(new Float64Array(9)),e.normalMatrix=bs(new Float64Array(9)),e.mcpcMatrix=Pt(new Float64Array(16)),e.mcvcMatrix=Pt(new Float64Array(16)),e.tmpColor=[],e.glyphBOBuildTime={},pr(e.glyphBOBuildTime,{mtime:0}),Mee(t,e)}const xA=Wn(Ree,"vtkOpenGLGlyph3DMapper");var Lee={newInstance:xA};Si("vtkGlyph3DMapper",xA);const Aee={NONE:-1,I:0,J:1,K:2,X:3,Y:4,Z:5};var yw={SlicingMode:Aee};const vd={NEAREST:0,LINEAR:1};var Nee={InterpolationType:vd};function hl(t,e,r){return t?`${t.getMTime()}-${e}-${r}`:"0"}function R4(t,e){return`${t.getMTime()}A${e.getMTime()}`}const{vtkErrorMacro:i0}=xo,{SlicingMode:Fa}=yw;function kee(t){const e=t.split(` +`),r=[];for(let n=0;n0&&r.push(i)}return r}function Vee(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()==Tc.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=P4,n.Fragment=d1,n.Geometry=""},t.replaceShaderValues=(n,i,o)=>{let a=n.Vertex,s=n.Fragment;a=Pe.substitute(a,"//VTK::Camera::Dec",["uniform mat4 MCPCMatrix;"]).result,a=Pe.substitute(a,"//VTK::PositionVC::Impl",[" gl_Position = MCPCMatrix * vertexMC;"]).result,a=Pe.substitute(a,"//VTK::TCoord::Impl","tcoordVCVSOutput = tcoordMC;").result,a=Pe.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&&(An("OpenGL has a limit of 6 clipping planes"),c=6),a=Le.substitute(a,"//VTK::Clip::Dec",["uniform int numClipPlanes;","uniform vec4 clipPlanes[6];","varying float clipDistancesVSOutput[6];"]).result,a=Le.substitute(a,"//VTK::Clip::Impl",["for (int planeNum = 0; planeNum < 6; planeNum++)"," {"," if (planeNum >= numClipPlanes)"," {"," break;"," }"," clipDistancesVSOutput[planeNum] = dot(clipPlanes[planeNum], vertexMC);"," }"]).result,s=Le.substitute(s,"//VTK::Clip::Dec",["uniform int numClipPlanes;","varying float clipDistancesVSOutput[6];"]).result,s=Le.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)||R0("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)||R0("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&&(An("OpenGL has a limit of 6 clipping planes"),g=6);const v=n.getCABO().getCoordShiftAndScaleEnabled()?n.getCABO().getInverseShiftAndScaleMatrix():null,y=v?zr(e.imagematinv,o.getMatrix()):o.getMatrix();v&&(Mn(y,y),Ln(y,y,v),Mn(y,y)),Mn(e.imagemat,e.currentInput.getIndexToWorld()),Ln(e.imagematinv,y,e.imagemat);const m=[];for(let w=0;w{const a=n.getProgram(),s=e.openGLImageSlice.getKeyMatrices(),c=e.currentInput,l=c.getIndexToWorld();Ln(e.imagemat,s.mcwc,l);const f=e.openGLCamera.getKeyMatrices(i);if(Ln(e.imagemat,f.wcpc,e.imagemat),n.getCABO().getCoordShiftAndScaleEnabled()){const d=n.getCABO().getInverseShiftAndScaleMatrix();Ln(e.imagemat,e.imagemat,d)}if(a.setUniformMatrix("MCPCMatrix",e.imagemat),o.getProperty().getUseLabelOutline()===!0){const d=c.getWorldToIndex(),h=c.getDimensions();let g=e.renderable.getClosestIJKAxis().ijkMode;g===$a.NONE&&(g=$a.K),a.setUniform3i("imageDimensions",h[0],h[1],h[2]),a.setUniformi("sliceAxis",g),a.setUniformMatrix("vWCtoIDX",d);const p=e.openGLCamera.getKeyMatrices(i);ei(e.projectionToWorld,p.wcpc),e.openGLCamera.getKeyMatrices(i),a.setUniformMatrix("PCWCMatrix",e.projectionToWorld);const v=t.getRenderTargetSize();a.setUniformf("vpWidth",v[0]),a.setUniformf("vpHeight",v[1]);const y=t.getRenderTargetOffset();a.setUniformf("vpOffsetX",y[0]/v[0]),a.setUniformf("vpOffsetY",y[1]/v[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){R0("No input!");return}t.renderPieceStart(n,i),t.renderPieceDraw(n,i),t.renderPieceFinish(n,i)},t.computeBounds=(n,i)=>{if(!t.getInput()){Og(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,P,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=Pl(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=Vr.newInstance({resizable:!0}),e.colorTexture.setOpenGLRenderWindow(e._openGLRenderWindow);const B=1024,j=B*h*3,V=new Uint8ClampedArray(j);if(f===$d.NEAREST?(e.colorTexture.setMinificationFilter(Wt.NEAREST),e.colorTexture.setMagnificationFilter(Wt.NEAREST)):(e.colorTexture.setMinificationFilter(Wt.LINEAR),e.colorTexture.setMagnificationFilter(Wt.LINEAR)),g){const F=new Float32Array(B*3);for(let G=0;G1?1:0;const G=[$a.X,$a.Y,$a.Z].includes(e.renderable.getSlicingMode())?T:_,X=o.getSpatialExtent(),ne=a.getData();let ue=null;if(S===$a.I){ue=new ne.constructor(B[2]*B[1]*c);let Ee=0;for(let H=0;H{var c;const i=n.getProperty().getLabelOutlineThicknessByReference(),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=Vr.newInstance({resizable:!1}),e.labelOutlineThicknessTexture.setOpenGLRenderWindow(e._openGLRenderWindow),e.labelOutlineThicknessTexture.resetFormatAndType(),e.labelOutlineThicknessTexture.setMinificationFilter(Wt.NEAREST),e.labelOutlineThicknessTexture.setMagnificationFilter(Wt.NEAREST),e.labelOutlineThicknessTexture.create2DFromRaw(1024,1,1,xn.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=zm(()=>{e._openGLRenderWindow&&r(e._openGLRenderWindow)},t.delete)}const jre={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 lk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,jre,r),gr.extend(t,e,r),Ol.implementReplaceShaderCoincidentOffset(t,e,r),Ol.implementBuildShadersWithReplacements(t,e,r),e.tris=Ul.newInstance(),e.imagemat=Lt(new Float64Array(16)),e.imagematinv=Lt(new Float64Array(16)),e.projectionToWorld=Lt(new Float64Array(16)),e.idxToView=Lt(new Float64Array(16)),e.idxNormalMatrix=Ns(new Float64Array(9)),e.modelToView=Lt(new Float64Array(16)),e.projectionToView=Lt(new Float64Array(16)),vi(t,e,[]),e.VBOBuildTime={},xr(e.VBOBuildTime),zre(t,e)}const uk=jn(lk,"vtkOpenGLImageMapper");var Hre={newInstance:uk,extend:lk};Ri("vtkAbstractImageMapper",uk);const od={MAX:0,MIN:1,AVERAGE:2},{vtkErrorMacro:Qv}=Q;function Kre(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()===Vc.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()===$d.NEAREST?(e.volumeTexture.setMinificationFilter(Wt.NEAREST),e.volumeTexture.setMagnificationFilter(Wt.NEAREST),e.colorTexture.setMinificationFilter(Wt.NEAREST),e.colorTexture.setMagnificationFilter(Wt.NEAREST),e.pwfTexture.setMinificationFilter(Wt.NEAREST),e.pwfTexture.setMagnificationFilter(Wt.NEAREST)):(e.volumeTexture.setMinificationFilter(Wt.LINEAR),e.volumeTexture.setMagnificationFilter(Wt.LINEAR),e.colorTexture.setMinificationFilter(Wt.LINEAR),e.colorTexture.setMagnificationFilter(Wt.LINEAR),e.pwfTexture.setMinificationFilter(Wt.LINEAR),e.pwfTexture.setMagnificationFilter(Wt.LINEAR))},t.getNeedToRebuildBufferObjects=(n,i)=>{var a;const o=e.VBOBuildTime.getMTime();return o{var b,D,I,P;const o=e.currentImageDataInput,a=e.currentCenterlineInput,s=(b=o==null?void 0:o.getPointData())==null?void 0:b.getScalars();if(!s)return;const c=e._openGLRenderWindow.getGraphicsResourceForObject(s),l=K4(o,s),f=!((D=c==null?void 0:c.oglObject)!=null&&D.getHandle())||(c==null?void 0:c.hash)!==l,u=e.renderable.getUpdatedExtents(),d=!!u.length;if(f){e.volumeTexture=Vr.newInstance(),e.volumeTexture.setOpenGLRenderWindow(e._openGLRenderWindow);const M=o.getDimensions();e.volumeTexture.setOglNorm16Ext(e.context.getExtension("EXT_texture_norm16")),e.volumeTexture.resetFormatAndType(),e.volumeTexture.create3DFilterableFromDataArray(M[0],M[1],M[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;if(d){e.renderable.setUpdatedExtents([]);const M=o.getDimensions();e.volumeTexture.create3DFilterableFromDataArray(M[0],M[1],M[2],s,!1,u)}const h=s.getNumberOfComponents(),g=i.getProperty(),p=g.getIndependentComponents(),v=p?h:1,y=p?2*v:1,m=g.getRGBTransferFunction(),w=Pl(m,p,v),x=e._openGLRenderWindow.getGraphicsResourceForObject(m);if(!((I=x==null?void 0:x.oglObject)!=null&&I.getHandle())||(x==null?void 0:x.hash)!==w){const L=1024*y*3,B=new Uint8ClampedArray(L);if(e.colorTexture=Vr.newInstance(),e.colorTexture.setOpenGLRenderWindow(e._openGLRenderWindow),m){const j=new Float32Array(3072);for(let V=0;V{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=Le.substitute(a,"//VTK::Camera::Dec",["uniform mat4 MCPCMatrix;"]).result,a=Le.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=Le.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=Le.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&&y.push("vec3 projectionDirection = applyQuaternionToVec(interpolatedOrientation, bitangentDirection);")),v?y.push("float baseOffset = dot(samplingDirection, globalCenterPoint - centerlinePosVSOutput);","float horizontalOffset = quadOffsetVSOutput.x + baseOffset;"):y.push("float horizontalOffset = quadOffsetVSOutput.x;"),y.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 od.MIN:y.push("const vec4 initialProjectionTextureValue = vec4(1.0);");break;case od.MAX:case od.AVERAGE:default:y.push("const vec4 initialProjectionTextureValue = vec4(0.0);");break}switch(y.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 od.MAX:y.push(" tvalue = max(tvalue, sampledTextureValue);");break;case od.MIN:y.push(" tvalue = min(tvalue, sampledTextureValue);");break;case od.AVERAGE:default:y.push(" tvalue = tvalue + sampledTextureValue;");break}y.push("}"),m===od.AVERAGE&&y.push("tvalue = tvalue / float(projectionSlabNumberOfSamples);")}else y.push("vec4 tvalue = texture(volumeTexture, volumePosTC);");if(g){const m=["r","g","b","a"];for(let w=0;w{let a=n.Vertex,s=n.Fragment;if(e.renderable.getNumberOfClippingPlanes()){let c=e.renderable.getNumberOfClippingPlanes();c>6&&(Q.vtkErrorMacro("OpenGL has a limit of 6 clipping planes"),c=6),a=Le.substitute(a,"//VTK::Clip::Dec",["uniform int numClipPlanes;","uniform vec4 clipPlanes[6];","varying float clipDistancesVSOutput[6];"]).result,a=Le.substitute(a,"//VTK::Clip::Impl",["for (int planeNum = 0; planeNum < 6; planeNum++)"," {"," if (planeNum >= numClipPlanes)"," {"," break;"," }"," clipDistancesVSOutput[planeNum] = dot(clipPlanes[planeNum], vertexMC);"," }"]).result,s=Le.substitute(s,"//VTK::Clip::Dec",["uniform int numClipPlanes;","varying float clipDistancesVSOutput[6];"]).result,s=Le.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=q4,n.Fragment=Jm,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)||Qv("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)&&Qv(`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(),y=e.renderable.getProjectionSlabNumberOfSamples(),m=XQ([],g,p);a.setUniform3fArray("volumeSizeMC",m),a.setUniformi("projectionSlabNumberOfSamples",y);const w=-.5*v;a.setUniformf("projectionConstantOffset",w);const x=v/(y-1);a.setUniformf("projectionStepLength",x)}const l=e.currentImageDataInput,f=l.getWorldToIndex(),u=C4(new Float32Array(16),EL([],l.getDimensions())),d=y5(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&&(Q.vtkErrorMacro("OpenGL has a limit of 6 clipping planes"),h=6);const p=s.getCoordShiftAndScaleEnabled()?s.getInverseShiftAndScaleMatrix():null,v=p?zr(e.imagematinv,o.getMatrix()):o.getMatrix();p&&(Mn(v,v),Ln(v,v,p),Mn(v,v)),Mn(e.imagemat,e.currentImageDataInput.getIndexToWorld()),Ln(e.imagematinv,v,e.imagemat);const y=[];for(let m=0;m{const a=e.openGLImageSlice.getKeyMatrices().mcwc,s=e.openGLCamera.getKeyMatrices(i).wcpc;if(Ln(e.imagemat,s,a),n.getCABO().getCoordShiftAndScaleEnabled()){const c=n.getCABO().getInverseShiftAndScaleMatrix();Ln(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=Q.chain(()=>{e._openGLRenderWindow&&r(e._openGLRenderWindow)},t.delete)}const Xre={currentRenderPass:null,volumeTexture:null,colorTexture:null,pwfTexture:null,tris:null,lastHaveSeenDepthRequest:!1,haveSeenDepthRequest:!1,lastTextureComponents:0,lastIndependentComponents:0,imagemat:null,imagematinv:null};function fk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Xre,r),gr.extend(t,e,r),Ol.implementReplaceShaderCoincidentOffset(t,e,r),Q.algo(t,e,2,0),e.tris=Ul.newInstance(),e.volumeTexture=null,e.colorTexture=null,e.pwfTexture=null,e.imagemat=Lt(new Float64Array(16)),e.imagematinv=Lt(new Float64Array(16)),e.VBOBuildTime={},Q.obj(e.VBOBuildTime,{mtime:0}),Kre(t,e)}const dk=Q.newInstance(fk,"vtkOpenGLImageCPRMapper"),qre={};var Yre={newInstance:dk,extend:fk,...qre};Ri("vtkImageCPRMapper",dk);function Jre(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()&&(zr(e.keyMatrices.mcwc,e.renderable.getMatrix()),Mn(e.keyMatrices.mcwc,e.keyMatrices.mcwc),e.keyMatrixTime.modified()),e.keyMatrices)}const Zre={context:null,keyMatrixTime:null,keyMatrices:null};function hk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Zre,r),gr.extend(t,e,r),e.keyMatrixTime={},xr(e.keyMatrixTime,{mtime:0}),e.keyMatrices={mcwc:Lt(new Float64Array(16))},vi(t,e,["context"]),Jre(t,e)}const gk=jn(hk,"vtkOpenGLImageSlice");var Qre={newInstance:gk,extend:hk};Ri("vtkImageSlice",gk);function eie(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(),zr(e.MCWCMatrix,e.renderable.getMatrix()),Mn(e.MCWCMatrix,e.MCWCMatrix),e.renderable.getIsIdentity()?Ns(e.normalMatrix):(Xm(e.normalMatrix,e.MCWCMatrix),Pg(e.normalMatrix,e.normalMatrix),Jw(e.normalMatrix,e.normalMatrix)),e.keyMatrixTime.modified()),{mcwc:e.MCWCMatrix,normalMatrix:e.normalMatrix})}const tie={};function pk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,tie,r),gr.extend(t,e,r),e.keyMatrixTime={},xr(e.keyMatrixTime,{mtime:0}),e.normalMatrix=new Float64Array(9),e.MCWCMatrix=new Float64Array(16),vi(t,e,["context"]),eie(t,e)}const mk=jn(pk,"vtkOpenGLVolume");var nie={newInstance:mk,extend:pk};Ri("vtkVolume",mk);function rie(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){An("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){An("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){An("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){An("you must set the OpenGLRenderWindow before calling setColorBuffer");return}let o=i.COLOR_ATTACHMENT0;if(n>0)if(e._openGLRenderWindow.getWebgl2())o+=n;else{An("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){An("you must set the OpenGLRenderWindow before calling removeColorBuffer");return}let i=n.COLOR_ATTACHMENT0;if(r>0)if(e._openGLRenderWindow.getWebgl2())i+=r;else{An("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){An("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 An("Attaching depth buffer textures to fbo requires WebGL 2")},t.removeDepthBuffer=()=>{if(!e.context){An("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 An("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){An("you must set the OpenGLRenderWindow before calling populateFrameBuffer");return}t.bind();const r=e.context,n=Vr.newInstance();n.setOpenGLRenderWindow(e._openGLRenderWindow),n.setMinificationFilter(Wt.LINEAR),n.setMagnificationFilter(Wt.LINEAR),n.create2DFromRaw(e.glFramebuffer.width,e.glFramebuffer.height,4,xn.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 iie={glFramebuffer:null,colorBuffers:null,depthTexture:null,previousDrawBinding:0,previousReadBinding:0,previousDrawBuffer:0,previousReadBuffer:0,previousActiveFramebuffer:null};function vk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,iie,r),xr(t,e),e.colorBuffers&&An("you cannot initialize colorBuffers through the constructor. You should call setColorBuffer() instead."),e.colorBuffers=[],Mg(t,e,["colorBuffers"]),rie(t,e)}const oie=jn(vk,"vtkFramebuffer");var ox={newInstance:oie,extend:vk},aie=`//VTK::System::Dec + `)]).result;break;case 2:s=Pe.substitute(s,"//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:s=Pe.substitute(s,"//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:s=Pe.substitute(s,"//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&&(s=Pe.substitute(s,"//VTK::ZBuffer::Dec","uniform int depthRequest;").result,s=Pe.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),n.Vertex=a,n.Fragment=s,t.replaceShaderClip(n,i,o),t.replaceShaderCoincidentOffset(n,i,o)},t.replaceShaderClip=(n,i,o)=>{let a=n.Vertex,s=n.Fragment;if(e.renderable.getNumberOfClippingPlanes()){let c=e.renderable.getNumberOfClippingPlanes();c>6&&(bn("OpenGL has a limit of 6 clipping planes"),c=6),a=Pe.substitute(a,"//VTK::Clip::Dec",["uniform int numClipPlanes;","uniform vec4 clipPlanes[6];","varying float clipDistancesVSOutput[6];"]).result,a=Pe.substitute(a,"//VTK::Clip::Impl",["for (int planeNum = 0; planeNum < 6; planeNum++)"," {"," if (planeNum >= numClipPlanes)"," {"," break;"," }"," clipDistancesVSOutput[planeNum] = dot(clipPlanes[planeNum], vertexMC);"," }"]).result,s=Pe.substitute(s,"//VTK::Clip::Dec",["uniform int numClipPlanes;","varying float clipDistancesVSOutput[6];"]).result,s=Pe.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)||i0("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)||i0("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&&(bn("OpenGL has a limit of 6 clipping planes"),g=6);const v=n.getCABO().getCoordShiftAndScaleEnabled()?n.getCABO().getInverseShiftAndScaleMatrix():null,y=v?Pr(e.imagematinv,o.getMatrix()):o.getMatrix();v&&(wn(y,y),Dn(y,y,v),wn(y,y)),wn(e.imagemat,e.currentInput.getIndexToWorld()),Dn(e.imagematinv,y,e.imagemat);const m=[];for(let w=0;w{const a=n.getProgram(),s=e.openGLImageSlice.getKeyMatrices(),c=e.currentInput,l=c.getIndexToWorld();Dn(e.imagemat,s.mcwc,l);const f=e.openGLCamera.getKeyMatrices(i);if(Dn(e.imagemat,f.wcpc,e.imagemat),n.getCABO().getCoordShiftAndScaleEnabled()){const d=n.getCABO().getInverseShiftAndScaleMatrix();Dn(e.imagemat,e.imagemat,d)}if(a.setUniformMatrix("MCPCMatrix",e.imagemat),o.getProperty().getUseLabelOutline()===!0){const d=c.getWorldToIndex(),h=c.getDimensions();let g=e.renderable.getClosestIJKAxis().ijkMode;g===Fa.NONE&&(g=Fa.K),a.setUniform3i("imageDimensions",h[0],h[1],h[2]),a.setUniformi("sliceAxis",g),a.setUniformMatrix("vWCtoIDX",d);const p=e.openGLCamera.getKeyMatrices(i);$r(e.projectionToWorld,p.wcpc),e.openGLCamera.getKeyMatrices(i),a.setUniformMatrix("PCWCMatrix",e.projectionToWorld);const v=t.getRenderTargetSize();a.setUniformf("vpWidth",v[0]),a.setUniformf("vpHeight",v[1]);const y=t.getRenderTargetOffset();a.setUniformf("vpOffsetX",y[0]/v[0]),a.setUniformf("vpOffsetY",y[1]/v[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){i0("No input!");return}t.renderPieceStart(n,i),t.renderPieceDraw(n,i),t.renderPieceFinish(n,i)},t.computeBounds=(n,i)=>{if(!t.getInput()){Yh(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 O,L,P,k;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=hl(g,u,d),v=e._openGLRenderWindow.getGraphicsResourceForObject(g);if(!((O=v==null?void 0:v.oglObject)!=null&&O.getHandle())||(v==null?void 0:v.hash)!==p){e.colorTexture=br.newInstance({resizable:!0}),e.colorTexture.setOpenGLRenderWindow(e._openGLRenderWindow);const G=1024,j=G*h*3,F=new Uint8ClampedArray(j);if(f===vd.NEAREST?(e.colorTexture.setMinificationFilter(Ft.NEAREST),e.colorTexture.setMagnificationFilter(Ft.NEAREST)):(e.colorTexture.setMinificationFilter(Ft.LINEAR),e.colorTexture.setMagnificationFilter(Ft.LINEAR)),g){const U=new Float32Array(G*3);for(let W=0;W1?1:0;const W=[Fa.X,Fa.Y,Fa.Z].includes(e.renderable.getSlicingMode())?T:_,J=o.getSpatialExtent(),te=a.getData();let le=null;if(S===Fa.I){le=new te.constructor(G[2]*G[1]*c);let be=0;for(let $=0;${var c;const i=n.getProperty().getLabelOutlineThicknessByReference(),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=br.newInstance({resizable:!1}),e.labelOutlineThicknessTexture.setOpenGLRenderWindow(e._openGLRenderWindow),e.labelOutlineThicknessTexture.resetFormatAndType(),e.labelOutlineThicknessTexture.setMinificationFilter(Ft.NEAREST),e.labelOutlineThicknessTexture.setMagnificationFilter(Ft.NEAREST),e.labelOutlineThicknessTexture.create2DFromRaw(1024,1,1,gn.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=i1(()=>{e._openGLRenderWindow&&r(e._openGLRenderWindow)},t.delete)}const Fee={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 Uee(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Fee,r),cr.extend(t,e,r),dl.implementReplaceShaderCoincidentOffset(t,e,r),dl.implementBuildShadersWithReplacements(t,e,r),e.tris=wl.newInstance(),e.imagemat=Pt(new Float64Array(16)),e.imagematinv=Pt(new Float64Array(16)),e.projectionToWorld=Pt(new Float64Array(16)),e.idxToView=Pt(new Float64Array(16)),e.idxNormalMatrix=bs(new Float64Array(9)),e.modelToView=Pt(new Float64Array(16)),e.projectionToView=Pt(new Float64Array(16)),si(t,e,[]),e.VBOBuildTime={},pr(e.VBOBuildTime),Vee(t,e)}const CA=Wn(Uee,"vtkOpenGLImageMapper");var Bee={newInstance:CA};Si("vtkAbstractImageMapper",CA);const Bf={MAX:0,MIN:1,AVERAGE:2},{vtkErrorMacro:g2}=Q;function Gee(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()===Tc.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()===vd.NEAREST?(e.volumeTexture.setMinificationFilter(Ft.NEAREST),e.volumeTexture.setMagnificationFilter(Ft.NEAREST),e.colorTexture.setMinificationFilter(Ft.NEAREST),e.colorTexture.setMagnificationFilter(Ft.NEAREST),e.pwfTexture.setMinificationFilter(Ft.NEAREST),e.pwfTexture.setMagnificationFilter(Ft.NEAREST)):(e.volumeTexture.setMinificationFilter(Ft.LINEAR),e.volumeTexture.setMagnificationFilter(Ft.LINEAR),e.colorTexture.setMinificationFilter(Ft.LINEAR),e.colorTexture.setMagnificationFilter(Ft.LINEAR),e.pwfTexture.setMinificationFilter(Ft.LINEAR),e.pwfTexture.setMagnificationFilter(Ft.LINEAR))},t.getNeedToRebuildBufferObjects=(n,i)=>{var a;const o=e.VBOBuildTime.getMTime();return o{var b,D,O,L;const o=e.currentImageDataInput,a=e.currentCenterlineInput,s=(b=o==null?void 0:o.getPointData())==null?void 0:b.getScalars();if(!s)return;const c=e._openGLRenderWindow.getGraphicsResourceForObject(s),l=R4(o,s),f=!((D=c==null?void 0:c.oglObject)!=null&&D.getHandle())||(c==null?void 0:c.hash)!==l,u=e.renderable.getUpdatedExtents(),d=!!u.length;if(f){e.volumeTexture=br.newInstance(),e.volumeTexture.setOpenGLRenderWindow(e._openGLRenderWindow);const P=o.getDimensions();e.volumeTexture.setOglNorm16Ext(e.context.getExtension("EXT_texture_norm16")),e.volumeTexture.resetFormatAndType(),e.volumeTexture.create3DFilterableFromDataArray(P[0],P[1],P[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;if(d){e.renderable.setUpdatedExtents([]);const P=o.getDimensions();e.volumeTexture.create3DFilterableFromDataArray(P[0],P[1],P[2],s,!1,u)}const h=s.getNumberOfComponents(),g=i.getProperty(),p=g.getIndependentComponents(),v=p?h:1,y=p?2*v:1,m=g.getRGBTransferFunction(),w=hl(m,p,v),x=e._openGLRenderWindow.getGraphicsResourceForObject(m);if(!((O=x==null?void 0:x.oglObject)!=null&&O.getHandle())||(x==null?void 0:x.hash)!==w){const k=1024*y*3,G=new Uint8ClampedArray(k);if(e.colorTexture=br.newInstance(),e.colorTexture.setOpenGLRenderWindow(e._openGLRenderWindow),m){const j=new Float32Array(3072);for(let F=0;F{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=Pe.substitute(a,"//VTK::Camera::Dec",["uniform mat4 MCPCMatrix;"]).result,a=Pe.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=Pe.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=Pe.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&&y.push("vec3 projectionDirection = applyQuaternionToVec(interpolatedOrientation, bitangentDirection);")),v?y.push("float baseOffset = dot(samplingDirection, globalCenterPoint - centerlinePosVSOutput);","float horizontalOffset = quadOffsetVSOutput.x + baseOffset;"):y.push("float horizontalOffset = quadOffsetVSOutput.x;"),y.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 Bf.MIN:y.push("const vec4 initialProjectionTextureValue = vec4(1.0);");break;case Bf.MAX:case Bf.AVERAGE:default:y.push("const vec4 initialProjectionTextureValue = vec4(0.0);");break}switch(y.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 Bf.MAX:y.push(" tvalue = max(tvalue, sampledTextureValue);");break;case Bf.MIN:y.push(" tvalue = min(tvalue, sampledTextureValue);");break;case Bf.AVERAGE:default:y.push(" tvalue = tvalue + sampledTextureValue;");break}y.push("}"),m===Bf.AVERAGE&&y.push("tvalue = tvalue / float(projectionSlabNumberOfSamples);")}else y.push("vec4 tvalue = texture(volumeTexture, volumePosTC);");if(g){const m=["r","g","b","a"];for(let w=0;w{let a=n.Vertex,s=n.Fragment;if(e.renderable.getNumberOfClippingPlanes()){let c=e.renderable.getNumberOfClippingPlanes();c>6&&(Q.vtkErrorMacro("OpenGL has a limit of 6 clipping planes"),c=6),a=Pe.substitute(a,"//VTK::Clip::Dec",["uniform int numClipPlanes;","uniform vec4 clipPlanes[6];","varying float clipDistancesVSOutput[6];"]).result,a=Pe.substitute(a,"//VTK::Clip::Impl",["for (int planeNum = 0; planeNum < 6; planeNum++)"," {"," if (planeNum >= numClipPlanes)"," {"," break;"," }"," clipDistancesVSOutput[planeNum] = dot(clipPlanes[planeNum], vertexMC);"," }"]).result,s=Pe.substitute(s,"//VTK::Clip::Dec",["uniform int numClipPlanes;","varying float clipDistancesVSOutput[6];"]).result,s=Pe.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=P4,n.Fragment=d1,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)||g2("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)&&g2(`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(),y=e.renderable.getProjectionSlabNumberOfSamples(),m=XY([],g,p);a.setUniform3fArray("volumeSizeMC",m),a.setUniformi("projectionSlabNumberOfSamples",y);const w=-.5*v;a.setUniformf("projectionConstantOffset",w);const x=v/(y-1);a.setUniformf("projectionStepLength",x)}const l=e.currentImageDataInput,f=l.getWorldToIndex(),u=u4(new Float32Array(16),ZR([],l.getDimensions())),d=Iy(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&&(Q.vtkErrorMacro("OpenGL has a limit of 6 clipping planes"),h=6);const p=s.getCoordShiftAndScaleEnabled()?s.getInverseShiftAndScaleMatrix():null,v=p?Pr(e.imagematinv,o.getMatrix()):o.getMatrix();p&&(wn(v,v),Dn(v,v,p),wn(v,v)),wn(e.imagemat,e.currentImageDataInput.getIndexToWorld()),Dn(e.imagematinv,v,e.imagemat);const y=[];for(let m=0;m{const a=e.openGLImageSlice.getKeyMatrices().mcwc,s=e.openGLCamera.getKeyMatrices(i).wcpc;if(Dn(e.imagemat,s,a),n.getCABO().getCoordShiftAndScaleEnabled()){const c=n.getCABO().getInverseShiftAndScaleMatrix();Dn(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=Q.chain(()=>{e._openGLRenderWindow&&r(e._openGLRenderWindow)},t.delete)}const Wee={currentRenderPass:null,volumeTexture:null,colorTexture:null,pwfTexture:null,tris:null,lastHaveSeenDepthRequest:!1,haveSeenDepthRequest:!1,lastTextureComponents:0,lastIndependentComponents:0,imagemat:null,imagematinv:null};function zee(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Wee,r),cr.extend(t,e,r),dl.implementReplaceShaderCoincidentOffset(t,e,r),Q.algo(t,e,2,0),e.tris=wl.newInstance(),e.volumeTexture=null,e.colorTexture=null,e.pwfTexture=null,e.imagemat=Pt(new Float64Array(16)),e.imagematinv=Pt(new Float64Array(16)),e.VBOBuildTime={},Q.obj(e.VBOBuildTime,{mtime:0}),Gee(t,e)}const SA=Q.newInstance(zee,"vtkOpenGLImageCPRMapper"),$ee={};var jee={newInstance:SA,...$ee};Si("vtkImageCPRMapper",SA);function Hee(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()&&(Pr(e.keyMatrices.mcwc,e.renderable.getMatrix()),wn(e.keyMatrices.mcwc,e.keyMatrices.mcwc),e.keyMatrixTime.modified()),e.keyMatrices)}const Kee={context:null,keyMatrixTime:null,keyMatrices:null};function qee(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Kee,r),cr.extend(t,e,r),e.keyMatrixTime={},pr(e.keyMatrixTime,{mtime:0}),e.keyMatrices={mcwc:Pt(new Float64Array(16))},si(t,e,["context"]),Hee(t,e)}const TA=Wn(qee,"vtkOpenGLImageSlice");var Xee={newInstance:TA};Si("vtkImageSlice",TA);const{vtkDebugMacro:Yee}=xo;function Jee(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():Yee("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 Zee={};function Qee(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Zee,r),cr.extend(t,e,r),Jee(t,e)}const _A=Wn(Qee,"vtkOpenGLPixelSpaceCallbackMapper");var ete={newInstance:_A};Si("vtkPixelSpaceCallbackMapper",_A);const{vtkDebugMacro:tte}=xo;function nte(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||(tte("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 rte={context:null,_openGLRenderWindow:null,selector:null};function ite(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,rte,r),cr.extend(t,e,r),Wo(t,e,["shaderCache"]),si(t,e,["selector"]),r1(t,e,["openGLRenderWindow"]),nte(t,e)}const EA=Wn(ite,"vtkOpenGLRenderer");var ote={newInstance:EA};Si("vtkRenderer",EA);const{vtkErrorMacro:_D}=xo;function ate(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($r(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=Ot.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=Ot.newInstance({numberOfComponents:1,values:o});e.tris.getCABO().createVBO(a,"polys",mo.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)||_D("Error setting vertexMC in shader VAO."));const r=e.renderable.getTextures();r.length||_D("vtkSkybox requires a texture map"),e.openGLTexture.getRenderable()!==r[0]&&(e.openGLTexture.releaseGraphicsResources(e._openGLRenderWindow),e.openGLTexture.setRenderable(r[0]))}}const ste={context:null};function cte(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ste,r),cr.extend(t,e,r),e.openGLTexture=br.newInstance(),e.tris=wl.newInstance(),e.keyMatrixTime={},pr(e.keyMatrixTime,{mtime:0}),e.keyMatrices={normalMatrix:bs(new Float64Array(9)),mcwc:Pt(new Float64Array(16))},si(t,e,["context"]),Wo(t,e,["activeTextures"]),ate(t,e)}const bA=Wn(cte);var lte={newInstance:bA};Si("vtkSkybox",bA);var ute=`//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:fte}=xo;function dte(t,e){e.classHierarchy.push("vtkOpenGLSphereMapper");const r={...t};t.getShaderTemplate=(n,i,o)=>{n.Vertex=ute,n.Fragment=d1,n.Geometry=""},t.replaceShaderValues=(n,i,o)=>{let a=n.Vertex,s=n.Fragment;a=Pe.substitute(a,"//VTK::Camera::Dec",[`uniform mat4 VCPCMatrix; +`,"uniform mat4 MCVCMatrix;"]).result,s=Pe.substitute(s,"//VTK::PositionVC::Dec",["varying vec4 vertexVCVSOutput;"]).result,s=Pe.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=Pe.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=Pe.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=Pe.substitute(s,"//VTK::Normal::Impl","").result,e.haveSeenDepthRequest&&(s=Pe.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)||fte("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);Dn(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(Xl.newInstance()),s.getColorBO().setOpenGLRenderWindow(e._openGLRenderWindow)):s.getColorBO()&&s.setColorBO(null),s.setColorComponents(p);const y=new Float32Array(d*f*3);s.setStride(d*4);const m=Math.cos(Jr(30));let w=0,x=0,C=0,S=0;for(let T=0;T2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,hte,r),vw.extend(t,e,r),dte(t,e)}const DA=Wn(gte,"vtkOpenGLSphereMapper");var pte={newInstance:DA};Si("vtkSphereMapper",DA);var mte=`//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:p2}=xo;function vte(t,e){e.classHierarchy.push("vtkOpenGLStickMapper");const r={...t};t.getShaderTemplate=(n,i,o)=>{n.Vertex=mte,n.Fragment=d1,n.Geometry=""},t.replaceShaderValues=(n,i,o)=>{let a=n.Vertex,s=n.Fragment;a=Pe.substitute(a,"//VTK::Camera::Dec",[`uniform mat4 VCPCMatrix; +`,"uniform mat4 MCVCMatrix;"]).result,s=Pe.substitute(s,"//VTK::PositionVC::Dec","varying vec4 vertexVCVSOutput;").result,s=Pe.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=Pe.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=Pe.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=Pe.substitute(s,"//VTK::Normal::Impl","").result,e.haveSeenDepthRequest&&(s=Pe.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)||p2("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)||p2("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)||p2("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);Dn(f,c.wcvc,l.mcwc),a.setUniformMatrix("MCVCMatrix",f)}if(a.isUniformUsed("normalMatrix")){const f=new Float64Array(9);Dh(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(Xl.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 y=null,m=null;e.renderable.getScaleArray()!=null&&c.hasArray(e.renderable.getScaleArray())&&(y=c.getArray(e.renderable.getScaleArray()).getData()),e.renderable.getOrientationArray()!=null&&c.hasArray(e.renderable.getOrientationArray())?m=c.getArray(e.renderable.getOrientationArray()).getData():p2([`Error setting orientationArray. +`,"You have to specify the stick orientation"]);const w=[0,1,3,0,3,2,2,3,5,2,5,4];let x=0,C=0,S=0,T=0;for(let _=0;_=4?255:0,v[T++]=w[D]>=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,eu.ARRAY_BUFFER),s.getColorBO().upload(v,eu.ARRAY_BUFFER),e.VBOBuildTime.modified()}}const yte={};function wte(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,yte,r),vw.extend(t,e,r),vte(t,e)}const IA=Wn(wte,"vtkOpenGLStickMapper");var xte={newInstance:IA};Si("vtkStickMapper",IA);function Cte(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(),Pr(e.MCWCMatrix,e.renderable.getMatrix()),wn(e.MCWCMatrix,e.MCWCMatrix),e.renderable.getIsIdentity()?bs(e.normalMatrix):(cw(e.normalMatrix,e.MCWCMatrix),c1(e.normalMatrix,e.normalMatrix),o4(e.normalMatrix,e.normalMatrix)),e.keyMatrixTime.modified()),{mcwc:e.MCWCMatrix,normalMatrix:e.normalMatrix})}const Ste={};function Tte(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Ste,r),cr.extend(t,e,r),e.keyMatrixTime={},pr(e.keyMatrixTime,{mtime:0}),e.normalMatrix=new Float64Array(9),e.MCWCMatrix=new Float64Array(16),si(t,e,["context"]),Cte(t,e)}const OA=Wn(Tte,"vtkOpenGLVolume");var _te={newInstance:OA};Si("vtkVolume",OA);const TS={NEAREST:0,LINEAR:1,FAST_LINEAR:2},MA={FRACTIONAL:0,PROPORTIONAL:1},Rv={CUSTOM:0,ADDITIVE:1,COLORIZE:2};var PA={InterpolationType:TS,OpacityMode:MA,ColorMixPreset:Rv},Ete=`//VTK::System::Dec /*========================================================================= @@ -456,7 +689,7 @@ void main() vertexVCVSOutput = vcpos.xyz/vcpos.w; gl_Position = dcsmall; } -`,sie=`//VTK::System::Dec +`,bte=`//VTK::System::Dec /*========================================================================= @@ -2397,7 +2630,7 @@ void main() // Perform the blending operation along the ray applyBlend(posIS, endIS, tdims); } -`;const{vtkWarningMacro:cie,vtkErrorMacro:GC}=Ao;function lie(t){switch(t){case yy.CUSTOM:return"//VTK::CustomColorMix";case yy.ADDITIVE:return` +`;const{vtkWarningMacro:Dte,vtkErrorMacro:Yx}=xo;function Ite(t){switch(t){case Rv.CUSTOM:return"//VTK::CustomColorMix";case Rv.ADDITIVE:return` // compute normals mat4 normalMat = computeMat4Normal(posIS, tValue, tstep); #if (vtkLightComplexity > 0) && defined(vtkComputeNormalFromOpacity) @@ -2436,7 +2669,7 @@ void main() tColor1 = applyAllLightning(tColor1, opacity1, posIS, normalLight1); vec3 mixedColor = (opacity0 * tColor0 + opacity1 * tColor1) / opacitySum; return vec4(mixedColor, min(1.0, opacitySum)); -`;case yy.COLORIZE:return` +`;case Rv.COLORIZE:return` // compute normals mat4 normalMat = computeMat4Normal(posIS, tValue, tstep); #if (vtkLightComplexity > 0) && defined(vtkComputeNormalFromOpacity) @@ -2460,20 +2693,157 @@ void main() vec3 color = tColor0 * mix(vec3(1.0), tColor1, pwfValue1); color = applyAllLightning(color, opacity0, posIS, normalLight0); return vec4(color, opacity0); -`;default:return null}}function uie(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=aie,i.Fragment=sie,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()===MT.LINEAR&&(c=Le.substitute(c,"//VTK::TrilinearOn","#define vtkTrilinearOn").result),t.isLabelmapOutlineRequired(a)===!0&&(c=Le.substitute(c,"//VTK::ImageLabelOutlineOn","#define vtkImageLabelOutlineOn").result),e.renderable.getBlendMode()===oy.LABELMAP_EDGE_PROJECTION_BLEND&&(c=Le.substitute(c,"//VTK::LabelEdgeProjectionOn","#define vtkLabelEdgeProjectionOn").result);const d=e.scalarTexture.getComponents();c=Le.substitute(c,"//VTK::NumComponents",`#define vtkNumComponents ${d}`).result;const h=t.useIndependentComponents(s);h&&(c=Le.substitute(c,"//VTK::IndependentComponentsOn","#define UseIndependentComponents").result);const g=[],p=[];for(let T=0;T0&&(e.renderable.getVolumetricScatteringBlending()>0&&(c=Le.substitute(c,"//VTK::VolumeShadowOn","#define VolumeShadowOn").result),e.renderable.getVolumetricScatteringBlending()<1&&(c=Le.substitute(c,"//VTK::SurfaceShadowOn","#define SurfaceShadowOn").result),e.renderable.getLocalAmbientOcclusion()&&s.getAmbient()>0&&(c=Le.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=Le.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=Le.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=Le.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=Le.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=Le.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=Le.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()===oy.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 y;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)||GC("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();Ln(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,y=-1,m=1,w=-1;for(let B=0;B<8;++B){if(tr(g,d[B%2],d[2+Math.floor(B/2)%2],d[4+Math.floor(B/4)]),Gt(g,g,e.modelToView),!f.getParallelProjection()){en(p,g);const j=-u[0]/g[2];Er(g,p,j)}Gt(g,g,s.vcpc),v=Math.min(g[0],v),y=Math.max(g[0],y),m=Math.min(g[1],m),w=Math.max(g[1],w)}l.setUniformf("dcxmin",v),l.setUniformf("dcxmax",y),l.setUniformf("dcymin",m),l.setUniformf("dcymax",w),l.isUniformUsed("cameraParallel")&&l.setUniformi("cameraParallel",f.getParallelProjection());const x=e.currentInput.getSpatialExtent(),C=e.currentInput.getSpacing(),S=new Float64Array(3);tr(S,(x[1]-x[0])*C[0],(x[3]-x[2])*C[1],(x[5]-x[4])*C[2]),l.setUniform3f("vSpacing",C[0],C[1],C[2]),tr(g,x[0],x[2],x[4]),e.currentInput.indexToWorldVec3(g,g),Gt(g,g,e.modelToView),l.setUniform3f("vOriginVC",g[0],g[1],g[2]);const T=e.currentInput.getIndexToWorld();Ln(e.idxToView,e.modelToView,T),ag(e.idxNormalMatrix,s.normalMatrix,c.normalMatrix),ag(e.idxNormalMatrix,e.idxNormalMatrix,e.currentInput.getDirectionByReference());const _=_i(S)/t.getCurrentSampleDistance(o);_>e.renderable.getMaximumSamplesPerRay()&&cie(`The number of steps required ${Math.ceil(_)} is larger than the +`;default:return null}}function Ote(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=Ete,i.Fragment=bte,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()===TS.LINEAR&&(c=Pe.substitute(c,"//VTK::TrilinearOn","#define vtkTrilinearOn").result),t.isLabelmapOutlineRequired(a)===!0&&(c=Pe.substitute(c,"//VTK::ImageLabelOutlineOn","#define vtkImageLabelOutlineOn").result),e.renderable.getBlendMode()===xv.LABELMAP_EDGE_PROJECTION_BLEND&&(c=Pe.substitute(c,"//VTK::LabelEdgeProjectionOn","#define vtkLabelEdgeProjectionOn").result);const d=e.scalarTexture.getComponents();c=Pe.substitute(c,"//VTK::NumComponents",`#define vtkNumComponents ${d}`).result;const h=t.useIndependentComponents(s);h&&(c=Pe.substitute(c,"//VTK::IndependentComponentsOn","#define UseIndependentComponents").result);const g=[],p=[];for(let T=0;T0&&(e.renderable.getVolumetricScatteringBlending()>0&&(c=Pe.substitute(c,"//VTK::VolumeShadowOn","#define VolumeShadowOn").result),e.renderable.getVolumetricScatteringBlending()<1&&(c=Pe.substitute(c,"//VTK::SurfaceShadowOn","#define SurfaceShadowOn").result),e.renderable.getLocalAmbientOcclusion()&&s.getAmbient()>0&&(c=Pe.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=Pe.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=Pe.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=Pe.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=Pe.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=Pe.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=Pe.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()===xv.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 y;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)||Yx("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();Dn(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,y=-1,m=1,w=-1;for(let G=0;G<8;++G){if(Zn(g,d[G%2],d[2+Math.floor(G/2)%2],d[4+Math.floor(G/4)]),Wt(g,g,e.modelToView),!f.getParallelProjection()){Yn(p,g);const j=-u[0]/g[2];_r(g,p,j)}Wt(g,g,s.vcpc),v=Math.min(g[0],v),y=Math.max(g[0],y),m=Math.min(g[1],m),w=Math.max(g[1],w)}l.setUniformf("dcxmin",v),l.setUniformf("dcxmax",y),l.setUniformf("dcymin",m),l.setUniformf("dcymax",w),l.isUniformUsed("cameraParallel")&&l.setUniformi("cameraParallel",f.getParallelProjection());const x=e.currentInput.getSpatialExtent(),C=e.currentInput.getSpacing(),S=new Float64Array(3);Zn(S,(x[1]-x[0])*C[0],(x[3]-x[2])*C[1],(x[5]-x[4])*C[2]),l.setUniform3f("vSpacing",C[0],C[1],C[2]),Zn(g,x[0],x[2],x[4]),e.currentInput.indexToWorldVec3(g,g),Wt(g,g,e.modelToView),l.setUniform3f("vOriginVC",g[0],g[1],g[2]);const T=e.currentInput.getIndexToWorld();Dn(e.idxToView,e.modelToView,T),Dh(e.idxNormalMatrix,s.normalMatrix,c.normalMatrix),Dh(e.idxNormalMatrix,e.idxNormalMatrix,e.currentInput.getDirectionByReference());const _=ra(S)/t.getCurrentSampleDistance(o);_>e.renderable.getMaximumSamplesPerRay()&&Dte(`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(tr(E,1,1,1),WQ(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 B=e.scalarTexture.getVolumeInfo();l.setUniformf("texWidth",e.scalarTexture.getWidth()),l.setUniformf("texHeight",e.scalarTexture.getHeight()),l.setUniformi("xreps",B.xreps),l.setUniformi("xstride",B.xstride),l.setUniformi("ystride",B.ystride)}const b=new Float64Array(3),D=new Float64Array(3);for(let B=0;B<6;++B){switch(B){case 1:tr(b,-1,0,0),tr(D,x[0],x[2],x[4]);break;case 2:tr(b,0,1,0),tr(D,x[1],x[3],x[5]);break;case 3:tr(b,0,-1,0),tr(D,x[0],x[2],x[4]);break;case 4:tr(b,0,0,1),tr(D,x[1],x[3],x[5]);break;case 5:tr(b,0,0,-1),tr(D,x[0],x[2],x[4]);break;case 0:default:tr(b,1,0,0),tr(D,x[1],x[3],x[5]);break}s1(b,b,e.idxNormalMatrix),Gt(D,D,e.idxToView);const j=-1*pt(D,b);l.setUniform3f(`vPlaneNormal${B}`,b[0],b[1],b[2]),l.setUniformf(`vPlaneDistance${B}`,j)}if(t.isLabelmapOutlineRequired(a)){const j=e.currentInput.getWorldToIndex();l.setUniformMatrix("vWCtoIDX",j);const V=o.getActiveCamera(),[F,G]=V.getClippingRange(),X=V.getDistance();V.setClippingRange(X,X+.1);const ne=e.openGLCamera.getKeyMatrices(o);ei(e.projectionToWorld,ne.wcpc),V.setClippingRange(F,G),e.openGLCamera.getKeyMatrices(o),l.setUniformMatrix("PCWCMatrix",e.projectionToWorld);const ue=t.getRenderTargetSize();l.setUniformf("vpWidth",ue[0]),l.setUniformf("vpHeight",ue[1]);const me=t.getRenderTargetOffset();l.setUniformf("vpOffsetX",me[0]/ue[0]),l.setUniformf("vpOffsetY",me[1]/ue[1])}if(ei(e.projectionToView,s.vcpc),l.setUniformMatrix("PCVCMatrix",e.projectionToView),e.lightComplexity===0)return;let I=0;const P=[],M=[],L=[];if(o.getLights().forEach(B=>{if(B.getSwitch()>0){const V=B.getColor(),F=B.getIntensity();P[0+I*3]=V[0]*F,P[1+I*3]=V[1]*F,P[2+I*3]=V[2]*F;const G=B.getDirection();tr(b,G[0],G[1],G[2]),s1(b,b,s.normalMatrix),en(b,b),M[0+I*3]=b[0],M[1+I*3]=b[1],M[2+I*3]=b[2],L[0+I*3]=-.5*b[0],L[1+I*3]=-.5*b[1],L[2+I*3]=-.5*(b[2]-1),I++}}),l.setUniformi("twoSidedLighting",o.getTwoSidedLighting()),l.setUniformi("lightNum",I),l.setUniform3fv("lightColor",P),l.setUniform3fv("lightDirectionVC",M),l.setUniform3fv("lightHalfAngleVC",L),e.lightComplexity===3){I=0;const B=[],j=[],V=[],F=[],G=[];o.getLights().forEach(X=>{if(X.getSwitch()>0){const ue=X.getAttenuationValues();j[0+I*3]=ue[0],j[1+I*3]=ue[1],j[2+I*3]=ue[2],F[I]=X.getExponent(),V[I]=X.getConeAngle(),G[I]=X.getPositional();const me=X.getTransformedPosition();Gt(me,me,e.modelToView),B[0+I*3]=me[0],B[1+I*3]=me[1],B[2+I*3]=me[2],I+=1}}),l.setUniform3fv("lightPositionVC",B),l.setUniform3fv("lightAttenuation",j),l.setUniformfv("lightConeAngle",V),l.setUniformfv("lightExponent",F),l.setUniformiv("lightPositional",G)}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 B=e.renderable.getLAOKernelSize();l.setUniformi("kernelSize",B);const j=[];for(let V=0;V{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()===MT.NEAREST?(e.scalarTexture.setMinificationFilter(Wt.NEAREST),e.scalarTexture.setMagnificationFilter(Wt.NEAREST)):(e.scalarTexture.setMinificationFilter(Wt.LINEAR),e.scalarTexture.setMagnificationFilter(Wt.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(` + volumeMapper sampleDistance or its maximum number of samples.`);const E=new Float64Array(3);if(Zn(E,1,1,1),zY(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 G=e.scalarTexture.getVolumeInfo();l.setUniformf("texWidth",e.scalarTexture.getWidth()),l.setUniformf("texHeight",e.scalarTexture.getHeight()),l.setUniformi("xreps",G.xreps),l.setUniformi("xstride",G.xstride),l.setUniformi("ystride",G.ystride)}const b=new Float64Array(3),D=new Float64Array(3);for(let G=0;G<6;++G){switch(G){case 1:Zn(b,-1,0,0),Zn(D,x[0],x[2],x[4]);break;case 2:Zn(b,0,1,0),Zn(D,x[1],x[3],x[5]);break;case 3:Zn(b,0,-1,0),Zn(D,x[0],x[2],x[4]);break;case 4:Zn(b,0,0,1),Zn(D,x[1],x[3],x[5]);break;case 5:Zn(b,0,0,-1),Zn(D,x[0],x[2],x[4]);break;case 0:default:Zn(b,1,0,0),Zn(D,x[1],x[3],x[5]);break}Iv(b,b,e.idxNormalMatrix),Wt(D,D,e.idxToView);const j=-1*St(D,b);l.setUniform3f(`vPlaneNormal${G}`,b[0],b[1],b[2]),l.setUniformf(`vPlaneDistance${G}`,j)}if(t.isLabelmapOutlineRequired(a)){const j=e.currentInput.getWorldToIndex();l.setUniformMatrix("vWCtoIDX",j);const F=o.getActiveCamera(),[U,W]=F.getClippingRange(),J=F.getDistance();F.setClippingRange(J,J+.1);const te=e.openGLCamera.getKeyMatrices(o);$r(e.projectionToWorld,te.wcpc),F.setClippingRange(U,W),e.openGLCamera.getKeyMatrices(o),l.setUniformMatrix("PCWCMatrix",e.projectionToWorld);const le=t.getRenderTargetSize();l.setUniformf("vpWidth",le[0]),l.setUniformf("vpHeight",le[1]);const ve=t.getRenderTargetOffset();l.setUniformf("vpOffsetX",ve[0]/le[0]),l.setUniformf("vpOffsetY",ve[1]/le[1])}if($r(e.projectionToView,s.vcpc),l.setUniformMatrix("PCVCMatrix",e.projectionToView),e.lightComplexity===0)return;let O=0;const L=[],P=[],k=[];if(o.getLights().forEach(G=>{if(G.getSwitch()>0){const F=G.getColor(),U=G.getIntensity();L[0+O*3]=F[0]*U,L[1+O*3]=F[1]*U,L[2+O*3]=F[2]*U;const W=G.getDirection();Zn(b,W[0],W[1],W[2]),Iv(b,b,s.normalMatrix),Yn(b,b),P[0+O*3]=b[0],P[1+O*3]=b[1],P[2+O*3]=b[2],k[0+O*3]=-.5*b[0],k[1+O*3]=-.5*b[1],k[2+O*3]=-.5*(b[2]-1),O++}}),l.setUniformi("twoSidedLighting",o.getTwoSidedLighting()),l.setUniformi("lightNum",O),l.setUniform3fv("lightColor",L),l.setUniform3fv("lightDirectionVC",P),l.setUniform3fv("lightHalfAngleVC",k),e.lightComplexity===3){O=0;const G=[],j=[],F=[],U=[],W=[];o.getLights().forEach(J=>{if(J.getSwitch()>0){const le=J.getAttenuationValues();j[0+O*3]=le[0],j[1+O*3]=le[1],j[2+O*3]=le[2],U[O]=J.getExponent(),F[O]=J.getConeAngle(),W[O]=J.getPositional();const ve=J.getTransformedPosition();Wt(ve,ve,e.modelToView),G[0+O*3]=ve[0],G[1+O*3]=ve[1],G[2+O*3]=ve[2],O+=1}}),l.setUniform3fv("lightPositionVC",G),l.setUniform3fv("lightAttenuation",j),l.setUniformfv("lightConeAngle",F),l.setUniformfv("lightExponent",U),l.setUniformiv("lightPositional",W)}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 G=e.renderable.getLAOKernelSize();l.setUniformi("kernelSize",G);const j=[];for(let F=0;F{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()===TS.NEAREST?(e.scalarTexture.setMinificationFilter(Ft.NEAREST),e.scalarTexture.setMagnificationFilter(Ft.NEAREST)):(e.scalarTexture.setMinificationFilter(Ft.LINEAR),e.scalarTexture.setMagnificationFilter(Ft.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=j4.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)||GC("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){GC("No input!");return}t.renderPieceStart(i,o),t.renderPieceDraw(i,o),t.renderPieceFinish(i,o)},t.computeBounds=(i,o)=>{if(!t.getInput()){Og(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 T,_;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 E=new Uint8Array(1024);for(let b=0;b<32*32;++b)E[b]=255*Math.random();e.jitterTexture.setMinificationFilter(Wt.LINEAR),e.jitterTexture.setMagnificationFilter(Wt.LINEAR),e.jitterTexture.create2DFromRaw(32,32,1,xn.UNSIGNED_CHAR,E)}const l=s.getNumberOfComponents(),f=t.useIndependentComponents(c),u=f?l:1,d=c.getScalarOpacity(),h=e._openGLRenderWindow.getGraphicsResourceForObject(d);let g=Pl(d,f,u);if(!(h!=null&&h.oglObject)||h.hash!==g){e.opacityTexture=Vr.newInstance(),e.opacityTexture.setOpenGLRenderWindow(e._openGLRenderWindow);const E=1024,b=E*2*u,D=new Float32Array(b),I=new Float32Array(E);for(let P=0;P1?1:-1,E[P*3+2]=-1;const b=new Uint16Array(8);b[0]=3,b[1]=0,b[2]=1,b[3]=3,b[4]=3,b[5]=0,b[6]=3,b[7]=2;const D=Nt.newInstance({numberOfComponents:3,values:E});D.setName("points");const I=Nt.newInstance({numberOfComponents:1,values:b});e.tris.getCABO().createVBO(I,"polys",Io.SURFACE,{points:D,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=Vr.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()===oy.LABELMAP_EDGE_PROJECTION_BLEND}}const fie={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 yk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,fie,r),gr.extend(t,e,r),Ol.implementBuildShadersWithReplacements(t,e,r),e.VBOBuildTime={},xr(e.VBOBuildTime,{mtime:0}),e.tris=Ul.newInstance(),e.jitterTexture=Vr.newInstance(),e.jitterTexture.setWrapS(rm.REPEAT),e.jitterTexture.setWrapT(rm.REPEAT),e.framebuffer=ox.newInstance(),e.idxToView=Lt(new Float64Array(16)),e.idxNormalMatrix=Ns(new Float64Array(9)),e.modelToView=Lt(new Float64Array(16)),e.projectionToView=Lt(new Float64Array(16)),e.projectionToWorld=Lt(new Float64Array(16)),vi(t,e,["context"]),uie(t,e)}const wk=jn(yk,"vtkOpenGLVolumeMapper");var xk={newInstance:wk,extend:yk};Ri("vtkVolumeMapper",wk);const{vtkDebugMacro:die}=Ao;function hie(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():die("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 gie={};function Ck(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,gie,r),gr.extend(t,e,r),hie(t,e)}const Sk=jn(Ck,"vtkOpenGLPixelSpaceCallbackMapper");var pie={newInstance:Sk,extend:Ck};Ri("vtkPixelSpaceCallbackMapper",Sk);const Tk=Object.create(null);function Vs(t,e){Tk[t]=e}function mie(t,e){e.classHierarchy.push("vtkWebGPUViewNodeFactory")}const vie={};function yie(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,vie,r),e.overrides=Tk,$4.extend(t,e,r),mie(t,e)}Q.newInstance(yie,"vtkWebGPUViewNodeFactory");function wie(t,e){e.classHierarchy.push("vtkWebGPUCamera"),t.getProjectionMatrix=(r,n,i,o)=>{if(Lt(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();zr(e.keyMatrices.normalMatrix,o),e.keyMatrices.normalMatrix[3]=0,e.keyMatrices.normalMatrix[7]=0,e.keyMatrices.normalMatrix[11]=0,ei(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix),Mn(e.keyMatrices.wcvc,o);const a=r.getStabilizedCenterByReference();or(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()),Ln(e.keyMatrices.scpc,e.keyMatrices.vcpc,e.keyMatrices.scvc),ei(e.keyMatrices.pcsc,e.keyMatrices.scpc),e.keyMatrixTime.modified()}return e.keyMatrices}}const xie={keyMatrixTime:null,keyMatrices:null};function Cie(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,xie,r),gr.extend(t,e,r),e.keyMatrixTime={},Q.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)},Q.setGet(t,e,["keyMatrixTime"]),wie(t,e)}const Sie=Q.newInstance(Cie);Vs("vtkCamera",Sie);function Tie(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,_ie,r),Q.obj(t,e),e.bindables=[],e.bindGroupTime={},Q.obj(e.bindGroupTime,{mtime:0}),Q.get(t,e,["bindGroupTime","handle","sizeInBytes","usage"]),Q.setGet(t,e,["label","device","arrayInformation"]),Tie(t,e)}const Eie=Q.newInstance(_k);var Ek={newInstance:Eie,extend:_k};function bie(t,e){e.classHierarchy.push("vtkWebGPUShaderModule"),t.initialize=(r,n)=>{e.device=r,e.handle=e.device.getHandle().createShaderModule({code:n.getCode()})}}const Die={device:null,handle:null};function bk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Die,r),Q.obj(t,e),Q.get(t,e,["lastCameraMTime"]),Q.setGet(t,e,["device","handle"]),bie(t,e)}const Iie=Q.newInstance(bk,"vtkWebGPUShaderModule");var Mie={newInstance:Iie,extend:bk};function Oie(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 Pie(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,Rie,r),e._shaderModules=new Map,Q.obj(t,e),Q.setGet(t,e,["device","window"]),Pie(t,e)}const Aie=Q.newInstance(Dk,"vtkWebGPUShaderCache");var fr={newInstance:Aie,extend:Dk,substitute:Oie};function Lie(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 Nie={handle:null,layouts:null,renderEncoder:null,shaderDescriptions:null,vertexState:null,topology:null,pipelineDescription:null};function Ik(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Nie,r),xr(t,e),e.layouts=[],e.shaderDescriptions=[],Qo(t,e,["handle","pipelineDescription"]),vi(t,e,["device","renderEncoder","topology","vertexState"]),Lie(t,e)}const kie=jn(Ik,"vtkWebGPUPipeline");var Vie={newInstance:kie,extend:Ik};function Fie(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=fr.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=fr.substitute(e.code,"//VTK::IOStructs::Dec",o).result}}const Uie={type:null,hash:null,code:null,outputNames:null,outputTypes:null};function Mk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Uie,r),e.outputNames=[],e.outputTypes=[],e.outputInterpolations=[],e.builtinOutputNames=[],e.builtinOutputTypes=[],e.builtinInputNames=[],e.builtinInputTypes=[],Q.obj(t,e),Q.setGet(t,e,["type","hash","code"]),Q.getArray(t,e,["outputTypes","outputNames","outputInterpolations"]),Fie(t,e)}const Bie=Q.newInstance(Mk,"vtkWebGPUShaderDescription");var U6={newInstance:Bie,extend:Mk};const B6={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 Gie(t){return!t||t.length<6?0:t in B6?B6[t]:(An(`unknown format ${t}`),null)}function Wie(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 An(`unknown format ${t}`),0;const i=5-n/2;return e*i}function $ie(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 zie(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{An(`unknown format ${t}`);return}const r=t.split("x")[0],n=Number(r[r.length-1]);if(Number.isNaN(n)){An(`unknown format ${t}`);return}return e+=8*(5-n/2),e+="Array",e}function jie(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{An(`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 Hie(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 Kie(t){if(t){if(t.includes("f32"))return"Float32Array";if(t.includes("i32"))return"Int32Array";if(t.includes("u32"))return"Uint32Array";An(`unknown format ${t}`)}}var bo={getDetailsFromTextureFormat:Gie,getByteStrideFromBufferFormat:Wie,getNumberOfComponentsFromBufferFormat:$ie,getNativeTypeFromBufferFormat:zie,getShaderTypeFromBufferFormat:jie,getByteStrideFromShaderFormat:Hie,getNativeTypeFromShaderFormat:Kie};function Xie(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 Yie={inputs:null,bindingDescriptions:!1,attributeDescriptions:null,indexBuffer:null};function Ok(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Yie,r),xr(t,e),e.bindingDescriptions=[],e.attributeDescriptions=[],e.inputs=[],vi(t,e,["created","device","handle","indexBuffer"]),qie(t,e)}const Jie=jn(Ok,"vtkWebGPUVertexInput");var Zie={newInstance:Jie,extend:Ok};const Qie=` +`),"");const l=e.copyShader;e.copyVAO=v4.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)||Yx("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){Yx("No input!");return}t.renderPieceStart(i,o),t.renderPieceDraw(i,o),t.renderPieceFinish(i,o)},t.computeBounds=(i,o)=>{if(!t.getInput()){Yh(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 T,_;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 E=new Uint8Array(1024);for(let b=0;b<32*32;++b)E[b]=255*Math.random();e.jitterTexture.setMinificationFilter(Ft.LINEAR),e.jitterTexture.setMagnificationFilter(Ft.LINEAR),e.jitterTexture.create2DFromRaw(32,32,1,gn.UNSIGNED_CHAR,E)}const l=s.getNumberOfComponents(),f=t.useIndependentComponents(c),u=f?l:1,d=c.getScalarOpacity(),h=e._openGLRenderWindow.getGraphicsResourceForObject(d);let g=hl(d,f,u);if(!(h!=null&&h.oglObject)||h.hash!==g){e.opacityTexture=br.newInstance(),e.opacityTexture.setOpenGLRenderWindow(e._openGLRenderWindow);const E=1024,b=E*2*u,D=new Float32Array(b),O=new Float32Array(E);for(let L=0;L1?1:-1,E[L*3+2]=-1;const b=new Uint16Array(8);b[0]=3,b[1]=0,b[2]=1,b[3]=3,b[4]=3,b[5]=0,b[6]=3,b[7]=2;const D=Ot.newInstance({numberOfComponents:3,values:E});D.setName("points");const O=Ot.newInstance({numberOfComponents:1,values:b});e.tris.getCABO().createVBO(O,"polys",mo.SURFACE,{points:D,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=br.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()===xv.LABELMAP_EDGE_PROJECTION_BLEND}}const Mte={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 RA(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Mte,r),cr.extend(t,e,r),dl.implementBuildShadersWithReplacements(t,e,r),e.VBOBuildTime={},pr(e.VBOBuildTime,{mtime:0}),e.tris=wl.newInstance(),e.jitterTexture=br.newInstance(),e.jitterTexture.setWrapS(gm.REPEAT),e.jitterTexture.setWrapT(gm.REPEAT),e.framebuffer=sw.newInstance(),e.idxToView=Pt(new Float64Array(16)),e.idxNormalMatrix=bs(new Float64Array(9)),e.modelToView=Pt(new Float64Array(16)),e.projectionToView=Pt(new Float64Array(16)),e.projectionToWorld=Pt(new Float64Array(16)),si(t,e,["context"]),Ote(t,e)}const LA=Wn(RA,"vtkOpenGLVolumeMapper");var AA={newInstance:LA,extend:RA};Si("vtkVolumeMapper",LA);function L4(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 A4(t,e,r={}){const{isVolumeBuffer:n=!1}=r,i=L4(t,n),o=i.BYTES_PER_ELEMENT;return{numBytes:e*o,TypedArrayConstructor:i}}function jr(t){return hm.get(t)}function Go(){return hm.getAll()}const Vy=t=>t&&typeof t=="object"&&Object.prototype.toString.call(t)!=="[object RegExp]"&&Object.prototype.toString.call(t)!=="[object Date]",Pte=t=>Array.isArray(t)?[]:{},mm=(t,e)=>e&&e.clone===!0&&Vy(t)?Li(Pte(t),t,e):t,ED=(t,e,r)=>{const n=t.slice();return e.forEach(function(i,o){typeof n[o]>"u"?n[o]=mm(i,r):Vy(i)?n[o]=Li(t[o],i,r):t.indexOf(i)===-1&&(n[o]=mm(i,r))}),n},Rte=(t,e,r)=>{const n={};return Vy(t)&&Object.keys(t).forEach(function(i){n[i]=mm(t[i],r)}),Object.keys(e).forEach(function(i){!Vy(e[i])||!t[i]?n[i]=mm(e[i],r):n[i]=Li(t[i],e[i],r)}),n},Li=(t={},e={},r=void 0)=>{const n=Array.isArray(e),o=(r||{arrayMerge:ED}).arrayMerge||ED;return n?Array.isArray(t)?o(t,e,r):mm(e,r):Rte(t,e,r)};/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */const NA=Symbol("Comlink.proxy"),Lte=Symbol("Comlink.endpoint"),kA=Symbol("Comlink.releaseProxy"),Jx=Symbol("Comlink.finalizer"),Lv=Symbol("Comlink.thrown"),VA=t=>typeof t=="object"&&t!==null||typeof t=="function",Ate={canHandle:t=>VA(t)&&t[NA],serialize(t){const{port1:e,port2:r}=new MessageChannel;return N4(t,e),[r,[r]]},deserialize(t){return t.start(),_S(t)}},Nte={canHandle:t=>VA(t)&&Lv 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}},FA=new Map([["proxy",Ate],["throw",Nte]]);function kte(t,e){for(const r of t)if(e===r||r==="*"||r instanceof RegExp&&r.test(e))return!0;return!1}function N4(t,e=globalThis,r=["*"]){e.addEventListener("message",function n(i){if(!i||!i.data)return;if(!kte(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(id);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]]=id(i.data.value),l=!0;break;case"APPLY":l=u.apply(f,c);break;case"CONSTRUCT":{const d=new u(...c);l=WA(d)}break;case"ENDPOINT":{const{port1:d,port2:h}=new MessageChannel;N4(t,h),l=Gte(d,[d])}break;case"RELEASE":l=void 0;break;default:return}}catch(f){l={value:f,[Lv]:0}}Promise.resolve(l).catch(f=>({value:f,[Lv]:0})).then(f=>{const[u,d]=By(f);e.postMessage(Object.assign(Object.assign({},u),{id:o}),d),a==="RELEASE"&&(e.removeEventListener("message",n),UA(e),Jx in t&&typeof t[Jx]=="function"&&t[Jx]())}).catch(f=>{const[u,d]=By({value:new TypeError("Unserializable return value"),[Lv]:0});e.postMessage(Object.assign(Object.assign({},u),{id:o}),d)})}),e.start&&e.start()}function Vte(t){return t.constructor.name==="MessagePort"}function UA(t){Vte(t)&&t.close()}function _S(t,e){const r=new Map;return t.addEventListener("message",function(i){const{data:o}=i;if(!o||!o.id)return;const a=r.get(o.id);if(a)try{a(o)}finally{r.delete(o.id)}}),ES(t,r,[],e)}function m2(t){if(t)throw new Error("Proxy has been released and is not useable")}function BA(t){return m0(t,new Map,{type:"RELEASE"}).then(()=>{UA(t)})}const Fy=new WeakMap,Uy="FinalizationRegistry"in globalThis&&new FinalizationRegistry(t=>{const e=(Fy.get(t)||0)-1;Fy.set(t,e),e===0&&BA(t)});function Fte(t,e){const r=(Fy.get(e)||0)+1;Fy.set(e,r),Uy&&Uy.register(t,e,t)}function Ute(t){Uy&&Uy.unregister(t)}function ES(t,e,r=[],n=function(){}){let i=!1;const o=new Proxy(n,{get(a,s){if(m2(i),s===kA)return()=>{Ute(o),BA(t),e.clear(),i=!0};if(s==="then"){if(r.length===0)return{then:()=>o};const c=m0(t,e,{type:"GET",path:r.map(l=>l.toString())}).then(id);return c.then.bind(c)}return ES(t,e,[...r,s])},set(a,s,c){m2(i);const[l,f]=By(c);return m0(t,e,{type:"SET",path:[...r,s].map(u=>u.toString()),value:l},f).then(id)},apply(a,s,c){m2(i);const l=r[r.length-1];if(l===Lte)return m0(t,e,{type:"ENDPOINT"}).then(id);if(l==="bind")return ES(t,e,r.slice(0,-1));const[f,u]=bD(c);return m0(t,e,{type:"APPLY",path:r.map(d=>d.toString()),argumentList:f},u).then(id)},construct(a,s){m2(i);const[c,l]=bD(s);return m0(t,e,{type:"CONSTRUCT",path:r.map(f=>f.toString()),argumentList:c},l).then(id)}});return Fte(o,t),o}function Bte(t){return Array.prototype.concat.apply([],t)}function bD(t){const e=t.map(By);return[e.map(r=>r[0]),Bte(e.map(r=>r[1]))]}const GA=new WeakMap;function Gte(t,e){return GA.set(t,e),t}function WA(t){return Object.assign(t,{[NA]:!0})}function By(t){for(const[e,r]of FA)if(r.canHandle(t)){const[n,i]=r.serialize(t);return[{type:"HANDLER",name:e,value:n},i]}return[{type:"RAW",value:t},GA.get(t)||[]]}function id(t){switch(t.type){case"HANDLER":return FA.get(t.name).deserialize(t.value);case"RAW":return t.value}}function m0(t,e,r,n){return new Promise(i=>{const o=Wte();e.set(o,i),t.start&&t.start(),t.postMessage(Object.assign({id:o},r),n)})}function Wte(){return new Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}class k4{constructor(e){this.numRequests={[un.Interaction]:0,[un.Thumbnail]:0,[un.Prefetch]:0,[un.Compute]:0},this.id=e||Tn(),this.requestPool={[un.Interaction]:{0:[]},[un.Thumbnail]:{0:[]},[un.Prefetch]:{0:[]},[un.Compute]:{0:[]}},this.grabDelay=5,this.awake=!1,this.numRequests={[un.Interaction]:0,[un.Thumbnail]:0,[un.Prefetch]:0,[un.Compute]:0},this.maxNumRequests={[un.Interaction]:6,[un.Thumbnail]:6,[un.Prefetch]:5,[un.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(un.Interaction),r=this.sendRequests(un.Thumbnail),n=this.sendRequests(un.Prefetch),i=this.sendRequests(un.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 zA{constructor(){this.workerRegistry={},this.workerPoolManager=new k4("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=>WA(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[kA](),n.nativeWorkers[r].terminate(),n.instances[r]=null,n.lastActiveTime[r]=null)}}const Zx=4,zte=5,$te=1,DD=[1,1];function ID({ext:t,filterType:e,texData:r,internalFormat:n,glDataType:i}){try{const o=document.createElement("canvas");o.width=Zx,o.height=Zx;const a=o.getContext("webgl2");if(!a)return!1;const s=`#version 300 es + void main() { + gl_PointSize = ${Zx.toFixed(1)}; + gl_Position = vec4(0, 0, 0, 1); + } + `,c=`#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 l;if(t&&(l=a.getExtension(t),!l))return!1;const f=a.createShader(a.VERTEX_SHADER);if(a.shaderSource(f,s),a.compileShader(f),!a.getShaderParameter(f,a.COMPILE_STATUS))return!1;const u=a.createShader(a.FRAGMENT_SHADER);if(a.shaderSource(u,c),a.compileShader(u),!a.getShaderParameter(u,a.COMPILE_STATUS))return!1;const d=a.createProgram();if(a.attachShader(d,f),a.attachShader(d,u),a.linkProgram(d),!a.getProgramParameter(d,a.LINK_STATUS))return!1;const h=a.createTexture();a.bindTexture(a.TEXTURE_2D,h),a.texImage2D(a.TEXTURE_2D,0,n(a,l),zte,$te,0,a.RED,i(a,l),r);const g=e==="LINEAR"?a.LINEAR:a.NEAREST;a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,g),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,g),a.useProgram(d),a.drawArrays(a.POINTS,0,1);const p=new Uint8Array(4);a.readPixels(DD[0],DD[1],1,1,a.RGBA,a.UNSIGNED_BYTE,p);const[v,y,m]=p,w=a.getExtension("WEBGL_lose_context");return w&&w.loseContext(),v===y&&y===m&&v!==0}catch{return!1}}function jte(){const t=new Int16Array([32767,2e3,3e3,4e3,5e3,16784,7e3,8e3,9e3,32767]);return{norm16:ID({ext:"EXT_texture_norm16",filterType:"NEAREST",texData:t,internalFormat:(e,r)=>r.R16_SNORM_EXT,glDataType:e=>e.SHORT}),norm16Linear:ID({ext:"EXT_texture_norm16",filterType:"LINEAR",texData:t,internalFormat:(e,r)=>r.R16_SNORM_EXT,glDataType:e=>e.SHORT})}}let Ku=!1;const bS={gpuTier:{tier:2},isMobile:!1,rendering:{useCPURendering:!1,preferSizeOverAccuracy:!1,strictZSpacingForVolumeViewport:!0},peerImport:t=>null};let dc={...bS,rendering:{...bS.rendering}},bp=null,$A=!1;function Hte(){const t=document.createElement("canvas");return t.getContext("webgl2")||t.getContext("webgl")||t.getContext("experimental-webgl")}function jA(){const t=Hte();return t instanceof WebGLRenderingContext||t instanceof WebGL2RenderingContext}function Kte(){const t=jte();return t.norm16&&t.norm16Linear}function HA(){return/iPad|iPhone|iPod/.test(navigator.platform)?!0:navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&navigator.platform.includes("MacIntel")}function KA(t=dc){var r;return Ku||($A=Kte(),dc=Li(bS,t),HA()&&((r=t.rendering)!=null&&r.preferSizeOverAccuracy?dc.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")),jA()?console.log("CornerstoneRender: using GPU rendering"):(console.log("CornerstoneRender: GPU not detected, using CPU rendering"),dc.rendering.useCPURendering=!0),Ku=!0,bp||(bp=new zA),Ku)}function qte(){return $A}function Xte(t,e=!0){dc.rendering.useCPURendering=t,Ku=!0,e&&Cw()}function Yte(t){dc.rendering.preferSizeOverAccuracy=t,Ku=!0,Cw()}function ww(){return!HA()}function Jte(){dc.rendering.useCPURendering=!jA(),Cw()}function ih(){return dc.rendering.useCPURendering}function qA(){return Ku}function Zte(){Ku=!1}function xw(){return dc}function Qte(t){dc=t,Cw()}function Cw(){Go().forEach(t=>{t.getViewports().forEach(e=>{e.updateRenderingPipeline()})})}function xl(){return bp||(bp=new zA),bp}async function XA(t){return dc.peerImport(t)}function ene(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 y=0;y<32*32;++y)v[y]=255*Math.random();e.jitterTexture.setMinificationFilter(Ft.LINEAR),e.jitterTexture.setMagnificationFilter(Ft.LINEAR),e.jitterTexture.create2DFromRaw(32,32,1,gn.UNSIGNED_CHAR,v)}const{numberOfComponents:a}=i.get("numberOfComponents"),s=t.useIndependentComponents(o),c=o.getScalarOpacity(),l=e._openGLRenderWindow.getGraphicsResourceForObject(c);let f=hl(c,s,a);if(!(l!=null&&l.oglObject)||l.hash!==f){e.opacityTexture=br.newInstance(),e.opacityTexture.setOpenGLRenderWindow(e._openGLRenderWindow);const v=1024,y=v*2*a,m=new Float32Array(y),w=new Float32Array(v);for(let x=0;x1?1:-1,v[x*3+2]=-1;const y=new Uint16Array(8);y[0]=3,y[1]=0,y[2]=1,y[3]=3,y[4]=3,y[5]=0,y[6]=3,y[7]=2;const m=Ot.newInstance({numberOfComponents:3,values:v});m.setName("points");const w=Ot.newInstance({numberOfComponents:1,values:y});e.tris.getCABO().createVBO(w,"polys",mo.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=YA,e.getModelInitialValues=r=>{const n={};return r.getClassName()==="vtkSharedVolumeMapper"&&(n.scalarTexture=r.getScalarTexture()),n}}const ane={};function JA(t,e,r={}){Object.assign(e,ane,r),n4.extend(t,e,r),one(t,e),ro("vtkActor",nQ.newInstance),ro("vtkActor2D",aQ.newInstance),ro("vtkCamera",uQ.newInstance),ro("vtkGlyph3DMapper",Lee.newInstance),ro("vtkImageMapper",Bee.newInstance),ro("vtkImageCPRMapper",jee.newInstance),ro("vtkImageSlice",Xee.newInstance),ro("vtkMapper",vw.newInstance),ro("vtkPixelSpaceCallbackMapper",ete.newInstance),ro("vtkRenderer",ote.newInstance),ro("vtkSkybox",lte.newInstance),ro("vtkSphereMapper",pte.newInstance),ro("vtkStickMapper",xte.newInstance),ro("vtkTexture",br.newInstance),ro("vtkVolume",_te.newInstance),ro("vtkVolumeMapper",AA.newInstance),ro("vtkSharedVolumeMapper",ine.newInstance)}const sne=Q.newInstance(JA,"vtkStreamingOpenGLViewNodeFactory"),cne={newInstance:sne,extend:JA};function lne(t,e){e.classHierarchy.push("vtkStreamingOpenGLRenderWindow")}function ZA(t,e,r={}){Object.assign(e,r),ZZ.extend(t,e,r),e.myFactory=cne.newInstance(),ro("vtkRenderWindow",QA),lne(t,e)}const QA=Q.newInstance(ZA,"vtkStreamingOpenGLRenderWindow"),une={newInstance:QA,extend:ZA},{vtkDebugMacro:v2}=Q;function fne(t,e){e.classHierarchy.push("vtkCamera");const r=new Float64Array(3),n=new Float64Array([0,0,-1]),i=new Float64Array([0,1,0]),o=Pt(new Float64Array(16)),a=Pt(new Float64Array(16)),s=new Float64Array(3),c=new Float64Array(3),l=new Float64Array(3),f=Pt(new Float64Array(16)),u=Pt(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,y)=>{p===e.position[0]&&v===e.position[1]&&y===e.position[2]||(e.position[0]=p,e.position[1]=v,e.position[2]=y,t.computeDistance(),t.modified())},t.setFocalPoint=(p,v,y)=>{p===e.focalPoint[0]&&v===e.focalPoint[1]&&y===e.focalPoint[2]||(e.focalPoint[0]=p,e.focalPoint[1]=v,e.focalPoint[2]=y,t.computeDistance(),t.modified())},t.setDistance=p=>{if(e.distance===p)return;e.distance=p,e.distance<1e-20&&(e.distance=1e-20,v2("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],y=e.focalPoint[2]-e.position[2];if(e.distance=Math.sqrt(p*p+v*v+y*y),e.distance<1e-20){e.distance=1e-20,v2("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]=y/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,y=e.focalPoint,m=e.viewUp,w=new Float64Array([m[0],m[1],m[2],0]);Pt(f);const x=new Float64Array([y[0]-v[0],y[1]-v[1],y[2]-v[2]]);Lo(f,f,Jr(p),x),Hu(w,w,f),e.viewUp[0]=w[0],e.viewUp[1]=w[1],e.viewUp[2]=w[2],t.modified()},t.azimuth=p=>{const v=e.focalPoint;Pt(u),ur(u,u,v),Lo(u,u,Jr(p),e.viewUp),ur(u,u,[-v[0],-v[1],-v[2]]),Wt(d,e.position,u),t.setPosition(d[0],d[1],d[2])},t.yaw=p=>{const v=e.position;Pt(u),ur(u,u,v),Lo(u,u,Jr(p),e.viewUp),ur(u,u,[-v[0],-v[1],-v[2]]),Wt(h,e.focalPoint,u),t.setFocalPoint(h[0],h[1],h[2])},t.elevation=p=>{const v=e.focalPoint,y=t.getViewMatrix(),m=[-y[0],-y[1],-y[2]];Pt(u),ur(u,u,v),Lo(u,u,Jr(p),m),ur(u,u,[-v[0],-v[1],-v[2]]),Wt(d,e.position,u),t.setPosition(d[0],d[1],d[2])},t.pitch=p=>{const v=e.position,y=t.getViewMatrix(),m=[y[0],y[1],y[2]];Pt(u),ur(u,u,v),Lo(u,u,Jr(p),m),ur(u,u,[-v[0],-v[1],-v[2]]),Wt(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,y)=>{const m=[p,v,y];_y(e.position,m,e.position),_y(e.focalPoint,m,e.focalPoint),t.computeDistance(),t.modified()},t.applyTransform=p=>{const v=[...e.viewUp,1],y=[],m=[],w=[];v[0]+=e.position[0],v[1]+=e.position[1],v[2]+=e.position[2],Hu(y,[...e.position,1],p),Hu(m,[...e.focalPoint,1],p),Hu(w,v,p),w[0]-=y[0],w[1]-=y[1],w[2]-=y[2],t.setPosition(...y.slice(0,3)),t.setFocalPoint(...m.slice(0,3)),t.setViewUp(...w.slice(0,3))},t.getThickness=()=>e.clippingRange[1]-e.clippingRange[0],t.setThickness=p=>{let v=p;v<1e-20&&(v=1e-20,v2("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,v2("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=>(Pr(p,e.cameraLightTransform),p),t.computeCameraLightTransform=()=>{Pr(o,t.getViewMatrix()),$r(o,o),u4(a,[e.distance,e.distance,e.distance]),Dn(o,o,a),Pt(e.cameraLightTransform),ur(e.cameraLightTransform,o,[0,0,-1])},t.deepCopy=p=>{},t.physicalOrientationToWorldDirection=p=>{const v=eD(p[0],p[1],p[2],p[3]),y=mf(),m=eD(0,0,1,0);return ZY(y,v),Q6(m,v,m),Q6(m,m,y),[m[0],m[1],m[2]]},t.getPhysicalToWorldMatrix=p=>{t.getWorldToPhysicalMatrix(p),$r(p,p)},t.getWorldToPhysicalMatrix=p=>{Pt(p);const v=[3];ul(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],wn(p,p),Zn(s,1/e.physicalScale,1/e.physicalScale,1/e.physicalScale),fl(p,p,s),ur(p,p,e.physicalTranslation)},t.computeViewParametersFromViewMatrix=p=>{$r(o,p),Wt(s,r,o),t.computeDistance();const v=e.distance;t.setPosition(s[0],s[1],s[2]),Wt(c,n,o),jn(c,c,s),Yn(c,c),t.setDirectionOfProjection(c[0],c[1],c[2]),Wt(l,i,o),jn(l,l,s),Yn(l,l),t.setViewUp(l[0],l[1],l[2]),t.setDistance(v)},t.computeViewParametersFromPhysicalMatrix=p=>{t.getWorldToPhysicalMatrix(o),Dn(o,p,o),t.computeViewParametersFromViewMatrix(o)},t.setViewMatrix=p=>{e.viewMatrix=p,e.viewMatrix&&(Pr(o,e.viewMatrix),t.computeViewParametersFromViewMatrix(o),wn(e.viewMatrix,e.viewMatrix))},t.getViewMatrix=()=>{if(e.viewMatrix)return e.viewMatrix;h4(o,e.position,e.focalPoint,e.viewUp),wn(o,o);const p=new Float64Array(16);return Pr(p,o),p},t.setProjectionMatrix=p=>{e.projectionMatrix=p},t.getProjectionMatrix=(p,v,y)=>{const m=new Float64Array(16);if(Pt(m),e.projectionMatrix){const C=1/e.physicalScale;return Zn(s,C,C,C),Pr(m,e.projectionMatrix),fl(m,m,s),wn(m,m),m}Pt(o);const w=e.clippingRange[1]-e.clippingRange[0],x=[e.clippingRange[0]+(v+1)*w/2,e.clippingRange[0]+(y+1)*w/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,b=(e.windowCenter[1]+1)*S;d4(o,T,_,E,b,x[0],x[1]),wn(o,o)}else{if(e.useOffAxisProjection)throw new Error("Off-Axis projection is not supported at this time");{const C=Math.tan(Jr(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,b=(e.windowCenter[1]-1)*T,D=(e.windowCenter[1]+1)*T,O=x[0],L=x[1];o[0]=2*O/(E-_),o[5]=2*O/(D-b),o[2]=(_+E)/(E-_),o[6]=(b+D)/(D-b),o[10]=-(O+L)/(L-O),o[14]=-1,o[11]=-2*O*L/(L-O),o[15]=0}}return Pr(m,o),m},t.getCompositeProjectionMatrix=(p,v,y)=>{const m=t.getViewMatrix(),w=t.getProjectionMatrix(p,v,y);return Dn(w,m,w),w},t.setDirectionOfProjection=(p,v,y)=>{if(e.directionOfProjection[0]===p&&e.directionOfProjection[1]===v&&e.directionOfProjection[2]===y)return;e.directionOfProjection[0]=p,e.directionOfProjection[1]=v,e.directionOfProjection[2]=y;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,y,m)=>{const w=[3];ul(e.physicalViewNorth,e.physicalViewUp,w);const x=Pt(new Float64Array(16));Lo(x,x,Jr(p),e.physicalViewUp),Lo(x,x,Jr(v),w),Lo(x,x,Jr(y),e.physicalViewNorth),Lo(x,x,Jr(-m),e.physicalViewUp);const C=new Float64Array([-e.physicalViewUp[0],-e.physicalViewUp[1],-e.physicalViewUp[2]]),S=new Float64Array(e.physicalViewNorth);Wt(C,C,x),Wt(S,S,x),t.setDirectionOfProjection(C[0],C[1],C[2]),t.setViewUp(S[0],S[1],S[2]),t.modified()},t.setOrientationWXYZ=(p,v,y,m)=>{const w=Pt(new Float64Array(16));if(p!==0&&(v!==0||y!==0||m!==0)){const S=Jr(p),T=mf();lw(T,[v,y,m],S),Dy(w,T)}const x=new Float64Array(3);Wt(x,[0,0,-1],w);const C=new Float64Array(3);Wt(C,[0,1,0],w),t.setDirectionOfProjection(...x),t.setViewUp(...C),t.modified()},t.computeClippingRange=p=>{let v=null,y=null;v=e.viewPlaneNormal,y=e.position;const m=-v[0],w=-v[1],x=-v[2],C=-(m*y[0]+w*y[1]+x*y[2]),S=[m*p[0]+w*p[2]+x*p[4]+C,1e-18];for(let T=0;T<2;T++)for(let _=0;_<2;_++)for(let E=0;E<2;E++){const b=m*p[E]+w*p[2+_]+x*p[4+T]+C;S[0]=bS[1]?b:S[1]}return S}}const dne={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:Ea(),physicalTranslation:[0,0,0],physicalScale:1,physicalViewUp:[0,1,0],physicalViewNorth:[0,0,-1]};function eN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,dne,r),Q.obj(t,e),Q.get(t,e,["distance"]),Q.setGet(t,e,["parallelProjection","useHorizontalViewAngle","viewAngle","parallelScale","useOffAxisProjection","freezeFocalPoint","physicalScale"]),Q.getArray(t,e,["directionOfProjection","viewPlaneNormal","position","focalPoint"]),Q.setGetArray(t,e,["clippingRange","windowCenter"],2),Q.setGetArray(t,e,["viewUp","screenBottomLeft","screenBottomRight","screenTopRight","physicalTranslation","physicalViewUp","physicalViewNorth"],3),fne(t,e)}const hne=Q.newInstance(eN,"vtkCamera");var V4={newInstance:hne,extend:eN};function gne(t,e){e.classHierarchy.push("vtkLight");const r=new Float64Array(3);t.getTransformedPosition=()=>(e.transformMatrix?Wt(r,e.position,e.transformMatrix):Zn(r,e.position[0],e.position[1],e.position[2]),r),t.getTransformedFocalPoint=()=>(e.transformMatrix?Wt(r,e.focalPoint,e.transformMatrix):Zn(r,e.focalPoint[0],e.focalPoint[1],e.focalPoint[2]),r),t.getDirection=()=>(e.directionMTime{const i=new Float64Array(3);Sn(i,e.position,n),e.focalPoint=i},t.setDirectionAngle=(n,i)=>{const o=Jr(n),a=Jr(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 pne={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 mne(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,pne,r),Q.obj(t,e),Q.setGet(t,e,["intensity","switch","positional","exponent","coneAngle","coneFalloff","transformMatrix","lightType","shadowAttenuation","attenuationValues"]),Q.setGetArray(t,e,["color","position","focalPoint","attenuationValues"],3),gne(t,e)}const vne=Q.newInstance(mne,"vtkLight");var yne={newInstance:vne};const{vtkErrorMacro:Av}=Q;function wne(t){return()=>Av(`vtkViewport::${t} - NOT IMPLEMENTED`)}function xne(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=()=>Av("call displayToView on your view instead"),t.viewToDisplay=()=>Av("callviewtodisplay on your view instead"),t.getSize=()=>Av("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=wne("PickPropFrom")}const Cne={background:[0,0,0],background2:[.2,.2,.2],gradientBackground:!1,viewport:[0,0,1,1],aspect:[1,1],pixelAspect:[1,1],props:[],actors2D:[]};function tN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Cne,r),Q.obj(t,e),Q.event(t,e,"event"),Q.setGetArray(t,e,["viewport"],4),Q.setGetArray(t,e,["background","background2"],3),xne(t,e)}const Sne=Q.newInstance(tN,"vtkViewport");var Tne={newInstance:Sne,extend:tN};const{vtkDebugMacro:Rg,vtkErrorMacro:Pu,vtkWarningMacro:_ne}=xo;function OD(t){return()=>Pu(`vtkRenderer::${t} - NOT IMPLEMENTED`)}function Ene(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||(Rg("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(Ea())):Pu("light has unknown light type",a.get()))})},t.updateLightGeometry=()=>e.lightFollowCamera?t.updateLightsGeometryToFollowCamera():!0,t.allocateTime=OD("allocateTime"),t.updateGeometry=OD("updateGeometry"),t.getVTKWindow=()=>e._renderWindow,t.setLayer=o=>{Rg(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=V4.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=yne.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 Pu("ViewToWorld: no active camera, cannot compute view to world, returning 0,0,0"),[0,0,0];const c=e.activeCamera.getViewMatrix();$r(c,c),wn(c,c);const l=new Float64Array([o,a,s]);return Wt(l,l,c),l},t.projectionToView=(o,a,s,c)=>{if(e.activeCamera===null)return Pu("ProjectionToView: no active camera, cannot compute projection to view, returning 0,0,0"),[0,0,0];const l=e.activeCamera.getProjectionMatrix(c,-1,1);$r(l,l),wn(l,l);const f=new Float64Array([o,a,s]);return Wt(f,f,l),f},t.worldToView=(o,a,s)=>{if(e.activeCamera===null)return Pu("WorldToView: no active camera, cannot compute view to world, returning 0,0,0"),[0,0,0];const c=e.activeCamera.getViewMatrix();wn(c,c);const l=new Float64Array([o,a,s]);return Wt(l,l,c),l},t.viewToProjection=(o,a,s,c)=>{if(e.activeCamera===null)return Pu("ViewToProjection: no active camera, cannot compute view to projection, returning 0,0,0"),[0,0,0];const l=e.activeCamera.getProjectionMatrix(c,-1,1);wn(l,l);const f=new Float64Array([o,a,s]);return Wt(f,f,l),f},t.computeVisiblePropBounds=()=>{e.allBounds[0]=tr.INIT_BOUNDS[0],e.allBounds[1]=tr.INIT_BOUNDS[1],e.allBounds[2]=tr.INIT_BOUNDS[2],e.allBounds[3]=tr.INIT_BOUNDS[3],e.allBounds[4]=tr.INIT_BOUNDS[4],e.allBounds[5]=tr.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&&(Yh(e.allBounds),Rg("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(!Dv(a))return Rg("Cannot reset camera!"),!1;let c=null;if(t.getActiveCamera())c=e.activeCamera.getViewPlaneNormal();else return Pu("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=Jr(e.activeCamera.getViewAngle()),g=d,p=d/Math.sin(h*.5),v=e.activeCamera.getViewUp();return Math.abs(yn(v,c))>.999&&(_ne("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(!Dv(a))return Rg("Cannot reset camera clipping range!"),!1;if(t.getActiveCameraAndResetIfCreated(),!e.activeCamera)return Pu("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=Jr(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 bne={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:gf(),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 nN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};for(Object.assign(e,bne,r),Tne.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),Wo(t,e,["_renderWindow","allocatedRenderTime","timeFactor","lastRenderTimeInSeconds","numberOfPropsRendered","lastRenderingUsedDepthPeeling","selector"]),si(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"]),Xh(t,e,["actors","volumes","lights"]),V_(t,e,["background"],4,1),r1(t,e,["renderWindow"]),Ene(t,e)}const Dne=Wn(nN,"vtkRenderer");var rN={newInstance:Dne,extend:nN};const Ine={Unknown:0,LeftController:1,RightController:2},One={Unknown:0,Trigger:1,TrackPad:2,Grip:3,Thumbstick:4,A:5,B:6,ApplicationMenu:7},Mne={Unknown:0,TouchpadX:1,TouchpadY:2,ThumbstickX:3,ThumbstickY:4};var iN={Device:Ine,Input:One,Axis:Mne};const{Device:y2,Input:Zf}=iN,{vtkWarningMacro:w2,vtkErrorMacro:x2,normalizeWheel:Pne,vtkOnceErrorMacro:Rne}=Q,o0={ctrlKey:!1,altKey:!1,shiftKey:!1},Qx={"xr-standard":[Zf.Trigger,Zf.Grip,Zf.TrackPad,Zf.Thumbstick,Zf.A,Zf.B]},F4=["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 Lg(t){t.cancelable&&t.preventDefault()}function C2(t){const e=Object.create(null);return t.forEach(r=>{let{pointerId:n,position:i}=r;e[n]=i}),e}function Lne(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=>{x2("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=()=>w2("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(),y=v.getBoundingClientRect(),m=v.width/y.width,w=v.height/y.height,x={x:m*(p.clientX-y.left),y:w*(y.height-p.clientY+y.top),z:0};return(i.size<=1||!e.currentRenderer)&&a(x.x,x.y),x}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",Lg),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",Lg),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&&Lg(p),p.target.hasPointerCapture(p.pointerId)&&p.target.releasePointerCapture(p.pointerId),e.container.setPointerCapture(p.pointerId),i.has(p.pointerId)&&w2("[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&&Lg(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:x2(`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){x2("undefined requester, can not start animating");return}if(n.has(p)){w2("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 y=p&&p.getClassName?p.getClassName():p;w2(`${y} 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,y)=>{p.inputSources.forEach(m=>{const w=m.gripSpace==null?null:v.getPose(m.gripSpace,y),x=m.gripSpace==null?null:v.getPose(m.targetRaySpace,y),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(){Lg(p);const v={...Pne(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:x2(`Unknown mouse button released: ${p.button}`);break}},t.handleTouchStart=p=>{const v=[...i.values()];if(e.recognizeGestures&&v.length>1){const y=C2(i);if(v.length===2){const m={...l(o0),position:v[0].position,deviceType:u(p)};t.leftButtonReleaseEvent(m)}t.recognizeGesture("TouchStart",y)}else if(v.length===1){const y={...l(o0),position:c(p),deviceType:u(p)};t.leftButtonPressEvent(y)}},t.handleTouchMove=p=>{const v=[...i.values()];if(e.recognizeGestures&&v.length>1){const y=C2(i);t.recognizeGesture("TouchMove",y)}else if(v.length===1){const y={...l(o0),position:v[0].position,deviceType:u(p)};t.mouseMoveEvent(y)}},t.handleTouchEnd=p=>{const v=[...i.values()];if(e.recognizeGestures)if(v.length===0){const y={...l(o0),position:c(p),deviceType:u(p)};t.leftButtonReleaseEvent(y)}else if(v.length===1){const y=C2(i);t.recognizeGesture("TouchEnd",y);const m={...l(o0),position:v[0].position,deviceType:u(p)};t.leftButtonPressEvent(m)}else{const y=C2(i);t.recognizeGesture("TouchMove",y)}else if(v.length===1){const y={...l(o0),position:v[0].position,deviceType:u(p)};t.leftButtonReleaseEvent(y)}},t.setView=p=>{e._view!==p&&(e._view=p,e._view.getRenderable().setInteractor(t),t.modified())},t.getFirstRenderer=()=>{var p,v,y;return(y=(v=(p=e._view)==null?void 0:p.getRenderable())==null?void 0:v.getRenderersByReference())==null?void 0:y[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 y=(T=(S=e._view)==null?void 0:S.getRenderable())==null?void 0:T.getRenderers();if(!y||y.length===0)return null;y.sort((_,E)=>_.getLayer()-E.getLayer());let m=null,w=null,x=null,C=y.length;for(;C--;){const _=y[C];if(e._view.isInViewport(p,v,_)&&_.getInteractive()){x=_;break}m===null&&_.getInteractive()&&(m=_),w===null&&e._view.isInViewport(p,v,_)&&(w=_)}return x===null&&(x=m),x===null&&(x=w),x==null&&(x=y[0]),x},t.render=()=>{!t.isAnimating()&&!e.inRender&&g()},F4.forEach(p=>{const v=p.charAt(0).toLowerCase()+p.slice(1);t[`${v}Event`]=y=>{if(!e.enabled)return;if(!t.getCurrentRenderer()){Rne(` + Can not forward events without a current renderer on the interactor. + `);return}const w={type:p,pokedRenderer:e.currentRenderer,firstRenderer:t.getFirstRenderer(),...y};t[`invoke${p}`](w)}}),t.recognizeGesture=(p,v)=>{if(Object.keys(v).length>2)return;if(e.startingEventPositions||(e.startingEventPositions={}),p==="TouchStart"){Object.keys(v).forEach(b=>{e.startingEventPositions[b]=v[b]}),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 y=0;const m=[],w=[];Object.keys(v).forEach(b=>{m[y]=v[b],w[y]=e.startingEventPositions[b],y++});const x=Math.sqrt((w[0].x-w[1].x)*(w[0].x-w[1].x)+(w[0].y-w[1].y)*(w[0].y-w[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=Ty(Math.atan2(w[1].y-w[0].y,w[1].x-w[0].x)),T=Ty(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)b&&D>O&&D>L){e.currentGesture="Pinch";const P={scale:1,touches:v};t.startPinchEvent(P)}else if(O>b&&O>L){e.currentGesture="Rotate";const P={rotation:0,touches:v};t.startRotateEvent(P)}else if(L>b){e.currentGesture="Pan";const P={translation:[0,0],touches:v};t.startPanEvent(P)}}else{if(e.currentGesture==="Rotate"){const b={rotation:_,touches:v};t.rotateEvent(b)}if(e.currentGesture==="Pinch"){const b={scale:C/x,touches:v};t.pinchEvent(b)}if(e.currentGesture==="Pan"){const b={translation:E,touches:v};t.panEvent(b)}}},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 Ane={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 oN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Ane,r),Q.obj(t,e),e._animationExtendedEnd=0,Q.event(t,e,"RenderEvent"),F4.forEach(n=>Q.event(t,e,n)),Q.get(t,e,["initialized","interactorStyle","lastFrameTime","recentAnimationFrameRate","_view"]),Q.setGet(t,e,["container","lightFollowCamera","enabled","enableRender","recognizeGestures","desiredUpdateRate","stillUpdateRate","picker","preventDefaultOnPointerDown","preventDefaultOnPointerUp","mouseScrollDebounceByPass"]),Q.moveToProtected(t,e,["view"]),Lne(t,e)}const Nne=Q.newInstance(oN,"vtkRenderWindowInteractor");var kne={newInstance:Nne,extend:oN,handledEvents:F4,...iN};const{vtkErrorMacro:Vne}=Q,Fne=[1,-1,1,-1,1,-1];function Une(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=Q.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 Vne(`getBounds called on an array with components of + ${t.getNumberOfComponents()}`),Fne;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 Bne={empty:!0,numberOfComponents:3,dataType:gn.FLOAT,bounds:[1,-1,1,-1,1,-1]};function aN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Bne,r),Ot.extend(t,e,r),Une(t,e)}const Gne=Q.newInstance(aN,"vtkPoints");var vm={newInstance:Gne,extend:aN};function sN(t){let e=0;return t.filter((r,n)=>n===e?(e+=r+1,!0):!1)}function cN(t){let e=0;for(let r=0;r(e.numberOfCells!==void 0&&!n||(e.cellSizes?e.numberOfCells=e.cellSizes.length:e.numberOfCells=cN(t.getData())),e.numberOfCells),t.getCellSizes=n=>(e.cellSizes!==void 0&&!n||(e.cellSizes=sN(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 $ne(t){return{empty:!0,numberOfComponents:1,dataType:gn.UNSIGNED_INT,...t}}function lN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Ot.extend(t,e,$ne(r)),zne(t,e)}const jne=Q.newInstance(lN,"vtkCellArray");var Ld={newInstance:jne,extend:lN,...Wne};function Hne(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=Q.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 Yh(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)=>{Q.vtkErrorMacro("vtkCell.evaluatePosition is not implemented.")}}const Kne={bounds:[-1,-1,-1,-1,-1,-1],pointsIds:[]};function uN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Kne,r),Q.obj(t,e),e.points||(e.points=vm.newInstance()),Q.get(t,e,["points","pointsIds"]),Hne(t,e)}const qne=Q.newInstance(uN,"vtkCell");var Gy={newInstance:qne,extend:uN};function Xne(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 Yne(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=()=>{Xne(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 Jne={array:null,maxId:0,extend:0};function fN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Jne,r),Q.obj(t,e),Yne(t,e)}const Zne=Q.newInstance(fN,"vtkCellLinks");var Qne={newInstance:Zne,extend:fN};const Sr={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},DS=["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 ere(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]=Sr.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 are={size:0,maxId:-1,extend:1e3};function dN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,are,r),Q.obj(t,e),Q.get(t,e,["size","maxId","extend"]),Q.getArray(t,e,["typeArray","locationArray"]),ore(t,e)}const sre=Q.newInstance(dN,"vtkCellTypes");var cre={newInstance:sre,extend:dN,...ire};const lre={NO_INTERSECTION:0,YES_INTERSECTION:1,ON_LINE:2};var hN={IntersectionState:lre};const{IntersectionState:Nv}=hN;function P0(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=yn(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=Kc(a,t),i}function gN(t,e,r,n,i,o){const a=[],s=[],c=[];i[0]=0,o[0]=0,Ql(e,t,a),Ql(n,r,s),Ql(r,t,c);const l=[yn(a,a),-yn(a,s),-yn(a,s),yn(s,s)],f=[];if(f[0]=yn(a,c),f[1]=-yn(s,c),CR(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=P0(d[v],h[v],g[v]),p.distance=0&&i[0]<=1&&o[0]>=0&&o[0]<=1?Nv.YES_INTERSECTION:Nv.NO_INTERSECTION}const ure={distanceToLine:P0,intersection:gN};function fre(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=gN(n,i,f,u,d,h);if(c.t=d[0],c.betweenPoints=r(c.t),s[0]=h[0],g===Nv.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(Kc(a,l)<=o*o)return c.intersect=1,c}else{let p;if(c.t<0)return p=P0(n,f,u,a),p.distance<=o*o&&(c.t=0,c.intersect=1,c.betweenPoints=!0),c;if(c.t>1)return p=P0(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=P0(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=P0(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?(Mv(i,e.orientations[0],e.orientations[1],n[0]),o[0]=1-n[0],o[1]=n[0],!0):!1}const dre={orientations:null};function pN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,dre,r),Gy.extend(t,e,r),Q.setGet(t,e,["orientations"]),fre(t,e)}const hre=Q.newInstance(pN,"vtkLine");var hs={newInstance:hre,extend:pN,...ure,...hN};function gre(t,e){e.classHierarchy.push("vtkPointSet"),e.points?e.points=uc(e.points):e.points=vm.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=vm.newInstance(),e.points.shallowCopy(n.getPoints())}}const pre={};function mN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,pre,r),Jh.extend(t,e,r),Q.setGet(t,e,["points"]),gre(t,e)}const mre=Q.newInstance(mN,"vtkPointSet");var vre={newInstance:mre,extend:mN};function U4(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 Wy(t,e,r,n){U4(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 yre(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=[];Wy(t,e,r,u),Wy(n,i,o,d);const h=-yn(u,t),g=-yn(d,n),p=[yn(d,t)+g,yn(d,e)+g,yn(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=[yn(u,n)+h,yn(u,i)+h,yn(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 y=[t,e,r],m=[n,i,o],w=yn(u,d),x=(h-g*w)/(w*w-1),C=(g-h*w)/(w*w-1),S=[x*u[0]+C*d[0],x*u[1]+C*d[1],x*u[2]+C*d[2]],T=ul(u,d,[]);Rd(T);let _=0,E=0;const b=[],D=[];let O=50,L=50;for(let G=0;G<3;G++){const j=G,F=(G+1)%3,U=Fo.intersectWithLine(y[j],y[F],n,d);U.intersection&&U.t>0-a&&U.t<1+a&&(U.t<1+a&&U.t>1-a&&(O=_),b[_++]=yn(U.x,T)-yn(S,T));const W=Fo.intersectWithLine(m[j],m[F],t,u);W.intersection&&W.t>0-a&&W.t<1+a&&(W.t<1+a&&W.t>1-a&&(L=E),D[E++]=yn(W.x,T)-yn(S,T))}if(_>2){_--;const G=b[2];b[2]=b[O],b[O]=G}if(E>2){E--;const G=D[2];D[2]=D[L],D[L]=G}if(_!==2||E!==2)return{intersect:!1,coplanar:s,pt1:c,pt2:l,surfaceId:f};if(Number.isNaN(b[0])||Number.isNaN(b[1])||Number.isNaN(D[0])||Number.isNaN(D[1]))return{intersect:!1,coplanar:s,pt1:c,pt2:l,surfaceId:f};if(b[0]>b[1]){const G=b[1];b[1]=b[0],b[0]=G}if(D[0]>D[1]){const G=D[1];D[1]=D[0],D[0]=G}let P,k;return b[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(Wy(f,u,d,h),h[0]!==0||h[1]!==0||h[2]!==0){const w=Fo.intersectWithLine(r,n,f,h);if(s.betweenPoints=w.betweenPoints,s.t=w.t,o[0]=w.x[0],o[1]=w.x[1],o[2]=w.x[2],!w.intersection)return a[0]=0,a[1]=0,s.intersect=0,s;const x=t.evaluatePosition(o,c,a,g);if(x.evaluation>=0)return x.dist2<=l?(s.intersect=1,s):(s.intersect=x.evaluation,s)}const p=Kc(f,u),v=Kc(u,d),y=Kc(d,f);e.line||(e.line=hs.newInstance()),p>v&&p>y?(e.line.getPoints().setPoint(0,f),e.line.getPoints().setPoint(1,u)):v>y&&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 w=[],x=[],C=[];for(let S=0;S<3;S++)w[S]=f[S]-d[S],x[S]=u[S]-d[S],C[S]=o[S]-d[S];return a[0]=yn(C,w)/y,a[1]=yn(C,x)/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 y=0,m=0;const w=[];let x,C,S,T=[];const _=[],E=[],b=[];a.subId=0,i[2]=0,e.points.getPoint(1,l),e.points.getPoint(2,f),e.points.getPoint(0,u),U4(l,f,u,d),Fo.generalizedProjectPoint(r,l,d,b);let D=0;for(s=0;s<3;s++)d[s]<0?h=-d[s]:h=d[s],h>D&&(D=h,m=s);for(c=0,s=0;s<3;s++)s!==m&&(w[c++]=s);for(s=0;s<2;s++)g[s]=b[w[s]]-u[w[s]],p[s]=l[w[s]]-u[w[s]],v[s]=f[w[s]]-u[w[s]];if(y=Qr(p,v),y===0)return i[0]=0,i[1]=0,a.evaluation=-1,a;if(i[0]=Qr(g,v)/y,i[1]=Qr(p,g)/y,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=Kc(b,r),n[0]=b[0],n[1]=b[1],n[2]=b[2]),a.evaluation=1;else{let O;if(n){if(o[1]<0&&o[2]<0)for(x=Kc(r,u),C=hs.distanceToLine(r,l,u,O,_),S=hs.distanceToLine(r,u,f,O,E),x{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 Cre={};function vN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Cre,r),Gy.extend(t,e,r),xre(t,e)}const Sre=Q.newInstance(vN,"vtkTriangle");var yN={newInstance:Sre,extend:vN,...wre};const eC=["verts","lines","polys","strips"],{vtkWarningMacro:MD}=Q,Tre={[Sr.VTK_LINE]:hs,[Sr.VTK_POLY_LINE]:hs,[Sr.VTK_TRIANGLE]:yN};function _re(t,e){e.classHierarchy.push("vtkPolyData");function r(i){return i.replace(/(?:^\w|[A-Z]|\b\w)/g,o=>o.toUpperCase()).replace(/\s+/g,"")}eC.forEach(i=>{t[`getNumberOf${r(i)}`]=()=>e[i].getNumberOfCells(),e[i]?e[i]=uc(e[i]):e[i]=Ld.newInstance()}),t.getNumberOfCells=()=>eC.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),eC.forEach(a=>{e[a]=Ld.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?Sr.VTK_POLY_VERTEX:Sr.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?Sr.VTK_POLY_LINE:Sr.VTK_LINE,g===1&&MD("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]=Sr.VTK_TRIANGLE;break;case 4:f[p]=Sr.VTK_QUAD;break;default:f[p]=Sr.VTK_POLYGON;break}g<3&&MD("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(Sr.VTK_TRIANGLE_STRIP,0,s),e.strips.getCellSizes().forEach((g,p)=>{d[p]=h,h+=g+1})}e.cells=cre.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=Qne.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 Sr.VTK_VERTEX:case Sr.VTK_POLY_VERTEX:a=e.verts;break;case Sr.VTK_LINE:case Sr.VTK_POLY_LINE:a=e.lines;break;case Sr.VTK_TRIANGLE:case Sr.VTK_QUAD:case Sr.VTK_POLYGON:a=e.polys;break;case Sr.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||Tre[a.cellType].newInstance();return s.initialize(t.getPoints(),a.cellPointIds),s}}const Ere={};function wN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Ere,r),vre.extend(t,e,r),Q.get(t,e,["cells","links"]),Q.setGet(t,e,["verts","lines","polys","strips"]),_re(t,e)}const bre=Q.newInstance(wN,"vtkPolyData");var Nr={newInstance:bre,extend:wN};const Dre=1e-6;function Ire(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=mf();gS(n,e.rotation);const i=new Float64Array(3),o=JY(i,n);return[Ty(o),i[0],i[1],i[2]]},t.getOrientationQuaternion=function(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];return gS(n,e.rotation)},t.rotateX=n=>{n!==0&&(s4(e.rotation,e.rotation,Jr(n)),t.modified())},t.rotateY=n=>{n!==0&&(c4(e.rotation,e.rotation,Jr(n)),t.modified())},t.rotateZ=n=>{n!==0&&(l4(e.rotation,e.rotation,Jr(n)),t.modified())},t.rotateWXYZ=(n,i,o,a)=>{if(n===0||i===0&&o===0&&a===0)return;const s=Jr(n),c=mf();lw(c,[i,o,a],s);const l=new Float64Array(16);Dy(l,c),Dn(e.rotation,e.rotation,l),t.modified()},t.rotateQuaternion=n=>{if(Math.abs(n[3])>=1-Dre)return;const i=Dy(new Float64Array(16),n);Dn(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],Pt(e.rotation),t.rotateZ(o),t.rotateX(n),t.rotateY(i),t.modified(),!0),t.setUserMatrix=n=>a1(e.userMatrix,n)?!1:(Pr(e.userMatrix,n),t.modified(),!0),t.getMatrix=()=>(t.computeMatrix(),e.matrix),t.computeMatrix=()=>{if(t.getMTime()>e.matrixMTime.getMTime()){Pt(e.matrix),e.userMatrix&&Dn(e.matrix,e.matrix,e.userMatrix),ur(e.matrix,e.matrix,e.origin),ur(e.matrix,e.matrix,e.position),Dn(e.matrix,e.matrix,e.rotation),fl(e.matrix,e.matrix,e.scale),ur(e.matrix,e.matrix,[-e.origin[0],-e.origin[1],-e.origin[2]]),wn(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=()=>tr.getCenter(e.bounds),t.getLength=()=>tr.getLength(e.bounds),t.getXRange=()=>tr.getXRange(e.bounds),t.getYRange=()=>tr.getYRange(e.bounds),t.getZRange=()=>tr.getZRange(e.bounds),t.getUserMatrix=()=>e.userMatrix;function r(){t.computeMatrix()}t.onModified(r)}const Ore={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 xN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Ore,r),f1.extend(t,e,r),e.matrixMTime={},Q.obj(e.matrixMTime),Q.get(t,e,["bounds","isIdentity"]),Q.getArray(t,e,["orientation"]),Q.setGetArray(t,e,["origin","position","scale"],3),e.matrix=Pt(new Float64Array(16)),e.rotation=Pt(new Float64Array(16)),e.userMatrix=Pt(new Float64Array(16)),e.transform=null,Ire(t,e)}const Mre=Q.newInstance(xN,"vtkProp3D");var B4={newInstance:Mre,extend:xN};const{vtkDebugMacro:Pre}=Q;function Rre(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=Kd.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()){Pre("Recomputing bounds..."),e.mapperBounds=n.concat();const i=[];tr.getCorners(n,i),t.computeMatrix();const o=new Float64Array(16);wn(o,e.matrix),i.forEach(a=>Wt(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 Lre={mapper:null,property:null,backfaceProperty:null,forceOpaque:!1,forceTranslucent:!1,bounds:[1,-1,1,-1,1,-1]};function CN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Lre,r),B4.extend(t,e,r),e.boundsMTime={},Q.obj(e.boundsMTime),Q.set(t,e,["property"]),Q.setGet(t,e,["backfaceProperty","forceOpaque","forceTranslucent","mapper"]),Rre(t,e)}const Are=Q.newInstance(CN,"vtkActor");var yc={newInstance:Are,extend:CN};function Nre(t,e){const r=t.invokeResize;delete t.invokeResize,e.renderWindow=XK.newInstance(),e.rendererMap={},e.openGLRenderWindow=une.newInstance(),e.renderWindow.addView(e.openGLRenderWindow),e.interactor=kne.newInstance(),e.interactor.setView(e.openGLRenderWindow),e.interactor.initialize(),t.addRenderer=({viewport:n,id:i,background:o})=>{const a=rN.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=Q.chain(t.setContainer,t.destroy,e.openGLRenderWindow.delete,t.delete),t.resize()}const kre={background:[0,0,0],container:null};function SN(t,e,r={}){Object.assign(e,kre,r),Q.obj(t,e),Q.get(t,e,["renderWindow","openGLRenderWindow","interactor","container"]),Q.event(t,e,"resize"),Nre(t,e)}const Vre=Q.newInstance(SN),Fre={newInstance:Vre,extend:SN},{vtkErrorMacro:S2}=Q;function Ure(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?(S2("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 S2("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 S2("Midpoint outside range [0.0, 1.0]"),-1;if(o<0||o>1)return S2("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,y=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 w=(u-d)/(h-d);if(w.99)if(w<.5){o[m]=g;continue}else{o[m]=p;continue}if(y<.01){o[m]=(1-w)*g+w*p;continue}w<.5?w=.5*(w*2)**(1+10*y):w>.5&&(w=1-.5*((1-w)*2)**(1+10*y));const x=w*w,C=x*w,S=2*C-3*x+1,T=-2*C+3*x,_=C-2*x+w,E=C-x,b=p-g,D=(1-y)*b;o[m]=S*g+T*p+_*D+E*D;const O=gp?g:p;o[m]=o[m]L?L:o[m]}}}}const Bre={range:[0,0],clamping:!0,allowDuplicateScalars:!1};function TN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Bre,r),Q.obj(t,e),e.nodes=[],Q.setGet(t,e,["allowDuplicateScalars","clamping"]),Q.setArray(t,e,["range"],2),Q.getArray(t,e,["range"]),Ure(t,e)}const Gre=Q.newInstance(TN,"vtkPiecewiseFunction");var Ad={newInstance:Gre,extend:TN};const{BlendMode:Ru,FilterMode:op}=CP;function Wre(t,e,r,n,i){let o=null;return i?(o=i,o.removeAllPoints()):o=Ad.newInstance(),o.addPointLong(-1024,0,1,1),o.addPoint(t,e),o.addPoint(r,n),o}const zre={createRadonTransferFunction:Wre};function $re(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=gf(),e.bounds},t.update=()=>{t.getInputData()},t.setBlendModeToComposite=()=>{t.setBlendMode(Ru.COMPOSITE_BLEND)},t.setBlendModeToMaximumIntensity=()=>{t.setBlendMode(Ru.MAXIMUM_INTENSITY_BLEND)},t.setBlendModeToMinimumIntensity=()=>{t.setBlendMode(Ru.MINIMUM_INTENSITY_BLEND)},t.setBlendModeToAverageIntensity=()=>{t.setBlendMode(Ru.AVERAGE_INTENSITY_BLEND)},t.setBlendModeToAdditiveIntensity=()=>{t.setBlendMode(Ru.ADDITIVE_INTENSITY_BLEND)},t.setBlendModeToRadonTransform=()=>{t.setBlendMode(Ru.RADON_TRANSFORM_BLEND)},t.getBlendModeAsString=()=>Q.enumToString(Ru,e.blendMode),t.setAverageIPScalarRange=(n,i)=>{console.warn("setAverageIPScalarRange is deprecated use setIpScalarRange"),t.setIpScalarRange(n,i)},t.getFilterModeAsString=()=>Q.enumToString(op,e.filterMode),t.setFilterModeToOff=()=>{t.setFilterMode(op.OFF)},t.setFilterModeToNormalized=()=>{t.setFilterMode(op.NORMALIZED)},t.setFilterModeToRaw=()=>{t.setFilterMode(op.RAW)},t.setGlobalIlluminationReach=n=>r.setGlobalIlluminationReach(fc(n,0,1)),t.setVolumetricScatteringBlending=n=>r.setVolumetricScatteringBlending(fc(n,0,1)),t.setVolumeShadowSamplingDistFactor=n=>r.setVolumeShadowSamplingDistFactor(n>=1?n:1),t.setAnisotropy=n=>r.setAnisotropy(fc(n,-.99,.99)),t.setLAOKernelSize=n=>r.setLAOKernelSize(Z_(fc(n,1,32))),t.setLAOKernelRadius=n=>r.setLAOKernelRadius(n>=1?n:1)}const jre=t=>({bounds:[1,-1,1,-1,1,-1],sampleDistance:1,imageSampleDistance:1,maximumSamplesPerRay:1e3,autoAdjustSampleDistances:!0,initialInteractionScale:1,interactionSampleDistanceFactor:1,blendMode:Ru.COMPOSITE_BLEND,ipScalarRange:[-1e6,1e6],filterMode:op.OFF,preferSizeOverAccuracy:!1,computeNormalFromOpacity:!1,volumetricScatteringBlending:0,globalIlluminationReach:0,volumeShadowSamplingDistFactor:5,anisotropy:0,localAmbientOcclusion:!1,LAOKernelSize:15,LAOKernelRadius:7,updatedExtents:[],...t});function _N(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,jre(r)),I4.extend(t,e,r),Q.setGet(t,e,["sampleDistance","imageSampleDistance","maximumSamplesPerRay","autoAdjustSampleDistances","initialInteractionScale","interactionSampleDistanceFactor","blendMode","filterMode","preferSizeOverAccuracy","computeNormalFromOpacity","volumetricScatteringBlending","globalIlluminationReach","volumeShadowSamplingDistFactor","anisotropy","localAmbientOcclusion","LAOKernelSize","LAOKernelRadius","updatedExtents"]),Q.setGetArray(t,e,["ipScalarRange"],2),Q.event(t,e,"lightingActivated"),$re(t,e)}const Hre=Q.newInstance(_N,"vtkVolumeMapper");var EN={newInstance:Hre,extend:_N,...zre};function Kre(t,e){e.classHierarchy.push("vtkSharedVolumeMapper");const r=t.delete;t.delete=()=>{e.scalarTexture=null,r()}}const qre={scalarTexture:null};function bN(t,e,r={}){Object.assign(e,qre,r),EN.extend(t,e,r),Q.setGet(t,e,["scalarTexture"]),Kre(t,e)}const Xre=Q.newInstance(bN,"vtkSharedVolumeMapper"),Yre={newInstance:Xre,extend:bN};function Ar(t){const e=t.indexOf(":");return t.substring(e+1)}function DN(t){let e=2166136261;for(let r=0;r>>0).toString(36)}const Jre=1073741824;class Zre{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*Jre,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)=>{var o;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;(o=n.image)!=null&&o.referencedImageId&&this._referencedImageIdToImageIdCache.delete(n.image.referencedImageId),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}),nt(He,Xe.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),nt(He,Xe.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};nt(He,Xe.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.getImageByReferencedImageId=e=>{var n;const r=this._referencedImageIdToImageIdCache.get(e);if(r)return(n=this._imageCache.get(r))==null?void 0:n.image},this.getImage=(e,r=va.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};nt(He,Xe.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};nt(He,Xe.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}}generateVolumeId(e){const r=e.map(Ar).sort();let n=2166136261;for(const i of r){const o=DN(i);for(let a=0;a>>0).toString(36)}`}getImageIdsForVolumeId(e){return Array.from(this._imageIdsToVolumeIdCache.entries()).filter(([r,n])=>n===e).map(([r])=>r)}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),nt(He,Xe.IMAGE_CACHE_IMAGE_REMOVED,{imageId:c}),n=this.getBytesAvailable(),n>=e)return n;for(const c of a)if(this.removeImageLoadObject(c),nt(He,Xe.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(Xe.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};r.referencedImageId&&this._referencedImageIdToImageIdCache.set(r.referencedImageId,e),nt(He,Xe.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=Ar(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=Ar(e),i=Array.from(this._imageCache.keys()).find(o=>Ar(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};nt(He,Xe.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(Xe.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};nt(He,Xe.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||va.FULL_RESOLUTION:void 0}}const ke=new Zre;function PD(t,e){const r=L4(e),n=new r(t.length);return n.set(t),n}function Qre(t,e){e.classHierarchy.push("vtkStreamingOpenGLTexture"),e.updatedFrames=[],e.volumeId=null;const r=t.create3DFilterableFromRaw;t.create3DFilterableFromRaw=(s,c,l,f,u,d,h)=>{e.inputDataType=u,e.inputNumComps=f,r(s,c,l,f,u,d,h)};const n=t.updateVolumeInfoForGL;t.updateVolumeInfoForGL=(s,c)=>{const l=n(s,c);return e.volumeInfo.dataComputedScale=[1],e.volumeInfo.dataComputedOffset=[0],l},t.update3DFromRaw=()=>{const{volumeId:s}=e;if(!s)return;const c=ke.getVolume(s);if(e._openGLRenderWindow.activateTexture(t),t.createTexture(),t.bind(),c.isDynamicVolume()){a();return}return t.hasUpdatedFrames()&&o()};const i=t.modified;t.setUpdatedFrame=s=>{e.updatedFrames[s]=!0,i()},t.modified=()=>{i();const s=ke.getVolume(e.volumeId);if(!s)return;const c=s.imageIds;for(let l=0;l!e.updatedFrames.length||e.updatedFrames.some(s=>s),t.getUpdatedFrames=()=>e.updatedFrames,t.setVolumeId=s=>{e.volumeId=s},t.getVolumeId=()=>e.volumeId,t.setTextureParameters=({width:s,height:c,depth:l,numberOfComponents:f,dataType:u})=>{e.width??(e.width=s),e.height??(e.height=c),e.depth??(e.depth=l),e.inputNumComps??(e.inputNumComps=f),e.inputDataType??(e.inputDataType=u)},t.getTextureParameters=()=>({width:e.width,height:e.height,depth:e.depth,numberOfComponents:e.inputNumComps,dataType:e.inputDataType})}const eie={updatedFrames:[]};function IN(t,e,r={}){Object.assign(e,eie,r),br.extend(t,e,r),Qre(t,e)}const tie=Q.newInstance(IN,"vtkStreamingOpenGLTexture"),nie={newInstance:tie,extend:IN},rie={isPerformingCoordinateTransformation:!1};function ON(t,e,r={}){Object.assign(e,rie,r),V4.extend(t,e,r),Q.setGet(t,e,["isPerformingCoordinateTransformation"]),oie(t,e)}const iie=Q.newInstance(ON,"vtkSlabCamera");function oie(t,e){e.classHierarchy.push("vtkSlabCamera");const r=Pt(new Float64Array(16)),n=new Float64Array(3);t.getProjectionMatrix=(i,o,a)=>{const s=Ea();if(e.projectionMatrix){const d=1/e.physicalScale;return Zn(n,d,d,d),Pr(s,e.projectionMatrix),fl(s,s,n),wn(s,s),s}Pt(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,y=(e.windowCenter[1]+1)*h;d4(r,g,p,v,y,u[0],u[1]),wn(r,r)}else{if(e.useOffAxisProjection)throw new Error("Off-Axis projection is not supported at this time");{const d=Math.tan(Yt.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,y=(e.windowCenter[1]-1)*g,m=(e.windowCenter[1]+1)*g,w=u[0],x=u[1];r[0]=2*w/(v-p),r[5]=2*w/(m-y),r[2]=(p+v)/(v-p),r[6]=(y+m)/(m-y),r[10]=-(w+x)/(x-w),r[14]=-1,r[11]=-2*w*x/(x-w),r[15]=0}}return Pr(s,r),s}}const aie={newInstance:iie,extend:ON};function sc(t){return Ta(t,"vtkVolume")||Ta(t,"vtkImageSlice")}function Ta(t,e){const r="isA"in t?t:t.actor;return r?!!r.isA(e):!1}const il=[];function Zh(t,e=0){let r;for(r=0;r0;)il.pop()}function lt(t,...e){for(let r=0;r=0&&O<=y.levels.SILENT)return O;throw new TypeError("log.setLevel() called with invalid level: "+D)}y.name=p,y.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},y.methodFactory=v||d,y.getLevel=function(){return x??w??m},y.setLevel=function(D,O){return x=E(D),O!==!1&&S(x),f.call(y)},y.setDefaultLevel=function(D){w=E(D),T()||y.setLevel(D,!1)},y.resetLevel=function(){x=null,_(),f.call(y)},y.enableAll=function(D){y.setLevel(y.levels.TRACE,D)},y.disableAll=function(D){y.setLevel(y.levels.SILENT,D)},y.rebuild=function(){if(a!==y&&(m=E(a.getLevel())),f.call(y),a===y)for(var D in o)o[D].rebuild()},m=E(a?a.getLevel():"WARN");var b=T();b!=null&&(x=E(b)),f.call(y)}a=new h,a.getLogger=function(v){if(typeof v!="symbol"&&typeof v!="string"||v==="")throw new TypeError("You must supply a name when creating a logger.");var y=o[v];return y||(y=o[v]=new h(v,a.methodFactory)),y};var g=typeof window!==r?window.log:void 0;return a.noConflict=function(){return typeof window!==r&&window.log===a&&(window.log=g),a},a.getLoggers=function(){return o},a.default=a,a})})(MN);var lie=MN.exports;const uie=yl(lie),PN=uie.noConflict();typeof window<"u"&&(window.log=PN);function Sw(t){const e=PN.getLogger(t[0]);return e.getLogger=(...r)=>Sw(`${t}.${r.join(".")}`),e}function W4(...t){return Sw(t.join("."))}const Qh=Sw("cs3d"),z4=Qh.getLogger("core"),fie=Qh.getLogger("tools"),die=Qh.getLogger("dicomImageLoader"),hie=Qh.getLogger("ai"),gie=Qh.getLogger("examples"),pie=W4("consistency","dicom"),mie=W4("consistency","image"),vie=Object.freeze(Object.defineProperty({__proto__:null,aiLog:hie,coreLog:z4,cs3dLog:Qh,dicomConsistencyLog:pie,examplesLog:gie,getLogger:W4,getRootLogger:Sw,imageConsistencyLog:mie,loaderLog:die,toolsLog:fie},Symbol.toStringTag,{value:"Module"}));function Mf(t,e){const{direction:r,spacing:n}=t,i=r.slice(0,3),o=r.slice(3,6),a=r.slice(6,9),s=[St(i,e),St(o,e),St(a,e)],c=Be();return Zn(c,s[0]*n[0],s[1]*n[1],s[2]*n[2]),ra(c)}const RD=z4.getLogger("utilities","getClosestImageId");function cu(t,e,r,n){const{direction:i,spacing:o,imageIds:a}=t,{ignoreSpacing:s=!1}=n||{};if(!(a!=null&&a.length))return;const c=i.slice(6,9),l=St(c,r);if(Math.abs(l)<1-Ya)return;let f;s||(f=Mf({direction:i,spacing:o},r)/2);let u,d=1/0;for(let h=0;ht,LD=1e-6;let RN=class{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;this.matrix=Pt(new Float64Array(16)),this.tmp=new Float64Array(3),this.angleConv=e?qX:yie}rotateFromDirections(e,r){const n=new Float64Array(3),i=new Float64Array(3),o=new Float64Array(16);Zn(n,e[0],e[1],e[2]),Zn(i,r[0],r[1],r[2]),Yn(n,n),Yn(i,i);const a=St(n,i);return a>=1?this:(Ln(this.tmp,n,i),ra(this.tmp)1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:-1;if(a1(X_,this.matrix))return this;const i=n===-1?e.length:r+n*3;for(let o=r;oMath.abs(Math.abs(t)-1)tC(t[e])||tC(t[e+1])||tC(t[e+2]),Sie=t=>nC(t,0)&&nC(t,3)&&nC(t,6);function Tw(t,e,r){const n=t.getMapper().getInputData();let i;const o=n.getDirection();if(Sie(o))i=LN(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=$i.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 Tie={RGB:0,HSV:1,LAB:2,DIVERGING:3},_ie={LINEAR:0,LOG10:1};var AN={ColorSpace:Tie,Scale:_ie};const{ColorSpace:gs,Scale:$4}=AN,{ScalarMappingTarget:T2}=gw,{vtkDebugMacro:Eie,vtkErrorMacro:Rl,vtkWarningMacro:bie}=Q;function AD(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 Die(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 ND(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 Iie(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 kD(t,e,r,n){const i=[],o=[];fd(e,i),fd(r,o);const a=[],s=[];AD(i,a),AD(o,s);let c=t;if(a[1]>.05&&s[1]>.05&&Iie(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]=ND(s,a[0]):s[1]<.05&&a[1]>.05&&(s[2]=ND(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=[];Die(l,f),Ey(f,n)}function Oie(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 Rl("Midpoint outside range [0.0, 1.0]"),-1;if(s<0||s>1)return Rl("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 nd([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=[];nd(f,d),nd(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(by(a)||by(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 D=e.mappingRange;if(h>=D[0]&&h<=D[1]){const O=e.numberOfValues,L=D[1]-D[0];if(O<=1)h=D[0]+L/2;else{const P=(h-D[0])/L,k=Z_(O*P);h=D[0]+k/(O-1)*L}}}for(;ce.nodes[c].x;)c++,c.99999&&(m=.99999));if(h>e.mappingRange[1])o[b]=0,o[b+1]=0,o[b+2]=0,e.clamping&&(t.getUseAboveRangeColor()?(o[b]=e.aboveRangeColor[0],o[b+1]=e.aboveRangeColor[1],o[b+2]=e.aboveRangeColor[2]):(o[b]=f,o[b+1]=u,o[b+2]=d));else if(h0&&(o[b]=e.nodes[0].r,o[b+1]=e.nodes[0].g,o[b+2]=e.nodes[0].b));else if(c===0&&(Math.abs(h-a)<1e-6||e.discretize))l>0?(o[b]=e.nodes[0].r,o[b+1]=e.nodes[0].g,o[b+2]=e.nodes[0].b):(o[b]=0,o[b+1]=0,o[b+2]=0);else{let D=0;if(C?D=(_-g)/(p-g):D=(h-g)/(p-g),D.99)if(D<.5){o[b]=v[0],o[b+1]=v[1],o[b+2]=v[2];continue}else{o[b]=y[0],o[b+1]=y[1],o[b+2]=y[2];continue}if(w<.01){if(e.colorSpace===gs.RGB)o[b]=(1-D)*v[0]+D*y[0],o[b+1]=(1-D)*v[1]+D*y[1],o[b+2]=(1-D)*v[2]+D*y[2];else if(e.colorSpace===gs.HSV){const W=[],J=[];tp(v,W),tp(y,J),e.hSVWrap&&(W[0]-J[0]>.5||J[0]-W[0]>.5)&&(W[0]>J[0]?W[0]-=1:J[0]-=1);const te=[];te[0]=(1-D)*W[0]+D*J[0],te[0]<0&&(te[0]+=1),te[1]=(1-D)*W[1]+D*J[1],te[2]=(1-D)*W[2]+D*J[2],nd(te,x),o[b]=x[0],o[b+1]=x[1],o[b+2]=x[2]}else if(e.colorSpace===gs.LAB){const W=[],J=[];fd(v,W),fd(y,J);const te=[];te[0]=(1-D)*W[0]+D*J[0],te[1]=(1-D)*W[1]+D*J[1],te[2]=(1-D)*W[2]+D*J[2],Ey(te,x),o[b]=x[0],o[b+1]=x[1],o[b+2]=x[2]}else e.colorSpace===gs.DIVERGING?(kD(D,v,y,x),o[b]=x[0],o[b+1]=x[1],o[b+2]=x[2]):Rl("ColorSpace set to invalid value.",e.colorSpace);continue}D<.5?D=.5*(D*2)**(1+10*w):D>.5&&(D=1-.5*((1-D)*2)**(1+10*w));const O=D*D,L=O*D,P=2*L-3*O+1,k=-2*L+3*O,G=L-2*O+D,j=L-O;let F,U;if(e.colorSpace===gs.RGB)for(let W=0;W<3;W++)F=y[W]-v[W],U=(1-w)*F,o[b+W]=P*v[W]+k*y[W]+G*U+j*U;else if(e.colorSpace===gs.HSV){const W=[],J=[];tp(v,W),tp(y,J),e.hSVWrap&&(W[0]-J[0]>.5||J[0]-W[0]>.5)&&(W[0]>J[0]?W[0]-=1:J[0]-=1);const te=[];for(let le=0;le<3;le++)F=J[le]-W[le],U=(1-w)*F,te[le]=P*W[le]+k*J[le]+G*U+j*U,le===0&&te[le]<0&&(te[le]+=1);nd(te,x),o[b]=x[0],o[b+1]=x[1],o[b+2]=x[2]}else if(e.colorSpace===gs.LAB){const W=[],J=[];fd(v,W),fd(y,J);const te=[];for(let le=0;le<3;le++)F=J[le]-W[le],U=(1-w)*F,te[le]=P*W[le]+k*J[le]+G*U+j*U;Ey(te,x),o[b]=x[0],o[b+1]=x[1],o[b+2]=x[2]}else e.colorSpace===gs.DIVERGING?(kD(D,v,y,x),o[b]=x[0],o[b+1]=x[1],o[b+2]=x[2]):Rl("ColorSpace set to invalid value.");for(let W=0;W<3;W++)o[b+W]=o[b+W]<0?0:o[b+W],o[b+W]=o[b+W]>1?1:o[b+W]}}},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 Rl("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?(Rl("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 Rl("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]){Rl("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){Eie("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){bie("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===T2.RGBA)for(let d=0;d{const n=JSON.stringify(e.colorSpace);r.ColorSpace&&(e.colorSpace=gs[r.ColorSpace.toUpperCase()],e.colorSpace===void 0&&(Rl(`ColorSpace ${r.ColorSpace} not supported, using RGB instead`),e.colorSpace=gs.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,Mie,r),gw.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={},Q.obj(e.buildTime),Q.get(t,e,["buildTime","mappingRange"]),Q.setGet(t,e,["useAboveRangeColor","useBelowRangeColor","discretize","numberOfValues",{type:"enum",name:"colorSpace",enum:gs},{type:"enum",name:"scale",enum:$4}]),Q.setArray(t,e,["nanColor","belowRangeColor","aboveRangeColor"],4),Q.getArray(t,e,["nanColor","belowRangeColor","aboveRangeColor"]),Oie(t,e)}const Pie=Q.newInstance(NN,"vtkColorTransferFunction");var lu={newInstance:Pie,extend:NN,...AN},Rie=[{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 Oh=Object.create(null);Rie.filter(t=>t.RGBPoints).filter(t=>t.ColorSpace!=="CIELAB").forEach(t=>{Oh[t.Name]=t});const Mh=Object.keys(Oh);Mh.sort();function Lie(t){return Oh[t]}function Aie(t){!t.RGBPoints||t.ColorSpace==="CIELAB"||(Oh[t.Name]||(Mh.push(t.Name),Mh.sort()),Oh[t.Name]=t)}function Nie(t){const e=Mh.indexOf(t);e>-1&&Mh.splice(e,1),delete Oh[t]}var ym={addPreset:Aie,removePresetByName:Nie,getPresetByName:Lie,rgbPresetNames:Mh};function kN(t,e,r){return Math.abs(t-e)<=r}function kie(t,e,r=1e-5){if(t.length!==e.length)return!1;for(let n=0;n0&&typeof t[0]=="number"}function Kt(t,e,r=1e-5){return typeof t!=typeof e||t===null||e===null?!1:VD(t)&&VD(e)?kN(t,e,r):FD(t)&&FD(e)?kie(t,e,r):!1}const VN=t=>typeof t=="number"?-t:t!=null&&t.map?t.map(VN):!t,IS=t=>typeof t=="number"?Math.abs(t):t!=null&&t.map?t.map(IS):t,FN=(t,e,r=void 0)=>Kt(t,VN(e),r),Vie=(t,e,r=void 0)=>Kt(IS(t),IS(e),r);function Mr(t){return Array.isArray(t)?Mr(t[0]):isFinite(t)&&!isNaN(t)}const j4=new Map;function Fie(t){t.name=t.name||t.Name,j4.set(t.name,t)}function wm(t){return j4.get(t)}function UN(){return Array.from(j4.keys())}function H4(t,e){const r=ym.rgbPresetNames.map(s=>ym.getPresetByName(s)),n=UN().map(s=>wm(s)),o=r.concat(n).find(s=>{const{RGBPoints:c}=s;if(c.length!==t.length)return!1;for(let l=0;l0)return o}return null}function X4(t){const e=t.getProperty().getScalarOpacity(0);if(!e)return 1;const r=e.getDataPointer();if(!r||r.length===0)return 1;let n=0;for(let i=1;in&&(n=r[i]);return n}const Bie=Object.freeze(Object.defineProperty({__proto__:null,findMatchingColormap:H4,getColormap:wm,getColormapNames:UN,getMaxOpacity:X4,getThresholdValue:q4,registerColormap:Fie,setColorMapTransferFunctionForVolumeActor:Uie,updateOpacity:BN,updateThreshold:GN},Symbol.toStringTag,{value:"Module"}));function Dp(t){if(!t)return;const e=t.getSize();for(let r=0;re-r/4*Math.log((1-t)/t);function h1(t,e){const r=Math.abs(e-t)+1,n=(t+e+1)/2;return{windowWidth:r,windowCenter:n}}function af(t,e,r=po.LINEAR){if(r===po.LINEAR)return{lower:e-.5-(t-1)/2,upper:e-.5+(t-1)/2};if(r===po.LINEAR_EXACT)return{lower:e-t/2,upper:e+t/2};if(r===po.SAMPLED_SIGMOID){const n=OS(.01,e,t),i=OS(.99,e,t);return{lower:n,upper:i}}else throw new Error("Invalid VOI LUT function")}const Gie=Object.freeze(Object.defineProperty({__proto__:null,toLowHighRange:af,toWindowLevel:h1},Symbol.toStringTag,{value:"Module"}));function Y4(t,e=1024){const{windowWidth:r,windowCenter:n}=h1(t.lower,t.upper),o=Array.from({length:e},(s,c)=>(c+1)/(e+2)).flatMap(s=>[OS(s,n,r),s,s,s,.5,0]),a=lu.newInstance();return a.buildFunctionFromArray(Ot.newInstance({values:o,numberOfComponents:6})),a}function zr(t,e){return t.worldToIndex(e).map(Math.round)}function kv(t,e){return t.worldToIndex(e)}function zy(t){const e=t.getSize(),r=[];for(let n=0;n{t.addRGBPoint(...r)}))}const Wie=Object.freeze(Object.defineProperty({__proto__:null,getTransferFunctionNodes:zy,setTransferFunctionNodes:_w},Symbol.toStringTag,{value:"Module"})),{InterpolationType:ap,OpacityMode:zie}=PA,{vtkErrorMacro:rC}=Q,Vv=4;function $ie(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?(rC("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=Ad.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=lu.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=Ad.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>=Vv)return rC("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>=Vv?(rC("Invalid index"),0):e.componentData[i].componentWeight},t.setInterpolationTypeToNearest=()=>t.setInterpolationType(ap.NEAREST),t.setInterpolationTypeToLinear=()=>t.setInterpolationType(ap.LINEAR),t.setInterpolationTypeToFastLinear=()=>t.setInterpolationType(ap.FAST_LINEAR),t.getInterpolationTypeAsString=()=>Q.enumToString(ap,e.interpolationType),["useGradientOpacity","scalarOpacityUnitDistance","gradientOpacityMinimumValue","gradientOpacityMinimumOpacity","gradientOpacityMaximumValue","gradientOpacityMaximumOpacity","opacityMode","forceNearestInterpolation"].forEach(i=>{const o=Q.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=Q.capitalize(i);t[`get${o}`]=a=>e.componentData[a][`${i}`]})}const jie={colorMixPreset:null,independentComponents:!0,interpolationType:ap.FAST_LINEAR,shade:!1,ambient:.1,diffuse:.7,specular:.2,specularPower:10,useLabelOutline:!1,labelOutlineThickness:[1],labelOutlineOpacity:1};function Hie(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(Object.assign(e,jie,r),Q.obj(t,e),!e.componentData){e.componentData=[];for(let n=0;nt,t.makeProperty=qie.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()){Xie("Recomputing bounds..."),e.mapperBounds=r.map(a=>a);const i=[];tr.getCorners(r,i),t.computeMatrix();const o=new Float64Array(16);wn(o,e.matrix),i.forEach(a=>Wt(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 Jie={mapper:null,property:null,bounds:[1,-1,1,-1,1,-1]};function WN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Jie,r),B4.extend(t,e,r),e.boundsMTime={},Q.obj(e.boundsMTime),Q.set(t,e,["property"]),Q.setGet(t,e,["mapper"]),Q.getArray(t,e,["bounds"],6),Yie(t,e)}const Zie=Q.newInstance(WN,"vtkVolume");var Qie={newInstance:Zie,extend:WN};const{vtkErrorMacro:eoe}=Q;class toe{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){eoe("Invalid or missing input");return}const o=Nr.newInstance();o.shallowCopy(i);const a=new toe,s=i.getLines().getData();let c=0;for(;c2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,roe,r),Q.obj(t,e),Q.algo(t,e,1,1),noe(t,e)}const ioe=Q.newInstance(zN,"vtkClosedPolyLineToSurfaceFilter");var ooe={newInstance:ioe,extend:zN};const{vtkErrorMacro:UD}=xo;function aoe(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!==x){C=!1;break}if(C)continue;const S=[];for(let _=0;_0;if(y[E]>0===b)continue;let O=_,L=E,P=y[L]-y[O];P<=0&&(O=E,L=_,P*=-1);let k=0;P!==0&&(k=(e.cutValue-y[O])/P);const G=w.cell[O],j=w.cell[L];p[0]=s[G*3],p[1]=s[G*3+1],p[2]=s[G*3+2],v[0]=s[j*3],v[1]=s[j*3+1],v[2]=s[j*3+2];const F=[p[0]+k*(v[0]-p[0]),p[1]+k*(v[1]-p[1]),p[2]+k*(v[2]-p[2])];S.push({pointEdge1:G,pointEdge2:j,intersectedPoint:F,newPointID:-1})}for(let _=0;_2&&(u.push(T),S.forEach(_=>{u.push(_.newPointID)}))}o.getPoints().setData(iw(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){UD("Invalid or missing input");return}if(!e.cutFunction){UD("Missing cut function");return}const s=Nr.newInstance();n(a,s),o[0]=s}}const coe={cutFunction:null,cutScalars:null,cutValue:0};function $N(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,coe,r),pr(t,e),F_(t,e,1,1),si(t,e,["cutFunction","cutValue"]),soe(t,e)}const loe=Wn($N,"vtkCutter");var uoe={newInstance:loe,extend:$N};const foe=[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],doe=[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 hoe(t,e){e.classHierarchy.push("vtkCubeSource");function r(n,i){if(e.deleted)return;const o=Nr.newInstance();i[0]=o;const a=24,s=Q.newTypedArray(e.pointType,a*3);o.getPoints().setData(s,3);const c=Q.newTypedArray(e.pointType,a*3),l=Ot.newInstance({name:"Normals",values:c,numberOfComponents:3});o.getPointData().setNormals(l);let f=2;e.generate3DTextureCoordinates===!0&&(f=3);const u=Q.newTypedArray(e.pointType,a*f),d=Ot.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 y=0;y<2;y++){h[1]=-e.yLength/2;for(let m=0;m<2;m++){p[1]=h[1]+.5,h[2]=-e.zLength/2;for(let w=0;w<2;w++)p[0]=(h[2]+.5)*(1-2*y),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*w-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 y=0;y<2;y++){h[0]=-e.xLength/2;for(let m=0;m<2;m++){p[0]=(h[0]+.5)*(2*y-1),h[2]=-e.zLength/2;for(let w=0;w<2;w++)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*y-1,u[v*f+2]=2*w-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 y=0;y<2;y++){h[1]=-e.yLength/2;for(let m=0;m<2;m++){p[1]=h[1]+.5,h[0]=-e.xLength/2;for(let w=0;w<2;w++)p[0]=(h[0]+.5)*(2*y-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*w-1,u[v*f+1]=2*m-1,u[v*f+2]=2*y-1),v++,h[0]+=e.xLength;h[1]+=e.yLength}h[2]+=e.zLength,g[2]+=2}if(e.rotations&&$i.buildFromDegree().rotateX(e.rotations[0]).rotateY(e.rotations[1]).rotateZ(e.rotations[2]).apply(s).apply(c),e.center&&$i.buildFromRadian().translate(...e.center).apply(s),e.matrix){$i.buildFromRadian().setMatrix(e.matrix).apply(s);const y=[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];$i.buildFromRadian().setMatrix(y).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,goe,r),Q.obj(t,e),Q.setGet(t,e,["xLength","yLength","zLength","generate3DTextureCoordinates","generateFaces","generateLines"]),Q.setGetArray(t,e,["center","rotations"],3),Q.setGetArray(t,e,["matrix"],16),e._polys=Ld.newInstance({values:Uint16Array.from(doe)}),e._lineCells=Ld.newInstance({values:Uint16Array.from(foe)}),Q.moveToProtected(t,e,["polys","lineCells"]),Q.algo(t,e,0,1),hoe(t,e)}const poe=Q.newInstance(jN,"vtkCubeSource");var HN={newInstance:poe,extend:jN};const{vtkErrorMacro:BD}=Q;function moe(t,e){e.classHierarchy.push("vtkImageDataOutlineFilter");const r={...t};t.requestData=(n,i)=>{const o=n[0];if(!o||!o.isA("vtkImageData")){BD("Invalid or missing input");return}const a=o.getSpatialExtent();if(!a){BD("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 voe={};function KN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,voe,r),Q.obj(t,e),Q.algo(t,e,1,1),e._cubeSource=HN.newInstance(),Q.moveToProtected(t,e,["cubeSource","tmpOut"]),moe(t,e)}const yoe=Q.newInstance(KN,"vtkImageDataOutlineFilter");var woe={newInstance:yoe,extend:KN};let J4;function xoe(t,e){e.classHierarchy.push("vtkAbstractTransform","vtkHomogeneousTransform","vtkTransform"),t.transformPoint=(r,n)=>(Wt(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?Dn(n,e.matrix,r):Dn(n,r,e.matrix),n),t.transformMatrices=(r,n)=>{const i=new Float64Array(16),o=new Float64Array(16),a=e.preMultiplyFlag?()=>Dn(o,e.matrix,i):()=>Dn(o,i,e.matrix);for(let s=0;sJ4({matrix:Yt.invertMatrix(Array.from(e.matrix),[],4),preMultiplyFlag:e.preMultiplyFlag})}const Coe={preMultiplyFlag:!1,matrix:[...X_]};function qN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Coe,r),Q.obj(t,e),Q.setGet(t,e,["preMultiplyFlag"]),Q.setGetArray(t,e,["matrix"],16),xoe(t,e)}J4=Q.newInstance(qN,"vtkTransform");var Soe={newInstance:J4,extend:qN},Toe=`//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 +} +`,_oe=`//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:Gf}=xo;function GD(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 Eoe(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()==Tc.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){Gf("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()===vd.NEAREST?(e.openGLTexture.setMinificationFilter(Ft.NEAREST),e.openGLTexture.setMagnificationFilter(Ft.NEAREST),e.colorTexture.setMinificationFilter(Ft.NEAREST),e.colorTexture.setMagnificationFilter(Ft.NEAREST),e.pwfTexture.setMinificationFilter(Ft.NEAREST),e.pwfTexture.setMagnificationFilter(Ft.NEAREST)):(e.openGLTexture.setMinificationFilter(Ft.LINEAR),e.openGLTexture.setMagnificationFilter(Ft.LINEAR),e.colorTexture.setMinificationFilter(Ft.LINEAR),e.colorTexture.setMagnificationFilter(Ft.LINEAR),e.pwfTexture.setMinificationFilter(Ft.LINEAR),e.pwfTexture.setMagnificationFilter(Ft.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 E,b,D,O;const a=e.currentInput;if(!a)return;const s=(E=a.getPointData())==null?void 0:E.getScalars();if(!s)return;const c=s.getNumberOfComponents();let l=R4(a,s);const f=e._openGLRenderWindow.getGraphicsResourceForObject(s),u=!((b=f==null?void 0:f.oglObject)!=null&&b.getHandle())||(f==null?void 0:f.hash)!==l,d=e.renderable.getUpdatedExtents(),h=!!d.length;if(u&&!h){e.openGLTexture=br.newInstance(),e.openGLTexture.setOpenGLRenderWindow(e._openGLRenderWindow),e.openGLTexture.setOglNorm16Ext(e.context.getExtension("EXT_texture_norm16")),e.openGLTexture.resetFormatAndType();const L=a.getDimensions();e.openGLTexture.create3DFilterableFromDataArray(L[0],L[1],L[2],s,!1,d),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;if(h){e.renderable.setUpdatedExtents([]);const L=a.getDimensions();e.openGLTexture.create3DFilterableFromDataArray(L[0],L[1],L[2],s,!1,d)}const g=o.getProperty(),p=g.getIndependentComponents(),v=p?c:1,y=p?2*v:1,m=g.getRGBTransferFunction();l=hl(m,p,v);const w=e._openGLRenderWindow.getGraphicsResourceForObject(m);if(!((D=w==null?void 0:w.oglObject)!=null&&D.getHandle())||(w==null?void 0:w.hash)!==l){const P=1024*y*3,k=new Uint8ClampedArray(P);if(e.colorTexture=br.newInstance(),e.colorTexture.setOpenGLRenderWindow(e._openGLRenderWindow),m){const G=new Float32Array(3072);for(let j=0;j0){const G=e.resliceGeom.getPointData().getNormals();G?k.normals=G:Gf("Slab mode requested without normals")}e.tris.getCABO().createVBO(P,"polys",mo.SURFACE,k)}e.VBOBuildString=_,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)||Gf("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)||Gf("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();Pr(e.tmpMat4,f.getIndexToWorld()),ur(e.tmpMat4,e.tmpMat4,[-.5,-.5,-.5]),fl(e.tmpMat4,e.tmpMat4,u),$r(e.tmpMat4,e.tmpMat4),l&&Dn(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")&&(Pt(e.tmpMat4),u.setUniformMatrix("MCPCMatrix",GD([s.wcpc,c.mcwc,f],pm,e.tmpMat4))),u.isUniformUsed("MCVCMatrix")&&(Pt(e.tmpMat4),u.setUniformMatrix("MCVCMatrix",GD([s.wcvc,c.mcwc,f],pm,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=Toe,i.Fragment=_oe,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=Pe.substitute(s,"//VTK::ZBuffer::Dec","uniform int depthRequest;").result,s=Pe.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=Pe.substitute(s,"//VTK::TCoord::Dec",f).result;const d=["fragTexCoord = (WCTCMatrix * vertexWC).xyz;"];s=Pe.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 y=1;y0&&(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=Pe.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 y=["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=Pe.substitute(s,"//VTK::PositionVC::Dec",u).result;let d=["gl_Position = MCPCMatrix * vertexWC;"];f>0&&(d=d.concat(["normalWCVSOutput = normalWC;","vertexWCVSOutput = vertexWC;"])),s=Pe.substitute(s,"//VTK::PositionVC::Impl",d).result,s=Pe.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=Pe.substitute(l,"//VTK::PositionVC::Dec",h).result,i.Vertex=s,i.Geometry=c,i.Fragment=l};function n(i){Yt.normalize(i);const o=[0,0,0];for(let a=0;a<3;++a){qY(o),o[a]=1;const s=Yt.dot(i,o);if(s<-.999999||s>.999999)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=i4();o&&(i=i.concat(`Image${o.getMTime()}`),GR(d,...o.getDirection()),c1(d,d));const h=[...f.getNormal()];Iv(h,h,d),[s,c]=n(h)}else{const d=Fo.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=Nr.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 y=new Uint16Array(8);y[0]=3,y[1]=0,y[2]=1,y[3]=3,y[4]=3,y[5]=0,y[6]=3,y[7]=2;const m=f.getNormal();Yt.normalize(m);const w=new Float32Array(12);for(let C=0;C<4;++C)w[3*C]=m[0],w[3*C+1]=m[1],w[3*C+2]=m[2];e.resliceGeom||(e.resliceGeom=Nr.newInstance()),e.resliceGeom.getPoints().setData(d,3),e.resliceGeom.getPolys().setData(y,1);const x=Ot.newInstance({numberOfComponents:3,values:w,name:"Normals"});e.resliceGeom.getPointData().setNormals(x)}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=Nr.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();Yt.normalize(h);const p=new Float32Array(g*3);for(let y=0;y{i&&(e.openGLTexture=i,e._externalOpenGLTexture=!0)},t.delete=i1(()=>{e._openGLRenderWindow&&r(e._openGLRenderWindow)},t.delete)}const boe={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 Doe(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,boe,r),cr.extend(t,e,r),dl.implementReplaceShaderCoincidentOffset(t,e,r),dl.implementBuildShadersWithReplacements(t,e,r),e.tris=wl.newInstance(),e.openGLTexture=null,e.colorTexture=null,e.pwfTexture=null,e.VBOBuildTime={},pr(e.VBOBuildTime),e.tmpMat4=Pt(new Float64Array(16)),e.outlineFilter=woe.newInstance(),e.outlineFilter.setGenerateFaces(!0),e.outlineFilter.setGenerateLines(!1),e.cubePolyData=Nr.newInstance(),e.cutter=uoe.newInstance(),e.lineToSurfaceFilter=ooe.newInstance(),e.transform=Soe.newInstance(),Wo(t,e,["openGLTexture"]),Eoe(t,e)}const Ioe=Wn(Doe,"vtkOpenGLImageResliceMapper");Si("vtkImageResliceMapper",Ioe);const XN=Object.create(null);function Is(t,e){XN[t]=e}function Ooe(t,e){e.classHierarchy.push("vtkWebGPUViewNodeFactory")}const Moe={};function Poe(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Moe,r),e.overrides=XN,n4.extend(t,e,r),Ooe(t,e)}Q.newInstance(Poe,"vtkWebGPUViewNodeFactory");function Roe(t,e){e.classHierarchy.push("vtkWebGPUCamera"),t.getProjectionMatrix=(r,n,i,o)=>{if(Pt(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();Pr(e.keyMatrices.normalMatrix,o),e.keyMatrices.normalMatrix[3]=0,e.keyMatrices.normalMatrix[7]=0,e.keyMatrices.normalMatrix[11]=0,$r(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix),wn(e.keyMatrices.wcvc,o);const a=r.getStabilizedCenterByReference();ur(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()),Dn(e.keyMatrices.scpc,e.keyMatrices.vcpc,e.keyMatrices.scvc),$r(e.keyMatrices.pcsc,e.keyMatrices.scpc),e.keyMatrixTime.modified()}return e.keyMatrices}}const Loe={keyMatrixTime:null,keyMatrices:null};function Aoe(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Loe,r),cr.extend(t,e,r),e.keyMatrixTime={},Q.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)},Q.setGet(t,e,["keyMatrixTime"]),Roe(t,e)}const Noe=Q.newInstance(Aoe);Is("vtkCamera",Noe);function koe(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,Voe,r),Q.obj(t,e),e.bindables=[],e.bindGroupTime={},Q.obj(e.bindGroupTime,{mtime:0}),Q.get(t,e,["bindGroupTime","handle","sizeInBytes","usage"]),Q.setGet(t,e,["label","device","arrayInformation"]),koe(t,e)}const Foe=Q.newInstance(YN);var JN={newInstance:Foe,extend:YN};function Uoe(t,e){e.classHierarchy.push("vtkWebGPUShaderModule"),t.initialize=(r,n)=>{e.device=r,e.handle=e.device.getHandle().createShaderModule({code:n.getCode()})}}const Boe={device:null,handle:null};function ZN(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Boe,r),Q.obj(t,e),Q.get(t,e,["lastCameraMTime"]),Q.setGet(t,e,["device","handle"]),Uoe(t,e)}const Goe=Q.newInstance(ZN,"vtkWebGPUShaderModule");var Woe={newInstance:Goe,extend:ZN};function zoe(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 $oe(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,joe,r),e._shaderModules=new Map,Q.obj(t,e),Q.setGet(t,e,["device","window"]),$oe(t,e)}const Hoe=Q.newInstance(QN,"vtkWebGPUShaderCache");var ir={newInstance:Hoe,extend:QN,substitute:zoe};function Koe(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 qoe={handle:null,layouts:null,renderEncoder:null,shaderDescriptions:null,vertexState:null,topology:null,pipelineDescription:null};function ek(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,qoe,r),pr(t,e),e.layouts=[],e.shaderDescriptions=[],Wo(t,e,["handle","pipelineDescription"]),si(t,e,["device","renderEncoder","topology","vertexState"]),Koe(t,e)}const Xoe=Wn(ek,"vtkWebGPUPipeline");var Yoe={newInstance:Xoe,extend:ek};function Joe(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=ir.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=ir.substitute(e.code,"//VTK::IOStructs::Dec",o).result}}const Zoe={type:null,hash:null,code:null,outputNames:null,outputTypes:null};function tk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Zoe,r),e.outputNames=[],e.outputTypes=[],e.outputInterpolations=[],e.builtinOutputNames=[],e.builtinOutputTypes=[],e.builtinInputNames=[],e.builtinInputTypes=[],Q.obj(t,e),Q.setGet(t,e,["type","hash","code"]),Q.getArray(t,e,["outputTypes","outputNames","outputInterpolations"]),Joe(t,e)}const Qoe=Q.newInstance(tk,"vtkWebGPUShaderDescription");var WD={newInstance:Qoe,extend:tk};const zD={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 eae(t){return!t||t.length<6?0:t in zD?zD[t]:(bn(`unknown format ${t}`),null)}function tae(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 bn(`unknown format ${t}`),0;const i=5-n/2;return e*i}function nae(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 rae(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{bn(`unknown format ${t}`);return}const r=t.split("x")[0],n=Number(r[r.length-1]);if(Number.isNaN(n)){bn(`unknown format ${t}`);return}return e+=8*(5-n/2),e+="Array",e}function iae(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{bn(`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 oae(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 aae(t){if(t){if(t.includes("f32"))return"Float32Array";if(t.includes("i32"))return"Int32Array";if(t.includes("u32"))return"Uint32Array";bn(`unknown format ${t}`)}}var go={getDetailsFromTextureFormat:eae,getByteStrideFromBufferFormat:tae,getNumberOfComponentsFromBufferFormat:nae,getNativeTypeFromBufferFormat:rae,getShaderTypeFromBufferFormat:iae,getByteStrideFromShaderFormat:oae,getNativeTypeFromShaderFormat:aae};function sae(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 lae={inputs:null,bindingDescriptions:!1,attributeDescriptions:null,indexBuffer:null};function nk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,lae,r),pr(t,e),e.bindingDescriptions=[],e.attributeDescriptions=[],e.inputs=[],si(t,e,["created","device","handle","indexBuffer"]),cae(t,e)}const uae=Wn(nk,"vtkWebGPUVertexInput");var fae={newInstance:uae,extend:nk};const dae=` //VTK::Renderer::Dec //VTK::Color::Dec @@ -2510,7 +2880,7 @@ fn main( return output; } -`,eoe=` +`,hae=` //VTK::Renderer::Dec //VTK::Color::Dec @@ -2550,7 +2920,7 @@ fn main( //VTK::RenderEncoder::Impl return output; } -`;function toe(t,e){e.classHierarchy.push("vtkWebGPUSimpleMapper"),t.generateShaderDescriptions=(r,n,i)=>{const o=U6.newInstance({type:"vertex",hash:r,code:e.vertexShaderTemplate}),a=U6.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=fr.substitute(s,"//VTK::Renderer::Dec",[o]).result,a.setCode(s);const c=n.getShaderDescription("fragment");s=c.getCode(),s=fr.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=fr.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=fr.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=fr.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=Vie.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 noe={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 Pk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,noe,r),gr.extend(t,e,r),e.textureViews=[],e.vertexInput=Zie.newInstance(),e.bindGroup=Ek.newInstance({label:"mapperBG"}),e.additionalBindables=[],e.fragmentShaderTemplate=e.fragmentShaderTemplate||eoe,e.vertexShaderTemplate=e.vertexShaderTemplate||Qie,e.shaderReplacements=new Map,Q.get(t,e,["pipeline","vertexInput"]),Q.setGet(t,e,["additionalBindables","device","fragmentShaderTemplate","interpolate","numberOfInstances","numberOfVertices","pipelineHash","shaderReplacements","SSBO","textureViews","topology","UBO","vertexShaderTemplate","WebGPURenderer"]),toe(t,e)}const roe=Q.newInstance(Pk,"vtkWebGPUSimpleMapper");var Rk={newInstance:roe,extend:Pk};function ioe(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=fr.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 ooe={};function Ak(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ooe,r),Rk.extend(t,e,r),ioe(t,e)}const aoe=Q.newInstance(Ak,"vtkWebGPUFullScreenQuad");var LT={newInstance:aoe,extend:Ak};const soe={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},coe={Start:0,Points:0,Lines:1,Triangles:2,TriangleStrips:3,TriangleEdges:4,TriangleStripEdges:5,End:6};var Zm={BufferUsage:soe,PrimitiveTypes:coe};const WC=["getMappedRange","mapAsync","unmap"];function loe(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 uoe(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=>{loe(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,foe,r),Q.obj(t,e),Q.get(t,e,["handle","sizeInBytes","usage"]),Q.setGet(t,e,["strideInBytes","device","arrayInformation","label","sourceTime"]),uoe(t,e)}const doe=Q.newInstance(Lk);var NT={newInstance:doe,extend:Lk,...Zm};const{Representation:Gp,Interpolation:Wp}=KN;function G6(t){return()=>Q.vtkErrorMacro(`vtkProperty::${t} - NOT IMPLEMENTED`)}function hoe(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=G6("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=G6("AddShaderVariable"),t.setInterpolationToFlat=()=>t.setInterpolation(Wp.FLAT),t.setInterpolationToGouraud=()=>t.setInterpolation(Wp.GOURAUD),t.setInterpolationToPhong=()=>t.setInterpolation(Wp.PHONG),t.getInterpolationAsString=()=>Q.enumToString(Wp,e.interpolation),t.setRepresentationToWireframe=()=>t.setRepresentation(Gp.WIREFRAME),t.setRepresentationToSurface=()=>t.setRepresentation(Gp.SURFACE),t.setRepresentationToPoints=()=>t.setRepresentation(Gp.POINTS),t.getRepresentationAsString=()=>Q.enumToString(Gp,e.representation)}const goe={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:Wp.GOURAUD,representation:Gp.SURFACE,edgeVisibility:!1,backfaceCulling:!1,frontfaceCulling:!1,pointSize:1,lineWidth:1,lighting:!0,shading:!1,materialName:null};function Nk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,goe,r),Q.obj(t,e),Q.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"]),Q.setGetArray(t,e,["ambientColor","specularColor","diffuseColor","edgeColor"],3),hoe(t,e)}const poe=Q.newInstance(Nk,"vtkProperty");var w0={newInstance:poe,extend:Nk,...KN};const{Representation:W6}=w0,{PrimitiveTypes:rf}=Zm;class moe{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=voe(i),f=r.numberOfPoints,u={provokedPointIds:new Uint8Array(f),extraPoints:0,iboSize:0,flatId:0,iboId:0,cellProvokedMap:new moe};let d=null;o===W6.POINTS||i===rf.Points?d=$C.anythingToPoints:o===W6.WIREFRAME||i===rf.Lines?d=$C[`${l}ToWireframe`]:d=$C[`${l}ToSurface`],ru=woe;let h=a||0;for(let g=0;g2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Coe,r),NT.extend(t,e,r),Q.setGet(t,e,["flatIdToPointId","flatIdToCellId","flatSize","indexCount"]),xoe(t,e)}const Soe=Q.newInstance(kk);var Toe={newInstance:Soe,extend:kk,...Zm};const{BufferUsage:Ku}=Zm,{vtkErrorMacro:_oe}=Ao,{VtkDataTypes:ad}=Nt,Eoe={};function boe(t){let e;switch(t.getDataType()){case ad.UNSIGNED_CHAR:e="uint8";break;case ad.FLOAT:e="float32";break;case ad.UNSIGNED_INT:e="uint32";break;case ad.INT:e="sint32";break;case ad.DOUBLE:e="float32";break;case ad.UNSIGNED_SHORT:e="uint16";break;case ad.SHORT:e="sin16";break;default:e="float32";break}switch(t.getNumberOfComponents()){case 2:e+="x2";break;case 3:e.includes("32")||_oe(`unsupported x3 type for ${e}`),e+="x3";break;case 4:e+="x4";break}return e}function z6(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=Ig(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=boe(n),a={hash:`${n.getMTime()}I${i.getMTime()}${o}`,usage:Ku.PointArray,format:o,dataArray:n,indexBuffer:i};return t.getBuffer(a)},t.getFullScreenQuadBuffer=()=>{if(e.fullScreenQuadBuffer)return e.fullScreenQuadBuffer;e.fullScreenQuadBuffer=NT.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 Ooe={device:null,fullScreenQuadBuffer:null};function Vk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Ooe,r),xr(t,e),vi(t,e,["device"]),Moe(t,e)}const Poe=jn(Vk);var Lg={newInstance:Poe,extend:Vk,...Eoe,...Zm};const{BufferUsage:Roe}=Lg,{vtkErrorMacro:A0}=Q;function Aoe(t,e){e.classHierarchy.push("vtkWebGPUStorageBuffer"),t.addEntry=(r,n)=>{if(e._bufferEntryNames.has(r)){A0(`entry named ${r} already exists`);return}e._bufferEntryNames.set(r,e.bufferEntries.length);const i=bo.getByteStrideFromShaderFormat(n);e.bufferEntries.push({name:r,type:n,sizeInBytes:i,offset:e.sizeInBytes,nativeType:bo.getNativeTypeFromShaderFormat(n)}),e.sizeInBytes+=i},t.send=r=>{if(!e._buffer){const n={nativeArray:e.Float32Array,usage:Roe.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]=Q.newTypedArray(r,e.arrayBuffer))},t.setValue=(r,n,i)=>{const o=e._bufferEntryNames.get(r);if(o===void 0){A0(`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){A0(`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){A0(`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){A0(`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){A0(`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 +`;function gae(t,e){e.classHierarchy.push("vtkWebGPUSimpleMapper"),t.generateShaderDescriptions=(r,n,i)=>{const o=WD.newInstance({type:"vertex",hash:r,code:e.vertexShaderTemplate}),a=WD.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=ir.substitute(s,"//VTK::Renderer::Dec",[o]).result,a.setCode(s);const c=n.getShaderDescription("fragment");s=c.getCode(),s=ir.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=ir.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=ir.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=ir.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=Yoe.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 pae={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 rk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,pae,r),cr.extend(t,e,r),e.textureViews=[],e.vertexInput=fae.newInstance(),e.bindGroup=JN.newInstance({label:"mapperBG"}),e.additionalBindables=[],e.fragmentShaderTemplate=e.fragmentShaderTemplate||hae,e.vertexShaderTemplate=e.vertexShaderTemplate||dae,e.shaderReplacements=new Map,Q.get(t,e,["pipeline","vertexInput"]),Q.setGet(t,e,["additionalBindables","device","fragmentShaderTemplate","interpolate","numberOfInstances","numberOfVertices","pipelineHash","shaderReplacements","SSBO","textureViews","topology","UBO","vertexShaderTemplate","WebGPURenderer"]),gae(t,e)}const mae=Q.newInstance(rk,"vtkWebGPUSimpleMapper");var ik={newInstance:mae,extend:rk};function vae(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=ir.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 yae={};function ok(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,yae,r),ik.extend(t,e,r),vae(t,e)}const wae=Q.newInstance(ok,"vtkWebGPUFullScreenQuad");var MS={newInstance:wae,extend:ok};const xae={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},Cae={Start:0,Points:0,Lines:1,Triangles:2,TriangleStrips:3,TriangleEdges:4,TriangleStripEdges:5,End:6};var g1={BufferUsage:xae,PrimitiveTypes:Cae};const iC=["getMappedRange","mapAsync","unmap"];function Sae(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 Tae(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=>{Sae(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,_ae,r),Q.obj(t,e),Q.get(t,e,["handle","sizeInBytes","usage"]),Q.setGet(t,e,["strideInBytes","device","arrayInformation","label","sourceTime"]),Tae(t,e)}const Eae=Q.newInstance(ak);var PS={newInstance:Eae,extend:ak,...g1};const{Representation:$D}=Kd,{PrimitiveTypes:Nu}=g1;class bae{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=Dae(i),f=r.numberOfPoints,u={provokedPointIds:new Uint8Array(f),extraPoints:0,iboSize:0,flatId:0,iboId:0,cellProvokedMap:new bae};let d=null;o===$D.POINTS||i===Nu.Points?d=oC.anythingToPoints:o===$D.WIREFRAME||i===Nu.Lines?d=oC[`${l}ToWireframe`]:d=oC[`${l}ToSurface`],Ul=Oae;let h=a||0;for(let g=0;g2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Pae,r),PS.extend(t,e,r),Q.setGet(t,e,["flatIdToPointId","flatIdToCellId","flatSize","indexCount"]),Mae(t,e)}const Rae=Q.newInstance(sk);var Lae={newInstance:Rae,extend:sk,...g1};const{BufferUsage:Eu}=g1,{vtkErrorMacro:Aae}=xo,{VtkDataTypes:Wf}=Ot,Nae={};function kae(t){let e;switch(t.getDataType()){case Wf.UNSIGNED_CHAR:e="uint8";break;case Wf.FLOAT:e="float32";break;case Wf.UNSIGNED_INT:e="uint32";break;case Wf.INT:e="sint32";break;case Wf.DOUBLE:e="float32";break;case Wf.UNSIGNED_SHORT:e="uint16";break;case Wf.SHORT:e="sin16";break;default:e="float32";break}switch(t.getNumberOfComponents()){case 2:e+="x2";break;case 3:e.includes("32")||Aae(`unsupported x3 type for ${e}`),e+="x3";break;case 4:e+="x4";break}return e}function HD(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=qh(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=kae(n),a={hash:`${n.getMTime()}I${i.getMTime()}${o}`,usage:Eu.PointArray,format:o,dataArray:n,indexBuffer:i};return t.getBuffer(a)},t.getFullScreenQuadBuffer=()=>{if(e.fullScreenQuadBuffer)return e.fullScreenQuadBuffer;e.fullScreenQuadBuffer=PS.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 Bae={device:null,fullScreenQuadBuffer:null};function Gae(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Bae,r),pr(t,e),si(t,e,["device"]),Uae(t,e)}Wn(Gae);var eg={...Nae,...g1};const{BufferUsage:Wae}=eg,{vtkErrorMacro:a0}=Q;function zae(t,e){e.classHierarchy.push("vtkWebGPUStorageBuffer"),t.addEntry=(r,n)=>{if(e._bufferEntryNames.has(r)){a0(`entry named ${r} already exists`);return}e._bufferEntryNames.set(r,e.bufferEntries.length);const i=go.getByteStrideFromShaderFormat(n);e.bufferEntries.push({name:r,type:n,sizeInBytes:i,offset:e.sizeInBytes,nativeType:go.getNativeTypeFromShaderFormat(n)}),e.sizeInBytes+=i},t.send=r=>{if(!e._buffer){const n={nativeArray:e.Float32Array,usage:Wae.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]=Q.newTypedArray(r,e.arrayBuffer))},t.setValue=(r,n,i)=>{const o=e._bufferEntryNames.get(r);if(o===void 0){a0(`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){a0(`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){a0(`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){a0(`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){a0(`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 ${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 Loe={bufferEntries:null,bufferEntryNames:null,sizeInBytes:0,label:null,numberOfInstances:1};function Fk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Loe,r),Q.obj(t,e),e._bufferEntryNames=new Map,e.bufferEntries=[],e._sendTime={},Q.obj(e._sendTime,{mtime:0}),e.bindGroupTime={},Q.obj(e.bindGroupTime,{mtime:0}),e.bindGroupLayoutEntry=e.bindGroupLayoutEntry||{buffer:{type:"read-only-storage"}},Q.get(t,e,["bindGroupTime"]),Q.setGet(t,e,["device","bindGroupLayoutEntry","label","numberOfInstances","sizeInBytes"]),Aoe(t,e)}const Noe=Q.newInstance(Fk,"vtkWebGPUStorageBuffer");var koe={newInstance:Noe,extend:Fk};const{BufferUsage:Voe}=Lg,{vtkErrorMacro:zC}=Q;function Foe(t,e){e.classHierarchy.push("vtkWebGPUUniformBuffer"),t.addEntry=(r,n)=>{if(e._bufferEntryNames.has(r)){zC(`entry named ${r} already exists`);return}e.sortDirty=!0,e._bufferEntryNames.set(r,e.bufferEntries.length),e.bufferEntries.push({name:r,type:n,sizeInBytes:bo.getByteStrideFromShaderFormat(n),offset:-1,nativeType:bo.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:Voe.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]=Q.newTypedArray(r,e.arrayBuffer))},t.setValue=(r,n)=>{t.sortBufferEntries();const i=e._bufferEntryNames.get(r);if(i===void 0){zC(`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){zC(`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 +`)},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 $ae={bufferEntries:null,bufferEntryNames:null,sizeInBytes:0,label:null,numberOfInstances:1};function ck(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,$ae,r),Q.obj(t,e),e._bufferEntryNames=new Map,e.bufferEntries=[],e._sendTime={},Q.obj(e._sendTime,{mtime:0}),e.bindGroupTime={},Q.obj(e.bindGroupTime,{mtime:0}),e.bindGroupLayoutEntry=e.bindGroupLayoutEntry||{buffer:{type:"read-only-storage"}},Q.get(t,e,["bindGroupTime"]),Q.setGet(t,e,["device","bindGroupLayoutEntry","label","numberOfInstances","sizeInBytes"]),zae(t,e)}const jae=Q.newInstance(ck,"vtkWebGPUStorageBuffer");var Hae={newInstance:jae,extend:ck};const{BufferUsage:Kae}=eg,{vtkErrorMacro:aC}=Q;function qae(t,e){e.classHierarchy.push("vtkWebGPUUniformBuffer"),t.addEntry=(r,n)=>{if(e._bufferEntryNames.has(r)){aC(`entry named ${r} already exists`);return}e.sortDirty=!0,e._bufferEntryNames.set(r,e.bufferEntries.length),e.bufferEntries.push({name:r,type:n,sizeInBytes:go.getByteStrideFromShaderFormat(n),offset:-1,nativeType:go.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:Kae.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]=Q.newTypedArray(r,e.arrayBuffer))},t.setValue=(r,n)=>{t.sortBufferEntries();const i=e._bufferEntryNames.get(r);if(i===void 0){aC(`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){aC(`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 Uoe={bufferEntries:null,bufferEntryNames:null,sizeInBytes:0,label:null,bindGroupLayoutEntry:null,bindGroupEntry:null};function Uk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Uoe,r),Q.obj(t,e),e._bufferEntryNames=new Map,e.bufferEntries=[],e.bindGroupLayoutEntry=e.bindGroupLayoutEntry||{buffer:{type:"uniform"}},e.sendTime={},Q.obj(e.sendTime,{mtime:0}),e.bindGroupTime={},Q.obj(e.bindGroupTime,{mtime:0}),e.sendDirty=!0,e.sortDirty=!0,Q.get(t,e,["binding","bindGroupTime"]),Q.setGet(t,e,["bindGroupLayoutEntry","device","label","sizeInBytes"]),Foe(t,e)}const Boe=Q.newInstance(Uk,"vtkWebGPUUniformBuffer");var Fh={newInstance:Boe,extend:Uk};const{vtkDebugMacro:Goe}=Ao,j6=` +`)}}const Xae={bufferEntries:null,bufferEntryNames:null,sizeInBytes:0,label:null,bindGroupLayoutEntry:null,bindGroupEntry:null};function lk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Xae,r),Q.obj(t,e),e._bufferEntryNames=new Map,e.bufferEntries=[],e.bindGroupLayoutEntry=e.bindGroupLayoutEntry||{buffer:{type:"uniform"}},e.sendTime={},Q.obj(e.sendTime,{mtime:0}),e.bindGroupTime={},Q.obj(e.bindGroupTime,{mtime:0}),e.sendDirty=!0,e.sortDirty=!0,Q.get(t,e,["binding","bindGroupTime"]),Q.setGet(t,e,["bindGroupLayoutEntry","device","label","sizeInBytes"]),qae(t,e)}const Yae=Q.newInstance(lk,"vtkWebGPUUniformBuffer");var ah={newInstance:Yae,extend:lk};const{vtkDebugMacro:Jae}=xo,KD=` //VTK::Renderer::Dec //VTK::Mapper::Dec @@ -2586,7 +2956,7 @@ fn main( //VTK::RenderEncoder::Impl return output; } -`,Woe=` +`,Zae=` fn vecToRectCoord(dir: vec3) -> vec2 { var tau: f32 = 6.28318530718; var pi: f32 = 3.14159265359; @@ -2628,7 +2998,7 @@ fn main( //VTK::RenderEncoder::Impl return output; } -`,t2=new Float64Array(16),H6=new Float64Array(16);function $oe(t){return t.getPositional()?t.getConeAngle()>=90?0:2:1}function zoe(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=[];Er(a,i,.5*(r[0]+r[1])),Kr(o,n,a),Sn(a,o,e.stabilizedCenter),sg(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||(Goe("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=LT.newInstance(),e.clearFSQ.setDevice(r),e.clearFSQ.setPipelineHash("clearfsq"),e.clearFSQ.setFragmentShaderTemplate(j6);const a=Fh.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(Woe);const a=Fh.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=LT.newInstance(),e.clearFSQ.setDevice(r),e.clearFSQ.setPipelineHash("clearfsq"),e.clearFSQ.setFragmentShaderTemplate(j6);const a=Fh.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),Mn(H6,n.normalMatrix),y5(t2,n.scvc,n.pcsc),y5(t2,H6,t2),e.clearFSQ.getUBO().setArray("FSQMatrix",t2),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 joe={bindGroup:null,selector:null,renderEncoder:null,recenterThreshold:20,suppressClear:!1,stabilizedCenter:[0,0,0]};function Hoe(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,joe,r),gr.extend(t,e,r),e.UBO=Fh.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=koe.newInstance({label:"rendererLightSSBO"}),e.lightTimeString="",e.bindGroup=Ek.newInstance({label:"rendererBG"}),e.bindGroup.setBindables([e.UBO,e.SSBO]),e.tmpMat4=Lt(new Float64Array(16)),e.stabilizedTime={},xr(e.stabilizedTime,{mtime:0}),Qo(t,e,["bindGroup","stabilizedTime"]),Mg(t,e,["stabilizedCenter"]),vi(t,e,["renderEncoder","selector","suppressClear","UBO"]),zoe(t,e)}const Koe=jn(Hoe,"vtkWebGPURenderer");Vs("vtkRenderer",Koe);function Xoe(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 qoe={device:null,handle:null,label:null,options:null};function Bk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,qoe,r),Q.obj(t,e),e.options={},e.bindGroupLayoutEntry={visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,sampler:{}},e.bindGroupTime={},Q.obj(e.bindGroupTime,{mtime:0}),Q.get(t,e,["bindGroupTime","handle","options"]),Q.setGet(t,e,["bindGroupLayoutEntry","device","label"]),Xoe(t,e)}const Yoe=Q.newInstance(Bk);var Gk={newInstance:Yoe,extend:Bk};const{SlicingMode:K6}=ix,Joe=` +`,E2=new Float64Array(16),qD=new Float64Array(16);function Qae(t){return t.getPositional()?t.getConeAngle()>=90?0:2:1}function ese(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=[];_r(a,i,.5*(r[0]+r[1])),ni(o,n,a),Sn(a,o,e.stabilizedCenter),Ih(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||(Jae("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=MS.newInstance(),e.clearFSQ.setDevice(r),e.clearFSQ.setPipelineHash("clearfsq"),e.clearFSQ.setFragmentShaderTemplate(KD);const a=ah.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(Zae);const a=ah.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=MS.newInstance(),e.clearFSQ.setDevice(r),e.clearFSQ.setPipelineHash("clearfsq"),e.clearFSQ.setFragmentShaderTemplate(KD);const a=ah.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),wn(qD,n.normalMatrix),Iy(E2,n.scvc,n.pcsc),Iy(E2,qD,E2),e.clearFSQ.getUBO().setArray("FSQMatrix",E2),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 tse={bindGroup:null,selector:null,renderEncoder:null,recenterThreshold:20,suppressClear:!1,stabilizedCenter:[0,0,0]};function nse(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,tse,r),cr.extend(t,e,r),e.UBO=ah.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=Hae.newInstance({label:"rendererLightSSBO"}),e.lightTimeString="",e.bindGroup=JN.newInstance({label:"rendererBG"}),e.bindGroup.setBindables([e.UBO,e.SSBO]),e.tmpMat4=Pt(new Float64Array(16)),e.stabilizedTime={},pr(e.stabilizedTime,{mtime:0}),Wo(t,e,["bindGroup","stabilizedTime"]),Xh(t,e,["stabilizedCenter"]),si(t,e,["renderEncoder","selector","suppressClear","UBO"]),ese(t,e)}const rse=Wn(nse,"vtkWebGPURenderer");Is("vtkRenderer",rse);function ise(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 ose={device:null,handle:null,label:null,options:null};function uk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ose,r),Q.obj(t,e),e.options={},e.bindGroupLayoutEntry={visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,sampler:{}},e.bindGroupTime={},Q.obj(e.bindGroupTime,{mtime:0}),Q.get(t,e,["bindGroupTime","handle","options"]),Q.setGet(t,e,["bindGroupLayoutEntry","device","label"]),ise(t,e)}const ase=Q.newInstance(uk);var fk={newInstance:ase,extend:uk};const{SlicingMode:XD}=yw,sse=` //VTK::Renderer::Dec //VTK::Mapper::Dec @@ -2657,377 +3027,7 @@ fn main( return output; } -`;function Zoe(t,e,r){if(e.apply(t)){const i=t.getIndependentComponents();return`${t.getMTime()}-${i}-${r}`}return"0"}const za=new Float64Array(16),ol=new Float64Array(16),n2=new Float64Array(16),ql=new Float64Array(4),Vi=new Float64Array(4);function Qoe(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();Lt(za),or(za,za,c);const l=o.getMatrix();Mn(ol,l),ei(ol,ol),Ln(za,ol,za);const f=s.getWorldToIndex();Ln(za,f,za),ei(n2,za),qm(ol,[.5,.5,.5]),Ln(za,ol,za);const u=s.getDimensions();Lt(ol),Ml(ol,ol,[1/u[0],1/u[1],1/u[2]]),Ln(za,ol,za),e.UBO.setArray("SCTCMatrix",za);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,y=1;h===K6.I?(p=0,v=1,y=2):h===K6.J&&(p=1,v=2,y=0),ql[p]=g,ql[v]=d[v*2]-.5,ql[y]=d[y*2]-.5,ql[3]=1,pf(ql,ql,n2),e.UBO.setArray("Origin",ql),Vi[p]=g,Vi[v]=d[v*2+1]+.5,Vi[y]=d[y*2]-.5,Vi[3]=1,pf(Vi,Vi,n2),S6(Vi,Vi,ql),Vi[3]=1,e.UBO.setArray("Axis1",Vi),Vi[p]=g,Vi[v]=d[v*2]-.5,Vi[y]=d[y*2+1]+.5,Vi[3]=1,pf(Vi,Vi,n2),S6(Vi,Vi,ql),Vi[3]=1,e.UBO.setArray("Axis2",Vi);const m=[1,1,1,1],w=[0,0,0,0],x=e.textureViews[0],C=x.getTexture().getScale(),S=x.getTexture().getNumberOfComponents();for(let T=0;T{const i=e.WebGPUImageSlice.getRenderable().getProperty();t.getTextureViews()[0].getTexture().getNumberOfComponents();const a=1,s=Zoe(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()===$d.NEAREST?"nearest":"linear";(!e.clampSampler||s!==e.clampSampler.getOptions().minFilter)&&(e.clampSampler=Gk.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=fr.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=fr.substitute(c,"//VTK::Image::Sample",[" var computedColor: vec4 ="," textureSampleLevel(imgTexture, clampSampler, input.tcoordVS, 0.0);","//VTK::Image::Sample"]).result:c=fr.substitute(c,"//VTK::Image::Sample",[" var computedColor: vec4 ="," textureSampleLevel(imgTexture, clampSampler, input.tcoordVS, 0.0);","//VTK::Image::Sample"]).result,c=fr.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 eae={rowLength:1024};function tae(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,eae,r),LT.extend(t,e,r),t.setFragmentShaderTemplate(Joe),e.UBO=Fh.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={},xr(e.lutBuildTime,{mtime:0}),e.imagemat=Lt(new Float64Array(16)),e.imagematinv=Lt(new Float64Array(16)),e.VBOBuildTime={},xr(e.VBOBuildTime),Qoe(t,e)}const nae=jn(tae,"vtkWebGPUImageMapper");Vs("vtkImageMapper",nae);function rae(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],Mn(e.keyMatrices.bcwc,n),e.renderable.getIsIdentity()?Lt(e.keyMatrices.normalMatrix):(zr(e.keyMatrices.normalMatrix,e.keyMatrices.bcwc),e.keyMatrices.normalMatrix[3]=0,e.keyMatrices.normalMatrix[7]=0,e.keyMatrices.normalMatrix[11]=0,ei(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix),Mn(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix)),or(e.keyMatrices.bcwc,e.keyMatrices.bcwc,[-e.bufferShift[0],-e.bufferShift[1],-e.bufferShift[2]]),or(e.keyMatrices.bcsc,e.keyMatrices.bcwc,[-i[0],-i[1],-i[2]]),e.keyMatricesTime.modified()}return e.keyMatrices}}const iae={bufferShift:void 0,keyMatrixTime:null,keyMatrices:null,propID:void 0};function oae(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,iae,r),gr.extend(t,e,r),e.keyMatricesTime={},xr(e.keyMatricesTime,{mtime:0}),e.keyMatrices={normalMatrix:new Float64Array(16),bcwc:new Float64Array(16),bcsc:new Float64Array(16)},e.keyMatrixTime={},xr(e.keyMatrixTime,{mtime:0}),e.keyMatrices={mcwc:Lt(new Float64Array(16))},e.bufferShift=[0,0,0,0],Qo(t,e,["propID","keyMatricesTime"]),rae(t,e)}const aae=jn(oae,"vtkWebGPUImageSlice");Vs("vtkImageSlice",aae);function sae(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();Mn(e.keyMatrices.bcwc,o),or(e.keyMatrices.bcsc,e.keyMatrices.bcwc,[-a[0],-a[1],-a[2]]),e.keyMatricesTime.modified()}return e.keyMatrices}}const cae={propID:void 0,keyMatricesTime:null};function lae(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,cae,r),gr.extend(t,e,r),e.keyMatricesTime={},Q.obj(e.keyMatricesTime,{mtime:0}),e.keyMatrices={bcwc:new Float64Array(16),bcsc:new Float64Array(16)},Q.get(t,e,["propID","keyMatricesTime"]),sae(t,e)}const uae=Q.newInstance(lae,"vtkWebGPUVolume");Vs("vtkVolume",uae);function fae(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 dae={};function hae(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,dae,r),gr.extend(t,e,r),fae(t,e)}const gae=Q.newInstance(hae,"vtkWebGPUPixelSpaceCallbackMapper");Vs("vtkPixelSpaceCallbackMapper",gae);const uc={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 Wk={StructuredType:uc};const{StructuredType:Yl}=Wk;function pae(t){let e=0;for(let r=0;r<3;++r)t[r*2]t[1]||t[2]>t[3]||t[4]>t[5]?Yl.EMPTY:e===3?Yl.XYZ_GRID:e===2?t[0]===t[1]?Yl.YZ_PLANE:t[2]===t[3]?Yl.XZ_PLANE:Yl.XY_PLANE:e===1?t[0]s!==o[c]);return a&&(e.extent=o.slice(),e.dataDescription=mae.getDataDescriptionFromExtent(e.extent),t.modified()),a},t.setDimensions=function(){let r,n,i;if(e.deleted){sd("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{sd("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 sd("Requesting a point from an empty image."),null;const i=new Float64Array(3);switch(e.dataDescription){case uc.EMPTY:return null;case uc.SINGLE_POINT:break;case uc.X_LINE:i[0]=r;break;case uc.Y_LINE:i[1]=r;break;case uc.Z_LINE:i[2]=r;break;case uc.XY_PLANE:i[0]=r%n[0],i[1]=r/n[0];break;case uc.YZ_PLANE:i[1]=r%n[1],i[2]=r/n[1];break;case uc.XZ_PLANE:i[0]=r%n[0],i[2]=r/n[0];break;case uc.XYZ_GRID:i[0]=r%n[0],i[1]=r/n[0]%n[1],i[2]=r/(n[0]*n[1]);break;default:sd("Invalid dataDescription");break}const o=[0,0,0];return t.indexToWorld(i,o),o},t.getBounds=()=>t.extentToBounds(t.getSpatialExtent()),t.extentToBounds=r=>ar.transformBounds(r,e.indexToWorld),t.getSpatialExtent=()=>ar.inflate([...e.extent],.5),t.computeTransforms=()=>{qm(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],Ml(e.indexToWorld,e.indexToWorld,e.spacing),ei(e.worldToIndex,e.indexToWorld)},t.indexToWorld=function(r){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return Gt(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 Gt(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 ar.transformBounds(r,e.indexToWorld,n)},t.worldToIndexBounds=function(r){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return ar.transformBounds(r,e.worldToIndex,n)},t.onModified(t.computeTransforms),t.computeTransforms(),t.getCenter=()=>ar.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];ar.computeCornerPoints(i,o,a),mT(o,o),mT(a,a);const s=t.getDimensions();yT(o,[0,0,0],[s[0]-1,s[1]-1,s[2]-1],o),yT(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 w=o[2];w<=a[2];w++)for(let x=o[1];x<=a[1];x++){let C=o[0]+x*c+w*l;for(let S=o[0];S<=a[0];S++){if(!n||n([S,x,w],i)){const T=f[C];T>u&&(u=T),T0?g/p:0,y=p?Math.abs(h/p-v*v):0,m=Math.sqrt(y);return{minimum:d,maximum:u,average:v,variance:y,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 sd(`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 sd(`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 yae={direction:null,indexToWorld:null,worldToIndex:null,spacing:[1,1,1],origin:[0,0,0],extent:[0,-1,0,-1,0,-1],dataDescription:uc.EMPTY};function $k(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,yae,r),Ag.extend(t,e,r),e.direction?Array.isArray(e.direction)&&(e.direction=new Float64Array(e.direction.slice(0,9))):e.direction=Ns(new Float64Array(9)),e.indexToWorld=new Float64Array(16),e.worldToIndex=new Float64Array(16),Q.get(t,e,["indexToWorld","worldToIndex"]),Q.setGetArray(t,e,["origin","spacing"],3),Q.setGetArray(t,e,["direction"],9),Q.getArray(t,e,["extent"],6),vae(t,e)}const wae=Q.newInstance($k,"vtkImageData");var Qm={newInstance:wae,extend:$k};const X6=[[0,-1,0],[0,1,0],[0,0,-1],[0,0,1]],q6=[[0,-1,0],[0,1,0]],xae=[[0,-1,0],[0,1,0],[0,0,-1]],Cae=[[0,-1,0],[0,1,0],[0,0,1]];var qh;let X0=(qh=class{static copyMap(e,r){for(const[n,i]of r.rows)e.rows.set(n,structuredClone(i))}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.numComps=1,this.pixelDataConstructor=Uint8Array,this.updateScalarData=function(i){i.fill(0);const o=(a,s,c)=>{const{start:l,end:f,value:u}=s;for(let d=l;d{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)return;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,y=v?l+1:l,m=v?f:u;let w=v?c[l+1]:f;if((m==null?void 0:m.value)===o&&(m==null?void 0:m.end)===a){m.end++,(w==null?void 0:w.value)===o&&w.start===a+1?(m.end=w.end,c.splice(l,1)):(w==null?void 0:w.start)===a&&(w.start++,w.start===w.end&&(c.splice(l,1),w=c[l],(w==null?void 0:w.start)===a+1&&w.value===o&&(m.end=w.end,c.splice(l,1))));return}if((w==null?void 0:w.value)===o&&w.start===a+1){w.start--,(m==null?void 0:m.end)>a&&(m.end=a,m.end===m.start&&c.splice(l,1));return}if((w==null?void 0:w.start)===a&&w.end===a+1){w.value=o;const x=c[l+1];(x==null?void 0:x.start)==a+1&&x.value===o&&(c.splice(l+1,1),w.end=x.end);return}a===(w==null?void 0:w.start)&&w.start++,v&&h>a+1?c.splice(y,0,p,{start:a+1,end:m.end,value:m.value}):c.splice(y,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}toIJK(e){const r=e%this.jMultiple,n=(e-r)/this.jMultiple%this.height,i=Math.floor(e/this.kMultiple);return[r,n,i]}toIndex([e,r,n]){return e+n*this.kMultiple+r*this.jMultiple}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}has(e){const r=e%this.jMultiple,n=(e-r)/this.jMultiple,i=this.getRLE(r,n);return(i==null?void 0:i.value)!==void 0}delete(e){const r=e%this.width,n=(e-r)/this.width,i=this.rows.get(n);if(!i)return;const o=this.findIndex(i,r),a=i[o];if(!a||a.start>r)return;if(a.end===r+1){a.end--,a.start>=a.end&&(i.splice(o,1),i.length||this.rows.delete(n));return}if(a.start===r){a.start++;return}const s={value:a.value,start:r+1,end:a.end};a.end=r,i.splice(o+1,0,s)}findIndex(e,r){for(let n=0;nh&&h[0].value===r);e.push(...d)}return o}fillFrom(e,r){for(let n=r[2][0];n<=r[2][1];n++)for(let i=r[1][0];i<=r[1][1];i++){let o,a;for(let s=r[0][0];s<=r[0][1];s++){const c=e(s,i,n);if(c===void 0){o=void 0;continue}a||(a=[],this.rows.set(i+n*this.height,a)),o&&o.value!==c&&(o=void 0),o||(o={start:s,end:s,value:c},a.push(o)),o.end++}}}findAdjacents(e,{diagonals:r=!0,planar:n=!0,singlePlane:i=!1}){const[o,a,s,c]=e,{start:l,end:f}=o,u=l>0&&this.getRLE(l-1,a,s),d=f0?l-1:l,f=this.height||w<0||w>=this.depth)continue;const x=this.getRun(m,w);if(x)for(const C of x){const S=c||i&&q6||n&&y>0&&Cae||n&&y<0&&xae||X6;C.end<=h[0]||C.start>=h[1]||g.push([C,m,w,S])}}return g}},qh.getScalarData=function(e=Uint8ClampedArray){const r=new e(this.frameSize);return this.map.updateScalarData(r),r},qh),Sy=class $p{constructor(e={}){this._dimensions=3,this._length=0,this._byteSize=4,this.growSize=128;const{initialSize:r=1024,dimensions:n=3,growSize:i=128}=e,o=r*n;this.growSize=i,this.array=new ArrayBuffer(o*this._byteSize),this.data=new Float32Array(this.array),this._dimensions=n}forEach(e){for(let r=0;r=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=$p.create3(e.length);let o=0;for(let a=0;an.push(i)),n}static create2(e=128){return new $p({initialSize:e,dimensions:2})}};function zk(t){const e=Ve(),r=t.getDimensions(),n=Sy.create3(r[0]),i=Sy.create3(r[1]),o=Sy.create3(r[2]),a=t.getDirection(),s=a.slice(0,3),c=a.slice(3,6),l=a.slice(6,9),f=t.getSpacing(),[u,d,h]=f,g=t.indexToWorld([0,0,0]),p=Et(s[0]*u,s[1]*u,s[2]*u),v=Et(c[0]*d,c[1]*d,c[2]*d),y=Et(l[0]*h,l[1]*h,l[2]*h),m=Ve();for(let S=0;S{const[_,E,b]=S,D=_*3,I=E*3,P=b*3;return T[0]=w[D]+x[I]+C[P],T[1]=w[D+1]+x[I+1]+C[P+1],T[2]=w[D+2]+x[I+2]+C[P+2],T}}function Y4(t,e){const{pointInShapeFn:r,callback:n,boundsIJK:i,returnPoints:o=!1}=e;let a;if(t.getScalarData)a=t.getScalarData();else{const u=t.getPointData().getScalars();if(u)a=u.getData();else{const{voxelManager:d}=t.get("voxelManager")||{};d&&(a=d.getCompleteScalarDataArray())}}const s=t.getDimensions(),c=[[0,s[0]],[0,s[1]],[0,s[2]]],f=Sae({imageData:t,bounds:i||c,scalarData:a,pointInShapeFn:r,callback:n});return o?f:void 0}function Sae({imageData:t,bounds:e,scalarData:r,pointInShapeFn:n,callback:i}){const[[o,a],[s,c],[l,f]]=e,{numComps:u}=t,d=t.getDimensions(),h=zk(t),g=[0,0,0],p=u||r.length/d[2]/d[1]/d[0],v=d[0]*p,y=d[1]*v,m=[];for(let w=l;w<=f;w++){g[2]=w;const x=w*y;for(let C=s;C<=c;C++){g[1]=C;const S=x+C*v;for(let T=o;T<=a;T++){g[0]=T;const _=h(g);if(n(_,g)){const E=S+T*p;let b;p>2?b=[r[E],r[E+1],r[E+2]]:b=r[E],m.push({value:b,index:E,pointIJK:g,pointLPS:_.slice()}),i({value:b,index:E,pointIJK:g,pointLPS:_})}}}}return m}function Tae({voxelManager:t,bounds:e,imageData:r,pointInShapeFn:n,callback:i,returnPoints:o}){const[[a,s],[c,l],[f,u]]=e,d=zk(r),h=[0,0,0],g=[];for(let p=f;p<=u;p++){h[2]=p;for(let v=c;v<=l;v++){h[1]=v;for(let y=a;y<=s;y++){h[0]=y;const m=d(h);if(n(m,h)){const w=t.toIndex(h),x=t.getAtIndex(w);o&&g.push({value:x,index:w,pointIJK:[...h],pointLPS:m.slice()}),i==null||i({value:x,index:w,pointIJK:h,pointLPS:m})}}}}return g}const _ae=5*1024;let Rc=class Fi{get id(){return this._id}constructor(e,r){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=(n,i,o)=>{const a=this.toIndex([n,i,o]);return this._get(a)},this.setAtIJK=(n,i,o,a)=>{const s=this.toIndex([n,i,o]),c=this._set(s,a);return c!==!1&&(this.modifiedSlices.add(o),Fi.addBounds(this.boundsIJK,[n,i,o])),c},this.getAtIJKPoint=([n,i,o])=>this.getAtIJK(n,i,o),this.setAtIJKPoint=([n,i,o],a)=>{this.setAtIJK(n,i,o,a)},this.getAtIndex=n=>this._get(n),this.setAtIndex=(n,i)=>{const o=this._set(n,i);if(o!==!1){const a=this.toIJK(n);this.modifiedSlices.add(a[2]),Fi.addBounds(this.boundsIJK,a)}return o},this.getMiddleSliceData=()=>{const n=Math.floor(this.dimensions[2]/2);return this.getSliceData({sliceIndex:n,slicePlane:2})},this.forEach=(n,i={})=>{const o=i.boundsIJK||this.getBoundsIJK(),a=i.isInObject||this.isInObject||(()=>!0),s=i.returnPoints||!1,c=i.imageData,l=Math.min(o[0][0],o[0][1]),f=Math.max(o[0][0],o[0][1]),u=Math.min(o[1][0],o[1][1]),d=Math.max(o[1][0],o[1][1]),h=Math.min(o[2][0],o[2][1]),g=Math.max(o[2][0],o[2][1]),p=[];if(c)return Tae({voxelManager:this,imageData:i.imageData,bounds:[[l,f],[u,d],[h,g]],pointInShapeFn:a,callback:n,returnPoints:s});if(this.map){if(this.map instanceof X0)return this.rleForEach(n,i);for(const v of this.map.keys()){const y=this.toIJK(v);if(!a(null,y))continue;const m=this._get(v);s&&p.push({value:m,index:v,pointIJK:y,pointLPS:null}),n({value:m,index:v,pointIJK:y,pointLPS:null})}return p}else{for(let v=h;v<=g;v++){const y=v*this.frameSize;for(let m=u;m<=d;m++){const w=y+m*this.width;for(let x=l,C=w+x;x<=f;x++,C++){const S=this.getAtIndex(C),T=[x,m,v];a(null,T)&&(s&&p.push({value:S,index:C,pointIJK:T,pointLPS:null}),n({value:S,index:C,pointIJK:[x,m,v],pointLPS:null}))}}}return p}},this.getSliceData=({sliceIndex:n,slicePlane:i})=>{const[o,a,s]=this.dimensions,c=o*a,l=n*c;let f;const u=this.getConstructor();function d(g){return typeof g=="function"}if(!d(u))return new Uint8Array(0);let h;switch(i){case 0:f=a*s,h=new u(f);for(let g=0;g{const o=Array.isArray(i);if(e===void 0&&(e=o?[...i]:i,r=o?[...i]:i),o)for(let a=0;a[0,e-1])}getBoundsIJK(){return this.boundsIJK[0][0]{e[0]=1/0,e[1]=-1/0})}clear(){var e,r;(e=this.map)==null||e.clear(),this.clearBounds(),this.modifiedSlices.clear(),(r=this.points)==null||r.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,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(a*=n,[r[a++],r[a++],r[a++]]),_id:i||"_createRGBScalarVolumeVoxelManager",_set:(a,s)=>{a*=3;const c=!Vt(r[a],s);return r[a++]=s[0],r[a++]=s[1],r[a++]=s[2],c},numberOfComponents:n,scalarData:r});return o.clear=()=>{r.fill(0)},o}static createImageVolumeVoxelManager({dimensions:e,imageIds:r,numberOfComponents:n=1,id:i}){const o=e[0]*e[1];function a(u){const d=Math.floor(u/o);if(d<0||d>=e[2])return{};const h=r[d];if(!h)return console.warn(`ImageId not found for sliceIndex: ${d}`),{pixelData:null,pixelIndex:null};const g=Ue.getImage(h);if(!g)return console.warn(`Image not found for imageId: ${h}`),{pixelData:null,pixelIndex:null};const p=g.voxelManager,v=u%o;return{voxelManager:p,pixelIndex:v}}function s(u){const{voxelManager:d,pixelIndex:h}=a(u);return!d||h===null?null:d.getAtIndex(h)}function c(u,d){const{voxelManager:h,pixelIndex:g}=a(u);if(!h||g===null)return!1;const p=h.getAtIndex(g),v=!Vt(d,p);return v&&(h.setAtIndex(g,d),!0)}const l=()=>{const{voxelManager:u,pixelIndex:d}=a(0);return!u||d===null?null:u.getConstructor()},f=new Fi(e,{_get:s,_set:c,numberOfComponents:n,_getConstructor:l,_id:i||"createImageVolumeVoxelManager"});return f.getMiddleSliceData=()=>{const u=Math.floor(e[2]/2);return f.getSliceData({sliceIndex:u,slicePlane:2})},f.clear=()=>{for(const u of r)Ue.getImage(u).voxelManager.clear()},f.getRange=()=>{let u=1/0,d=-1/0;for(const h of r){const g=Ue.getImage(h);g&&(g.minPixelValued&&(d=g.maxPixelValue))}return u===1/0&&d===-1/0?[0,0]:[u,d]},f._getScalarDataLength=()=>{const{voxelManager:u,pixelIndex:d}=a(0);return!u||d===null?0:u.getScalarDataLength()*e[2]},f.getCompleteScalarDataArray=()=>{const u=f._getConstructor();if(!u)return new Uint8Array(0);const d=f.getScalarDataLength(),h=new u(d),g=e[0]*e[1]*n;for(let p=0;p{const d=e[0]*e[1]*n,h=f._getConstructor();let g=1/0,p=-1/0;for(let v=0;v4||n<1||n===2))throw new Error(`Number of components ${n} must be 1, 3 or 4`);return n>1?Fi._createRGBScalarVolumeVoxelManager({dimensions:e,scalarData:r,numberOfComponents:n,id:i}):Fi._createNumberVolumeVoxelManager({dimensions:e,scalarData:r,id:i})}static createScalarDynamicVolumeVoxelManager({imageIdGroups:e,dimensions:r,dimensionGroupNumber:n=1,timePoint:i=0,numberOfComponents:o=1,id:a}){let s=0;if(n!==void 0?s=n-1:i!==void 0&&(console.warn("Warning: timePoint parameter is deprecated. Please use dimensionGroupNumber instead. timePoint is zero-based while dimensionGroupNumber starts at 1."),s=i),!o){const f=Ue.getImage(e[0][0]);if(!f)throw new Error("Unable to determine number of components: No image found");if(o=f.getPixelData().length/(r[0]*r[1]),o>4||o<1||o===2)throw new Error(`Number of components ${o} must be 1, 3 or 4`)}const c=e.map(f=>Fi.createImageVolumeVoxelManager({dimensions:r,imageIds:f,numberOfComponents:o,id:a})),l=new Fi(r,{_get:f=>c[s]._get(f),_set:(f,u)=>c[s]._set(f,u),numberOfComponents:o,_id:a||"createScalarDynamicVolumeVoxelManager"});return l.getScalarDataLength=()=>c[s].getScalarDataLength(),l.getConstructor=()=>c[s].getConstructor(),l.getRange=()=>c[s].getRange(),l.getMiddleSliceData=()=>c[s].getMiddleSliceData(),l.setTimePoint=f=>{console.warn("Warning: setTimePoint is deprecated. Please use setDimensionGroupNumber instead. Note that timePoint is zero-based while dimensionGroupNumber starts at 1."),l.setDimensionGroupNumber(f+1)},l.setDimensionGroupNumber=f=>{s=f-1,l._get=u=>c[s]._get(u),l._set=(u,d)=>c[s]._set(u,d)},l.getAtIndexAndTimePoint=(f,u)=>(console.warn("Warning: getAtIndexAndTimePoint is deprecated. Please use getAtIndexAndDimensionGroup instead. Note that timePoint is zero-based while dimensionGroupNumber starts at 1."),l.getAtIndexAndDimensionGroup(f,u+1)),l.getAtIndexAndDimensionGroup=(f,u)=>c[u-1]._get(f),l.getTimePointScalarData=f=>(console.warn("Warning: getTimePointScalarData is deprecated. Please use getDimensionGroupScalarData instead. Note that timePoint is zero-based while dimensionGroupNumber starts at 1."),l.getDimensionGroupScalarData(f+1)),l.getDimensionGroupScalarData=f=>c[f-1].getCompleteScalarDataArray(),l.getCurrentTimePointScalarData=()=>(console.warn("Warning: getCurrentTimePointScalarData is deprecated. Please use getCurrentDimensionGroupScalarData instead."),l.getCurrentDimensionGroupScalarData()),l.getCurrentDimensionGroupScalarData=()=>c[s].getCompleteScalarDataArray(),l.getCurrentTimePoint=()=>(console.warn("Warning: getCurrentTimePoint is deprecated. Please use getCurrentDimensionGroupNumber instead. Note that timePoint is zero-based while dimensionGroupNumber starts at 1."),s),l.getCurrentDimensionGroupNumber=()=>s+1,l}static createImageVoxelManager({width:e,height:r,scalarData:n,numberOfComponents:i=1,id:o}){const a=[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?Fi._createRGBScalarVolumeVoxelManager({dimensions:a,scalarData:n,numberOfComponents:i,id:o}):Fi._createNumberVolumeVoxelManager({dimensions:a,scalarData:n,id:o})}static _createNumberVolumeVoxelManager({dimensions:e,scalarData:r,id:n}){const i=new Fi(e,{_get:o=>r[o],_set:(o,a)=>{const s=r[o]!==a;return r[o]=a,s},_getConstructor:()=>r.constructor,_id:n||"_createNumberVolumeVoxelManager"});return i.scalarData=r,i.clear=()=>{i.scalarData.fill(0)},i.getMiddleSliceData=()=>{const o=Math.floor(e[2]/2);return i.getSliceData({sliceIndex:o,slicePlane:2})},i}static createMapVoxelManager({dimension:e,id:r}){const n=new Map,i=new Fi(e,{_get:n.get.bind(n),_set:(o,a)=>n.set(o,a)&&!0,_id:r||"createMapVoxelManager"});return i.map=n,i}static createHistoryVoxelManager(e,r){const n=new Map,{dimensions:i}=e,o=new Fi(i,{_get:a=>n.get(a),_set:function(a,s){if(n.has(a))s===n.get(a)&&n.delete(a);else{const c=this.sourceVoxelManager.getAtIndex(a);if(c===s)return!1;n.set(a,c)}this.sourceVoxelManager.setAtIndex(a,s)},_id:r||"createHistoryVoxelManager"});return o.map=n,o.scalarData=e.scalarData,o.sourceVoxelManager=e,o}static createRLEHistoryVoxelManager(e,r){const{dimensions:n}=e,i=new X0(n[0],n[1],n[2]),o=new Fi(n,{_get:a=>i.get(a),_set:function(a,s){const c=i.get(a);if(c===void 0){const l=this.sourceVoxelManager.getAtIndex(a);if(l===s||l===void 0&&s===0||s===null)return!1;i.set(a,l??0)}else(s===c||s===null)&&(i.delete(a),s=c);this.sourceVoxelManager.setAtIndex(a,s)},_getScalarData:X0.getScalarData,_updateScalarData:a=>(i.updateScalarData(a),a),_id:r||"createRLEHistoryVoxelManager"});return o.map=i,o.sourceVoxelManager=e,o}static createLazyVoxelManager({dimensions:e,planeFactory:r,id:n}){const i=new Map,[o,a]=e,s=o*a,c=new Fi(e,{_get:l=>i.get(Math.floor(l/s))[l%s],_set:(l,f)=>{const u=Math.floor(l/s);let d=i.get(u);return d||(d=r(o,a),i.set(u,d)),d[l%s]=f,!0},_id:n||"createLazyVoxelManager"});return c.map=i,c}static createRLEVolumeVoxelManager({dimensions:e,id:r}){const[n,i,o]=e,a=new X0(n,i,o),s=new Fi(e,{_get:c=>a.get(c),_set:(c,l)=>(a.set(c,l),!0),_getScalarData:X0.getScalarData,_updateScalarData:c=>(a.updateScalarData(c),c),_id:r||"createRLEVolumeVoxelManager"});return s.map=a,s.getPixelData=a.getPixelData.bind(a),s}static createRLEImageVoxelManager({dimensions:e,id:r}){const[n,i]=e;return Fi.createRLEVolumeVoxelManager({dimensions:[n,i,1],id:r})}static addInstanceToImage(e){const{width:r,height:n}=e,i=e.voxelManager.getScalarData();if(i.length>=r*n){e.voxelManager=Fi.createScalarVolumeVoxelManager({dimensions:[r,n,1],scalarData:i});return}e.voxelManager=Fi.createRLEVolumeVoxelManager({dimensions:[r,n,1]}),e.getPixelData=e.voxelManager.getPixelData,e.sizeInBytes=_ae}};const Eae="WebGL",I5=Object.create(null);function jk(t,e){I5[t]=e}function bae(){return Object.keys(I5)}function Hk(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return I5[t]&&I5[t](e)}function Dae(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 Hk(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 Q.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 Iae={defaultViewAPI:Eae,renderers:[],views:[],interactor:null,neverRendered:!0,numberOfLayers:1,childRenderWindows:[]};function Kk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Iae,r),Q.obj(t,e),Q.setGet(t,e,["interactor","numberOfLayers","_views","defaultViewAPI"]),Q.get(t,e,["neverRendered"]),Q.getArray(t,e,["renderers","childRenderWindows"]),Q.moveToProtected(t,e,["views"]),Q.event(t,e,"completion"),Dae(t,e)}const Mae=Q.newInstance(Kk,"vtkRenderWindow");var Oae={newInstance:Mae,extend:Kk,registerViewConstructor:jk,listViewAPIs:bae,newAPISpecificView:Hk};function Pae(t,e){e.classHierarchy.push("vtkRenderPass"),t.getOperation=()=>e.currentOperation,t.setCurrentOperation=r=>{e.currentOperation=r,e.currentTraverseOperation=`traverse${Q.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 Rae={delegates:[],currentOperation:null,preDelegateOperations:[],postDelegateOperations:[],currentParent:null};function Xk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Rae,r),Q.obj(t,e),Q.get(t,e,["currentOperation"]),Q.setGet(t,e,["delegates","_currentParent","preDelegateOperations","postDelegateOperations"]),Q.moveToProtected(t,e,["currentParent"]),Pae(t,e)}const Aae=Q.newInstance(Xk,"vtkRenderPass");var J4={newInstance:Aae,extend:Xk};const{Representation:Lae}=w0,{vtkErrorMacro:Y6}=Q;function Nae(t){const e=Le.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 kae=`//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 Vae(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=Nt.newInstance({numberOfComponents:3,values:r});o.setName("points");const a=Nt.newInstance({numberOfComponents:2,values:n});a.setName("tcoords");const s=Nt.newInstance({numberOfComponents:1,values:i});e.tris.getCABO().createVBO(s,"polys",Lae.SURFACE,{points:o,tcoords:a,cellOffset:0}),e.VBOBuildTime.modified()},t.createFramebuffer=r=>{const n=r.getSize(),i=r.getContext();e.framebuffer=ox.newInstance(),e.framebuffer.setOpenGLRenderWindow(r),e.framebuffer.create(...n),e.framebuffer.saveCurrentBindingsAndBuffers(),e.framebuffer.bind(),e.translucentRGBATexture=Vr.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=Vr.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=Vr.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(` -`),kae,"")},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)||Y6("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)||Y6("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=j4.newInstance(),e.copyVAO.setOpenGLRenderWindow(r)),e.copyVAO.bind(),e.VBOBuildTime.getMTime()e._supported?Nae: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 Fae={framebuffer:null,copyShader:null,tris:null};function qk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Fae,r),J4.extend(t,e,r),e.VBOBuildTime={},Q.obj(e.VBOBuildTime,{mtime:0}),e.tris=Ul.newInstance(),Q.get(t,e,["framebuffer"]),Vae(t,e)}const Uae=Q.newInstance(qk,"vtkOpenGLOrderIndependentTranslucentPass");var Bae={newInstance:Uae,extend:qk};function Gae(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=ox.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=Bae.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 Wae={opaqueActorCount:0,translucentActorCount:0,volumeCount:0,overlayActorCount:0,framebuffer:null,depthRequested:!1};function Yk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Wae,r),J4.extend(t,e,r),Q.get(t,e,["framebuffer","opaqueActorCount","translucentActorCount","volumeCount"]),Gae(t,e)}const $ae=Q.newInstance(Yk,"vtkForwardPass");var zae={newInstance:$ae,extend:Yk};const la={MIN_KNOWN_PASS:0,ACTOR_PASS:0,COMPOSITE_INDEX_PASS:1,ID_LOW24:2,ID_HIGH24:3,MAX_KNOWN_PASS:3};var Jk={PassTypes:la};const{FieldAssociations:jae}=Ag;function Hae(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 Kae={fieldAssociation:jae.FIELD_ASSOCIATION_CELLS,captureZValues:!1};function Zk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Kae,r),Q.obj(t,e),Q.setGet(t,e,["fieldAssociation","captureZValues"]),Hae(t,e)}const Xae=Q.newInstance(Zk,"vtkHardwareSelector");var qae={newInstance:Xae,extend:Zk};const Yae={GLOBALIDS:0,PEDIGREEIDS:1,VALUES:2,INDICES:3,FRUSTUM:4,LOCATIONS:5,THRESHOLDS:6,BLOCKS:7,QUERY:8},Jae={CELL:0,POINT:1,FIELD:2,VERTEX:3,EDGE:4,ROW:5};var Zae={SelectionContent:Yae,SelectionField:Jae};function Qae(t,e){e.classHierarchy.push("vtkSelectionNode"),t.getBounds=()=>e.points.getBounds()}const ese={contentType:-1,fieldType:-1,properties:null,selectionList:[]};function Qk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ese,r),Q.obj(t,e),e.properties={},Q.setGet(t,e,["contentType","fieldType","properties","selectionList"]),Qae(t,e)}const tse=Q.newInstance(Qk,"vtkSelectionNode");var eV={newInstance:tse,extend:Qk,...Zae};const{PassTypes:Mi}=Jk,{SelectionContent:nse,SelectionField:J6}=eV,{FieldAssociations:u1}=Ag,{vtkErrorMacro:tV}=Q,lf=1;function nV(t){return`${t.propID} ${t.compositeID}`}function rV(t,e,r,n){if(!r)return 0;const i=(e*(n[2]-n[0]+1)+t)*4;return r[i+3]}function lu(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 iV(t,e){let r=e;return r<<=24,r|=t,r}function rse(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=lu(i[0],i[1],t.pixBuffer[Mi.ACTOR_PASS],t.area);if(o<=0||o-lf>=t.props.length)return null;const a={};a.valid=!0,a.propID=o-lf,a.prop=t.props[a.propID];let s=lu(i[0],i[1],t.pixBuffer[Mi.COMPOSITE_INDEX_PASS],t.area);if((s<0||s>16777215)&&(s=0),a.compositeID=s-lf,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[Mi.ID_LOW24]&&rV(i[0],i[1],t.pixBuffer[Mi.ID_LOW24],t.area)===0)return a;const c=lu(i[0],i[1],t.pixBuffer[Mi.ID_LOW24],t.area),l=lu(i[0],i[1],t.pixBuffer[Mi.ID_HIGH24],t.area);return a.attributeID=iV(c,l),a}}function oV(t,e,r,n,i){const o=[];let a=0;return e.forEach((s,c)=>{const l=eV.newInstance();switch(l.setContentType(nse.INDICES),t){case u1.FIELD_ASSOCIATION_CELLS:l.setFieldType(J6.CELL);break;case u1.FIELD_ASSOCIATION_POINTS:l.setFieldType(J6.POINT);break;default:tV("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 ise(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=rse(t,[d,u],0,f);if(g&&g.valid){const p=nV(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=ox.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===u1.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 tV("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=Mi.MIN_KNOWN_PASS;e.currentPass<=Mi.MAX_KNOWN_PASS;e.currentPass++)t.passRequired(e.currentPass)&&(t.preCapturePass(e.currentPass),e.captureZValues&&e.currentPass===Mi.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=Mi.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===Mi.ID_HIGH24){if(e.fieldAssociation===u1.FIELD_ASSOCIATION_POINTS)return e.maximumPointId>16777215;if(e.fieldAssociation===u1.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===Mi.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=lu(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===Mi.ACTOR_PASS&&(t.setPropColorValueFromInt(e.props.length+lf),e.props.push(n))},t.renderCompositeIndex=n=>{e.currentPass===Mi.COMPOSITE_INDEX_PASS&&t.setPropColorValueFromInt(n+lf)},t.renderAttributeId=n=>{n<0||(e.maxAttributeId=n>e.maxAttributeId?n:e.maxAttributeId)},t.passTypeToString=n=>Q.enumToString(Mi,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=lu(f[0],f[1],e.pixBuffer[Mi.ACTOR_PASS],e.area);if(u<=0||u-lf>=e.props.length)return null;const d={};d.valid=!0,d.propID=u-lf,d.prop=e.props[d.propID];let h=lu(f[0],f[1],e.pixBuffer[Mi.COMPOSITE_INDEX_PASS],e.area);if((h<0||h>16777215)&&(h=0),d.compositeID=h-lf,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[Mi.ID_LOW24]&&rV(f[0],f[1],e.pixBuffer[Mi.ID_LOW24],e.area)===0)return d;const g=lu(f[0],f[1],e.pixBuffer[Mi.ID_LOW24],e.area),p=lu(f[0],f[1],e.pixBuffer[Mi.ID_HIGH24],e.area);return d.attributeID=iV(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 y=nV(v);if(!u.has(y))u.set(y,{info:v,pixelCount:1,attributeIDs:[v.attributeID]});else{const m=u.get(y);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 ase={area:void 0,currentPass:-1,propColorValue:null,props:null,maximumPointId:0,maximumCellId:0,idOffset:1};function aV(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ase,r),qae.extend(t,e,r),e.propColorValue=[0,0,0],e.props=[],e.area||(e.area=[0,0,0,0]),Q.setGetArray(t,e,["area"],4),Q.setGet(t,e,["_renderer","currentPass","_openGLRenderWindow","maximumPointId","maximumCellId"]),Q.setGetArray(t,e,["propColorValue"],3),Q.moveToProtected(t,e,["renderer","openGLRenderWindow"]),Q.event(t,e,"event"),ose(t,e)}const sse=Q.newInstance(aV,"vtkOpenGLHardwareSelector");var Z4={newInstance:sse,extend:aV,...Jk},sV={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(y,m){var w=y[0],x=y[1],C=y[2],S=y[3];w+=(x&C|~x&S)+m[0]-680876936|0,w=(w<<7|w>>>25)+x|0,S+=(w&x|~w&C)+m[1]-389564586|0,S=(S<<12|S>>>20)+w|0,C+=(S&w|~S&x)+m[2]+606105819|0,C=(C<<17|C>>>15)+S|0,x+=(C&S|~C&w)+m[3]-1044525330|0,x=(x<<22|x>>>10)+C|0,w+=(x&C|~x&S)+m[4]-176418897|0,w=(w<<7|w>>>25)+x|0,S+=(w&x|~w&C)+m[5]+1200080426|0,S=(S<<12|S>>>20)+w|0,C+=(S&w|~S&x)+m[6]-1473231341|0,C=(C<<17|C>>>15)+S|0,x+=(C&S|~C&w)+m[7]-45705983|0,x=(x<<22|x>>>10)+C|0,w+=(x&C|~x&S)+m[8]+1770035416|0,w=(w<<7|w>>>25)+x|0,S+=(w&x|~w&C)+m[9]-1958414417|0,S=(S<<12|S>>>20)+w|0,C+=(S&w|~S&x)+m[10]-42063|0,C=(C<<17|C>>>15)+S|0,x+=(C&S|~C&w)+m[11]-1990404162|0,x=(x<<22|x>>>10)+C|0,w+=(x&C|~x&S)+m[12]+1804603682|0,w=(w<<7|w>>>25)+x|0,S+=(w&x|~w&C)+m[13]-40341101|0,S=(S<<12|S>>>20)+w|0,C+=(S&w|~S&x)+m[14]-1502002290|0,C=(C<<17|C>>>15)+S|0,x+=(C&S|~C&w)+m[15]+1236535329|0,x=(x<<22|x>>>10)+C|0,w+=(x&S|C&~S)+m[1]-165796510|0,w=(w<<5|w>>>27)+x|0,S+=(w&C|x&~C)+m[6]-1069501632|0,S=(S<<9|S>>>23)+w|0,C+=(S&x|w&~x)+m[11]+643717713|0,C=(C<<14|C>>>18)+S|0,x+=(C&w|S&~w)+m[0]-373897302|0,x=(x<<20|x>>>12)+C|0,w+=(x&S|C&~S)+m[5]-701558691|0,w=(w<<5|w>>>27)+x|0,S+=(w&C|x&~C)+m[10]+38016083|0,S=(S<<9|S>>>23)+w|0,C+=(S&x|w&~x)+m[15]-660478335|0,C=(C<<14|C>>>18)+S|0,x+=(C&w|S&~w)+m[4]-405537848|0,x=(x<<20|x>>>12)+C|0,w+=(x&S|C&~S)+m[9]+568446438|0,w=(w<<5|w>>>27)+x|0,S+=(w&C|x&~C)+m[14]-1019803690|0,S=(S<<9|S>>>23)+w|0,C+=(S&x|w&~x)+m[3]-187363961|0,C=(C<<14|C>>>18)+S|0,x+=(C&w|S&~w)+m[8]+1163531501|0,x=(x<<20|x>>>12)+C|0,w+=(x&S|C&~S)+m[13]-1444681467|0,w=(w<<5|w>>>27)+x|0,S+=(w&C|x&~C)+m[2]-51403784|0,S=(S<<9|S>>>23)+w|0,C+=(S&x|w&~x)+m[7]+1735328473|0,C=(C<<14|C>>>18)+S|0,x+=(C&w|S&~w)+m[12]-1926607734|0,x=(x<<20|x>>>12)+C|0,w+=(x^C^S)+m[5]-378558|0,w=(w<<4|w>>>28)+x|0,S+=(w^x^C)+m[8]-2022574463|0,S=(S<<11|S>>>21)+w|0,C+=(S^w^x)+m[11]+1839030562|0,C=(C<<16|C>>>16)+S|0,x+=(C^S^w)+m[14]-35309556|0,x=(x<<23|x>>>9)+C|0,w+=(x^C^S)+m[1]-1530992060|0,w=(w<<4|w>>>28)+x|0,S+=(w^x^C)+m[4]+1272893353|0,S=(S<<11|S>>>21)+w|0,C+=(S^w^x)+m[7]-155497632|0,C=(C<<16|C>>>16)+S|0,x+=(C^S^w)+m[10]-1094730640|0,x=(x<<23|x>>>9)+C|0,w+=(x^C^S)+m[13]+681279174|0,w=(w<<4|w>>>28)+x|0,S+=(w^x^C)+m[0]-358537222|0,S=(S<<11|S>>>21)+w|0,C+=(S^w^x)+m[3]-722521979|0,C=(C<<16|C>>>16)+S|0,x+=(C^S^w)+m[6]+76029189|0,x=(x<<23|x>>>9)+C|0,w+=(x^C^S)+m[9]-640364487|0,w=(w<<4|w>>>28)+x|0,S+=(w^x^C)+m[12]-421815835|0,S=(S<<11|S>>>21)+w|0,C+=(S^w^x)+m[15]+530742520|0,C=(C<<16|C>>>16)+S|0,x+=(C^S^w)+m[2]-995338651|0,x=(x<<23|x>>>9)+C|0,w+=(C^(x|~S))+m[0]-198630844|0,w=(w<<6|w>>>26)+x|0,S+=(x^(w|~C))+m[7]+1126891415|0,S=(S<<10|S>>>22)+w|0,C+=(w^(S|~x))+m[14]-1416354905|0,C=(C<<15|C>>>17)+S|0,x+=(S^(C|~w))+m[5]-57434055|0,x=(x<<21|x>>>11)+C|0,w+=(C^(x|~S))+m[12]+1700485571|0,w=(w<<6|w>>>26)+x|0,S+=(x^(w|~C))+m[3]-1894986606|0,S=(S<<10|S>>>22)+w|0,C+=(w^(S|~x))+m[10]-1051523|0,C=(C<<15|C>>>17)+S|0,x+=(S^(C|~w))+m[1]-2054922799|0,x=(x<<21|x>>>11)+C|0,w+=(C^(x|~S))+m[8]+1873313359|0,w=(w<<6|w>>>26)+x|0,S+=(x^(w|~C))+m[15]-30611744|0,S=(S<<10|S>>>22)+w|0,C+=(w^(S|~x))+m[6]-1560198380|0,C=(C<<15|C>>>17)+S|0,x+=(S^(C|~w))+m[13]+1309151649|0,x=(x<<21|x>>>11)+C|0,w+=(C^(x|~S))+m[4]-145523070|0,w=(w<<6|w>>>26)+x|0,S+=(x^(w|~C))+m[11]-1120210379|0,S=(S<<10|S>>>22)+w|0,C+=(w^(S|~x))+m[2]+718787259|0,C=(C<<15|C>>>17)+S|0,x+=(S^(C|~w))+m[9]-343485551|0,x=(x<<21|x>>>11)+C|0,y[0]=w+y[0]|0,y[1]=x+y[1]|0,y[2]=C+y[2]|0,y[3]=S+y[3]|0}function o(y){var m=[],w;for(w=0;w<64;w+=4)m[w>>2]=y.charCodeAt(w)+(y.charCodeAt(w+1)<<8)+(y.charCodeAt(w+2)<<16)+(y.charCodeAt(w+3)<<24);return m}function a(y){var m=[],w;for(w=0;w<64;w+=4)m[w>>2]=y[w]+(y[w+1]<<8)+(y[w+2]<<16)+(y[w+3]<<24);return m}function s(y){var m=y.length,w=[1732584193,-271733879,-1732584194,271733878],x,C,S,T,_,E;for(x=64;x<=m;x+=64)i(w,o(y.substring(x-64,x)));for(y=y.substring(x-64),C=y.length,S=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],x=0;x>2]|=y.charCodeAt(x)<<(x%4<<3);if(S[x>>2]|=128<<(x%4<<3),x>55)for(i(w,S),x=0;x<16;x+=1)S[x]=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(w,S),w}function c(y){var m=y.length,w=[1732584193,-271733879,-1732584194,271733878],x,C,S,T,_,E;for(x=64;x<=m;x+=64)i(w,a(y.subarray(x-64,x)));for(y=x-64>2]|=y[x]<<(x%4<<3);if(S[x>>2]|=128<<(x%4<<3),x>55)for(i(w,S),x=0;x<16;x+=1)S[x]=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(w,S),w}function l(y){var m="",w;for(w=0;w<4;w+=1)m+=n[y>>w*8+4&15]+n[y>>w*8&15];return m}function f(y){var m;for(m=0;mS?new ArrayBuffer(0):(T=S-C,_=new ArrayBuffer(T),E=new Uint8Array(_),b=new Uint8Array(this,C,T),E.set(b),_)}}();function u(y){return/[\u0080-\uFFFF]/.test(y)&&(y=unescape(encodeURIComponent(y))),y}function d(y,m){var w=y.length,x=new ArrayBuffer(w),C=new Uint8Array(x),S;for(S=0;S>2]|=m.charCodeAt(x)<<(x%4<<3);return this._finish(C,w),S=f(this._hash),y&&(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(y){return this._buff=y.buff,this._length=y.length,this._hash=y.hash,this},v.prototype.destroy=function(){delete this._hash,delete this._buff,delete this._length},v.prototype._finish=function(y,m){var w=m,x,C,S;if(y[w>>2]|=128<<(w%4<<3),w>55)for(i(this._hash,y),w=0;w<16;w+=1)y[w]=0;x=this._length*8,x=x.toString(16).match(/(.*?)(.{0,8})$/),C=parseInt(x[2],16),S=parseInt(x[1],16)||0,y[14]=C,y[15]=S,i(this._hash,y)},v.hash=function(y,m){return v.hashBinary(u(y),m)},v.hashBinary=function(y,m){var w=s(y),x=f(w);return m?p(x):x},v.ArrayBuffer=function(){this.reset()},v.ArrayBuffer.prototype.append=function(y){var m=g(this._buff.buffer,y),w=m.length,x;for(this._length+=y.byteLength,x=64;x<=w;x+=64)i(this._hash,a(m.subarray(x-64,x)));return this._buff=x-64>2]|=m[C]<<(C%4<<3);return this._finish(x,w),S=f(this._hash),y&&(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 y=v.prototype.getState.call(this);return y.buff=h(y.buff),y},v.ArrayBuffer.prototype.setState=function(y){return y.buff=d(y.buff,!0),v.prototype.setState.call(this,y)},v.ArrayBuffer.prototype.destroy=v.prototype.destroy,v.ArrayBuffer.prototype._finish=v.prototype._finish,v.ArrayBuffer.hash=function(y,m){var w=c(new Uint8Array(y)),x=f(w);return m?p(x):x},v})})(sV);var cse=sV.exports;const lse=Vl(cse),use=["lastShaderProgramBound","context","_openGLRenderWindow"];function fse(t,e){e.classHierarchy.push("vtkShaderCache"),t.replaceShaderValues=(r,n,i)=>{let o=n;i.length>0&&(o=Le.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=Le.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=Le.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=Le.substitute(l,"varying","out").result,o=Le.substitute(o,"varying","in").result;let u="",d=0;for(;o.includes(`gl_FragData[${d}]`);)o=Le.substitute(o,`gl_FragData\\[${d}\\]`,`fragOutput${d}`).result,u+=`layout(location = ${d}) out vec4 fragOutput${d}; -`,d++;o=Le.substitute(o,"//VTK::Output::Dec",u).result}const f=Le.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=lse.hash(o);if(!(a in e.shaderPrograms)){const s=Le.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 dse={lastShaderProgramBound:null,shaderPrograms:null,context:null};function cV(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,dse,r),e.shaderPrograms={},Q.obj(t,e),Q.setGet(t,e,use),Q.moveToProtected(t,e,["openGLRenderWindow"]),fse(t,e)}const hse=Q.newInstance(cV,"vtkShaderCache");var gse={newInstance:hse,extend:cV};const{vtkErrorMacro:pse}=Q;function mse(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,vse,r),Q.obj(t,e),e.textureUnits=[],Q.get(t,e,["numberOfTextureUnits"]),Q.setGet(t,e,["context"]),mse(t,e)}const yse=Q.newInstance(lV,"vtkOpenGLTextureUnitManager");var wse={newInstance:yse,extend:lV};function xse(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=()=>{Q.vtkErrorMacro("not implemented")},t.getPixelData=(r,n,i,o)=>{Q.vtkErrorMacro("not implemented")},t.createSelector=()=>{Q.vtkErrorMacro("not implemented")}}const Cse={size:void 0,selector:void 0};function uV(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Cse,r),e.size||(e.size=[300,300]),Q.getArray(t,e,["size"],2),Q.get(t,e,["selector"]),gr.extend(t,e,r),xse(t,e)}const Sse=Q.newInstance(uV,"vtkRenderWindowViewNode");var Tse={newInstance:Sse,extend:uV};const _se="__getUnderlyingContext";function Ese(){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===_se)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:Z6,vtkErrorMacro:Q6}=Q,bse={position:"absolute",top:0,left:0,width:"100%",height:"100%"},Dse=["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 aa(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 M5=0;const ax=[];function Ise(){M5++,ax.forEach(t=>t(M5))}function Mse(){M5--,ax.forEach(t=>t(M5))}function Ose(t){ax.push(t)}function Pse(t){return ax.pop()}function e9(t){t.preventDefault()}function Rse(t,e){e.classHierarchy.push("vtkOpenGLRenderWindow");let r;function n(){return r||(r=Ese()),r}t.getViewNodeFactory=()=>e.myFactory,e.canvas.addEventListener("webglcontextlost",e9,!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&&Ise(),e.textureUnitManager=wse.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&&Q6("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,Z6("using webgl2"))),d||(Z6("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=J4.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){Q6("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 xn.CHAR:case xn.SIGNED_CHAR:case xn.UNSIGNED_CHAR:return 1;case d:case h:case xn.UNSIGNED_SHORT:case xn.SHORT:case xn.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 xn.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&&xn.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&&xn.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 xn.UNSIGNED_SHORT:case xn.SHORT:case xn.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(x=>{if(x.getContainer){const S=x.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,y)=>{const m=t.onImageReady(w=>{var x;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(C=>{let{restoreParamsFn:S,arg:T}=C;return S(T)}),t.traverseAllPasses(),e.el.removeChild(e._screenshot.placeHolder),e._screenshot.placeHolder.remove(),e._screenshot=null),v(w);else{const C=document.createElement("img");if(C.style=bse,C.src=w,e._screenshot.placeHolder=e.el.appendChild(C),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,t.modified(),d){const S=d!==!0;e._screenshot.cameras=e.renderable.getRenderers().map(T=>{const _=T.getActiveCamera(),E=_.get("focalPoint","position","parallelScale");return{resetCameraArgs:S?{renderer:T}:void 0,resetCameraFn:S?d:T.resetCamera,restoreParamsFn:_.set,arg:JSON.parse(JSON.stringify(E))}}),e._screenshot.cameras.forEach(T=>{let{resetCameraFn:_,resetCameraArgs:E}=T;return _(E)})}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"),y=[["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&&aa(u,u.RGBA,u.UNSIGNED_BYTE)?"RGBA":"",d&&aa(u,u.RGB,u.UNSIGNED_BYTE)?"RGB":"",d&&aa(u,u.LUMINANCE,u.UNSIGNED_BYTE)?"LUMINANCE":"",d&&aa(u,u.ALPHA,u.UNSIGNED_BYTE)?"ALPHA":"",d&&aa(u,u.LUMINANCE_ALPHA,u.UNSIGNED_BYTE)?"LUMINANCE_ALPHA":""].join(" ")],["Supported Formats for Half Float Render Targets","HALF FLOAT RENDER TARGET FORMATS",[h&&aa(u,u.RGBA,h.HALF_FLOAT_OES)?"RGBA":"",h&&aa(u,u.RGB,h.HALF_FLOAT_OES)?"RGB":"",h&&aa(u,u.LUMINANCE,h.HALF_FLOAT_OES)?"LUMINANCE":"",h&&aa(u,u.ALPHA,h.HALF_FLOAT_OES)?"ALPHA":"",h&&aa(u,u.LUMINANCE_ALPHA,h.HALF_FLOAT_OES)?"LUMINANCE_ALPHA":""].join(" ")],["Supported Formats for Full Float Render Targets","FLOAT RENDER TARGET FORMATS",[d&&aa(u,u.RGBA,u.FLOAT)?"RGBA":"",d&&aa(u,u.RGB,u.FLOAT)?"RGB":"",d&&aa(u,u.LUMINANCE,u.FLOAT)?"LUMINANCE":"",d&&aa(u,u.ALPHA,u.FLOAT)?"ALPHA":"",d&&aa(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(;y.length;){const[w,x,C]=y.pop();x&&(m[x]={label:w,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=Z4.newInstance();return u.setOpenGLRenderWindow(t),u};function c(){e.canvas.removeEventListener("webglcontextlost",e9),e.canvas.removeEventListener("webglcontextrestored",t.restoreContext)}t.delete=Q.chain(()=>{e.context&&Mse(),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};Dse.forEach(u=>{t[u]=function(){return e.rootOpenGLRenderWindow?e.rootOpenGLRenderWindow[u](...arguments):f[u](...arguments)}})}const Ase={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 fV(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Ase,r),Tse.extend(t,e,r),e.canvas||(e.canvas=document.createElement("canvas"),e.canvas.style.width="100%"),e.selector||(e.selector=Z4.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=Qee.newInstance(),e.shaderCache=gse.newInstance(),e.shaderCache.setOpenGLRenderWindow(t),e.renderPasses[0]=zae.newInstance(),Q.get(t,e,["shaderCache","textureUnitManager","webgl2","useBackgroundImage","activeFramebuffer","rootOpenGLRenderWindow"]),Q.setGet(t,e,["initialized","context","context2D","canvas","renderPasses","notifyStartCaptureImage","defaultToWebgl2","cursor","useOffScreen"]),Q.setGetArray(t,e,["size"],2),Q.event(t,e,"imageReady"),Q.event(t,e,"windowResizeEvent"),Rse(t,e)}const Q4=Q.newInstance(fV,"vtkOpenGLRenderWindow");jk("WebGL",Q4);var Lse={newInstance:Q4,extend:fV,pushMonitorGLContextCount:Ose,popMonitorGLContextCount:Pse};Ri("vtkRenderWindow",Q4);function Nse(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(),zr(e.keyMatrices.mcwc,e.renderable.getMatrix()),Mn(e.keyMatrices.mcwc,e.keyMatrices.mcwc),e.renderable.getIsIdentity()?Ns(e.keyMatrices.normalMatrix):(Xm(e.keyMatrices.normalMatrix,e.keyMatrices.mcwc),Pg(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix),Jw(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix)),e.keyMatrixTime.modified()),e.keyMatrices)}const kse={context:null,keyMatrixTime:null,keyMatrices:null,activeTextures:null};function dV(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,kse,r),gr.extend(t,e,r),e.keyMatrixTime={},xr(e.keyMatrixTime,{mtime:0}),e.keyMatrices={normalMatrix:Ns(new Float64Array(9)),mcwc:Lt(new Float64Array(16))},vi(t,e,["context"]),Qo(t,e,["activeTextures"]),Nse(t,e)}const hV=jn(dV);var Vse={newInstance:hV,extend:dV};Ri("vtkActor",hV);function Fse(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,Use,r),gr.extend(t,e,r),vi(t,e,["context"]),Qo(t,e,["activeTextures"]),Fse(t,e)}const pV=jn(gV);var Bse={newInstance:pV,extend:gV};Ri("vtkActor2D",pV);function Gse(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,Wse,r),Q.obj(t,e),Q.algo(t,e,1,0),e.clippingPlanes||(e.clippingPlanes=[]),Gse(t,e)}var mV={extend:$se};function zse(t,e){t.getBounds=()=>(Q.vtkErrorMacro("vtkAbstractMapper3D.getBounds - NOT IMPLEMENTED"),Uf()),t.getCenter=()=>{var n;const r=t.getBounds();return e.center=ar.isValid(r)?ar.getCenter(r):null,(n=e.center)==null?void 0:n.slice()},t.getLength=()=>{const r=t.getBounds();return ar.getDiagonalLength(r)}}const jse=t=>({bounds:[...ar.INIT_BOUNDS],center:[0,0,0],viewSpecificProperties:{},...t});function Hse(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,jse(r)),mV.extend(t,e,r),Q.setGet(t,e,["viewSpecificProperties"]),zse(t,e)}var e8={extend:Hse};const{vtkErrorMacro:t9}=Q,n9=0,r9=1,jC=2;function Kse(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+r9+1.5:(i=(o+n.shift)*n.scale,i=i{let o=0;m5(r)?o=Math.floor(i.maxIndex+1.5+jC):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+jC);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===CT.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,Td(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+n9)*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+r9)*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+jC)*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 Xse={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 vV(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Xse,r),Yw.extend(t,e,r),e.table||(e.table=[]),e.buildTime={},Q.obj(e.buildTime),e.opaqueFlagBuildTime={},Q.obj(e.opaqueFlagBuildTime,{mtime:0}),e.insertTime={},Q.obj(e.insertTime,{mtime:0}),Q.get(t,e,["buildTime"]),Q.setGet(t,e,["numberOfColors","useAboveRangeColor","useBelowRangeColor"]),Q.setArray(t,e,["alphaRange","hueRange","saturationRange","valueRange"],2),Q.setArray(t,e,["nanColor","belowRangeColor","aboveRangeColor"],4),Q.getArray(t,e,["hueRange","saturationRange","valueRange","alphaRange","nanColor","belowRangeColor","aboveRangeColor"]),Kse(t,e)}const qse=Q.newInstance(vV,"vtkLookupTable");var O5={newInstance:qse,extend:vV};const{FieldAssociations:i9}=Ag,{staticOffsetAPI:Yse,otherStaticMethods:Jse}=rx,{ColorMode:r2,ScalarMode:cd,GetArray:HC}=qw,{VectorMode:Zse}=p4,{VtkDataTypes:Qse}=Nt;function hp(t){return()=>Q.vtkErrorMacro(`vtkMapper::${t} - NOT IMPLEMENTED`)}function ece(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 tce(t,e){return t[0]+e[0]*(t[1]+e[1]*t[2])}function o9(t,e,r){const n=Math.floor(e),i=n%(2*r[0]);let o,a;i=w,C=i[2]<=1?2:3,S=Nt.newInstance({numberOfComponents:C,values:new Float32Array(m*C)}),T=S.getData(),_=[0,0,0];o9(_,n+2,i);let E=0,b=0;const D=[.5,.5,.5];for(let P=0;Pn&&(L=n+1),o9(D,L,i)}else{D[1]=.49;const L=(M-h)*g;L>1e3?D[0]=1e3:L<-1e3?D[0]=-1e3:D[0]=L}for(let L=0;L{const r=t.getInputData();return r?(e.static||t.update(),e.bounds=r.getBounds()):e.bounds=Uf(),e.bounds},t.setForceCompileOnly=r=>{e.forceCompileOnly=r},t.setSelectionWebGLIdsToVTKIds=r=>{e.selectionWebGLIdsToVTKIds=r},t.createDefaultLookupTable=()=>{e.lookupTable=O5.newInstance()},t.getColorModeAsString=()=>Q.enumToString(r2,e.colorMode),t.setColorModeToDefault=()=>t.setColorMode(0),t.setColorModeToMapScalars=()=>t.setColorMode(1),t.setColorModeToDirectScalars=()=>t.setColorMode(2),t.getScalarModeAsString=()=>Q.enumToString(cd,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===cd.DEFAULT)s=r.getPointData().getScalars(),s||(s=r.getCellData().getScalars(),c=!0);else if(n===cd.USE_POINT_DATA)s=r.getPointData().getScalars();else if(n===cd.USE_CELL_DATA)s=r.getCellData().getScalars(),c=!0;else if(n===cd.USE_POINT_FIELD_DATA){const l=r.getPointData();i===HC.BY_ID?s=l.getArrayByIndex(o):s=l.getArrayByName(a)}else if(n===cd.USE_CELL_FIELD_DATA){const l=r.getCellData();c=!0,i===HC.BY_ID?s=l.getArrayByIndex(o):s=l.getArrayByName(a)}else if(n===cd.USE_FIELD_DATA){const l=r.getFieldData();i===HC.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&&O5.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,y=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)]:[y,2,1],w=m[0]*m[1]*m[2],x=new Float64Array(w);x.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=nce(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!==r2.DIRECT_SCALARS?!0:!(!e.interpolateScalarsBeforeMapping||e.lookupTable&&e.lookupTable.getIndexedLookup()||!r||e.colorMode===r2.DEFAULT&&r.getDataType()===Qse.UNSIGNED_CHAR||e.colorMode===r2.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=hp("AcquireInvertibleLookupTable"),t.valueToColor=hp("ValueToColor"),t.colorToValue=hp("ColorToValue"),t.useInvertibleColorFor=hp("UseInvertibleColorFor"),t.clearInvertibleColor=hp("ClearInvertibleColor"),t.processSelectorPixelBuffers=(r,n)=>{if(!r||!e.selectionWebGLIdsToVTKIds||!e.populateSelectionSettings)return;const i=r.getRawPixelBuffer(la.ID_LOW24),o=r.getRawPixelBuffer(la.ID_HIGH24),a=r.getCurrentPass(),s=r.getFieldAssociation();let c=null;s===i9.FIELD_ASSOCIATION_POINTS?c=e.selectionWebGLIdsToVTKIds.points:s===i9.FIELD_ASSOCIATION_CELLS&&(c=e.selectionWebGLIdsToVTKIds.cells),c&&n.forEach(l=>{if(a===la.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(la.ID_LOW24);d[l]=u&255,d[l+1]=(u&65280)>>8,d[l+2]=(u&16711680)>>16}else if(a===la.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(la.ID_HIGH24);d[l]=(u&4278190080)>>24}})}}const ice={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 yV(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ice,r),e8.extend(t,e,r),Q.get(t,e,["areScalarsMappedFromCells","colorCoordinates","colorMapColors","colorTextureMap","numberOfColorsInRange","selectionWebGLIdsToVTKIds"]),Q.setGet(t,e,["colorByArrayName","arrayAccessMode","colorMode","fieldDataTupleId","interpolateScalarsBeforeMapping","lookupTable","populateSelectionSettings","renderTime","scalarMode","scalarVisibility","static","useLookupTableScalarRange","customShaderAttributes"]),Q.setGetArray(t,e,["scalarRange"],2),rx.implementCoincidentTopologyMethods(t,e),rce(t,e)}const oce=Q.newInstance(yV,"vtkMapper");var Xo={newInstance:oce,extend:yV,...Yse,...Jse,...qw};const{FieldAssociations:KC}=Ag,{primTypes:Ji}=Ul,{Representation:L0,Shading:s9}=w0,{ScalarMode:i2}=Xo,{Filter:c9,Wrap:l9}=Vr,{vtkErrorMacro:ld}=Ao,ace={type:"StartEvent"},sce={type:"EndEvent"},{CoordinateSystem:cce}=Ym;function lce(t){const e=t.getSelector();return e?e.getCurrentPass():la.MIN_KNOWN_PASS-1}function uce(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=Ji.Start;a{n.Vertex=q4,n.Fragment=Jm,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=Le.substitute(a,"//VTK::Color::Dec",["attribute vec4 scalarColor;","varying vec4 vertexColorVSOutput;"]).result,a=Le.substitute(a,"//VTK::Color::Impl",["vertexColorVSOutput = scalarColor;"]).result,s=Le.substitute(s,"//VTK::Color::Dec",["in vec4 vertexColorVSOutput[];","out vec4 vertexColorGSOutput;"]).result,s=Le.substitute(s,"//VTK::Color::Impl",["vertexColorGSOutput = vertexColorVSOutput[i];"]).result),e.lastBoundBO.getCABO().getColorComponents()!==0&&!e.drawingEdges?c=Le.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=Le.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=Le.substitute(c,"//VTK::Color::Impl",u).result),c=Le.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=Le.substitute(a,"//VTK::Light::Impl",[" gl_FragData[0] = vec4(ambientColor * ambient + diffuseColor * diffuse, opacity);"," //VTK::Light::Impl"],!1).result;break;case 1:a=Le.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=Le.substitute(a,"//VTK::Light::Impl",f,!1).result;break;default:ld("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=Le.substitute(s,"//VTK::Normal::Dec",["attribute vec3 normalMC;","uniform mat3 normalMatrix;","varying vec3 normalVCVSOutput;"]).result,s=Le.substitute(s,"//VTK::Normal::Impl",["normalVCVSOutput = normalMatrix * normalMC;"]).result,c=Le.substitute(c,"//VTK::Normal::Dec",["in vec3 normalVCVSOutput[];","out vec3 normalVCGSOutput;"]).result,c=Le.substitute(c,"//VTK::Normal::Impl",["normalVCGSOutput = normalVCVSOutput[i];"]).result,l=Le.substitute(l,"//VTK::Normal::Dec",["varying vec3 normalVCVSOutput;"]).result,l=Le.substitute(l,"//VTK::Normal::Impl",["vec3 normalVCVSOutput = normalize(normalVCVSOutput);"," if (gl_FrontFacing == false) { normalVCVSOutput = -normalVCVSOutput; }"]).result):e.haveCellNormals?(l=Le.substitute(l,"//VTK::Normal::Dec",["uniform mat3 normalMatrix;","uniform samplerBuffer textureN;"]).result,l=Le.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=Le.substitute(l,"//VTK::UniformFlow::Impl",[" vec3 fdx = dFdx(vertexVC.xyz);"," vec3 fdy = dFdy(vertexVC.xyz);"," //VTK::UniformFlow::Impl"]).result,l=Le.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=Le.substitute(l,"//VTK::Normal::Dec",["uniform int cameraParallel;"]).result,l=Le.substitute(l,"//VTK::UniformFlow::Impl",[" vec3 fdx = dFdx(vertexVC.xyz);"," vec3 fdy = dFdy(vertexVC.xyz);"," //VTK::UniformFlow::Impl"]).result,l=Le.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=Le.substitute(a,"//VTK::PositionVC::Dec",["varying vec4 vertexVCVSOutput;"]).result,a=Le.substitute(a,"//VTK::PositionVC::Impl",["vertexVCVSOutput = MCVCMatrix * vertexMC;"," gl_Position = MCPCMatrix * vertexMC;"]).result,a=Le.substitute(a,"//VTK::Camera::Dec",["uniform mat4 MCPCMatrix;","uniform mat4 MCVCMatrix;"]).result,s=Le.substitute(s,"//VTK::PositionVC::Dec",["in vec4 vertexVCVSOutput[];","out vec4 vertexVCGSOutput;"]).result,s=Le.substitute(s,"//VTK::PositionVC::Impl",["vertexVCGSOutput = vertexVCVSOutput[i];"]).result,c=Le.substitute(c,"//VTK::PositionVC::Dec",["varying vec4 vertexVCVSOutput;"]).result,c=Le.substitute(c,"//VTK::PositionVC::Impl",["vec4 vertexVC = vertexVCVSOutput;"]).result):(a=Le.substitute(a,"//VTK::Camera::Dec",["uniform mat4 MCPCMatrix;"]).result,a=Le.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=Le.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=Le.substitute(a,"//VTK::TCoord::Dec","attribute vec2 tcoordMC; varying vec2 tcoordVCVSOutput;").result,s=Le.substitute(s,"//VTK::TCoord::Dec",["in vec2 tcoordVCVSOutput[];","out vec2 tcoordVCGSOutput;"]).result,s=Le.substitute(s,"//VTK::TCoord::Impl","tcoordVCGSOutput = tcoordVCVSOutput[i];").result,c=Le.substitute(c,"//VTK::TCoord::Dec",["varying vec2 tcoordVCVSOutput;","uniform sampler2D texture1;"]).result,l&&l.length>=1)switch(f){case 1:c=Le.substitute(c,"//VTK::TCoord::Impl",[" vec4 tcolor = texture2D(texture1, tcoordVCVSOutput);"," ambientColor = ambientColor*tcolor.r;"," diffuseColor = diffuseColor*tcolor.r;"]).result;break;case 2:c=Le.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=Le.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=Le.substitute(a,"//VTK::TCoord::Dec","attribute vec3 tcoordMC; varying vec3 tcoordVCVSOutput;").result,s=Le.substitute(s,"//VTK::TCoord::Dec",["in vec3 tcoordVCVSOutput[];","out vec3 tcoordVCGSOutput;"]).result,s=Le.substitute(s,"//VTK::TCoord::Impl","tcoordVCGSOutput = tcoordVCVSOutput[i];").result,c=Le.substitute(c,"//VTK::TCoord::Dec",["varying vec3 tcoordVCVSOutput;","uniform samplerCube texture1;"]).result,f){case 1:c=Le.substitute(c,"//VTK::TCoord::Impl",[" vec4 tcolor = textureCube(texture1, tcoordVCVSOutput);"," ambientColor = ambientColor*tcolor.r;"," diffuseColor = diffuseColor*tcolor.r;"]).result;break;case 2:c=Le.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=Le.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=Le.substitute(a,"//VTK::Clip::Dec",["uniform int numClipPlanes;",`uniform vec4 clipPlanes[${c}];`,`varying float clipDistancesVSOutput[${c}];`]).result,a=Le.substitute(a,"//VTK::Clip::Impl",[`for (int planeNum = 0; planeNum < ${c}; planeNum++)`," {"," if (planeNum >= numClipPlanes)"," {"," break;"," }"," clipDistancesVSOutput[planeNum] = dot(clipPlanes[planeNum], vertexMC);"," }"]).result,s=Le.substitute(s,"//VTK::Clip::Dec",["uniform int numClipPlanes;",`varying float clipDistancesVSOutput[${c}];`]).result,s=Le.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()==Vc.PolygonOffset||a.getEdgeVisibility()&&a.getRepresentation()===L0.SURFACE){const c=e.lastBoundBO.getPrimitiveType();c===Ji.Points||a.getRepresentation()===L0.POINTS?o=e.renderable.getCoincidentTopologyPointOffsetParameter():c===Ji.Lines||a.getRepresentation()===L0.WIREFRAME?o=e.renderable.getCoincidentTopologyLineOffsetParameters():(c===Ji.Tris||c===Ji.TriStrips)&&(o=e.renderable.getCoincidentTopologyPolygonOffsetParameters()),(c===Ji.TrisEdges||c===Ji.TriStripsEdges)&&(o=e.renderable.getCoincidentTopologyPolygonOffsetParameters(),o.factor/=2,o.offset/=2)}const s=e._openGLRenderer.getSelector();return s&&s.getFieldAssociation()===KC.FIELD_ASSOCIATION_POINTS&&(o.offset-=2),o},t.replaceShaderPicking=(n,i,o)=>{let a=n.Fragment,s=n.Vertex;if(a=Le.substitute(a,"//VTK::Picking::Dec",["uniform int picking;","//VTK::Picking::Dec"]).result,!!e._openGLRenderer.getSelector()){switch((e.lastSelectionState===la.ID_LOW24||e.lastSelectionState===la.ID_HIGH24)&&(s=Le.substitute(s,"//VTK::Picking::Dec",[`flat out int vertexIDVSOutput; -`,`uniform int VertexIDOffset; -`]).result,s=Le.substitute(s,"//VTK::Picking::Impl",` vertexIDVSOutput = gl_VertexID + VertexIDOffset; -`).result,a=Le.substitute(a,"//VTK::Picking::Dec",`flat in int vertexIDVSOutput; -`).result,a=Le.substitute(a,"//VTK::Picking::Impl",[" int idx = vertexIDVSOutput;","//VTK::Picking::Impl"]).result),e.lastSelectionState){case la.ID_LOW24:a=Le.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 la.ID_HIGH24:a=Le.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=Le.substitute(a,"//VTK::Picking::Dec","uniform vec3 mapperIndex;").result,a=Le.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=Le.substitute(a,"//VTK::ZBuffer::Dec","uniform int depthRequest;").result,a=Le.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()===s9.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 w=i.getLightsByReference();for(let x=0;x0&&(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 y=e.lastBoundBO.getReferenceByName("lastLightComplexity"),m=e.lastBoundBO.getReferenceByName("lastLightCount");return(y!==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)||ld("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)||ld("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)||ld(`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)||ld("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)||ld("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?zr(e.tmpMat4,o.getMatrix()):o.getMatrix();u&&(Mn(d,d),Ln(d,d,u),Mn(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 y=h.getDirection(),m=i.getActiveCamera().getViewMatrix(),w=[...y];h.lightTypeIsSceneLight()&&(w[0]=m[0]*y[0]+m[1]*y[1]+m[2]*y[2],w[1]=m[4]*y[0]+m[5]*y[1]+m[6]*y[2],w[2]=m[8]*y[0]+m[9]*y[1]+m[10]*y[2],i0(w)),e.lightDirection[0]=w[0],e.lightDirection[1]=w[1],e.lightDirection[2]=w[2],i0(e.lightDirection),s.setUniform3fArray(`lightColor${c}`,e.lightColor),s.setUniform3fArray(`lightDirectionVC${c}`,e.lightDirection),c++}}if(a<3)return;const u=i.getActiveCamera().getViewMatrix();Mn(u,u),c=0;for(let d=0;d0){const p=h.getTransformedPosition(),v=new Float64Array(3);Gt(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()===cce.DISPLAY){const p=e._openGLRenderer.getTiledSizeAndOrigin();Lt(e.tmpMat4),e.tmpMat4[0]=2/p.usize,e.tmpMat4[12]=-1,e.tmpMat4[5]=2/p.vsize,e.tmpMat4[13]=-1,Ln(e.tmpMat4,e.tmpMat4,d),a.setUniformMatrix("MCPCMatrix",e.tmpMat4)}else a.setUniformMatrix("MCPCMatrix",r([s.wcpc,g.mcwc,d],tm,e.tmpMat4));a.isUniformUsed("MCVCMatrix")&&a.setUniformMatrix("MCVCMatrix",r([s.wcvc,g.mcwc,d],tm,e.tmpMat4)),a.isUniformUsed("normalMatrix")&&a.setUniformMatrix3x3("normalMatrix",r([s.normalMatrix,g.normalMatrix],vQ,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()===KC.FIELD_ASSOCIATION_POINTS&&(e.pointPicking=!0)},t.renderPieceStart=(n,i)=>{e.primitiveIDOffset=0,e.vertexIDOffset=0;const o=lce(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===L0.SURFACE,s=e._openGLRenderer.getSelector(),c=s&&s.getFieldAssociation()===KC.FIELD_ASSOCIATION_POINTS&&(e.lastSelectionState===la.ID_LOW24||e.lastSelectionState===la.ID_HIGH24);for(let l=Ji.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(ace),e.renderable.getStatic()||e.renderable.update(),e.currentInput=e.renderable.getInputData(),t.invokeEvent(sce),!e.currentInput){ld("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()){Og(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===i2.USE_CELL_DATA||s===i2.USE_CELL_FIELD_DATA||s===i2.USE_FIELD_DATA||!o.getPointData().getScalars())&&s!==i2.USE_POINT_FIELD_DATA&&a&&(e.haveCellScalars=!0);let c=i.getProperty().getInterpolation()!==s9.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=Vr.newInstance({resizable:!0}));const h=e.internalColorTexture;h.setMinificationFilter(c9.NEAREST),h.setMagnificationFilter(c9.NEAREST),h.setWrapS(l9.CLAMP_TO_EDGE),h.setWrapT(l9.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(y=>o.getPointData().getArrayByName(y))};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===L0.SURFACE;for(let y=Ji.Start;y{let n=0;return e.primitives.forEach(i=>{n+=i.getAllocatedGPUMemoryInBytes()}),n}}const fce={context:null,VBOBuildTime:0,VBOBuildString:null,primitives:null,primTypes:null,shaderRebuildString:null,tmpMat4:null,ambientColor:[],diffuseColor:[],specularColor:[],lightColor:[],lightDirection:[],lastHaveSeenDepthRequest:!1,haveSeenDepthRequest:!1,lastSelectionState:la.MIN_KNOWN_PASS-1,selectionStateChanged:null,selectionWebGLIdsToVTKIds:null,pointPicking:!1};function wV(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,fce,r),gr.extend(t,e,r),Ol.implementReplaceShaderCoincidentOffset(t,e,r),Ol.implementBuildShadersWithReplacements(t,e,r),e.primitives=[],e.primTypes=Ji,e.tmpMat3=Ns(new Float64Array(9)),e.tmpMat4=Lt(new Float64Array(16));for(let n=Ji.Start;n{if(t.invokeEvent(gce),e.renderable.getStatic()||e.renderable.update(),e.currentInput=e.renderable.getInputData(1),t.invokeEvent(pce),!e.currentInput){gp("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],y=i[10],m=i[11],w=i[12],x=i[13],C=i[14],S=i[15];let T=o[a],_=o[a+1],E=o[a+2],b=o[a+3];n[0]=T*s+_*u+E*p+b*w,n[1]=T*c+_*d+E*v+b*x,n[2]=T*l+_*h+E*y+b*C,n[3]=T*f+_*g+E*m+b*S,T=o[a+4],_=o[a+5],E=o[a+6],b=o[a+7],n[4]=T*s+_*u+E*p+b*w,n[5]=T*c+_*d+E*v+b*x,n[6]=T*l+_*h+E*y+b*C,n[7]=T*f+_*g+E*m+b*S,T=o[a+8],_=o[a+9],E=o[a+10],b=o[a+11],n[8]=T*s+_*u+E*p+b*w,n[9]=T*c+_*d+E*v+b*x,n[10]=T*l+_*h+E*y+b*C,n[11]=T*f+_*g+E*m+b*S,T=o[a+12],_=o[a+13],E=o[a+14],b=o[a+15],n[12]=T*s+_*u+E*p+b*w,n[13]=T*c+_*d+E*v+b*x,n[14]=T*l+_*h+E*y+b*C,n[15]=T*f+_*g+E*m+b*S},t.replaceShaderNormal=(n,i,o)=>{if(e.hardwareSupport&&e.lastBoundBO.getReferenceByName("lastLightComplexity")>0){let s=n.Vertex;e.lastBoundBO.getCABO().getNormalOffset()&&(s=Le.substitute(s,"//VTK::Normal::Dec",["attribute vec3 normalMC;","attribute mat3 gNormal;","uniform mat3 normalMatrix;","varying vec3 normalVCVSOutput;"]).result,s=Le.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=Le.substitute(a,"//VTK::Color::Dec",["attribute vec4 gColor;","varying vec4 vertexColorVSOutput;"]).result,a=Le.substitute(a,"//VTK::Color::Impl",["vertexColorVSOutput = gColor;"]).result,s=Le.substitute(s,"//VTK::Color::Dec",["in vec4 vertexColorVSOutput[];","out vec4 vertexColorGSOutput;"]).result,s=Le.substitute(s,"//VTK::Color::Impl",["vertexColorGSOutput = vertexColorVSOutput[i];"]).result,u=u.concat([" diffuseColor = vertexColorVSOutput.rgb;"," ambientColor = vertexColorVSOutput.rgb;"," opacity = opacity*vertexColorVSOutput.a;"])),c=Le.substitute(c,"//VTK::Color::Impl",u).result,c=Le.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=Le.substitute(a,"//VTK::PositionVC::Impl",["vec4 gVertexMC = gMatrix * vertexMC;","vertexVCVSOutput = MCVCMatrix * gVertexMC;"," gl_Position = MCPCMatrix * gVertexMC;"]).result,a=Le.substitute(a,"//VTK::Camera::Dec",["attribute mat4 gMatrix;","uniform mat4 MCPCMatrix;","uniform mat4 MCVCMatrix;"]).result):(a=Le.substitute(a,"//VTK::Camera::Dec",["attribute mat4 gMatrix;","uniform mat4 MCPCMatrix;"]).result,a=Le.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=Le.substitute(s,"//VTK::Picking::Dec",["attribute vec3 mapperIndexVS;","varying vec3 mapperIndexVSOutput;"]).result,s=Le.substitute(s,"//VTK::Picking::Impl"," mapperIndexVSOutput = mapperIndexVS;").result,n.Vertex=s,a=Le.substitute(a,"//VTK::Picking::Dec",["varying vec3 mapperIndexVSOutput;","uniform vec3 mapperIndex;","uniform int picking;"]).result,a=Le.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],y=d[1],m=d[2],w=d[3],x=d[4],C=d[5],S=d[6],T=d[7],_=d[8],E=h[g],b=h[g+1],D=h[g+2],I=h[g+3],P=h[g+4],M=h[g+5],L=h[g+6],B=h[g+7],j=h[g+8];p[0]=E*v+b*w+D*S,p[1]=E*y+b*x+D*T,p[2]=E*m+b*C+D*_,p[3]=I*v+P*w+M*S,p[4]=I*y+P*x+M*T,p[5]=I*m+P*C+M*_,p[6]=L*v+B*w+j*S,p[7]=L*y+B*x+j*T,p[8]=L*m+B*C+j*_,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===dce.SURFACE,c=e.openGLCamera.getKeyMatrices(n),l=e.openGLActor.getKeyMatrices();ag(e.normalMatrix,c.normalMatrix,l.normalMatrix),Ln(e.mcpcMatrix,c.wcpc,l.mcwc),Ln(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()===hce.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)||gp("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)||gp("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)||gp("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)||gp("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=pu.newInstance(),e.matrixBuffer.setOpenGLRenderWindow(e._openGLRenderWindow),e.normalBuffer=pu.newInstance(),e.normalBuffer.setOpenGLRenderWindow(e._openGLRenderWindow),e.colorBuffer=pu.newInstance(),e.colorBuffer.setOpenGLRenderWindow(e._openGLRenderWindow),e.pickBuffer=pu.newInstance(),e.pickBuffer.setOpenGLRenderWindow(e._openGLRenderWindow)),e.renderable.getBuildTime().getMTime()>e.glyphBOBuildTime.getMTime()){e.matrixBuffer.upload(o,o2.ARRAY_BUFFER),e.normalBuffer.upload(a,o2.ARRAY_BUFFER),s?e.colorBuffer.upload(s.getData(),o2.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,vce,r),sx.extend(t,e,r),e.tmpMat3=Ns(new Float64Array(9)),e.normalMatrix=Ns(new Float64Array(9)),e.mcpcMatrix=Lt(new Float64Array(16)),e.mcvcMatrix=Lt(new Float64Array(16)),e.tmpColor=[],e.glyphBOBuildTime={},xr(e.glyphBOBuildTime,{mtime:0}),mce(t,e)}const SV=jn(CV,"vtkOpenGLGlyph3DMapper");var yce={newInstance:SV,extend:CV};Ri("vtkGlyph3DMapper",SV);const{vtkErrorMacro:u9}=Ao;function wce(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(ei(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=Nt.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=Nt.newInstance({numberOfComponents:1,values:o});e.tris.getCABO().createVBO(a,"polys",Io.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)||u9("Error setting vertexMC in shader VAO."));const r=e.renderable.getTextures();r.length||u9("vtkSkybox requires a texture map"),e.openGLTexture.getRenderable()!==r[0]&&(e.openGLTexture.releaseGraphicsResources(e._openGLRenderWindow),e.openGLTexture.setRenderable(r[0]))}}const xce={context:null};function TV(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,xce,r),gr.extend(t,e,r),e.openGLTexture=Vr.newInstance(),e.tris=Ul.newInstance(),e.keyMatrixTime={},xr(e.keyMatrixTime,{mtime:0}),e.keyMatrices={normalMatrix:Ns(new Float64Array(9)),mcwc:Lt(new Float64Array(16))},vi(t,e,["context"]),Qo(t,e,["activeTextures"]),wce(t,e)}const _V=jn(TV);var Cce={newInstance:_V,extend:TV};Ri("vtkSkybox",_V);var Sce=`//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:Tce}=Ao;function _ce(t,e){e.classHierarchy.push("vtkOpenGLSphereMapper");const r={...t};t.getShaderTemplate=(n,i,o)=>{n.Vertex=Sce,n.Fragment=Jm,n.Geometry=""},t.replaceShaderValues=(n,i,o)=>{let a=n.Vertex,s=n.Fragment;a=Le.substitute(a,"//VTK::Camera::Dec",[`uniform mat4 VCPCMatrix; -`,"uniform mat4 MCVCMatrix;"]).result,s=Le.substitute(s,"//VTK::PositionVC::Dec",["varying vec4 vertexVCVSOutput;"]).result,s=Le.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=Le.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=Le.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=Le.substitute(s,"//VTK::Normal::Impl","").result,e.haveSeenDepthRequest&&(s=Le.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)||Tce("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);Ln(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(pu.newInstance()),s.getColorBO().setOpenGLRenderWindow(e._openGLRenderWindow)):s.getColorBO()&&s.setColorBO(null),s.setColorComponents(p);const y=new Float32Array(d*f*3);s.setStride(d*4);const m=Math.cos(ci(30));let w=0,x=0,C=0,S=0;for(let T=0;T2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Ece,r),sx.extend(t,e,r),_ce(t,e)}const bV=jn(EV,"vtkOpenGLSphereMapper");var bce={newInstance:bV,extend:EV};Ri("vtkSphereMapper",bV);var Dce=`//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:a2}=Ao;function Ice(t,e){e.classHierarchy.push("vtkOpenGLStickMapper");const r={...t};t.getShaderTemplate=(n,i,o)=>{n.Vertex=Dce,n.Fragment=Jm,n.Geometry=""},t.replaceShaderValues=(n,i,o)=>{let a=n.Vertex,s=n.Fragment;a=Le.substitute(a,"//VTK::Camera::Dec",[`uniform mat4 VCPCMatrix; -`,"uniform mat4 MCVCMatrix;"]).result,s=Le.substitute(s,"//VTK::PositionVC::Dec","varying vec4 vertexVCVSOutput;").result,s=Le.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=Le.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=Le.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=Le.substitute(s,"//VTK::Normal::Impl","").result,e.haveSeenDepthRequest&&(s=Le.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)||a2("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)||a2("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)||a2("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);Ln(f,c.wcvc,l.mcwc),a.setUniformMatrix("MCVCMatrix",f)}if(a.isUniformUsed("normalMatrix")){const f=new Float64Array(9);ag(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(pu.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 y=null,m=null;e.renderable.getScaleArray()!=null&&c.hasArray(e.renderable.getScaleArray())&&(y=c.getArray(e.renderable.getScaleArray()).getData()),e.renderable.getOrientationArray()!=null&&c.hasArray(e.renderable.getOrientationArray())?m=c.getArray(e.renderable.getOrientationArray()).getData():a2([`Error setting orientationArray. -`,"You have to specify the stick orientation"]);const w=[0,1,3,0,3,2,2,3,5,2,5,4];let x=0,C=0,S=0,T=0;for(let _=0;_=4?255:0,v[T++]=w[D]>=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,Cu.ARRAY_BUFFER),s.getColorBO().upload(v,Cu.ARRAY_BUFFER),e.VBOBuildTime.modified()}}const Mce={};function DV(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Mce,r),sx.extend(t,e,r),Ice(t,e)}const IV=jn(DV,"vtkOpenGLStickMapper");var Oce={newInstance:IV,extend:DV};Ri("vtkStickMapper",IV);function t8(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 n8(t,e,r={}){const{isVolumeBuffer:n=!1}=r,i=t8(t,n),o=i.BYTES_PER_ELEMENT;return{numBytes:e*o,TypedArrayConstructor:i}}function Pce(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 y=0;y<32*32;++y)v[y]=255*Math.random();e.jitterTexture.setMinificationFilter(Wt.LINEAR),e.jitterTexture.setMagnificationFilter(Wt.LINEAR),e.jitterTexture.create2DFromRaw(32,32,1,xn.UNSIGNED_CHAR,v)}const{numberOfComponents:a}=i.get("numberOfComponents"),s=t.useIndependentComponents(o),c=o.getScalarOpacity(),l=e._openGLRenderWindow.getGraphicsResourceForObject(c);let f=Pl(c,s,a);if(!(l!=null&&l.oglObject)||l.hash!==f){e.opacityTexture=Vr.newInstance(),e.opacityTexture.setOpenGLRenderWindow(e._openGLRenderWindow);const v=1024,y=v*2*a,m=new Float32Array(y),w=new Float32Array(v);for(let x=0;x1?1:-1,v[x*3+2]=-1;const y=new Uint16Array(8);y[0]=3,y[1]=0,y[2]=1,y[3]=3,y[4]=3,y[5]=0,y[6]=3,y[7]=2;const m=Nt.newInstance({numberOfComponents:3,values:v});m.setName("points");const w=Nt.newInstance({numberOfComponents:1,values:y});e.tris.getCABO().createVBO(w,"polys",Io.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=OV,e.getModelInitialValues=r=>{const n={};return r.getClassName()==="vtkSharedVolumeMapper"&&(n.scalarTexture=r.getScalarTexture()),n}}const kce={};function PV(t,e,r={}){Object.assign(e,kce,r),$4.extend(t,e,r),Nce(t,e),fo("vtkActor",Vse.newInstance),fo("vtkActor2D",Bse.newInstance),fo("vtkCamera",nte.newInstance),fo("vtkGlyph3DMapper",yce.newInstance),fo("vtkImageMapper",Hre.newInstance),fo("vtkImageCPRMapper",Yre.newInstance),fo("vtkImageSlice",Qre.newInstance),fo("vtkMapper",sx.newInstance),fo("vtkPixelSpaceCallbackMapper",pie.newInstance),fo("vtkRenderer",ate.newInstance),fo("vtkSkybox",Cce.newInstance),fo("vtkSphereMapper",bce.newInstance),fo("vtkStickMapper",Oce.newInstance),fo("vtkTexture",Vr.newInstance),fo("vtkVolume",nie.newInstance),fo("vtkVolumeMapper",xk.newInstance),fo("vtkSharedVolumeMapper",Lce.newInstance)}const Vce=Q.newInstance(PV,"vtkStreamingOpenGLViewNodeFactory"),Fce={newInstance:Vce,extend:PV};function Uce(t,e){e.classHierarchy.push("vtkStreamingOpenGLRenderWindow")}function RV(t,e,r={}){Object.assign(e,r),Lse.extend(t,e,r),e.myFactory=Fce.newInstance(),fo("vtkRenderWindow",AV),Uce(t,e)}const AV=Q.newInstance(RV,"vtkStreamingOpenGLRenderWindow"),Bce={newInstance:AV,extend:RV},{vtkDebugMacro:s2}=Q;function Gce(t,e){e.classHierarchy.push("vtkCamera");const r=new Float64Array(3),n=new Float64Array([0,0,-1]),i=new Float64Array([0,1,0]),o=Lt(new Float64Array(16)),a=Lt(new Float64Array(16)),s=new Float64Array(3),c=new Float64Array(3),l=new Float64Array(3),f=Lt(new Float64Array(16)),u=Lt(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,y)=>{p===e.position[0]&&v===e.position[1]&&y===e.position[2]||(e.position[0]=p,e.position[1]=v,e.position[2]=y,t.computeDistance(),t.modified())},t.setFocalPoint=(p,v,y)=>{p===e.focalPoint[0]&&v===e.focalPoint[1]&&y===e.focalPoint[2]||(e.focalPoint[0]=p,e.focalPoint[1]=v,e.focalPoint[2]=y,t.computeDistance(),t.modified())},t.setDistance=p=>{if(e.distance===p)return;e.distance=p,e.distance<1e-20&&(e.distance=1e-20,s2("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],y=e.focalPoint[2]-e.position[2];if(e.distance=Math.sqrt(p*p+v*v+y*y),e.distance<1e-20){e.distance=1e-20,s2("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]=y/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,y=e.focalPoint,m=e.viewUp,w=new Float64Array([m[0],m[1],m[2],0]);Lt(f);const x=new Float64Array([y[0]-v[0],y[1]-v[1],y[2]-v[2]]);po(f,f,ci(p),x),pf(w,w,f),e.viewUp[0]=w[0],e.viewUp[1]=w[1],e.viewUp[2]=w[2],t.modified()},t.azimuth=p=>{const v=e.focalPoint;Lt(u),or(u,u,v),po(u,u,ci(p),e.viewUp),or(u,u,[-v[0],-v[1],-v[2]]),Gt(d,e.position,u),t.setPosition(d[0],d[1],d[2])},t.yaw=p=>{const v=e.position;Lt(u),or(u,u,v),po(u,u,ci(p),e.viewUp),or(u,u,[-v[0],-v[1],-v[2]]),Gt(h,e.focalPoint,u),t.setFocalPoint(h[0],h[1],h[2])},t.elevation=p=>{const v=e.focalPoint,y=t.getViewMatrix(),m=[-y[0],-y[1],-y[2]];Lt(u),or(u,u,v),po(u,u,ci(p),m),or(u,u,[-v[0],-v[1],-v[2]]),Gt(d,e.position,u),t.setPosition(d[0],d[1],d[2])},t.pitch=p=>{const v=e.position,y=t.getViewMatrix(),m=[y[0],y[1],y[2]];Lt(u),or(u,u,v),po(u,u,ci(p),m),or(u,u,[-v[0],-v[1],-v[2]]),Gt(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,y)=>{const m=[p,v,y];g5(e.position,m,e.position),g5(e.focalPoint,m,e.focalPoint),t.computeDistance(),t.modified()},t.applyTransform=p=>{const v=[...e.viewUp,1],y=[],m=[],w=[];v[0]+=e.position[0],v[1]+=e.position[1],v[2]+=e.position[2],pf(y,[...e.position,1],p),pf(m,[...e.focalPoint,1],p),pf(w,v,p),w[0]-=y[0],w[1]-=y[1],w[2]-=y[2],t.setPosition(...y.slice(0,3)),t.setFocalPoint(...m.slice(0,3)),t.setViewUp(...w.slice(0,3))},t.getThickness=()=>e.clippingRange[1]-e.clippingRange[0],t.setThickness=p=>{let v=p;v<1e-20&&(v=1e-20,s2("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,s2("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=>(zr(p,e.cameraLightTransform),p),t.computeCameraLightTransform=()=>{zr(o,t.getViewMatrix()),ei(o,o),C4(a,[e.distance,e.distance,e.distance]),Ln(o,o,a),Lt(e.cameraLightTransform),or(e.cameraLightTransform,o,[0,0,-1])},t.deepCopy=p=>{},t.physicalOrientationToWorldDirection=p=>{const v=E6(p[0],p[1],p[2],p[3]),y=Bf(),m=E6(0,0,1,0);return JQ(y,v),_6(m,v,m),_6(m,m,y),[m[0],m[1],m[2]]},t.getPhysicalToWorldMatrix=p=>{t.getWorldToPhysicalMatrix(p),ei(p,p)},t.getWorldToPhysicalMatrix=p=>{Lt(p);const v=[3];Il(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],Mn(p,p),tr(s,1/e.physicalScale,1/e.physicalScale,1/e.physicalScale),Ml(p,p,s),or(p,p,e.physicalTranslation)},t.computeViewParametersFromViewMatrix=p=>{ei(o,p),Gt(s,r,o),t.computeDistance();const v=e.distance;t.setPosition(s[0],s[1],s[2]),Gt(c,n,o),pn(c,c,s),en(c,c),t.setDirectionOfProjection(c[0],c[1],c[2]),Gt(l,i,o),pn(l,l,s),en(l,l),t.setViewUp(l[0],l[1],l[2]),t.setDistance(v)},t.computeViewParametersFromPhysicalMatrix=p=>{t.getWorldToPhysicalMatrix(o),Ln(o,p,o),t.computeViewParametersFromViewMatrix(o)},t.setViewMatrix=p=>{e.viewMatrix=p,e.viewMatrix&&(zr(o,e.viewMatrix),t.computeViewParametersFromViewMatrix(o),Mn(e.viewMatrix,e.viewMatrix))},t.getViewMatrix=()=>{if(e.viewMatrix)return e.viewMatrix;_4(o,e.position,e.focalPoint,e.viewUp),Mn(o,o);const p=new Float64Array(16);return zr(p,o),p},t.setProjectionMatrix=p=>{e.projectionMatrix=p},t.getProjectionMatrix=(p,v,y)=>{const m=new Float64Array(16);if(Lt(m),e.projectionMatrix){const C=1/e.physicalScale;return tr(s,C,C,C),zr(m,e.projectionMatrix),Ml(m,m,s),Mn(m,m),m}Lt(o);const w=e.clippingRange[1]-e.clippingRange[0],x=[e.clippingRange[0]+(v+1)*w/2,e.clippingRange[0]+(y+1)*w/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,b=(e.windowCenter[1]+1)*S;T4(o,T,_,E,b,x[0],x[1]),Mn(o,o)}else{if(e.useOffAxisProjection)throw new Error("Off-Axis projection is not supported at this time");{const C=Math.tan(ci(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,b=(e.windowCenter[1]-1)*T,D=(e.windowCenter[1]+1)*T,I=x[0],P=x[1];o[0]=2*I/(E-_),o[5]=2*I/(D-b),o[2]=(_+E)/(E-_),o[6]=(b+D)/(D-b),o[10]=-(I+P)/(P-I),o[14]=-1,o[11]=-2*I*P/(P-I),o[15]=0}}return zr(m,o),m},t.getCompositeProjectionMatrix=(p,v,y)=>{const m=t.getViewMatrix(),w=t.getProjectionMatrix(p,v,y);return Ln(w,m,w),w},t.setDirectionOfProjection=(p,v,y)=>{if(e.directionOfProjection[0]===p&&e.directionOfProjection[1]===v&&e.directionOfProjection[2]===y)return;e.directionOfProjection[0]=p,e.directionOfProjection[1]=v,e.directionOfProjection[2]=y;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,y,m)=>{const w=[3];Il(e.physicalViewNorth,e.physicalViewUp,w);const x=Lt(new Float64Array(16));po(x,x,ci(p),e.physicalViewUp),po(x,x,ci(v),w),po(x,x,ci(y),e.physicalViewNorth),po(x,x,ci(-m),e.physicalViewUp);const C=new Float64Array([-e.physicalViewUp[0],-e.physicalViewUp[1],-e.physicalViewUp[2]]),S=new Float64Array(e.physicalViewNorth);Gt(C,C,x),Gt(S,S,x),t.setDirectionOfProjection(C[0],C[1],C[2]),t.setViewUp(S[0],S[1],S[2]),t.modified()},t.setOrientationWXYZ=(p,v,y,m)=>{const w=Lt(new Float64Array(16));if(p!==0&&(v!==0||y!==0||m!==0)){const S=ci(p),T=Bf();Zw(T,[v,y,m],S),v5(w,T)}const x=new Float64Array(3);Gt(x,[0,0,-1],w);const C=new Float64Array(3);Gt(C,[0,1,0],w),t.setDirectionOfProjection(...x),t.setViewUp(...C),t.modified()},t.computeClippingRange=p=>{let v=null,y=null;v=e.viewPlaneNormal,y=e.position;const m=-v[0],w=-v[1],x=-v[2],C=-(m*y[0]+w*y[1]+x*y[2]),S=[m*p[0]+w*p[2]+x*p[4]+C,1e-18];for(let T=0;T<2;T++)for(let _=0;_<2;_++)for(let E=0;E<2;E++){const b=m*p[E]+w*p[2+_]+x*p[4+T]+C;S[0]=bS[1]?b:S[1]}return S}}const Wce={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:La(),physicalTranslation:[0,0,0],physicalScale:1,physicalViewUp:[0,1,0],physicalViewNorth:[0,0,-1]};function LV(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Wce,r),Q.obj(t,e),Q.get(t,e,["distance"]),Q.setGet(t,e,["parallelProjection","useHorizontalViewAngle","viewAngle","parallelScale","useOffAxisProjection","freezeFocalPoint","physicalScale"]),Q.getArray(t,e,["directionOfProjection","viewPlaneNormal","position","focalPoint"]),Q.setGetArray(t,e,["clippingRange","windowCenter"],2),Q.setGetArray(t,e,["viewUp","screenBottomLeft","screenBottomRight","screenTopRight","physicalTranslation","physicalViewUp","physicalViewNorth"],3),Gce(t,e)}const $ce=Q.newInstance(LV,"vtkCamera");var r8={newInstance:$ce,extend:LV};const zce=["HeadLight","CameraLight","SceneLight"];function jce(t,e){e.classHierarchy.push("vtkLight");const r=new Float64Array(3);t.getTransformedPosition=()=>(e.transformMatrix?Gt(r,e.position,e.transformMatrix):tr(r,e.position[0],e.position[1],e.position[2]),r),t.getTransformedFocalPoint=()=>(e.transformMatrix?Gt(r,e.focalPoint,e.transformMatrix):tr(r,e.focalPoint[0],e.focalPoint[1],e.focalPoint[2]),r),t.getDirection=()=>(e.directionMTime{const i=new Float64Array(3);Sn(i,e.position,n),e.focalPoint=i},t.setDirectionAngle=(n,i)=>{const o=ci(n),a=ci(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 Hce={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 NV(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Hce,r),Q.obj(t,e),Q.setGet(t,e,["intensity","switch","positional","exponent","coneAngle","coneFalloff","transformMatrix","lightType","shadowAttenuation","attenuationValues"]),Q.setGetArray(t,e,["color","position","focalPoint","attenuationValues"],3),jce(t,e)}const Kce=Q.newInstance(NV,"vtkLight");var Xce={newInstance:Kce,extend:NV,LIGHT_TYPES:zce};const{vtkErrorMacro:Ty}=Q;function qce(t){return()=>Ty(`vtkViewport::${t} - NOT IMPLEMENTED`)}function Yce(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=()=>Ty("call displayToView on your view instead"),t.viewToDisplay=()=>Ty("callviewtodisplay on your view instead"),t.getSize=()=>Ty("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=qce("PickPropFrom")}const Jce={background:[0,0,0],background2:[.2,.2,.2],gradientBackground:!1,viewport:[0,0,1,1],aspect:[1,1],pixelAspect:[1,1],props:[],actors2D:[]};function kV(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Jce,r),Q.obj(t,e),Q.event(t,e,"event"),Q.setGetArray(t,e,["viewport"],4),Q.setGetArray(t,e,["background","background2"],3),Yce(t,e)}const Zce=Q.newInstance(kV,"vtkViewport");var Qce={newInstance:Zce,extend:kV};const{vtkDebugMacro:pp,vtkErrorMacro:Qu,vtkWarningMacro:ele}=Ao;function f9(t){return()=>Qu(`vtkRenderer::${t} - NOT IMPLEMENTED`)}function tle(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||(pp("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(La())):Qu("light has unknown light type",a.get()))})},t.updateLightGeometry=()=>e.lightFollowCamera?t.updateLightsGeometryToFollowCamera():!0,t.allocateTime=f9("allocateTime"),t.updateGeometry=f9("updateGeometry"),t.getVTKWindow=()=>e._renderWindow,t.setLayer=o=>{pp(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=r8.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=Xce.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 Qu("ViewToWorld: no active camera, cannot compute view to world, returning 0,0,0"),[0,0,0];const c=e.activeCamera.getViewMatrix();ei(c,c),Mn(c,c);const l=new Float64Array([o,a,s]);return Gt(l,l,c),l},t.projectionToView=(o,a,s,c)=>{if(e.activeCamera===null)return Qu("ProjectionToView: no active camera, cannot compute projection to view, returning 0,0,0"),[0,0,0];const l=e.activeCamera.getProjectionMatrix(c,-1,1);ei(l,l),Mn(l,l);const f=new Float64Array([o,a,s]);return Gt(f,f,l),f},t.worldToView=(o,a,s)=>{if(e.activeCamera===null)return Qu("WorldToView: no active camera, cannot compute view to world, returning 0,0,0"),[0,0,0];const c=e.activeCamera.getViewMatrix();Mn(c,c);const l=new Float64Array([o,a,s]);return Gt(l,l,c),l},t.viewToProjection=(o,a,s,c)=>{if(e.activeCamera===null)return Qu("ViewToProjection: no active camera, cannot compute view to projection, returning 0,0,0"),[0,0,0];const l=e.activeCamera.getProjectionMatrix(c,-1,1);Mn(l,l);const f=new Float64Array([o,a,s]);return Gt(f,f,l),f},t.computeVisiblePropBounds=()=>{e.allBounds[0]=ar.INIT_BOUNDS[0],e.allBounds[1]=ar.INIT_BOUNDS[1],e.allBounds[2]=ar.INIT_BOUNDS[2],e.allBounds[3]=ar.INIT_BOUNDS[3],e.allBounds[4]=ar.INIT_BOUNDS[4],e.allBounds[5]=ar.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&&(Og(e.allBounds),pp("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(!hy(a))return pp("Cannot reset camera!"),!1;let c=null;if(t.getActiveCamera())c=e.activeCamera.getViewPlaneNormal();else return Qu("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=ci(e.activeCamera.getViewAngle()),g=d,p=d/Math.sin(h*.5),v=e.activeCamera.getViewUp();return Math.abs(En(v,c))>.999&&(ele("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(!hy(a))return pp("Cannot reset camera clipping range!"),!1;if(t.getActiveCameraAndResetIfCreated(),!e.activeCamera)return Qu("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=ci(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 nle={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:Uf(),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 VV(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};for(Object.assign(e,nle,r),Qce.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),Qo(t,e,["_renderWindow","allocatedRenderTime","timeFactor","lastRenderTimeInSeconds","numberOfPropsRendered","lastRenderingUsedDepthPeeling","selector"]),vi(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"]),Mg(t,e,["actors","volumes","lights"]),YE(t,e,["background"],4,1),$m(t,e,["renderWindow"]),tle(t,e)}const rle=jn(VV,"vtkRenderer");var FV={newInstance:rle,extend:VV};const ile={Unknown:0,LeftController:1,RightController:2},ole={Unknown:0,Trigger:1,TrackPad:2,Grip:3,Thumbstick:4,A:5,B:6,ApplicationMenu:7},ale={Unknown:0,TouchpadX:1,TouchpadY:2,ThumbstickX:3,ThumbstickY:4};var UV={Device:ile,Input:ole,Axis:ale};const{Device:c2,Input:wd}=UV,{vtkWarningMacro:l2,vtkErrorMacro:u2,normalizeWheel:sle,vtkOnceErrorMacro:cle}=Q,N0={ctrlKey:!1,altKey:!1,shiftKey:!1},XC={"xr-standard":[wd.Trigger,wd.Grip,wd.TrackPad,wd.Thumbstick,wd.A,wd.B]},i8=["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 mp(t){t.cancelable&&t.preventDefault()}function f2(t){const e=Object.create(null);return t.forEach(r=>{let{pointerId:n,position:i}=r;e[n]=i}),e}function lle(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=>{u2("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=()=>l2("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(),y=v.getBoundingClientRect(),m=v.width/y.width,w=v.height/y.height,x={x:m*(p.clientX-y.left),y:w*(y.height-p.clientY+y.top),z:0};return(i.size<=1||!e.currentRenderer)&&a(x.x,x.y),x}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",mp),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",mp),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&&mp(p),p.target.hasPointerCapture(p.pointerId)&&p.target.releasePointerCapture(p.pointerId),e.container.setPointerCapture(p.pointerId),i.has(p.pointerId)&&l2("[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&&mp(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:u2(`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){u2("undefined requester, can not start animating");return}if(n.has(p)){l2("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 y=p&&p.getClassName?p.getClassName():p;l2(`${y} 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,y)=>{p.inputSources.forEach(m=>{const w=m.gripSpace==null?null:v.getPose(m.gripSpace,y),x=m.gripSpace==null?null:v.getPose(m.targetRaySpace,y),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(){mp(p);const v={...sle(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:u2(`Unknown mouse button released: ${p.button}`);break}},t.handleTouchStart=p=>{const v=[...i.values()];if(e.recognizeGestures&&v.length>1){const y=f2(i);if(v.length===2){const m={...l(N0),position:v[0].position,deviceType:u(p)};t.leftButtonReleaseEvent(m)}t.recognizeGesture("TouchStart",y)}else if(v.length===1){const y={...l(N0),position:c(p),deviceType:u(p)};t.leftButtonPressEvent(y)}},t.handleTouchMove=p=>{const v=[...i.values()];if(e.recognizeGestures&&v.length>1){const y=f2(i);t.recognizeGesture("TouchMove",y)}else if(v.length===1){const y={...l(N0),position:v[0].position,deviceType:u(p)};t.mouseMoveEvent(y)}},t.handleTouchEnd=p=>{const v=[...i.values()];if(e.recognizeGestures)if(v.length===0){const y={...l(N0),position:c(p),deviceType:u(p)};t.leftButtonReleaseEvent(y)}else if(v.length===1){const y=f2(i);t.recognizeGesture("TouchEnd",y);const m={...l(N0),position:v[0].position,deviceType:u(p)};t.leftButtonPressEvent(m)}else{const y=f2(i);t.recognizeGesture("TouchMove",y)}else if(v.length===1){const y={...l(N0),position:v[0].position,deviceType:u(p)};t.leftButtonReleaseEvent(y)}},t.setView=p=>{e._view!==p&&(e._view=p,e._view.getRenderable().setInteractor(t),t.modified())},t.getFirstRenderer=()=>{var p,v,y;return(y=(v=(p=e._view)==null?void 0:p.getRenderable())==null?void 0:v.getRenderersByReference())==null?void 0:y[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 y=(T=(S=e._view)==null?void 0:S.getRenderable())==null?void 0:T.getRenderers();if(!y||y.length===0)return null;y.sort((_,E)=>_.getLayer()-E.getLayer());let m=null,w=null,x=null,C=y.length;for(;C--;){const _=y[C];if(e._view.isInViewport(p,v,_)&&_.getInteractive()){x=_;break}m===null&&_.getInteractive()&&(m=_),w===null&&e._view.isInViewport(p,v,_)&&(w=_)}return x===null&&(x=m),x===null&&(x=w),x==null&&(x=y[0]),x},t.render=()=>{!t.isAnimating()&&!e.inRender&&g()},i8.forEach(p=>{const v=p.charAt(0).toLowerCase()+p.slice(1);t[`${v}Event`]=y=>{if(!e.enabled)return;if(!t.getCurrentRenderer()){cle(` - Can not forward events without a current renderer on the interactor. - `);return}const w={type:p,pokedRenderer:e.currentRenderer,firstRenderer:t.getFirstRenderer(),...y};t[`invoke${p}`](w)}}),t.recognizeGesture=(p,v)=>{if(Object.keys(v).length>2)return;if(e.startingEventPositions||(e.startingEventPositions={}),p==="TouchStart"){Object.keys(v).forEach(b=>{e.startingEventPositions[b]=v[b]}),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 y=0;const m=[],w=[];Object.keys(v).forEach(b=>{m[y]=v[b],w[y]=e.startingEventPositions[b],y++});const x=Math.sqrt((w[0].x-w[1].x)*(w[0].x-w[1].x)+(w[0].y-w[1].y)*(w[0].y-w[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=h5(Math.atan2(w[1].y-w[0].y,w[1].x-w[0].x)),T=h5(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)b&&D>I&&D>P){e.currentGesture="Pinch";const M={scale:1,touches:v};t.startPinchEvent(M)}else if(I>b&&I>P){e.currentGesture="Rotate";const M={rotation:0,touches:v};t.startRotateEvent(M)}else if(P>b){e.currentGesture="Pan";const M={translation:[0,0],touches:v};t.startPanEvent(M)}}else{if(e.currentGesture==="Rotate"){const b={rotation:_,touches:v};t.rotateEvent(b)}if(e.currentGesture==="Pinch"){const b={scale:C/x,touches:v};t.pinchEvent(b)}if(e.currentGesture==="Pan"){const b={translation:E,touches:v};t.panEvent(b)}}},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 ule={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 BV(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ule,r),Q.obj(t,e),e._animationExtendedEnd=0,Q.event(t,e,"RenderEvent"),i8.forEach(n=>Q.event(t,e,n)),Q.get(t,e,["initialized","interactorStyle","lastFrameTime","recentAnimationFrameRate","_view"]),Q.setGet(t,e,["container","lightFollowCamera","enabled","enableRender","recognizeGestures","desiredUpdateRate","stillUpdateRate","picker","preventDefaultOnPointerDown","preventDefaultOnPointerUp","mouseScrollDebounceByPass"]),Q.moveToProtected(t,e,["view"]),lle(t,e)}const fle=Q.newInstance(BV,"vtkRenderWindowInteractor");var dle={newInstance:fle,extend:BV,handledEvents:i8,...UV};const{vtkDebugMacro:hle}=Q;function gle(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=w0.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()){hle("Recomputing bounds..."),e.mapperBounds=n.concat();const i=[];ar.getCorners(n,i),t.computeMatrix();const o=new Float64Array(16);Mn(o,e.matrix),i.forEach(a=>Gt(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 ple={mapper:null,property:null,backfaceProperty:null,forceOpaque:!1,forceTranslucent:!1,bounds:[1,-1,1,-1,1,-1]};function GV(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ple,r),W4.extend(t,e,r),e.boundsMTime={},Q.obj(e.boundsMTime),Q.set(t,e,["property"]),Q.setGet(t,e,["backfaceProperty","forceOpaque","forceTranslucent","mapper"]),gle(t,e)}const mle=Q.newInstance(GV,"vtkActor");var os={newInstance:mle,extend:GV};function vle(t,e){const r=t.invokeResize;delete t.invokeResize,e.renderWindow=Oae.newInstance(),e.rendererMap={},e.openGLRenderWindow=Bce.newInstance(),e.renderWindow.addView(e.openGLRenderWindow),e.interactor=dle.newInstance(),e.interactor.setView(e.openGLRenderWindow),e.interactor.initialize(),t.addRenderer=({viewport:n,id:i,background:o})=>{const a=FV.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=Q.chain(t.setContainer,t.destroy,e.openGLRenderWindow.delete,t.delete),t.resize()}const yle={background:[0,0,0],container:null};function WV(t,e,r={}){Object.assign(e,yle,r),Q.obj(t,e),Q.get(t,e,["renderWindow","openGLRenderWindow","interactor","container"]),Q.event(t,e,"resize"),vle(t,e)}const wle=Q.newInstance(WV),$V={newInstance:wle,extend:WV},{BlendMode:ef,FilterMode:zp}=VR;function xle(t,e,r,n,i){let o=null;return i?(o=i,o.removeAllPoints()):o=o0.newInstance(),o.addPointLong(-1024,0,1,1),o.addPoint(t,e),o.addPoint(r,n),o}const Cle={createRadonTransferFunction:xle};function Sle(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=Uf(),e.bounds},t.update=()=>{t.getInputData()},t.setBlendModeToComposite=()=>{t.setBlendMode(ef.COMPOSITE_BLEND)},t.setBlendModeToMaximumIntensity=()=>{t.setBlendMode(ef.MAXIMUM_INTENSITY_BLEND)},t.setBlendModeToMinimumIntensity=()=>{t.setBlendMode(ef.MINIMUM_INTENSITY_BLEND)},t.setBlendModeToAverageIntensity=()=>{t.setBlendMode(ef.AVERAGE_INTENSITY_BLEND)},t.setBlendModeToAdditiveIntensity=()=>{t.setBlendMode(ef.ADDITIVE_INTENSITY_BLEND)},t.setBlendModeToRadonTransform=()=>{t.setBlendMode(ef.RADON_TRANSFORM_BLEND)},t.getBlendModeAsString=()=>Q.enumToString(ef,e.blendMode),t.setAverageIPScalarRange=(n,i)=>{console.warn("setAverageIPScalarRange is deprecated use setIpScalarRange"),t.setIpScalarRange(n,i)},t.getFilterModeAsString=()=>Q.enumToString(zp,e.filterMode),t.setFilterModeToOff=()=>{t.setFilterMode(zp.OFF)},t.setFilterModeToNormalized=()=>{t.setFilterMode(zp.NORMALIZED)},t.setFilterModeToRaw=()=>{t.setFilterMode(zp.RAW)},t.setGlobalIlluminationReach=n=>r.setGlobalIlluminationReach(Tc(n,0,1)),t.setVolumetricScatteringBlending=n=>r.setVolumetricScatteringBlending(Tc(n,0,1)),t.setVolumeShadowSamplingDistFactor=n=>r.setVolumeShadowSamplingDistFactor(n>=1?n:1),t.setAnisotropy=n=>r.setAnisotropy(Tc(n,-.99,.99)),t.setLAOKernelSize=n=>r.setLAOKernelSize(f4(Tc(n,1,32))),t.setLAOKernelRadius=n=>r.setLAOKernelRadius(n>=1?n:1)}const Tle=t=>({bounds:[1,-1,1,-1,1,-1],sampleDistance:1,imageSampleDistance:1,maximumSamplesPerRay:1e3,autoAdjustSampleDistances:!0,initialInteractionScale:1,interactionSampleDistanceFactor:1,blendMode:ef.COMPOSITE_BLEND,ipScalarRange:[-1e6,1e6],filterMode:zp.OFF,preferSizeOverAccuracy:!1,computeNormalFromOpacity:!1,volumetricScatteringBlending:0,globalIlluminationReach:0,volumeShadowSamplingDistFactor:5,anisotropy:0,localAmbientOcclusion:!1,LAOKernelSize:15,LAOKernelRadius:7,updatedExtents:[],...t});function zV(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Tle(r)),e8.extend(t,e,r),Q.setGet(t,e,["sampleDistance","imageSampleDistance","maximumSamplesPerRay","autoAdjustSampleDistances","initialInteractionScale","interactionSampleDistanceFactor","blendMode","filterMode","preferSizeOverAccuracy","computeNormalFromOpacity","volumetricScatteringBlending","globalIlluminationReach","volumeShadowSamplingDistFactor","anisotropy","localAmbientOcclusion","LAOKernelSize","LAOKernelRadius","updatedExtents"]),Q.setGetArray(t,e,["ipScalarRange"],2),Q.event(t,e,"lightingActivated"),Sle(t,e)}const _le=Q.newInstance(zV,"vtkVolumeMapper");var jV={newInstance:_le,extend:zV,...Cle};function Ele(t,e){e.classHierarchy.push("vtkSharedVolumeMapper");const r=t.delete;t.delete=()=>{e.scalarTexture=null,r()}}const ble={scalarTexture:null};function HV(t,e,r={}){Object.assign(e,ble,r),jV.extend(t,e,r),Q.setGet(t,e,["scalarTexture"]),Ele(t,e)}const Dle=Q.newInstance(HV,"vtkSharedVolumeMapper"),Ile={newInstance:Dle,extend:HV};function d9(t,e){const r=t8(e),n=new r(t.length);return n.set(t),n}function Mle(t,e){e.classHierarchy.push("vtkStreamingOpenGLTexture"),e.updatedFrames=[],e.volumeId=null;const r=t.create3DFilterableFromRaw;t.create3DFilterableFromRaw=(s,c,l,f,u,d,h)=>{e.inputDataType=u,e.inputNumComps=f,r(s,c,l,f,u,d,h)};const n=t.updateVolumeInfoForGL;t.updateVolumeInfoForGL=(s,c)=>{const l=n(s,c);return e.volumeInfo.dataComputedScale=[1],e.volumeInfo.dataComputedOffset=[0],l},t.update3DFromRaw=()=>{const{volumeId:s}=e;if(!s)return;const c=Ue.getVolume(s);if(e._openGLRenderWindow.activateTexture(t),t.createTexture(),t.bind(),c.isDynamicVolume()){a();return}return t.hasUpdatedFrames()&&o()};const i=t.modified;t.setUpdatedFrame=s=>{e.updatedFrames[s]=!0,i()},t.modified=()=>{i();const s=Ue.getVolume(e.volumeId);if(!s)return;const c=s.imageIds;for(let l=0;l!e.updatedFrames.length||e.updatedFrames.some(s=>s),t.getUpdatedFrames=()=>e.updatedFrames,t.setVolumeId=s=>{e.volumeId=s},t.getVolumeId=()=>e.volumeId,t.setTextureParameters=({width:s,height:c,depth:l,numberOfComponents:f,dataType:u})=>{e.width??(e.width=s),e.height??(e.height=c),e.depth??(e.depth=l),e.inputNumComps??(e.inputNumComps=f),e.inputDataType??(e.inputDataType=u)},t.getTextureParameters=()=>({width:e.width,height:e.height,depth:e.depth,numberOfComponents:e.inputNumComps,dataType:e.inputDataType})}const Ole={updatedFrames:[]};function KV(t,e,r={}){Object.assign(e,Ole,r),Vr.extend(t,e,r),Mle(t,e)}const Ple=Q.newInstance(KV,"vtkStreamingOpenGLTexture"),Rle={newInstance:Ple,extend:KV},Ale={isPerformingCoordinateTransformation:!1};function XV(t,e,r={}){Object.assign(e,Ale,r),r8.extend(t,e,r),Q.setGet(t,e,["isPerformingCoordinateTransformation"]),Nle(t,e)}const Lle=Q.newInstance(XV,"vtkSlabCamera");function Nle(t,e){e.classHierarchy.push("vtkSlabCamera");const r=Lt(new Float64Array(16)),n=new Float64Array(3);t.getProjectionMatrix=(i,o,a)=>{const s=La();if(e.projectionMatrix){const d=1/e.physicalScale;return tr(n,d,d,d),zr(s,e.projectionMatrix),Ml(s,s,n),Mn(s,s),s}Lt(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,y=(e.windowCenter[1]+1)*h;T4(r,g,p,v,y,u[0],u[1]),Mn(r,r)}else{if(e.useOffAxisProjection)throw new Error("Off-Axis projection is not supported at this time");{const d=Math.tan(Dt.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,y=(e.windowCenter[1]-1)*g,m=(e.windowCenter[1]+1)*g,w=u[0],x=u[1];r[0]=2*w/(v-p),r[5]=2*w/(m-y),r[2]=(p+v)/(v-p),r[6]=(y+m)/(m-y),r[10]=-(w+x)/(x-w),r[14]=-1,r[11]=-2*w*x/(x-w),r[15]=0}}return zr(s,r),s}}const kle={newInstance:Lle,extend:XV};class x0{constructor(e){this._imageIdsIndexMap=new Map,this._imageURIsIndexMap=new Map,this.cornerstoneImageMetaData=null,this.isPreScaled=!1,this.numTimePoints=null,this.numFrames=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.suppressWarnings=!0,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=Rle.newInstance(),this.vtkOpenGLTexture.setVolumeId(l),this.voxelManager=g??Rc.createImageVolumeVoxelManager({dimensions:i,imageIds:r,numberOfComponents:p}),this.numVoxels=this.dimensions[0]*this.dimensions[1]*this.dimensions[2],v||(v=Qm.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},this.suppressWarnings),v.set({hasScalarVolume:!1},this.suppressWarnings),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=Qr(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;eUe.getImage(r))}}const Sl=[];function Ng(t,e=0){let r;for(r=0;r0;)Sl.pop()}function ut(t,...e){for(let r=0;r{yf.addRaw(t,{...e,metadata:structuredClone(e.metadata)})},addRaw:(t,e)=>{const r=e.type;vp[t]||(vp[t]={}),vp[t][r]=e.metadata},get:(t,e)=>{var r;return(r=vp[e])==null?void 0:r[t]},clear:()=>{vp={}}};Ng(yf.get);const zi=new HE("imageLoadPool");zi.grabDelay=0;zi.setMaxSimultaneousRequests(gn.Interaction,1e3);zi.setMaxSimultaneousRequests(gn.Thumbnail,1e3);zi.setMaxSimultaneousRequests(gn.Prefetch,1e3);const P5={};let R5;function qV(t,e){const r=Ue.getImageLoadObject(t);if(r)return h9(r.promise,t),r;const n=t.split(":")[0],i=P5[n]||R5;if(!i)throw new Error(`loadImageFromImageLoader: No image loader found for scheme '${n}'`);const o=i(t,e);return h9(o.promise,t),o}function h9(t,e){Promise.resolve(t).then(r=>{Ule(r),nt(ze,qe.IMAGE_LOADED,{image:r})}).catch(r=>{const n={imageId:e,error:r};nt(ze,qe.IMAGE_LOAD_FAILED,n)})}function Ule(t){if(!t.voxelManager){const{width:e,height:r,numberOfComponents:n}=t,i=Rc.createImageVoxelManager({scalarData:t.getPixelData(),width:e,height:r,numberOfComponents:n});t.voxelManager=i,t.getPixelData=()=>i.getScalarData(),delete t.imageFrame.pixelData}}function YV(t,e={priority:0,requestType:"prefetch"}){if(t===void 0)throw new Error("loadImage: parameter imageId must not be undefined");return qV(t,e).promise}function ks(t,e={priority:0,requestType:"prefetch"}){if(t===void 0)throw new Error("loadAndCacheImage: parameter imageId must not be undefined");const r=qV(t,e);return Ue.getImageLoadObject(t)||Ue.putImageLoadObject(t,r),r.promise}function Ble(t,e={priority:0,requestType:"prefetch"}){if(!t||t.length===0)throw new Error("loadAndCacheImages: parameter imageIds must be list of image Ids");return t.map(n=>ks(n,e))}function im(t,e={}){var p;if(t===void 0)throw new Error("createAndCacheDerivedImage: parameter imageId must not be undefined");e.imageId===void 0&&(e.imageId=`derived:${Pn()}`);const{imageId:r,skipCreateBuffer:n,onCacheAdd:i,voxelRepresentation:o}=e,a=ut("imagePlaneModule",t),s=a.rows*a.columns,{TypedArrayConstructor:c}=n8((p=e.targetBuffer)==null?void 0:p.type,s),l=new c(n?1:s),f=r,u=ut("imagePlaneModule",t);yf.add(f,{type:"imagePlaneModule",metadata:u});const d=ut("generalSeriesModule",t);yf.add(f,{type:"generalSeriesModule",metadata:d}),yf.add(f,{type:"generalImageModule",metadata:{instanceNumber:e.instanceNumber}});const h=ut("imagePixelModule",t);yf.add(f,{type:"imagePixelModule",metadata:{...h,bitsAllocated:8,bitsStored:8,highBit:7,samplesPerPixel:1,pixelRepresentation:0}});const g=s8(r,{scalarData:l,onCacheAdd:i,skipCreateBuffer:n,targetBuffer:{type:l.constructor.name},voxelRepresentation:o,dimensions:[a.columns,a.rows],spacing:[a.columnPixelSpacing,a.rowPixelSpacing],origin:a.imagePositionPatient,direction:a.imageOrientationPatient,frameOfReferenceUID:a.frameOfReferenceUID,referencedImageId:t});return g.referencedImageId=t,Ue.getImageLoadObject(r)||Ue.putImageSync(r,g),g}function a8(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:${Pn()}`,...e};return im(n,{...o,instanceNumber:i+1})})}function s8(t,e){const{scalarData:r,origin:n,direction:i,targetBuffer:o,skipCreateBuffer:a,onCacheAdd:s,frameOfReferenceUID:c,voxelRepresentation:l,referencedImageId:f}=e,u=e.dimensions,d=e.spacing;if(!u||!d)throw new Error("createAndCacheLocalImage: dimensions and spacing are required");const h=u[0],g=u[1],p=d[0],v=d[1],y={frameOfReferenceUID:c,rows:g,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:n??[0,0,0],pixelSpacing:[v,p],rowPixelSpacing:v,columnPixelSpacing:p},m=h*g,w=r.length/m;let x;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");x=r}else if(!a){const{TypedArrayConstructor:L}=n8(o==null?void 0:o.type,m);x=new L(m)}let C,S,T;if(x instanceof Uint8Array)C=8,S=8,T=7;else if(x instanceof Uint16Array)C=16,S=16,T=15;else if(x instanceof Int16Array)C=16,S=16,T=15;else if(x instanceof Float32Array)C=32,S=32,T=31;else throw new Error("Unsupported scalarData type");const _={samplesPerPixel:1,photometricInterpretation:x.length>u[0]*u[1]?"RGB":"MONOCHROME2",rows:g,columns:h,bitsAllocated:C,bitsStored:S,highBit:T},E={imagePlaneModule:y,imagePixelModule:_};["imagePlaneModule","imagePixelModule"].forEach(L=>{yf.add(t,{type:L,metadata:E[L]||{}})});const b=t,D=l===FR.RLE&&Rc.createRLEImageVoxelManager({dimensions:u,id:b})||Rc.createImageVoxelManager({height:g,width:h,numberOfComponents:w,scalarData:x,id:b});let I=x[0],P=x[0];for(let L=1;LP&&(P=x[L]);const M={imageId:t,intercept:0,windowCenter:0,windowWidth:0,color:_.photometricInterpretation==="RGB",numberOfComponents:_.samplesPerPixel,dataType:o==null?void 0:o.type,slope:1,minPixelValue:I,maxPixelValue:P,rows:_.rows,columns:_.columns,getCanvas:void 0,height:_.rows,width:_.columns,rgba:void 0,columnPixelSpacing:y.columnPixelSpacing,rowPixelSpacing:y.rowPixelSpacing,FrameOfReferenceUID:y.frameOfReferenceUID,invert:!1,getPixelData:()=>D.getScalarData(),voxelManager:D,sizeInBytes:r.byteLength,referencedImageId:f};return s==null||s(M),Ue.putImageSync(M.imageId,M),M}function JV(t){const e=({additionalDetails:n})=>n.imageId?n.imageId!==t:!0;zi.filterRequests(e);const r=Ue.getImageLoadObject(t);r&&r.cancelFn()}function Gle(t){t.forEach(e=>{JV(e)})}function Wle(){const t=zi.getRequestPool();Object.keys(t).forEach(e=>{const r=t[e];Object.keys(r).forEach(n=>{const i=r[n].pop();if(!i)return;const o=i.additionalDetails,{imageId:a,volumeId:s}=o;let c;a?c=Ue.getImageLoadObject(a):s&&(c=Ue.getVolumeLoadObject(s)),c&&c.cancel()}),zi.clearRequestStack(e)})}function zd(t,e){P5[t]=e}function $le(t){const e=R5;return R5=t,e}function zle(){Object.keys(P5).forEach(t=>delete P5[t]),R5=void 0}function jle(t,e={}){return a8(t,{...e,targetBuffer:{type:"Uint8Array"}})}function Hle(t,e={}){return im(t,{...e,targetBuffer:{type:"Uint8Array"}})}const Kle=Object.freeze(Object.defineProperty({__proto__:null,cancelLoadAll:Wle,cancelLoadImage:JV,cancelLoadImages:Gle,createAndCacheDerivedImage:im,createAndCacheDerivedImages:a8,createAndCacheDerivedLabelmapImage:Hle,createAndCacheDerivedLabelmapImages:jle,createAndCacheLocalImage:s8,loadAndCacheImage:ks,loadAndCacheImages:Ble,loadImage:YV,registerImageLoader:zd,registerUnknownImageLoader:$le,unregisterAllImageLoaders:zle},Symbol.toStringTag,{value:"Module"}));function ZV(t){const e=t[0],{pixelRepresentation:r,bitsAllocated:n,bitsStored:i,highBit:o,photometricInterpretation:a,samplesPerPixel:s}=ut("imagePixelModule",e),c=[],l=ut("voiLutModule",e);let f;if(l){const{windowWidth:m,windowCenter:w}=l;if(f=l==null?void 0:l.voiLUTFunction,Array.isArray(m))for(let x=0;x({distance:l(p),imageId:p}));h.sort((p,v)=>v.distance-p.distance);const g=h.length;c=Math.abs(h[g-1].distance-h[0].distance)/(g-1)}const{sliceThickness:f,spacingBetweenSlices:u}=ut("imagePlaneModule",t[0]),{strictZSpacingForVolumeViewport:d}=Iu().rendering;return(c===0||isNaN(c))&&!d&&(u?(console.debug("Could not calculate spacing. Using spacingBetweenSlices"),c=u):f?(console.debug("Could not calculate spacing and no spacingBetweenSlices. Using sliceThickness"),c=f):(console.debug("Could not calculate spacing. The VolumeViewport visualization is compromised. Setting spacing to 1 to render"),c=1)),c}function c8(t,e){const{imagePositionPatient:r,imageOrientationPatient:n}=ut("imagePlaneModule",t[0]);if(!e){const f=Et(n[0],n[1],n[2]),u=Et(n[3],n[4],n[5]);e=Ve(),mn(e,f,u)}const i=t[0].split(":")[0]==="wadouri",o=QV(t);let a;function s(f){const{imagePositionPatient:u}=ut("imagePlaneModule",f),d=Ve();return Sn(d,r,u),pt(d,e)}if(i){const f=[t[0],t[Math.floor(t.length/2)]];a=t;const u=s(f[0]),d=s(f[1]);u-d<0&&a.reverse()}else{const f=t.map(u=>({distance:s(u),imageId:u}));f.sort((u,d)=>d.distance-u.distance),a=f.map(u=>u.imageId)}const{imagePositionPatient:c}=ut("imagePlaneModule",a[0]);return{zSpacing:o,origin:c,sortedImageIds:a}}function eF(t){const e=ut("modalityLutModule",t)||{},r=ut("generalSeriesModule",t)||{},{modality:n}=r,i={rescaleSlope:e.rescaleSlope||1,rescaleIntercept:e.rescaleIntercept??0,modality:n},o=ut("scalingModule",t)||{};return{...i,...n==="PT"&&{suvbw:o.suvbw,suvbsa:o.suvbsa,suvlbm:o.suvlbm},...n==="RTDOSE"&&{doseGridScaling:o.DoseGridScaling,doseSummation:o.DoseSummation,doseType:o.DoseType,doseUnit:o.DoseUnit}}}const l8=t=>Object.values(t).some(r=>typeof r=="number"&&!Number.isInteger(r)),g9={Uint8Array:"Uint8Array",Int16Array:"Int16Array",Uint16Array:"Uint16Array",Float32Array:"Float32Array"};function ev(t,e){const r=ZV(t),{ImageOrientationPatient:n,PixelSpacing:i,Columns:o,Rows:a}=r,s=Et(n[0],n[1],n[2]),c=Et(n[3],n[4],n[5]),l=Ve();mn(l,s,c);const{zSpacing:f,origin:u,sortedImageIds:d}=c8(t,l),h=t.length,g=[i[1],i[0],f],p=[o,a,h].map(y=>Math.floor(y)),v=[...s,...c,...l];return{dimensions:p,spacing:g,origin:u,dataType:Xle(d,r),direction:v,metadata:r,imageIds:d,volumeId:e,voxelManager:null,numberOfComponents:r.PhotometricInterpretation==="RGB"?3:1}}function Xle(t,e){const{BitsAllocated:r,PixelRepresentation:n}=e,i=n===1,o=qle(t);if(o)return o;const[a,s,c]=[0,Math.floor(t.length/2),t.length-1],l=[a,s,c].map(h=>eF(t[h])),f=l.some(h=>h.rescaleIntercept<0||h.rescaleSlope<0),u=l.some(h=>l8(h)),d=$w();switch(r){case 8:return"Uint8Array";case 16:return d&&u?"Float32Array":i||f?"Int16Array":!i&&!f?"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.`)}}function qle(t){const r=[0,Math.floor(t.length/2),t.length-1].map(i=>Ue.getImage(t[i]));if(!r.every(Boolean))return null;const n=r[0].getPixelData().constructor.name;return r.every(i=>i.getPixelData().constructor.name===n)&&n in g9?g9[n]:null}let A5=class tF{constructor(e){this.name=e||"unknown"}static as(e){if(e.iterator)return e.iterator;const r=new tF("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 k0=new Map,p9="imageRetrieveConfiguration",lg={IMAGE_RETRIEVE_CONFIGURATION:p9,clear:()=>{k0.clear()},add:(t,e)=>{k0.set(t,e)},clone:()=>new Map(k0),restore:t=>{k0.clear(),t.forEach((e,r)=>{k0.set(r,e)})},get:(t,...e)=>{if(t===p9)return e.map(r=>k0.get(r)).find(r=>r!==void 0)}};Ng(lg.get.bind(lg));function tv(t){const e=Yo(),r=[];return e.forEach(n=>{const o=n.getVolumeViewports().filter(a=>a.hasVolumeId(t));r.push(...o)}),r}const kT=t=>{const e=Yle(t);e!=null&&e.length&&e.forEach(({renderingEngine:r,viewportIds:n})=>{r.hasBeenDestroyed||r.renderViewports(n)})};function Yle(t){const e=Yo(),r=[];return e.forEach(n=>{const i=tv(t);i.length&&r.push({renderingEngine:n,viewportIds:i.map(o=>o.id)})}),r}const m9=[{id:"initialImages",retrieveType:"single"}],Jle=[{id:"lossySequential",retrieveType:"singleFast"},{id:"finalSequential",retrieveType:"singleFinal"}],qC=[{offset:-1,imageQualityStatus:Ia.ADJACENT_REPLICATE},{offset:1,imageQualityStatus:Ia.ADJACENT_REPLICATE},{offset:2,imageQualityStatus:Ia.FAR_REPLICATE}],Zle=[{id:"initialImages",positions:[.5,0,-1],retrieveType:"default",requestType:gn.Thumbnail,priority:5,nearbyFrames:qC},{id:"quarterThumb",decimate:4,offset:3,requestType:gn.Thumbnail,retrieveType:"multipleFast",priority:6,nearbyFrames:qC},{id:"halfThumb",decimate:4,offset:1,priority:7,requestType:gn.Thumbnail,retrieveType:"multipleFast",nearbyFrames:qC},{id:"quarterFull",decimate:4,offset:2,priority:8,requestType:gn.Thumbnail,retrieveType:"multipleFinal"},{id:"halfFull",decimate:4,offset:0,priority:9,requestType:gn.Thumbnail,retrieveType:"multipleFinal"},{id:"threeQuarterFull",decimate:4,offset:1,priority:10,requestType:gn.Thumbnail,retrieveType:"multipleFinal"},{id:"finalFull",decimate:4,offset:3,priority:11,requestType:gn.Thumbnail,retrieveType:"multipleFinal"},{id:"errorRetrieve"}];function nF(t,e,r=0){const n=[];for(let i=r;i=a)continue;const c={...r,imageId:o,imageQualityStatus:a};Ue.setPartialImage(o,c),t.successCallback(o,c)}catch(o){console.warn("Couldn't fill nearby item ",i.itemId,o)}}const vh=class vh{constructor(e){this.stages=e.stages||m9,this.retrieveOptions=e.retrieveOptions||{}}loadImages(e,r){return new eue(this,e,r).loadImages()}};vh.createProgressive=rF,vh.interleavedRetrieveStages={stages:Zle},vh.singleRetrieveStages={stages:m9},vh.sequentialRetrieveStages={stages:Jle};let om=vh;class eue{constructor(e,r,n){this.outstandingRequests=0,this.stageStatusMap=new Map,this.displayedIterator=new A5("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||ks)(n,r),s=A5.as(a);let c=!1;return s.forEach(async(f,u)=>{const d=Ue.getImageQuality(n);if(!f){console.warn("No image retrieved",n);return}const{imageQualityStatus:h}=f;if(c||(c=h===Ia.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),Qle(this.listener,e,f)},o).finally(()=>{if(!c&&i)Ue.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||gn.Interaction,d={imageId:n};zi.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};nt(ze,qe.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||nF(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 rF(t){return new om(t)}const v9=gn.Prefetch;class iF extends x0{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;zi.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,kT(o)),n===i){s.callbacks.forEach(u=>u(e));const f={FrameOfReferenceUID:l,volumeId:o};nt(ze,qe.IMAGE_VOLUME_LOADING_COMPLETED,f)}}updateTextureAndTriggerEvents(e,r,n=Ia.FULL_RESOLUTION){const i=this.imageIdIndexToFrameIndex(e),{cachedFrames:o,numFrames:a,totalNumFrames:s}=this,{FrameOfReferenceUID:c}=this.metadata;if(o[i]>n||o[i]===Ia.FULL_RESOLUTION)return;const f=n===Ia.FULL_RESOLUTION;o[e]=n,this.framesUpdated++,f&&(this.framesLoaded++,this.framesProcessed++);const u={FrameOfReferenceUID:c,volumeId:this.volumeId,numberOfFrames:a,framesProcessed:this.framesProcessed};nt(ze,qe.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.checkDimensionGroupCompletion(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};nt(ze,qe.IMAGE_LOAD_ERROR,s)}load(e){const{imageIds:r,loadStatus:n,numFrames:i}=this,{transferSyntaxUID:o}=ut("transferSyntax",r[0])||{},a=ut(lg.IMAGE_RETRIEVE_CONFIGURATION,this.volumeId,o,"volume");if(this.imagesLoader=this.isDynamicVolume()?this:a?(a.create||om.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}=ut("transferSyntax",e)||{},n=ut("imagePlaneModule",e)||{},{rows:i,columns:o}=n,a=this.getImageIdIndex(e),s=ut("modalityLutModule",e)||{},c=ut("generalSeriesModule",e)||{},l={rescaleSlope:s.rescaleSlope,rescaleIntercept:s.rescaleIntercept,modality:c.modality},f=l.modality;if(f==="PT"||f==="RTDOSE"){const g=ut("scalingModule",e);g&&(this._addScalingToVolume(g),Object.assign(l,g))}const u=l8(l),d=$w();if(this.isPreScaled=!0,l&&l.rescaleSlope!==void 0&&l.rescaleIntercept!==void 0){const{rescaleSlope:g,rescaleIntercept:p}=l;this.isPreScaled=typeof g=="number"&&typeof p=="number"}return!d&&u&&(this.isPreScaled=!1),{targetBuffer:{type:this.dataType,rows:i,columns:o},allowFloatRendering:d,preScale:{enabled:this.isPreScaled,scalingParameters:l},transferPixelData:!0,requestType:v9,transferSyntaxUID:r,additionalDetails:{imageId:e,imageIdIndex:a,volumeId:this.volumeId},retrieveOptions:void 0}}callLoadImage(e,r,n){const{cachedFrames:i}=this;if(i[r]===Ia.FULL_RESOLUTION)return;const o=s=>{const{image:c}=s.detail;c.imageId===e&&(this.vtkOpenGLTexture.setUpdatedFrame(r),ze.removeEventListener(qe.IMAGE_CACHE_IMAGE_ADDED,o))};return ze.addEventListener(qe.IMAGE_CACHE_IMAGE_ADDED,o),A5.as(ks(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=>{var u;const a=this.getImageIdIndex(o),s=v9,c=r,l=this.getLoaderImageOptions(o),{retrieveOptions:f={}}=ut(lg.IMAGE_RETRIEVE_CONFIGURATION,o,"volume")||{};return l.retrieveOptions={...l.retrieveOptions,...f.default||((u=Object.values(f))==null?void 0:u[0])||{}},{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;zi.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}}checkDimensionGroupCompletion(e){}}class oF extends iF{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 aF(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(y=>Ue.isLoaded(e.imageIds[y])?Promise.resolve(!0):new Promise((m,w)=>{const x=e.imageIds[y];zi.addRequest(async()=>{YV(x).then(()=>{console.log(`Prefetched imageId: ${x}`),m(!0)}).catch(C=>{w(C)})},gn.Prefetch,{volumeId:t},1)}))).catch(console.error)}const i=ev(e.imageIds,t),{dimensions:o,spacing:a,origin:s,direction:c,metadata:l,imageIds:f,dataType:u,numberOfComponents:d}=i;return new oF({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 u8={};let Uh=aF;function sF(t,e){const r=t.indexOf(":"),n=t.substring(0,r);let i=u8[n];if(i==null){if(Uh==null||typeof Uh!="function")throw new Error(`No volume loader for scheme ${n} has been registered`);i=Uh}const o=i(t,e);return o.promise.then(function(a){nt(ze,qe.VOLUME_LOADED,{volume:a})},function(a){const s={volumeId:t,error:a};nt(ze,qe.VOLUME_LOADED_FAILED,s)}),o}function f8(t,e={imageIds:[]}){if(t===void 0)throw new Error("loadVolume: parameter volumeId must not be undefined");let r=Ue.getVolumeLoadObject(t);return r!==void 0?r.promise:(r=sF(t,e),r.promise.then(n=>n))}async function am(t,e){if(t===void 0)throw new Error("createAndCacheVolume: parameter volumeId must not be undefined");let r=Ue.getVolumeLoadObject(t);return r!==void 0||(r=sF(t,e),Ue.putVolumeLoadObject(t,r)),r.promise}function cF(t,e){const r=Ue.getVolume(t);if(!r)throw new Error(`Cannot created derived volume: Referenced volume with id ${t} does not exist.`);let{volumeId:n}=e;const{voxelRepresentation:i}=e;n===void 0&&(n=Pn());const{metadata:o,dimensions:a,spacing:s,origin:c,direction:l}=r,f=r.isDynamicVolume()?r.getCurrentDimensionGroupImageIds():r.imageIds??[],u=a8(f,{targetBuffer:e.targetBuffer,voxelRepresentation:i}),d=u[0].dataType,h=u.map(p=>p.imageId),g=new x0({volumeId:n,dataType:d,metadata:structuredClone(o),dimensions:[a[0],a[1],a[2]],spacing:s,origin:c,direction:l,referencedVolumeId:t,imageIds:h,referencedImageIds:r.imageIds??[]});return Ue.putVolumeSync(n,g),g}async function d8(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=Ue.getVolume(t);return r||(e.filter(o=>!Ue.getImage(o)).length===0?nv(t,e):await am(t,{imageIds:e}))}function nv(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=Ue.getVolume(t);if(r)return r;const n=ev(e,t),i=new x0({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 Ue.putVolumeSync(t,i),i}function rv(t,e={}){const{metadata:r,dimensions:n,spacing:i,origin:o,direction:a,scalarData:s,targetBuffer:c,preventCache:l=!1}=e,f=Ue.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(!Ue.isCacheable(g))throw new Error(`Cannot created derived volume: Volume with id ${t} is not cacheable.`);const v=[];for(let w=0;w1&&(u=Math.min(...u),d=Math.max(...d)),{lower:u,upper:d}}function uue(t,e){var r;return!(t!=="PT"||!e.isPreScaled||!((r=e.scaling)!=null&&r.PT.suvbw))}async function L5(t,e,r,n=!1){const{volumeId:i,callback:o,blendMode:a}=t,s=await f8(i);if(!s)throw new Error(`imageVolume with id: ${s.volumeId} does not exist`);const{imageData:c,vtkOpenGLTexture:l}=s,f=fF(c,l);a&&f.setBlendMode(a);const u=Gee.newInstance();u.setMapper(f);const{numberOfComponents:d}=c.get("numberOfComponents");return u.getProperty().set({viewportId:r},!0),d===3&&u.getProperty().setIndependentComponents(!1),await h8(u,s),o&&o({volumeActor:u,volumeId:i}),n||fue(e,r,u,i),u}function fue(t,e,r,n){const i=r.getProperty().getRGBTransferFunction(0).getRange(),o={viewportId:e,range:{lower:i[0],upper:i[1]},volumeId:n};nt(t,qe.VOI_MODIFIED,o)}function hF(t){const e=t.getMapper().getInputData(),r=e.extentToBounds(e.getExtent());return[[r[0],r[2],r[4]],[r[0],r[2],r[5]],[r[0],r[3],r[4]],[r[0],r[3],r[5]],[r[1],r[2],r[4]],[r[1],r[2],r[5]],[r[1],r[3],r[4]],[r[1],r[3],r[5]]]}const due=is*is,YC=t=>Math.abs(Math.abs(t)-1)YC(t[e])||YC(t[e+1])||YC(t[e+2]),hue=t=>JC(t,0)&&JC(t,3)&&JC(t,6);function cx(t,e,r){const n=t.getMapper().getInputData();let i;const o=n.getDirection();if(hue(o))i=hF(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=no.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),d{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)},gue=1+is,pue=(t,e)=>e===t.substring(0,Math.min(t.length,e.length)),y9=t=>!!lF().find(e=>pue(t.volumeId,e));function kg(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 Ue.getVolume(f)}).filter(l=>!!l);if(r){const l=Bl(r),f=a.findIndex(g=>l.includes(g.volumeId)),u=a[f],{uid:d}=o[f],h=w9(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(y9);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=cx(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 lh={};function mue(t){lh[t]!==void 0&&delete lh[t]}function vue(t){const{renderingEngineId:e,viewportId:r}=t.detail,i=ir(e).getViewport(r);if(!("setVolumes"in i))throw new Error("volumeNewImageEventDispatcher: viewport does not have setVolumes method");lh[i.id]===void 0&&(lh[i.id]=0);const o=N5(i);if(!o){console.warn(`volumeNewImageEventDispatcher: sliceData is undefined for viewport ${i.id}`);return}const{numberOfSlices:a,imageIndex:s}=o;if(lh[i.id]===s)return;lh[i.id]=s;const c={imageIndex:s,viewportId:r,renderingEngineId:e,numberOfSlices:a};nt(i.element,qe.VOLUME_NEW_IMAGE,c)}function ug(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),y=h*v+n,m=g*v+i,w=p*v+o;return[y,m,w]}function Tl(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 gF(t,e,r){const[n,i,o,a]=t,[s,c,l,f]=e,[u,d,h,g]=r,p=Fp(n,s,u,i,c,d,o,l,h),v=Fp(a,f,g,i,c,d,o,l,h),y=Fp(n,s,u,a,f,g,o,l,h),m=Fp(n,s,u,i,c,d,a,f,g),w=yd(v)/yd(p),x=yd(y)/yd(p),C=yd(m)/yd(p);return[w,x,C]}function sm(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}function pF(t,e,r=is){return sm(e,t)Number.isNaN(e)):Number.isNaN(t)}function Is(t){if(t===null||typeof t!="object"||typeof t=="function"||typeof structuredClone=="function")return t;if(Array.isArray(t))return t.map(Is);{const e={};for(const r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=Is(t[r]));return e}}const wue=.95;function mF(t,e){if(!(t!=null&&t.length)||!e.FrameOfReferenceUID)return;e.planeRestriction||(e.planeRestriction={FrameOfReferenceUID:e.FrameOfReferenceUID,point:t[0],inPlaneVector1:null,inPlaneVector2:null});const{planeRestriction:r}=e;if(t.length===1)return r.inPlaneVector1=null,r.inPlaneVector2=null,r;const n=Sn(Ve(),t[0],t[Math.floor(t.length/2)]);en(n,n),r.inPlaneVector1=n,r.inPlaneVector2=null;const i=t.length;if(i>2)for(let o=Math.floor(i/3);o({}),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=Is(e.defaultOptions),this.suppressEvents=e.defaultOptions.suppressEvents?e.defaultOptions.suppressEvents:!1,this.options=Is(e.defaultOptions),this.isDisabled=!1}static get useCustomRenderingPipeline(){return!1}setRendered(){this.viewportStatus===Ea.NO_DATA||this.viewportStatus===Ea.LOADING||(this.viewportStatus=Ea.RENDERED)}setColorTransform(e,r){let n=null;if(!e&&!r)return;const i=r||[255,255,255],o=Math.max(...i),a=i.map(u=>o/u),{lower:s=0,upper:c=255}=e||{},l=(c-s+1)/255,f=s/255;return n=`url('data:image/svg+xml, #colour')`,n}getRenderingEngine(){return J1.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=mn(Ve(),o,a);let f=E4(Ve(),a);const u=Ic(Ve(),o),d=Po(c,s),g=n.getDimensions().map(C=>Math.floor(C/2)),p=[g[0],g[1],g[2]],v=n.indexToWorld(p,Ve()),y=this._getFocalPointForResetCamera(v,i,{resetPan:!0,resetToCenter:!1}),m=pn(Ve(),s,y),w=_i(m),x=C=>{const S=Er(Ve(),C,2*pt(m,C));return pn(S,S,m),en(S,S),S};if(e){const C=x(f),S=bn(Ve(),y,C,w),T=bn(Ve(),S,u,d);this.setCamera({viewPlaneNormal:u,position:T,focalPoint:S}),this.flipHorizontal=!this.flipHorizontal}if(r){f=Ic(f,a);const C=x(l),S=bn(Ve(),y,C,w),T=bn(Ve(),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&&wc(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||!wc(n)?null:n.actor}getActorUIDByIndex(e){const r=this.getActors()[e];if(r)return r.uid}getActorByIndex(e){return this.getActors()[e]}setActors(e){const r=this.getActors();this.removeAllActors(),this.addActors(e,{resetCamera:!0}),nt(this.element,qe.ACTORS_CHANGED,{viewportId:this.id,removedActors:r,addedActors:e,currentActors:e})}_removeActor(e){const r=this.getActor(e);if(!r){console.warn(`Actor ${e} does not exist in ${this.id}, can't remove`);return}return this.getRenderer().removeActor(r.actor),this._actors.delete(e),r}removeActors(e){const r=[];e.forEach(i=>{const o=this._removeActor(i);o&&r.push(o)});const n=this.getActors();nt(this.element,qe.ACTORS_CHANGED,{viewportId:this.id,removedActors:r,addedActors:[],currentActors:n})}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)),nt(this.element,qe.ACTORS_CHANGED,{viewportId:this.id,removedActors:[],addedActors:e,currentActors:this.getActors()})}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(),nt(this.element,qe.ACTORS_CHANGED,{viewportId:this.id,removedActors:[],addedActors:[e],currentActors:this.getActors()})}removeAllActors(){var r;const e=this.getActors();(r=this.getRenderer())==null||r.removeAllViewProps(),this._actors=new Map,nt(this.element,qe.ACTORS_CHANGED,{viewportId:this.id,removedActors:e,addedActors:[],currentActors:[]})}resetCameraNoEvent(){const e=this._suppressCameraModifiedEvents;this._suppressCameraModifiedEvents=!0,this.resetCamera(),this._suppressCameraModifiedEvents=e}setCameraNoEvent(e){const r=this._suppressCameraModifiedEvents;this._suppressCameraModifiedEvents=!0,this.setCamera(e),this._suppressCameraModifiedEvents=r}_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,y]]=u;if(i*(p-d)+o*(v-h)+a*(y-g)===0)continue;const m=ug([d,h,g],[p,v,y],[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)??Rd.LINEAR),this.setDisplayAreaFit(e)),n&&(this.initialCamera=this.getCamera()),this._suppressCameraModifiedEvents=o,!r&&!o){const s={viewportId:this.id,displayArea:e,storeAsInitialCamera:n};nt(this.element,qe.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(Rd.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=Ve();if(n.height%2&&bn(h,h,u,r*.5*c),n.width%2){const g=mn(Ve(),u,d);bn(h,h,g,r*.5*c)}!h[0]&&!h[1]&&!h[2]||this.setCamera({focalPoint:Kr(Ve(),l,h),position:Kr(Ve(),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],c[1],c[2]])),u=[Math.abs(f[0]-l[0]),Math.abs(f[1]-l[1])],[d,h]=u;let g=this.getZoom()/this.insetImageMultiplier;if(r){const[p,v]=r,y=Math.max(Math.abs(d/a),Math.abs(h/s)),m=Math.abs(p*d/a),w=Math.abs(v*h/s),x=this.getZoom(),C=this.getZoom(this.fitToCanvasCamera);g=(m>w?y/m:y/w)*x/C,this.setZoom(this.insetImageMultiplier*g,!1)}if(n){const{imagePoint:p,canvasPoint:v=p||[.5,.5]}=n,[y,m]=v,w=a*(y-.5),x=s*(m-.5),[C,S]=p||v,T=g,_=this.insetImageMultiplier*T*d*(.5-C),E=this.insetImageMultiplier*T*h*(.5-S),b=_+w,D=E+x,I=[b,D];Zi(I,I,this.getPan()),this.setPan(I,!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();let c;const l=this.getDefaultActor();l&&wc(l)?c=l.actor.getMapper().getInputData().getBounds():c=a.computeVisiblePropBounds();const f=[0,0,0],u=this.getDefaultImageData();if(u){const M=u.getSpacing();c[0]=c[0]+M[0]/2,c[1]=c[1]-M[0]/2,c[2]=c[2]+M[1]/2,c[3]=c[3]-M[1]/2,c[4]=c[4]+M[2]/2,c[5]=c[5]-M[2]/2}const d=this.getVtkActiveCamera(),h=d.getViewPlaneNormal(),g=d.getViewUp();if(f[0]=(c[0]+c[1])/2,f[1]=(c[2]+c[3])/2,f[2]=(c[4]+c[5])/2,u){const L=u.getDimensions().map(j=>Math.floor(j/2)),B=[L[0],L[1],L[2]];u.indexToWorld(B,f)}const{widthWorld:p,heightWorld:v}=this._getWorldDistanceViewUpAndViewRight(c,g,h),y=[this.sWidth,this.sHeight],m=p/v,w=y[0]/y[1],x=m/w,C=x<1?this.insetImageMultiplier*v/2:this.insetImageMultiplier*v*x/2,S=S1.boundsRadius(c)*(this.type===Jn.VOLUME_3D?10:1),T=this.insetImageMultiplier*S,_=Math.abs(Dt.dot(g,h))>.999?[-g[2],g[0],g[1]]:g,E=this._getFocalPointForResetCamera(f,s,{resetPan:r,resetToCenter:i}),b=[E[0]+T*h[0],E[1]+T*h[1],E[2]+T*h[2]];a.resetCameraClippingRange(c);const D=[-li.MAXIMUM_RAY_DISTANCE,li.MAXIMUM_RAY_DISTANCE];d.setPhysicalScale(S),d.setPhysicalTranslation(-E[0],-E[1],-E[2]),this.setCamera({parallelScale:n?C:s.parallelScale,focalPoint:E,position:b,viewAngle:90,viewUp:_,clippingRange:D});const I=this.getCamera();this.setFitToCanvasCamera(this.getCamera()),o&&this.setInitialCamera(I),n&&this.setZoom(1,o);const P={type:"ResetCameraEvent",renderer:a};return a.invokeEvent(P),this.triggerCameraModifiedEventIfNecessary(s,I),u&&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(pn([0,0,0],e.focalPoint,i)),a=this.worldToCanvas(pn([0,0,0],n,i));return Wn([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=Wn([0,0],e,this.getPan());if(Math.abs(s[0])<1&&Math.abs(s[1])<1&&!r)return;const c=pn(Ve(),this.canvasToWorld(s),a),l=pn(Ve(),i,c),f=pn(Ve(),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(){const e=this.getRenderer();return e?e.getActiveCamera():(console.warn("No renderer found for the viewport"),null)}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 y=d&&!this.flipHorizontal||!d&&this.flipHorizontal;y&&this.flip({flipHorizontal:y})}if(h!==void 0){const y=h&&!this.flipVertical||!h&&this.flipVertical;y&&this.flip({flipVertical:y})}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 y=n.getViewPlaneNormal(),m=n.getViewUp();let w=!1,x=!1;if(l){const C=[l[0]-p[0],l[1]-p[1],l[2]-p[2]];w=Math.abs(Dt.dot(C,y))>0}if(a&&(x=!Vt(m,v)),w||x){const C=this.getDefaultActor();if(!(C!=null&&C.actor))return;da(C,"vtkActor")||this.updateClippingPlanesForActors(o),(da(C,"vtkImageSlice")||this.type===Jn.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};nt(this.element,qe.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=[Wr.newInstance(),Wr.newInstance()]);let a=li.MINIMUM_SLAB_THICKNESS;n.slabThickness&&(a=n.slabThickness);const{viewPlaneNormal:s,focalPoint:c}=e;this.setOrientationOfClippingPlanes(o,a,s,c),nt(this.element,qe.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]];Dt.multiplyScalar(o,r),e[0].setNormal(n);const a=[0,0,0];Dt.subtract(i,o,a),e[0].setOrigin(a),e[1].setNormal(-n[0],-n[1],-n[2]);const s=[0,0,0];Dt.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=[Wr.newInstance(),Wr.newInstance()]),n}_getWorldDistanceViewUpAndViewRight(e,r,n){const i=this._getCorners(e),o=this._getCorners(e),a=mn(Ve(),r,n);let s=no.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 VT(r.focalPoint)?e:r.focalPoint;if(!i&&n){const o=r,a=o.focalPoint,s=o.viewPlaneNormal,c=pn(Ve(),e,a),l=pt(c,s),f=bn(Ve(),e,s,-1*l);return[f[0],f[1],f[2]]}if(!n&&!i)return VT(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")}};S1.CameraViewPresentation={rotation:!0,pan:!0,zoom:!0,displayArea:!0},S1.TransferViewPresentation={windowLevel:!0,paletteLut:!0};let s0=S1;function vF(t,e,r=!1){const n=t.getCamera(),{focalPoint:i,viewPlaneNormal:o}=n,{spacingInNormalDirection:a,actorUID:s}=kg(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:cx(l,o,i),spacingInNormalDirection:a,camera:n}}function jd(t,e,r=!1){const{sliceRange:n,spacingInNormalDirection:i,camera:o}=vF(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 Bh(t,e,r,n,i,o){const{min:a,max:s,current:c}=r,l=Ve();Sn(l,e,t);const f=Math.round((s-a)/i),d=(c-a)/(s-a)*f;let h=Math.round(d),g=[t[0]-n[0]*d*i,t[1]-n[1]*d*i,t[2]-n[2]*d*i];h+=o,h>f?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}}function yF(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 wF(t,e){const r=e.colorTransfer.split(" ").splice(1).map(parseFloat),{shiftRange:n}=xue(r),i=n[0],o=n[1]-n[0],a=Mu.newInstance(),s=[];for(let x=0;x[o*n+e[0],a,s,c]);return r.removeAllPoints(),i.forEach(([o,a,s,c])=>r.addRGBPoint(o,a,s,c)),i}function Sue(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}const{MPR_CAMERA_VALUES:ja}=Uu,{OrientationAxis:cu}=ka;function xF(t,e,r,n){let i;switch(n){case cu.AXIAL:case cu.AXIAL_REFORMAT:i=ja.axial;break;case cu.SAGITTAL:case cu.SAGITTAL_REFORMAT:i=ja.sagittal;break;case cu.CORONAL:case cu.CORONAL_REFORMAT:i=ja.coronal;break;default:i=ja.axial;break}const o=en(Ve(),t),a=en(Ve(),e),s=en(Ve(),r),c=[o,a,s],l=[Et(i.viewRight[0],i.viewRight[1],i.viewRight[2]),Et(i.viewUp[0],i.viewUp[1],i.viewUp[2]),Et(i.viewPlaneNormal[0],i.viewPlaneNormal[1],i.viewPlaneNormal[2])],f=new Set,u=p=>{let v=0,y=-2,m=!1;c.forEach((x,C)=>{if(f.has(C))return;const S=pt(p,x),T=Math.abs(S);T>y&&(y=T,v=C,m=S<0)}),f.add(v);const w=Vh(c[v]);return m&&Ic(w,w),w},d=u(l[0]),h=u(l[1]),g=u(l[2]);return{viewPlaneNormal:[g[0],g[1],g[2]],viewUp:[h[0],h[1],h[2]],viewRight:[d[0],d[1],d[2]]}}function CF(t,e){var f,u;if(!((f=t.getActors())!=null&&f.length))return;t.type!==Jn.ORTHOGRAPHIC&&console.warn("Viewport should be a volume viewport");let r=t.getCurrentImageId();if(r||(r=(u=t.getImageIds())==null?void 0:u[0]),!r)return;const{imageOrientationPatient:n}=ut("imagePlaneModule",r),i=Et(n[0],n[1],n[2]),o=Et(n[3],n[4],n[5]),a=mn(Ve(),i,o);let{orientation:s}=e||{};const{useViewportNormal:c}=e||{};let l=a;return c&&(l=t.getCamera().viewPlaneNormal),s||(s=Tue(l)),xF(i,o,a,s)}function Tue(t){const e=en(Ve(),t),r=Et(ja.axial.viewPlaneNormal[0],ja.axial.viewPlaneNormal[1],ja.axial.viewPlaneNormal[2]),n=Et(ja.sagittal.viewPlaneNormal[0],ja.sagittal.viewPlaneNormal[1],ja.sagittal.viewPlaneNormal[2]),i=Et(ja.coronal.viewPlaneNormal[0],ja.coronal.viewPlaneNormal[1],ja.coronal.viewPlaneNormal[2]),o=Math.abs(pt(e,r)),a=Math.abs(pt(e,n)),s=Math.abs(pt(e,i));return o>=a&&o>=s?cu.AXIAL:a>=s?cu.SAGITTAL:cu.CORONAL}function SF(){var e;const t=Iu();return((e=t==null?void 0:t.rendering)==null?void 0:e.renderingEngineMode)===Y1.ContextPool}class Ir extends s0{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=Ps([0,0],o,a);this.setPan(c,!1);const{flipVertical:l}=this.getCamera(),f=l?Ic([0,0,0],this.initialViewUp):this.initialViewUp;this.setCameraNoEvent({viewUp:f}),this.rotateCamera(i);const u=this.getPan(),d=this.getPan(this.fitToCanvasCamera),h=Ps([0,0],u,d),g=Zi([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};nt(this.element,qe.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 C;if(!this._getApplicableVolumeActor(i))return;const{colormap:a,VOILUTFunction:s,interpolationType:c,invert:l,slabThickness:f,preset:u}=this.viewportProperties;if(i||(i=this.getVolumeId()),!Ue.getVolume(i))return null;const h=this.getActors().find(S=>S.referencedId===i);if(!h)return;const p=h.actor.getProperty().getRGBTransferFunction(0),[v,y]=((C=this.viewportProperties)==null?void 0:C.VOILUTFunction)==="SIGMOID"?yF(p):p.getRange(),m={lower:v,upper:y},w=this.getColormap(i);return{colormap:i&&w?w:a,voiRange:m,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((h,g)=>(h.push(g.x,g.r,g.g,g.b),h),[]),f=M4(l,a)||{},u=P4(a),d=R4(a);return f.threshold=u,f.opacity=d,f},this.getRotation=()=>{const{viewUp:i,viewPlaneNormal:o,flipVertical:a}=this.getCameraNoRotation(),s=a?Ic([0,0,0],this.initialViewUp):this.initialViewUp;if(!s)return 0;const c=b4(s,i)*180/Math.PI,l=mn([0,0,0],s,i);return pt(l,o)>=0?c:(360-c)%360},this.getFrameOfReferenceUID=()=>this._FrameOfReferenceUID,this.canvasToWorldTiled=i=>{var u,d;const o=this.getVtkActiveCamera();(u=o.setIsPerformingCoordinateTransformation)==null||u.call(o,!0);const a=this.getRenderer(),s=this.getVtkDisplayCoordsTiled(i),f=this.getRenderingEngine().offscreenMultiRenderWindow.getOpenGLRenderWindow().displayToWorld(s[0],s[1],s[2],a);return(d=o.setIsPerformingCoordinateTransformation)==null||d.call(o,!1),[f[0],f[1],f[2]]},this.canvasToWorldContextPool=i=>{var v,y;const o=this.getVtkActiveCamera();(v=o.setIsPerformingCoordinateTransformation)==null||v.call(o,!0);const a=this.getRenderer(),s=window.devicePixelRatio||1,{width:c,height:l}=this.canvas,f=c/l,u=[i[0]*s,i[1]*s],d=[u[0]/c,1-u[1]/l,0],h=a.normalizedDisplayToProjection(d[0],d[1],d[2]),g=a.projectionToView(h[0],h[1],h[2],f),p=a.viewToWorld(g[0],g[1],g[2]);return(y=o.setIsPerformingCoordinateTransformation)==null||y.call(o,!1),[p[0],p[1],p[2]]},this.getVtkDisplayCoordsTiled=i=>{const o=window.devicePixelRatio||1,a=[i[0]*o,i[1]*o],l=this.getRenderingEngine().offscreenMultiRenderWindow.getOpenGLRenderWindow().getSize(),f=[a[0]+this.sx,a[1]+this.sy];return f[1]=l[1]-f[1],[f[0],f[1],0]},this.getVtkDisplayCoordsContextPool=i=>{const o=window.devicePixelRatio||1,a=[i[0]*o,i[1]*o],{height:s}=this.canvas,c=[a[0],s-a[1]];return[c[0],c[1],0]},this.worldToCanvasTiled=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.worldToCanvasContextPool=i=>{var y;const o=this.getVtkActiveCamera();(y=o.setIsPerformingCoordinateTransformation)==null||y.call(o,!0);const a=this.getRenderer(),{width:s,height:c}=this.canvas,l=s/c,f=a.worldToView(i[0],i[1],i[2]),u=a.viewToProjection(f[0],f[1],f[2],l),d=a.projectionToNormalizedDisplay(u[0],u[1],u[2]),h=d[0]*s,g=(1-d[1])*c,p=window.devicePixelRatio||1,v=[h/p,g/p];return o.setIsPerformingCoordinateTransformation(!1),v},this.hasImageURI=i=>this.getActors().filter(a=>da(a,"vtkVolume")).some(({uid:a,referencedId:s})=>{const c=Ue.getVolume(s||a);return c!=null&&c.getImageIdIndex?c.getImageIdIndex(i)!==void 0||c.getImageURIIndex(i)!==void 0:!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=Ue.getVolume(a);if(!s)throw new Error(`imageVolume with id: ${a} does not exist in cache`);return s.imageIds},this.renderingPipelineFunctions={worldToCanvas:{tiled:this.worldToCanvasTiled,contextPool:this.worldToCanvasContextPool},canvasToWorld:{tiled:this.canvasToWorldTiled,contextPool:this.canvasToWorldContextPool},getVtkDisplayCoords:{tiled:this.getVtkDisplayCoordsTiled,contextPool:this.getVtkDisplayCoordsContextPool},getRenderer:{tiled:this.getRendererTiled,contextPool:this.getRendererContextPool}},this.useCPURendering=Lh(),this.useCPURendering)throw new Error("VolumeViewports cannot be used whilst CPU Fallback Rendering is enabled.");this._configureRenderingPipeline();const r=this.getRenderer(),n=kle.newInstance();switch(r.setActiveCamera(n),this.type){case Jn.ORTHOGRAPHIC:n.setParallelProjection(!0);break;case Jn.VOLUME_3D:n.setParallelProjection(!0);break;case Jn.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)||{};if(!n||!i)return;const o=this.getVtkActiveCamera();o.setDirectionOfProjection(-n[0],-n[1],-n[2]),o.setViewUpFrom(i),this.initialViewUp=i,r&&this.resetCamera({resetOrientation:!1,resetRotation:!1})}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()||vue(o)}function i(o){const{viewportId:a}=o.detail;a===this.id&&(this.element.removeEventListener(qe.CAMERA_MODIFIED,e),ze.removeEventListener(qe.ELEMENT_DISABLED,r),mue(a))}this.element.removeEventListener(qe.CAMERA_MODIFIED,e),this.element.addEventListener(qe.CAMERA_MODIFIED,e),ze.addEventListener(qe.ELEMENT_DISABLED,r)}setVOILUTFunction(e,r,n){Object.values(Do).includes(e)||(e=Do.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=Mu.newInstance();let s=nm(e.name);const{name:c}=e;if(s||(s=Q1.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=this.getColormap(r),u={viewportId:this.id,colormap:f,volumeId:r};nt(this.element,qe.VOI_MODIFIED,u),nt(this.element,qe.COLORMAP_MODIFIED,u)}}setOpacity(e,r){const n=this._getApplicableVolumeActor(r);if(!n)return;const{volumeActor:i}=n,o=o0.newInstance();typeof e.opacity=="number"?AL(i,e.opacity):(e.opacity.forEach(({opacity:c,value:l})=>{o.addPoint(l,c)}),i.getProperty().setScalarOpacity(0,o)),this.viewportProperties.colormap||(this.viewportProperties.colormap={}),this.viewportProperties.colormap.opacity=e.opacity;const a=this.getColormap(r),s={viewportId:this.id,colormap:a,volumeId:r};nt(this.element,qe.COLORMAP_MODIFIED,s)}setInvert(e,r,n){const i=this._getApplicableVolumeActor(r);if(!i)return;const o=i.volumeId,a=this._getOrCreateColorTransferFunction(o);if(c1(a),this.viewportProperties.invert=e,!n){const s={...this.getVOIModifiedEventDetail(o),invertStateChanged:!0};nt(this.element,qe.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=Mu.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===Do.SAMPLED_SIGMOID){const l=A4(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)};nt(this.element,qe.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}=jd(this,n,!0),{sliceRange:s,spacingInNormalDirection:c,camera:l}=a,{focalPoint:f,position:u}=l,{newFocalPoint:d}=Bh(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){const{referencedImageId:o}=e;return!o||this.hasImageURI(o)}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}=jd(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}=Bh(s,l,i,c,o,e);this.setCamera({focalPoint:f,position:u}),this.render()}setBestOrentation(e,r){if(!e&&!r)return;const{viewPlaneNormal:n}=this.getCamera();if(V0(n,r)&&V0(n,e))return;const i=this._getAcquisitionPlaneOrientation();if(V0(i.viewPlaneNormal,r)&&V0(i.viewPlaneNormal,e)){this.setOrientation(i);return}for(const a of Object.values(gu))if(V0(a.viewPlaneNormal,r)&&V0(a.viewPlaneNormal,e)){this.setOrientation(a);return}const o=mn(Ve(),r||i.viewPlaneNormal,e);en(o,o),this.setOrientation({viewPlaneNormal:o})}setViewPlane(e){const{point:r,inPlaneVector1:n,inPlaneVector2:i,FrameOfReferenceUID:o}=e;this.setBestOrentation(n,i),this.setViewReference({FrameOfReferenceUID:o,cameraFocalPoint:r,viewPlaneNormal:this.getCamera().viewPlaneNormal})}setViewReference(e){if(!e)return;const r=this.getVolumeId(),{FrameOfReferenceUID:n,cameraFocalPoint:i,referencedImageId:o,planeRestriction:a,viewPlaneNormal:s,viewUp:c}=e;let{sliceIndex:l}=e;if(a&&!s)return this.setViewPlane(a);const{focalPoint:f,viewPlaneNormal:u,position:d}=this.getCamera(),h=PL(u,s),g=Vt(u,s);if(typeof l=="number"&&r!==void 0&&e.volumeId===r&&(h||g)){const{currentStepIndex:p,sliceRangeInfo:v,numScrollSteps:y}=jd(this,r,!0),{sliceRange:m,spacingInNormalDirection:w}=v;h&&(l=y-l-1);const x=l-p,{newFocalPoint:C,newPosition:S}=Bh(f,d,m,u,w,x);this.setCamera({focalPoint:C,position:S})}else if(n===this.getFrameOfReferenceUID()){if(s&&!h&&!g){this.setOrientation({viewPlaneNormal:s,viewUp:c}),this.setViewReference(e);return}if(o&&this.isInAcquisitionPlane()){const p=ut(Za.IMAGE_PLANE,o),{imagePositionPatient:v}=p,{focalPoint:y}=this.getCamera(),m=pn(Ve(),y,v),w=pt(m,u),x=bn(Ve(),y,[-u[0],-u[1],-u[2]],w);this.setCamera({focalPoint:x}),this.render();return}if(i){const p=pn([0,0,0],i,f),v=s??u,y=pt(p,v);Vt(y,0)||Er(p,v,y);const m=Kr([0,0,0],f,p),w=Kr([0,0,0],d,p);this.setCamera({focalPoint:m,position:w})}}else throw new Error(`Incompatible view refs: ${n}!==${this.getFrameOfReferenceUID()}`)}setThreshold(e,r){const n=this._getApplicableVolumeActor(r);if(!n)return;const{volumeActor:i}=n;LL(i,e.threshold),this.viewportProperties.colormap||(this.viewportProperties.colormap={}),this.viewportProperties.colormap.threshold=e.threshold;const o=this.getColormap(r),a={viewportId:this.id,colormap:o,volumeId:r};nt(this.element,qe.COLORMAP_MODIFIED,a)}setProperties({voiRange:e,VOILUTFunction:r,invert:n,colormap:i,preset:o,interpolationType:a,slabThickness:s,sampleDistanceMultiplier:c}={},l,f=!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,l,f),i!=null&&i.name&&this.setColormap(i,l,f),(i==null?void 0:i.opacity)!=null&&this.setOpacity(i,l),(i==null?void 0:i.threshold)!=null&&this.setThreshold(i,l),e!==void 0&&this.setVOI(e,l,f),typeof a<"u"&&this.setInterpolationType(a),r!==void 0&&this.setVOILUTFunction(r,l,f),o!==void 0&&this.setPreset(o,l,f),s!==void 0&&this.setSlabThickness(s),c!==void 0&&this.setSampleDistanceMultiplier(c)}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.sampleDistanceMultiplier!==void 0&&this.setSampleDistanceMultiplier(r.sampleDistanceMultiplier),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=BR.find(s=>s.name===e)),a&&(wF(o,a),this.viewportProperties.preset=a,this.render(),n||nt(this.element,qe.PRESET_MODIFIED,{viewportId:this.id,volumeId:i.volumeId,actor:o,presetName:a.name}))}setSampleDistanceMultiplier(e){}async setVolumes(e,r=!1,n=!1){const i=e[0].volumeId,o=Ue.getVolume(i);if(!o)throw new Error(`imageVolume with id: ${i} does not exist, you need to create/allocate the volume first`);const a=o.metadata.FrameOfReferenceUID;this._isValidVolumeInputArray(e,a),this._FrameOfReferenceUID=a,e.forEach(c=>{this._addVolumeId(c.volumeId)});const s=[];for(let c=0;c{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(!da(n,"vtkVolume"))return;const i=n.actor,o=Ue.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-s),a=i.slice(3,6).map(s=>-s);return{viewPlaneNormal:o,viewUp:a}}getSlabThickness(){const e=this.getActors();let r=li.MINIMUM_SLAB_THICKNESS;return e.forEach(n=>{n.slabThickness>r&&(r=n.slabThickness)}),r}getIntensityFromWorld(e){const r=this.getDefaultActor();if(!da(r,"vtkVolume"))return;const{actor:n}=r,i=n.getMapper().getInputData(),o=Ue.getVolume(this.getVolumeId()),a=Zr(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 l;let{volumeId:r,sliceIndex:n}=e;if(!r){const f=this.getActors();if(!f)return;r=(l=f.find(u=>u.actor.getClassName()==="vtkVolume"))==null?void 0:l.referencedId}const i=this.getSliceIndex();n??(n=i);const{viewPlaneNormal:o,focalPoint:a}=this.getCamera(),s=r.includes("?")?"&":"?",c=o.map(f=>f.toFixed(3)).join(",");return`volumeId:${r}${s}sliceIndex=${n}&viewPlaneNormal=${c}`}_addVolumeId(e){this.volumeIds.add(e)}getAllVolumeIds(){return Array.from(this.volumeIds)}_configureRenderingPipeline(){const e=SF();for(const r in this.renderingPipelineFunctions)if(Object.prototype.hasOwnProperty.call(this.renderingPipelineFunctions,r)){const n=this.renderingPipelineFunctions[r];this[r]=e?n.contextPool:n.tiled}}}function V0(t,e){return!e||Vt(pt(t,e),0)}function _ue(t,e){e.classHierarchy.push("vtkAbstractImageMapper"),t.getIsOpaque=()=>!0,t.getCurrentImage=()=>null,t.getBoundsForSlice=()=>(Q.vtkErrorMacro("vtkAbstractImageMapper.getBoundsForSlice - NOT IMPLEMENTED"),Uf())}const Eue={slice:0,customDisplayExtent:[0,0,0,0,0,0],useCustomExtents:!1,backgroundColor:[0,0,0,1]};function bue(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Eue,r),e8.extend(t,e,r),Q.setGet(t,e,["slice","useCustomExtents"]),Q.setGetArray(t,e,["customDisplayExtent"],6),Q.setGetArray(t,e,["backgroundColor"],4),_ue(t,e)}var Due={extend:bue};function TF(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],en(l,l);const f=Wr.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 Iue(t,e,r){const n=TF(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 Mue(t,e,r){const n=TF(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:Oue,otherStaticMethods:Pue}=rx,{SlicingMode:Kn}=ix;function Rue(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 Kn.X:o=[n,(f[3]+f[2])/2,(f[5]+f[4])/2];break;case Kn.Y:o=[(f[1]+f[0])/2,n,(f[5]+f[4])/2];break;case Kn.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 Kn.I:l=Tc(a[0],s[0],s[1]);break;case Kn.J:l=Tc(a[1],s[2],s[3]);break;case Kn.K:l=Tc(a[2],s[4],s[5]);break;default:return 0}return l},t.setSliceFromCamera=n=>{const i=n.getFocalPoint();switch(e.slicingMode){case Kn.I:case Kn.J:case Kn.K:{const o=t.getSliceAtPosition(i);t.setSlice(o)}break;case Kn.X:t.setSlice(i[0]);break;case Kn.Y:t.setSlice(i[1]);break;case Kn.Z:t.setSlice(i[2]);break}},t.setXSlice=n=>{t.setSlicingMode(Kn.X),t.setSlice(n)},t.setYSlice=n=>{t.setSlicingMode(Kn.Y),t.setSlice(n)},t.setZSlice=n=>{t.setSlicingMode(Kn.Z),t.setSlice(n)},t.setISlice=n=>{t.setSlicingMode(Kn.I),t.setSlice(n)},t.setJSlice=n=>{t.setSlicingMode(Kn.J),t.setSlice(n)},t.setKSlice=n=>{t.setSlicingMode(Kn.K),t.setSlice(n)},t.getSlicingModeNormal=()=>{const n=[0,0,0],i=t.getCurrentImage().getDirection();switch(e.slicingMode){case Kn.X:n[0]=1;break;case Kn.Y:n[1]=1;break;case Kn.Z:n[2]=1;break;case Kn.I:fy(i,[1,0,0],n);break;case Kn.J:fy(i,[0,1,0],n);break;case Kn.K:fy(i,[0,0,1],n);break}return n};function r(){let n;switch(e.slicingMode){case Kn.X:n=0;break;case Kn.Y:n=1;break;case Kn.Z:n=2;break;default:e.closestIJKAxis={ijkMode:e.slicingMode,flip:!1};return}const i=t.getCurrentImage().getDirection(),o=iL(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===Kn.NONE)&&t.getCurrentImage()&&r(),e.closestIJKAxis),t.getBounds=()=>{const n=t.getCurrentImage();if(!n)return Uf();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 Kn.I:i[0]=a,i[1]=a;break;case Kn.J:i[2]=a,i[3]=a;break;case Kn.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 Uf();const a=o.getSpatialExtent(),{ijkMode:s}=t.getClosestIJKAxis();let c=n;switch(s!==e.slicingMode&&(c=t.getSliceAtPosition(n)),s){case Kn.I:a[0]=c-i,a[1]=c+i;break;case Kn.J:a[2]=c-i,a[3]=c+i;break;case Kn.K:a[4]=c-i,a[5]=c+i;break}return o.extentToBounds(a)},t.intersectWithLineForPointPicking=(n,i)=>Iue(n,i,t),t.intersectWithLineForCellPicking=(n,i)=>Mue(n,i,t),t.getCurrentImage=()=>t.getInputData()}const Aue={slicingMode:Kn.NONE,closestIJKAxis:{ijkMode:Kn.NONE,flip:!1},renderToRectangle:!1,sliceAtFocalPoint:!1,preferSizeOverAccuracy:!1};function _F(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Aue,r),Due.extend(t,e,r),Q.get(t,e,["slicingMode"]),Q.setGet(t,e,["closestIJKAxis","renderToRectangle","sliceAtFocalPoint","preferSizeOverAccuracy"]),rx.implementCoincidentTopologyMethods(t,e),Rue(t,e)}const Lue=Q.newInstance(_F,"vtkImageMapper");var Nue={newInstance:Lue,extend:_F,...Oue,...Pue,...ix};const{InterpolationType:_y}=bre,{vtkErrorMacro:x9}=Q,Ey=4;function kue(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>=Ey)return x9("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>=Ey?(x9("Invalid index"),0):e.componentData[r].componentWeight},t.setInterpolationTypeToNearest=()=>t.setInterpolationType(_y.NEAREST),t.setInterpolationTypeToLinear=()=>t.setInterpolationType(_y.LINEAR),t.getInterpolationTypeAsString=()=>Q.enumToString(_y,e.interpolationType)}const Vue={independentComponents:!1,interpolationType:_y.LINEAR,colorWindow:255,colorLevel:127.5,ambient:1,diffuse:0,opacity:1,useLookupTableScalarRange:!1,useLabelOutline:!1,labelOutlineThickness:[1],labelOutlineOpacity:1};function EF(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(Object.assign(e,Vue,r),Q.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=Uue.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()){Bue("Recomputing bounds..."),e.mapperBounds=r.map(o=>o),t.computeMatrix();const i=new Float64Array(16);Mn(i,e.matrix),ar.transformBounds(r,i,e.bounds),e.boundsMTime.modified()}return e.bounds},t.getBoundsForSlice=(r,n)=>{const i=e.mapper.getBoundsForSlice(r,n);if(!ar.isValid(i))return i;t.computeMatrix();const o=new Float64Array(16);return Mn(o,e.matrix),ar.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 Wue={mapper:null,property:null,forceOpaque:!1,forceTranslucent:!1,bounds:[...ar.INIT_BOUNDS]};function bF(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Wue,r),W4.extend(t,e,r),e.boundsMTime={},Q.obj(e.boundsMTime),Q.set(t,e,["property"]),Q.setGet(t,e,["mapper","forceOpaque","forceTranslucent"]),Q.getArray(t,e,["bounds"],6),Gue(t,e)}const $ue=Q.newInstance(bF,"vtkImageSlice");var zue={newInstance:$ue,extend:bF};function jue(t){return Object.values(Do).includes(t)?t:Do.LINEAR}function DF(t){const r={...ut(Za.IMAGE_PLANE,t)};return r.columnPixelSpacing||(r.columnPixelSpacing=1),r.rowPixelSpacing||(r.rowPixelSpacing=1),r.columnCosines||(r.columnCosines=[0,1,0]),r.rowCosines||(r.rowCosines=[1,0,0]),r.imagePositionPatient||(r.imagePositionPatient=[0,0,0]),r.imageOrientationPatient||(r.imageOrientationPatient=new Float32Array([1,0,0,0,1,0])),r}function IF(t){const e=t.imageId,{pixelRepresentation:r,bitsAllocated:n,bitsStored:i,highBit:o,photometricInterpretation:a,samplesPerPixel:s}=ut("imagePixelModule",e),{windowWidth:c,windowCenter:l,voiLUTFunction:f}=t,{modality:u}=ut("generalSeriesModule",e),d=ut("scalingModule",e),h=ut(Za.CALIBRATION,e),g=jue(f),p=DF(e);return{calibration:h,scalingFactor:d,voiLUTFunction:g,modality:u,imagePlaneModule:p,imagePixelModule:{bitsAllocated:n,bitsStored:i,samplesPerPixel:s,highBit:o,photometricInterpretation:a,pixelRepresentation:r,windowWidth:c,windowCenter:l,modality:u,voiLUTFunction:g}}}function lx(t){const{imagePlaneModule:e,imagePixelModule:r,voiLUTFunction:n,modality:i,scalingFactor:o,calibration:a}=IF(t);let{rowCosines:s,columnCosines:c}=e;(s==null||c==null)&&(s=[1,0,0],c=[0,1,0]);const l=Et(s[0],s[1],s[2]),f=Et(c[0],c[1],c[2]),u=Ve();mn(u,l,f);let d=e.imagePositionPatient;d==null&&(d=[0,0,0]);const h=e.columnPixelSpacing||t.columnPixelSpacing,g=e.rowPixelSpacing||t.rowPixelSpacing,p=t.columns,v=t.rows,y=is,m=1;return!r.photometricInterpretation&&t.sizeInBytes===3*t.width*t.height&&(t.numberOfComponents=3),{numberOfComponents:t.numberOfComponents||Hue(r.photometricInterpretation),origin:d,direction:[...l,...f,...u],dimensions:[p,v,m],spacing:[h,g,y],numVoxels:p*v*m,imagePlaneModule:e,imagePixelModule:r,bitsAllocated:r.bitsAllocated,voiLUTFunction:n,modality:i,scalingFactor:o,calibration:a,scanAxisNormal:u}}function Hue(t){let e=1;return(t==="RGB"||t!=null&&t.includes("YBR")||t==="PALETTE COLOR")&&(e=3),e}var MF={exports:{}};(function(t){(function(e,r){t.exports?t.exports=r():e.log=r()})(to,function(){var e=function(){},r="undefined",n=typeof window!==r&&typeof window.navigator!==r&&/Trident\/|MSIE /.test(window.navigator.userAgent),i=["trace","debug","info","warn","error"],o={},a=null;function s(p,v){var y=p[v];if(typeof y.bind=="function")return y.bind(p);try{return Function.prototype.bind.call(y,p)}catch{return function(){return Function.prototype.apply.apply(y,[p,arguments])}}}function c(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function l(p){return p==="debug"&&(p="log"),typeof console===r?!1:p==="trace"&&n?c:console[p]!==void 0?s(console,p):console.log!==void 0?s(console,"log"):e}function f(){for(var p=this.getLevel(),v=0;v=0&&I<=y.levels.SILENT)return I;throw new TypeError("log.setLevel() called with invalid level: "+D)}y.name=p,y.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},y.methodFactory=v||d,y.getLevel=function(){return x??w??m},y.setLevel=function(D,I){return x=E(D),I!==!1&&S(x),f.call(y)},y.setDefaultLevel=function(D){w=E(D),T()||y.setLevel(D,!1)},y.resetLevel=function(){x=null,_(),f.call(y)},y.enableAll=function(D){y.setLevel(y.levels.TRACE,D)},y.disableAll=function(D){y.setLevel(y.levels.SILENT,D)},y.rebuild=function(){if(a!==y&&(m=E(a.getLevel())),f.call(y),a===y)for(var D in o)o[D].rebuild()},m=E(a?a.getLevel():"WARN");var b=T();b!=null&&(x=E(b)),f.call(y)}a=new h,a.getLogger=function(v){if(typeof v!="symbol"&&typeof v!="string"||v==="")throw new TypeError("You must supply a name when creating a logger.");var y=o[v];return y||(y=o[v]=new h(v,a.methodFactory)),y};var g=typeof window!==r?window.log:void 0;return a.noConflict=function(){return typeof window!==r&&window.log===a&&(window.log=g),a},a.getLoggers=function(){return o},a.default=a,a})})(MF);var Kue=MF.exports;const Xue=Vl(Kue),OF=Xue.noConflict();typeof window<"u"&&(window.log=OF);function ux(t){const e=OF.getLogger(t[0]);return e.getLogger=(...r)=>ux(`${t}.${r.join(".")}`),e}function g8(...t){return ux(t.join("."))}const Vg=ux("cs3d"),p8=Vg.getLogger("core"),que=Vg.getLogger("tools"),Yue=Vg.getLogger("dicomImageLoader"),Jue=Vg.getLogger("ai"),Zue=Vg.getLogger("examples"),Que=g8("consistency","dicom"),efe=g8("consistency","image"),tfe=Object.freeze(Object.defineProperty({__proto__:null,aiLog:Jue,coreLog:p8,cs3dLog:Vg,dicomConsistencyLog:Que,examplesLog:Zue,getLogger:g8,getRootLogger:ux,imageConsistencyLog:efe,loaderLog:Yue,toolsLog:que},Symbol.toStringTag,{value:"Module"}));function PF(t){const e=Mu.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 fx(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 On(){return window.performance?performance.now():Date.now()}function nfe(t,e){return function(r){const n=((r-(e-.5))/(t-1)+.5)*255;return Math.min(Math.max(n,0),255)}}function rfe(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 RF(t,e,r){return r?rfe(r):nfe(t,e)}function ife(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=RF(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 ofe(t,e,r){let n=On();const i=t.voxelManager.getScalarData();t.stats.lastGetPixelDataTime=On()-n;const o=t.minPixelValue;let a=0,s=0;const c=i.length;if(n=On(),o<0)for(;s0||t.voi.windowWidth!==void 0&&t.voi.windowCenter!==void 0}function C9(t,e){return!t&&!e?!0:!t||!e?!1:t.id===e.id}function mfe(t,e){return r=>r*t+e}function vfe(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 yfe(t,e,r){return r?vfe(r):mfe(t,e)}function wfe(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=yfe(t.slope,t.intercept,i),u=RF(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 kF(t,e,r){return t.cachedLut!==void 0&&t.cachedLut.windowCenter===e.voi.windowCenter&&t.cachedLut.windowWidth===e.voi.windowWidth&&C9(t.cachedLut.modalityLUT,e.modalityLUT)&&C9(t.cachedLut.voiLUT,e.voiLUT)&&t.cachedLut.invert===e.invert&&!r||(gfe(e,t),wfe(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 xfe(t,e,r,n=!0){const i=t.renderingTools.lastRenderedIsColor;(!t.renderingTools.renderCanvas||i)&&(t.renderingTools.renderCanvas=ov(null,e.width,e.height),k5(t,e));const o=t.renderingTools.renderCanvas;if(!v8(t,e)&&!r)return o;(o.width!==e.width||o.height!==e.height)&&k5(t,e),e.stats=e.stats||{};const a=t.renderingTools.renderCanvasData,s=t.renderingTools.renderCanvasContext;let c=On();e.stats.lastLutGenerateTime=On()-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=y=>255-(y-d)*p:v=y=>(y-d)*p,dfe(e,v,a.data)}else{const f=kF(e,l,r);n?ffe(e,f,a.data):hfe(e,f,a.data)}return c=On(),s.putImageData(a,0,0),e.stats.lastPutImageDataTime=On()-c,o}function Cfe(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,m8(t,n);const i=xfe(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=y8(t)}const UT=0,BT=1,Sfe=2;function Tfe(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 _fe(t,e){let r;return te.Range[1]?r=e.MaxIndex+BT+1.5:r=(t+e.Shift)*e.Scale,Math.floor(r)}class w8{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=Tfe(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+UT,n=e+BT,i=e+Sfe;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=_fe(e,r);return n===this.NumberOfColors+UT?n=0:n===this.NumberOfColors+BT&&(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 S9=[0,0,0,0];function Efe(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 bfe(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&&iGT(Math.floor(255-(m-h)*v),0,255):y=m=>GT(Math.floor((m-h)*v),0,255),Pfe(e,y,f,s.data)}else{const u=kF(e,t.viewport,r);e.stats=e.stats||{},e.stats.lastLutGenerateTime=On()-a,Ofe(e,u,f,s.data)}return a=On(),c.putImageData(s,0,0),e.stats.lastPutImageDataTime=On()-a,n}function Afe(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,m8(t,n);const i=Rfe(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=y8(t)}function VF(t,e){const r=t.image;if(!t.canvas||!t.image)return;const n=On();if(r.stats={lastGetPixelDataTime:-1,lastStoredPixelDataToCanvasImageDataTime:-1,lastPutImageDataTime:-1,lastRenderTime:-1,lastLutGenerateTime:-1},r){let o=r.render;o||(t.viewport.colormap?o=Afe:r.color?o=ufe:o=Cfe),o(t,e)}const i=On()-n;r.stats.lastRenderTime=i,t.invalid=!1,t.needsRedraw=!1}function FF(t){return cm(t)}function d2(t,e){const r=FF(t);return r.invert(),r.transformPoint(e)}const Lfe={viewport:{}};function Nfe(){return{tlhc:{x:1,y:1},brhc:{x:1,y:1},rowPixelSpacing:1,columnPixelSpacing:1,presentationSizeMode:"NONE"}}function kfe(){const t=Nfe(),e={scale:1,translation:{x:0,y:0},voi:{windowWidth:void 0,windowCenter:void 0,voiLUTFunction:Do.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,Lfe.viewport)}function f1(t,e){if(t==null)throw new Error(e)}function Vfe(t){return!(t==null||t===0||t===180)}function UF(t,e=null){return f1(t,"getImageSize: parameter image must not be undefined"),f1(t.width,"getImageSize: parameter image must have width"),f1(t.height,"getImageSize: parameter image must have height"),Vfe(e)?{height:t.width,width:t.height}:{width:t.width,height:t.height}}function x8(t,e,r=null){f1(t,"getImageScale: parameter canvas must not be undefined"),f1(e,"getImageScale: parameter image must not be undefined");const n=UF(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&&Wfe(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=Nue.newInstance();n.setInputData(r);const i=zue.newInstance();i.setMapper(n);const{preferSizeOverAccuracy:o}=Iu().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,flipHorizontal:o}=this.getCameraNoRotation(),a=E9(this.initialViewUp,o,i,n),c=b4(a,r)*180/Math.PI,l=mn(Ve(),a,r);return pt(l,n)>=0?c:(360-c)%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};nt(this.element,qe.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]=d2(this._cpuFallbackEnabledElement,r),{origin:a,spacing:s,direction:c}=this.getImageData(),l=c.slice(0,3),f=c.slice(3,6);return bn(n,a,l,i*s[0]),bn(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=pn(Ve(),r,o),l=[pt(c,a)/n[0],pt(c,s)/n[1]];return T9(this._cpuFallbackEnabledElement,l)},this.canvasToWorldGPUContextPool=r=>{const n=this.getRenderer(),i=this.getVtkActiveCamera(),o=i.getClippingRange(),a=i.getDistance();i.setClippingRange(a,a+.1);const s=window.devicePixelRatio||1,{width:c,height:l}=this.canvas,f=c/l,u=[r[0]*s,r[1]*s],d=[u[0]/c,1-u[1]/l,0],h=n.normalizedDisplayToProjection(d[0],d[1],d[2]),g=n.projectionToView(h[0],h[1],h[2],f),p=n.viewToWorld(g[0],g[1],g[2]);return i.setClippingRange(o[0],o[1]),[p[0],p[1],p[2]]},this.canvasToWorldGPUTiled=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.worldToCanvasGPUContextPool=r=>{const n=this.getRenderer(),i=this.getVtkActiveCamera(),o=i.getClippingRange(),a=i.getDistance();i.setClippingRange(a,a+.1);const s=window.devicePixelRatio||1,{width:c,height:l}=this.canvas,f=c/l,u=n.worldToView(r[0],r[1],r[2]),d=n.viewToProjection(u[0],u[1],u[2],f),h=n.projectionToNormalizedDisplay(d[0],d[1],d[2]),g=h[0]*c,p=(1-h[1])*l;return i.setClippingRange(o[0],o[1]),[g/s,p/s]},this.worldToCanvasGPUTiled=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=(r=this.getCurrentImageIdIndex())=>this.imageIds[r],this.hasImageId=r=>this.imageKeyToIndexMap.has(r),this.hasImageURI=r=>this.imageKeyToIndexMap.has(r),this.customRenderViewportToCanvas=()=>{if(!this.useCPURendering)throw new Error("Custom cpu rendering pipeline should only be hit in CPU rendering mode");return this._cpuFallbackEnabledElement.image?(VF(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:{tiled:this.canvasToWorldGPUTiled,contextPool:this.canvasToWorldGPUContextPool}},worldToCanvas:{cpu:this.worldToCanvasCPU,gpu:{tiled:this.worldToCanvasGPUTiled,contextPool:this.worldToCanvasGPUContextPool}},getRenderer:{cpu:()=>this.getCPUFallbackError("getRenderer"),gpu:{tiled:this.getRendererTiled,contextPool:this.getRendererContextPool}},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=Lh(),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 Lh()}_configureRenderingPipeline(e){const r=SF();this.useCPURendering=e??Lh();for(const n in this.renderingPipelineFunctions)if(Object.prototype.hasOwnProperty.call(this.renderingPipelineFunctions,n)){const i=this.renderingPipelineFunctions[n];this.useCPURendering?this[n]=i.cpu:typeof i.gpu=="object"&&i.gpu.tiled&&i.gpu.contextPool?this[n]=r?i.gpu.contextPool:i.gpu.tiled:this[n]=i.gpu}this.useCPURendering?this._resetCPUFallbackElement():this._resetGPUViewport()}_resetCPUFallbackElement(){this._cpuFallbackEnabledElement={canvas:this.canvas,renderingTools:{},transform:new Fg,viewport:{rotation:0}}}_resetGPUViewport(){const e=this.getRenderer(),r=r8.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(){ze.addEventListener(qe.ELEMENT_DISABLED,function e(){clearTimeout(this.debouncedTimeout),ze.removeEventListener(qe.ELEMENT_DISABLED,e)})}getImageDataGPU(){const e=this.getDefaultActor();if(!e||!wc(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;if(!e)return;const 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=d2(this._cpuFallbackEnabledElement,o);return[a[0],a[1],0]},indexToWorld:(i,o)=>{const a=T9(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}}calibrateIfNecessary(e,r){const n=ut("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?Ea.PRE_RENDER:Ea.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=Ea.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(Rd.LINEAR),!this.useCPURendering){const r=this.getTransferFunction();Qw(r,this.initialTransferFunctionNodes);const i=x5(r).reduce((s,c)=>(s.push(c[0],c[1],c[2],c[3]),s),[]),o=this.getDefaultActor(),a=M4(i,o.actor);this.setColormap(a)}}resetToDefaultProperties(){var i;this.cpuRenderingInvalidated=!0,this.viewportStatus=Ea.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(Rd.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;if(!e)return{};const{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=S4(La(),r.rotation*Math.PI/180,i);o=Gt(Ve(),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=Po(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=d2(this._cpuFallbackEnabledElement,d),g=this.worldToCanvasCPU(i.focalPoint),p=d2(this._cpuFallbackEnabledElement,g),v=bt();Wn(v,b6(h[0],h[1]),b6(p[0],p[1]));const y=$fe({x:v[0],y:v[1]},r);r.translation.x-=y.x,r.translation.y-=y.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=cm(this._cpuFallbackEnabledElement);const u={previousCamera:i,camera:this.getCamera(),element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId};nt(this.element,qe.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=Ps([0,0],r,n);this.setPan(i,!1);const{flipVertical:o,flipHorizontal:a,viewPlaneNormal:s}=this.getCamera(),c=E9(this.initialViewUp,a,o,s);this.setCameraNoEvent({viewUp:c}),this.getVtkActiveCamera().roll(-e);const l=this.getPan(),f=this.getPan(this.fitToCanvasCamera),u=Ps([0,0],l,f),d=Zi([0,0],r,u);this.setPan(d,!1)}setInterpolationTypeGPU(e){const r=this.getDefaultActor();if(!r||!wc(r))return;const{actor:n}=r;n.getProperty().setInterpolationType(e),this.interpolationType=e}setInterpolationTypeCPU(e){const{viewport:r}=this._cpuFallbackEnabledElement;r.pixelReplication=e!==Rd.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&&wc(r)){if(da(r,"vtkVolume")){const i=r.actor.getProperty().getRGBTransferFunction(0);(!this.invert&&e||this.invert&&!e)&&c1(i),this.invert=e}else if(da(r,"vtkImageSlice")){const i=r.actor.getProperty().getRGBTransferFunction(0);(!this.invert&&e||this.invert&&!e)&&c1(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,voiLUTFunction:o.voiLUTFunction};const{lower:u,upper:d}=Pf(l,f,o.voiLUTFunction);e={lower:u,upper:d}}else{const{lower:s,upper:c}=e,{windowCenter:l,windowWidth:f}=Rg(s,c);i.voi||(i.voi={windowWidth:0,windowCenter:0,voiLUTFunction:o.voiLUTFunction}),i.voi.windowWidth=f,i.voi.windowCenter=l}this.voiRange=e;const a={viewportId:this.id,range:e};n||nt(this.element,qe.VOI_MODIFIED,a)}getTransferFunction(){const e=this.getDefaultActor();return!e||!wc(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||!wc(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===Do.SAMPLED_SIGMOID;if((f||!l||i)&&(l=(f?A4:PF)(c),this.invert&&c1(l),s.getProperty().setRGBTransferFunction(0,l),this.initialTransferFunctionNodes=x5(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};nt(this.element,qe.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}getImageDataMetadata(e){const r=e.imageId,n=lx(e),{numberOfComponents:i,origin:o,direction:a,dimensions:s,spacing:c,numVoxels:l,imagePixelModule:f,voiLUTFunction:u,modality:d,scalingFactor:h,calibration:g}=n;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)),{bitsAllocated:f.bitsAllocated,numberOfComponents:i,origin:o,direction:a,dimensions:s,spacing:c,numVoxels:l,imagePlaneModule:v,imagePixelModule:f}}matchImagesForOverlay(e,r){return(i=>{const o=ut(Za.IMAGE_PLANE,r),a=ut(Za.IMAGE_PLANE,i),s=o.imageOrientationPatient,c=a.imageOrientationPatient;if(s&&c){if(Vt(o.imageOrientationPatient,a.imageOrientationPatient)){const f=o.imagePositionPatient,u=a.imagePositionPatient;if(f&&u&&Vt(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=ut(Za.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=mn([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=Nt.newInstance({name:"Pixels",numberOfComponents:o,values:s}),l=Qm.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){b9.error(s)}}async setStack(e,r=0){if(this._throwIfDestroyed(),this.imageIds=e,r>e.length)throw new Error("Current image index is greater than the number of images in the stack");this.imageKeyToIndexMap.clear(),e.forEach((a,s)=>{this.imageKeyToIndexMap.set(a,s),this.imageKeyToIndexMap.set(Qr(a),s)}),this.currentImageIdIndex=r,this.targetImageIdIndex=r;const n=ut(lg.IMAGE_RETRIEVE_CONFIGURATION,e[r],"stack");this.imagesLoader=n?(n.create||rF)(n):this,this.stackInvalidated=!0,this.flipVertical=!1,this.flipHorizontal=!1,this.voiRange=null,this.interpolationType=Rd.LINEAR,this.invert=!1,this.viewportStatus=Ea.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 nt(this.element,qe.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=Vt(n,e.columnPixelSpacing),h=Vt(i,e.rowPixelSpacing),g=d||e.columnPixelSpacing===null&&n===1,p=h||e.rowPixelSpacing===null&&i===1,v=o===e.columns,y=a===e.rows,m=Vt(s.rowCosines,l),w=Vt(s.columnCosines,f),x=u===e.voxelManager.getScalarData().constructor.name;return g&&p&&v&&y&&m&&w&&x}_updateVTKImageDataFromCornerstoneImage(e){let n=this._getImagePlaneModule(e.imageId).imagePositionPatient;n==null&&(n=[0,0,0]),this._imageData.setOrigin(n);const i=this.getActor(this.id);i&&(i.referencedId=e.imageId),fx(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(),y=h.preScale,m=y==null?void 0:y.scalingParameters,w=(y==null?void 0:y.scaled)&&(m==null?void 0:m.rescaleIntercept)%1!==0||(m==null?void 0:m.rescaleSlope)%1!==0;if(v instanceof Float32Array&&w){const C={min:h.minPixelValue,max:h.maxPixelValue},_=Math.abs(C.max-C.min)/65535,E=C.min,b=v.length,D=new Uint16Array(b);let I=65535,P=0;for(let M=0;MD:h.getPixelData=()=>D,h.preScale={...h.preScale,scaled:!1}}this._setCSImage(h),this.viewportStatus=Ea.PRE_RENDER;const x={image:h,imageId:p,imageIdIndex:g,viewportId:this.id,renderingEngineId:this.renderingEngineId};nt(this.element,qe.STACK_NEW_IMAGE,x),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||nt(ze,qe.IMAGE_LOAD_ERROR,v),i(h)}function s(h,g,p){return ks(h,p).then(v=>{o.call(this,v,g,h)},v=>{a.call(this,v,g,h)})}const c=-5,l=gn.Interaction,f={imageId:e,imageIdIndex:r},u={useRGBA:!0,requestType:l},d={imageId:e,imageIdIndex:r,viewportId:this.id,renderingEngineId:this.renderingEngineId};nt(this.element,qe.PRE_STACK_NEW_IMAGE,d),zi.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),nt(this.element,qe.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};nt(ze,qe.IMAGE_LOAD_ERROR,o)}getLoaderImageOptions(e){const r=this.imageIds.indexOf(e),{transferSyntaxUID:n}=ut("transferSyntax",e)||{};return{useRGBA:!1,transferSyntaxUID:n,priority:5,requestType:gn.Interaction,additionalDetails:{imageId:e,imageIdIndex:r}}}async loadImages(e,r){const n=await Promise.allSettled(e.map(o=>{const a=this.getLoaderImageOptions(o);return ks(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(qe.IMAGE_LOAD_ERROR,{detail:i,cancelable:!0});ze.dispatchEvent(o)}return n}_loadAndDisplayImageGPU(e,r){if(!e){console.warn("No image id set yet to load");return}const n={imageId:e,imageIdIndex:r,viewportId:this.id,renderingEngineId:this.renderingEngineId};return nt(this.element,qe.PRE_STACK_NEW_IMAGE,n),this.imagesLoader.loadImages([e],this).then(i=>e)}_updateToDisplayImageCPU(e){const r=this.getImageDataMetadata(e),n=BF(this.canvas,e,this.modality,this._cpuFallbackEnabledElement.viewport.colormap),{windowCenter:i,windowWidth:o,voiLUTFunction:a}=n.voi;this.voiRange=Pf(o,i,a),this._cpuFallbackEnabledElement.image=e,this._cpuFallbackEnabledElement.metadata={...r},this.cpuImagePixelData=e.voxelManager.getScalarData();const s=Object.assign({},n,this._cpuFallbackEnabledElement.viewport);this._cpuFallbackEnabledElement.viewport=this.stackInvalidated?n:s,this.stackInvalidated=!1,this.cpuRenderingInvalidated=!0,this._cpuFallbackEnabledElement.transform=cm(this._cpuFallbackEnabledElement)}getSliceViewInfo(){throw new Error("Method not implemented.")}addImages(e){const r=[];e.forEach(n=>{const{imageId:i,...o}=n,a=Ue.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??Pn(),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,referencedId:e.imageId}),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 y=this._getInitialVOIRange(e);this.setVOI(y,{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.voiRange;const{windowCenter:r,windowWidth:n,voiLUTFunction:i}=e;let o=this._getVOIRangeFromWindowLevel(n,r,i);return o=this._getPTPreScaledRange()||o,o}_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,n=Do.LINEAR){let i,o;if(typeof r=="number"&&typeof e=="number"?(i=r,o=e):Array.isArray(r)&&Array.isArray(e)&&(i=r[0],o=e[0]),i!==void 0&&o!==void 0)return Pf(o,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=Ea.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;zfe(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;if(isNaN(this.targetImageIdIndex))return;const o=this.targetImageIdIndex,a=i.length;let s=o+e;n?s=(s+a)%a:s=Math.max(0,Math.min(a-1,s)),this.targetImageIdIndex=s;const c=i[s];Ue.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&&nt(this.element,qe.STACK_VIEWPORT_SCROLL,f)}setImageIdIndex(e){if(this._throwIfDestroyed(),this.currentImageIdIndex===e)return Promise.resolve(this.getCurrentImageId());const r=this._setImageIdIndex(e);return this.targetImageIdIndex=e,r}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||nt(this.element,qe.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||nt(this.element,qe.IMAGE_SPACING_CALIBRATED,r),this._publishCalibratedEvent=!1}jumpToWorld(e){const r=this.getImageIds(),n=this.getImageData(),{direction:i,spacing:o}=n,a=Pu({direction:i,spacing:o,imageIds:r},e,this.getCamera().viewPlaneNormal,{ignoreSpacing:!0}),s=r.indexOf(a);return s===-1?!1:(this.setImageIdIndex(s),this.render(),!0)}getRendererContextPool(){return this.getRenderingEngine().getRenderer(this.id)}getRendererTiled(){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)}_getVOIRangeForCurrentImage(){const{windowCenter:e,windowWidth:r,voiLUTFunction:n}=this.csImage;return this._getVOIRangeFromWindowLevel(r,e,n)}_getValidVOILUTFunction(e){return Object.values(Do).includes(e)?e:Do.LINEAR}getSliceInfo(){const e=this.getSliceIndex(),{dimensions:r}=this.getImageData();return{width:r[0],height:r[1],sliceIndex:e,slicePlane:2}}isReferenceViewable(e,r={}){const n=this.getCurrentImageIdIndex(),i=this.imageIds[n];if(!i||!e)return!1;const{referencedImageId:o,multiSliceReference:a}=e;if(o){if(o===i)return!0;e.referencedImageURI||(e.referencedImageURI=Qr(o));const{referencedImageURI:c}=e,l=this.imageKeyToIndexMap.get(c);if(r.asOverlay&&this.matchImagesForOverlay(i,o))return!0;if(l===void 0)return!1;if(r.withNavigation)return!0;const f=a&&this.imageKeyToIndexMap.get(a.referencedImageId);return n<=f&&n>=l}if(!super.isReferenceViewable(e,{...r,withOrientation:r==null?void 0:r.asVolume}))return!1;if(e.volumeId||e.FrameOfReferenceUID)return r.asVolume;const{cameraFocalPoint:s}=e;if(r.asNearbyProjection&&s){const{spacing:c,direction:l,origin:f}=this.getImageData(),u=l.slice(6,9),d=Jf({direction:l,spacing:c},u),h=pn(Ve(),s,f),g=pt(h,u),p=d/2;if(Math.abs(g)<=p)return!0}return!1}getViewReference(e={}){const{sliceIndex:r=this.getCurrentImageIdIndex()}=e,n=super.getViewReference(e),i=this.getCurrentImageId(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!=null&&e.referencedImageId)){(e==null?void 0:e.sliceIndex)!==void 0&&this.scroll(e.sliceIndex-this.targetImageIdIndex);return}const{referencedImageId:r}=e;e.referencedImageURI||(e.referencedImageURI=Qr(r));const{referencedImageURI:n}=e,i=this.imageKeyToIndexMap.get(n);if(i===void 0){b9.error(`No image URI found for ${n}`);return}this.scroll(i-this.targetImageIdIndex)}getViewReferenceId(e={}){const{sliceIndex:r=this.currentImageIdIndex}=e;return`imageId:${this.imageIds[r]}`}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 r=nm(e.name);this._cpuFallbackEnabledElement.viewport.colormap=r,this._cpuFallbackEnabledElement.renderingTools={},this.fillWithBackgroundColor(),this.cpuRenderingInvalidated=!0,this.render();const n={viewportId:this.id,colormap:e};nt(this.element,qe.COLORMAP_MODIFIED,n)}setColormapGPU(e){const i=this.getDefaultActor().actor.getProperty(),o=i.getRGBTransferFunction(),a=nm(e.name)||Q1.getPresetByName(e.name);if(o)o.applyColorMap(a),o.setMappingRange(this.voiRange.lower,this.voiRange.upper),i.setRGBTransferFunction(0,o);else{const c=Mu.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};nt(this.element,qe.COLORMAP_MODIFIED,s)}unsetColormapGPU(){throw new Error("unsetColormapGPU not implemented.")}_getImagePlaneModule(e){var n,i;const r=DF(e);return this.hasPixelSpacing=!r.usingDefaultValues||((n=this.calibration)==null?void 0:n.scale)>0||((i=this.calibration)==null?void 0:i.rowPixelSpacing)>0,this.calibration||(this.calibration=r.calibration),r}isInAcquisitionPlane(){return!0}}function uf(t,e){const{imageData:r}=t.getImageData(),n=t.canvasToWorld(e);return Zr(r,n)}function fg(t,e){return t.indexToWorld(e)}function Hfe(t,e){const{imageData:r}=t.getImageData(),n=fg(r,e);return t.worldToCanvas(n)}class lr extends Ir{constructor(e){super(e),this._useAcquisitionPlaneForViewPlane=!1,this.getNumberOfSlices=()=>{const{numberOfSlices:n}=N5(this)||{};return n},this.resetCameraForResize=()=>this.resetCamera({resetPan:!0,resetZoom:!0,resetToCenter:!0,resetRotation:!1,suppressEvents:!0}),this.getCurrentImageIdIndex=(n,i=!0)=>{const{currentStepIndex:o}=jd(this,n||this.getVolumeId(),i);return o},this.getSliceIndex=()=>{const{imageIndex:n}=N5(this)||{};return n},this.getCurrentImageId=()=>{const n=this.getDefaultActor();if(!n||!da(n,"vtkVolume"))return;const i=Ue.getVolume(this.getVolumeId());if(!i)return;const{viewPlaneNormal:o,focalPoint:a}=this.getCamera();return Pu(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=Ue.getVolume(i),a=this.getCamera(),{focalPoint:s,position:c,viewPlaneNormal:l}=a,f=Jf(o,l),u=cx(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:y}=Bh(s,c,u,l,f,v);p.push({sliceIndex:g+v,point:y})}return p};const{orientation:r}=this.options;if(r&&r!==wu.ACQUISITION){this.applyViewOrientation(r);return}this._useAcquisitionPlaneForViewPlane=!0}async setVolumes(e,r=!1,n=!1){const i=e[0].volumeId,o=Ue.getVolume(i);if(!o)throw new Error(`imageVolume with id: ${i} does not exist`);return this._useAcquisitionPlaneForViewPlane?(this._setViewPlaneToAcquisitionPlane(o),this._useAcquisitionPlaneForViewPlane=!1):this.options.orientation&&typeof this.options.orientation=="string"&&this.options.orientation.includes("_reformat")&&this._setViewPlaneToReformatOrientation(this.options.orientation,o),super.setVolumes(e,r,n)}async addVolumes(e,r=!1,n=!1){const i=Ue.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):this.options.orientation&&typeof this.options.orientation=="string"&&this.options.orientation.includes("_reformat")&&this._setViewPlaneToReformatOrientation(this.options.orientation,i),super.addVolumes(e,r,n)}jumpToWorld(e){const{focalPoint:r}=this.getCamera(),n=[0,0,0];Sn(n,e,r);const i=this.getCamera(),o=i.viewPlaneNormal,a=pt(n,o),s=Et(o[0],o[1],o[2]);if(Er(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];Kr(c,i.focalPoint,s),Kr(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(e===wu.ACQUISITION)({viewPlaneNormal:n,viewUp:i}=super._getAcquisitionPlaneOrientation());else if(e===wu.REFORMAT||e.includes("_reformat"))({viewPlaneNormal:n,viewUp:i}=CF(this,{useViewportNormal:!0}));else if(gu[e])({viewPlaneNormal:n,viewUp:i}=gu[e]);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();if(!e){console.warn("No active camera found");return}e.getParallelProjection()?e.setClippingRange(-li.MAXIMUM_RAY_DISTANCE,li.MAXIMUM_RAY_DISTANCE):e.setClippingRange(li.MINIMUM_SLAB_THICKNESS,li.MAXIMUM_RAY_DISTANCE)}_setViewPlaneToReformatOrientation(e,r){let n,i;if(r){const{direction:o}=r;({viewPlaneNormal:n,viewUp:i}=xF(o.slice(0,3),o.slice(3,6),o.slice(6,9),e))}else({viewPlaneNormal:n,viewUp:i}=this._getAcquisitionPlaneOrientation());this.setCamera({viewPlaneNormal:n,viewUp:i}),this.initialViewUp=i,this.resetCamera()}_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()}getBlendMode(e){const r=this.getActors(),n=(e==null?void 0:e.length)>0?r.find(i=>e.includes(i.uid)):r[0];return(n==null?void 0:n.blendMode)||(n==null?void 0:n.actor.getMapper().getBlendMode())}setBlendMode(e,r=[],n=!1){let i=this.getActors();(r==null?void 0: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),o.blendMode=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=Wr.newInstance(),y=Wr.newInstance(),m=[v,y];let w=li.MINIMUM_SLAB_THICKNESS;h.slabThickness&&(w=h.slabThickness),this.setOrientationOfClippingPlanes(m,w,f,u),g.addClippingPlane(v),g.addClippingPlane(y)}}),i&&gu[this.viewportProperties.orientation]!==void 0){const h=gu[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};nt(this.element,qe.CAMERA_RESET,h)}return!0}setSlabThickness(e,r=[]){e<.1&&(e=.1);let n=this.getActors();(r==null?void 0:r.length)>0&&(n=n.filter(o=>r.includes(o.uid))),n.forEach(o=>{da(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=>{da(n,"vtkVolume")&&(n.slabThickness=li.MINIMUM_SLAB_THICKNESS)});const r=this.getCamera();this.updateClippingPlanesForActors(r),this.triggerCameraModifiedEventIfNecessary(r,r),this.viewportProperties.slabThickness=void 0}isInAcquisitionPlane(){const e=this.getImageData();if(!e)return!1;const{direction:r}=e,{viewPlaneNormal:n}=this.getCamera(),i=[r[6],r[7],r[8]];return Math.abs(pt(n,i))>.99}getSliceViewInfo(){const{width:e,height:r}=this.getCanvas(),n=uf(this,[0,0]),i=uf(this,[e-1,0]),o=uf(this,[0,r-1]),a=Sn(Ve(),i,n),s=Sn(Ve(),o,n),c=mn(Ve(),a,s);en(a,a),en(s,s),en(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(b=>Hfe(this,b)).reduce((b,D)=>(b.minX=Math.min(b.minX,D[0]),b.minY=Math.min(b.minY,D[1]),b.maxX=Math.max(b.maxX,D[0]),b.maxY=Math.max(b.maxY,D[1]),b),{minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}),v=uf(this,[p.minX,p.minY]),y=v4(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=uf(this,[p.maxX,p.maxY]),w=Sn(Ve(),m,v),x=ei(La(),y),{viewPlaneNormal:C}=this.getCamera();if(C.filter(b=>Math.abs(b)>is).length>1)throw new Error("getSliceInfo is not supported for oblique views");const T=C.findIndex(b=>Math.abs(b)>1-is);if(T===-1)throw new Error("Unable to determine slice axis");const _=pt(a,w)+1,E=pt(s,w)+1;return{sliceIndex:this.getSliceIndex(),width:_,height:E,slicePlane:T,sliceToIndexMatrix:y,indexToSliceMatrix:x}}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=Ue.getVolume(r.volumeId);return r.referencedImageId=Pu(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=li.MINIMUM_SLAB_THICKNESS,this.viewportProperties.slabThickness=void 0,this.updateClippingPlanesForActors(this.getCamera())),e||(e=this.getVolumeId());const n=Ue.getVolume(e);if(!n)throw new Error(`imageVolume with id: ${e} does not exist in cache`);if(h8(r.actor,n),wc(r)){const l=r.actor.getProperty().getRGBTransferFunction(0);Qw(l,this.initialTransferFunctionNodes)}const i={...super.getVOIModifiedEventDetail(e)};this.resetCamera({resetPan:!0,resetZoom:!0,resetToCenter:!0,resetCameraRotation:!0}),nt(this.element,qe.VOI_MODIFIED,i)}getSlicesClippingPlanes(){const e=this.getSlicePlaneCoordinates(),{viewPlaneNormal:r}=this.getCamera(),n=li.MINIMUM_SLAB_THICKNESS;return e.map(({point:i,sliceIndex:o})=>{const a=[Wr.newInstance(),Wr.newInstance()];return this.setOrientationOfClippingPlanes(a,n,r,i),{sliceIndex:o,planes:a.map(s=>({normal:s.getNormal(),origin:s.getOrigin()}))}})}}class dx extends Ir{constructor(e){super(e),this.setSampleDistanceMultiplier=o=>{this.getActors().forEach(s=>{if(da(s,"vtkVolume")){const l=s.actor.getMapper();if(l&&l.getInputData){const f=l.getInputData();if(f){const u=f.getSpacing();let g=(u[0]+u[1]+u[2])/6*(o||1);g!==void 0&&l.setSampleDistance&&(l.getSampleDistance(),l.setSampleDistance(g))}}}}),this.render()},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!==wu.ACQUISITION&&this.applyViewOrientation(n)}isInAcquisitionPlane(){return!1}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(-li.MAXIMUM_RAY_DISTANCE,li.MAXIMUM_RAY_DISTANCE):i.setClippingRange(li.MINIMUM_SLAB_THICKNESS,li.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=li.MINIMUM_SLAB_THICKNESS,this.viewportProperties.slabThickness=void 0,this.updateClippingPlanesForActors(this.getCamera())),e||(e=this.getVolumeId());const n=Ue.getVolume(e);if(!n)throw new Error(`imageVolume with id: ${e} does not exist in cache`);if(h8(r.actor,n),wc(r)){const i=r.actor.getProperty().getRGBTransferFunction(0);Qw(i,this.initialTransferFunctionNodes)}this.setCamera(this.initialCamera),nt(this.element,qe.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(-li.MAXIMUM_RAY_DISTANCE,li.MAXIMUM_RAY_DISTANCE):e.setClippingRange(li.MINIMUM_SLAB_THICKNESS,li.MAXIMUM_RAY_DISTANCE)}resetSlabThickness(){return null}}async function GF(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 Ir))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 WF(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 Ir)){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)}function $F(t,e,r){for(const n of r){const i=t.getViewport(n);if(!i)throw new Error(`Viewport with Id ${n} does not exist`);if(!i.addImages){console.warn(`Viewport with Id ${n} does not have addImages. Cannot add image segmentation to this viewport.`);return}}r.forEach(n=>{t.getViewport(n).addImages(e)})}class Kfe{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 Xfe{constructor(e){this.actor=e}getInputData(){return this.actor.getImage()}}class qfe{constructor(e,r){this.canvasProperties=new Kfe(this),this.visibility=!1,this.mapper=new Xfe(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 y=0;yD*255);let b=w+(S<<2);for(let D=S;Di)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)}setMapper(e){this.mapper=e}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,y=-1/0;for(let x=0;xi)return;const m=v-g+1,w=y-p+1;l.putImageData(f,0,0,g,p,m,w),r.drawImage(c,g,p,m,w,g,p,m,w)}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}}const xD=class xD{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 imageIdToFrameEnd(e){const r=this.imageIdToFrames(e);return Array.isArray(r)?r[1]:r}static imageIdToFrameStart(e){const r=this.imageIdToFrames(e);return Array.isArray(r)?r[0]:r}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}`)}};xD.frameRangeExtractor=/(\/frames\/|[&?]frameNumber=)([^/&?]*)/i;let Wh=xD;const T1=class T1 extends s0{constructor(e){super({...e,canvas:e.canvas||ts(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(),nt(this.element,qe.STACK_NEW_IMAGE,{element:this.element,viewportId:this.id,viewport:this,renderingEngineId:this.renderingEngineId,time:this.videoElement.currentTime,duration:this.videoElement.duration}),nt(this.element,qe.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(qe.ELEMENT_DISABLED,this.elementDisabledHandler)}removeEventListeners(){this.canvas.removeEventListener(qe.ELEMENT_DISABLED,this.elementDisabledHandler)}elementDisabledHandler(){this.removeEventListeners(),this.videoElement.remove()}getImageDataMetadata(e){const r=typeof e=="string"?e:e.imageId,n=ut(Za.IMAGE_PLANE,r);let i=n.rowCosines,o=n.columnCosines;(n.usingDefaultValues||i==null||o==null)&&(i=[1,0,0],o=[0,1,0]);const s=Et(i[0],i[1],i[2]),c=Et(o[0],o[1],o[2]),{rows:l,columns:f}=n,u=Ve();mn(u,s,c);let d=n.imagePositionPatient;d==null&&(d=[0,0,0]);const h=n.columnPixelSpacing||1,g=n.rowPixelSpacing||1,p=n.columns,v=n.rows,y=1,m=1;return this.hasPixelSpacing=!!n.columnPixelSpacing,{bitsAllocated:8,numberOfComponents:3,origin:d,rows:l,columns:f,direction:[...s,...c,...u],dimensions:[p,v,m],spacing:[h,g,y],hasPixelSpacing:this.hasPixelSpacing,numVoxels:p*v*m,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=ut(Za.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=ut(Za.GENERAL_SERIES,e);this.modality=o==null?void 0:o.Modality,this.metadata=this.getImageDataMetadata(e);let{cineRate:a,numberOfFrames:s}=ut(Za.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]])}getSliceIndexForImage(e){if(e){if(typeof e=="string")return Wh.imageIdToFrameStart(e);if(e.referencedImageId)return Wh.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,r=q1.FRAME){this.scrollSpeed=r===q1.SECOND?e*this.fps:e}resetProperties(){this.setProperties({loop:!1,muted:!0,voiRange:{lower:0,upper:255}})}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)=>Y4(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(T1.frameRangeExtractor),n=r?e.substring(0,r.index):e;return this.imageId.includes(n)}setVOI(e){this.voiRange=e;const r=this.setColorTransform(e,this.averageWhite);this.canvas.style.filter=r}setWindowLevel(e=256,r=128){const n=r-e/2,i=r+e/2-1;this.setVOI({lower:n,upper:i}),this.setColorTransform({lower:n,upper:i},this.averageWhite)}setAverageWhite(e){this.averageWhite=e,this.setColorTransform(this.voiRange,e)}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(e=this.getCurrentImageIdIndex()){var n;return(n=this.imageId)==null?void 0:n.replace("/frames/1",`/frames/${e+1}`)}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,multiSliceReference:a}=e;if(!super.isReferenceViewable(e))return!1;const s=this.getCurrentImageId();if(!n){const d=s.indexOf(":");n=s.substring(d+1,s.length-1)}if(r.withNavigation)return!0;const c=this.getSliceIndex();if(a){const d=Wh.imageIdToFrameEnd(a.referencedImageId);return c>=o&&c<=d}if(o!==void 0)return c===o;if(!i)return!1;const l=i.match(T1.frameRangeExtractor);if(!l||!l[2])return!0;const f=l[2].split("-").map(d=>Number(d)),u=c+1;return f[0]<=u&&u<=(f[1]??f[0])}setViewReference(e){typeof e.sliceIndex=="number"?this.setFrameNumber(e.sliceIndex+1):Array.isArray(e.sliceIndex)&&this.setFrameRange(e.sliceIndex)}getViewReference(e){const r=(e==null?void 0:e.sliceIndex)??(this.isPlaying?this.frameRange[0]:this.getCurrentImageIdIndex()),n=(e==null?void 0:e.rangeEndSliceIndex)??(this.isPlaying?this.frameRange[1]-1:void 0),i=n>r?{sliceIndex:n,referencedImageId:this.getCurrentImageId(n)}:void 0;return{...super.getViewReference(e),referencedImageId:this.getViewReferenceId(e),sliceIndex:r,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,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 Fg;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{imageId:i,...o}=n,a=Ue.getImage(i),s=this.createActorMapper(a),c=n.actorUID??Pn();s&&(r.push({uid:c,actor:s,referencedId:i,...o}),n.callback&&n.callback({imageActor:s,imageId:i}))}),this.setActors(r)}createActorMapper(e){return new qfe(this,e)}};T1.frameRangeExtractor=/(\/frames\/|[&?]frameNumber=)([^/&?]*)/i;let dg=T1;const Yfe=` +`;function cse(t,e,r){if(e.apply(t)){const i=t.getIndependentComponents();return`${t.getMTime()}-${i}-${r}`}return"0"}const Ua=new Float64Array(16),Gc=new Float64Array(16),b2=new Float64Array(16),Ll=new Float64Array(4),Ii=new Float64Array(4);function lse(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();Pt(Ua),ur(Ua,Ua,c);const l=o.getMatrix();wn(Gc,l),$r(Gc,Gc),Dn(Ua,Gc,Ua);const f=s.getWorldToIndex();Dn(Ua,f,Ua),$r(b2,Ua),l1(Gc,[.5,.5,.5]),Dn(Ua,Gc,Ua);const u=s.getDimensions();Pt(Gc),fl(Gc,Gc,[1/u[0],1/u[1],1/u[2]]),Dn(Ua,Gc,Ua),e.UBO.setArray("SCTCMatrix",Ua);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,y=1;h===XD.I?(p=0,v=1,y=2):h===XD.J&&(p=1,v=2,y=0),Ll[p]=g,Ll[v]=d[v*2]-.5,Ll[y]=d[y*2]-.5,Ll[3]=1,Hu(Ll,Ll,b2),e.UBO.setArray("Origin",Ll),Ii[p]=g,Ii[v]=d[v*2+1]+.5,Ii[y]=d[y*2]-.5,Ii[3]=1,Hu(Ii,Ii,b2),J6(Ii,Ii,Ll),Ii[3]=1,e.UBO.setArray("Axis1",Ii),Ii[p]=g,Ii[v]=d[v*2]-.5,Ii[y]=d[y*2+1]+.5,Ii[3]=1,Hu(Ii,Ii,b2),J6(Ii,Ii,Ll),Ii[3]=1,e.UBO.setArray("Axis2",Ii);const m=[1,1,1,1],w=[0,0,0,0],x=e.textureViews[0],C=x.getTexture().getScale(),S=x.getTexture().getNumberOfComponents();for(let T=0;T{const i=e.WebGPUImageSlice.getRenderable().getProperty();t.getTextureViews()[0].getTexture().getNumberOfComponents();const a=1,s=cse(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()===vd.NEAREST?"nearest":"linear";(!e.clampSampler||s!==e.clampSampler.getOptions().minFilter)&&(e.clampSampler=fk.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=ir.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=ir.substitute(c,"//VTK::Image::Sample",[" var computedColor: vec4 ="," textureSampleLevel(imgTexture, clampSampler, input.tcoordVS, 0.0);","//VTK::Image::Sample"]).result:c=ir.substitute(c,"//VTK::Image::Sample",[" var computedColor: vec4 ="," textureSampleLevel(imgTexture, clampSampler, input.tcoordVS, 0.0);","//VTK::Image::Sample"]).result,c=ir.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 use={rowLength:1024};function fse(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,use,r),MS.extend(t,e,r),t.setFragmentShaderTemplate(sse),e.UBO=ah.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={},pr(e.lutBuildTime,{mtime:0}),e.imagemat=Pt(new Float64Array(16)),e.imagematinv=Pt(new Float64Array(16)),e.VBOBuildTime={},pr(e.VBOBuildTime),lse(t,e)}const dse=Wn(fse,"vtkWebGPUImageMapper");Is("vtkImageMapper",dse);function hse(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],wn(e.keyMatrices.bcwc,n),e.renderable.getIsIdentity()?Pt(e.keyMatrices.normalMatrix):(Pr(e.keyMatrices.normalMatrix,e.keyMatrices.bcwc),e.keyMatrices.normalMatrix[3]=0,e.keyMatrices.normalMatrix[7]=0,e.keyMatrices.normalMatrix[11]=0,$r(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix),wn(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix)),ur(e.keyMatrices.bcwc,e.keyMatrices.bcwc,[-e.bufferShift[0],-e.bufferShift[1],-e.bufferShift[2]]),ur(e.keyMatrices.bcsc,e.keyMatrices.bcwc,[-i[0],-i[1],-i[2]]),e.keyMatricesTime.modified()}return e.keyMatrices}}const gse={bufferShift:void 0,keyMatrixTime:null,keyMatrices:null,propID:void 0};function pse(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,gse,r),cr.extend(t,e,r),e.keyMatricesTime={},pr(e.keyMatricesTime,{mtime:0}),e.keyMatrices={normalMatrix:new Float64Array(16),bcwc:new Float64Array(16),bcsc:new Float64Array(16)},e.keyMatrixTime={},pr(e.keyMatrixTime,{mtime:0}),e.keyMatrices={mcwc:Pt(new Float64Array(16))},e.bufferShift=[0,0,0,0],Wo(t,e,["propID","keyMatricesTime"]),hse(t,e)}const mse=Wn(pse,"vtkWebGPUImageSlice");Is("vtkImageSlice",mse);function vse(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();wn(e.keyMatrices.bcwc,o),ur(e.keyMatrices.bcsc,e.keyMatrices.bcwc,[-a[0],-a[1],-a[2]]),e.keyMatricesTime.modified()}return e.keyMatrices}}const yse={propID:void 0,keyMatricesTime:null};function wse(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,yse,r),cr.extend(t,e,r),e.keyMatricesTime={},Q.obj(e.keyMatricesTime,{mtime:0}),e.keyMatrices={bcwc:new Float64Array(16),bcsc:new Float64Array(16)},Q.get(t,e,["propID","keyMatricesTime"]),vse(t,e)}const xse=Q.newInstance(wse,"vtkWebGPUVolume");Is("vtkVolume",xse);function Cse(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 Sse={};function Tse(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Sse,r),cr.extend(t,e,r),Cse(t,e)}const _se=Q.newInstance(Tse,"vtkWebGPUPixelSpaceCallbackMapper");Is("vtkPixelSpaceCallbackMapper",_se);const YD=[[0,-1,0],[0,1,0],[0,0,-1],[0,0,1]],JD=[[0,-1,0],[0,1,0]],Ese=[[0,-1,0],[0,1,0],[0,0,-1]],bse=[[0,-1,0],[0,1,0],[0,0,1]];var wh;let v0=(wh=class{static copyMap(e,r){for(const[n,i]of r.rows)e.rows.set(n,structuredClone(i))}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.numComps=1,this.pixelDataConstructor=Uint8Array,this.updateScalarData=function(i){i.fill(0);const o=(a,s,c)=>{const{start:l,end:f,value:u}=s;for(let d=l;d{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)return;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,y=v?l+1:l,m=v?f:u;let w=v?c[l+1]:f;if((m==null?void 0:m.value)===o&&(m==null?void 0:m.end)===a){m.end++,(w==null?void 0:w.value)===o&&w.start===a+1?(m.end=w.end,c.splice(l,1)):(w==null?void 0:w.start)===a&&(w.start++,w.start===w.end&&(c.splice(l,1),w=c[l],(w==null?void 0:w.start)===a+1&&w.value===o&&(m.end=w.end,c.splice(l,1))));return}if((w==null?void 0:w.value)===o&&w.start===a+1){w.start--,(m==null?void 0:m.end)>a&&(m.end=a,m.end===m.start&&c.splice(l,1));return}if((w==null?void 0:w.start)===a&&w.end===a+1){w.value=o;const x=c[l+1];(x==null?void 0:x.start)==a+1&&x.value===o&&(c.splice(l+1,1),w.end=x.end);return}a===(w==null?void 0:w.start)&&w.start++,v&&h>a+1?c.splice(y,0,p,{start:a+1,end:m.end,value:m.value}):c.splice(y,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}toIJK(e){const r=e%this.jMultiple,n=(e-r)/this.jMultiple%this.height,i=Math.floor(e/this.kMultiple);return[r,n,i]}toIndex([e,r,n]){return e+n*this.kMultiple+r*this.jMultiple}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}has(e){const r=e%this.jMultiple,n=(e-r)/this.jMultiple,i=this.getRLE(r,n);return(i==null?void 0:i.value)!==void 0}delete(e){const r=e%this.width,n=(e-r)/this.width,i=this.rows.get(n);if(!i)return;const o=this.findIndex(i,r),a=i[o];if(!a||a.start>r)return;if(a.end===r+1){a.end--,a.start>=a.end&&(i.splice(o,1),i.length||this.rows.delete(n));return}if(a.start===r){a.start++;return}const s={value:a.value,start:r+1,end:a.end};a.end=r,i.splice(o+1,0,s)}findIndex(e,r){for(let n=0;nh&&h[0].value===r);e.push(...d)}return o}fillFrom(e,r){for(let n=r[2][0];n<=r[2][1];n++)for(let i=r[1][0];i<=r[1][1];i++){let o,a;for(let s=r[0][0];s<=r[0][1];s++){const c=e(s,i,n);if(c===void 0){o=void 0;continue}a||(a=[],this.rows.set(i+n*this.height,a)),o&&o.value!==c&&(o=void 0),o||(o={start:s,end:s,value:c},a.push(o)),o.end++}}}findAdjacents(e,{diagonals:r=!0,planar:n=!0,singlePlane:i=!1}){const[o,a,s,c]=e,{start:l,end:f}=o,u=l>0&&this.getRLE(l-1,a,s),d=f0?l-1:l,f=this.height||w<0||w>=this.depth)continue;const x=this.getRun(m,w);if(x)for(const C of x){const S=c||i&&JD||n&&y>0&&bse||n&&y<0&&Ese||YD;C.end<=h[0]||C.start>=h[1]||g.push([C,m,w,S])}}return g}},wh.getScalarData=function(e=Uint8ClampedArray){const r=new e(this.frameSize);return this.map.updateScalarData(r),r},wh),Fv=class sp{constructor(e={}){this._dimensions=3,this._length=0,this._byteSize=4,this.growSize=128;const{initialSize:r=1024,dimensions:n=3,growSize:i=128}=e,o=r*n;this.growSize=i,this.array=new ArrayBuffer(o*this._byteSize),this.data=new Float32Array(this.array),this._dimensions=n}forEach(e){for(let r=0;r=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=sp.create3(e.length);let o=0;for(let a=0;an.push(i)),n}static create2(e=128){return new sp({initialSize:e,dimensions:2})}};function dk(t){const e=Be(),r=t.getDimensions(),n=Fv.create3(r[0]),i=Fv.create3(r[1]),o=Fv.create3(r[2]),a=t.getDirection(),s=a.slice(0,3),c=a.slice(3,6),l=a.slice(6,9),f=t.getSpacing(),[u,d,h]=f,g=t.indexToWorld([0,0,0]),p=bt(s[0]*u,s[1]*u,s[2]*u),v=bt(c[0]*d,c[1]*d,c[2]*d),y=bt(l[0]*h,l[1]*h,l[2]*h),m=Be();for(let S=0;S{const[_,E,b]=S,D=_*3,O=E*3,L=b*3;return T[0]=w[D]+x[O]+C[L],T[1]=w[D+1]+x[O+1]+C[L+1],T[2]=w[D+2]+x[O+2]+C[L+2],T}}function Z4(t,e){const{pointInShapeFn:r,callback:n,boundsIJK:i,returnPoints:o=!1}=e;let a;if(t.getScalarData)a=t.getScalarData();else{const u=t.getPointData().getScalars();if(u)a=u.getData();else{const{voxelManager:d}=t.get("voxelManager")||{};d&&(a=d.getCompleteScalarDataArray())}}const s=t.getDimensions(),c=[[0,s[0]],[0,s[1]],[0,s[2]]],f=Dse({imageData:t,bounds:i||c,scalarData:a,pointInShapeFn:r,callback:n});return o?f:void 0}function Dse({imageData:t,bounds:e,scalarData:r,pointInShapeFn:n,callback:i}){const[[o,a],[s,c],[l,f]]=e,{numComps:u}=t,d=t.getDimensions(),h=dk(t),g=[0,0,0],p=u||r.length/d[2]/d[1]/d[0],v=d[0]*p,y=d[1]*v,m=[];for(let w=l;w<=f;w++){g[2]=w;const x=w*y;for(let C=s;C<=c;C++){g[1]=C;const S=x+C*v;for(let T=o;T<=a;T++){g[0]=T;const _=h(g);if(n(_,g)){const E=S+T*p;let b;p>2?b=[r[E],r[E+1],r[E+2]]:b=r[E],m.push({value:b,index:E,pointIJK:g,pointLPS:_.slice()}),i({value:b,index:E,pointIJK:g,pointLPS:_})}}}}return m}function Ise({voxelManager:t,bounds:e,imageData:r,pointInShapeFn:n,callback:i,returnPoints:o}){const[[a,s],[c,l],[f,u]]=e,d=dk(r),h=[0,0,0],g=[];for(let p=f;p<=u;p++){h[2]=p;for(let v=c;v<=l;v++){h[1]=v;for(let y=a;y<=s;y++){h[0]=y;const m=d(h);if(n(m,h)){const w=t.toIndex(h),x=t.getAtIndex(w);o&&g.push({value:x,index:w,pointIJK:[...h],pointLPS:m.slice()}),i==null||i({value:x,index:w,pointIJK:h,pointLPS:m})}}}}return g}const Ose=5*1024;let wc=class Oi{get id(){return this._id}constructor(e,r){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=(n,i,o)=>{const a=this.toIndex([n,i,o]);return this._get(a)},this.setAtIJK=(n,i,o,a)=>{const s=this.toIndex([n,i,o]),c=this._set(s,a);return c!==!1&&(this.modifiedSlices.add(o),Oi.addBounds(this.boundsIJK,[n,i,o])),c},this.getAtIJKPoint=([n,i,o])=>this.getAtIJK(n,i,o),this.setAtIJKPoint=([n,i,o],a)=>{this.setAtIJK(n,i,o,a)},this.getAtIndex=n=>this._get(n),this.setAtIndex=(n,i)=>{const o=this._set(n,i);if(o!==!1){const a=this.toIJK(n);this.modifiedSlices.add(a[2]),Oi.addBounds(this.boundsIJK,a)}return o},this.getMiddleSliceData=()=>{const n=Math.floor(this.dimensions[2]/2);return this.getSliceData({sliceIndex:n,slicePlane:2})},this.forEach=(n,i={})=>{const o=i.boundsIJK||this.getBoundsIJK(),a=i.isInObject||this.isInObject||(()=>!0),s=i.returnPoints||!1,c=i.imageData,l=Math.min(o[0][0],o[0][1]),f=Math.max(o[0][0],o[0][1]),u=Math.min(o[1][0],o[1][1]),d=Math.max(o[1][0],o[1][1]),h=Math.min(o[2][0],o[2][1]),g=Math.max(o[2][0],o[2][1]),p=[];if(c)return Ise({voxelManager:this,imageData:i.imageData,bounds:[[l,f],[u,d],[h,g]],pointInShapeFn:a,callback:n,returnPoints:s});if(this.map){if(this.map instanceof v0)return this.rleForEach(n,i);for(const v of this.map.keys()){const y=this.toIJK(v);if(!a(null,y))continue;const m=this._get(v);s&&p.push({value:m,index:v,pointIJK:y,pointLPS:null}),n({value:m,index:v,pointIJK:y,pointLPS:null})}return p}else{for(let v=h;v<=g;v++){const y=v*this.frameSize;for(let m=u;m<=d;m++){const w=y+m*this.width;for(let x=l,C=w+x;x<=f;x++,C++){const S=this.getAtIndex(C),T=[x,m,v];a(null,T)&&(s&&p.push({value:S,index:C,pointIJK:T,pointLPS:null}),n({value:S,index:C,pointIJK:[x,m,v],pointLPS:null}))}}}return p}},this.getSliceData=({sliceIndex:n,slicePlane:i})=>{const[o,a,s]=this.dimensions,c=o*a,l=n*c;let f;const u=this.getConstructor();function d(g){return typeof g=="function"}if(!d(u))return new Uint8Array(0);let h;switch(i){case 0:f=a*s,h=new u(f);for(let g=0;g{const o=Array.isArray(i);if(e===void 0&&(e=o?[...i]:i,r=o?[...i]:i),o)for(let a=0;a[0,e-1])}getBoundsIJK(){return this.boundsIJK[0][0]{e[0]=1/0,e[1]=-1/0})}clear(){var e,r;(e=this.map)==null||e.clear(),this.clearBounds(),this.modifiedSlices.clear(),(r=this.points)==null||r.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,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(a*=n,[r[a++],r[a++],r[a++]]),_id:i||"_createRGBScalarVolumeVoxelManager",_set:(a,s)=>{a*=3;const c=!Kt(r[a],s);return r[a++]=s[0],r[a++]=s[1],r[a++]=s[2],c},numberOfComponents:n,scalarData:r});return o.clear=()=>{r.fill(0)},o}static createImageVolumeVoxelManager({dimensions:e,imageIds:r,numberOfComponents:n=1,id:i}){const o=e[0]*e[1];function a(u){const d=Math.floor(u/o);if(d<0||d>=e[2])return{};const h=r[d];if(!h)return console.warn(`ImageId not found for sliceIndex: ${d}`),{pixelData:null,pixelIndex:null};const g=ke.getImage(h);if(!g)return console.warn(`Image not found for imageId: ${h}`),{pixelData:null,pixelIndex:null};const p=g.voxelManager,v=u%o;return{voxelManager:p,pixelIndex:v}}function s(u){const{voxelManager:d,pixelIndex:h}=a(u);return!d||h===null?null:d.getAtIndex(h)}function c(u,d){const{voxelManager:h,pixelIndex:g}=a(u);if(!h||g===null)return!1;const p=h.getAtIndex(g),v=!Kt(d,p);return v&&(h.setAtIndex(g,d),!0)}const l=()=>{const{voxelManager:u,pixelIndex:d}=a(0);return!u||d===null?null:u.getConstructor()},f=new Oi(e,{_get:s,_set:c,numberOfComponents:n,_getConstructor:l,_id:i||"createImageVolumeVoxelManager"});return f.getMiddleSliceData=()=>{const u=Math.floor(e[2]/2);return f.getSliceData({sliceIndex:u,slicePlane:2})},f.clear=()=>{for(const u of r)ke.getImage(u).voxelManager.clear()},f.getRange=()=>{let u=1/0,d=-1/0;for(const h of r){const g=ke.getImage(h);g&&(g.minPixelValued&&(d=g.maxPixelValue))}return u===1/0&&d===-1/0?[0,0]:[u,d]},f._getScalarDataLength=()=>{const{voxelManager:u,pixelIndex:d}=a(0);return!u||d===null?0:u.getScalarDataLength()*e[2]},f.getCompleteScalarDataArray=()=>{const u=f._getConstructor();if(!u)return new Uint8Array(0);const d=f.getScalarDataLength(),h=new u(d),g=e[0]*e[1]*n;for(let p=0;p{const d=e[0]*e[1]*n,h=f._getConstructor();let g=1/0,p=-1/0;for(let v=0;v4||n<1||n===2))throw new Error(`Number of components ${n} must be 1, 3 or 4`);return n>1?Oi._createRGBScalarVolumeVoxelManager({dimensions:e,scalarData:r,numberOfComponents:n,id:i}):Oi._createNumberVolumeVoxelManager({dimensions:e,scalarData:r,id:i})}static createScalarDynamicVolumeVoxelManager({imageIdGroups:e,dimensions:r,dimensionGroupNumber:n=1,timePoint:i=0,numberOfComponents:o=1,id:a}){let s=0;if(n!==void 0?s=n-1:i!==void 0&&(console.warn("Warning: timePoint parameter is deprecated. Please use dimensionGroupNumber instead. timePoint is zero-based while dimensionGroupNumber starts at 1."),s=i),!o){const f=ke.getImage(e[0][0]);if(!f)throw new Error("Unable to determine number of components: No image found");if(o=f.getPixelData().length/(r[0]*r[1]),o>4||o<1||o===2)throw new Error(`Number of components ${o} must be 1, 3 or 4`)}const c=e.map(f=>Oi.createImageVolumeVoxelManager({dimensions:r,imageIds:f,numberOfComponents:o,id:a})),l=new Oi(r,{_get:f=>c[s]._get(f),_set:(f,u)=>c[s]._set(f,u),numberOfComponents:o,_id:a||"createScalarDynamicVolumeVoxelManager"});return l.getScalarDataLength=()=>c[s].getScalarDataLength(),l.getConstructor=()=>c[s].getConstructor(),l.getRange=()=>c[s].getRange(),l.getMiddleSliceData=()=>c[s].getMiddleSliceData(),l.setTimePoint=f=>{console.warn("Warning: setTimePoint is deprecated. Please use setDimensionGroupNumber instead. Note that timePoint is zero-based while dimensionGroupNumber starts at 1."),l.setDimensionGroupNumber(f+1)},l.setDimensionGroupNumber=f=>{s=f-1,l._get=u=>c[s]._get(u),l._set=(u,d)=>c[s]._set(u,d)},l.getAtIndexAndTimePoint=(f,u)=>(console.warn("Warning: getAtIndexAndTimePoint is deprecated. Please use getAtIndexAndDimensionGroup instead. Note that timePoint is zero-based while dimensionGroupNumber starts at 1."),l.getAtIndexAndDimensionGroup(f,u+1)),l.getAtIndexAndDimensionGroup=(f,u)=>c[u-1]._get(f),l.getTimePointScalarData=f=>(console.warn("Warning: getTimePointScalarData is deprecated. Please use getDimensionGroupScalarData instead. Note that timePoint is zero-based while dimensionGroupNumber starts at 1."),l.getDimensionGroupScalarData(f+1)),l.getDimensionGroupScalarData=f=>c[f-1].getCompleteScalarDataArray(),l.getCurrentTimePointScalarData=()=>(console.warn("Warning: getCurrentTimePointScalarData is deprecated. Please use getCurrentDimensionGroupScalarData instead."),l.getCurrentDimensionGroupScalarData()),l.getCurrentDimensionGroupScalarData=()=>c[s].getCompleteScalarDataArray(),l.getCurrentTimePoint=()=>(console.warn("Warning: getCurrentTimePoint is deprecated. Please use getCurrentDimensionGroupNumber instead. Note that timePoint is zero-based while dimensionGroupNumber starts at 1."),s),l.getCurrentDimensionGroupNumber=()=>s+1,l}static createImageVoxelManager({width:e,height:r,scalarData:n,numberOfComponents:i=1,id:o}){const a=[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?Oi._createRGBScalarVolumeVoxelManager({dimensions:a,scalarData:n,numberOfComponents:i,id:o}):Oi._createNumberVolumeVoxelManager({dimensions:a,scalarData:n,id:o})}static _createNumberVolumeVoxelManager({dimensions:e,scalarData:r,id:n}){const i=new Oi(e,{_get:o=>r[o],_set:(o,a)=>{const s=r[o]!==a;return r[o]=a,s},_getConstructor:()=>r.constructor,_id:n||"_createNumberVolumeVoxelManager"});return i.scalarData=r,i.clear=()=>{i.scalarData.fill(0)},i.getMiddleSliceData=()=>{const o=Math.floor(e[2]/2);return i.getSliceData({sliceIndex:o,slicePlane:2})},i}static createMapVoxelManager({dimension:e,id:r}){const n=new Map,i=new Oi(e,{_get:n.get.bind(n),_set:(o,a)=>n.set(o,a)&&!0,_id:r||"createMapVoxelManager"});return i.map=n,i}static createHistoryVoxelManager(e,r){const n=new Map,{dimensions:i}=e,o=new Oi(i,{_get:a=>n.get(a),_set:function(a,s){if(n.has(a))s===n.get(a)&&n.delete(a);else{const c=this.sourceVoxelManager.getAtIndex(a);if(c===s)return!1;n.set(a,c)}this.sourceVoxelManager.setAtIndex(a,s)},_id:r||"createHistoryVoxelManager"});return o.map=n,o.scalarData=e.scalarData,o.sourceVoxelManager=e,o}static createRLEHistoryVoxelManager(e,r){const{dimensions:n}=e,i=new v0(n[0],n[1],n[2]),o=new Oi(n,{_get:a=>i.get(a),_set:function(a,s){const c=i.get(a);if(c===void 0){const l=this.sourceVoxelManager.getAtIndex(a);if(l===s||l===void 0&&s===0||s===null)return!1;i.set(a,l??0)}else(s===c||s===null)&&(i.delete(a),s=c);this.sourceVoxelManager.setAtIndex(a,s)},_getScalarData:v0.getScalarData,_updateScalarData:a=>(i.updateScalarData(a),a),_id:r||"createRLEHistoryVoxelManager"});return o.map=i,o.sourceVoxelManager=e,o}static createLazyVoxelManager({dimensions:e,planeFactory:r,id:n}){const i=new Map,[o,a]=e,s=o*a,c=new Oi(e,{_get:l=>i.get(Math.floor(l/s))[l%s],_set:(l,f)=>{const u=Math.floor(l/s);let d=i.get(u);return d||(d=r(o,a),i.set(u,d)),d[l%s]=f,!0},_id:n||"createLazyVoxelManager"});return c.map=i,c}static createRLEVolumeVoxelManager({dimensions:e,id:r}){const[n,i,o]=e,a=new v0(n,i,o),s=new Oi(e,{_get:c=>a.get(c),_set:(c,l)=>(a.set(c,l),!0),_getScalarData:v0.getScalarData,_updateScalarData:c=>(a.updateScalarData(c),c),_id:r||"createRLEVolumeVoxelManager"});return s.map=a,s.getPixelData=a.getPixelData.bind(a),s}static createRLEImageVoxelManager({dimensions:e,id:r}){const[n,i]=e;return Oi.createRLEVolumeVoxelManager({dimensions:[n,i,1],id:r})}static addInstanceToImage(e){const{width:r,height:n}=e,i=e.voxelManager.getScalarData();if(i.length>=r*n){e.voxelManager=Oi.createScalarVolumeVoxelManager({dimensions:[r,n,1],scalarData:i});return}e.voxelManager=Oi.createRLEVolumeVoxelManager({dimensions:[r,n,1]}),e.getPixelData=e.voxelManager.getPixelData,e.sizeInBytes=Ose}};class qd{constructor(e){this._imageIdsIndexMap=new Map,this._imageURIsIndexMap=new Map,this.cornerstoneImageMetaData=null,this.isPreScaled=!1,this.numTimePoints=null,this.numFrames=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=nie.newInstance(),this.vtkOpenGLTexture.setVolumeId(l),this.voxelManager=g??wc.createImageVolumeVoxelManager({dimensions:i,imageIds:r,numberOfComponents:p}),this.numVoxels=this.dimensions[0]*this.dimensions[1]*this.dimensions[2],v||(v=u1.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=Ar(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;eke.getImage(r))}}let Ag={};const qu={add:(t,e)=>{qu.addRaw(t,{...e,metadata:structuredClone(e.metadata)})},addRaw:(t,e)=>{const r=e.type;Ag[t]||(Ag[t]={}),Ag[t][r]=e.metadata},get:(t,e)=>{var r;return(r=Ag[e])==null?void 0:r[t]},clear:()=>{Ag={}}};Zh(qu.get);const Ai=new k4("imageLoadPool");Ai.grabDelay=0;Ai.setMaxSimultaneousRequests(un.Interaction,1e3);Ai.setMaxSimultaneousRequests(un.Thumbnail,1e3);Ai.setMaxSimultaneousRequests(un.Prefetch,1e3);const $y={};let jy;function hk(t,e){const r=ke.getImageLoadObject(t);if(r)return ZD(r.promise,t),r;const n=t.split(":")[0],i=$y[n]||jy;if(!i)throw new Error(`loadImageFromImageLoader: No image loader found for scheme '${n}'`);const o=i(t,e);return ZD(o.promise,t),o}function ZD(t,e){Promise.resolve(t).then(r=>{Mse(r),nt(He,Xe.IMAGE_LOADED,{image:r})}).catch(r=>{const n={imageId:e,error:r};nt(He,Xe.IMAGE_LOAD_FAILED,n)})}function Mse(t){if(!t.voxelManager){const{width:e,height:r,numberOfComponents:n}=t,i=wc.createImageVoxelManager({scalarData:t.getPixelData(),width:e,height:r,numberOfComponents:n});t.voxelManager=i,t.getPixelData=()=>i.getScalarData(),delete t.imageFrame.pixelData}}function gk(t,e={priority:0,requestType:"prefetch"}){if(t===void 0)throw new Error("loadImage: parameter imageId must not be undefined");return hk(t,e).promise}function Ds(t,e={priority:0,requestType:"prefetch"}){if(t===void 0)throw new Error("loadAndCacheImage: parameter imageId must not be undefined");const r=hk(t,e);return ke.getImageLoadObject(t)||ke.putImageLoadObject(t,r),r.promise}function Pse(t,e={priority:0,requestType:"prefetch"}){if(!t||t.length===0)throw new Error("loadAndCacheImages: parameter imageIds must be list of image Ids");return t.map(n=>Ds(n,e))}function xm(t,e={}){var p;if(t===void 0)throw new Error("createAndCacheDerivedImage: parameter imageId must not be undefined");e.imageId===void 0&&(e.imageId=`derived:${Tn()}`);const{imageId:r,skipCreateBuffer:n,onCacheAdd:i,voxelRepresentation:o}=e,a=lt("imagePlaneModule",t),s=a.rows*a.columns,{TypedArrayConstructor:c}=A4((p=e.targetBuffer)==null?void 0:p.type,s),l=new c(n?1:s),f=r,u=lt("imagePlaneModule",t);qu.add(f,{type:"imagePlaneModule",metadata:u});const d=lt("generalSeriesModule",t);qu.add(f,{type:"generalSeriesModule",metadata:d}),qu.add(f,{type:"generalImageModule",metadata:{instanceNumber:e.instanceNumber}});const h=lt("imagePixelModule",t);qu.add(f,{type:"imagePixelModule",metadata:{...h,bitsAllocated:8,bitsStored:8,highBit:7,samplesPerPixel:1,pixelRepresentation:0}});const g=eE(r,{scalarData:l,onCacheAdd:i,skipCreateBuffer:n,targetBuffer:{type:l.constructor.name},voxelRepresentation:o,dimensions:[a.columns,a.rows],spacing:[a.columnPixelSpacing,a.rowPixelSpacing],origin:a.imagePositionPatient,direction:a.imageOrientationPatient,frameOfReferenceUID:a.frameOfReferenceUID,referencedImageId:t});return g.referencedImageId=t,ke.getImageLoadObject(r)||ke.putImageSync(r,g),g}function Q4(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:${Tn()}`,...e};return xm(n,{...o,instanceNumber:i+1})})}function eE(t,e){const{scalarData:r,origin:n,direction:i,targetBuffer:o,skipCreateBuffer:a,onCacheAdd:s,frameOfReferenceUID:c,voxelRepresentation:l,referencedImageId:f}=e,u=e.dimensions,d=e.spacing;if(!u||!d)throw new Error("createAndCacheLocalImage: dimensions and spacing are required");const h=u[0],g=u[1],p=d[0],v=d[1],y={frameOfReferenceUID:c,rows:g,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:n??[0,0,0],pixelSpacing:[v,p],rowPixelSpacing:v,columnPixelSpacing:p},m=h*g,w=r.length/m;let x;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");x=r}else if(!a){const{TypedArrayConstructor:k}=A4(o==null?void 0:o.type,m);x=new k(m)}let C,S,T;if(x instanceof Uint8Array)C=8,S=8,T=7;else if(x instanceof Uint16Array)C=16,S=16,T=15;else if(x instanceof Int16Array)C=16,S=16,T=15;else if(x instanceof Float32Array)C=32,S=32,T=31;else throw new Error("Unsupported scalarData type");const _={samplesPerPixel:1,photometricInterpretation:x.length>u[0]*u[1]?"RGB":"MONOCHROME2",rows:g,columns:h,bitsAllocated:C,bitsStored:S,highBit:T},E={imagePlaneModule:y,imagePixelModule:_};["imagePlaneModule","imagePixelModule"].forEach(k=>{qu.add(t,{type:k,metadata:E[k]||{}})});const b=t,D=l===wy.RLE&&wc.createRLEImageVoxelManager({dimensions:u,id:b})||wc.createImageVoxelManager({height:g,width:h,numberOfComponents:w,scalarData:x,id:b});let O=x[0],L=x[0];for(let k=1;kL&&(L=x[k]);const P={imageId:t,intercept:0,windowCenter:0,windowWidth:0,color:_.photometricInterpretation==="RGB",numberOfComponents:_.samplesPerPixel,dataType:o==null?void 0:o.type,slope:1,minPixelValue:O,maxPixelValue:L,rows:_.rows,columns:_.columns,getCanvas:void 0,height:_.rows,width:_.columns,rgba:void 0,columnPixelSpacing:y.columnPixelSpacing,rowPixelSpacing:y.rowPixelSpacing,FrameOfReferenceUID:y.frameOfReferenceUID,invert:!1,getPixelData:()=>D.getScalarData(),voxelManager:D,sizeInBytes:r.byteLength,referencedImageId:f};return s==null||s(P),ke.putImageSync(P.imageId,P),P}function pk(t){const e=({additionalDetails:n})=>n.imageId?n.imageId!==t:!0;Ai.filterRequests(e);const r=ke.getImageLoadObject(t);r&&r.cancelFn()}function Rse(t){t.forEach(e=>{pk(e)})}function Lse(){const t=Ai.getRequestPool();Object.keys(t).forEach(e=>{const r=t[e];Object.keys(r).forEach(n=>{const i=r[n].pop();if(!i)return;const o=i.additionalDetails,{imageId:a,volumeId:s}=o;let c;a?c=ke.getImageLoadObject(a):s&&(c=ke.getVolumeLoadObject(s)),c&&c.cancel()}),Ai.clearRequestStack(e)})}function yd(t,e){$y[t]=e}function Ase(t){const e=jy;return jy=t,e}function Nse(){Object.keys($y).forEach(t=>delete $y[t]),jy=void 0}function kse(t,e={}){return Q4(t,{...e,targetBuffer:{type:"Uint8Array"}})}function Vse(t,e={}){return xm(t,{...e,targetBuffer:{type:"Uint8Array"}})}const Fse=Object.freeze(Object.defineProperty({__proto__:null,cancelLoadAll:Lse,cancelLoadImage:pk,cancelLoadImages:Rse,createAndCacheDerivedImage:xm,createAndCacheDerivedImages:Q4,createAndCacheDerivedLabelmapImage:Vse,createAndCacheDerivedLabelmapImages:kse,createAndCacheLocalImage:eE,loadAndCacheImage:Ds,loadAndCacheImages:Pse,loadImage:gk,registerImageLoader:yd,registerUnknownImageLoader:Ase,unregisterAllImageLoaders:Nse},Symbol.toStringTag,{value:"Module"}));function mk(t){const e=t[0],{pixelRepresentation:r,bitsAllocated:n,bitsStored:i,highBit:o,photometricInterpretation:a,samplesPerPixel:s}=lt("imagePixelModule",e),c=[],l=lt("voiLutModule",e);let f;if(l){const{windowWidth:m,windowCenter:w}=l;if(f=l==null?void 0:l.voiLUTFunction,Array.isArray(m))for(let x=0;x({distance:l(p),imageId:p}));h.sort((p,v)=>v.distance-p.distance);const g=h.length;c=Math.abs(h[g-1].distance-h[0].distance)/(g-1)}const{sliceThickness:f,spacingBetweenSlices:u}=lt("imagePlaneModule",t[0]),{strictZSpacingForVolumeViewport:d}=xw().rendering;return(c===0||isNaN(c))&&!d&&(u?(console.debug("Could not calculate spacing. Using spacingBetweenSlices"),c=u):f?(console.debug("Could not calculate spacing and no spacingBetweenSlices. Using sliceThickness"),c=f):(console.debug("Could not calculate spacing. The VolumeViewport visualization is compromised. Setting spacing to 1 to render"),c=1)),c}function tE(t,e){const{imagePositionPatient:r,imageOrientationPatient:n}=lt("imagePlaneModule",t[0]);if(!e){const f=bt(n[0],n[1],n[2]),u=bt(n[3],n[4],n[5]);e=Be(),Ln(e,f,u)}const i=t[0].split(":")[0]==="wadouri",o=vk(t);let a;function s(f){const{imagePositionPatient:u}=lt("imagePlaneModule",f),d=Be();return Sn(d,r,u),St(d,e)}if(i){const f=[t[0],t[Math.floor(t.length/2)]];a=t;const u=s(f[0]),d=s(f[1]);u-d<0&&a.reverse()}else{const f=t.map(u=>({distance:s(u),imageId:u}));f.sort((u,d)=>d.distance-u.distance),a=f.map(u=>u.imageId)}const{imagePositionPatient:c}=lt("imagePlaneModule",a[0]);return{zSpacing:o,origin:c,sortedImageIds:a}}function yk(t){const e=lt("modalityLutModule",t)||{},r=lt("generalSeriesModule",t)||{},{modality:n}=r,i={rescaleSlope:e.rescaleSlope||1,rescaleIntercept:e.rescaleIntercept??0,modality:n},o=lt("scalingModule",t)||{};return{...i,...n==="PT"&&{suvbw:o.suvbw,suvbsa:o.suvbsa,suvlbm:o.suvlbm},...n==="RTDOSE"&&{doseGridScaling:o.DoseGridScaling,doseSummation:o.DoseSummation,doseType:o.DoseType,doseUnit:o.DoseUnit}}}const nE=t=>Object.values(t).some(r=>typeof r=="number"&&!Number.isInteger(r)),QD={Uint8Array:"Uint8Array",Int16Array:"Int16Array",Uint16Array:"Uint16Array",Float32Array:"Float32Array"};function p1(t,e){const r=mk(t),{ImageOrientationPatient:n,PixelSpacing:i,Columns:o,Rows:a}=r,s=bt(n[0],n[1],n[2]),c=bt(n[3],n[4],n[5]),l=Be();Ln(l,s,c);const{zSpacing:f,origin:u,sortedImageIds:d}=tE(t,l),h=t.length,g=[i[1],i[0],f],p=[o,a,h].map(y=>Math.floor(y)),v=[...s,...c,...l];return{dimensions:p,spacing:g,origin:u,dataType:Use(d,r),direction:v,metadata:r,imageIds:d,volumeId:e,voxelManager:null,numberOfComponents:r.PhotometricInterpretation==="RGB"?3:1}}function Use(t,e){const{BitsAllocated:r,PixelRepresentation:n}=e,i=n===1,o=Bse(t);if(o)return o;const[a,s,c]=[0,Math.floor(t.length/2),t.length-1],l=[a,s,c].map(h=>yk(t[h])),f=l.some(h=>h.rescaleIntercept<0||h.rescaleSlope<0),u=l.some(h=>nE(h)),d=ww();switch(r){case 8:return"Uint8Array";case 16:return d&&u?"Float32Array":i||f?"Int16Array":!i&&!f?"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.`)}}function Bse(t){const r=[0,Math.floor(t.length/2),t.length-1].map(i=>ke.getImage(t[i]));if(!r.every(Boolean))return null;const n=r[0].getPixelData().constructor.name;return r.every(i=>i.getPixelData().constructor.name===n)&&n in QD?QD[n]:null}let Hy=class wk{constructor(e){this.name=e||"unknown"}static as(e){if(e.iterator)return e.iterator;const r=new wk("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 s0=new Map,e9="imageRetrieveConfiguration",Cm={IMAGE_RETRIEVE_CONFIGURATION:e9,clear:()=>{s0.clear()},add:(t,e)=>{s0.set(t,e)},clone:()=>new Map(s0),restore:t=>{s0.clear(),t.forEach((e,r)=>{s0.set(r,e)})},get:(t,...e)=>{if(t===e9)return e.map(r=>s0.get(r)).find(r=>r!==void 0)}};Zh(Cm.get.bind(Cm));function m1(t){const e=Go(),r=[];return e.forEach(n=>{const o=n.getVolumeViewports().filter(a=>a.hasVolumeId(t));r.push(...o)}),r}const RS=t=>{const e=Gse(t);e!=null&&e.length&&e.forEach(({renderingEngine:r,viewportIds:n})=>{r.hasBeenDestroyed||r.renderViewports(n)})};function Gse(t){const e=Go(),r=[];return e.forEach(n=>{const i=m1(t);i.length&&r.push({renderingEngine:n,viewportIds:i.map(o=>o.id)})}),r}const t9=[{id:"initialImages",retrieveType:"single"}],Wse=[{id:"lossySequential",retrieveType:"singleFast"},{id:"finalSequential",retrieveType:"singleFinal"}],sC=[{offset:-1,imageQualityStatus:va.ADJACENT_REPLICATE},{offset:1,imageQualityStatus:va.ADJACENT_REPLICATE},{offset:2,imageQualityStatus:va.FAR_REPLICATE}],zse=[{id:"initialImages",positions:[.5,0,-1],retrieveType:"default",requestType:un.Thumbnail,priority:5,nearbyFrames:sC},{id:"quarterThumb",decimate:4,offset:3,requestType:un.Thumbnail,retrieveType:"multipleFast",priority:6,nearbyFrames:sC},{id:"halfThumb",decimate:4,offset:1,priority:7,requestType:un.Thumbnail,retrieveType:"multipleFast",nearbyFrames:sC},{id:"quarterFull",decimate:4,offset:2,priority:8,requestType:un.Thumbnail,retrieveType:"multipleFinal"},{id:"halfFull",decimate:4,offset:0,priority:9,requestType:un.Thumbnail,retrieveType:"multipleFinal"},{id:"threeQuarterFull",decimate:4,offset:1,priority:10,requestType:un.Thumbnail,retrieveType:"multipleFinal"},{id:"finalFull",decimate:4,offset:3,priority:11,requestType:un.Thumbnail,retrieveType:"multipleFinal"},{id:"errorRetrieve"}];function xk(t,e,r=0){const n=[];for(let i=r;i=a)continue;const c={...r,imageId:o,imageQualityStatus:a};ke.setPartialImage(o,c),t.successCallback(o,c)}catch(o){console.warn("Couldn't fill nearby item ",i.itemId,o)}}const B0=class B0{constructor(e){this.stages=e.stages||t9,this.retrieveOptions=e.retrieveOptions||{}}loadImages(e,r){return new jse(this,e,r).loadImages()}};B0.createProgressive=Ck,B0.interleavedRetrieveStages={stages:zse},B0.singleRetrieveStages={stages:t9},B0.sequentialRetrieveStages={stages:Wse};let Sm=B0;class jse{constructor(e,r,n){this.outstandingRequests=0,this.stageStatusMap=new Map,this.displayedIterator=new Hy("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||Ds)(n,r),s=Hy.as(a);let c=!1;return s.forEach(async(f,u)=>{const d=ke.getImageQuality(n);if(!f){console.warn("No image retrieved",n);return}const{imageQualityStatus:h}=f;if(c||(c=h===va.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),$se(this.listener,e,f)},o).finally(()=>{if(!c&&i)ke.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||un.Interaction,d={imageId:n};Ai.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};nt(He,Xe.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||xk(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 Ck(t){return new Sm(t)}const n9=un.Prefetch;class Sk extends qd{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;Ai.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,RS(o)),n===i){s.callbacks.forEach(u=>u(e));const f={FrameOfReferenceUID:l,volumeId:o};nt(He,Xe.IMAGE_VOLUME_LOADING_COMPLETED,f)}}updateTextureAndTriggerEvents(e,r,n=va.FULL_RESOLUTION){const i=this.imageIdIndexToFrameIndex(e),{cachedFrames:o,numFrames:a,totalNumFrames:s}=this,{FrameOfReferenceUID:c}=this.metadata;if(o[i]>n||o[i]===va.FULL_RESOLUTION)return;const f=n===va.FULL_RESOLUTION;o[e]=n,this.framesUpdated++,f&&(this.framesLoaded++,this.framesProcessed++);const u={FrameOfReferenceUID:c,volumeId:this.volumeId,numberOfFrames:a,framesProcessed:this.framesProcessed};nt(He,Xe.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.checkDimensionGroupCompletion(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};nt(He,Xe.IMAGE_LOAD_ERROR,s)}load(e){const{imageIds:r,loadStatus:n,numFrames:i}=this,{transferSyntaxUID:o}=lt("transferSyntax",r[0])||{},a=lt(Cm.IMAGE_RETRIEVE_CONFIGURATION,this.volumeId,o,"volume");if(this.imagesLoader=this.isDynamicVolume()?this:a?(a.create||Sm.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}=lt("transferSyntax",e)||{},n=lt("imagePlaneModule",e)||{},{rows:i,columns:o}=n,a=this.getImageIdIndex(e),s=lt("modalityLutModule",e)||{},c=lt("generalSeriesModule",e)||{},l={rescaleSlope:s.rescaleSlope,rescaleIntercept:s.rescaleIntercept,modality:c.modality},f=l.modality;if(f==="PT"||f==="RTDOSE"){const g=lt("scalingModule",e);g&&(this._addScalingToVolume(g),Object.assign(l,g))}const u=nE(l),d=ww();if(this.isPreScaled=!0,l&&l.rescaleSlope!==void 0&&l.rescaleIntercept!==void 0){const{rescaleSlope:g,rescaleIntercept:p}=l;this.isPreScaled=typeof g=="number"&&typeof p=="number"}return!d&&u&&(this.isPreScaled=!1),{targetBuffer:{type:this.dataType,rows:i,columns:o},allowFloatRendering:d,preScale:{enabled:this.isPreScaled,scalingParameters:l},transferPixelData:!0,requestType:n9,transferSyntaxUID:r,additionalDetails:{imageId:e,imageIdIndex:a,volumeId:this.volumeId}}}callLoadImage(e,r,n){const{cachedFrames:i}=this;if(i[r]===va.FULL_RESOLUTION)return;const o=s=>{const{image:c}=s.detail;c.imageId===e&&(this.vtkOpenGLTexture.setUpdatedFrame(r),He.removeEventListener(Xe.IMAGE_CACHE_IMAGE_ADDED,o))};return He.addEventListener(Xe.IMAGE_CACHE_IMAGE_ADDED,o),Hy.as(Ds(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=n9,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;Ai.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}}checkDimensionGroupCompletion(e){}}class Tk extends Sk{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 _k(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(y=>ke.isLoaded(e.imageIds[y])?Promise.resolve(!0):new Promise((m,w)=>{const x=e.imageIds[y];Ai.addRequest(async()=>{gk(x).then(()=>{console.log(`Prefetched imageId: ${x}`),m(!0)}).catch(C=>{w(C)})},un.Prefetch,{volumeId:t},1)}))).catch(console.error)}const i=p1(e.imageIds,t),{dimensions:o,spacing:a,origin:s,direction:c,metadata:l,imageIds:f,dataType:u,numberOfComponents:d}=i;return new Tk({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 rE={};let sh=_k;function Ek(t,e){const r=t.indexOf(":"),n=t.substring(0,r);let i=rE[n];if(i==null){if(sh==null||typeof sh!="function")throw new Error(`No volume loader for scheme ${n} has been registered`);i=sh}const o=i(t,e);return o.promise.then(function(a){nt(He,Xe.VOLUME_LOADED,{volume:a})},function(a){const s={volumeId:t,error:a};nt(He,Xe.VOLUME_LOADED_FAILED,s)}),o}function iE(t,e={imageIds:[]}){if(t===void 0)throw new Error("loadVolume: parameter volumeId must not be undefined");let r=ke.getVolumeLoadObject(t);return r!==void 0?r.promise:(r=Ek(t,e),r.promise.then(n=>n))}async function Tm(t,e){if(t===void 0)throw new Error("createAndCacheVolume: parameter volumeId must not be undefined");let r=ke.getVolumeLoadObject(t);return r!==void 0||(r=Ek(t,e),ke.putVolumeLoadObject(t,r)),r.promise}function bk(t,e){const r=ke.getVolume(t);if(!r)throw new Error(`Cannot created derived volume: Referenced volume with id ${t} does not exist.`);let{volumeId:n}=e;const{voxelRepresentation:i}=e;n===void 0&&(n=Tn());const{metadata:o,dimensions:a,spacing:s,origin:c,direction:l}=r,f=r.isDynamicVolume()?r.getCurrentDimensionGroupImageIds():r.imageIds??[],u=Q4(f,{targetBuffer:e.targetBuffer,voxelRepresentation:i}),d=u[0].dataType,h=u.map(p=>p.imageId),g=new qd({volumeId:n,dataType:d,metadata:structuredClone(o),dimensions:[a[0],a[1],a[2]],spacing:s,origin:c,direction:l,referencedVolumeId:t,imageIds:h,referencedImageIds:r.imageIds??[]});return ke.putVolumeSync(n,g),g}async function oE(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=ke.getVolume(t);return r||(e.filter(o=>!ke.getImage(o)).length===0?v1(t,e):await Tm(t,{imageIds:e}))}function v1(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=ke.getVolume(t);if(r)return r;const n=p1(e,t),i=new qd({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 ke.putVolumeSync(t,i),i}function y1(t,e={}){const{metadata:r,dimensions:n,spacing:i,origin:o,direction:a,scalarData:s,targetBuffer:c,preventCache:l=!1}=e,f=ke.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(!ke.isCacheable(g))throw new Error(`Cannot created derived volume: Volume with id ${t} is not cacheable.`);const v=[];for(let w=0;w1&&(u=Math.min(...u),d=Math.max(...d)),{lower:u,upper:d}}function tce(t,e){var r;return!(t!=="PT"||!e.isPreScaled||!((r=e.scaling)!=null&&r.PT.suvbw))}async function Ky(t,e,r,n=!1){const{volumeId:i,callback:o,blendMode:a}=t,s=await iE(i);if(!s)throw new Error(`imageVolume with id: ${s.volumeId} does not exist`);const{imageData:c,vtkOpenGLTexture:l}=s,f=Ok(c,l);a&&f.setBlendMode(a);const u=Qie.newInstance();u.setMapper(f);const{numberOfComponents:d}=c.get("numberOfComponents");return u.getProperty().set({viewportId:r}),d===3&&u.getProperty().setIndependentComponents(!1),await aE(u,s),o&&o({volumeActor:u,volumeId:i}),n||nce(e,r,u,i),u}function nce(t,e,r,n){const i=r.getProperty().getRGBTransferFunction(0).getRange(),o={viewportId:e,range:{lower:i[0],upper:i[1]},volumeId:n};nt(t,Xe.VOI_MODIFIED,o)}const Cl=t=>{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)},rce=1+Ya,ice=(t,e)=>e===t.substring(0,Math.min(t.length,e.length)),r9=t=>!!Dk().find(e=>ice(t.volumeId,e));function tg(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 ke.getVolume(f)}).filter(l=>!!l);if(r){const l=Cl(r),f=a.findIndex(g=>l.includes(g.volumeId)),u=a[f],{uid:d}=o[f],h=i9(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(r9);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=Tw(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 R0={};function oce(t){R0[t]!==void 0&&delete R0[t]}function ace(t){const{renderingEngineId:e,viewportId:r}=t.detail,i=jr(e).getViewport(r);if(!("setVolumes"in i))throw new Error("volumeNewImageEventDispatcher: viewport does not have setVolumes method");R0[i.id]===void 0&&(R0[i.id]=0);const o=qy(i);if(!o){console.warn(`volumeNewImageEventDispatcher: sliceData is undefined for viewport ${i.id}`);return}const{numberOfSlices:a,imageIndex:s}=o;if(R0[i.id]===s)return;R0[i.id]=s;const c={imageIndex:s,viewportId:r,renderingEngineId:e,numberOfSlices:a};nt(i.element,Xe.VOLUME_NEW_IMAGE,c)}function Ph(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),y=h*v+n,m=g*v+i,w=p*v+o;return[y,m,w]}function ol(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 Pk(t,e,r){const[n,i,o,a]=t,[s,c,l,f]=e,[u,d,h,g]=r,p=np(n,s,u,i,c,d,o,l,h),v=np(a,f,g,i,c,d,o,l,h),y=np(n,s,u,a,f,g,o,l,h),m=np(n,s,u,i,c,d,a,f,g),w=Jf(v)/Jf(p),x=Jf(y)/Jf(p),C=Jf(m)/Jf(p);return[w,x,C]}function _m(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}function Rk(t,e,r=Ya){return _m(e,t)Number.isNaN(e)):Number.isNaN(t)}function xs(t){if(t===null||typeof t!="object"||typeof t=="function"||typeof structuredClone=="function")return t;if(Array.isArray(t))return t.map(xs);{const e={};for(const r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=xs(t[r]));return e}}const Up=class Up{constructor(e){this.insetImageMultiplier=1.1,this.flipHorizontal=!1,this.flipVertical=!1,this.viewportStatus=Ao.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=xs(e.defaultOptions),this.suppressEvents=e.defaultOptions.suppressEvents?e.defaultOptions.suppressEvents:!1,this.options=xs(e.defaultOptions),this.isDisabled=!1}static get useCustomRenderingPipeline(){return!1}setRendered(){this.viewportStatus===Ao.NO_DATA||this.viewportStatus===Ao.LOADING||(this.viewportStatus=Ao.RENDERED)}setColorTransform(e,r){let n=null;if(!e&&!r)return;const i=r||[255,255,255],o=Math.max(...i),a=i.map(u=>o/u),{lower:s=0,upper:c=255}=e||{},l=(c-s+1)/255,f=s/255;return n=`url('data:image/svg+xml, #colour')`,n}getRenderingEngine(){return hm.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=Ln(Be(),o,a);let f=GY(Be(),a);const u=rl(Be(),o),d=Ki(c,s),g=n.getDimensions().map(C=>Math.floor(C/2)),p=[g[0],g[1],g[2]],v=n.indexToWorld(p,Be()),y=this._getFocalPointForResetCamera(v,i,{resetPan:!0,resetToCenter:!1}),m=jn(Be(),s,y),w=ra(m),x=C=>{const S=_r(Be(),C,2*St(m,C));return jn(S,S,m),Yn(S,S),S};if(e){const C=x(f),S=Cn(Be(),y,C,w),T=Cn(Be(),S,u,d);this.setCamera({viewPlaneNormal:u,position:T,focalPoint:S}),this.flipHorizontal=!this.flipHorizontal}if(r){f=rl(f,a);const C=x(l),S=Cn(Be(),y,C,w),T=Cn(Be(),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&&sc(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||!sc(n)?null:n.actor}getActorUIDByIndex(e){const r=this.getActors()[e];if(r)return r.uid}getActorByIndex(e){return this.getActors()[e]}setActors(e){const r=this.getActors();this.removeAllActors(),this.addActors(e,{resetCamera:!0}),nt(this.element,Xe.ACTORS_CHANGED,{viewportId:this.id,removedActors:r,addedActors:e,currentActors:e})}_removeActor(e){const r=this.getActor(e);if(!r){console.warn(`Actor ${e} does not exist in ${this.id}, can't remove`);return}return this.getRenderer().removeActor(r.actor),this._actors.delete(e),r}removeActors(e){const r=[];e.forEach(i=>{const o=this._removeActor(i);o&&r.push(o)});const n=this.getActors();nt(this.element,Xe.ACTORS_CHANGED,{viewportId:this.id,removedActors:r,addedActors:[],currentActors:n})}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)),nt(this.element,Xe.ACTORS_CHANGED,{viewportId:this.id,removedActors:[],addedActors:e,currentActors:this.getActors()})}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(),nt(this.element,Xe.ACTORS_CHANGED,{viewportId:this.id,removedActors:[],addedActors:[e],currentActors:this.getActors()})}removeAllActors(){var r;const e=this.getActors();(r=this.getRenderer())==null||r.removeAllViewProps(),this._actors=new Map,nt(this.element,Xe.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,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,y]]=u;if(i*(p-d)+o*(v-h)+a*(y-g)===0)continue;const m=Ph([d,h,g],[p,v,y],[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)??Kl.LINEAR),this.setDisplayAreaFit(e)),n&&(this.initialCamera=this.getCamera()),this._suppressCameraModifiedEvents=o,!r&&!o){const s={viewportId:this.id,displayArea:e,storeAsInitialCamera:n};nt(this.element,Xe.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(Kl.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=Be();if(n.height%2&&Cn(h,h,u,r*.5*c),n.width%2){const g=Ln(Be(),u,d);Cn(h,h,g,r*.5*c)}!h[0]&&!h[1]&&!h[2]||this.setCamera({focalPoint:ni(Be(),l,h),position:ni(Be(),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],c[1],c[2]])),u=[Math.abs(f[0]-l[0]),Math.abs(f[1]-l[1])],[d,h]=u;let g=this.getZoom()/this.insetImageMultiplier;if(r){const[p,v]=r,y=Math.max(Math.abs(d/a),Math.abs(h/s)),m=Math.abs(p*d/a),w=Math.abs(v*h/s),x=this.getZoom(),C=this.getZoom(this.fitToCanvasCamera);g=(m>w?y/m:y/w)*x/C,this.setZoom(this.insetImageMultiplier*g,!1)}if(n){const{imagePoint:p,canvasPoint:v=p||[.5,.5]}=n,[y,m]=v,w=a*(y-.5),x=s*(m-.5),[C,S]=p||v,T=g,_=this.insetImageMultiplier*T*d*(.5-C),E=this.insetImageMultiplier*T*h*(.5-S),b=_+w,D=E+x,O=[b,D];fo(O,O,this.getPan()),this.setPan(O,!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();let c;const l=this.getDefaultActor();l&&sc(l)?c=l.actor.getMapper().getInputData().getBounds():c=a.computeVisiblePropBounds();const f=[0,0,0],u=this.getDefaultImageData();if(u){const P=u.getSpacing();c[0]=c[0]+P[0]/2,c[1]=c[1]-P[0]/2,c[2]=c[2]+P[1]/2,c[3]=c[3]-P[1]/2,c[4]=c[4]+P[2]/2,c[5]=c[5]-P[2]/2}const d=this.getVtkActiveCamera(),h=d.getViewPlaneNormal(),g=d.getViewUp();if(f[0]=(c[0]+c[1])/2,f[1]=(c[2]+c[3])/2,f[2]=(c[4]+c[5])/2,u){const k=u.getDimensions().map(j=>Math.floor(j/2)),G=[k[0],k[1],k[2]];u.indexToWorld(G,f)}const{widthWorld:p,heightWorld:v}=this._getWorldDistanceViewUpAndViewRight(c,g,h),y=[this.sWidth,this.sHeight],m=p/v,w=y[0]/y[1],x=m/w,C=x<1?this.insetImageMultiplier*v/2:this.insetImageMultiplier*v*x/2,S=Up.boundsRadius(c)*(this.type===gr.VOLUME_3D?10:1),T=this.insetImageMultiplier*S,_=Math.abs(Yt.dot(g,h))>.999?[-g[2],g[0],g[1]]:g,E=this._getFocalPointForResetCamera(f,s,{resetPan:r,resetToCenter:i}),b=[E[0]+T*h[0],E[1]+T*h[1],E[2]+T*h[2]];a.resetCameraClippingRange(c);const D=[-Zr.MAXIMUM_RAY_DISTANCE,Zr.MAXIMUM_RAY_DISTANCE];d.setPhysicalScale(S),d.setPhysicalTranslation(-E[0],-E[1],-E[2]),this.setCamera({parallelScale:n?C:s.parallelScale,focalPoint:E,position:b,viewAngle:90,viewUp:_,clippingRange:D});const O=this.getCamera();this.setFitToCanvasCamera(this.getCamera()),o&&this.setInitialCamera(O),n&&this.setZoom(1,o);const L={type:"ResetCameraEvent",renderer:a};return a.invokeEvent(L),this.triggerCameraModifiedEventIfNecessary(s,O),u&&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(jn([0,0,0],e.focalPoint,i)),a=this.worldToCanvas(jn([0,0,0],n,i));return Yr([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=Yr([0,0],e,this.getPan());if(Math.abs(s[0])<1&&Math.abs(s[1])<1&&!r)return;const c=jn(Be(),this.canvasToWorld(s),a),l=jn(Be(),i,c),f=jn(Be(),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(){const e=this.getRenderer();return e?e.getActiveCamera():(console.warn("No renderer found for the viewport"),null)}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 y=d&&!this.flipHorizontal||!d&&this.flipHorizontal;y&&this.flip({flipHorizontal:y})}if(h!==void 0){const y=h&&!this.flipVertical||!h&&this.flipVertical;y&&this.flip({flipVertical:y})}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 y=n.getViewPlaneNormal(),m=n.getViewUp();let w=!1,x=!1;if(l){const C=[l[0]-p[0],l[1]-p[1],l[2]-p[2]];w=Math.abs(Yt.dot(C,y))>0}if(a&&(x=!Kt(m,v)),w||x){const C=this.getDefaultActor();if(!(C!=null&&C.actor))return;Ta(C,"vtkActor")||this.updateClippingPlanesForActors(o),(Ta(C,"vtkImageSlice")||this.type===gr.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};nt(this.element,Xe.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=[Fo.newInstance(),Fo.newInstance()]);let a=Zr.MINIMUM_SLAB_THICKNESS;n.slabThickness&&(a=n.slabThickness);const{viewPlaneNormal:s,focalPoint:c}=e;this.setOrientationOfClippingPlanes(o,a,s,c),nt(this.element,Xe.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]];Yt.multiplyScalar(o,r),e[0].setNormal(n);const a=[0,0,0];Yt.subtract(i,o,a),e[0].setOrigin(a),e[1].setNormal(-n[0],-n[1],-n[2]);const s=[0,0,0];Yt.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=[Fo.newInstance(),Fo.newInstance()]),n}_getWorldDistanceViewUpAndViewRight(e,r,n){const i=this._getCorners(e),o=this._getCorners(e),a=Ln(Be(),r,n);let s=$i.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 LS(r.focalPoint)?e:r.focalPoint;if(!i&&n){const o=r,a=o.focalPoint,s=o.viewPlaneNormal,c=jn(Be(),e,a),l=St(c,s),f=Cn(Be(),e,s,-1*l);return[f[0],f[1],f[2]]}if(!n&&!i)return LS(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")}};Up.CameraViewPresentation={rotation:!0,pan:!0,zoom:!0,displayArea:!0},Up.TransferViewPresentation={windowLevel:!0,paletteLut:!0};let Nd=Up;function Lk(t,e,r=!1){const n=t.getCamera(),{focalPoint:i,viewPlaneNormal:o}=n,{spacingInNormalDirection:a,actorUID:s}=tg(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:Tw(l,o,i),spacingInNormalDirection:a,camera:n}}function wd(t,e,r=!1){const{sliceRange:n,spacingInNormalDirection:i,camera:o}=Lk(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 Ak(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 Nk(t,e){const r=e.colorTransfer.split(" ").splice(1).map(parseFloat),{shiftRange:n}=cce(r),i=n[0],o=n[1]-n[0],a=lu.newInstance(),s=[];for(let x=0;x[o*n+e[0],a,s,c]);return r.removeAllPoints(),i.forEach(([o,a,s,c])=>r.addRGBPoint(o,a,s,c)),i}function uce(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 Cr extends Nd{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=Ts([0,0],o,a);this.setPan(c,!1);const{flipVertical:l}=this.getCamera(),f=l?rl([0,0,0],this.initialViewUp):this.initialViewUp;this.setCameraNoEvent({viewUp:f}),this.rotateCamera(i);const u=this.getPan(),d=this.getPan(this.fitToCanvasCamera),h=Ts([0,0],u,d),g=fo([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};nt(this.element,Xe.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 C;if(!this._getApplicableVolumeActor(i))return;const{colormap:a,VOILUTFunction:s,interpolationType:c,invert:l,slabThickness:f,preset:u}=this.viewportProperties;if(i||(i=this.getVolumeId()),!ke.getVolume(i))return null;const h=this.getActors().find(S=>S.referencedId===i);if(!h)return;const p=h.actor.getProperty().getRGBTransferFunction(0),[v,y]=((C=this.viewportProperties)==null?void 0:C.VOILUTFunction)==="SIGMOID"?Ak(p):p.getRange(),m={lower:v,upper:y},w=this.getColormap(i);return{colormap:i&&w?w:a,voiRange:m,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((h,g)=>(h.push(g.x,g.r,g.g,g.b),h),[]),f=H4(l,a)||{},u=q4(a),d=X4(a);return f.threshold=u,f.opacity=d,f},this.getRotation=()=>{const{viewUp:i,viewPlaneNormal:o,flipVertical:a}=this.getCameraNoRotation(),s=a?rl([0,0,0],this.initialViewUp):this.initialViewUp;if(!s)return 0;const c=g4(s,i)*180/Math.PI,l=Ln([0,0,0],s,i);return St(l,o)>=0?c:(360-c)%360},this.getFrameOfReferenceUID=()=>this._FrameOfReferenceUID,this.canvasToWorld=i=>{var u,d;const o=this.getVtkActiveCamera();(u=o.setIsPerformingCoordinateTransformation)==null||u.call(o,!0);const a=this.getRenderer(),s=this.getVtkDisplayCoords(i),f=this.getRenderingEngine().offscreenMultiRenderWindow.getOpenGLRenderWindow().displayToWorld(s[0],s[1],s[2],a);return(d=o.setIsPerformingCoordinateTransformation)==null||d.call(o,!1),[f[0],f[1],f[2]]},this.getVtkDisplayCoords=i=>{const o=window.devicePixelRatio||1,a=[i[0]*o,i[1]*o],l=this.getRenderingEngine().offscreenMultiRenderWindow.getOpenGLRenderWindow().getSize(),f=[a[0]+this.sx,a[1]+this.sy];return f[1]=l[1]-f[1],[f[0],f[1],0]},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=>Ta(a,"vtkVolume")).some(({uid:a,referencedId:s})=>{const c=ke.getVolume(s||a);return c!=null&&c.imageIds?c.imageIds.map(Ar).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=ke.getVolume(a);if(!s)throw new Error(`imageVolume with id: ${a} does not exist in cache`);return s.imageIds},this.useCPURendering=ih(),this.useCPURendering)throw new Error("VolumeViewports cannot be used whilst CPU Fallback Rendering is enabled.");const r=this.getRenderer(),n=aie.newInstance();switch(r.setActiveCamera(n),this.type){case gr.ORTHOGRAPHIC:n.setParallelProjection(!0);break;case gr.VOLUME_3D:n.setParallelProjection(!0);break;case gr.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({resetOrientation:!1,resetRotation:!1})}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()||ace(o)}function i(o){const{viewportId:a}=o.detail;a===this.id&&(this.element.removeEventListener(Xe.CAMERA_MODIFIED,e),He.removeEventListener(Xe.ELEMENT_DISABLED,r),oce(a))}this.element.removeEventListener(Xe.CAMERA_MODIFIED,e),this.element.addEventListener(Xe.CAMERA_MODIFIED,e),He.addEventListener(Xe.ELEMENT_DISABLED,r)}setVOILUTFunction(e,r,n){Object.values(po).includes(e)||(e=po.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=lu.newInstance();let s=wm(e.name);const{name:c}=e;if(s||(s=ym.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=this.getColormap(r),u={viewportId:this.id,colormap:f,volumeId:r};nt(this.element,Xe.VOI_MODIFIED,u),nt(this.element,Xe.COLORMAP_MODIFIED,u)}}setOpacity(e,r){const n=this._getApplicableVolumeActor(r);if(!n)return;const{volumeActor:i}=n,o=Ad.newInstance();typeof e.opacity=="number"?BN(i,e.opacity):(e.opacity.forEach(({opacity:c,value:l})=>{o.addPoint(l,c)}),i.getProperty().setScalarOpacity(0,o)),this.viewportProperties.colormap||(this.viewportProperties.colormap={}),this.viewportProperties.colormap.opacity=e.opacity;const a=this.getColormap(r),s={viewportId:this.id,colormap:a,volumeId:r};nt(this.element,Xe.COLORMAP_MODIFIED,s)}setInvert(e,r,n){const i=this._getApplicableVolumeActor(r);if(!i)return;const o=i.volumeId,a=this._getOrCreateColorTransferFunction(o);if(Dp(a),this.viewportProperties.invert=e,!n){const s={...this.getVOIModifiedEventDetail(o),invertStateChanged:!0};nt(this.element,Xe.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=lu.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===po.SAMPLED_SIGMOID){const l=Y4(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)};nt(this.element,Xe.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}=wd(this,n,!0),{sliceRange:s,spacingInNormalDirection:c,camera:l}=a,{focalPoint:f,position:u}=l,{newFocalPoint:d}=oh(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}=wd(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}=oh(s,l,i,c,o,e);this.setCamera({focalPoint:f,position:u}),this.render()}setViewReference(e){if(!e)return;const r=this.getVolumeId(),{viewPlaneNormal:n,FrameOfReferenceUID:i,cameraFocalPoint:o,referencedImageId:a,viewUp:s}=e;let{sliceIndex:c}=e;const{focalPoint:l,viewPlaneNormal:f,position:u}=this.getCamera(),d=FN(f,n),h=Kt(f,n);if(typeof c=="number"&&r!==void 0&&e.volumeId===r&&(d||h)){const{currentStepIndex:g,sliceRangeInfo:p,numScrollSteps:v}=wd(this,r,!0),{sliceRange:y,spacingInNormalDirection:m}=p;d&&(c=v-c-1);const w=c-g,{newFocalPoint:x,newPosition:C}=oh(l,u,y,f,m,w);this.setCamera({focalPoint:x,position:C})}else if(i===this.getFrameOfReferenceUID()){if(n&&!d&&!h){this.setOrientation({viewPlaneNormal:n,viewUp:s}),this.setViewReference(e);return}if(a&&this.isInAcquisitionPlane()){const g=lt(ta.IMAGE_PLANE,a),{imagePositionPatient:p}=g,{focalPoint:v}=this.getCamera(),y=jn(Be(),v,p),m=St(y,f),w=Cn(Be(),v,[-f[0],-f[1],-f[2]],m);this.setCamera({focalPoint:w}),this.render();return}if(o){const g=jn([0,0,0],o,l),p=n??f,v=St(g,p);Kt(v,0)||_r(g,p,v);const y=ni([0,0,0],l,g),m=ni([0,0,0],u,g);this.setCamera({focalPoint:y,position:m})}}else throw new Error(`Incompatible view refs: ${i}!==${this.getFrameOfReferenceUID()}`)}setThreshold(e,r){const n=this._getApplicableVolumeActor(r);if(!n)return;const{volumeActor:i}=n;GN(i,e.threshold),this.viewportProperties.colormap||(this.viewportProperties.colormap={}),this.viewportProperties.colormap.threshold=e.threshold;const o=this.getColormap(r),a={viewportId:this.id,colormap:o,volumeId:r};nt(this.element,Xe.COLORMAP_MODIFIED,a)}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),(i==null?void 0:i.threshold)!=null&&this.setThreshold(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)}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=TP.find(s=>s.name===e)),a&&(Nk(o,a),this.viewportProperties.preset=a,this.render(),n||nt(this.element,Xe.PRESET_MODIFIED,{viewportId:this.id,volumeId:i.volumeId,actor:o,presetName:a.name}))}async setVolumes(e,r=!1,n=!1){const i=ke.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(!Ta(n,"vtkVolume"))return;const i=n.actor,o=ke.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-s),a=i.slice(3,6).map(s=>-s);return{viewPlaneNormal:o,viewUp:a}}getSlabThickness(){const e=this.getActors();let r=Zr.MINIMUM_SLAB_THICKNESS;return e.forEach(n=>{n.slabThickness>r&&(r=n.slabThickness)}),r}getIntensityFromWorld(e){const r=this.getDefaultActor();if(!Ta(r,"vtkVolume"))return;const{actor:n}=r,i=n.getMapper().getInputData(),o=ke.getVolume(this.getVolumeId()),a=zr(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(",")}`}_addVolumeId(e){this.volumeIds.add(e)}getAllVolumeIds(){return Array.from(this.volumeIds)}}function Gu(t,e){const{imageData:r}=t.getImageData(),n=t.canvasToWorld(e);return zr(r,n)}function Rh(t,e){return t.indexToWorld(e)}function fce(t,e){const{imageData:r}=t.getImageData(),n=Rh(r,e);return t.worldToCanvas(n)}class sr extends Cr{constructor(e){super(e),this._useAcquisitionPlaneForViewPlane=!1,this.getNumberOfSlices=()=>{const{numberOfSlices:n}=qy(this)||{};return n},this.resetCameraForResize=()=>this.resetCamera({resetPan:!0,resetZoom:!0,resetToCenter:!0,resetRotation:!1,suppressEvents:!0}),this.getCurrentImageIdIndex=(n,i=!0)=>{const{currentStepIndex:o}=wd(this,n||this.getVolumeId(),i);return o},this.getSliceIndex=()=>{const{imageIndex:n}=qy(this)||{};return n},this.getCurrentImageId=()=>{const n=this.getDefaultActor();if(!n||!Ta(n,"vtkVolume"))return;const i=ke.getVolume(this.getVolumeId());if(!i)return;const{viewPlaneNormal:o,focalPoint:a}=this.getCamera();return cu(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=ke.getVolume(i),a=this.getCamera(),{focalPoint:s,position:c,viewPlaneNormal:l}=a,f=Mf(o,l),u=Tw(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:y}=oh(s,c,u,l,f,v);p.push({sliceIndex:g+v,point:y})}return p};const{orientation:r}=this.options;if(r&&r!==Md.ACQUISITION){this.applyViewOrientation(r);return}this._useAcquisitionPlaneForViewPlane=!0}async setVolumes(e,r=!1,n=!1){const i=ke.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=ke.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];Sn(n,e,r);const i=this.getCamera(),o=i.viewPlaneNormal,a=St(n,o),s=bt(o[0],o[1],o[2]);if(_r(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];ni(c,i.focalPoint,s),ni(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(e===Md.ACQUISITION)({viewPlaneNormal:n,viewUp:i}=super._getAcquisitionPlaneOrientation());else if($u[e])({viewPlaneNormal:n,viewUp:i}=$u[e]);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();if(!e){console.warn("No active camera found");return}e.getParallelProjection()?e.setClippingRange(-Zr.MAXIMUM_RAY_DISTANCE,Zr.MAXIMUM_RAY_DISTANCE):e.setClippingRange(Zr.MINIMUM_SLAB_THICKNESS,Zr.MAXIMUM_RAY_DISTANCE)}_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()}getBlendMode(e){const r=this.getActors(),n=(e==null?void 0:e.length)>0?r.find(i=>e.includes(i.uid)):r[0];return(n==null?void 0:n.blendMode)||(n==null?void 0:n.actor.getMapper().getBlendMode())}setBlendMode(e,r=[],n=!1){let i=this.getActors();(r==null?void 0: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),o.blendMode=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=Fo.newInstance(),y=Fo.newInstance(),m=[v,y];let w=Zr.MINIMUM_SLAB_THICKNESS;h.slabThickness&&(w=h.slabThickness),this.setOrientationOfClippingPlanes(m,w,f,u),g.addClippingPlane(v),g.addClippingPlane(y)}}),i&&$u[this.viewportProperties.orientation]!==void 0){const h=$u[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};nt(this.element,Xe.CAMERA_RESET,h)}return!0}setSlabThickness(e,r=[]){e<.1&&(e=.1);let n=this.getActors();(r==null?void 0:r.length)>0&&(n=n.filter(o=>r.includes(o.uid))),n.forEach(o=>{Ta(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=>{Ta(n,"vtkVolume")&&(n.slabThickness=Zr.MINIMUM_SLAB_THICKNESS)});const r=this.getCamera();this.updateClippingPlanesForActors(r),this.triggerCameraModifiedEventIfNecessary(r,r),this.viewportProperties.slabThickness=void 0}isInAcquisitionPlane(){const e=this.getImageData();if(!e)return!1;const{direction:r}=e,{viewPlaneNormal:n}=this.getCamera(),i=[r[6],r[7],r[8]];return Math.abs(St(n,i))>.99}getSliceViewInfo(){const{width:e,height:r}=this.getCanvas(),n=Gu(this,[0,0]),i=Gu(this,[e-1,0]),o=Gu(this,[0,r-1]),a=Sn(Be(),i,n),s=Sn(Be(),o,n),c=Ln(Be(),a,s);Yn(a,a),Yn(s,s),Yn(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(b=>fce(this,b)).reduce((b,D)=>(b.minX=Math.min(b.minX,D[0]),b.minY=Math.min(b.minY,D[1]),b.maxX=Math.max(b.maxX,D[0]),b.maxY=Math.max(b.maxY,D[1]),b),{minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}),v=Gu(this,[p.minX,p.minY]),y=a4(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=Gu(this,[p.maxX,p.maxY]),w=Sn(Be(),m,v),x=$r(Ea(),y),{viewPlaneNormal:C}=this.getCamera();if(C.filter(b=>Math.abs(b)>Ya).length>1)throw new Error("getSliceInfo is not supported for oblique views");const T=C.findIndex(b=>Math.abs(b)>1-Ya);if(T===-1)throw new Error("Unable to determine slice axis");const _=St(a,w)+1,E=St(s,w)+1;return{sliceIndex:this.getSliceIndex(),width:_,height:E,slicePlane:T,sliceToIndexMatrix:y,indexToSliceMatrix:x}}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=ke.getVolume(r.volumeId);return r.referencedImageId=cu(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=Zr.MINIMUM_SLAB_THICKNESS,this.viewportProperties.slabThickness=void 0,this.updateClippingPlanesForActors(this.getCamera())),e||(e=this.getVolumeId());const n=ke.getVolume(e);if(!n)throw new Error(`imageVolume with id: ${e} does not exist in cache`);if(aE(r.actor,n),sc(r)){const l=r.actor.getProperty().getRGBTransferFunction(0);_w(l,this.initialTransferFunctionNodes)}const i={...super.getVOIModifiedEventDetail(e)};this.resetCamera({resetPan:!0,resetZoom:!0,resetToCenter:!0,resetCameraRotation:!0}),nt(this.element,Xe.VOI_MODIFIED,i)}getSlicesClippingPlanes(){const e=this.getSlicePlaneCoordinates(),{viewPlaneNormal:r}=this.getCamera(),n=Zr.MINIMUM_SLAB_THICKNESS;return e.map(({point:i,sliceIndex:o})=>{const a=[Fo.newInstance(),Fo.newInstance()];return this.setOrientationOfClippingPlanes(a,n,r,i),{sliceIndex:o,planes:a.map(s=>({normal:s.getNormal(),origin:s.getOrigin()}))}})}}function dce(t,e){e.classHierarchy.push("vtkAbstractImageMapper"),t.getIsOpaque=()=>!0,t.getCurrentImage=()=>null,t.getBoundsForSlice=()=>(Q.vtkErrorMacro("vtkAbstractImageMapper.getBoundsForSlice - NOT IMPLEMENTED"),gf())}const hce={slice:0,customDisplayExtent:[0,0,0,0,0,0],useCustomExtents:!1,backgroundColor:[0,0,0,1]};function gce(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,hce,r),I4.extend(t,e,r),Q.setGet(t,e,["slice","useCustomExtents"]),Q.setGetArray(t,e,["customDisplayExtent"],6),Q.setGetArray(t,e,["backgroundColor"],4),dce(t,e)}var pce={extend:gce};function kk(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],Yn(l,l);const f=Fo.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 mce(t,e,r){const n=kk(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 vce(t,e,r){const n=kk(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:yce,otherStaticMethods:wce}=mw,{SlicingMode:zn}=yw;function xce(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 zn.X:o=[n,(f[3]+f[2])/2,(f[5]+f[4])/2];break;case zn.Y:o=[(f[1]+f[0])/2,n,(f[5]+f[4])/2];break;case zn.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 zn.I:l=fc(a[0],s[0],s[1]);break;case zn.J:l=fc(a[1],s[2],s[3]);break;case zn.K:l=fc(a[2],s[4],s[5]);break;default:return 0}return l},t.setSliceFromCamera=n=>{const i=n.getFocalPoint();switch(e.slicingMode){case zn.I:case zn.J:case zn.K:{const o=t.getSliceAtPosition(i);t.setSlice(o)}break;case zn.X:t.setSlice(i[0]);break;case zn.Y:t.setSlice(i[1]);break;case zn.Z:t.setSlice(i[2]);break}},t.setXSlice=n=>{t.setSlicingMode(zn.X),t.setSlice(n)},t.setYSlice=n=>{t.setSlicingMode(zn.Y),t.setSlice(n)},t.setZSlice=n=>{t.setSlicingMode(zn.Z),t.setSlice(n)},t.setISlice=n=>{t.setSlicingMode(zn.I),t.setSlice(n)},t.setJSlice=n=>{t.setSlicingMode(zn.J),t.setSlice(n)},t.setKSlice=n=>{t.setSlicingMode(zn.K),t.setSlice(n)},t.getSlicingModeNormal=()=>{const n=[0,0,0],i=t.getCurrentImage().getDirection();switch(e.slicingMode){case zn.X:n[0]=1;break;case zn.Y:n[1]=1;break;case zn.Z:n[2]=1;break;case zn.I:Ev(i,[1,0,0],n);break;case zn.J:Ev(i,[0,1,0],n);break;case zn.K:Ev(i,[0,0,1],n);break}return n};function r(){let n;switch(e.slicingMode){case zn.X:n=0;break;case zn.Y:n=1;break;case zn.Z:n=2;break;default:e.closestIJKAxis={ijkMode:e.slicingMode,flip:!1};return}const i=t.getCurrentImage().getDirection(),o=IR(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===zn.NONE)&&t.getCurrentImage()&&r(),e.closestIJKAxis),t.getBounds=()=>{const n=t.getCurrentImage();if(!n)return gf();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 zn.I:i[0]=a,i[1]=a;break;case zn.J:i[2]=a,i[3]=a;break;case zn.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 gf();const a=o.getSpatialExtent(),{ijkMode:s}=t.getClosestIJKAxis();let c=n;switch(s!==e.slicingMode&&(c=t.getSliceAtPosition(n)),s){case zn.I:a[0]=c-i,a[1]=c+i;break;case zn.J:a[2]=c-i,a[3]=c+i;break;case zn.K:a[4]=c-i,a[5]=c+i;break}return o.extentToBounds(a)},t.intersectWithLineForPointPicking=(n,i)=>mce(n,i,t),t.intersectWithLineForCellPicking=(n,i)=>vce(n,i,t),t.getCurrentImage=()=>t.getInputData()}const Cce={slicingMode:zn.NONE,closestIJKAxis:{ijkMode:zn.NONE,flip:!1},renderToRectangle:!1,sliceAtFocalPoint:!1,preferSizeOverAccuracy:!1};function Vk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Cce,r),pce.extend(t,e,r),Q.get(t,e,["slicingMode"]),Q.setGet(t,e,["closestIJKAxis","renderToRectangle","sliceAtFocalPoint","preferSizeOverAccuracy"]),mw.implementCoincidentTopologyMethods(t,e),xce(t,e)}const Sce=Q.newInstance(Vk,"vtkImageMapper");var Tce={newInstance:Sce,extend:Vk,...yce,...wce,...yw};const{InterpolationType:Uv}=Nee,{vtkErrorMacro:o9}=Q,Bv=4;function _ce(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>=Bv)return o9("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>=Bv?(o9("Invalid index"),0):e.componentData[r].componentWeight},t.setInterpolationTypeToNearest=()=>t.setInterpolationType(Uv.NEAREST),t.setInterpolationTypeToLinear=()=>t.setInterpolationType(Uv.LINEAR),t.getInterpolationTypeAsString=()=>Q.enumToString(Uv,e.interpolationType)}const Ece={independentComponents:!1,interpolationType:Uv.LINEAR,colorWindow:255,colorLevel:127.5,ambient:1,diffuse:0,opacity:1,useLookupTableScalarRange:!1,useLabelOutline:!1,labelOutlineThickness:[1],labelOutlineOpacity:1};function bce(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(Object.assign(e,Ece,r),Q.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=Ice.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()){Oce("Recomputing bounds..."),e.mapperBounds=r.map(o=>o),t.computeMatrix();const i=new Float64Array(16);wn(i,e.matrix),tr.transformBounds(r,i,e.bounds),e.boundsMTime.modified()}return e.bounds},t.getBoundsForSlice=(r,n)=>{const i=e.mapper.getBoundsForSlice(r,n);if(!tr.isValid(i))return i;t.computeMatrix();const o=new Float64Array(16);return wn(o,e.matrix),tr.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 Pce={mapper:null,property:null,forceOpaque:!1,forceTranslucent:!1,bounds:[...tr.INIT_BOUNDS]};function Fk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Pce,r),B4.extend(t,e,r),e.boundsMTime={},Q.obj(e.boundsMTime),Q.set(t,e,["property"]),Q.setGet(t,e,["mapper","forceOpaque","forceTranslucent"]),Q.getArray(t,e,["bounds"],6),Mce(t,e)}const Rce=Q.newInstance(Fk,"vtkImageSlice");var Lce={newInstance:Rce,extend:Fk};function Ace(t){return Object.values(po).includes(t)?t:po.LINEAR}function Uk(t){const r={...lt(ta.IMAGE_PLANE,t)};return r.columnPixelSpacing||(r.columnPixelSpacing=1),r.rowPixelSpacing||(r.rowPixelSpacing=1),r.columnCosines||(r.columnCosines=[0,1,0]),r.rowCosines||(r.rowCosines=[1,0,0]),r.imagePositionPatient||(r.imagePositionPatient=[0,0,0]),r.imageOrientationPatient||(r.imageOrientationPatient=new Float32Array([1,0,0,0,1,0])),r}function Bk(t){const e=t.imageId,{pixelRepresentation:r,bitsAllocated:n,bitsStored:i,highBit:o,photometricInterpretation:a,samplesPerPixel:s}=lt("imagePixelModule",e),{windowWidth:c,windowCenter:l,voiLUTFunction:f}=t,{modality:u}=lt("generalSeriesModule",e),d=lt("scalingModule",e),h=lt(ta.CALIBRATION,e),g=Ace(f),p=Uk(e);return{calibration:h,scalingFactor:d,voiLUTFunction:g,modality:u,imagePlaneModule:p,imagePixelModule:{bitsAllocated:n,bitsStored:i,samplesPerPixel:s,highBit:o,photometricInterpretation:a,pixelRepresentation:r,windowWidth:c,windowCenter:l,modality:u,voiLUTFunction:g}}}function Ew(t){const{imagePlaneModule:e,imagePixelModule:r,voiLUTFunction:n,modality:i,scalingFactor:o,calibration:a}=Bk(t);let{rowCosines:s,columnCosines:c}=e;(s==null||c==null)&&(s=[1,0,0],c=[0,1,0]);const l=bt(s[0],s[1],s[2]),f=bt(c[0],c[1],c[2]),u=Be();Ln(u,l,f);let d=e.imagePositionPatient;d==null&&(d=[0,0,0]);const h=e.columnPixelSpacing||t.columnPixelSpacing,g=e.rowPixelSpacing||t.rowPixelSpacing,p=t.columns,v=t.rows,y=Ya,m=1;return!r.photometricInterpretation&&t.sizeInBytes===3*t.width*t.height&&(t.numberOfComponents=3),{numberOfComponents:t.numberOfComponents||Nce(r.photometricInterpretation),origin:d,direction:[...l,...f,...u],dimensions:[p,v,m],spacing:[h,g,y],numVoxels:p*v*m,imagePlaneModule:e,imagePixelModule:r,bitsAllocated:r.bitsAllocated,voiLUTFunction:n,modality:i,scalingFactor:o,calibration:a,scanAxisNormal:u}}function Nce(t){let e=1;return(t==="RGB"||t!=null&&t.includes("YBR")||t==="PALETTE COLOR")&&(e=3),e}function Gk(t){const e=lu.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 bw(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 xn(){return window.performance?performance.now():Date.now()}function kce(t,e){return function(r){const n=((r-(e-.5))/(t-1)+.5)*255;return Math.min(Math.max(n,0),255)}}function Vce(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 Wk(t,e,r){return r?Vce(r):kce(t,e)}function Fce(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=Wk(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 Uce(t,e,r){let n=xn();const i=t.voxelManager.getScalarData();t.stats.lastGetPixelDataTime=xn()-n;const o=t.minPixelValue;let a=0,s=0;const c=i.length;if(n=xn(),o<0)for(;s0||t.voi.windowWidth!==void 0&&t.voi.windowCenter!==void 0}function a9(t,e){return!t&&!e?!0:!t||!e?!1:t.id===e.id}function Yce(t,e){return r=>r*t+e}function Jce(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 Zce(t,e,r){return r?Jce(r):Yce(t,e)}function Qce(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=Zce(t.slope,t.intercept,i),u=Wk(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 Hk(t,e,r){return t.cachedLut!==void 0&&t.cachedLut.windowCenter===e.voi.windowCenter&&t.cachedLut.windowWidth===e.voi.windowWidth&&a9(t.cachedLut.modalityLUT,e.modalityLUT)&&a9(t.cachedLut.voiLUT,e.voiLUT)&&t.cachedLut.invert===e.invert&&!r||(qce(e,t),Qce(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 ele(t,e,r,n=!0){const i=t.renderingTools.lastRenderedIsColor;(!t.renderingTools.renderCanvas||i)&&(t.renderingTools.renderCanvas=x1(null,e.width,e.height),Xy(t,e));const o=t.renderingTools.renderCanvas;if(!cE(t,e)&&!r)return o;(o.width!==e.width||o.height!==e.height)&&Xy(t,e),e.stats=e.stats||{};const a=t.renderingTools.renderCanvasData,s=t.renderingTools.renderCanvasContext;let c=xn();e.stats.lastLutGenerateTime=xn()-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=y=>255-(y-d)*p:v=y=>(y-d)*p,Hce(e,v,a.data)}else{const f=Hk(e,l,r);n?jce(e,f,a.data):Kce(e,f,a.data)}return c=xn(),s.putImageData(a,0,0),e.stats.lastPutImageDataTime=xn()-c,o}function tle(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,sE(t,n);const i=ele(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=lE(t)}const NS=0,kS=1,nle=2;function rle(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 ile(t,e){let r;return te.Range[1]?r=e.MaxIndex+kS+1.5:r=(t+e.Shift)*e.Scale,Math.floor(r)}class uE{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=rle(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+NS,n=e+kS,i=e+nle;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=ile(e,r);return n===this.NumberOfColors+NS?n=0:n===this.NumberOfColors+kS&&(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 s9=[0,0,0,0];function ole(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 ale(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&&iVS(Math.floor(255-(m-h)*v),0,255):y=m=>VS(Math.floor((m-h)*v),0,255),fle(e,y,f,s.data)}else{const u=Hk(e,t.viewport,r);e.stats=e.stats||{},e.stats.lastLutGenerateTime=xn()-a,ule(e,u,f,s.data)}return a=xn(),c.putImageData(s,0,0),e.stats.lastPutImageDataTime=xn()-a,n}function hle(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,sE(t,n);const i=dle(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=lE(t)}function Kk(t,e){const r=t.image;if(!t.canvas||!t.image)return;const n=xn();if(r.stats={lastGetPixelDataTime:-1,lastStoredPixelDataToCanvasImageDataTime:-1,lastPutImageDataTime:-1,lastRenderTime:-1,lastLutGenerateTime:-1},r){let o=r.render;o||(t.viewport.colormap?o=hle:r.color?o=$ce:o=tle),o(t,e)}const i=xn()-n;r.stats.lastRenderTime=i,t.invalid=!1,t.needsRedraw=!1}function qk(t){return Em(t)}function D2(t,e){const r=qk(t);return r.invert(),r.transformPoint(e)}const gle={viewport:{}};function ple(){return{tlhc:{x:1,y:1},brhc:{x:1,y:1},rowPixelSpacing:1,columnPixelSpacing:1,presentationSizeMode:"NONE"}}function mle(){const t=ple(),e={scale:1,translation:{x:0,y:0},voi:{windowWidth:void 0,windowCenter:void 0,voiLUTFunction:po.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,gle.viewport)}function Ip(t,e){if(t==null)throw new Error(e)}function vle(t){return!(t==null||t===0||t===180)}function Xk(t,e=null){return Ip(t,"getImageSize: parameter image must not be undefined"),Ip(t.width,"getImageSize: parameter image must have width"),Ip(t.height,"getImageSize: parameter image must have height"),vle(e)?{height:t.width,width:t.height}:{width:t.width,height:t.height}}function fE(t,e,r=null){Ip(t,"getImageScale: parameter canvas must not be undefined"),Ip(e,"getImageScale: parameter image must not be undefined");const n=Xk(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&&Sle(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=Tce.newInstance();n.setInputData(r);const i=Lce.newInstance();i.setMapper(n);const{preferSizeOverAccuracy:o}=xw().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,flipHorizontal:o}=this.getCameraNoRotation(),a=l9(this.initialViewUp,o,i,n),c=g4(a,r)*180/Math.PI,l=Ln(Be(),a,r);return St(l,n)>=0?c:(360-c)%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};nt(this.element,Xe.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]=D2(this._cpuFallbackEnabledElement,r),{origin:a,spacing:s,direction:c}=this.getImageData(),l=c.slice(0,3),f=c.slice(3,6);return Cn(n,a,l,i*s[0]),Cn(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=jn(Be(),r,o),l=[St(c,a)/n[0],St(c,s)/n[1]];return c9(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=(r=this.getCurrentImageIdIndex())=>this.imageIds[r],this.hasImageId=r=>this.imageKeyToIndexMap.has(r),this.hasImageURI=r=>this.imageKeyToIndexMap.has(r),this.customRenderViewportToCanvas=()=>{if(!this.useCPURendering)throw new Error("Custom cpu rendering pipeline should only be hit in CPU rendering mode");return this._cpuFallbackEnabledElement.image?(Kk(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=ih(),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 ih()}_configureRenderingPipeline(e){this.useCPURendering=e??ih();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 ng,viewport:{rotation:0}}}_resetGPUViewport(){const e=this.getRenderer(),r=V4.newInstance();e.setActiveCamera(r),this.initialViewUp=[0,-1,0],r.setDirectionOfProjection(-0,-0,1),r.setViewUp(...this.initialViewUp),r.setParallelProjection(!0),r.setThicknessFromFocalPoint(.1),r.setFreezeFocalPoint(!0)}initializeElementDisabledHandler(){He.addEventListener(Xe.ELEMENT_DISABLED,function e(){clearTimeout(this.debouncedTimeout),He.removeEventListener(Xe.ELEMENT_DISABLED,e)})}getImageDataGPU(){const e=this.getDefaultActor();if(!e||!sc(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;if(!e)return;const 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=D2(this._cpuFallbackEnabledElement,o);return[a[0],a[1],0]},indexToWorld:(i,o)=>{const a=c9(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}}calibrateIfNecessary(e,r){const n=lt("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?Ao.PRE_RENDER:Ao.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=Ao.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(Kl.LINEAR),!this.useCPURendering){const r=this.getTransferFunction();_w(r,this.initialTransferFunctionNodes);const i=zy(r).reduce((s,c)=>(s.push(c[0],c[1],c[2],c[3]),s),[]),o=this.getDefaultActor(),a=H4(i,o.actor);this.setColormap(a)}}resetToDefaultProperties(){var i;this.cpuRenderingInvalidated=!0,this.viewportStatus=Ao.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(Kl.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;if(!e)return{};const{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=f4(Ea(),r.rotation*Math.PI/180,i);o=Wt(Be(),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=Ki(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=D2(this._cpuFallbackEnabledElement,d),g=this.worldToCanvasCPU(i.focalPoint),p=D2(this._cpuFallbackEnabledElement,g),v=Jt();Yr(v,tD(h[0],h[1]),tD(p[0],p[1]));const y=Tle({x:v[0],y:v[1]},r);r.translation.x-=y.x,r.translation.y-=y.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=Em(this._cpuFallbackEnabledElement);const u={previousCamera:i,camera:this.getCamera(),element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId};nt(this.element,Xe.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=Ts([0,0],r,n);this.setPan(i,!1);const{flipVertical:o,flipHorizontal:a,viewPlaneNormal:s}=this.getCamera(),c=l9(this.initialViewUp,a,o,s);this.setCameraNoEvent({viewUp:c}),this.getVtkActiveCamera().roll(-e);const l=this.getPan(),f=this.getPan(this.fitToCanvasCamera),u=Ts([0,0],l,f),d=fo([0,0],r,u);this.setPan(d,!1)}setInterpolationTypeGPU(e){const r=this.getDefaultActor();if(!r||!sc(r))return;const{actor:n}=r;n.getProperty().setInterpolationType(e),this.interpolationType=e}setInterpolationTypeCPU(e){const{viewport:r}=this._cpuFallbackEnabledElement;r.pixelReplication=e!==Kl.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&&sc(r)){if(Ta(r,"vtkVolume")){const i=r.actor.getProperty().getRGBTransferFunction(0);(!this.invert&&e||this.invert&&!e)&&Dp(i),this.invert=e}else if(Ta(r,"vtkImageSlice")){const i=r.actor.getProperty().getRGBTransferFunction(0);(!this.invert&&e||this.invert&&!e)&&Dp(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,voiLUTFunction:o.voiLUTFunction};const{lower:u,upper:d}=af(l,f,o.voiLUTFunction);e={lower:u,upper:d}}else{const{lower:s,upper:c}=e,{windowCenter:l,windowWidth:f}=h1(s,c);i.voi||(i.voi={windowWidth:0,windowCenter:0,voiLUTFunction:o.voiLUTFunction}),i.voi.windowWidth=f,i.voi.windowCenter=l}this.voiRange=e;const a={viewportId:this.id,range:e};n||nt(this.element,Xe.VOI_MODIFIED,a)}getTransferFunction(){const e=this.getDefaultActor();return!e||!sc(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||!sc(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===po.SAMPLED_SIGMOID;if((f||!l||i)&&(l=(f?Y4:Gk)(c),this.invert&&Dp(l),s.getProperty().setRGBTransferFunction(0,l),this.initialTransferFunctionNodes=zy(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};nt(this.element,Xe.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}getImageDataMetadata(e){const r=e.imageId,n=Ew(e),{numberOfComponents:i,origin:o,direction:a,dimensions:s,spacing:c,numVoxels:l,imagePixelModule:f,voiLUTFunction:u,modality:d,scalingFactor:h,calibration:g}=n;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)),{bitsAllocated:f.bitsAllocated,numberOfComponents:i,origin:o,direction:a,dimensions:s,spacing:c,numVoxels:l,imagePlaneModule:v,imagePixelModule:f}}matchImagesForOverlay(e,r){return(i=>{const o=lt(ta.IMAGE_PLANE,r),a=lt(ta.IMAGE_PLANE,i),s=o.imageOrientationPatient,c=a.imageOrientationPatient;if(s&&c){if(Kt(o.imageOrientationPatient,a.imageOrientationPatient)){const f=o.imagePositionPatient,u=a.imagePositionPatient;if(f&&u&&Kt(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=lt(ta.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=Ln([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=Ot.newInstance({name:"Pixels",numberOfComponents:o,values:s}),l=u1.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){u9.error(s)}}async setStack(e,r=0){if(this._throwIfDestroyed(),this.imageIds=e,r>e.length)throw new Error("Current image index is greater than the number of images in the stack");this.imageKeyToIndexMap.clear(),e.forEach((a,s)=>{this.imageKeyToIndexMap.set(a,s),this.imageKeyToIndexMap.set(Ar(a),s)}),this.currentImageIdIndex=r,this.targetImageIdIndex=r;const n=lt(Cm.IMAGE_RETRIEVE_CONFIGURATION,e[r],"stack");this.imagesLoader=n?(n.create||Ck)(n):this,this.stackInvalidated=!0,this.flipVertical=!1,this.flipHorizontal=!1,this.voiRange=null,this.interpolationType=Kl.LINEAR,this.invert=!1,this.viewportStatus=Ao.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 nt(this.element,Xe.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=Kt(n,e.columnPixelSpacing),h=Kt(i,e.rowPixelSpacing),g=d||e.columnPixelSpacing===null&&n===1,p=h||e.rowPixelSpacing===null&&i===1,v=o===e.columns,y=a===e.rows,m=Kt(s.rowCosines,l),w=Kt(s.columnCosines,f),x=u===e.voxelManager.getScalarData().constructor.name;return g&&p&&v&&y&&m&&w&&x}_updateVTKImageDataFromCornerstoneImage(e){let n=this._getImagePlaneModule(e.imageId).imagePositionPatient;n==null&&(n=[0,0,0]),this._imageData.setOrigin(n);const i=this.getActor(this.id);i&&(i.referencedId=e.imageId),bw(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(),y=h.preScale,m=y==null?void 0:y.scalingParameters,w=(y==null?void 0:y.scaled)&&(m==null?void 0:m.rescaleIntercept)%1!==0||(m==null?void 0:m.rescaleSlope)%1!==0;if(v instanceof Float32Array&&w){const C={min:h.minPixelValue,max:h.maxPixelValue},_=Math.abs(C.max-C.min)/65535,E=C.min,b=v.length,D=new Uint16Array(b);let O=65535,L=0;for(let P=0;PD:h.getPixelData=()=>D,h.preScale={...h.preScale,scaled:!1}}this._setCSImage(h),this.viewportStatus=Ao.PRE_RENDER;const x={image:h,imageId:p,imageIdIndex:g,viewportId:this.id,renderingEngineId:this.renderingEngineId};nt(this.element,Xe.STACK_NEW_IMAGE,x),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||nt(He,Xe.IMAGE_LOAD_ERROR,v),i(h)}function s(h,g,p){return Ds(h,p).then(v=>{o.call(this,v,g,h)},v=>{a.call(this,v,g,h)})}const c=-5,l=un.Interaction,f={imageId:e,imageIdIndex:r},u={useRGBA:!0,requestType:l},d={imageId:e,imageIdIndex:r,viewportId:this.id,renderingEngineId:this.renderingEngineId};nt(this.element,Xe.PRE_STACK_NEW_IMAGE,d),Ai.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),nt(this.element,Xe.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};nt(He,Xe.IMAGE_LOAD_ERROR,o)}getLoaderImageOptions(e){const r=this.imageIds.indexOf(e),{transferSyntaxUID:n}=lt("transferSyntax",e)||{};return{useRGBA:!1,transferSyntaxUID:n,priority:5,requestType:un.Interaction,additionalDetails:{imageId:e,imageIdIndex:r}}}async loadImages(e,r){const n=await Promise.allSettled(e.map(o=>{const a=this.getLoaderImageOptions(o);return Ds(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(Xe.IMAGE_LOAD_ERROR,{detail:i,cancelable:!0});He.dispatchEvent(o)}return n}_loadAndDisplayImageGPU(e,r){if(!e){console.warn("No image id set yet to load");return}const n={imageId:e,imageIdIndex:r,viewportId:this.id,renderingEngineId:this.renderingEngineId};return nt(this.element,Xe.PRE_STACK_NEW_IMAGE,n),this.imagesLoader.loadImages([e],this).then(i=>e)}_updateToDisplayImageCPU(e){const r=this.getImageDataMetadata(e),n=Yk(this.canvas,e,this.modality,this._cpuFallbackEnabledElement.viewport.colormap),{windowCenter:i,windowWidth:o,voiLUTFunction:a}=n.voi;this.voiRange=af(o,i,a),this._cpuFallbackEnabledElement.image=e,this._cpuFallbackEnabledElement.metadata={...r},this.cpuImagePixelData=e.voxelManager.getScalarData();const s=Object.assign({},n,this._cpuFallbackEnabledElement.viewport);this._cpuFallbackEnabledElement.viewport=this.stackInvalidated?n:s,this.stackInvalidated=!1,this.cpuRenderingInvalidated=!0,this._cpuFallbackEnabledElement.transform=Em(this._cpuFallbackEnabledElement)}getSliceViewInfo(){throw new Error("Method not implemented.")}addImages(e){const r=[];e.forEach(n=>{const{imageId:i,...o}=n,a=ke.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??Tn(),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,referencedId:e.imageId}),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 y=this._getInitialVOIRange(e);this.setVOI(y,{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.voiRange;const{windowCenter:r,windowWidth:n,voiLUTFunction:i}=e;let o=this._getVOIRangeFromWindowLevel(n,r,i);return o=this._getPTPreScaledRange()||o,o}_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,n=po.LINEAR){let i,o;if(typeof r=="number"&&typeof e=="number"?(i=r,o=e):Array.isArray(r)&&Array.isArray(e)&&(i=r[0],o=e[0]),i!==void 0&&o!==void 0)return af(o,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=Ao.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;_le(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;if(isNaN(this.targetImageIdIndex))return;const o=this.targetImageIdIndex,a=i.length;let s=o+e;n?s=(s+a)%a:s=Math.max(0,Math.min(a-1,s)),this.targetImageIdIndex=s;const c=i[s];ke.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&&nt(this.element,Xe.STACK_VIEWPORT_SCROLL,f)}setImageIdIndex(e){if(this._throwIfDestroyed(),this.currentImageIdIndex===e)return Promise.resolve(this.getCurrentImageId());const r=this._setImageIdIndex(e);return this.targetImageIdIndex=e,r}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||nt(this.element,Xe.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||nt(this.element,Xe.IMAGE_SPACING_CALIBRATED,r),this._publishCalibratedEvent=!1}jumpToWorld(e){const r=this.getImageIds(),n=this.getImageData(),{direction:i,spacing:o}=n,a=cu({direction:i,spacing:o,imageIds:r},e,this.getCamera().viewPlaneNormal,{ignoreSpacing:!0}),s=r.indexOf(a);return s===-1?!1:(this.setImageIdIndex(s),this.render(),!0)}_getVOIRangeForCurrentImage(){const{windowCenter:e,windowWidth:r,voiLUTFunction:n}=this.csImage;return this._getVOIRangeFromWindowLevel(r,e,n)}_getValidVOILUTFunction(e){return Object.values(po).includes(e)?e:po.LINEAR}getSliceInfo(){const e=this.getSliceIndex(),{dimensions:r}=this.getImageData();return{width:r[0],height:r[1],sliceIndex:e,slicePlane:2}}isReferenceViewable(e,r={}){const n=this.getCurrentImageIdIndex(),i=this.imageIds[n];if(!i||!e)return!1;const{referencedImageId:o,multiSliceReference:a}=e;if(o){if(o===i)return!0;e.referencedImageURI||(e.referencedImageURI=Ar(o));const{referencedImageURI:c}=e,l=this.imageKeyToIndexMap.get(c);if(r.asOverlay&&this.matchImagesForOverlay(i,o))return!0;if(l===void 0)return!1;if(r.withNavigation)return!0;const f=a&&this.imageKeyToIndexMap.get(a.referencedImageId);return n<=f&&n>=l}if(!super.isReferenceViewable(e,r))return!1;if(e.volumeId)return r.asVolume;const{cameraFocalPoint:s}=e;if(r.asNearbyProjection&&s){const{spacing:c,direction:l,origin:f}=this.getImageData(),u=l.slice(6,9),d=Mf({direction:l,spacing:c},u),h=jn(Be(),s,f),g=St(h,u),p=d/2;if(Math.abs(g)<=p)return!0}return!1}getViewReference(e={}){const{sliceIndex:r=this.getCurrentImageIdIndex()}=e,n=super.getViewReference(e),i=this.getCurrentImageId(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!=null&&e.referencedImageId)){(e==null?void 0:e.sliceIndex)!==void 0&&this.scroll(e.sliceIndex-this.targetImageIdIndex);return}const{referencedImageId:r}=e;e.referencedImageURI||(e.referencedImageURI=Ar(r));const{referencedImageURI:n}=e,i=this.imageKeyToIndexMap.get(n);if(i===void 0){u9.error(`No image URI found for ${n}`);return}this.scroll(i-this.targetImageIdIndex)}getViewReferenceId(e={}){const{sliceIndex:r=this.currentImageIdIndex}=e;return`imageId:${this.imageIds[r]}`}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 r=wm(e.name);this._cpuFallbackEnabledElement.viewport.colormap=r,this._cpuFallbackEnabledElement.renderingTools={},this.fillWithBackgroundColor(),this.cpuRenderingInvalidated=!0,this.render();const n={viewportId:this.id,colormap:e};nt(this.element,Xe.COLORMAP_MODIFIED,n)}setColormapGPU(e){const i=this.getDefaultActor().actor.getProperty(),o=i.getRGBTransferFunction(),a=wm(e.name)||ym.getPresetByName(e.name);if(o)o.applyColorMap(a),o.setMappingRange(this.voiRange.lower,this.voiRange.upper),i.setRGBTransferFunction(0,o);else{const c=lu.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};nt(this.element,Xe.COLORMAP_MODIFIED,s)}unsetColormapGPU(){throw new Error("unsetColormapGPU not implemented.")}_getImagePlaneModule(e){var n,i;const r=Uk(e);return this.hasPixelSpacing=!r.usingDefaultValues||((n=this.calibration)==null?void 0:n.scale)>0||((i=this.calibration)==null?void 0:i.rowPixelSpacing)>0,this.calibration||(this.calibration=r.calibration),r}isInAcquisitionPlane(){return!0}}class dE extends Cr{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!==Md.ACQUISITION&&this.applyViewOrientation(n)}isInAcquisitionPlane(){return!1}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(-Zr.MAXIMUM_RAY_DISTANCE,Zr.MAXIMUM_RAY_DISTANCE):i.setClippingRange(Zr.MINIMUM_SLAB_THICKNESS,Zr.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=Zr.MINIMUM_SLAB_THICKNESS,this.viewportProperties.slabThickness=void 0,this.updateClippingPlanesForActors(this.getCamera())),e||(e=this.getVolumeId());const n=ke.getVolume(e);if(!n)throw new Error(`imageVolume with id: ${e} does not exist in cache`);if(aE(r.actor,n),sc(r)){const i=r.actor.getProperty().getRGBTransferFunction(0);_w(i,this.initialTransferFunctionNodes)}this.setCamera(this.initialCamera),nt(this.element,Xe.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(-Zr.MAXIMUM_RAY_DISTANCE,Zr.MAXIMUM_RAY_DISTANCE):e.setClippingRange(Zr.MINIMUM_SLAB_THICKNESS,Zr.MAXIMUM_RAY_DISTANCE)}resetSlabThickness(){return null}}async function Jk(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 Cr))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 Zk(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 Cr)){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)}function Qk(t,e,r){for(const n of r){const i=t.getViewport(n);if(!i)throw new Error(`Viewport with Id ${n} does not exist`);if(!i.addImages){console.warn(`Viewport with Id ${n} does not have addImages. Cannot add image segmentation to this viewport.`);return}}r.forEach(n=>{t.getViewport(n).addImages(e)})}class ble{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 Dle{constructor(e){this.actor=e}getInputData(){return this.actor.getImage()}}class Ile{constructor(e,r){this.canvasProperties=new ble(this),this.visibility=!1,this.mapper=new Dle(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 y=0;yD*255);let b=w+(S<<2);for(let D=S;Di)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)}setMapper(e){this.mapper=e}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,y=-1/0;for(let x=0;xi)return;const m=v-g+1,w=y-p+1;l.putImageData(f,0,0,g,p,m,w),r.drawImage(c,g,p,m,w,g,p,m,w)}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}}const cb=class cb{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 imageIdToFrameEnd(e){const r=this.imageIdToFrames(e);return Array.isArray(r)?r[1]:r}static imageIdToFrameStart(e){const r=this.imageIdToFrames(e);return Array.isArray(r)?r[0]:r}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}`)}};cb.frameRangeExtractor=/(\/frames\/|[&?]frameNumber=)([^/&?]*)/i;let lh=cb;const Bp=class Bp extends Nd{constructor(e){super({...e,canvas:e.canvas||Xc(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(),nt(this.element,Xe.STACK_NEW_IMAGE,{element:this.element,viewportId:this.id,viewport:this,renderingEngineId:this.renderingEngineId,time:this.videoElement.currentTime,duration:this.videoElement.duration}),nt(this.element,Xe.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(Xe.ELEMENT_DISABLED,this.elementDisabledHandler)}removeEventListeners(){this.canvas.removeEventListener(Xe.ELEMENT_DISABLED,this.elementDisabledHandler)}elementDisabledHandler(){this.removeEventListeners(),this.videoElement.remove()}getImageDataMetadata(e){const r=typeof e=="string"?e:e.imageId,n=lt(ta.IMAGE_PLANE,r);let i=n.rowCosines,o=n.columnCosines;(n.usingDefaultValues||i==null||o==null)&&(i=[1,0,0],o=[0,1,0]);const s=bt(i[0],i[1],i[2]),c=bt(o[0],o[1],o[2]),{rows:l,columns:f}=n,u=Be();Ln(u,s,c);let d=n.imagePositionPatient;d==null&&(d=[0,0,0]);const h=n.columnPixelSpacing||1,g=n.rowPixelSpacing||1,p=n.columns,v=n.rows,y=1,m=1;return this.hasPixelSpacing=!!n.columnPixelSpacing,{bitsAllocated:8,numberOfComponents:3,origin:d,rows:l,columns:f,direction:[...s,...c,...u],dimensions:[p,v,m],spacing:[h,g,y],hasPixelSpacing:this.hasPixelSpacing,numVoxels:p*v*m,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=lt(ta.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=lt(ta.GENERAL_SERIES,e);this.modality=o==null?void 0:o.Modality,this.metadata=this.getImageDataMetadata(e);let{cineRate:a,numberOfFrames:s}=lt(ta.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]])}getSliceIndexForImage(e){if(e){if(typeof e=="string")return lh.imageIdToFrameStart(e);if(e.referencedImageId)return lh.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,r=dm.FRAME){this.scrollSpeed=r===dm.SECOND?e*this.fps:e}resetProperties(){this.setProperties({loop:!1,muted:!0,voiRange:{lower:0,upper:255}})}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)=>Z4(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(Bp.frameRangeExtractor),n=r?e.substring(0,r.index):e;return this.imageId.includes(n)}setVOI(e){this.voiRange=e;const r=this.setColorTransform(e,this.averageWhite);this.canvas.style.filter=r}setWindowLevel(e=256,r=128){const n=r-e/2,i=r+e/2-1;this.setVOI({lower:n,upper:i}),this.setColorTransform({lower:n,upper:i},this.averageWhite)}setAverageWhite(e){this.averageWhite=e,this.setColorTransform(this.voiRange,e)}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(e=this.getCurrentImageIdIndex()){return this.imageId.replace("/frames/1",`/frames/${e+1}`)}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,multiSliceReference:a}=e;if(!super.isReferenceViewable(e))return!1;const s=this.getCurrentImageId();if(!n){const d=s.indexOf(":");n=s.substring(d+1,s.length-1)}if(r.withNavigation)return!0;const c=this.getSliceIndex();if(a){const d=lh.imageIdToFrameEnd(a.referencedImageId);return c>=o&&c<=d}if(o!==void 0)return c===o;if(!i)return!1;const l=i.match(Bp.frameRangeExtractor);if(!l||!l[2])return!0;const f=l[2].split("-").map(d=>Number(d)),u=c+1;return f[0]<=u&&u<=(f[1]??f[0])}setViewReference(e){typeof e.sliceIndex=="number"?this.setFrameNumber(e.sliceIndex+1):Array.isArray(e.sliceIndex)&&this.setFrameRange(e.sliceIndex)}getViewReference(e){const r=(e==null?void 0:e.sliceIndex)??(this.isPlaying?this.frameRange[0]:this.getCurrentImageIdIndex()),n=(e==null?void 0:e.rangeEndSliceIndex)??(this.isPlaying?this.frameRange[1]-1:void 0),i=n>r?{sliceIndex:n,referencedImageId:this.getCurrentImageId(n)}:void 0;return{...super.getViewReference(e),referencedImageId:this.getViewReferenceId(e),sliceIndex:r,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,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 ng;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{imageId:i,...o}=n,a=ke.getImage(i),s=this.createActorMapper(a),c=n.actorUID??Tn();s&&(r.push({uid:c,actor:s,referencedId:i,...o}),n.callback&&n.callback({imageActor:s,imageId:i}))}),this.setActors(r)}createActorMapper(e){return new Ile(this,e)}};Bp.frameRangeExtractor=/(\/frames\/|[&?]frameNumber=)([^/&?]*)/i;let Lh=Bp;const Ole=` .DicomMicroscopyViewer { --ol-partial-background-color: rgba(127, 127, 127, 0.7); --ol-foreground-color: #000000; @@ -3393,65 +3393,65 @@ void main() .DicomMicroscopyViewer .ol-tooltip { font-size: 16px !important; } -`;let yp=null;const Jfe="postrender",yh=class yh extends s0{constructor(e){super({...e,canvas:e.canvas||ts(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 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=this.canvasToIndex(n);return i[1]=-i[1],this.indexToWorld(i)},this.worldToCanvas=n=>{if(!this.metadata)return;const i=this.worldToIndex(n);return i[1]=-i[1],this.indexToCanvas([i[0],i[1],0])},this.postrender=()=>{this.refreshRenderValues(),nt(this.element,qe.IMAGE_RENDERED,{element:this.element,viewportId:this.id,viewport:this,renderingEngineId:this.renderingEngineId})},this.getRotation=()=>0,this.canvasToIndex=n=>{const i=this.getTransform();i.invert();const o=i.transformPoint(n.map(a=>a*devicePixelRatio));return[o[0],o[1],0]},this.indexToCanvas=n=>this.getTransform().transformPoint([n[0],n[1]]).map(o=>o/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=Pn(),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(qe.ELEMENT_DISABLED,this.elementDisabledHandler)}removeEventListeners(){this.canvas.removeEventListener(qe.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((b,D)=>(b==null?void 0:b.NumberOfFrames){i.style.filter=r})}setAverageWhite(e){this.averageWhite=e,this.setColorTransform(this.voiRange,e)}getScalarData(){return null}computeTransforms(){const e=La(),r=La();return qm(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],Ml(e,e,this.metadata.spacing),ei(r,e),{indexToWorld:e,worldToIndex:r}}getImageData(){const{metadata:e}=this;if(!e)return null;const{spacing:r}=e,n={getDirection:()=>e.direction,getDimensions:()=>e.dimensions,getRange:()=>[0,255],getScalarData:()=>this.getScalarData(),getSpacing:()=>e.spacing,worldToIndex:o=>this.worldToIndex(o),indexToWorld:o=>this.indexToWorld(o)};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}}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,centerIndex:n}=this.internalCamera,i=e*r,o=this.indexToCanvas([n[0],n[1],0]),a=this.canvasToWorld(o);return{parallelProjection:!0,focalPoint:a,position:a,viewUp:[0,-1,0],parallelScale:this.element.clientHeight*i,viewPlaneNormal:[0,0,1]}}worldToIndexWSI(e){if(!yp)return;const r=this.viewer.getAffine(),n=yp.applyInverseTransform({coordinate:[e[0],e[1]],affine:r});return[n[0],n[1]]}indexToWorldWSI(e){if(!yp)return;const r=yp.applyTransform({coordinate:[e[0],e[1]],affine:this.viewer.getAffine()});return[r[0],r[1],0]}worldToIndex(e){const{worldToIndex:r}=this.computeTransforms(),n=Ve();return Gt(n,e,r),n}indexToWorld(e){const{indexToWorld:r}=this.computeTransforms(),n=Ve(),i=Et(...e);return Gt(n,i,r),[n[0],n[1],n[2]]}setDataIds(e,r){(r==null?void 0:r.miniNavigationOverlay)!==!1&&yh.addMiniNavigationOverlayCss();const n=(r==null?void 0:r.webClient)||ut(Za.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 yh.getDicomMicroscopyViewer();yp||(yp=n.utils),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.getMap(),this.map.on(Jfe,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.getMap(),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||rtA("dicom-microscopy-viewer"),yh.overlayCssId="overlayCss";let V5=yh;const zF={[Jn.ORTHOGRAPHIC]:lr,[Jn.PERSPECTIVE]:lr,[Jn.STACK]:hr,[Jn.VOLUME_3D]:dx,[Jn.VIDEO]:dg,[Jn.WHOLE_SLIDE]:V5};function vl(t){return zF[t].useCustomRenderingPipeline}const Sa={WIDTH:160,HEIGHT:96,TEXT_PADDING:3,TEXT_Y_OFFSET:2,GRAPH_Y_OFFSET:15,GRAPH_WIDTH:150,GRAPH_HEIGHT:70,FONT_SIZE:9,FONT_FAMILY:"Helvetica,Arial,sans-serif",GRAPH_ALPHA:.9},h2={UPDATE_INTERVAL:1e3,MAX_MS_VALUE:200,MAX_FPS_VALUE:300,OVERLAY_STYLES:{position:"fixed",top:"0px",right:"0px",left:"auto",zIndex:"9999",cursor:"pointer",opacity:"0.9"}},QC={BYTES_TO_MB:1048576,MS_PER_SECOND:1e3},Jl=[{name:"FPS",foregroundColor:"#0ff",backgroundColor:"#002"},{name:"MS",foregroundColor:"#0f0",backgroundColor:"#020"},{name:"MB",foregroundColor:"#f08",backgroundColor:"#201"}];class e3{constructor(e,r,n){this.minValue=1/0,this.maxValue=0,this.name=e,this.foregroundColor=r,this.backgroundColor=n,this.devicePixelRatio=Math.round(window.devicePixelRatio||1),this.dimensions=this.calculateDimensions(),this.dom=this.createCanvas(),this.context=this.initializeContext(),this.drawInitialPanel()}update(e,r){this.updateMinMax(e),this.clearTextArea(),this.drawText(e),this.scrollGraph(),this.drawNewValue(e,r)}calculateDimensions(){const e=this.devicePixelRatio;return{width:Sa.WIDTH*e,height:Sa.HEIGHT*e,textX:Sa.TEXT_PADDING*e,textY:Sa.TEXT_Y_OFFSET*e,graphX:Sa.TEXT_PADDING*e,graphY:Sa.GRAPH_Y_OFFSET*e,graphWidth:Sa.GRAPH_WIDTH*e,graphHeight:Sa.GRAPH_HEIGHT*e}}createCanvas(){const e=document.createElement("canvas");return e.width=this.dimensions.width,e.height=this.dimensions.height,e.style.cssText=`width:${Sa.WIDTH}px;height:${Sa.HEIGHT}px`,e}initializeContext(){const e=this.dom.getContext("2d");if(!e)throw new Error("Failed to get 2D context");return e.font=`bold ${Sa.FONT_SIZE*this.devicePixelRatio}px ${Sa.FONT_FAMILY}`,e.textBaseline="top",e}drawInitialPanel(){const{width:e,height:r,textX:n,textY:i,graphX:o,graphY:a,graphWidth:s,graphHeight:c}=this.dimensions;this.context.fillStyle=this.backgroundColor,this.context.fillRect(0,0,e,r),this.context.fillStyle=this.foregroundColor,this.context.fillText(this.name,n,i),this.context.fillRect(o,a,s,c),this.context.fillStyle=this.backgroundColor,this.context.globalAlpha=Sa.GRAPH_ALPHA,this.context.fillRect(o,a,s,c),this.context.globalAlpha=1}updateMinMax(e){this.minValue=Math.min(this.minValue,e),this.maxValue=Math.max(this.maxValue,e)}clearTextArea(){const{width:e,graphY:r}=this.dimensions;this.context.fillStyle=this.backgroundColor,this.context.fillRect(0,0,e,r)}drawText(e){const{textX:r,textY:n}=this.dimensions,i=this.formatText(e);this.context.fillStyle=this.foregroundColor,this.context.fillText(i,r,n)}formatText(e){const r=Math.round(e),n=Math.round(this.minValue),i=Math.round(this.maxValue);return`${r} ${this.name} (${n}-${i})`}scrollGraph(){const{graphX:e,graphY:r,graphWidth:n,graphHeight:i}=this.dimensions,o=this.devicePixelRatio;this.context.drawImage(this.dom,e+o,r,n-o,i,e,r,n-o,i)}drawNewValue(e,r){const{graphX:n,graphY:i,graphWidth:o,graphHeight:a}=this.dimensions,s=this.devicePixelRatio,c=n+o-s;this.context.fillStyle=this.foregroundColor,this.context.fillRect(c,i,s,a);const l=Math.round((1-e/r)*a);this.context.fillStyle=this.backgroundColor,this.context.globalAlpha=Sa.GRAPH_ALPHA,this.context.fillRect(c,i,s,l),this.context.globalAlpha=1}}var ho;(function(t){t[t.FPS=0]="FPS",t[t.MS=1]="MS",t[t.MEMORY=2]="MEMORY"})(ho||(ho={}));var pl;let Zfe=(pl=class{constructor(){this.dom=null,this.currentMode=0,this.startTime=0,this.lastUpdateTime=0,this.frameCount=0,this.panels=new Map,this.animationFrameId=null,this.isSetup=!1}static getInstance(){return pl.instance||(pl.instance=new pl),pl.instance}setup(){if(!this.isSetup)try{this.dom=this.createOverlayElement(),this.startTime=performance.now(),this.lastUpdateTime=this.startTime,this.initializePanels(),this.showPanel(ho.FPS),this.applyOverlayStyles(),document.body.appendChild(this.dom),this.startLoop(),this.isSetup=!0}catch(e){console.warn("Failed to setup stats overlay:",e)}}cleanup(){this.stopLoop(),this.dom&&this.dom.parentNode&&this.dom.parentNode.removeChild(this.dom),this.dom=null,this.panels.clear(),this.isSetup=!1}showPanel(e){Array.from(this.dom.children).forEach((n,i)=>{n.style.display=i===e?"block":"none"}),this.currentMode=e}update(){this.startTime=this.updateStats()}createOverlayElement(){const e=document.createElement("div");return e.addEventListener("click",this.handleClick.bind(this),!1),e}applyOverlayStyles(){Object.assign(this.dom.style,h2.OVERLAY_STYLES)}handleClick(e){e.preventDefault();const r=this.dom.children.length;this.showPanel((this.currentMode+1)%r)}initializePanels(){const e=new e3(Jl[ho.FPS].name,Jl[ho.FPS].foregroundColor,Jl[ho.FPS].backgroundColor);this.addPanel(ho.FPS,e);const r=new e3(Jl[ho.MS].name,Jl[ho.MS].foregroundColor,Jl[ho.MS].backgroundColor);if(this.addPanel(ho.MS,r),this.isMemoryAvailable()){const n=new e3(Jl[ho.MEMORY].name,Jl[ho.MEMORY].foregroundColor,Jl[ho.MEMORY].backgroundColor);this.addPanel(ho.MEMORY,n)}}isMemoryAvailable(){return performance.memory!==void 0}addPanel(e,r){this.dom.appendChild(r.dom),this.panels.set(e,r)}startLoop(){const e=()=>{this.update(),this.animationFrameId=requestAnimationFrame(e)};this.animationFrameId=requestAnimationFrame(e)}stopLoop(){this.animationFrameId!==null&&(cancelAnimationFrame(this.animationFrameId),this.animationFrameId=null)}updateStats(){this.frameCount++;const e=performance.now(),r=e-this.startTime,n=this.panels.get(ho.MS);if(n&&n.update(r,h2.MAX_MS_VALUE),e>=this.lastUpdateTime+h2.UPDATE_INTERVAL){const i=this.frameCount*QC.MS_PER_SECOND/(e-this.lastUpdateTime),o=this.panels.get(ho.FPS);o&&o.update(i,h2.MAX_FPS_VALUE),this.lastUpdateTime=e,this.frameCount=0,this.updateMemoryPanel()}return e}updateMemoryPanel(){const e=this.panels.get(ho.MEMORY);if(!e)return;const r=performance;if(r.memory){const n=r.memory.usedJSHeapSize/QC.BYTES_TO_MB,i=r.memory.jsHeapSizeLimit/QC.BYTES_TO_MB;e.update(n,i)}}},pl.instance=null,pl);const D9=Zfe.getInstance(),F5=2;class C8{constructor(e){var n;if(this._needsRender=new Set,this._animationFrameSet=!1,this._animationFrameHandle=null,this.renderFrameOfReference=i=>{const a=this._getViewportsAsArray().map(s=>{if(s.getFrameOfReferenceUID()===i)return s.id});this.renderViewports(a)},this.id=e||Pn(),this.useCPURendering=Lh(),J1.set(this),!eA())throw new Error("@cornerstonejs/core is not initialized, run init() first");this._viewports=new Map,this.hasBeenDestroyed=!1;const r=Iu();(n=r==null?void 0:r.debug)!=null&&n.statsOverlay&&D9.setup()}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=vl(a);!this.useCPURendering&&!s?this.enableVTKjsDrivenViewport(r):this.addCustomViewport(r);const c=ts(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),!vl(r.type)&&!this.useCPURendering&&this.offscreenMultiRenderWindow&&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&&!vl(o.type)?n.push(o):i.push(o)}),this.setVtkjsDrivenViewports(n),this.setCustomViewports(i),r.forEach(o=>{const a=ts(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=>{vl(a.type)?o.push(a):i.push(a)}),i.length&&this._resizeVTKViewports(i,r,e),o.length&&this._resizeUsingCustomResizeHandler(o,r,e)}getViewport(e){var r;return(r=this._viewports)==null?void 0:r.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 hr))throw new Error(`Viewport with Id ${e} is not a StackViewport.`);return r}getStackViewports(){return this._throwIfDestroyed(),this.getViewports().filter(r=>r instanceof hr)}getVolumeViewports(){this._throwIfDestroyed();const e=this.getViewports(),r=n=>n instanceof Ir;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||(D9.cleanup(),this.useCPURendering||(this._getViewportsAsArray().forEach(r=>{this.offscreenMultiRenderWindow&&this.offscreenMultiRenderWindow.removeRenderer(r.id)}),this.offscreenMultiRenderWindow&&this.offscreenMultiRenderWindow.delete(),delete this.offscreenMultiRenderWindow),this._reset(),J1.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===Jn.ORTHOGRAPHIC&&(i={...i,orientation:wu.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()}_removeViewport(e){if(!this.getViewport(e)){console.warn(`viewport ${e} does not exist`);return}this._viewports.delete(e)}addCustomViewport(e){const{element:r,viewportId:n,type:i,defaultOptions:o}=e;r.tabIndex=-1;const a=ts(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=zF[i],u=new f(l);this._viewports.set(n,u);const d={element:r,viewportId:n,renderingEngineId:this.id};nt(ze,qe.ELEMENT_ENABLED,d)}getRenderer(e){return this.offscreenMultiRenderWindow.getRenderer(e)}getOffscreenMultiRenderWindow(e){if(this.useCPURendering)throw new Error("Offscreen multi render window is not available when using CPU rendering.");return this.offscreenMultiRenderWindow}setCustomViewports(e){e.forEach(r=>{this.addCustomViewport(r)})}_getViewportsAsArray(){return Array.from(this._viewports.values())}_setViewportsToBeRenderedNextFrame(e){e.forEach(r=>{this._needsRender.add(r)}),this._render()}_render(){this._needsRender.size>0&&!this._animationFrameSet&&(this._animationFrameHandle=window.requestAnimationFrame(this._renderFlaggedViewports),this._animationFrameSet=!0)}_resetViewport(e){const r=this.id,{element:n,canvas:i,id:o}=e,a={element:n,viewportId:o,renderingEngineId:r};e.removeWidgets(),nt(ze,qe.ELEMENT_DISABLED,a),n.removeAttribute("data-viewport-uid"),n.removeAttribute("data-rendering-engine-uid"),i.getContext("2d").clearRect(0,0,i.width,i.height)}_clearAnimationFrame(){window.cancelAnimationFrame(this._animationFrameHandle),this._needsRender.clear(),this._animationFrameSet=!1,this._animationFrameHandle=null}_reset(){this._getViewportsAsArray().forEach(r=>{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.")}}class S8 extends C8{constructor(e){super(e),this._renderFlaggedViewports=()=>{this._throwIfDestroyed(),this.useCPURendering||this.performVtkDrawCall();const r=this._getViewportsAsArray(),n=[];for(let i=0;i{i!=null&&i.element&&nt(i.element,qe.IMAGE_RENDERED,i)})},this.useCPURendering||(this.offscreenMultiRenderWindow=$V.newInstance(),this.offScreenCanvasContainer=document.createElement("div"),this.offscreenMultiRenderWindow.setContainer(this.offScreenCanvasContainer))}enableVTKjsDrivenViewport(e){const n=this._getViewportsAsArray().filter(f=>vl(f.type)===!1),i=n.map(f=>f.canvas),o=ts(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})}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:y,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 w={id:o,element:n,renderingEngineId:this.id,type:a,canvas:i,sx:p,sy:v,sWidth:y,sHeight:m,defaultOptions:s||{}};let x;if(a===Jn.STACK)x=new hr(w);else if(a===Jn.ORTHOGRAPHIC||a===Jn.PERSPECTIVE)x=new lr(w);else if(a===Jn.VOLUME_3D)x=new dx(w);else throw new Error(`Viewport Type ${a} is not supported`);this._viewports.set(o,x);const C={element:n,viewportId:o,renderingEngineId:this.id};x.suppressEvents||nt(ze,qe.ELEMENT_ENABLED,C)}setVtkjsDrivenViewports(e){if(e.length){const r=e.map(a=>ts(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;ats(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()}performVtkDrawCall(){const{offscreenMultiRenderWindow:e}=this,r=e.getRenderWindow(),n=e.getRenderers();if(n.length){for(let i=0;ia.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=0&&e{e.delete()}),this.contexts=[],this.offScreenCanvasContainers=[],this.viewportToContext.clear()}}class WT extends C8{constructor(e){super(e),this._renderFlaggedViewports=()=>{this._throwIfDestroyed();const o=this._getViewportsAsArray().filter(s=>this._needsRender.has(s.id));if(o.length===0){this._animationFrameSet=!1,this._animationFrameHandle=null;return}const a=o.map(s=>{const c=this.renderViewportUsingCustomOrVtkPipeline(s);return s.setRendered(),this._needsRender.delete(s.id),c});this._animationFrameSet=!1,this._animationFrameHandle=null,a.forEach(s=>{s!=null&&s.element&&nt(s.element,qe.IMAGE_RENDERED,s)})};const{rendering:r}=Iu(),{webGlContextCount:n}=r;this.useCPURendering||(this.contextPool=new Qfe(n))}enableVTKjsDrivenViewport(e){const i=this._getViewportsAsArray().filter(s=>vl(s.type)===!1).map(s=>s.canvas),o=ts(e.element);i.push(o);const a={...e,canvas:o};this.addVtkjsDrivenViewport(a)}addVtkjsDrivenViewport(e){const{element:r,canvas:n,viewportId:i,type:o,defaultOptions:a}=e;r.tabIndex=-1;let s=0;if(o===Jn.STACK){const h=this.contextPool.getAllContexts();s=this._viewports.size%h.length}this.contextPool.assignViewportToContext(i,s);const c=this.contextPool.getContextByIndex(s),{context:l}=c;l.addRenderer({viewport:[0,0,1,1],id:i,background:a.background?a.background:[0,0,0]});const f={id:i,element:r,renderingEngineId:this.id,type:o,canvas:n,sx:0,sy:0,sWidth:n.width,sHeight:n.height,defaultOptions:a||{}};let u;if(o===Jn.STACK)u=new hr(f);else if(o===Jn.ORTHOGRAPHIC||o===Jn.PERSPECTIVE)u=new lr(f);else if(o===Jn.VOLUME_3D)u=new dx(f);else throw new Error(`Viewport Type ${o} is not supported`);this._viewports.set(i,u);const d={element:r,viewportId:i,renderingEngineId:this.id};u.suppressEvents||nt(ze,qe.ELEMENT_ENABLED,d)}setVtkjsDrivenViewports(e){if(e.length){const r=e.map(n=>ts(n.element));r.forEach(n=>{const i=window.devicePixelRatio||1,o=n.getBoundingClientRect();n.width=o.width*i,n.height=o.height*i});for(let n=0;nts(o.element));i.forEach(o=>{const a=window.devicePixelRatio||1;o.width=o.clientWidth*a,o.height=o.clientHeight*a}),i.length&&this._resize(e),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()}renderViewportUsingCustomOrVtkPipeline(e){if(vl(e.type))return e.customRenderViewportToCanvas();if(this.useCPURendering)throw new Error("GPU not available, and using a viewport with no custom render pipeline.");const r=this.contextPool.getContextIndexForViewport(e.id),n=this.contextPool.getContextByIndex(r),{context:i,container:o}=n;return this._renderViewportWithContext(e,i,o)}_renderViewportWithContext(e,r,n){var d;if(e.sWidth{h.setDraw(g===e.id)});const s=this.getWidgetRenderers();s.forEach((h,g)=>{g.setDraw(h===e.id)}),i.render(),a.forEach(({renderer:h})=>h.setDraw(!1)),s.forEach((h,g)=>{g.setDraw(!1)});const f=r.getOpenGLRenderWindow().get3DContext().canvas;return this._copyToOnscreenCanvas(e,f)}_renderViewportFromVtkCanvasToOnscreenCanvas(e,r){return this._copyToOnscreenCanvas(e,r)}_resizeOffScreenCanvasForViewport(e,r,n){const i=e.width,o=e.height;r.height===o&&r.width===i||(r.width=i,r.height=o,n.resize())}_copyToOnscreenCanvas(e,r){const{element:n,canvas:i,id:o,renderingEngineId:a,suppressEvents:s}=e,{width:c,height:l}=i;return i.getContext("2d").drawImage(r,0,0,c,l,0,0,c,l),{element:n,suppressEvents:s,viewportId:o,renderingEngineId:a,viewportStatus:e.viewportStatus}}_resize(e){for(const r of e){r.sx=0,r.sy=0,r.sWidth=r.canvas.width,r.sHeight=r.canvas.height;const n=this.contextPool.getContextIndexForViewport(r.id),i=this.contextPool.getContextByIndex(n),{context:o}=i;o.getRenderer(r.id).setViewport(0,0,1,1)}}getWidgetRenderers(){const e=this._getViewportsAsArray(),r=new Map;return e.forEach(n=>{(n.getWidgets?n.getWidgets():[]).forEach(o=>{const a=o.getRenderer?o.getRenderer():null;a&&r.set(a,n.id)})}),r}getRenderer(e){var o;const r=(o=this.contextPool)==null?void 0:o.getContextIndexForViewport(e),n=this.contextPool.getContextByIndex(r),{context:i}=n;return i.getRenderer(e)}disableElement(e){const r=this.getViewport(e);if(r&&(super.disableElement(e),!vl(r.type)&&!this.useCPURendering)){const n=this.contextPool.getContextIndexForViewport(e);if(n!==void 0){const i=this.contextPool.getContextByIndex(n);if(i){const{context:o}=i;o.removeRenderer(e)}}}}destroy(){this.contextPool&&this.contextPool.destroy(),super.destroy()}getOffscreenMultiRenderWindow(e){if(this.useCPURendering)throw new Error("Offscreen multi render window is not available when using CPU rendering.");const r=this.contextPool.getContextIndexForViewport(e);return this.contextPool.getContextByIndex(r).context}}class jF{constructor(e){var i;const r=Iu(),n=(i=r==null?void 0:r.rendering)==null?void 0:i.renderingEngineMode;switch(n){case Y1.Tiled:this._implementation=new S8(e);break;case Y1.ContextPool:this._implementation=new WT(e);break;default:console.warn(`RenderingEngine: Unknown rendering engine mode "${n}". Defaulting to Next rendering engine.`),this._implementation=new WT(e);break}}get id(){return this._implementation.id}enableElement(e){return this._implementation.enableElement(e)}disableElement(e){return this._implementation.disableElement(e)}setViewports(e){return this._implementation.setViewports(e)}resize(e=!0,r=!0){return this._implementation.resize(e,r)}getViewport(e){return this._implementation.getViewport(e)}getViewports(){return this._implementation.getViewports()}getStackViewport(e){return this._implementation.getStackViewport(e)}getStackViewports(){return this._implementation.getStackViewports()}getVolumeViewports(){return this._implementation.getVolumeViewports()}getRenderer(e){return this._implementation.getRenderer(e)}fillCanvasWithBackgroundColor(e,r){return this._implementation.fillCanvasWithBackgroundColor(e,r)}render(){return this._implementation.render()}renderViewports(e){return this._implementation.renderViewports(e)}renderViewport(e){return this._implementation.renderViewport(e)}destroy(){return this._implementation.destroy()}getOffscreenMultiRenderWindow(e){return this._implementation.getOffscreenMultiRenderWindow(e)}}const ede="3.33.5";class HF{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(),this._visible=!0}_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;o2&&arguments[2]!==void 0?arguments[2]:null;const n=KF(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 lm={arrayBufferToString:KF,extractBinary:tde};const T8={};function XF(t){return!!T8[t]}function nde(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"http",e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return T8[t](e)}function qF(t,e){T8[t]=e}var av={get:nde,has:XF,registerType:qF};function YF(){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 rde=YF();function ide(t,e){if(e<2)return;const r=new Int8Array(t),n=r.length,i=[];for(let o=0;o(JF("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 hg=0;function hx(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 ade(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return new Promise((r,n)=>{const i=hx("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 sde(t,e,r){let n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return n&&n.compression?_8():r.ref&&!r.ref.pending?new Promise((i,o)=>{const a=[e,r.ref.basepath,r.ref.id].join("/"),s=hx("GET",a,n);s.onreadystatechange=c=>{s.readyState===1&&(r.ref.pending=!0,++hg===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):(t3.ENDIANNESS!==r.ref.encode&&t3.ENDIANNESS&&(ode(`Swap bytes of ${r.name}`),t3.swapBytes(r.buffer,aL[r.dataType])),r.values=Q.newTypedArray(r.dataType,r.buffer)),r.values.length!==r.size&&JF(`Error in FetchArray: ${r.name}, does not have the proper array size. Got ${r.values.length}, instead of ${r.size}`),delete r.ref,--hg===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 cde(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return r&&r.compression?_8():new Promise((n,i)=>{const o=hx("GET",e,r);o.onreadystatechange=a=>{o.readyState===1&&++hg===1&&t!=null&&t.invokeBusy&&t.invokeBusy(!0),o.readyState===4&&(--hg===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 lde(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return r&&r.compression?_8():new Promise((n,i)=>{const o=hx("GET",e,r);o.onreadystatechange=a=>{o.readyState===1&&++hg===1&&t!=null&&t.invokeBusy&&t.invokeBusy(!0),o.readyState===4&&(--hg===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 ude(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 fde={fetchArray:sde,fetchJSON:cde,fetchText:lde,fetchBinary:ade,fetchImage:ude};XF("http")||qF("http",t=>fde);const n3={ASCII:"ascii",BINARY_BIG_ENDIAN:"binary_big_endian",BINARY_LITTLE_ENDIAN:"binary_little_endian"},I9={diffuse_red:"red",diffuse_green:"green",diffuse_blue:"blue"},ZF={patternHeader:/ply([\s\S]*)end_header\r?\n/,patternBody:/end_header\s([\s\S]*)$/};function M9(t){let e="",r=0;const n=ZF.patternHeader.exec(t);n!==null&&(e=n[1],r=n[0].length);const i={comments:[],elements:[],headerLength:r},o=e.split(` -`);let a,s,c;for(let l=0;lp.name==="vertex"),n=e.find(p=>p.name==="face");let i=0,o=0;r&&(i=r.count),n&&(o=n.count);const a=new Float32Array(i*3),s=new Uint8Array(i*3),c=new Float32Array(i*2),l=new Float32Array(i*3),f=t.colors.length>0,u=t.uvs.length>0,d=t.normals.length>0,h=t.faceVertexUvs.length>0;for(let p=0;p0&&(t.indices.push(n.length),n.forEach((o,a)=>{t.indices.push(o)})),t.faceVertexUvs.push(i)}}function i3(t,e,r,n){let i;switch(r){case"int8":case"char":i=[t.getInt8(e),1];break;case"uint8":case"uchar":i=[t.getUint8(e),1];break;case"int16":case"short":i=[t.getInt16(e,n),2];break;case"uint16":case"ushort":i=[t.getUint16(e,n),2];break;case"int32":case"int":i=[t.getInt32(e,n),4];break;case"uint32":case"uint":i=[t.getUint32(e,n),4];break;case"float32":case"float":i=[t.getFloat32(e,n),4];break;case"float64":case"double":i=[t.getFloat64(e,n),8];break;default:console.log("Unsupported type");break}return i}function hde(t,e,r,n){const i={};let o,a=0;for(let s=0;s1&&arguments[1]!==void 0?arguments[1]:{};const{compression:o,progressCallback:a}=e;return i.binary?e.dataAccessHelper.fetchBinary(n,{compression:o,progressCallback:a}):e.dataAccessHelper.fetchText(t,n,{compression:o,progressCallback:a})}t.setUrl=function(n){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{binary:!0};e.url=n;const o=n.split("/");return o.pop(),e.baseURL=o.join("/"),e.compression=i.compression,t.loadData({progressCallback:i.progressCallback,binary:!!i.binary})},t.loadData=function(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const i=r(e.url,n);return i.then(t.parse),i},t.parse=n=>{typeof n=="string"?t.parseAsText(n):t.parseAsArrayBuffer(n)},t.parseAsArrayBuffer=n=>{if(!n)return;if(n!==e.parseData)t.modified();else return;const i=lm.arrayBufferToString(n),o=M9(i);if(!(o.format!==n3.ASCII)){t.parseAsText(n);return}e.parseData=n;const s={indices:[],vertices:[],normals:[],uvs:[],faceVertexUvs:[],colors:[]},c=o.format===n3.BINARY_LITTLE_ENDIAN,l=n instanceof ArrayBuffer?n:n.buffer,f=new DataView(l,o.headerLength);let u,d=0;for(let g=0;g{if(!n)return;if(n!==e.parseData)t.modified();else return;e.parseData=n;const i=lm.arrayBufferToString(n),o=M9(i);if(o.format!==n3.ASCII){t.parseAsArrayBuffer(n);return}const s={indices:[],vertices:[],normals:[],uvs:[],faceVertexUvs:[],colors:[]},c=ZF.patternBody.exec(i);let l="";c!==null&&(l=c[1]);const f=l.split(` -`);let u=0,d=0;for(let g=0;g=o.elements[u].count&&(u++,d=0);const v=dde(o.elements[u].properties,p);P9(s,o.elements[u].name,v),d++}}const h=O9(s,o.elements);e.output[0]=h},t.requestData=(n,i)=>{t.parse(e.parseData)}}const pde={};function QF(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,pde,r),Q.obj(t,e),Q.get(t,e,["url","baseURL"]),Q.setGet(t,e,["dataAccessHelper"]),Q.algo(t,e,0,1),gde(t,e),e.compression||(e.compression=null),e.progressCallback||(e.progressCallback=null)}const mde=Q.newInstance(QF,"vtkPLYReader");var vde={extend:QF,newInstance:mde};const{vtkErrorMacro:o3}=Q;function yde(t){const r=t.split(" ").filter(i=>i.indexOf("=")>-1),n={};for(let i=0;if).slice(-3).map(Number);for(R9(l,i);t[e+s].indexOf("vertex")!==-1;){const u=t[e+s].split(/[ \t]+/).filter(d=>d).slice(-3).map(Number);R9(u,r),a++,s++}n.push(a);for(let f=0;f1&&arguments[1]!==void 0?arguments[1]:{};const a=o.compression!==void 0?o.compression:e.compression,s=o.progressCallback!==void 0?o.progressCallback:e.progressCallback;return o.binary?e.dataAccessHelper.fetchBinary(i,{compression:a,progressCallback:s}):e.dataAccessHelper.fetchText(t,i,{compression:a,progressCallback:s})}function n(i){const o=e.output[0],a=o.getPoints().getData(),s=o.getPolys().getData();if(!a||!s){console.warn("No valid polydata.");return}const c=new Map,l=new Map;let f=0,u=!1;for(let p=0;p+w*10**-i);d[y]=m[0],d[y+1]=m[1],d[y+2]=m[2]}const g=new Int32Array(s);for(let p=0;p1&&arguments[1]!==void 0?arguments[1]:{binary:!0};e.url=i;const a=i.split("/");return a.pop(),e.baseURL=a.join("/"),t.loadData(o)},t.loadData=function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const o=r(e.url,i);return o.then(t.parse),o},t.parse=i=>{typeof i=="string"?t.parseAsText(i):t.parseAsArrayBuffer(i)},t.parseAsArrayBuffer=i=>{if(!i)return;if(i!==e.parseData)t.modified();else return;e.parseData=i;let o=!1;if(o=84+new DataView(i,0,84).getUint32(80,!0)*50===i.byteLength,!o){t.parseAsText(lm.arrayBufferToString(i));return}const c=i.slice(0,80),l=lm.arrayBufferToString(c),f=yde(l),u=new DataView(i,84),d=(i.byteLength-84)/50,h=new Float32Array(d*9),g=new Float32Array(d*3),p=new Uint32Array(d*4),v=new Uint16Array(d);let y=0;for(let x=0;x=0&&n(e.removeDuplicateVertices)},t.parseAsText=i=>{if(!i)return;if(i!==e.parseData)t.modified();else return;e.parseData=i;const o=i.split(` -`);let a=1;const s=[],c=[],l=[];for(;a!==-1;)a=wde(o,a,s,c,l);const f=Dr.newInstance();f.getPoints().setData(Float32Array.from(s),3),f.getPolys().setData(Uint32Array.from(c)),f.getCellData().setNormals(Nt.newInstance({name:"Normals",values:Float32Array.from(l),numberOfComponents:3})),e.output[0]=f,e.removeDuplicateVertices>=0&&n(e.removeDuplicateVertices)},t.requestData=(i,o)=>{t.parse(e.parseData)}}const Cde={removeDuplicateVertices:-1};function eU(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Cde,r),Q.obj(t,e),Q.get(t,e,["url","baseURL"]),Q.setGet(t,e,["dataAccessHelper","removeDuplicateVertices"]),Q.algo(t,e,0,1),xde(t,e),e.compression||(e.compression=null),e.progressCallback||(e.progressCallback=null)}const Sde=Q.newInstance(eU,"vtkSTLReader");var Tde={extend:eU,newInstance:Sde},tU={exports:{}};(function(t,e){(function(r,n){t.exports=n()})(to,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(w){var x=typeof Symbol=="function"&&Symbol.iterator,C=x&&w[x],S=0;if(C)return C.call(w);if(w&&typeof w.length=="number")return{next:function(){return w&&S>=w.length&&(w=void 0),{value:w&&w[S++],done:!w}}};throw new TypeError(x?"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(w,x,C){if(y(w))w.forEach(function(T,_){return x.call(C,_,T)});else for(var S in w)w.hasOwnProperty(S)&&x.call(C,S,w[S])}function d(w){var x,C;if(h(w))return w;if(p(w)){var S=[];try{for(var T=o(w),_=T.next();!_.done;_=T.next()){var E=_.value;S.push(d(E))}}catch(I){x={error:I}}finally{try{_&&!_.done&&(C=T.return)&&C.call(T)}finally{if(x)throw x.error}}return S}if(g(w)){S={};for(var b in w)if(w.hasOwnProperty(b)){var D=w[b];S[b]=d(D)}return S}return w}function h(w){return!!w&&Object.prototype.toString.call(w)==="[object Function]"}function g(w){var x=typeof w;return!!w&&(x==="function"||x==="object")}function p(w){return Array.isArray(w)}function v(w){return w instanceof Set}function y(w){return w instanceof Map}function m(w){if(g(w)){var x=Object.getPrototypeOf(w),C=x.constructor;return x&&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(w,x){for(var C=[],S=2;S>6|192;else{if(T>55295&&T<56320){if(++S>=w.length)throw new Error("Incomplete surrogate pair.");var _=w.charCodeAt(S);if(_<56320||_>57343)throw new Error("Invalid surrogate character.");T=65536+((1023&T)<<10)+(1023&_),x[C++]=T>>18|240,x[C++]=T>>12&63|128}else x[C++]=T>>12|224;x[C++]=T>>6&63|128}x[C++]=63&T|128}}return x.subarray(0,C)},n.utf8Decode=function(w){for(var x="",C=0;C127)if(S>191&&S<224){if(C>=w.length)throw new Error("Incomplete 2-byte sequence.");S=(31&S)<<6|63&w[C++]}else if(S>223&&S<240){if(C+1>=w.length)throw new Error("Incomplete 3-byte sequence.");S=(15&S)<<12|(63&w[C++])<<6|63&w[C++]}else{if(!(S>239&&S<248))throw new Error("Unknown multi-byte start.");if(C+2>=w.length)throw new Error("Incomplete 4-byte sequence.");S=(7&S)<<18|(63&w[C++])<<12|(63&w[C++])<<6|63&w[C++]}if(S<=65535)x+=String.fromCharCode(S);else{if(!(S<=1114111))throw new Error("Code point exceeds UTF-16 limit.");S-=65536,x+=String.fromCharCode(S>>10|55296),x+=String.fromCharCode(1023&S|56320)}}return x}},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,y,m,w=d.target,x=d.global,C=d.stat;if(g=x?o:C?o[w]||l(w,{}):(o[w]||{}).prototype)for(p in h){if(y=h[p],v=d.noTargetGet?(m=a(g,p))&&m.value:g[p],!u(x?p:w+(C?".":"#")+p,d.forced)&&v!==void 0){if(typeof y==typeof v)continue;f(y,v)}(d.sham||v&&v.sham)&&s(y,"sham",!0),c(g,p,y,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 w={};if(m!=null)for(var x in m)Object.hasOwnProperty.call(m,x)&&(w[x]=m[x]);return w.default=m,w};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 y=o(i(239));n.string=y},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(V,F){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(G,X){G.__proto__=X}||function(G,X){for(var ne in X)X.hasOwnProperty(ne)&&(G[ne]=X[ne])})(V,F)},function(V,F){function G(){this.constructor=V}o(V,F),V.prototype=F===null?Object.create(F):(G.prototype=F.prototype,new G)});Object.defineProperty(n,"__esModule",{value:!0});var s=function(V){function F(G,X){X===void 0&&(X="");var ne=V.call(this,X)||this;return ne.name=G,ne}return a(F,V),F}(Error);n.DOMException=s;var c=function(V){function F(G){return G===void 0&&(G=""),V.call(this,"DOMStringSizeError",G)||this}return a(F,V),F}(s);n.DOMStringSizeError=c;var l=function(V){function F(G){return G===void 0&&(G=""),V.call(this,"WrongDocumentError","The object is in the wrong document. "+G)||this}return a(F,V),F}(s);n.WrongDocumentError=l;var f=function(V){function F(G){return G===void 0&&(G=""),V.call(this,"NoDataAllowedError",G)||this}return a(F,V),F}(s);n.NoDataAllowedError=f;var u=function(V){function F(G){return G===void 0&&(G=""),V.call(this,"NoModificationAllowedError","The object can not be modified. "+G)||this}return a(F,V),F}(s);n.NoModificationAllowedError=u;var d=function(V){function F(G){return G===void 0&&(G=""),V.call(this,"NotSupportedError","The operation is not supported. "+G)||this}return a(F,V),F}(s);n.NotSupportedError=d;var h=function(V){function F(G){return G===void 0&&(G=""),V.call(this,"InUseAttributeError",G)||this}return a(F,V),F}(s);n.InUseAttributeError=h;var g=function(V){function F(G){return G===void 0&&(G=""),V.call(this,"InvalidStateError","The object is in an invalid state. "+G)||this}return a(F,V),F}(s);n.InvalidStateError=g;var p=function(V){function F(G){return G===void 0&&(G=""),V.call(this,"InvalidModificationError","The object can not be modified in this way. "+G)||this}return a(F,V),F}(s);n.InvalidModificationError=p;var v=function(V){function F(G){return G===void 0&&(G=""),V.call(this,"NamespaceError","The operation is not allowed by Namespaces in XML. [XMLNS] "+G)||this}return a(F,V),F}(s);n.NamespaceError=v;var y=function(V){function F(G){return G===void 0&&(G=""),V.call(this,"InvalidAccessError","The object does not support the operation or argument. "+G)||this}return a(F,V),F}(s);n.InvalidAccessError=y;var m=function(V){function F(G){return G===void 0&&(G=""),V.call(this,"ValidationError",G)||this}return a(F,V),F}(s);n.ValidationError=m;var w=function(V){function F(G){return G===void 0&&(G=""),V.call(this,"TypeMismatchError",G)||this}return a(F,V),F}(s);n.TypeMismatchError=w;var x=function(V){function F(G){return G===void 0&&(G=""),V.call(this,"SecurityError","The operation is insecure. "+G)||this}return a(F,V),F}(s);n.SecurityError=x;var C=function(V){function F(G){return G===void 0&&(G=""),V.call(this,"NetworkError","A network error occurred. "+G)||this}return a(F,V),F}(s);n.NetworkError=C;var S=function(V){function F(G){return G===void 0&&(G=""),V.call(this,"AbortError","The operation was aborted. "+G)||this}return a(F,V),F}(s);n.AbortError=S;var T=function(V){function F(G){return G===void 0&&(G=""),V.call(this,"URLMismatchError","The given URL does not match another URL. "+G)||this}return a(F,V),F}(s);n.URLMismatchError=T;var _=function(V){function F(G){return G===void 0&&(G=""),V.call(this,"QuotaExceededError","The quota has been exceeded. "+G)||this}return a(F,V),F}(s);n.QuotaExceededError=_;var E=function(V){function F(G){return G===void 0&&(G=""),V.call(this,"TimeoutError","The operation timed out. "+G)||this}return a(F,V),F}(s);n.TimeoutError=E;var b=function(V){function F(G){return G===void 0&&(G=""),V.call(this,"InvalidNodeTypeError","The supplied node is incorrect or has an incorrect ancestor for this operation. "+G)||this}return a(F,V),F}(s);n.InvalidNodeTypeError=b;var D=function(V){function F(G){return G===void 0&&(G=""),V.call(this,"DataCloneError","The object can not be cloned. "+G)||this}return a(F,V),F}(s);n.DataCloneError=D;var I=function(V){function F(G){return G===void 0&&(G=""),V.call(this,"NotImplementedError","The DOM method is not implemented by this module. "+G)||this}return a(F,V),F}(s);n.NotImplementedError=I;var P=function(V){function F(G){return G===void 0&&(G=""),V.call(this,"HierarchyRequestError","The operation would yield an incorrect node tree. "+G)||this}return a(F,V),F}(s);n.HierarchyRequestError=P;var M=function(V){function F(G){return G===void 0&&(G=""),V.call(this,"NotFoundError","The object can not be found here. "+G)||this}return a(F,V),F}(s);n.NotFoundError=M;var L=function(V){function F(G){return G===void 0&&(G=""),V.call(this,"IndexSizeError","The index is not in the allowed range. "+G)||this}return a(F,V),F}(s);n.IndexSizeError=L;var B=function(V){function F(G){return G===void 0&&(G=""),V.call(this,"SyntaxError","The string did not match the expected pattern. "+G)||this}return a(F,V),F}(s);n.SyntaxError=B;var j=function(V){function F(G){return G===void 0&&(G=""),V.call(this,"InvalidCharacterError","The string contains invalid characters. "+G)||this}return a(F,V),F}(s);n.InvalidCharacterError=j},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(w){var x=typeof Symbol=="function"&&Symbol.iterator,C=x&&w[x],S=0;if(C)return C.call(w);if(w&&typeof w.length=="number")return{next:function(){return w&&S>=w.length&&(w=void 0),{value:w&&w[S++],done:!w}}};throw new TypeError(x?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var a=i(3),s=i(2);function c(w,x,C){if(C===void 0&&(C=!1),C&&a.Guard.isElementNode(x)&&a.Guard.isShadowRoot(x.shadowRoot)&&x.shadowRoot._firstChild)return x.shadowRoot._firstChild;if(x._firstChild)return x._firstChild;if(x===w)return null;if(x._nextSibling)return x._nextSibling;for(var S=x._parent;S&&S!==w;){if(S._nextSibling)return S._nextSibling;S=S._parent}return null}function l(){var w;return(w={})[Symbol.iterator]=function(){return{next:function(){return{done:!0,value:null}}}},w}function f(w,x,C,S){x===void 0&&(x=!1),C===void 0&&(C=!1);for(var T=x?w:c(w,w,C);T&&S&&!S(T);)T=c(w,T,C);return T}function u(w,x,C,S,T){S===void 0&&(S=!1);for(var _=c(w,x,S);_&&T&&!T(_);)_=c(w,_,S);return _}function d(w,x,C,S){var T;return x===void 0&&(x=!1),C===void 0&&(C=!1),x||w._children.size!==0?((T={})[Symbol.iterator]=function(){var _=x?w:c(w,w,C);return{next:function(){for(;_&&S&&!S(_);)_=c(w,_,C);if(_===null)return{done:!0,value:null};var E={done:!1,value:_};return _=c(w,_,C),E}}},T):l()}function h(w,x,C){x===void 0&&(x=!1);for(var S=x?w:w._parent;S&&C&&!C(S);)S=S._parent;return S}function g(w,x,C,S){for(var T=x._parent;T&&S&&!S(T);)T=T._parent;return T}function p(w){return a.Guard.isDocumentTypeNode(w)?0:a.Guard.isCharacterDataNode(w)?w._data.length:w._children.size}function v(w,x){if(x===void 0&&(x=!1),x){var C=v(w,!1);return a.Guard.isShadowRoot(C)?v(C._host,!0):C}return w._parent?v(w._parent):w}function y(w,x,C,S){C===void 0&&(C=!1),S===void 0&&(S=!1);for(var T=C?w:S&&a.Guard.isShadowRoot(w)?w._host:w._parent;T!==null;){if(T===x)return!0;T=S&&a.Guard.isShadowRoot(T)?T._host:T._parent}return!1}function m(w){for(var x=v(w),C=0,S=f(x);S!==null;){if(C++,S===w)return C;S=u(x,S)}return-1}n.tree_getFirstDescendantNode=f,n.tree_getNextDescendantNode=u,n.tree_getDescendantNodes=d,n.tree_getDescendantElements=function(w,x,C,S){var T;return x===void 0&&(x=!1),C===void 0&&(C=!1),x||w._children.size!==0?((T={})[Symbol.iterator]=function(){var _=d(w,x,C,function(b){return a.Guard.isElementNode(b)})[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 b={done:!1,value:E};return E=_.next().value,b}}},T):l()},n.tree_getSiblingNodes=function(w,x,C){var S;return x===void 0&&(x=!1),w._parent&&w._parent._children.size!==0?((S={})[Symbol.iterator]=function(){var T=w._parent?w._parent._firstChild:null;return{next:function(){for(;T&&(C&&!C(T)||!x&&T===w);)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(w,x,C){var S;return x===void 0&&(x=!1),x||w._parent?((S={})[Symbol.iterator]=function(){var T=h(w,x,C);return{next:function(){if(T===null)return{done:!0,value:null};var _={done:!1,value:T};return T=g(0,T,x,C),_}}},S):l()},n.tree_getCommonAncestor=function(w,x){if(w===x)return w._parent;for(var C=[],S=[],T=h(w,!0);T!==null;)C.push(T),T=g(0,T);for(var _=h(x,!0);_!==null;)S.push(_),_=g(0,_);for(var E=C.length,b=S.length,D=null,I=Math.min(E,b);I>0;I--){var P=C[--E];if(P!==S[--b])break;D=P}return D},n.tree_getFollowingNode=function(w,x){if(x._firstChild)return x._firstChild;if(x._nextSibling)return x._nextSibling;for(;;){var C=x._parent;if(C===null||C===w)return null;if(C._nextSibling)return C._nextSibling;x=C}},n.tree_getPrecedingNode=function(w,x){return x===w?null:x._previousSibling?(x=x._previousSibling)._lastChild?x._lastChild:x:x._parent},n.tree_isConstrained=function w(x){var C,S,T,_,E,b;switch(x._nodeType){case s.NodeType.Document:var D=!1,I=!1;try{for(var P=o(x._children),M=P.next();!M.done;M=P.next())switch(M.value._nodeType){case s.NodeType.ProcessingInstruction:case s.NodeType.Comment:break;case s.NodeType.DocumentType:if(D||I)return!1;D=!0;break;case s.NodeType.Element:if(I)return!1;I=!0;break;default:return!1}}catch(F){C={error:F}}finally{try{M&&!M.done&&(S=P.return)&&S.call(P)}finally{if(C)throw C.error}}break;case s.NodeType.DocumentFragment:case s.NodeType.Element:try{for(var L=o(x._children),B=L.next();!B.done;B=L.next())switch(B.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(F){T={error:F}}finally{try{B&&!B.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!x.hasChildNodes()}try{for(var j=o(x._children),V=j.next();!V.done;V=j.next())if(!w(V.value))return!1}catch(F){E={error:F}}finally{try{V&&!V.done&&(b=j.return)&&b.call(j)}finally{if(E)throw E.error}}return!0},n.tree_nodeLength=p,n.tree_isEmpty=function(w){return p(w)===0},n.tree_rootNode=v,n.tree_isDescendantOf=function(w,x,C,S){C===void 0&&(C=!1),S===void 0&&(S=!1);for(var T=f(w,C,S);T!==null;){if(T===x)return!0;T=u(w,T,C,S)}return!1},n.tree_isAncestorOf=y,n.tree_isHostIncludingAncestorOf=function w(x,C,S){if(S===void 0&&(S=!1),y(x,C,S))return!0;var T=v(x);return!(!a.Guard.isDocumentFragmentNode(T)||T._host===null||!w(T._host,C,S))},n.tree_isSiblingOf=function(w,x,C){return C===void 0&&(C=!1),w!==x?w._parent!==null&&w._parent===x._parent:!!C},n.tree_isPreceding=function(w,x){var C=m(w),S=m(x);return C!==-1&&S!==-1&&v(w)===v(x)&&SC},n.tree_isParentOf=function(w,x){return w._parent===x},n.tree_isChildOf=function(w,x){return x._parent===w},n.tree_previousSibling=function(w){return w._previousSibling},n.tree_nextSibling=function(w){return w._nextSibling},n.tree_firstChild=function(w){return w._firstChild},n.tree_lastChild=function(w){return w._lastChild},n.tree_treePosition=m,n.tree_index=function(w){for(var x=0;w._previousSibling!==null;)x++,w=w._previousSibling;return x},n.tree_retarget=function(w,x){for(;;){if(!w||!a.Guard.isNode(w))return w;var C=v(w);if(!a.Guard.isShadowRoot(C)||x&&a.Guard.isNode(x)&&y(C,x,!0,!0))return w;w=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,y){var m=!!y&&!!y.unsafe,w=!!y&&!!y.enumerable,x=!!y&&!!y.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?!x&&g[p]&&(w=!0):delete g[p],w?g[p]=v:a(g,p,v)):w?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 y={length:-1};g?c(y,1,{enumerable:!0,get:f}):y[1]=1,h.call(y,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),y=i(158),m=i(159),w=i(160),x=i(161),C=i(162),S=i(163),T=i(164),_=i(165),E=i(166),b=i(167),D=i(168),I=i(169),P=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,B,j){return u.DocumentTypeImpl._create(M,L,B,j)},n.create_element=function(M,L,B,j){return d.ElementImpl._create(M,L,B,j)},n.create_htmlElement=function(M,L,B,j){return d.ElementImpl._create(M,L,B,j)},n.create_htmlUnknownElement=function(M,L,B,j){return d.ElementImpl._create(M,L,B,j)},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 y.CDATASectionImpl._create(M,L)},n.create_comment=function(M,L){return m.CommentImpl._create(M,L)},n.create_processingInstruction=function(M,L,B){return w.ProcessingInstructionImpl._create(M,L,B)},n.create_htmlCollection=function(M,L){return L===void 0&&(L=function(){return!0}),x.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,B){return E.NodeIteratorImpl._create(M,L,B)},n.create_treeWalker=function(M,L){return b.TreeWalkerImpl._create(M,L)},n.create_nodeFilter=function(){return D.NodeFilterImpl._create()},n.create_mutationRecord=function(M,L,B,j,V,F,G,X,ne){return I.MutationRecordImpl._create(M,L,B,j,V,F,G,X,ne)},n.create_domTokenList=function(M,L){return P.DOMTokenListImpl._create(M,L)}},function(r,n,i){var o=this&&this.__values||function(p){var v=typeof Symbol=="function"&&Symbol.iterator,y=v&&p[v],m=0;if(y)return y.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 y=s.tree_getFollowingNode(p._root,v);if(y!==null&&s.tree_isDescendantOf(p._root,y,!0)&&!s.tree_isDescendantOf(v,y,!0))return void(p._reference=y);if(y===null)return void(p._pointerBeforeReference=!1)}if(v._previousSibling===null)v._parent!==null&&(p._reference=v._parent);else{for(var m=v._previousSibling,w=s.tree_getFirstDescendantNode(v._previousSibling,!0,!1);w!==null;)w!==null&&(m=w),w=s.tree_getNextDescendantNode(v._previousSibling,w,!0,!1);p._reference=m}}}function d(p,v,y,m,w){if(c.Guard.isSlot(p)&&v==="name"&&w===null){if(m===y||m===null&&y===""||m===""&&y===null)return;p._name=m===null||m===""?"":m,l.shadowTree_assignSlotablesForATree(s.tree_rootNode(p))}}function h(p,v,y,m,w){if(c.Guard.isSlotable(p)&&v==="slot"&&w===null){if(m===y||m===null&&y===""||m===""&&y===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,y,m){v==="id"&&m===null&&(p._uniqueIdentifier=y||void 0)}n.dom_runRemovingSteps=function(p,v){},n.dom_runCloningSteps=function(p,v,y,m){},n.dom_runAdoptingSteps=function(p,v){},n.dom_runAttributeChangeSteps=function(p,v,y,m,w){var x,C;a.dom.features.slots&&(h.call(p,p,v,y,m,w),d.call(p,p,v,y,m,w)),g.call(p,p,v,m,w);try{for(var S=o(p._attributeChangeSteps),T=S.next();!T.done;T=S.next())T.value.call(p,p,v,y,m,w)}catch(_){x={error:_}}finally{try{T&&!T.done&&(C=S.return)&&C.call(S)}finally{if(x)throw x.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),y=i(27),m=i(24),w=i(56),x=i(40),C=i(60),S=i(61),T=i(82),_=i(190),E=i(85),b=i(55),D=i(15),I=i(79),P=i(21),M=i(25),L=i(81),B=i(57),j=i(45),V=i(58),F=i(5),G=i(125),X=i(126),ne=i(62),ue=i(43),me=i(36).forEach,ge=B("hidden"),ye=F("toPrimitive"),Ie=ue.set,Pe=ue.getterFor("Symbol"),Ee=Object.prototype,H=a.Symbol,O=s("JSON","stringify"),Y=b.f,K=D.f,Z=_.f,ae=I.f,oe=L("symbols"),_e=L("op-symbols"),Oe=L("string-to-symbol-registry"),Ge=L("symbol-to-string-registry"),$e=L("wks"),le=a.QObject,de=!le||!le.prototype||!le.prototype.findChild,be=l&&d(function(){return C(K({},"a",{get:function(){return K(this,"a",{value:7}).a}})).a!=7})?function(Je,at,tt){var wt=Y(Ee,at);wt&&delete Ee[at],K(Je,at,tt),wt&&Je!==Ee&&K(Ee,at,wt)}:K,pe=function(Je,at){var tt=oe[Je]=C(H.prototype);return Ie(tt,{type:"Symbol",tag:Je,description:at}),l||(tt.description=at),tt},Te=u?function(Je){return typeof Je=="symbol"}:function(Je){return Object(Je)instanceof H},Ye=function(Je,at,tt){Je===Ee&&Ye(_e,at,tt),v(Je);var wt=w(at,!0);return v(tt),h(oe,wt)?(tt.enumerable?(h(Je,ge)&&Je[ge][wt]&&(Je[ge][wt]=!1),tt=C(tt,{enumerable:x(0,!1)})):(h(Je,ge)||K(Je,ge,x(1,{})),Je[ge][wt]=!0),be(Je,wt,tt)):K(Je,wt,tt)},fe=function(Je,at){v(Je);var tt=m(at),wt=S(tt).concat(Re(tt));return me(wt,function(Bt){l&&!ft.call(tt,Bt)||Ye(Je,Bt,tt[Bt])}),Je},ft=function(Je){var at=w(Je,!0),tt=ae.call(this,at);return!(this===Ee&&h(oe,at)&&!h(_e,at))&&(!(tt||!h(this,at)||!h(oe,at)||h(this,ge)&&this[ge][at])||tt)},gt=function(Je,at){var tt=m(Je),wt=w(at,!0);if(tt!==Ee||!h(oe,wt)||h(_e,wt)){var Bt=Y(tt,wt);return!Bt||!h(oe,wt)||h(tt,ge)&&tt[ge][wt]||(Bt.enumerable=!0),Bt}},mt=function(Je){var at=Z(m(Je)),tt=[];return me(at,function(wt){h(oe,wt)||h(j,wt)||tt.push(wt)}),tt},Re=function(Je){var at=Je===Ee,tt=Z(at?_e:m(Je)),wt=[];return me(tt,function(Bt){!h(oe,Bt)||at&&!h(Ee,Bt)||wt.push(oe[Bt])}),wt};f||(M((H=function(){if(this instanceof H)throw TypeError("Symbol is not a constructor");var Je=arguments.length&&arguments[0]!==void 0?String(arguments[0]):void 0,at=V(Je),tt=function(wt){this===Ee&&tt.call(_e,wt),h(this,ge)&&h(this[ge],at)&&(this[ge][at]=!1),be(this,at,x(1,wt))};return l&&de&&be(Ee,at,{configurable:!0,set:tt}),pe(at,Je)}).prototype,"toString",function(){return Pe(this).tag}),M(H,"withoutSetter",function(Je){return pe(V(Je),Je)}),I.f=ft,D.f=Ye,b.f=gt,T.f=_.f=mt,E.f=Re,G.f=function(Je){return pe(F(Je),Je)},l&&(K(H.prototype,"description",{configurable:!0,get:function(){return Pe(this).description}}),c||M(Ee,"propertyIsEnumerable",ft,{unsafe:!0}))),o({global:!0,wrap:!0,forced:!f,sham:!f},{Symbol:H}),me(S($e),function(Je){X(Je)}),o({target:"Symbol",stat:!0,forced:!f},{for:function(Je){var at=String(Je);if(h(Oe,at))return Oe[at];var tt=H(at);return Oe[at]=tt,Ge[tt]=at,tt},keyFor:function(Je){if(!Te(Je))throw TypeError(Je+" is not a symbol");if(h(Ge,Je))return Ge[Je]},useSetter:function(){de=!0},useSimple:function(){de=!1}}),o({target:"Object",stat:!0,forced:!f,sham:!l},{create:function(Je,at){return at===void 0?C(Je):fe(C(Je),at)},defineProperty:Ye,defineProperties:fe,getOwnPropertyDescriptor:gt}),o({target:"Object",stat:!0,forced:!f},{getOwnPropertyNames:mt,getOwnPropertySymbols:Re}),o({target:"Object",stat:!0,forced:d(function(){E.f(1)})},{getOwnPropertySymbols:function(Je){return E.f(y(Je))}}),O&&o({target:"JSON",stat:!0,forced:!f||d(function(){var Je=H();return O([Je])!="[null]"||O({a:Je})!="{}"||O(Object(Je))!="{}"})},{stringify:function(Je,at,tt){for(var wt,Bt=[Je],Ct=1;arguments.length>Ct;)Bt.push(arguments[Ct++]);if(wt=at,(p(at)||Je!==void 0)&&!Te(Je))return g(at)||(at=function(Ht,$t){if(typeof wt=="function"&&($t=wt.call(this,Ht,$t)),!Te($t))return $t}),Bt[1]=at,O.apply(null,Bt)}}),H.prototype[ye]||P(H.prototype,ye,H.prototype.valueOf),ne(H,"Symbol"),j[ge]=!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 w=arguments.length<1||arguments[0]===void 0?void 0:String(arguments[0]),x=this instanceof g?new d(w):w===void 0?d():d(w);return w===""&&(h[x]=!0),x};u(g,d);var p=g.prototype=d.prototype;p.constructor=g;var v=p.toString,y=String(d("test"))=="Symbol(test)",m=/^Symbol\((.*)\)[^)]+$/;f(p,"description",{configurable:!0,get:function(){var w=l(this)?this.valueOf():this,x=v.call(w);if(c(h,w))return"";var C=y?x.slice(7,-1):x.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(y,m){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(w,x){w.__proto__=x}||function(w,x){for(var C in x)x.hasOwnProperty(C)&&(w[C]=x[C])})(y,m)},function(y,m){function w(){this.constructor=y}o(y,m),y.prototype=m===null?Object.create(m):(w.prototype=m.prototype,new w)}),s=this&&this.__values||function(y){var m=typeof Symbol=="function"&&Symbol.iterator,w=m&&y[m],x=0;if(w)return w.call(y);if(y&&typeof y.length=="number")return{next:function(){return y&&x>=y.length&&(y=void 0),{value:y&&y[x++],done:!y}}};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(y){function m(){var w=y.call(this)||this;return w._parent=null,w._firstChild=null,w._lastChild=null,w._previousSibling=null,w._nextSibling=null,w}return a(m,y),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(w){this._nodeDocumentOverride=w},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(w){return h.tree_rootNode(this,!!w&&w.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(w){w===null&&(w=""),u.Guard.isAttrNode(this)?h.attr_setAnExistingAttributeValue(this,w):u.Guard.isCharacterDataNode(this)&&h.characterData_replaceData(this,0,this._data.length,w)},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(w){w===null&&(w=""),u.Guard.isDocumentFragmentNode(this)||u.Guard.isElementNode(this)?h.node_stringReplaceAll(w,this):u.Guard.isAttrNode(this)?h.attr_setAnExistingAttributeValue(this,w):u.Guard.isCharacterDataNode(this)&&h.characterData_replaceData(this,0,h.tree_nodeLength(this),w)},enumerable:!0,configurable:!0}),m.prototype.normalize=function(){for(var w,x,C,S,T=[],_=h.tree_getFirstDescendantNode(this,!1,!1,function(me){return u.Guard.isExclusiveTextNode(me)});_!==null;)T.push(_),_=h.tree_getNextDescendantNode(this,_,!1,!1,function(me){return u.Guard.isExclusiveTextNode(me)});for(var E=0;EP;P++)if((m||P in b)&&(_=D(T=b[P],P,E),d)){if(h)L[P]=_;else if(_)switch(d){case 3:return!0;case 5:return T;case 6:return P;case 2:f.call(L,T)}else if(v)return!1}return y?-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 b=typeof Symbol=="function"&&Symbol.iterator,D=b&&E[b],I=0;if(D)return D.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(b?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__read||function(E,b){var D=typeof Symbol=="function"&&E[Symbol.iterator];if(!D)return E;var I,P,M=D.call(E),L=[];try{for(;(b===void 0||b-- >0)&&!(I=M.next()).done;)L.push(I.value)}catch(B){P={error:B}}finally{try{I&&!I.done&&(D=M.return)&&D.call(M)}finally{if(P)throw P.error}}return L},s=this&&this.__spread||function(){for(var E=[],b=0;b1)throw new l.HierarchyRequestError("A document node can only have one document element node. Document fragment to be inserted has "+ue+" element nodes.");if(ue===1){try{for(var Ie=o(b._children),Pe=Ie.next();!Pe.done;Pe=Ie.next())if(Pe.value._nodeType===f.NodeType.Element)throw new l.HierarchyRequestError("The document node already has a document element node.")}catch(ae){M={error:ae}}finally{try{Pe&&!Pe.done&&(L=Ie.return)&&L.call(Ie)}finally{if(M)throw M.error}}if(D){if(ne===f.NodeType.DocumentType)throw new l.HierarchyRequestError("Cannot insert an element node before a document type node.");for(var Ee=D._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(X===f.NodeType.Element){try{for(var H=o(b._children),O=H.next();!O.done;O=H.next())if(O.value._nodeType===f.NodeType.Element)throw new l.HierarchyRequestError("Document already has a document element node. Node is "+E.nodeName+".")}catch(ae){B={error:ae}}finally{try{O&&!O.done&&(j=H.return)&&j.call(H)}finally{if(B)throw B.error}}if(D){if(ne===f.NodeType.DocumentType)throw new l.HierarchyRequestError("Cannot insert an element node before a document type node. Node is "+E.nodeName+".");for(Ee=D._nextSibling;Ee;){if(Ee._nodeType===f.NodeType.DocumentType)throw new l.HierarchyRequestError("Cannot insert an element node before a document type node. Node is "+E.nodeName+".");Ee=Ee._nextSibling}}}else if(X===f.NodeType.DocumentType){try{for(var Y=o(b._children),K=Y.next();!K.done;K=Y.next())if(K.value._nodeType===f.NodeType.DocumentType)throw new l.HierarchyRequestError("Document already has a document type node. Node is "+E.nodeName+".")}catch(ae){V={error:ae}}finally{try{K&&!K.done&&(F=Y.return)&&F.call(Y)}finally{if(V)throw V.error}}if(D)for(var Z=D._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=b._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,b,D){C(E,b,D);var I=D;return I===E&&(I=E._nextSibling),x.document_adopt(E,b._nodeDocument),T(E,b,I),E}function T(E,b,D,I){var P,M;if(D!==null||E._nodeType===f.NodeType.DocumentFragment){var L=E._nodeType===f.NodeType.DocumentFragment?E._children.size:1;if(D!==null&&c.dom.rangeList.size!==0){var B=p.tree_index(D);try{for(var j=o(c.dom.rangeList),V=j.next();!V.done;V=j.next()){var F=V.value;F._start[0]===b&&F._start[1]>B&&(F._start[1]+=L),F._end[0]===b&&F._end[1]>B&&(F._end[1]+=L)}}catch(Pe){P={error:Pe}}finally{try{V&&!V.done&&(M=j.return)&&M.call(j)}finally{if(P)throw P.error}}}var G=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,[],G,null,null);for(var X=D?D._previousSibling:b._lastChild,ne=D===null?-1:p.tree_index(D),ue=0;ueG&&ue._start[1]--,ue._end[0]===b&&ue._end[1]>G&&ue._end[1]--}}catch(Oe){I={error:Oe}}finally{try{ne&&!ne.done&&(P=X.return)&&P.call(X)}finally{if(I)throw I.error}}try{for(var me=o(c.dom.rangeList),ge=me.next();!ge.done;ge=me.next())(ue=ge.value)._start[0]===b&&ue._start[1]>G&&(ue._start[1]-=1),ue._end[0]===b&&ue._end[1]>G&&(ue._end[1]-=1)}catch(Oe){M={error:Oe}}finally{try{ge&&!ge.done&&(L=me.return)&&L.call(me)}finally{if(M)throw M.error}}}if(c.dom.features.steps)try{for(var ye=o(v.nodeIterator_iteratorList()),Ie=ye.next();!Ie.done;Ie=ye.next()){var Pe=Ie.value;Pe._root._nodeDocument===E._nodeDocument&&w.dom_runNodeIteratorPreRemovingSteps(Pe,E)}}catch(Oe){B={error:Oe}}finally{try{Ie&&!Ie.done&&(j=ye.return)&&j.call(ye)}finally{if(B)throw B.error}}var Ee=E._previousSibling,H=E._nextSibling;u.Guard.isDocumentNode(b)&&u.Guard.isElementNode(E)&&(b._documentElement=null),E._parent=null,b._children.delete(E);var O=E._previousSibling,Y=E._nextSibling;E._previousSibling=null,E._nextSibling=null,O&&(O._nextSibling=Y),Y&&(Y._previousSibling=O),O||(b._firstChild=Y),Y||(b._lastChild=O),c.dom.features.slots&&u.Guard.isSlotable(E)&&E._assignedSlot!==null&&y.shadowTree_isAssigned(E)&&y.shadowTree_assignSlotables(E._assignedSlot),c.dom.features.slots&&u.Guard.isShadowRoot(p.tree_rootNode(b))&&u.Guard.isSlot(b)&&d.isEmpty(b._assignedNodes)&&y.shadowTree_signalASlotChange(b),c.dom.features.slots&&p.tree_getFirstDescendantNode(E,!0,!1,function(Oe){return u.Guard.isSlot(Oe)})!==null&&(y.shadowTree_assignSlotablesForATree(p.tree_rootNode(b)),y.shadowTree_assignSlotablesForATree(E)),c.dom.features.steps&&w.dom_runRemovingSteps(E,b),c.dom.features.customElements&&u.Guard.isCustomElementNode(E)&&g.customElement_enqueueACustomElementCallbackReaction(E,"disconnectedCallback",[]);for(var K=p.tree_getFirstDescendantNode(E,!1,!0);K!==null;)c.dom.features.steps&&w.dom_runRemovingSteps(K,E),c.dom.features.customElements&&u.Guard.isCustomElementNode(K)&&g.customElement_enqueueACustomElementCallbackReaction(K,"disconnectedCallback",[]),K=p.tree_getNextDescendantNode(E,K,!1,!0);if(c.dom.features.mutationObservers)for(var Z=p.tree_getFirstAncestorNode(b,!0);Z!==null;){try{for(var ae=(V=void 0,o(Z._registeredObserverList)),oe=ae.next();!oe.done;oe=ae.next()){var _e=oe.value;_e.options.subtree&&E._registeredObserverList.push({observer:_e.observer,options:_e.options,source:_e})}}catch(Oe){V={error:Oe}}finally{try{oe&&!oe.done&&(F=ae.return)&&F.call(ae)}finally{if(V)throw V.error}}Z=p.tree_getNextAncestorNode(b,Z,!0)}c.dom.features.mutationObservers&&(D||m.observer_queueTreeMutationRecord(b,[],[E],Ee,H)),c.dom.features.steps&&u.Guard.isTextNode(E)&&w.dom_runChildTextContentChangeSteps(b)}n.mutation_ensurePreInsertionValidity=C,n.mutation_preInsert=S,n.mutation_insert=T,n.mutation_append=function(E,b){return S(E,b,null)},n.mutation_replace=function(E,b,D){var I,P,M,L,B,j,V,F;if(D._nodeType!==f.NodeType.Document&&D._nodeType!==f.NodeType.DocumentFragment&&D._nodeType!==f.NodeType.Element)throw new l.HierarchyRequestError("Only document, document fragment and element nodes can contain child nodes. Parent node is "+D.nodeName+".");if(p.tree_isHostIncludingAncestorOf(D,b,!0))throw new l.HierarchyRequestError("The node to be inserted cannot be an ancestor of parent node. Node is "+b.nodeName+", parent node is "+D.nodeName+".");if(E._parent!==D)throw new l.NotFoundError("The reference child node cannot be found under parent node. Child node is "+E.nodeName+", parent node is "+D.nodeName+".");if(b._nodeType!==f.NodeType.DocumentFragment&&b._nodeType!==f.NodeType.DocumentType&&b._nodeType!==f.NodeType.Element&&b._nodeType!==f.NodeType.Text&&b._nodeType!==f.NodeType.ProcessingInstruction&&b._nodeType!==f.NodeType.CData&&b._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 "+b.nodeName+".");if(b._nodeType===f.NodeType.Text&&D._nodeType===f.NodeType.Document)throw new l.HierarchyRequestError("Cannot insert a text node as a child of a document node. Node is "+b.nodeName+".");if(b._nodeType===f.NodeType.DocumentType&&D._nodeType!==f.NodeType.Document)throw new l.HierarchyRequestError("A document type node can only be inserted under a document node. Parent node is "+D.nodeName+".");if(D._nodeType===f.NodeType.Document){if(b._nodeType===f.NodeType.DocumentFragment){var G=0;try{for(var X=o(b._children),ne=X.next();!ne.done;ne=X.next()){var ue=ne.value;if(ue._nodeType===f.NodeType.Element)G++;else if(ue._nodeType===f.NodeType.Text)throw new l.HierarchyRequestError("Cannot insert text a node as a child of a document node. Node is "+ue.nodeName+".")}}catch(_e){I={error:_e}}finally{try{ne&&!ne.done&&(P=X.return)&&P.call(X)}finally{if(I)throw I.error}}if(G>1)throw new l.HierarchyRequestError("A document node can only have one document element node. Document fragment to be inserted has "+G+" element nodes.");if(G===1){try{for(var me=o(D._children),ge=me.next();!ge.done;ge=me.next())if((O=ge.value)._nodeType===f.NodeType.Element&&O!==E)throw new l.HierarchyRequestError("The document node already has a document element node.")}catch(_e){M={error:_e}}finally{try{ge&&!ge.done&&(L=me.return)&&L.call(me)}finally{if(M)throw M.error}}for(var ye=E._nextSibling;ye;){if(ye._nodeType===f.NodeType.DocumentType)throw new l.HierarchyRequestError("Cannot insert an element node before a document type node.");ye=ye._nextSibling}}}else if(b._nodeType===f.NodeType.Element){try{for(var Ie=o(D._children),Pe=Ie.next();!Pe.done;Pe=Ie.next())if((O=Pe.value)._nodeType===f.NodeType.Element&&O!==E)throw new l.HierarchyRequestError("Document already has a document element node. Node is "+b.nodeName+".")}catch(_e){B={error:_e}}finally{try{Pe&&!Pe.done&&(j=Ie.return)&&j.call(Ie)}finally{if(B)throw B.error}}for(ye=E._nextSibling;ye;){if(ye._nodeType===f.NodeType.DocumentType)throw new l.HierarchyRequestError("Cannot insert an element node before a document type node. Node is "+b.nodeName+".");ye=ye._nextSibling}}else if(b._nodeType===f.NodeType.DocumentType){try{for(var Ee=o(D._children),H=Ee.next();!H.done;H=Ee.next()){var O;if((O=H.value)._nodeType===f.NodeType.DocumentType&&O!==E)throw new l.HierarchyRequestError("Document already has a document type node. Node is "+b.nodeName+".")}}catch(_e){V={error:_e}}finally{try{H&&!H.done&&(F=Ee.return)&&F.call(Ee)}finally{if(V)throw V.error}}for(var Y=E._previousSibling;Y;){if(Y._nodeType===f.NodeType.Element)throw new l.HierarchyRequestError("Cannot insert a document type node before an element node. Node is "+b.nodeName+".");Y=Y._previousSibling}}}var K=E._nextSibling;K===b&&(K=b._nextSibling);var Z=E._previousSibling;x.document_adopt(b,D._nodeDocument);var ae=[];E._parent!==null&&(ae.push(E),_(E,E._parent,!0));var oe=[];return b._nodeType===f.NodeType.DocumentFragment?oe=Array.from(b._children):oe.push(b),T(b,D,K,!0),c.dom.features.mutationObservers&&m.observer_queueTreeMutationRecord(D,oe,ae,Z,K),E},n.mutation_replaceAll=function(E,b){var D,I;E!==null&&x.document_adopt(E,b._nodeDocument);var P=Array.from(b._children),M=[];E&&E._nodeType===f.NodeType.DocumentFragment?M=Array.from(E._children):E!==null&&M.push(E);try{for(var L=o(P),B=L.next();!B.done;B=L.next())_(B.value,b,!0)}catch(j){D={error:j}}finally{try{B&&!B.done&&(I=L.return)&&I.call(L)}finally{if(D)throw D.error}}E!==null&&T(E,b,null,!0),c.dom.features.mutationObservers&&m.observer_queueTreeMutationRecord(b,M,P,null,null)},n.mutation_preRemove=function(E,b){if(E._parent!==b)throw new l.NotFoundError("The child node cannot be found under parent node. Child node is "+E.nodeName+", parent node is "+b.nodeName+".");return _(E,b),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],y=0;if(v)return v.call(g);if(g&&typeof g.length=="number")return{next:function(){return g&&y>=g.length&&(g=void 0),{value:g&&g[y++],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 y,m,w=v.call(g),x=[];try{for(;(p===void 0||p-- >0)&&!(y=w.next()).done;)x.push(y.value)}catch(C){m={error:C}}finally{try{y&&!y.done&&(v=w.return)&&v.call(w)}finally{if(m)throw m.error}}return x},s=this&&this.__spread||function(){for(var g=[],p=0;p/g,">");this.text(y)},g.prototype._serializeDocumentFragmentNS=function(p,v,y,m,w){var x,C;try{for(var S=o(p.childNodes),T=S.next();!T.done;T=S.next()){var _=T.value;this._serializeNodeNS(_,v,y,m,w)}}catch(E){x={error:E}}finally{try{T&&!T.done&&(C=S.return)&&C.call(S)}finally{if(x)throw x.error}}},g.prototype._serializeDocumentFragment=function(p,v){var y,m;try{for(var w=o(p._children),x=w.next();!x.done;x=w.next()){var C=x.value;this._serializeNode(C,v)}}catch(S){y={error:S}}finally{try{x&&!x.done&&(m=w.return)&&m.call(w)}finally{if(y)throw y.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,y,m,w,x){var C,S,T=[],_=x?new l.LocalNameSet:void 0;try{for(var E=o(p.attributes),b=E.next();!b.done;b=E.next()){var D=b.value;if(x||w||D.namespaceURI!==null){if(x&&_&&_.has(D.namespaceURI,D.localName))throw new Error("Element contains duplicate attributes (well-formed required).");x&&_&&_.set(D.namespaceURI,D.localName);var I=D.namespaceURI,P=null;if(I!==null)if(P=v.get(D.prefix,I),I===u.namespace.XMLNS){if(D.value===u.namespace.XML||D.prefix===null&&w||D.prefix!==null&&(!(D.localName in m)||m[D.localName]!==D.value)&&v.has(D.localName,D.value))continue;if(x&&D.value===u.namespace.XMLNS)throw new Error("XMLNS namespace is reserved (well-formed required).");if(x&&D.value==="")throw new Error("Namespace prefix declarations cannot be used to undeclare a namespace (well-formed required).");D.prefix==="xmlns"&&(P="xmlns")}else P===null&&(P=D.prefix===null||v.hasPrefix(D.prefix)&&!v.has(D.prefix,I)?this._generatePrefix(I,v,y):D.prefix,T.push([null,"xmlns",P,this._serializeAttributeValue(I,x)]));if(x&&(D.localName.indexOf(":")!==-1||!d.xml_isName(D.localName)||D.localName==="xmlns"&&I===null))throw new Error("Attribute local name contains invalid characters (well-formed required).");T.push([I,P,D.localName,this._serializeAttributeValue(D.value,x)])}else T.push([null,null,D.localName,this._serializeAttributeValue(D.value,x)])}}catch(M){C={error:M}}finally{try{b&&!b.done&&(S=E.return)&&S.call(E)}finally{if(C)throw C.error}}return T},g.prototype._serializeAttributes=function(p,v){var y,m,w=[],x=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&&x&&T.localName in x)throw new Error("Element contains duplicate attributes (well-formed required).");if(v&&x&&(x[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).");w.push([null,null,T.localName,this._serializeAttributeValue(T.value,v)])}else w.push([null,null,T.localName,this._serializeAttributeValue(T.value,v)])}}catch(_){y={error:_}}finally{try{S&&!S.done&&(m=C.return)&&m.call(C)}finally{if(y)throw y.error}}return w},g.prototype._recordNamespaceInformation=function(p,v,y){var m,w,x=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){x=T.value;continue}var b=T.localName,D=T.value;if(D===u.namespace.XML||(D===""&&(D=null),v.has(b,D)))continue;v.set(b,D),y[b]=D||""}}}catch(I){m={error:I}}finally{try{S&&!S.done&&(w=C.return)&&w.call(C)}finally{if(m)throw m.error}}return x},g.prototype._generatePrefix=function(p,v,y){var m="ns"+y.value.toString();return y.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 y=typeof Symbol=="function"&&Symbol.iterator,m=y&&v[y],w=0;if(m)return m.call(v);if(v&&typeof v.length=="number")return{next:function(){return v&&w>=v.length&&(v=void 0),{value:v&&v[w++],done:!v}}};throw new TypeError(y?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__read||function(v,y){var m=typeof Symbol=="function"&&v[Symbol.iterator];if(!m)return v;var w,x,C=m.call(v),S=[];try{for(;(y===void 0||y-- >0)&&!(w=C.next()).done;)S.push(w.value)}catch(T){x={error:T}}finally{try{w&&!w.done&&(m=C.return)&&m.call(C)}finally{if(x)throw x.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,y,m,w,x=s.dom.window;x._mutationObserverMicrotaskQueued=!1;var C=l.set.clone(x._mutationObservers),S=l.set.clone(x._signalSlots);l.set.empty(x._signalSlots);var T=function(P){var M=l.list.clone(P._recordQueue);l.list.empty(P._recordQueue);for(var L=0;L"+y+"<\/script>"},v=function(){try{o=document.domain&&new ActiveXObject("htmlfile")}catch{}var y,m;v=o?function(x){x.write(p("")),x.close();var C=x.parentWindow.Object;return x=null,C}(o):((m=u("iframe")).style.display="none",f.appendChild(m),m.src="javascript:",(y=m.contentWindow.document).open(),y.write(p("document.F=Object")),y.close(),y.F);for(var w=c.length;w--;)delete v.prototype[c[w]];return v()};l[h]=!0,r.exports=Object.create||function(y,m){var w;return y!==null?(g.prototype=a(y),w=new g,g.prototype=null,w[h]=y):w=v(),m===void 0?w:s(w,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,y,m,w,x,C;if(h.length===0)return{};for(var S={},T=!1,_=0,E=0,b=0,D=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(_){w={error:_}}finally{try{S&&!S.done&&(x=C.return)&&x.call(C)}finally{if(w)throw w.error}}else g[y>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 y=this._currentList[this._currentList.length-1];this._isElementNode(y,h)?y[h].length!==0&&c.isArray(y[h][0])?y[h].push(v):y[h]=[y[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 y=this._currentList[this._currentList.length-1];this._isAttrNode(y)?y["@"][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(y){g={error:y}}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],y=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:y,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=y.length&&(y=void 0),{value:y&&y[x++],done:!y}}};throw new TypeError(m?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__read||function(y,m){var w=typeof Symbol=="function"&&y[Symbol.iterator];if(!w)return y;var x,C,S=w.call(y),T=[];try{for(;(m===void 0||m-- >0)&&!(x=S.next()).done;)T.push(x.value)}catch(_){C={error:_}}finally{try{x&&!x.done&&(w=S.return)&&w.call(S)}finally{if(C)throw C.error}}return T},s=this&&this.__spread||function(){for(var y=[],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,y=p.BUGGY_SAFARI_ITERATORS,m=d("iterator"),w=function(){return this};r.exports=function(x,C,S,T,_,E,b){a(S,C,T);var D,I,P,M=function(X){if(X===_&&F)return F;if(!y&&X in j)return j[X];switch(X){case"keys":case"values":case"entries":return function(){return new S(this,X)}}return function(){return new S(this)}},L=C+" Iterator",B=!1,j=x.prototype,V=j[m]||j["@@iterator"]||_&&j[_],F=!y&&V||M(_),G=C=="Array"&&j.entries||V;if(G&&(D=s(G.call(new x)),v!==Object.prototype&&D.next&&(h||s(D)===v||(c?c(D,v):typeof D[m]!="function"&&f(D,m,w)),l(D,L,!0,!0),h&&(g[L]=w))),_=="values"&&V&&V.name!=="values"&&(B=!0,F=function(){return V.call(this)}),h&&!b||j[m]===F||f(j,m,F),g[C]=F,_)if(I={values:M("values"),keys:E?F:M("keys"),entries:M("entries")},b)for(P in I)(y||B||!(P in j))&&u(j,P,I[P]);else o({target:C,proto:!0,forced:y||B},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}),y=d("species"),m=[].slice,w=Math.max;o({target:"Array",proto:!0,forced:!p||!v},{slice:function(x,C){var S,T,_,E=f(this),b=l(E.length),D=c(x,b),I=c(C===void 0?b:C,b);if(s(E)&&(typeof(S=E.constructor)!="function"||S!==Array&&!s(S.prototype)?a(S)&&(S=S[y])===null&&(S=void 0):S=void 0,S===Array||S===void 0))return m.call(E,D,I);for(T=new(S===void 0?Array:S)(w(I-D,0)),_=0;D({voiRange:{...this.voiRange}}),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=this.canvasToIndex(n);return i[1]=-i[1],this.indexToWorld(i)},this.worldToCanvas=n=>{if(!this.metadata)return;const i=this.worldToIndex(n);return i[1]=-i[1],this.indexToCanvas([i[0],i[1],0])},this.postrender=()=>{this.refreshRenderValues(),nt(this.element,Xe.IMAGE_RENDERED,{element:this.element,viewportId:this.id,viewport:this,renderingEngineId:this.renderingEngineId})},this.getRotation=()=>0,this.canvasToIndex=n=>{const i=this.getTransform();i.invert();const o=i.transformPoint(n.map(a=>a*devicePixelRatio));return[o[0],o[1],0]},this.indexToCanvas=n=>this.getTransform().transformPoint([n[0],n[1]]).map(o=>o/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=Tn(),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(Xe.ELEMENT_DISABLED,this.elementDisabledHandler)}removeEventListeners(){this.canvas.removeEventListener(Xe.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((b,D)=>(b==null?void 0:b.NumberOfFrames){i.style.filter=r})}setAverageWhite(e){this.averageWhite=e,this.setColorTransform(this.voiRange,e)}getScalarData(){return null}computeTransforms(){const e=Ea(),r=Ea();return l1(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],fl(e,e,this.metadata.spacing),$r(r,e),{indexToWorld:e,worldToIndex:r}}getImageData(){const{metadata:e}=this;if(!e)return null;const{spacing:r}=e,n={getDirection:()=>e.direction,getDimensions:()=>e.dimensions,getRange:()=>[0,255],getScalarData:()=>this.getScalarData(),getSpacing:()=>e.spacing,worldToIndex:o=>this.worldToIndex(o),indexToWorld:o=>this.indexToWorld(o)};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}}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,centerIndex:n}=this.internalCamera,i=e*r,o=this.indexToCanvas([n[0],n[1],0]),a=this.canvasToWorld(o);return{parallelProjection:!0,focalPoint:a,position:a,viewUp:[0,-1,0],parallelScale:this.element.clientHeight*i,viewPlaneNormal:[0,0,1]}}worldToIndexWSI(e){if(!Ng)return;const r=this.viewer[d9],n=Ng.applyInverseTransform({coordinate:[e[0],e[1]],affine:r});return[n[0],n[1]]}indexToWorldWSI(e){if(!Ng)return;const r=Ng.applyTransform({coordinate:[e[0],e[1]],affine:this.viewer[d9]});return[r[0],r[1],0]}worldToIndex(e){const{worldToIndex:r}=this.computeTransforms(),n=Be();return Wt(n,e,r),n}indexToWorld(e){const{indexToWorld:r}=this.computeTransforms(),n=Be(),i=bt(...e);return Wt(n,i,r),[n[0],n[1],n[2]]}setDataIds(e,r){(r==null?void 0:r.miniNavigationOverlay)!==!1&&G0.addMiniNavigationOverlayCss();const n=(r==null?void 0:r.webClient)||lt(ta.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 G0.getDicomMicroscopyViewer();Ng||(Ng=n.utils),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[f9],this.map.on(Mle,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[f9],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||rXA("dicom-microscopy-viewer"),G0.overlayCssId="overlayCss";let Yy=G0;const eV={[gr.ORTHOGRAPHIC]:sr,[gr.PERSPECTIVE]:sr,[gr.STACK]:ar,[gr.VOLUME_3D]:dE,[gr.VIDEO]:Lh,[gr.WHOLE_SLIDE]:Yy};function c0(t){return eV[t].useCustomRenderingPipeline}const h9=2;class hE{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&&nt(i.element,Xe.IMAGE_RENDERED,i)})},this.id=e||Tn(),this.useCPURendering=ih(),hm.set(this),!qA())throw new Error("@cornerstonejs/core is not initialized, run init() first");this.useCPURendering||(this.offscreenMultiRenderWindow=Fre.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=c0(a);!this.useCPURendering&&!s?this.enableVTKjsDrivenViewport(r):this.addCustomViewport(r);const c=Xc(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),!c0(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&&!c0(o.type)?n.push(o):i.push(o)}),this.setVtkjsDrivenViewports(n),this.setCustomViewports(i),r.forEach(o=>{const a=Xc(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=>{c0(a.type)?o.push(a):i.push(a)}),i.length&&this._resizeVTKViewports(i,r,e),o.length&&this._resizeUsingCustomResizeHandler(o,r,e)}getViewport(e){var r;return(r=this._viewports)==null?void 0:r.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 ar))throw new Error(`Viewport with Id ${e} is not a StackViewport.`);return r}getStackViewports(){return this._throwIfDestroyed(),this.getViewports().filter(r=>r instanceof ar)}getVolumeViewports(){this._throwIfDestroyed();const e=this.getViewports(),r=n=>n instanceof Cr;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(),hm.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===gr.ORTHOGRAPHIC&&(i={...i,orientation:Md.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=>Xc(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=>c0(f.type)===!1),i=n.map(f=>f.canvas),o=Xc(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:y,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 w={id:o,element:n,renderingEngineId:this.id,type:a,canvas:i,sx:p,sy:v,sWidth:y,sHeight:m,defaultOptions:s||{}};let x;if(a===gr.STACK)x=new ar(w);else if(a===gr.ORTHOGRAPHIC||a===gr.PERSPECTIVE)x=new sr(w);else if(a===gr.VOLUME_3D)x=new dE(w);else throw new Error(`Viewport Type ${a} is not supported`);this._viewports.set(o,x);const C={element:n,viewportId:o,renderingEngineId:this.id};x.suppressEvents||nt(He,Xe.ELEMENT_ENABLED,C)}addCustomViewport(e){const{element:r,viewportId:n,type:i,defaultOptions:o}=e;r.tabIndex=-1;const a=Xc(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=eV[i],u=new f(l);this._viewports.set(n,u);const d={element:r,viewportId:n,renderingEngineId:this.id};nt(He,Xe.ELEMENT_ENABLED,d)}setCustomViewports(e){e.forEach(r=>{this.addCustomViewport(r)})}setVtkjsDrivenViewports(e){if(e.length){const r=e.map(a=>Xc(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();Ple(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 Ple(t){const e=document.createElement("a");e.download="viewport.png",e.href=t,document.body.appendChild(e),e.click(),document.body.removeChild(e)}const Rle="3.20.0";class tV{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(),this._visible=!0}_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;o2&&arguments[2]!==void 0?arguments[2]:null;const n=nV(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 bm={arrayBufferToString:nV,extractBinary:Lle};const gE={};function rV(t){return!!gE[t]}function Ale(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"http",e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return gE[t](e)}function iV(t,e){gE[t]=e}var C1={get:Ale,has:rV,registerType:iV};function oV(){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 Nle=oV();function kle(t,e){if(e<2)return;const r=new Int8Array(t),n=r.length,i=[];for(let o=0;o(aV("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 Ah=0;function Dw(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 Fle(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return new Promise((r,n)=>{const i=Dw("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 Ule(t,e,r){let n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return n&&n.compression?pE():r.ref&&!r.ref.pending?new Promise((i,o)=>{const a=[e,r.ref.basepath,r.ref.id].join("/"),s=Dw("GET",a,n);s.onreadystatechange=c=>{s.readyState===1&&(r.ref.pending=!0,++Ah===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):(lC.ENDIANNESS!==r.ref.encode&&lC.ENDIANNESS&&(Vle(`Swap bytes of ${r.name}`),lC.swapBytes(r.buffer,eR[r.dataType])),r.values=Q.newTypedArray(r.dataType,r.buffer)),r.values.length!==r.size&&aV(`Error in FetchArray: ${r.name}, does not have the proper array size. Got ${r.values.length}, instead of ${r.size}`),delete r.ref,--Ah===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 Ble(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return r&&r.compression?pE():new Promise((n,i)=>{const o=Dw("GET",e,r);o.onreadystatechange=a=>{o.readyState===1&&++Ah===1&&t!=null&&t.invokeBusy&&t.invokeBusy(!0),o.readyState===4&&(--Ah===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 Gle(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return r&&r.compression?pE():new Promise((n,i)=>{const o=Dw("GET",e,r);o.onreadystatechange=a=>{o.readyState===1&&++Ah===1&&t!=null&&t.invokeBusy&&t.invokeBusy(!0),o.readyState===4&&(--Ah===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 Wle(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 zle={fetchArray:Ule,fetchJSON:Ble,fetchText:Gle,fetchBinary:Fle,fetchImage:Wle};rV("http")||iV("http",t=>zle);const uC={ASCII:"ascii",BINARY_LITTLE_ENDIAN:"binary_little_endian"},g9={diffuse_red:"red",diffuse_green:"green",diffuse_blue:"blue"},sV={patternHeader:/ply([\s\S]*)end_header\r?\n/,patternBody:/end_header\s([\s\S]*)$/};function p9(t){let e="",r=0;const n=sV.patternHeader.exec(t);n!==null&&(e=n[1],r=n[0].length);const i={comments:[],elements:[],headerLength:r},o=e.split(` +`);let a,s,c;for(let l=0;lp.name==="vertex"),n=e.find(p=>p.name==="face");let i=0,o=0;r&&(i=r.count),n&&(o=n.count);const a=new Float32Array(i*3),s=new Uint8Array(i*3),c=new Float32Array(i*2),l=new Float32Array(i*3),f=t.colors.length>0,u=t.uvs.length>0,d=t.normals.length>0,h=t.faceVertexUvs.length>0;for(let p=0;p0&&(t.indices.push(n.length),n.forEach((o,a)=>{t.indices.push(o)})),t.faceVertexUvs.push(i)}}function dC(t,e,r,n){let i;switch(r){case"int8":case"char":i=[t.getInt8(e),1];break;case"uint8":case"uchar":i=[t.getUint8(e),1];break;case"int16":case"short":i=[t.getInt16(e,n),2];break;case"uint16":case"ushort":i=[t.getUint16(e,n),2];break;case"int32":case"int":i=[t.getInt32(e,n),4];break;case"uint32":case"uint":i=[t.getUint32(e,n),4];break;case"float32":case"float":i=[t.getFloat32(e,n),4];break;case"float64":case"double":i=[t.getFloat64(e,n),8];break;default:console.log("Unsupported type");break}return i}function jle(t,e,r,n){const i={};let o,a=0;for(let s=0;s1&&arguments[1]!==void 0?arguments[1]:{};const{compression:o,progressCallback:a}=e;return i.binary?e.dataAccessHelper.fetchBinary(n,{compression:o,progressCallback:a}):e.dataAccessHelper.fetchText(t,n,{compression:o,progressCallback:a})}t.setUrl=function(n){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{binary:!0};e.url=n;const o=n.split("/");return o.pop(),e.baseURL=o.join("/"),e.compression=i.compression,t.loadData({progressCallback:i.progressCallback,binary:!!i.binary})},t.loadData=function(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const i=r(e.url,n);return i.then(t.parse),i},t.parse=n=>{typeof n=="string"?t.parseAsText(n):t.parseAsArrayBuffer(n)},t.parseAsArrayBuffer=n=>{if(!n)return;if(n!==e.parseData)t.modified();else return;const i=bm.arrayBufferToString(n),o=p9(i);if(!(o.format!==uC.ASCII)){t.parseAsText(n);return}e.parseData=n;const s={indices:[],vertices:[],normals:[],uvs:[],faceVertexUvs:[],colors:[]},c=o.format===uC.BINARY_LITTLE_ENDIAN,l=n instanceof ArrayBuffer?n:n.buffer,f=new DataView(l,o.headerLength);let u,d=0;for(let g=0;g{if(!n)return;if(n!==e.parseData)t.modified();else return;e.parseData=n;const i=bm.arrayBufferToString(n),o=p9(i);if(o.format!==uC.ASCII){t.parseAsArrayBuffer(n);return}const s={indices:[],vertices:[],normals:[],uvs:[],faceVertexUvs:[],colors:[]},c=sV.patternBody.exec(i);let l="";c!==null&&(l=c[1]);const f=l.split(` +`);let u=0,d=0;for(let g=0;g=o.elements[u].count&&(u++,d=0);const v=$le(o.elements[u].properties,p);v9(s,o.elements[u].name,v),d++}}const h=m9(s,o.elements);e.output[0]=h},t.requestData=(n,i)=>{t.parse(e.parseData)}}const Kle={};function cV(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Kle,r),Q.obj(t,e),Q.get(t,e,["url","baseURL"]),Q.setGet(t,e,["dataAccessHelper"]),Q.algo(t,e,0,1),Hle(t,e),e.compression||(e.compression=null),e.progressCallback||(e.progressCallback=null)}const qle=Q.newInstance(cV,"vtkPLYReader");var Xle={extend:cV,newInstance:qle};const{vtkErrorMacro:hC}=Q;function Yle(t){const r=t.split(" ").filter(i=>i.indexOf("=")>-1),n={};for(let i=0;if).slice(-3).map(Number);for(y9(l,i);t[e+s].indexOf("vertex")!==-1;){const u=t[e+s].split(/[ \t]+/).filter(d=>d).slice(-3).map(Number);y9(u,r),a++,s++}n.push(a);for(let f=0;f1&&arguments[1]!==void 0?arguments[1]:{};const a=o.compression!==void 0?o.compression:e.compression,s=o.progressCallback!==void 0?o.progressCallback:e.progressCallback;return o.binary?e.dataAccessHelper.fetchBinary(i,{compression:a,progressCallback:s}):e.dataAccessHelper.fetchText(t,i,{compression:a,progressCallback:s})}function n(i){const o=e.output[0],a=o.getPoints().getData(),s=o.getPolys().getData();if(!a||!s){console.warn("No valid polydata.");return}const c=new Map,l=new Map;let f=0,u=!1;for(let p=0;p+w*10**-i);d[y]=m[0],d[y+1]=m[1],d[y+2]=m[2]}const g=new Int32Array(s);for(let p=0;p1&&arguments[1]!==void 0?arguments[1]:{binary:!0};e.url=i;const a=i.split("/");return a.pop(),e.baseURL=a.join("/"),t.loadData(o)},t.loadData=function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const o=r(e.url,i);return o.then(t.parse),o},t.parse=i=>{typeof i=="string"?t.parseAsText(i):t.parseAsArrayBuffer(i)},t.parseAsArrayBuffer=i=>{if(!i)return;if(i!==e.parseData)t.modified();else return;e.parseData=i;let o=!1;if(o=84+new DataView(i,0,84).getUint32(80,!0)*50===i.byteLength,!o){t.parseAsText(bm.arrayBufferToString(i));return}const c=i.slice(0,80),l=bm.arrayBufferToString(c),f=Yle(l),u=new DataView(i,84),d=(i.byteLength-84)/50,h=new Float32Array(d*9),g=new Float32Array(d*3),p=new Uint32Array(d*4),v=new Uint16Array(d);let y=0;for(let x=0;x=0&&n(e.removeDuplicateVertices)},t.parseAsText=i=>{if(!i)return;if(i!==e.parseData)t.modified();else return;e.parseData=i;const o=i.split(` +`);let a=1;const s=[],c=[],l=[];for(;a!==-1;)a=Jle(o,a,s,c,l);const f=Nr.newInstance();f.getPoints().setData(Float32Array.from(s),3),f.getPolys().setData(Uint32Array.from(c)),f.getCellData().setNormals(Ot.newInstance({name:"Normals",values:Float32Array.from(l),numberOfComponents:3})),e.output[0]=f,e.removeDuplicateVertices>=0&&n(e.removeDuplicateVertices)},t.requestData=(i,o)=>{t.parse(e.parseData)}}const Qle={removeDuplicateVertices:-1};function lV(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Qle,r),Q.obj(t,e),Q.get(t,e,["url","baseURL"]),Q.setGet(t,e,["dataAccessHelper","removeDuplicateVertices"]),Q.algo(t,e,0,1),Zle(t,e),e.compression||(e.compression=null),e.progressCallback||(e.progressCallback=null)}const eue=Q.newInstance(lV,"vtkSTLReader");var tue={extend:lV,newInstance:eue},uV={exports:{}};(function(t,e){(function(r,n){t.exports=n()})(zi,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(w){var x=typeof Symbol=="function"&&Symbol.iterator,C=x&&w[x],S=0;if(C)return C.call(w);if(w&&typeof w.length=="number")return{next:function(){return w&&S>=w.length&&(w=void 0),{value:w&&w[S++],done:!w}}};throw new TypeError(x?"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(w,x,C){if(y(w))w.forEach(function(T,_){return x.call(C,_,T)});else for(var S in w)w.hasOwnProperty(S)&&x.call(C,S,w[S])}function d(w){var x,C;if(h(w))return w;if(p(w)){var S=[];try{for(var T=o(w),_=T.next();!_.done;_=T.next()){var E=_.value;S.push(d(E))}}catch(O){x={error:O}}finally{try{_&&!_.done&&(C=T.return)&&C.call(T)}finally{if(x)throw x.error}}return S}if(g(w)){S={};for(var b in w)if(w.hasOwnProperty(b)){var D=w[b];S[b]=d(D)}return S}return w}function h(w){return!!w&&Object.prototype.toString.call(w)==="[object Function]"}function g(w){var x=typeof w;return!!w&&(x==="function"||x==="object")}function p(w){return Array.isArray(w)}function v(w){return w instanceof Set}function y(w){return w instanceof Map}function m(w){if(g(w)){var x=Object.getPrototypeOf(w),C=x.constructor;return x&&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(w,x){for(var C=[],S=2;S>6|192;else{if(T>55295&&T<56320){if(++S>=w.length)throw new Error("Incomplete surrogate pair.");var _=w.charCodeAt(S);if(_<56320||_>57343)throw new Error("Invalid surrogate character.");T=65536+((1023&T)<<10)+(1023&_),x[C++]=T>>18|240,x[C++]=T>>12&63|128}else x[C++]=T>>12|224;x[C++]=T>>6&63|128}x[C++]=63&T|128}}return x.subarray(0,C)},n.utf8Decode=function(w){for(var x="",C=0;C127)if(S>191&&S<224){if(C>=w.length)throw new Error("Incomplete 2-byte sequence.");S=(31&S)<<6|63&w[C++]}else if(S>223&&S<240){if(C+1>=w.length)throw new Error("Incomplete 3-byte sequence.");S=(15&S)<<12|(63&w[C++])<<6|63&w[C++]}else{if(!(S>239&&S<248))throw new Error("Unknown multi-byte start.");if(C+2>=w.length)throw new Error("Incomplete 4-byte sequence.");S=(7&S)<<18|(63&w[C++])<<12|(63&w[C++])<<6|63&w[C++]}if(S<=65535)x+=String.fromCharCode(S);else{if(!(S<=1114111))throw new Error("Code point exceeds UTF-16 limit.");S-=65536,x+=String.fromCharCode(S>>10|55296),x+=String.fromCharCode(1023&S|56320)}}return x}},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,y,m,w=d.target,x=d.global,C=d.stat;if(g=x?o:C?o[w]||l(w,{}):(o[w]||{}).prototype)for(p in h){if(y=h[p],v=d.noTargetGet?(m=a(g,p))&&m.value:g[p],!u(x?p:w+(C?".":"#")+p,d.forced)&&v!==void 0){if(typeof y==typeof v)continue;f(y,v)}(d.sham||v&&v.sham)&&s(y,"sham",!0),c(g,p,y,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 w={};if(m!=null)for(var x in m)Object.hasOwnProperty.call(m,x)&&(w[x]=m[x]);return w.default=m,w};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 y=o(i(239));n.string=y},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(F,U){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(W,J){W.__proto__=J}||function(W,J){for(var te in J)J.hasOwnProperty(te)&&(W[te]=J[te])})(F,U)},function(F,U){function W(){this.constructor=F}o(F,U),F.prototype=U===null?Object.create(U):(W.prototype=U.prototype,new W)});Object.defineProperty(n,"__esModule",{value:!0});var s=function(F){function U(W,J){J===void 0&&(J="");var te=F.call(this,J)||this;return te.name=W,te}return a(U,F),U}(Error);n.DOMException=s;var c=function(F){function U(W){return W===void 0&&(W=""),F.call(this,"DOMStringSizeError",W)||this}return a(U,F),U}(s);n.DOMStringSizeError=c;var l=function(F){function U(W){return W===void 0&&(W=""),F.call(this,"WrongDocumentError","The object is in the wrong document. "+W)||this}return a(U,F),U}(s);n.WrongDocumentError=l;var f=function(F){function U(W){return W===void 0&&(W=""),F.call(this,"NoDataAllowedError",W)||this}return a(U,F),U}(s);n.NoDataAllowedError=f;var u=function(F){function U(W){return W===void 0&&(W=""),F.call(this,"NoModificationAllowedError","The object can not be modified. "+W)||this}return a(U,F),U}(s);n.NoModificationAllowedError=u;var d=function(F){function U(W){return W===void 0&&(W=""),F.call(this,"NotSupportedError","The operation is not supported. "+W)||this}return a(U,F),U}(s);n.NotSupportedError=d;var h=function(F){function U(W){return W===void 0&&(W=""),F.call(this,"InUseAttributeError",W)||this}return a(U,F),U}(s);n.InUseAttributeError=h;var g=function(F){function U(W){return W===void 0&&(W=""),F.call(this,"InvalidStateError","The object is in an invalid state. "+W)||this}return a(U,F),U}(s);n.InvalidStateError=g;var p=function(F){function U(W){return W===void 0&&(W=""),F.call(this,"InvalidModificationError","The object can not be modified in this way. "+W)||this}return a(U,F),U}(s);n.InvalidModificationError=p;var v=function(F){function U(W){return W===void 0&&(W=""),F.call(this,"NamespaceError","The operation is not allowed by Namespaces in XML. [XMLNS] "+W)||this}return a(U,F),U}(s);n.NamespaceError=v;var y=function(F){function U(W){return W===void 0&&(W=""),F.call(this,"InvalidAccessError","The object does not support the operation or argument. "+W)||this}return a(U,F),U}(s);n.InvalidAccessError=y;var m=function(F){function U(W){return W===void 0&&(W=""),F.call(this,"ValidationError",W)||this}return a(U,F),U}(s);n.ValidationError=m;var w=function(F){function U(W){return W===void 0&&(W=""),F.call(this,"TypeMismatchError",W)||this}return a(U,F),U}(s);n.TypeMismatchError=w;var x=function(F){function U(W){return W===void 0&&(W=""),F.call(this,"SecurityError","The operation is insecure. "+W)||this}return a(U,F),U}(s);n.SecurityError=x;var C=function(F){function U(W){return W===void 0&&(W=""),F.call(this,"NetworkError","A network error occurred. "+W)||this}return a(U,F),U}(s);n.NetworkError=C;var S=function(F){function U(W){return W===void 0&&(W=""),F.call(this,"AbortError","The operation was aborted. "+W)||this}return a(U,F),U}(s);n.AbortError=S;var T=function(F){function U(W){return W===void 0&&(W=""),F.call(this,"URLMismatchError","The given URL does not match another URL. "+W)||this}return a(U,F),U}(s);n.URLMismatchError=T;var _=function(F){function U(W){return W===void 0&&(W=""),F.call(this,"QuotaExceededError","The quota has been exceeded. "+W)||this}return a(U,F),U}(s);n.QuotaExceededError=_;var E=function(F){function U(W){return W===void 0&&(W=""),F.call(this,"TimeoutError","The operation timed out. "+W)||this}return a(U,F),U}(s);n.TimeoutError=E;var b=function(F){function U(W){return W===void 0&&(W=""),F.call(this,"InvalidNodeTypeError","The supplied node is incorrect or has an incorrect ancestor for this operation. "+W)||this}return a(U,F),U}(s);n.InvalidNodeTypeError=b;var D=function(F){function U(W){return W===void 0&&(W=""),F.call(this,"DataCloneError","The object can not be cloned. "+W)||this}return a(U,F),U}(s);n.DataCloneError=D;var O=function(F){function U(W){return W===void 0&&(W=""),F.call(this,"NotImplementedError","The DOM method is not implemented by this module. "+W)||this}return a(U,F),U}(s);n.NotImplementedError=O;var L=function(F){function U(W){return W===void 0&&(W=""),F.call(this,"HierarchyRequestError","The operation would yield an incorrect node tree. "+W)||this}return a(U,F),U}(s);n.HierarchyRequestError=L;var P=function(F){function U(W){return W===void 0&&(W=""),F.call(this,"NotFoundError","The object can not be found here. "+W)||this}return a(U,F),U}(s);n.NotFoundError=P;var k=function(F){function U(W){return W===void 0&&(W=""),F.call(this,"IndexSizeError","The index is not in the allowed range. "+W)||this}return a(U,F),U}(s);n.IndexSizeError=k;var G=function(F){function U(W){return W===void 0&&(W=""),F.call(this,"SyntaxError","The string did not match the expected pattern. "+W)||this}return a(U,F),U}(s);n.SyntaxError=G;var j=function(F){function U(W){return W===void 0&&(W=""),F.call(this,"InvalidCharacterError","The string contains invalid characters. "+W)||this}return a(U,F),U}(s);n.InvalidCharacterError=j},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(w){var x=typeof Symbol=="function"&&Symbol.iterator,C=x&&w[x],S=0;if(C)return C.call(w);if(w&&typeof w.length=="number")return{next:function(){return w&&S>=w.length&&(w=void 0),{value:w&&w[S++],done:!w}}};throw new TypeError(x?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var a=i(3),s=i(2);function c(w,x,C){if(C===void 0&&(C=!1),C&&a.Guard.isElementNode(x)&&a.Guard.isShadowRoot(x.shadowRoot)&&x.shadowRoot._firstChild)return x.shadowRoot._firstChild;if(x._firstChild)return x._firstChild;if(x===w)return null;if(x._nextSibling)return x._nextSibling;for(var S=x._parent;S&&S!==w;){if(S._nextSibling)return S._nextSibling;S=S._parent}return null}function l(){var w;return(w={})[Symbol.iterator]=function(){return{next:function(){return{done:!0,value:null}}}},w}function f(w,x,C,S){x===void 0&&(x=!1),C===void 0&&(C=!1);for(var T=x?w:c(w,w,C);T&&S&&!S(T);)T=c(w,T,C);return T}function u(w,x,C,S,T){S===void 0&&(S=!1);for(var _=c(w,x,S);_&&T&&!T(_);)_=c(w,_,S);return _}function d(w,x,C,S){var T;return x===void 0&&(x=!1),C===void 0&&(C=!1),x||w._children.size!==0?((T={})[Symbol.iterator]=function(){var _=x?w:c(w,w,C);return{next:function(){for(;_&&S&&!S(_);)_=c(w,_,C);if(_===null)return{done:!0,value:null};var E={done:!1,value:_};return _=c(w,_,C),E}}},T):l()}function h(w,x,C){x===void 0&&(x=!1);for(var S=x?w:w._parent;S&&C&&!C(S);)S=S._parent;return S}function g(w,x,C,S){for(var T=x._parent;T&&S&&!S(T);)T=T._parent;return T}function p(w){return a.Guard.isDocumentTypeNode(w)?0:a.Guard.isCharacterDataNode(w)?w._data.length:w._children.size}function v(w,x){if(x===void 0&&(x=!1),x){var C=v(w,!1);return a.Guard.isShadowRoot(C)?v(C._host,!0):C}return w._parent?v(w._parent):w}function y(w,x,C,S){C===void 0&&(C=!1),S===void 0&&(S=!1);for(var T=C?w:S&&a.Guard.isShadowRoot(w)?w._host:w._parent;T!==null;){if(T===x)return!0;T=S&&a.Guard.isShadowRoot(T)?T._host:T._parent}return!1}function m(w){for(var x=v(w),C=0,S=f(x);S!==null;){if(C++,S===w)return C;S=u(x,S)}return-1}n.tree_getFirstDescendantNode=f,n.tree_getNextDescendantNode=u,n.tree_getDescendantNodes=d,n.tree_getDescendantElements=function(w,x,C,S){var T;return x===void 0&&(x=!1),C===void 0&&(C=!1),x||w._children.size!==0?((T={})[Symbol.iterator]=function(){var _=d(w,x,C,function(b){return a.Guard.isElementNode(b)})[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 b={done:!1,value:E};return E=_.next().value,b}}},T):l()},n.tree_getSiblingNodes=function(w,x,C){var S;return x===void 0&&(x=!1),w._parent&&w._parent._children.size!==0?((S={})[Symbol.iterator]=function(){var T=w._parent?w._parent._firstChild:null;return{next:function(){for(;T&&(C&&!C(T)||!x&&T===w);)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(w,x,C){var S;return x===void 0&&(x=!1),x||w._parent?((S={})[Symbol.iterator]=function(){var T=h(w,x,C);return{next:function(){if(T===null)return{done:!0,value:null};var _={done:!1,value:T};return T=g(0,T,x,C),_}}},S):l()},n.tree_getCommonAncestor=function(w,x){if(w===x)return w._parent;for(var C=[],S=[],T=h(w,!0);T!==null;)C.push(T),T=g(0,T);for(var _=h(x,!0);_!==null;)S.push(_),_=g(0,_);for(var E=C.length,b=S.length,D=null,O=Math.min(E,b);O>0;O--){var L=C[--E];if(L!==S[--b])break;D=L}return D},n.tree_getFollowingNode=function(w,x){if(x._firstChild)return x._firstChild;if(x._nextSibling)return x._nextSibling;for(;;){var C=x._parent;if(C===null||C===w)return null;if(C._nextSibling)return C._nextSibling;x=C}},n.tree_getPrecedingNode=function(w,x){return x===w?null:x._previousSibling?(x=x._previousSibling)._lastChild?x._lastChild:x:x._parent},n.tree_isConstrained=function w(x){var C,S,T,_,E,b;switch(x._nodeType){case s.NodeType.Document:var D=!1,O=!1;try{for(var L=o(x._children),P=L.next();!P.done;P=L.next())switch(P.value._nodeType){case s.NodeType.ProcessingInstruction:case s.NodeType.Comment:break;case s.NodeType.DocumentType:if(D||O)return!1;D=!0;break;case s.NodeType.Element:if(O)return!1;O=!0;break;default:return!1}}catch(U){C={error:U}}finally{try{P&&!P.done&&(S=L.return)&&S.call(L)}finally{if(C)throw C.error}}break;case s.NodeType.DocumentFragment:case s.NodeType.Element:try{for(var k=o(x._children),G=k.next();!G.done;G=k.next())switch(G.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(U){T={error:U}}finally{try{G&&!G.done&&(_=k.return)&&_.call(k)}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!x.hasChildNodes()}try{for(var j=o(x._children),F=j.next();!F.done;F=j.next())if(!w(F.value))return!1}catch(U){E={error:U}}finally{try{F&&!F.done&&(b=j.return)&&b.call(j)}finally{if(E)throw E.error}}return!0},n.tree_nodeLength=p,n.tree_isEmpty=function(w){return p(w)===0},n.tree_rootNode=v,n.tree_isDescendantOf=function(w,x,C,S){C===void 0&&(C=!1),S===void 0&&(S=!1);for(var T=f(w,C,S);T!==null;){if(T===x)return!0;T=u(w,T,C,S)}return!1},n.tree_isAncestorOf=y,n.tree_isHostIncludingAncestorOf=function w(x,C,S){if(S===void 0&&(S=!1),y(x,C,S))return!0;var T=v(x);return!(!a.Guard.isDocumentFragmentNode(T)||T._host===null||!w(T._host,C,S))},n.tree_isSiblingOf=function(w,x,C){return C===void 0&&(C=!1),w!==x?w._parent!==null&&w._parent===x._parent:!!C},n.tree_isPreceding=function(w,x){var C=m(w),S=m(x);return C!==-1&&S!==-1&&v(w)===v(x)&&SC},n.tree_isParentOf=function(w,x){return w._parent===x},n.tree_isChildOf=function(w,x){return x._parent===w},n.tree_previousSibling=function(w){return w._previousSibling},n.tree_nextSibling=function(w){return w._nextSibling},n.tree_firstChild=function(w){return w._firstChild},n.tree_lastChild=function(w){return w._lastChild},n.tree_treePosition=m,n.tree_index=function(w){for(var x=0;w._previousSibling!==null;)x++,w=w._previousSibling;return x},n.tree_retarget=function(w,x){for(;;){if(!w||!a.Guard.isNode(w))return w;var C=v(w);if(!a.Guard.isShadowRoot(C)||x&&a.Guard.isNode(x)&&y(C,x,!0,!0))return w;w=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,y){var m=!!y&&!!y.unsafe,w=!!y&&!!y.enumerable,x=!!y&&!!y.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?!x&&g[p]&&(w=!0):delete g[p],w?g[p]=v:a(g,p,v)):w?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 y={length:-1};g?c(y,1,{enumerable:!0,get:f}):y[1]=1,h.call(y,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),y=i(158),m=i(159),w=i(160),x=i(161),C=i(162),S=i(163),T=i(164),_=i(165),E=i(166),b=i(167),D=i(168),O=i(169),L=i(170);n.create_domImplementation=function(P){return o.DOMImplementationImpl._create(P)},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(P,k,G,j){return u.DocumentTypeImpl._create(P,k,G,j)},n.create_element=function(P,k,G,j){return d.ElementImpl._create(P,k,G,j)},n.create_htmlElement=function(P,k,G,j){return d.ElementImpl._create(P,k,G,j)},n.create_htmlUnknownElement=function(P,k,G,j){return d.ElementImpl._create(P,k,G,j)},n.create_documentFragment=function(P){return h.DocumentFragmentImpl._create(P)},n.create_shadowRoot=function(P,k){return g.ShadowRootImpl._create(P,k)},n.create_attr=function(P,k){return p.AttrImpl._create(P,k)},n.create_text=function(P,k){return v.TextImpl._create(P,k)},n.create_cdataSection=function(P,k){return y.CDATASectionImpl._create(P,k)},n.create_comment=function(P,k){return m.CommentImpl._create(P,k)},n.create_processingInstruction=function(P,k,G){return w.ProcessingInstructionImpl._create(P,k,G)},n.create_htmlCollection=function(P,k){return k===void 0&&(k=function(){return!0}),x.HTMLCollectionImpl._create(P,k)},n.create_nodeList=function(P){return C.NodeListImpl._create(P)},n.create_nodeListStatic=function(P,k){return S.NodeListStaticImpl._create(P,k)},n.create_namedNodeMap=function(P){return T.NamedNodeMapImpl._create(P)},n.create_range=function(P,k){return _.RangeImpl._create(P,k)},n.create_nodeIterator=function(P,k,G){return E.NodeIteratorImpl._create(P,k,G)},n.create_treeWalker=function(P,k){return b.TreeWalkerImpl._create(P,k)},n.create_nodeFilter=function(){return D.NodeFilterImpl._create()},n.create_mutationRecord=function(P,k,G,j,F,U,W,J,te){return O.MutationRecordImpl._create(P,k,G,j,F,U,W,J,te)},n.create_domTokenList=function(P,k){return L.DOMTokenListImpl._create(P,k)}},function(r,n,i){var o=this&&this.__values||function(p){var v=typeof Symbol=="function"&&Symbol.iterator,y=v&&p[v],m=0;if(y)return y.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 y=s.tree_getFollowingNode(p._root,v);if(y!==null&&s.tree_isDescendantOf(p._root,y,!0)&&!s.tree_isDescendantOf(v,y,!0))return void(p._reference=y);if(y===null)return void(p._pointerBeforeReference=!1)}if(v._previousSibling===null)v._parent!==null&&(p._reference=v._parent);else{for(var m=v._previousSibling,w=s.tree_getFirstDescendantNode(v._previousSibling,!0,!1);w!==null;)w!==null&&(m=w),w=s.tree_getNextDescendantNode(v._previousSibling,w,!0,!1);p._reference=m}}}function d(p,v,y,m,w){if(c.Guard.isSlot(p)&&v==="name"&&w===null){if(m===y||m===null&&y===""||m===""&&y===null)return;p._name=m===null||m===""?"":m,l.shadowTree_assignSlotablesForATree(s.tree_rootNode(p))}}function h(p,v,y,m,w){if(c.Guard.isSlotable(p)&&v==="slot"&&w===null){if(m===y||m===null&&y===""||m===""&&y===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,y,m){v==="id"&&m===null&&(p._uniqueIdentifier=y||void 0)}n.dom_runRemovingSteps=function(p,v){},n.dom_runCloningSteps=function(p,v,y,m){},n.dom_runAdoptingSteps=function(p,v){},n.dom_runAttributeChangeSteps=function(p,v,y,m,w){var x,C;a.dom.features.slots&&(h.call(p,p,v,y,m,w),d.call(p,p,v,y,m,w)),g.call(p,p,v,m,w);try{for(var S=o(p._attributeChangeSteps),T=S.next();!T.done;T=S.next())T.value.call(p,p,v,y,m,w)}catch(_){x={error:_}}finally{try{T&&!T.done&&(C=S.return)&&C.call(S)}finally{if(x)throw x.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),y=i(27),m=i(24),w=i(56),x=i(40),C=i(60),S=i(61),T=i(82),_=i(190),E=i(85),b=i(55),D=i(15),O=i(79),L=i(21),P=i(25),k=i(81),G=i(57),j=i(45),F=i(58),U=i(5),W=i(125),J=i(126),te=i(62),le=i(43),ve=i(36).forEach,pe=G("hidden"),ye=U("toPrimitive"),Ie=le.set,Le=le.getterFor("Symbol"),be=Object.prototype,$=a.Symbol,R=s("JSON","stringify"),X=b.f,K=D.f,Z=_.f,ie=O.f,oe=k("symbols"),Te=k("op-symbols"),Oe=k("string-to-symbol-registry"),Ve=k("symbol-to-string-registry"),Ge=k("wks"),ce=a.QObject,fe=!ce||!ce.prototype||!ce.prototype.findChild,Se=l&&d(function(){return C(K({},"a",{get:function(){return K(this,"a",{value:7}).a}})).a!=7})?function(Ze,it,rt){var ut=X(be,it);ut&&delete be[it],K(Ze,it,rt),ut&&Ze!==be&&K(be,it,ut)}:K,he=function(Ze,it){var rt=oe[Ze]=C($.prototype);return Ie(rt,{type:"Symbol",tag:Ze,description:it}),l||(rt.description=it),rt},xe=u?function(Ze){return typeof Ze=="symbol"}:function(Ze){return Object(Ze)instanceof $},qe=function(Ze,it,rt){Ze===be&&qe(Te,it,rt),v(Ze);var ut=w(it,!0);return v(rt),h(oe,ut)?(rt.enumerable?(h(Ze,pe)&&Ze[pe][ut]&&(Ze[pe][ut]=!1),rt=C(rt,{enumerable:x(0,!1)})):(h(Ze,pe)||K(Ze,pe,x(1,{})),Ze[pe][ut]=!0),Se(Ze,ut,rt)):K(Ze,ut,rt)},de=function(Ze,it){v(Ze);var rt=m(it),ut=S(rt).concat(Me(rt));return ve(ut,function(Dt){l&&!ht.call(rt,Dt)||qe(Ze,Dt,rt[Dt])}),Ze},ht=function(Ze){var it=w(Ze,!0),rt=ie.call(this,it);return!(this===be&&h(oe,it)&&!h(Te,it))&&(!(rt||!h(this,it)||!h(oe,it)||h(this,pe)&&this[pe][it])||rt)},vt=function(Ze,it){var rt=m(Ze),ut=w(it,!0);if(rt!==be||!h(oe,ut)||h(Te,ut)){var Dt=X(rt,ut);return!Dt||!h(oe,ut)||h(rt,pe)&&rt[pe][ut]||(Dt.enumerable=!0),Dt}},gt=function(Ze){var it=Z(m(Ze)),rt=[];return ve(it,function(ut){h(oe,ut)||h(j,ut)||rt.push(ut)}),rt},Me=function(Ze){var it=Ze===be,rt=Z(it?Te:m(Ze)),ut=[];return ve(rt,function(Dt){!h(oe,Dt)||it&&!h(be,Dt)||ut.push(oe[Dt])}),ut};f||(P(($=function(){if(this instanceof $)throw TypeError("Symbol is not a constructor");var Ze=arguments.length&&arguments[0]!==void 0?String(arguments[0]):void 0,it=F(Ze),rt=function(ut){this===be&&rt.call(Te,ut),h(this,pe)&&h(this[pe],it)&&(this[pe][it]=!1),Se(this,it,x(1,ut))};return l&&fe&&Se(be,it,{configurable:!0,set:rt}),he(it,Ze)}).prototype,"toString",function(){return Le(this).tag}),P($,"withoutSetter",function(Ze){return he(F(Ze),Ze)}),O.f=ht,D.f=qe,b.f=vt,T.f=_.f=gt,E.f=Me,W.f=function(Ze){return he(U(Ze),Ze)},l&&(K($.prototype,"description",{configurable:!0,get:function(){return Le(this).description}}),c||P(be,"propertyIsEnumerable",ht,{unsafe:!0}))),o({global:!0,wrap:!0,forced:!f,sham:!f},{Symbol:$}),ve(S(Ge),function(Ze){J(Ze)}),o({target:"Symbol",stat:!0,forced:!f},{for:function(Ze){var it=String(Ze);if(h(Oe,it))return Oe[it];var rt=$(it);return Oe[it]=rt,Ve[rt]=it,rt},keyFor:function(Ze){if(!xe(Ze))throw TypeError(Ze+" is not a symbol");if(h(Ve,Ze))return Ve[Ze]},useSetter:function(){fe=!0},useSimple:function(){fe=!1}}),o({target:"Object",stat:!0,forced:!f,sham:!l},{create:function(Ze,it){return it===void 0?C(Ze):de(C(Ze),it)},defineProperty:qe,defineProperties:de,getOwnPropertyDescriptor:vt}),o({target:"Object",stat:!0,forced:!f},{getOwnPropertyNames:gt,getOwnPropertySymbols:Me}),o({target:"Object",stat:!0,forced:d(function(){E.f(1)})},{getOwnPropertySymbols:function(Ze){return E.f(y(Ze))}}),R&&o({target:"JSON",stat:!0,forced:!f||d(function(){var Ze=$();return R([Ze])!="[null]"||R({a:Ze})!="{}"||R(Object(Ze))!="{}"})},{stringify:function(Ze,it,rt){for(var ut,Dt=[Ze],wt=1;arguments.length>wt;)Dt.push(arguments[wt++]);if(ut=it,(p(it)||Ze!==void 0)&&!xe(Ze))return g(it)||(it=function(kt,qt){if(typeof ut=="function"&&(qt=ut.call(this,kt,qt)),!xe(qt))return qt}),Dt[1]=it,R.apply(null,Dt)}}),$.prototype[ye]||L($.prototype,ye,$.prototype.valueOf),te($,"Symbol"),j[pe]=!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 w=arguments.length<1||arguments[0]===void 0?void 0:String(arguments[0]),x=this instanceof g?new d(w):w===void 0?d():d(w);return w===""&&(h[x]=!0),x};u(g,d);var p=g.prototype=d.prototype;p.constructor=g;var v=p.toString,y=String(d("test"))=="Symbol(test)",m=/^Symbol\((.*)\)[^)]+$/;f(p,"description",{configurable:!0,get:function(){var w=l(this)?this.valueOf():this,x=v.call(w);if(c(h,w))return"";var C=y?x.slice(7,-1):x.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(y,m){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(w,x){w.__proto__=x}||function(w,x){for(var C in x)x.hasOwnProperty(C)&&(w[C]=x[C])})(y,m)},function(y,m){function w(){this.constructor=y}o(y,m),y.prototype=m===null?Object.create(m):(w.prototype=m.prototype,new w)}),s=this&&this.__values||function(y){var m=typeof Symbol=="function"&&Symbol.iterator,w=m&&y[m],x=0;if(w)return w.call(y);if(y&&typeof y.length=="number")return{next:function(){return y&&x>=y.length&&(y=void 0),{value:y&&y[x++],done:!y}}};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(y){function m(){var w=y.call(this)||this;return w._parent=null,w._firstChild=null,w._lastChild=null,w._previousSibling=null,w._nextSibling=null,w}return a(m,y),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(w){this._nodeDocumentOverride=w},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(w){return h.tree_rootNode(this,!!w&&w.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(w){w===null&&(w=""),u.Guard.isAttrNode(this)?h.attr_setAnExistingAttributeValue(this,w):u.Guard.isCharacterDataNode(this)&&h.characterData_replaceData(this,0,this._data.length,w)},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(w){w===null&&(w=""),u.Guard.isDocumentFragmentNode(this)||u.Guard.isElementNode(this)?h.node_stringReplaceAll(w,this):u.Guard.isAttrNode(this)?h.attr_setAnExistingAttributeValue(this,w):u.Guard.isCharacterDataNode(this)&&h.characterData_replaceData(this,0,h.tree_nodeLength(this),w)},enumerable:!0,configurable:!0}),m.prototype.normalize=function(){for(var w,x,C,S,T=[],_=h.tree_getFirstDescendantNode(this,!1,!1,function(ve){return u.Guard.isExclusiveTextNode(ve)});_!==null;)T.push(_),_=h.tree_getNextDescendantNode(this,_,!1,!1,function(ve){return u.Guard.isExclusiveTextNode(ve)});for(var E=0;EL;L++)if((m||L in b)&&(_=D(T=b[L],L,E),d)){if(h)k[L]=_;else if(_)switch(d){case 3:return!0;case 5:return T;case 6:return L;case 2:f.call(k,T)}else if(v)return!1}return y?-1:p||v?v:k}};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 b=typeof Symbol=="function"&&Symbol.iterator,D=b&&E[b],O=0;if(D)return D.call(E);if(E&&typeof E.length=="number")return{next:function(){return E&&O>=E.length&&(E=void 0),{value:E&&E[O++],done:!E}}};throw new TypeError(b?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__read||function(E,b){var D=typeof Symbol=="function"&&E[Symbol.iterator];if(!D)return E;var O,L,P=D.call(E),k=[];try{for(;(b===void 0||b-- >0)&&!(O=P.next()).done;)k.push(O.value)}catch(G){L={error:G}}finally{try{O&&!O.done&&(D=P.return)&&D.call(P)}finally{if(L)throw L.error}}return k},s=this&&this.__spread||function(){for(var E=[],b=0;b1)throw new l.HierarchyRequestError("A document node can only have one document element node. Document fragment to be inserted has "+le+" element nodes.");if(le===1){try{for(var Ie=o(b._children),Le=Ie.next();!Le.done;Le=Ie.next())if(Le.value._nodeType===f.NodeType.Element)throw new l.HierarchyRequestError("The document node already has a document element node.")}catch(ie){P={error:ie}}finally{try{Le&&!Le.done&&(k=Ie.return)&&k.call(Ie)}finally{if(P)throw P.error}}if(D){if(te===f.NodeType.DocumentType)throw new l.HierarchyRequestError("Cannot insert an element node before a document type node.");for(var be=D._nextSibling;be;){if(be._nodeType===f.NodeType.DocumentType)throw new l.HierarchyRequestError("Cannot insert an element node before a document type node.");be=be._nextSibling}}}}else if(J===f.NodeType.Element){try{for(var $=o(b._children),R=$.next();!R.done;R=$.next())if(R.value._nodeType===f.NodeType.Element)throw new l.HierarchyRequestError("Document already has a document element node. Node is "+E.nodeName+".")}catch(ie){G={error:ie}}finally{try{R&&!R.done&&(j=$.return)&&j.call($)}finally{if(G)throw G.error}}if(D){if(te===f.NodeType.DocumentType)throw new l.HierarchyRequestError("Cannot insert an element node before a document type node. Node is "+E.nodeName+".");for(be=D._nextSibling;be;){if(be._nodeType===f.NodeType.DocumentType)throw new l.HierarchyRequestError("Cannot insert an element node before a document type node. Node is "+E.nodeName+".");be=be._nextSibling}}}else if(J===f.NodeType.DocumentType){try{for(var X=o(b._children),K=X.next();!K.done;K=X.next())if(K.value._nodeType===f.NodeType.DocumentType)throw new l.HierarchyRequestError("Document already has a document type node. Node is "+E.nodeName+".")}catch(ie){F={error:ie}}finally{try{K&&!K.done&&(U=X.return)&&U.call(X)}finally{if(F)throw F.error}}if(D)for(var Z=D._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=b._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,b,D){C(E,b,D);var O=D;return O===E&&(O=E._nextSibling),x.document_adopt(E,b._nodeDocument),T(E,b,O),E}function T(E,b,D,O){var L,P;if(D!==null||E._nodeType===f.NodeType.DocumentFragment){var k=E._nodeType===f.NodeType.DocumentFragment?E._children.size:1;if(D!==null&&c.dom.rangeList.size!==0){var G=p.tree_index(D);try{for(var j=o(c.dom.rangeList),F=j.next();!F.done;F=j.next()){var U=F.value;U._start[0]===b&&U._start[1]>G&&(U._start[1]+=k),U._end[0]===b&&U._end[1]>G&&(U._end[1]+=k)}}catch(Le){L={error:Le}}finally{try{F&&!F.done&&(P=j.return)&&P.call(j)}finally{if(L)throw L.error}}}var W=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,[],W,null,null);for(var J=D?D._previousSibling:b._lastChild,te=D===null?-1:p.tree_index(D),le=0;leW&&le._start[1]--,le._end[0]===b&&le._end[1]>W&&le._end[1]--}}catch(Oe){O={error:Oe}}finally{try{te&&!te.done&&(L=J.return)&&L.call(J)}finally{if(O)throw O.error}}try{for(var ve=o(c.dom.rangeList),pe=ve.next();!pe.done;pe=ve.next())(le=pe.value)._start[0]===b&&le._start[1]>W&&(le._start[1]-=1),le._end[0]===b&&le._end[1]>W&&(le._end[1]-=1)}catch(Oe){P={error:Oe}}finally{try{pe&&!pe.done&&(k=ve.return)&&k.call(ve)}finally{if(P)throw P.error}}}if(c.dom.features.steps)try{for(var ye=o(v.nodeIterator_iteratorList()),Ie=ye.next();!Ie.done;Ie=ye.next()){var Le=Ie.value;Le._root._nodeDocument===E._nodeDocument&&w.dom_runNodeIteratorPreRemovingSteps(Le,E)}}catch(Oe){G={error:Oe}}finally{try{Ie&&!Ie.done&&(j=ye.return)&&j.call(ye)}finally{if(G)throw G.error}}var be=E._previousSibling,$=E._nextSibling;u.Guard.isDocumentNode(b)&&u.Guard.isElementNode(E)&&(b._documentElement=null),E._parent=null,b._children.delete(E);var R=E._previousSibling,X=E._nextSibling;E._previousSibling=null,E._nextSibling=null,R&&(R._nextSibling=X),X&&(X._previousSibling=R),R||(b._firstChild=X),X||(b._lastChild=R),c.dom.features.slots&&u.Guard.isSlotable(E)&&E._assignedSlot!==null&&y.shadowTree_isAssigned(E)&&y.shadowTree_assignSlotables(E._assignedSlot),c.dom.features.slots&&u.Guard.isShadowRoot(p.tree_rootNode(b))&&u.Guard.isSlot(b)&&d.isEmpty(b._assignedNodes)&&y.shadowTree_signalASlotChange(b),c.dom.features.slots&&p.tree_getFirstDescendantNode(E,!0,!1,function(Oe){return u.Guard.isSlot(Oe)})!==null&&(y.shadowTree_assignSlotablesForATree(p.tree_rootNode(b)),y.shadowTree_assignSlotablesForATree(E)),c.dom.features.steps&&w.dom_runRemovingSteps(E,b),c.dom.features.customElements&&u.Guard.isCustomElementNode(E)&&g.customElement_enqueueACustomElementCallbackReaction(E,"disconnectedCallback",[]);for(var K=p.tree_getFirstDescendantNode(E,!1,!0);K!==null;)c.dom.features.steps&&w.dom_runRemovingSteps(K,E),c.dom.features.customElements&&u.Guard.isCustomElementNode(K)&&g.customElement_enqueueACustomElementCallbackReaction(K,"disconnectedCallback",[]),K=p.tree_getNextDescendantNode(E,K,!1,!0);if(c.dom.features.mutationObservers)for(var Z=p.tree_getFirstAncestorNode(b,!0);Z!==null;){try{for(var ie=(F=void 0,o(Z._registeredObserverList)),oe=ie.next();!oe.done;oe=ie.next()){var Te=oe.value;Te.options.subtree&&E._registeredObserverList.push({observer:Te.observer,options:Te.options,source:Te})}}catch(Oe){F={error:Oe}}finally{try{oe&&!oe.done&&(U=ie.return)&&U.call(ie)}finally{if(F)throw F.error}}Z=p.tree_getNextAncestorNode(b,Z,!0)}c.dom.features.mutationObservers&&(D||m.observer_queueTreeMutationRecord(b,[],[E],be,$)),c.dom.features.steps&&u.Guard.isTextNode(E)&&w.dom_runChildTextContentChangeSteps(b)}n.mutation_ensurePreInsertionValidity=C,n.mutation_preInsert=S,n.mutation_insert=T,n.mutation_append=function(E,b){return S(E,b,null)},n.mutation_replace=function(E,b,D){var O,L,P,k,G,j,F,U;if(D._nodeType!==f.NodeType.Document&&D._nodeType!==f.NodeType.DocumentFragment&&D._nodeType!==f.NodeType.Element)throw new l.HierarchyRequestError("Only document, document fragment and element nodes can contain child nodes. Parent node is "+D.nodeName+".");if(p.tree_isHostIncludingAncestorOf(D,b,!0))throw new l.HierarchyRequestError("The node to be inserted cannot be an ancestor of parent node. Node is "+b.nodeName+", parent node is "+D.nodeName+".");if(E._parent!==D)throw new l.NotFoundError("The reference child node cannot be found under parent node. Child node is "+E.nodeName+", parent node is "+D.nodeName+".");if(b._nodeType!==f.NodeType.DocumentFragment&&b._nodeType!==f.NodeType.DocumentType&&b._nodeType!==f.NodeType.Element&&b._nodeType!==f.NodeType.Text&&b._nodeType!==f.NodeType.ProcessingInstruction&&b._nodeType!==f.NodeType.CData&&b._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 "+b.nodeName+".");if(b._nodeType===f.NodeType.Text&&D._nodeType===f.NodeType.Document)throw new l.HierarchyRequestError("Cannot insert a text node as a child of a document node. Node is "+b.nodeName+".");if(b._nodeType===f.NodeType.DocumentType&&D._nodeType!==f.NodeType.Document)throw new l.HierarchyRequestError("A document type node can only be inserted under a document node. Parent node is "+D.nodeName+".");if(D._nodeType===f.NodeType.Document){if(b._nodeType===f.NodeType.DocumentFragment){var W=0;try{for(var J=o(b._children),te=J.next();!te.done;te=J.next()){var le=te.value;if(le._nodeType===f.NodeType.Element)W++;else if(le._nodeType===f.NodeType.Text)throw new l.HierarchyRequestError("Cannot insert text a node as a child of a document node. Node is "+le.nodeName+".")}}catch(Te){O={error:Te}}finally{try{te&&!te.done&&(L=J.return)&&L.call(J)}finally{if(O)throw O.error}}if(W>1)throw new l.HierarchyRequestError("A document node can only have one document element node. Document fragment to be inserted has "+W+" element nodes.");if(W===1){try{for(var ve=o(D._children),pe=ve.next();!pe.done;pe=ve.next())if((R=pe.value)._nodeType===f.NodeType.Element&&R!==E)throw new l.HierarchyRequestError("The document node already has a document element node.")}catch(Te){P={error:Te}}finally{try{pe&&!pe.done&&(k=ve.return)&&k.call(ve)}finally{if(P)throw P.error}}for(var ye=E._nextSibling;ye;){if(ye._nodeType===f.NodeType.DocumentType)throw new l.HierarchyRequestError("Cannot insert an element node before a document type node.");ye=ye._nextSibling}}}else if(b._nodeType===f.NodeType.Element){try{for(var Ie=o(D._children),Le=Ie.next();!Le.done;Le=Ie.next())if((R=Le.value)._nodeType===f.NodeType.Element&&R!==E)throw new l.HierarchyRequestError("Document already has a document element node. Node is "+b.nodeName+".")}catch(Te){G={error:Te}}finally{try{Le&&!Le.done&&(j=Ie.return)&&j.call(Ie)}finally{if(G)throw G.error}}for(ye=E._nextSibling;ye;){if(ye._nodeType===f.NodeType.DocumentType)throw new l.HierarchyRequestError("Cannot insert an element node before a document type node. Node is "+b.nodeName+".");ye=ye._nextSibling}}else if(b._nodeType===f.NodeType.DocumentType){try{for(var be=o(D._children),$=be.next();!$.done;$=be.next()){var R;if((R=$.value)._nodeType===f.NodeType.DocumentType&&R!==E)throw new l.HierarchyRequestError("Document already has a document type node. Node is "+b.nodeName+".")}}catch(Te){F={error:Te}}finally{try{$&&!$.done&&(U=be.return)&&U.call(be)}finally{if(F)throw F.error}}for(var X=E._previousSibling;X;){if(X._nodeType===f.NodeType.Element)throw new l.HierarchyRequestError("Cannot insert a document type node before an element node. Node is "+b.nodeName+".");X=X._previousSibling}}}var K=E._nextSibling;K===b&&(K=b._nextSibling);var Z=E._previousSibling;x.document_adopt(b,D._nodeDocument);var ie=[];E._parent!==null&&(ie.push(E),_(E,E._parent,!0));var oe=[];return b._nodeType===f.NodeType.DocumentFragment?oe=Array.from(b._children):oe.push(b),T(b,D,K,!0),c.dom.features.mutationObservers&&m.observer_queueTreeMutationRecord(D,oe,ie,Z,K),E},n.mutation_replaceAll=function(E,b){var D,O;E!==null&&x.document_adopt(E,b._nodeDocument);var L=Array.from(b._children),P=[];E&&E._nodeType===f.NodeType.DocumentFragment?P=Array.from(E._children):E!==null&&P.push(E);try{for(var k=o(L),G=k.next();!G.done;G=k.next())_(G.value,b,!0)}catch(j){D={error:j}}finally{try{G&&!G.done&&(O=k.return)&&O.call(k)}finally{if(D)throw D.error}}E!==null&&T(E,b,null,!0),c.dom.features.mutationObservers&&m.observer_queueTreeMutationRecord(b,P,L,null,null)},n.mutation_preRemove=function(E,b){if(E._parent!==b)throw new l.NotFoundError("The child node cannot be found under parent node. Child node is "+E.nodeName+", parent node is "+b.nodeName+".");return _(E,b),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],y=0;if(v)return v.call(g);if(g&&typeof g.length=="number")return{next:function(){return g&&y>=g.length&&(g=void 0),{value:g&&g[y++],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 y,m,w=v.call(g),x=[];try{for(;(p===void 0||p-- >0)&&!(y=w.next()).done;)x.push(y.value)}catch(C){m={error:C}}finally{try{y&&!y.done&&(v=w.return)&&v.call(w)}finally{if(m)throw m.error}}return x},s=this&&this.__spread||function(){for(var g=[],p=0;p/g,">");this.text(y)},g.prototype._serializeDocumentFragmentNS=function(p,v,y,m,w){var x,C;try{for(var S=o(p.childNodes),T=S.next();!T.done;T=S.next()){var _=T.value;this._serializeNodeNS(_,v,y,m,w)}}catch(E){x={error:E}}finally{try{T&&!T.done&&(C=S.return)&&C.call(S)}finally{if(x)throw x.error}}},g.prototype._serializeDocumentFragment=function(p,v){var y,m;try{for(var w=o(p._children),x=w.next();!x.done;x=w.next()){var C=x.value;this._serializeNode(C,v)}}catch(S){y={error:S}}finally{try{x&&!x.done&&(m=w.return)&&m.call(w)}finally{if(y)throw y.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,y,m,w,x){var C,S,T=[],_=x?new l.LocalNameSet:void 0;try{for(var E=o(p.attributes),b=E.next();!b.done;b=E.next()){var D=b.value;if(x||w||D.namespaceURI!==null){if(x&&_&&_.has(D.namespaceURI,D.localName))throw new Error("Element contains duplicate attributes (well-formed required).");x&&_&&_.set(D.namespaceURI,D.localName);var O=D.namespaceURI,L=null;if(O!==null)if(L=v.get(D.prefix,O),O===u.namespace.XMLNS){if(D.value===u.namespace.XML||D.prefix===null&&w||D.prefix!==null&&(!(D.localName in m)||m[D.localName]!==D.value)&&v.has(D.localName,D.value))continue;if(x&&D.value===u.namespace.XMLNS)throw new Error("XMLNS namespace is reserved (well-formed required).");if(x&&D.value==="")throw new Error("Namespace prefix declarations cannot be used to undeclare a namespace (well-formed required).");D.prefix==="xmlns"&&(L="xmlns")}else L===null&&(L=D.prefix===null||v.hasPrefix(D.prefix)&&!v.has(D.prefix,O)?this._generatePrefix(O,v,y):D.prefix,T.push([null,"xmlns",L,this._serializeAttributeValue(O,x)]));if(x&&(D.localName.indexOf(":")!==-1||!d.xml_isName(D.localName)||D.localName==="xmlns"&&O===null))throw new Error("Attribute local name contains invalid characters (well-formed required).");T.push([O,L,D.localName,this._serializeAttributeValue(D.value,x)])}else T.push([null,null,D.localName,this._serializeAttributeValue(D.value,x)])}}catch(P){C={error:P}}finally{try{b&&!b.done&&(S=E.return)&&S.call(E)}finally{if(C)throw C.error}}return T},g.prototype._serializeAttributes=function(p,v){var y,m,w=[],x=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&&x&&T.localName in x)throw new Error("Element contains duplicate attributes (well-formed required).");if(v&&x&&(x[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).");w.push([null,null,T.localName,this._serializeAttributeValue(T.value,v)])}else w.push([null,null,T.localName,this._serializeAttributeValue(T.value,v)])}}catch(_){y={error:_}}finally{try{S&&!S.done&&(m=C.return)&&m.call(C)}finally{if(y)throw y.error}}return w},g.prototype._recordNamespaceInformation=function(p,v,y){var m,w,x=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){x=T.value;continue}var b=T.localName,D=T.value;if(D===u.namespace.XML||(D===""&&(D=null),v.has(b,D)))continue;v.set(b,D),y[b]=D||""}}}catch(O){m={error:O}}finally{try{S&&!S.done&&(w=C.return)&&w.call(C)}finally{if(m)throw m.error}}return x},g.prototype._generatePrefix=function(p,v,y){var m="ns"+y.value.toString();return y.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 y=typeof Symbol=="function"&&Symbol.iterator,m=y&&v[y],w=0;if(m)return m.call(v);if(v&&typeof v.length=="number")return{next:function(){return v&&w>=v.length&&(v=void 0),{value:v&&v[w++],done:!v}}};throw new TypeError(y?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__read||function(v,y){var m=typeof Symbol=="function"&&v[Symbol.iterator];if(!m)return v;var w,x,C=m.call(v),S=[];try{for(;(y===void 0||y-- >0)&&!(w=C.next()).done;)S.push(w.value)}catch(T){x={error:T}}finally{try{w&&!w.done&&(m=C.return)&&m.call(C)}finally{if(x)throw x.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,y,m,w,x=s.dom.window;x._mutationObserverMicrotaskQueued=!1;var C=l.set.clone(x._mutationObservers),S=l.set.clone(x._signalSlots);l.set.empty(x._signalSlots);var T=function(L){var P=l.list.clone(L._recordQueue);l.list.empty(L._recordQueue);for(var k=0;k"+y+"<\/script>"},v=function(){try{o=document.domain&&new ActiveXObject("htmlfile")}catch{}var y,m;v=o?function(x){x.write(p("")),x.close();var C=x.parentWindow.Object;return x=null,C}(o):((m=u("iframe")).style.display="none",f.appendChild(m),m.src="javascript:",(y=m.contentWindow.document).open(),y.write(p("document.F=Object")),y.close(),y.F);for(var w=c.length;w--;)delete v.prototype[c[w]];return v()};l[h]=!0,r.exports=Object.create||function(y,m){var w;return y!==null?(g.prototype=a(y),w=new g,g.prototype=null,w[h]=y):w=v(),m===void 0?w:s(w,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,y,m,w,x,C;if(h.length===0)return{};for(var S={},T=!1,_=0,E=0,b=0,D=0,O=0;O2)try{for(var C=s(h),S=C.next();!S.done;S=C.next()){var T=S.value;g[v+(m++).toString()]=T}}catch(_){w={error:_}}finally{try{S&&!S.done&&(x=C.return)&&x.call(C)}finally{if(w)throw w.error}}else g[y>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 y=this._currentList[this._currentList.length-1];this._isElementNode(y,h)?y[h].length!==0&&c.isArray(y[h][0])?y[h].push(v):y[h]=[y[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 y=this._currentList[this._currentList.length-1];this._isAttrNode(y)?y["@"][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(y){g={error:y}}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],y=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:y,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=y.length&&(y=void 0),{value:y&&y[x++],done:!y}}};throw new TypeError(m?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__read||function(y,m){var w=typeof Symbol=="function"&&y[Symbol.iterator];if(!w)return y;var x,C,S=w.call(y),T=[];try{for(;(m===void 0||m-- >0)&&!(x=S.next()).done;)T.push(x.value)}catch(_){C={error:_}}finally{try{x&&!x.done&&(w=S.return)&&w.call(S)}finally{if(C)throw C.error}}return T},s=this&&this.__spread||function(){for(var y=[],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,y=p.BUGGY_SAFARI_ITERATORS,m=d("iterator"),w=function(){return this};r.exports=function(x,C,S,T,_,E,b){a(S,C,T);var D,O,L,P=function(J){if(J===_&&U)return U;if(!y&&J in j)return j[J];switch(J){case"keys":case"values":case"entries":return function(){return new S(this,J)}}return function(){return new S(this)}},k=C+" Iterator",G=!1,j=x.prototype,F=j[m]||j["@@iterator"]||_&&j[_],U=!y&&F||P(_),W=C=="Array"&&j.entries||F;if(W&&(D=s(W.call(new x)),v!==Object.prototype&&D.next&&(h||s(D)===v||(c?c(D,v):typeof D[m]!="function"&&f(D,m,w)),l(D,k,!0,!0),h&&(g[k]=w))),_=="values"&&F&&F.name!=="values"&&(G=!0,U=function(){return F.call(this)}),h&&!b||j[m]===U||f(j,m,U),g[C]=U,_)if(O={values:P("values"),keys:E?U:P("keys"),entries:P("entries")},b)for(L in O)(y||G||!(L in j))&&u(j,L,O[L]);else o({target:C,proto:!0,forced:y||G},O);return O}},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}),y=d("species"),m=[].slice,w=Math.max;o({target:"Array",proto:!0,forced:!p||!v},{slice:function(x,C){var S,T,_,E=f(this),b=l(E.length),D=c(x,b),O=c(C===void 0?b:C,b);if(s(E)&&(typeof(S=E.constructor)!="function"||S!==Array&&!s(S.prototype)?a(S)&&(S=S[y])===null&&(S=void 0):S=void 0,S===Array||S===void 0))return m.call(E,D,O);for(T=new(S===void 0?Array:S)(w(O-D,0)),_=0;D0&&(!x.multiline||x.multiline&&p[x.lastIndex-1]!==` -`)&&(T="(?: "+T+")",E=" "+E,_++),y=new RegExp("^(?:"+T+")",S)),g&&(y=new RegExp("^"+T+"$(?!\\s)",S)),d&&(v=x.lastIndex),m=l.call(C?y:x,E),C?m?(m.input=m.input.slice(_),m[0]=m[0].slice(_),m.index=x.lastIndex,x.lastIndex+=m[0].length):x.lastIndex=0:d&&m&&(x.lastIndex=x.global?m.index+m[0].length:v),g&&m&&m.length>1&&f.call(m[0],y,function(){for(w=1;w]*>)/g,y=/\$([$&'`]|\d\d?)/g;o("replace",2,function(m,w,x,C){var S=C.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,T=C.REPLACE_KEEPS_$0,_=S?"$":"$0";return[function(b,D){var I=f(this),P=b==null?void 0:b[m];return P!==void 0?P.call(b,I,D):w.call(String(I),b,D)},function(b,D){if(!S&&T||typeof D=="string"&&D.indexOf(_)===-1){var I=x(w,b,this,D);if(I.done)return I.value}var P=a(b),M=String(this),L=typeof D=="function";L||(D=String(D));var B=P.global;if(B){var j=P.unicode;P.lastIndex=0}for(var V=[];;){var F=d(P,M);if(F===null||(V.push(F),!B))break;String(F[0])===""&&(P.lastIndex=u(M,c(P.lastIndex),j))}for(var G,X="",ne=0,ue=0;ue=ne&&(X+=M.slice(ne,ge)+H,ne=ge+me.length)}return X+M.slice(ne)}];function E(b,D,I,P,M,L){var B=I+b.length,j=P.length,V=y;return M!==void 0&&(M=s(M),V=v),w.call(L,V,function(F,G){var X;switch(G.charAt(0)){case"$":return"$";case"&":return b;case"`":return D.slice(0,I);case"'":return D.slice(B);case"<":X=M[G.slice(1,-1)];break;default:var ne=+G;if(ne===0)return F;if(ne>j){var ue=p(ne/10);return ue===0?F:ue<=j?P[ue-1]===void 0?G.charAt(1):P[ue-1]+G.charAt(1):F}X=P[ne-1]}return X===void 0?"":X})}})},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=D.length&&(D=void 0),{value:D&&D[M++],done:!D}}};throw new TypeError(I?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__read||function(D,I){var P=typeof Symbol=="function"&&D[Symbol.iterator];if(!P)return D;var M,L,B=P.call(D),j=[];try{for(;(I===void 0||I-- >0)&&!(M=B.next()).done;)j.push(M.value)}catch(V){L={error:V}}finally{try{M&&!M.done&&(P=B.return)&&P.call(B)}finally{if(L)throw L.error}}return j},s=this&&this.__spread||function(){for(var D=[],I=0;I=0;_e--)if((Ge=oe[_e]).shadowAdjustedTarget!==null){ae=Ge;break}if(ae!==null)if(f.Guard.isNode(ae.shadowAdjustedTarget)&&f.Guard.isShadowRoot(g.tree_rootNode(ae.shadowAdjustedTarget,!0)))F=!0;else if(f.Guard.isNode(ae.relatedTarget)&&f.Guard.isShadowRoot(g.tree_rootNode(ae.relatedTarget,!0)))F=!0;else for(var Oe=0;Oe=0;_e--)(Ge=oe[_e]).shadowAdjustedTarget!==null?D._eventPhase=l.EventPhase.AtTarget:D._eventPhase=l.EventPhase.Capturing,C(Ge,D,"capturing",M);for(_e=0;_e0&&(V=L[B-1]).shadowAdjustedTarget!==null)&&(I._target=V.shadowAdjustedTarget)}if(I._relatedTarget=D.relatedTarget,I._touchTargetList=D.touchTargetList,!I._stopPropagationFlag){I._currentTarget=D.invocationTarget;var F=I._currentTarget._eventListenerList,G=new(Array.bind.apply(Array,s([void 0],F)));if(!S(I,G,P,D,M)&&I._isTrusted){var X=I._type;X==="animationend"?I._type="webkitAnimationEnd":X==="animationiteration"?I._type="webkitAnimationIteration":X==="animationstart"?I._type="webkitAnimationStart":X==="transitionend"&&(I._type="webkitTransitionEnd"),S(I,G,P,D,M),I._type=X}}}function S(D,I,P,M,L){L===void 0&&(L={value:!1});for(var B=!1,j=0;j=x.length&&(x=void 0),{value:x&&x[T++],done:!x}}};throw new TypeError(C?"Object is not iterable.":"Symbol.iterator is not defined.")},c=this&&this.__read||function(x,C){var S=typeof Symbol=="function"&&x[Symbol.iterator];if(!S)return x;var T,_,E=S.call(x),b=[];try{for(;(C===void 0||C-- >0)&&!(T=E.next()).done;)b.push(T.value)}catch(D){_={error:D}}finally{try{T&&!T.done&&(S=E.return)&&S.call(E)}finally{if(_)throw _.error}}return b};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),y=i(0),m=i(12),w=function(x){function C(){var S=x.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,x),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=y.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 b=E.value;if(h.Guard.isDocumentTypeNode(b))return b}}catch(D){S={error:D}}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 y.node_listOfElementsWithQualifiedName(S,this)},C.prototype.getElementsByTagNameNS=function(S,T){return y.node_listOfElementsWithNamespace(S,T,this)},C.prototype.getElementsByClassName=function(S){return y.node_listOfElementsWithClassNames(S,this)},C.prototype.createElement=function(S,T){if(!y.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 y.element_createAnElement(this,S,E,null,_,!0)},C.prototype.createElementNS=function(S,T,_){return y.document_internalCreateElementNS(this,S,T,_)},C.prototype.createDocumentFragment=function(){return y.create_documentFragment(this)},C.prototype.createTextNode=function(S){return y.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 y.create_cdataSection(this,S)},C.prototype.createComment=function(S){return y.create_comment(this,S)},C.prototype.createProcessingInstruction=function(S,T){if(!y.xml_isName(S))throw new u.InvalidCharacterError;if(T.indexOf("?>")!==-1)throw new u.InvalidCharacterError;return y.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 y.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 y.document_adopt(S,this),S},C.prototype.createAttribute=function(S){if(!y.xml_isName(S))throw new u.InvalidCharacterError;return this._type==="html"&&(S=S.toLowerCase()),y.create_attr(this,S)},C.prototype.createAttributeNS=function(S,T){var _=c(y.namespace_validateAndExtract(S,T),3),E=_[0],b=_[1],D=_[2],I=y.create_attr(this,D);return I._namespace=E,I._namespacePrefix=b,I},C.prototype.createEvent=function(S){return y.event_createLegacyEvent(S)},C.prototype.createRange=function(){var S=y.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=y.create_nodeIterator(S,S,!0);return E._whatToShow=T,E._iteratorCollection=y.create_nodeList(S),g.isFunction(_)?(E._filter=y.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=y.create_treeWalker(S,S);return E._whatToShow=T,g.isFunction(_)?(E._filter=y.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[w++],done:!v}}};throw new TypeError(y?"Object is not iterable.":"Symbol.iterator is not defined.")},c=this&&this.__read||function(v,y){var m=typeof Symbol=="function"&&v[Symbol.iterator];if(!m)return v;var w,x,C=m.call(v),S=[];try{for(;(y===void 0||y-- >0)&&!(w=C.next()).done;)S.push(w.value)}catch(T){x={error:T}}finally{try{w&&!w.done&&(m=C.return)&&m.call(C)}finally{if(x)throw x.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 y(){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(y,v),Object.defineProperty(y.prototype,"namespaceURI",{get:function(){return this._namespace},enumerable:!0,configurable:!0}),Object.defineProperty(y.prototype,"prefix",{get:function(){return this._namespacePrefix},enumerable:!0,configurable:!0}),Object.defineProperty(y.prototype,"localName",{get:function(){return this._localName},enumerable:!0,configurable:!0}),Object.defineProperty(y.prototype,"tagName",{get:function(){return this._htmlUppercasedQualifiedName},enumerable:!0,configurable:!0}),Object.defineProperty(y.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(y.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(y.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(y.prototype,"slot",{get:function(){return h.element_getAnAttributeValue(this,"slot")},set:function(m){h.element_setAnAttributeValue(this,"slot",m)},enumerable:!0,configurable:!0}),y.prototype.hasAttributes=function(){return this._attributeList.length!==0},Object.defineProperty(y.prototype,"attributes",{get:function(){return this._attributeList},enumerable:!0,configurable:!0}),y.prototype.getAttributeNames=function(){var m,w,x=[];try{for(var C=s(this._attributeList),S=C.next();!S.done;S=C.next()){var T=S.value;x.push(T._qualifiedName)}}catch(_){m={error:_}}finally{try{S&&!S.done&&(w=C.return)&&w.call(C)}finally{if(m)throw m.error}}return x},y.prototype.getAttribute=function(m){var w=h.element_getAnAttributeByName(m,this);return w?w._value:null},y.prototype.getAttributeNS=function(m,w){var x=h.element_getAnAttributeByNamespaceAndLocalName(m,w,this);return x?x._value:null},y.prototype.setAttribute=function(m,w){if(!h.xml_isName(m))throw new u.InvalidCharacterError;this._namespace===d.namespace.HTML&&this._nodeDocument._type==="html"&&(m=m.toLowerCase());for(var x=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,y="";try{for(var m=s(f.text_contiguousTextNodes(this,!0)),w=m.next();!w.done;w=m.next())y+=w.value._data}catch(x){p={error:x}}finally{try{w&&!w.done&&(v=m.return)&&v.call(m)}finally{if(p)throw p.error}}return y},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 y=new g(v);return y._nodeDocument=p,y},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,y=g;for(p=h-1;p>=0;)u[p].rootOfClosedTree&&v++,v<=y&&f.unshift(u[p].invocationTarget),u[p].slotInClosedTree&&--v0)&&!(x=S.next()).done;)T.push(x.value)}catch(_){C={error:_}}finally{try{x&&!x.done&&(w=S.return)&&w.call(S)}finally{if(C)throw C.error}}return T},a=this&&this.__values||function(y){var m=typeof Symbol=="function"&&Symbol.iterator,w=m&&y[m],x=0;if(w)return w.call(y);if(y&&typeof y.length=="number")return{next:function(){return y&&x>=y.length&&(y=void 0),{value:y&&y[x++],done:!y}}};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(y,m){return f.ElementImpl},n.document_internalCreateElementNS=function(y,m,w,x){var C=o(h.namespace_validateAndExtract(m,w),3),S=C[0],T=C[1],_=C[2],E=null;return x!==void 0&&(E=l.isString(x)?x:x.is),p.element_createAnElement(y,_,S,T,E,!0)},n.document_adopt=function(y,m){var w,x;if(y._nodeDocument!==m||y._parent!==null){var C=y._nodeDocument;if(y._parent&&v.mutation_remove(y,y._parent),m!==C)for(var S=d.tree_getFirstDescendantNode(y,!0,!0);S!==null;){if(S._nodeDocument=m,c.Guard.isElementNode(S))try{for(var T=(w=void 0,a(S._attributeList._asArray())),_=T.next();!_.done;_=T.next())_.value._nodeDocument=m}catch(E){w={error:E}}finally{try{_&&!_.done&&(x=T.return)&&x.call(T)}finally{if(w)throw w.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(y,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,y,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 w=d._data.substring(0,h)+p+d._data.substring(h+g);d._data=w;try{for(var x=o(a.dom.rangeList),C=x.next();!C.done;C=x.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&&(y=x.return)&&y.call(x)}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),y=[];try{for(;(d===void 0||d-- >0)&&!(g=v.next()).done;)y.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 y},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,y;try{for(var m=s(d),w=m.next();!w.done;w=m.next()){var x=w.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(_===x){C=!0;break}}else if(_.toUpperCase()===x.toUpperCase()){C=!0;break}}}catch(E){v={error:E}}finally{try{T&&!T.done&&(y=S.return)&&y.call(S)}finally{if(v)throw v.error}}if(!C)return!1}}catch(E){g={error:E}}finally{try{w&&!w.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 y=i(264),m=i(155);n.DocumentType=m.DocumentTypeImpl;var w=i(6);n.dom=w.dom;var x=i(148);n.DOMImplementation=x.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 b=i(265);n.MutationObserver=b.MutationObserverImpl;var D=i(169);n.MutationRecord=D.MutationRecordImpl;var I=i(164);n.NamedNodeMap=I.NamedNodeMapImpl;var P=i(168);n.NodeFilter=P.NodeFilterImpl;var M=i(34);n.Node=M.NodeImpl;var L=i(166);n.NodeIterator=L.NodeIteratorImpl;var B=i(162);n.NodeList=B.NodeListImpl;var j=i(163);n.NodeListStatic=j.NodeListStaticImpl;var V=i(266),F=i(267),G=i(268),X=i(160);n.ProcessingInstruction=X.ProcessingInstructionImpl;var ne=i(165);n.Range=ne.RangeImpl;var ue=i(156);n.ShadowRoot=ue.ShadowRootImpl;var me=i(269),ge=i(270);n.StaticRange=ge.StaticRangeImpl;var ye=i(101);n.Text=ye.TextImpl;var Ie=i(103);n.Traverser=Ie.TraverserImpl;var Pe=i(167);n.TreeWalker=Pe.TreeWalkerImpl;var Ee=i(149);n.Window=Ee.WindowImpl;var H=i(151);n.XMLDocument=H.XMLDocumentImpl,o.applyMixin(S.ElementImpl,d.ChildNodeImpl),o.applyMixin(u.CharacterDataImpl,d.ChildNodeImpl),o.applyMixin(m.DocumentTypeImpl,d.ChildNodeImpl),o.applyMixin(v.DocumentImpl,y.DocumentOrShadowRootImpl),o.applyMixin(ue.ShadowRootImpl,y.DocumentOrShadowRootImpl),o.applyMixin(S.ElementImpl,V.NonDocumentTypeChildNodeImpl),o.applyMixin(u.CharacterDataImpl,V.NonDocumentTypeChildNodeImpl),o.applyMixin(v.DocumentImpl,F.NonElementParentNodeImpl),o.applyMixin(p.DocumentFragmentImpl,F.NonElementParentNodeImpl),o.applyMixin(v.DocumentImpl,G.ParentNodeImpl),o.applyMixin(p.DocumentFragmentImpl,G.ParentNodeImpl),o.applyMixin(S.ElementImpl,G.ParentNodeImpl),o.applyMixin(ye.TextImpl,me.SlotableImpl),o.applyMixin(S.ElementImpl,me.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,y){if(s.isFunction(y)&&(y=y.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(y)||s.isSet(y))&&s.isEmpty(y))){if((s.isMap(y)||s.isObject(y))&&s.isEmpty(y))p=h.element(u,void 0,h.sanitize(v))||p;else if(g.keepNullNodes||y!=null)if(s.isArray(y)||s.isSet(y))s.forEachArray(y,function(S){var T={};T[v]=S,p=h.parse(u,T)},h);else if(s.isMap(y)||s.isObject(y))(m=h.element(u,void 0,h.sanitize(v)))&&(p=m,h.parse(m,y));else if(y!=null&&y!==""){var m;(m=h.element(u,void 0,h.sanitize(v)))&&(p=m,h.text(m,h._decodeText(h.sanitize(y))))}else p=h.element(u,void 0,h.sanitize(v))||p}}else if(s.isString(y)){var w=y.indexOf(" "),x=w===-1?y:y.substr(0,w),C=w===-1?"":y.substr(w+1);p=h.instruction(u,h.sanitize(x),h.sanitize(C))||p}else s.isArray(y)||s.isSet(y)?s.forEachArray(y,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(y,function(S,T){return p=h.instruction(u,h.sanitize(S),h.sanitize(T))||p},h);else s.isArray(y)||s.isSet(y)?s.forEachArray(y,function(S){return p=h.comment(u,h.sanitize(S))||p},h):p=h.comment(u,h.sanitize(y))||p;else s.isArray(y)||s.isSet(y)?s.forEachArray(y,function(S){return p=h.cdata(u,h.sanitize(S))||p},h):p=h.cdata(u,h.sanitize(y))||p;else p=s.isMap(y)||s.isObject(y)?h.parse(u,y):h.text(u,h._decodeText(h.sanitize(y)))||p;else if(v===g.convert.att){if(s.isArray(y)||s.isSet(y))throw new Error("Invalid attribute: "+y.toString()+". "+u._debugInfo());s.forEachObject(y,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(y)))||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(y,m,w){var x=y.indexOf("Map")!==-1,C=y.indexOf("Weak")!==-1,S=x?"set":"add",T=a[y],_=T&&T.prototype,E=T,b={},D=function(j){var V=_[j];c(_,j,j=="add"?function(F){return V.call(this,F===0?0:F),this}:j=="delete"?function(F){return!(C&&!d(F))&&V.call(this,F===0?0:F)}:j=="get"?function(F){return C&&!d(F)?void 0:V.call(this,F===0?0:F)}:j=="has"?function(F){return!(C&&!d(F))&&V.call(this,F===0?0:F)}:function(F,G){return V.call(this,F===0?0:F,G),this})};if(s(y,typeof T!="function"||!(C||_.forEach&&!h(function(){new T().entries().next()}))))E=w.getConstructor(m,y,x,S),l.REQUIRED=!0;else if(s(y,!0)){var I=new E,P=I[S](C?{}:-0,1)!=I,M=h(function(){I.has(1)}),L=g(function(j){new T(j)}),B=!C&&h(function(){for(var j=new T,V=5;V--;)j[S](V,V);return!j.has(-0)});L||((E=m(function(j,V){u(j,E,y);var F=v(new T,j,E);return V!=null&&f(V,F[S],F,x),F})).prototype=_,_.constructor=E),(M||B)&&(D("delete"),D("has"),x&&D("get")),(B||P)&&D(S),C&&_.clear&&delete _.clear}return b[y]=E,o({global:!0,forced:E!=T},b),p(E,y),C||w.setStrong(E,y,x),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,y){if(!a(v))return typeof v=="symbol"?v:(typeof v=="string"?"S":"P")+v;if(!s(v,u)){if(!h(v))return"F";if(!y)return"E";g(v)}return v[u].objectID},getWeakData:function(v,y){if(!s(v,u)){if(!h(v))return!0;if(!y)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 y,m,w,x,C,S,T,_=c(h,g,p?2:1);if(v)y=d;else{if(typeof(m=l(d))!="function")throw TypeError("Target is not iterable");if(a(m)){for(w=0,x=s(d.length);x>w;w++)if((C=p?_(o(T=d[w])[0],T[1]):_(d[w]))&&C instanceof u)return C;return new u(!1)}y=m.call(d)}for(S=y.next;!(T=S.call(y)).done;)if(typeof(C=f(y,_,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,y=p.getterFor;r.exports={getConstructor:function(m,w,x,C){var S=m(function(b,D){l(b,S,w),v(b,{type:w,index:a(null),first:void 0,last:void 0,size:0}),h||(b.size=0),D!=null&&f(D,b[C],b,x)}),T=y(w),_=function(b,D,I){var P,M,L=T(b),B=E(b,D);return B?B.value=I:(L.last=B={index:M=g(D,!0),key:D,value:I,previous:P=L.last,next:void 0,removed:!1},L.first||(L.first=B),P&&(P.next=B),h?L.size++:b.size++,M!=="F"&&(L.index[M]=B)),b},E=function(b,D){var I,P=T(b),M=g(D);if(M!=="F")return P.index[M];for(I=P.first;I;I=I.next)if(I.key==D)return I};return s(S.prototype,{clear:function(){for(var b=T(this),D=b.index,I=b.first;I;)I.removed=!0,I.previous&&(I.previous=I.previous.next=void 0),delete D[I.index],I=I.next;b.first=b.last=void 0,h?b.size=0:this.size=0},delete:function(b){var D=T(this),I=E(this,b);if(I){var P=I.next,M=I.previous;delete D.index[I.index],I.removed=!0,M&&(M.next=P),P&&(P.previous=M),D.first==I&&(D.first=P),D.last==I&&(D.last=M),h?D.size--:this.size--}return!!I},forEach:function(b){for(var D,I=T(this),P=c(b,arguments.length>1?arguments[1]:void 0,3);D=D?D.next:I.first;)for(P(D.value,D.key,this);D&&D.removed;)D=D.previous},has:function(b){return!!E(this,b)}}),s(S.prototype,x?{get:function(b){var D=E(this,b);return D&&D.value},set:function(b,D){return _(this,b===0?0:b,D)}}:{add:function(b){return _(this,b=b===0?0:b,b)}}),h&&o(S.prototype,"size",{get:function(){return T(this).size}}),S},setStrong:function(m,w,x){var C=w+" Iterator",S=y(w),T=y(C);u(m,w,function(_,E){v(this,{type:C,target:_,state:S(_),kind:E,last:void 0})},function(){for(var _=T(this),E=_.kind,b=_.last;b&&b.removed;)b=b.previous;return _.target&&(_.last=b=b?b.next:_.state.first)?E=="keys"?{value:b.key,done:!1}:E=="values"?{value:b.value,done:!1}:{value:[b.key,b.value],done:!1}:(_.target=void 0,{value:void 0,done:!0})},x?"entries":"values",!x,!0),d(w)}}},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 y=String(f(this));l(v);var m=arguments.length>1?arguments[1]:void 0,w=c(y.length),x=m===void 0?w:g(c(m),w),C=String(v);return h?h.call(y,C,x):y.slice(x-C.length,x)===C}})},function(r,n,i){(function(o){/*! +`)&&(T="(?: "+T+")",E=" "+E,_++),y=new RegExp("^(?:"+T+")",S)),g&&(y=new RegExp("^"+T+"$(?!\\s)",S)),d&&(v=x.lastIndex),m=l.call(C?y:x,E),C?m?(m.input=m.input.slice(_),m[0]=m[0].slice(_),m.index=x.lastIndex,x.lastIndex+=m[0].length):x.lastIndex=0:d&&m&&(x.lastIndex=x.global?m.index+m[0].length:v),g&&m&&m.length>1&&f.call(m[0],y,function(){for(w=1;w]*>)/g,y=/\$([$&'`]|\d\d?)/g;o("replace",2,function(m,w,x,C){var S=C.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,T=C.REPLACE_KEEPS_$0,_=S?"$":"$0";return[function(b,D){var O=f(this),L=b==null?void 0:b[m];return L!==void 0?L.call(b,O,D):w.call(String(O),b,D)},function(b,D){if(!S&&T||typeof D=="string"&&D.indexOf(_)===-1){var O=x(w,b,this,D);if(O.done)return O.value}var L=a(b),P=String(this),k=typeof D=="function";k||(D=String(D));var G=L.global;if(G){var j=L.unicode;L.lastIndex=0}for(var F=[];;){var U=d(L,P);if(U===null||(F.push(U),!G))break;String(U[0])===""&&(L.lastIndex=u(P,c(L.lastIndex),j))}for(var W,J="",te=0,le=0;le=te&&(J+=P.slice(te,pe)+$,te=pe+ve.length)}return J+P.slice(te)}];function E(b,D,O,L,P,k){var G=O+b.length,j=L.length,F=y;return P!==void 0&&(P=s(P),F=v),w.call(k,F,function(U,W){var J;switch(W.charAt(0)){case"$":return"$";case"&":return b;case"`":return D.slice(0,O);case"'":return D.slice(G);case"<":J=P[W.slice(1,-1)];break;default:var te=+W;if(te===0)return U;if(te>j){var le=p(te/10);return le===0?U:le<=j?L[le-1]===void 0?W.charAt(1):L[le-1]+W.charAt(1):U}J=L[te-1]}return J===void 0?"":J})}})},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=D.length&&(D=void 0),{value:D&&D[P++],done:!D}}};throw new TypeError(O?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__read||function(D,O){var L=typeof Symbol=="function"&&D[Symbol.iterator];if(!L)return D;var P,k,G=L.call(D),j=[];try{for(;(O===void 0||O-- >0)&&!(P=G.next()).done;)j.push(P.value)}catch(F){k={error:F}}finally{try{P&&!P.done&&(L=G.return)&&L.call(G)}finally{if(k)throw k.error}}return j},s=this&&this.__spread||function(){for(var D=[],O=0;O=0;Te--)if((Ve=oe[Te]).shadowAdjustedTarget!==null){ie=Ve;break}if(ie!==null)if(f.Guard.isNode(ie.shadowAdjustedTarget)&&f.Guard.isShadowRoot(g.tree_rootNode(ie.shadowAdjustedTarget,!0)))U=!0;else if(f.Guard.isNode(ie.relatedTarget)&&f.Guard.isShadowRoot(g.tree_rootNode(ie.relatedTarget,!0)))U=!0;else for(var Oe=0;Oe=0;Te--)(Ve=oe[Te]).shadowAdjustedTarget!==null?D._eventPhase=l.EventPhase.AtTarget:D._eventPhase=l.EventPhase.Capturing,C(Ve,D,"capturing",P);for(Te=0;Te0&&(F=k[G-1]).shadowAdjustedTarget!==null)&&(O._target=F.shadowAdjustedTarget)}if(O._relatedTarget=D.relatedTarget,O._touchTargetList=D.touchTargetList,!O._stopPropagationFlag){O._currentTarget=D.invocationTarget;var U=O._currentTarget._eventListenerList,W=new(Array.bind.apply(Array,s([void 0],U)));if(!S(O,W,L,D,P)&&O._isTrusted){var J=O._type;J==="animationend"?O._type="webkitAnimationEnd":J==="animationiteration"?O._type="webkitAnimationIteration":J==="animationstart"?O._type="webkitAnimationStart":J==="transitionend"&&(O._type="webkitTransitionEnd"),S(O,W,L,D,P),O._type=J}}}function S(D,O,L,P,k){k===void 0&&(k={value:!1});for(var G=!1,j=0;j=x.length&&(x=void 0),{value:x&&x[T++],done:!x}}};throw new TypeError(C?"Object is not iterable.":"Symbol.iterator is not defined.")},c=this&&this.__read||function(x,C){var S=typeof Symbol=="function"&&x[Symbol.iterator];if(!S)return x;var T,_,E=S.call(x),b=[];try{for(;(C===void 0||C-- >0)&&!(T=E.next()).done;)b.push(T.value)}catch(D){_={error:D}}finally{try{T&&!T.done&&(S=E.return)&&S.call(E)}finally{if(_)throw _.error}}return b};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),y=i(0),m=i(12),w=function(x){function C(){var S=x.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,x),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=y.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 b=E.value;if(h.Guard.isDocumentTypeNode(b))return b}}catch(D){S={error:D}}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 y.node_listOfElementsWithQualifiedName(S,this)},C.prototype.getElementsByTagNameNS=function(S,T){return y.node_listOfElementsWithNamespace(S,T,this)},C.prototype.getElementsByClassName=function(S){return y.node_listOfElementsWithClassNames(S,this)},C.prototype.createElement=function(S,T){if(!y.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 y.element_createAnElement(this,S,E,null,_,!0)},C.prototype.createElementNS=function(S,T,_){return y.document_internalCreateElementNS(this,S,T,_)},C.prototype.createDocumentFragment=function(){return y.create_documentFragment(this)},C.prototype.createTextNode=function(S){return y.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 y.create_cdataSection(this,S)},C.prototype.createComment=function(S){return y.create_comment(this,S)},C.prototype.createProcessingInstruction=function(S,T){if(!y.xml_isName(S))throw new u.InvalidCharacterError;if(T.indexOf("?>")!==-1)throw new u.InvalidCharacterError;return y.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 y.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 y.document_adopt(S,this),S},C.prototype.createAttribute=function(S){if(!y.xml_isName(S))throw new u.InvalidCharacterError;return this._type==="html"&&(S=S.toLowerCase()),y.create_attr(this,S)},C.prototype.createAttributeNS=function(S,T){var _=c(y.namespace_validateAndExtract(S,T),3),E=_[0],b=_[1],D=_[2],O=y.create_attr(this,D);return O._namespace=E,O._namespacePrefix=b,O},C.prototype.createEvent=function(S){return y.event_createLegacyEvent(S)},C.prototype.createRange=function(){var S=y.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=y.create_nodeIterator(S,S,!0);return E._whatToShow=T,E._iteratorCollection=y.create_nodeList(S),g.isFunction(_)?(E._filter=y.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=y.create_treeWalker(S,S);return E._whatToShow=T,g.isFunction(_)?(E._filter=y.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[w++],done:!v}}};throw new TypeError(y?"Object is not iterable.":"Symbol.iterator is not defined.")},c=this&&this.__read||function(v,y){var m=typeof Symbol=="function"&&v[Symbol.iterator];if(!m)return v;var w,x,C=m.call(v),S=[];try{for(;(y===void 0||y-- >0)&&!(w=C.next()).done;)S.push(w.value)}catch(T){x={error:T}}finally{try{w&&!w.done&&(m=C.return)&&m.call(C)}finally{if(x)throw x.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 y(){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(y,v),Object.defineProperty(y.prototype,"namespaceURI",{get:function(){return this._namespace},enumerable:!0,configurable:!0}),Object.defineProperty(y.prototype,"prefix",{get:function(){return this._namespacePrefix},enumerable:!0,configurable:!0}),Object.defineProperty(y.prototype,"localName",{get:function(){return this._localName},enumerable:!0,configurable:!0}),Object.defineProperty(y.prototype,"tagName",{get:function(){return this._htmlUppercasedQualifiedName},enumerable:!0,configurable:!0}),Object.defineProperty(y.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(y.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(y.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(y.prototype,"slot",{get:function(){return h.element_getAnAttributeValue(this,"slot")},set:function(m){h.element_setAnAttributeValue(this,"slot",m)},enumerable:!0,configurable:!0}),y.prototype.hasAttributes=function(){return this._attributeList.length!==0},Object.defineProperty(y.prototype,"attributes",{get:function(){return this._attributeList},enumerable:!0,configurable:!0}),y.prototype.getAttributeNames=function(){var m,w,x=[];try{for(var C=s(this._attributeList),S=C.next();!S.done;S=C.next()){var T=S.value;x.push(T._qualifiedName)}}catch(_){m={error:_}}finally{try{S&&!S.done&&(w=C.return)&&w.call(C)}finally{if(m)throw m.error}}return x},y.prototype.getAttribute=function(m){var w=h.element_getAnAttributeByName(m,this);return w?w._value:null},y.prototype.getAttributeNS=function(m,w){var x=h.element_getAnAttributeByNamespaceAndLocalName(m,w,this);return x?x._value:null},y.prototype.setAttribute=function(m,w){if(!h.xml_isName(m))throw new u.InvalidCharacterError;this._namespace===d.namespace.HTML&&this._nodeDocument._type==="html"&&(m=m.toLowerCase());for(var x=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,y="";try{for(var m=s(f.text_contiguousTextNodes(this,!0)),w=m.next();!w.done;w=m.next())y+=w.value._data}catch(x){p={error:x}}finally{try{w&&!w.done&&(v=m.return)&&v.call(m)}finally{if(p)throw p.error}}return y},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 y=new g(v);return y._nodeDocument=p,y},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,y=g;for(p=h-1;p>=0;)u[p].rootOfClosedTree&&v++,v<=y&&f.unshift(u[p].invocationTarget),u[p].slotInClosedTree&&--v0)&&!(x=S.next()).done;)T.push(x.value)}catch(_){C={error:_}}finally{try{x&&!x.done&&(w=S.return)&&w.call(S)}finally{if(C)throw C.error}}return T},a=this&&this.__values||function(y){var m=typeof Symbol=="function"&&Symbol.iterator,w=m&&y[m],x=0;if(w)return w.call(y);if(y&&typeof y.length=="number")return{next:function(){return y&&x>=y.length&&(y=void 0),{value:y&&y[x++],done:!y}}};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(y,m){return f.ElementImpl},n.document_internalCreateElementNS=function(y,m,w,x){var C=o(h.namespace_validateAndExtract(m,w),3),S=C[0],T=C[1],_=C[2],E=null;return x!==void 0&&(E=l.isString(x)?x:x.is),p.element_createAnElement(y,_,S,T,E,!0)},n.document_adopt=function(y,m){var w,x;if(y._nodeDocument!==m||y._parent!==null){var C=y._nodeDocument;if(y._parent&&v.mutation_remove(y,y._parent),m!==C)for(var S=d.tree_getFirstDescendantNode(y,!0,!0);S!==null;){if(S._nodeDocument=m,c.Guard.isElementNode(S))try{for(var T=(w=void 0,a(S._attributeList._asArray())),_=T.next();!_.done;_=T.next())_.value._nodeDocument=m}catch(E){w={error:E}}finally{try{_&&!_.done&&(x=T.return)&&x.call(T)}finally{if(w)throw w.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(y,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,y,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 w=d._data.substring(0,h)+p+d._data.substring(h+g);d._data=w;try{for(var x=o(a.dom.rangeList),C=x.next();!C.done;C=x.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&&(y=x.return)&&y.call(x)}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),y=[];try{for(;(d===void 0||d-- >0)&&!(g=v.next()).done;)y.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 y},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,y;try{for(var m=s(d),w=m.next();!w.done;w=m.next()){var x=w.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(_===x){C=!0;break}}else if(_.toUpperCase()===x.toUpperCase()){C=!0;break}}}catch(E){v={error:E}}finally{try{T&&!T.done&&(y=S.return)&&y.call(S)}finally{if(v)throw v.error}}if(!C)return!1}}catch(E){g={error:E}}finally{try{w&&!w.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 y=i(264),m=i(155);n.DocumentType=m.DocumentTypeImpl;var w=i(6);n.dom=w.dom;var x=i(148);n.DOMImplementation=x.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 b=i(265);n.MutationObserver=b.MutationObserverImpl;var D=i(169);n.MutationRecord=D.MutationRecordImpl;var O=i(164);n.NamedNodeMap=O.NamedNodeMapImpl;var L=i(168);n.NodeFilter=L.NodeFilterImpl;var P=i(34);n.Node=P.NodeImpl;var k=i(166);n.NodeIterator=k.NodeIteratorImpl;var G=i(162);n.NodeList=G.NodeListImpl;var j=i(163);n.NodeListStatic=j.NodeListStaticImpl;var F=i(266),U=i(267),W=i(268),J=i(160);n.ProcessingInstruction=J.ProcessingInstructionImpl;var te=i(165);n.Range=te.RangeImpl;var le=i(156);n.ShadowRoot=le.ShadowRootImpl;var ve=i(269),pe=i(270);n.StaticRange=pe.StaticRangeImpl;var ye=i(101);n.Text=ye.TextImpl;var Ie=i(103);n.Traverser=Ie.TraverserImpl;var Le=i(167);n.TreeWalker=Le.TreeWalkerImpl;var be=i(149);n.Window=be.WindowImpl;var $=i(151);n.XMLDocument=$.XMLDocumentImpl,o.applyMixin(S.ElementImpl,d.ChildNodeImpl),o.applyMixin(u.CharacterDataImpl,d.ChildNodeImpl),o.applyMixin(m.DocumentTypeImpl,d.ChildNodeImpl),o.applyMixin(v.DocumentImpl,y.DocumentOrShadowRootImpl),o.applyMixin(le.ShadowRootImpl,y.DocumentOrShadowRootImpl),o.applyMixin(S.ElementImpl,F.NonDocumentTypeChildNodeImpl),o.applyMixin(u.CharacterDataImpl,F.NonDocumentTypeChildNodeImpl),o.applyMixin(v.DocumentImpl,U.NonElementParentNodeImpl),o.applyMixin(p.DocumentFragmentImpl,U.NonElementParentNodeImpl),o.applyMixin(v.DocumentImpl,W.ParentNodeImpl),o.applyMixin(p.DocumentFragmentImpl,W.ParentNodeImpl),o.applyMixin(S.ElementImpl,W.ParentNodeImpl),o.applyMixin(ye.TextImpl,ve.SlotableImpl),o.applyMixin(S.ElementImpl,ve.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,y){if(s.isFunction(y)&&(y=y.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(y)||s.isSet(y))&&s.isEmpty(y))){if((s.isMap(y)||s.isObject(y))&&s.isEmpty(y))p=h.element(u,void 0,h.sanitize(v))||p;else if(g.keepNullNodes||y!=null)if(s.isArray(y)||s.isSet(y))s.forEachArray(y,function(S){var T={};T[v]=S,p=h.parse(u,T)},h);else if(s.isMap(y)||s.isObject(y))(m=h.element(u,void 0,h.sanitize(v)))&&(p=m,h.parse(m,y));else if(y!=null&&y!==""){var m;(m=h.element(u,void 0,h.sanitize(v)))&&(p=m,h.text(m,h._decodeText(h.sanitize(y))))}else p=h.element(u,void 0,h.sanitize(v))||p}}else if(s.isString(y)){var w=y.indexOf(" "),x=w===-1?y:y.substr(0,w),C=w===-1?"":y.substr(w+1);p=h.instruction(u,h.sanitize(x),h.sanitize(C))||p}else s.isArray(y)||s.isSet(y)?s.forEachArray(y,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(y,function(S,T){return p=h.instruction(u,h.sanitize(S),h.sanitize(T))||p},h);else s.isArray(y)||s.isSet(y)?s.forEachArray(y,function(S){return p=h.comment(u,h.sanitize(S))||p},h):p=h.comment(u,h.sanitize(y))||p;else s.isArray(y)||s.isSet(y)?s.forEachArray(y,function(S){return p=h.cdata(u,h.sanitize(S))||p},h):p=h.cdata(u,h.sanitize(y))||p;else p=s.isMap(y)||s.isObject(y)?h.parse(u,y):h.text(u,h._decodeText(h.sanitize(y)))||p;else if(v===g.convert.att){if(s.isArray(y)||s.isSet(y))throw new Error("Invalid attribute: "+y.toString()+". "+u._debugInfo());s.forEachObject(y,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(y)))||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(y,m,w){var x=y.indexOf("Map")!==-1,C=y.indexOf("Weak")!==-1,S=x?"set":"add",T=a[y],_=T&&T.prototype,E=T,b={},D=function(j){var F=_[j];c(_,j,j=="add"?function(U){return F.call(this,U===0?0:U),this}:j=="delete"?function(U){return!(C&&!d(U))&&F.call(this,U===0?0:U)}:j=="get"?function(U){return C&&!d(U)?void 0:F.call(this,U===0?0:U)}:j=="has"?function(U){return!(C&&!d(U))&&F.call(this,U===0?0:U)}:function(U,W){return F.call(this,U===0?0:U,W),this})};if(s(y,typeof T!="function"||!(C||_.forEach&&!h(function(){new T().entries().next()}))))E=w.getConstructor(m,y,x,S),l.REQUIRED=!0;else if(s(y,!0)){var O=new E,L=O[S](C?{}:-0,1)!=O,P=h(function(){O.has(1)}),k=g(function(j){new T(j)}),G=!C&&h(function(){for(var j=new T,F=5;F--;)j[S](F,F);return!j.has(-0)});k||((E=m(function(j,F){u(j,E,y);var U=v(new T,j,E);return F!=null&&f(F,U[S],U,x),U})).prototype=_,_.constructor=E),(P||G)&&(D("delete"),D("has"),x&&D("get")),(G||L)&&D(S),C&&_.clear&&delete _.clear}return b[y]=E,o({global:!0,forced:E!=T},b),p(E,y),C||w.setStrong(E,y,x),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,y){if(!a(v))return typeof v=="symbol"?v:(typeof v=="string"?"S":"P")+v;if(!s(v,u)){if(!h(v))return"F";if(!y)return"E";g(v)}return v[u].objectID},getWeakData:function(v,y){if(!s(v,u)){if(!h(v))return!0;if(!y)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 y,m,w,x,C,S,T,_=c(h,g,p?2:1);if(v)y=d;else{if(typeof(m=l(d))!="function")throw TypeError("Target is not iterable");if(a(m)){for(w=0,x=s(d.length);x>w;w++)if((C=p?_(o(T=d[w])[0],T[1]):_(d[w]))&&C instanceof u)return C;return new u(!1)}y=m.call(d)}for(S=y.next;!(T=S.call(y)).done;)if(typeof(C=f(y,_,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,y=p.getterFor;r.exports={getConstructor:function(m,w,x,C){var S=m(function(b,D){l(b,S,w),v(b,{type:w,index:a(null),first:void 0,last:void 0,size:0}),h||(b.size=0),D!=null&&f(D,b[C],b,x)}),T=y(w),_=function(b,D,O){var L,P,k=T(b),G=E(b,D);return G?G.value=O:(k.last=G={index:P=g(D,!0),key:D,value:O,previous:L=k.last,next:void 0,removed:!1},k.first||(k.first=G),L&&(L.next=G),h?k.size++:b.size++,P!=="F"&&(k.index[P]=G)),b},E=function(b,D){var O,L=T(b),P=g(D);if(P!=="F")return L.index[P];for(O=L.first;O;O=O.next)if(O.key==D)return O};return s(S.prototype,{clear:function(){for(var b=T(this),D=b.index,O=b.first;O;)O.removed=!0,O.previous&&(O.previous=O.previous.next=void 0),delete D[O.index],O=O.next;b.first=b.last=void 0,h?b.size=0:this.size=0},delete:function(b){var D=T(this),O=E(this,b);if(O){var L=O.next,P=O.previous;delete D.index[O.index],O.removed=!0,P&&(P.next=L),L&&(L.previous=P),D.first==O&&(D.first=L),D.last==O&&(D.last=P),h?D.size--:this.size--}return!!O},forEach:function(b){for(var D,O=T(this),L=c(b,arguments.length>1?arguments[1]:void 0,3);D=D?D.next:O.first;)for(L(D.value,D.key,this);D&&D.removed;)D=D.previous},has:function(b){return!!E(this,b)}}),s(S.prototype,x?{get:function(b){var D=E(this,b);return D&&D.value},set:function(b,D){return _(this,b===0?0:b,D)}}:{add:function(b){return _(this,b=b===0?0:b,b)}}),h&&o(S.prototype,"size",{get:function(){return T(this).size}}),S},setStrong:function(m,w,x){var C=w+" Iterator",S=y(w),T=y(C);u(m,w,function(_,E){v(this,{type:C,target:_,state:S(_),kind:E,last:void 0})},function(){for(var _=T(this),E=_.kind,b=_.last;b&&b.removed;)b=b.previous;return _.target&&(_.last=b=b?b.next:_.state.first)?E=="keys"?{value:b.key,done:!1}:E=="values"?{value:b.value,done:!1}:{value:[b.key,b.value],done:!1}:(_.target=void 0,{value:void 0,done:!0})},x?"entries":"values",!x,!0),d(w)}}},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 y=String(f(this));l(v);var m=arguments.length>1?arguments[1]:void 0,w=c(y.length),x=m===void 0?w:g(c(m),w),C=String(v);return h?h.call(y,C,x):y.slice(x-C.length,x)===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(H,O){if(l()=l())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+l().toString(16)+" bytes");return 0|H}function y(H,O){if(u.isBuffer(H))return H.length;if(typeof ArrayBuffer<"u"&&typeof ArrayBuffer.isView=="function"&&(ArrayBuffer.isView(H)||H instanceof ArrayBuffer))return H.byteLength;typeof H!="string"&&(H=""+H);var Y=H.length;if(Y===0)return 0;for(var K=!1;;)switch(O){case"ascii":case"latin1":case"binary":return Y;case"utf8":case"utf-8":case void 0:return Ie(H).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*Y;case"hex":return Y>>>1;case"base64":return Pe(H).length;default:if(K)return Ie(H).length;O=(""+O).toLowerCase(),K=!0}}function m(H,O,Y){var K=!1;if((O===void 0||O<0)&&(O=0),O>this.length||((Y===void 0||Y>this.length)&&(Y=this.length),Y<=0)||(Y>>>=0)<=(O>>>=0))return"";for(H||(H="utf8");;)switch(H){case"hex":return B(this,O,Y);case"utf8":case"utf-8":return P(this,O,Y);case"ascii":return M(this,O,Y);case"latin1":case"binary":return L(this,O,Y);case"base64":return I(this,O,Y);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return j(this,O,Y);default:if(K)throw new TypeError("Unknown encoding: "+H);H=(H+"").toLowerCase(),K=!0}}function w(H,O,Y){var K=H[O];H[O]=H[Y],H[Y]=K}function x(H,O,Y,K,Z){if(H.length===0)return-1;if(typeof Y=="string"?(K=Y,Y=0):Y>2147483647?Y=2147483647:Y<-2147483648&&(Y=-2147483648),Y=+Y,isNaN(Y)&&(Y=Z?0:H.length-1),Y<0&&(Y=H.length+Y),Y>=H.length){if(Z)return-1;Y=H.length-1}else if(Y<0){if(!Z)return-1;Y=0}if(typeof O=="string"&&(O=u.from(O,K)),u.isBuffer(O))return O.length===0?-1:C(H,O,Y,K,Z);if(typeof O=="number")return O&=255,u.TYPED_ARRAY_SUPPORT&&typeof Uint8Array.prototype.indexOf=="function"?Z?Uint8Array.prototype.indexOf.call(H,O,Y):Uint8Array.prototype.lastIndexOf.call(H,O,Y):C(H,[O],Y,K,Z);throw new TypeError("val must be string, number or Buffer")}function C(H,O,Y,K,Z){var ae,oe=1,_e=H.length,Oe=O.length;if(K!==void 0&&((K=String(K).toLowerCase())==="ucs2"||K==="ucs-2"||K==="utf16le"||K==="utf-16le")){if(H.length<2||O.length<2)return-1;oe=2,_e/=2,Oe/=2,Y/=2}function Ge(be,pe){return oe===1?be[pe]:be.readUInt16BE(pe*oe)}if(Z){var $e=-1;for(ae=Y;ae<_e;ae++)if(Ge(H,ae)===Ge(O,$e===-1?0:ae-$e)){if($e===-1&&($e=ae),ae-$e+1===Oe)return $e*oe}else $e!==-1&&(ae-=ae-$e),$e=-1}else for(Y+Oe>_e&&(Y=_e-Oe),ae=Y;ae>=0;ae--){for(var le=!0,de=0;deZ&&(K=Z):K=Z;var ae=O.length;if(ae%2!=0)throw new TypeError("Invalid hex string");K>ae/2&&(K=ae/2);for(var oe=0;oe>8,Oe=oe%256,Ge.push(Oe),Ge.push(_e);return Ge}(O,H.length-Y),H,Y,K)}function I(H,O,Y){return O===0&&Y===H.length?a.fromByteArray(H):a.fromByteArray(H.slice(O,Y))}function P(H,O,Y){Y=Math.min(H.length,Y);for(var K=[],Z=O;Z239?4:Ge>223?3:Ge>191?2:1;if(Z+le<=Y)switch(le){case 1:Ge<128&&($e=Ge);break;case 2:(192&(ae=H[Z+1]))==128&&(Oe=(31&Ge)<<6|63&ae)>127&&($e=Oe);break;case 3:ae=H[Z+1],oe=H[Z+2],(192&ae)==128&&(192&oe)==128&&(Oe=(15&Ge)<<12|(63&ae)<<6|63&oe)>2047&&(Oe<55296||Oe>57343)&&($e=Oe);break;case 4:ae=H[Z+1],oe=H[Z+2],_e=H[Z+3],(192&ae)==128&&(192&oe)==128&&(192&_e)==128&&(Oe=(15&Ge)<<18|(63&ae)<<12|(63&oe)<<6|63&_e)>65535&&Oe<1114112&&($e=Oe)}$e===null?($e=65533,le=1):$e>65535&&($e-=65536,K.push($e>>>10&1023|55296),$e=56320|1023&$e),K.push($e),Z+=le}return function(de){var be=de.length;if(be<=4096)return String.fromCharCode.apply(String,de);for(var pe="",Te=0;Te0&&(H=this.toString("hex",0,O).match(/.{2}/g).join(" "),this.length>O&&(H+=" ... ")),""},u.prototype.compare=function(H,O,Y,K,Z){if(!u.isBuffer(H))throw new TypeError("Argument must be a Buffer");if(O===void 0&&(O=0),Y===void 0&&(Y=H?H.length:0),K===void 0&&(K=0),Z===void 0&&(Z=this.length),O<0||Y>H.length||K<0||Z>this.length)throw new RangeError("out of range index");if(K>=Z&&O>=Y)return 0;if(K>=Z)return-1;if(O>=Y)return 1;if(this===H)return 0;for(var ae=(Z>>>=0)-(K>>>=0),oe=(Y>>>=0)-(O>>>=0),_e=Math.min(ae,oe),Oe=this.slice(K,Z),Ge=H.slice(O,Y),$e=0;$e<_e;++$e)if(Oe[$e]!==Ge[$e]){ae=Oe[$e],oe=Ge[$e];break}return aeZ)&&(Y=Z),H.length>0&&(Y<0||O<0)||O>this.length)throw new RangeError("Attempt to write outside buffer bounds");K||(K="utf8");for(var ae=!1;;)switch(K){case"hex":return S(this,H,O,Y);case"utf8":case"utf-8":return T(this,H,O,Y);case"ascii":return _(this,H,O,Y);case"latin1":case"binary":return E(this,H,O,Y);case"base64":return b(this,H,O,Y);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return D(this,H,O,Y);default:if(ae)throw new TypeError("Unknown encoding: "+K);K=(""+K).toLowerCase(),ae=!0}},u.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function M(H,O,Y){var K="";Y=Math.min(H.length,Y);for(var Z=O;ZK)&&(Y=K);for(var Z="",ae=O;aeY)throw new RangeError("Trying to access beyond buffer length")}function F(H,O,Y,K,Z,ae){if(!u.isBuffer(H))throw new TypeError('"buffer" argument must be a Buffer instance');if(O>Z||OH.length)throw new RangeError("Index out of range")}function G(H,O,Y,K){O<0&&(O=65535+O+1);for(var Z=0,ae=Math.min(H.length-Y,2);Z>>8*(K?Z:1-Z)}function X(H,O,Y,K){O<0&&(O=4294967295+O+1);for(var Z=0,ae=Math.min(H.length-Y,4);Z>>8*(K?Z:3-Z)&255}function ne(H,O,Y,K,Z,ae){if(Y+K>H.length)throw new RangeError("Index out of range");if(Y<0)throw new RangeError("Index out of range")}function ue(H,O,Y,K,Z){return Z||ne(H,0,Y,4),s.write(H,O,Y,K,23,4),Y+4}function me(H,O,Y,K,Z){return Z||ne(H,0,Y,8),s.write(H,O,Y,K,52,8),Y+8}u.prototype.slice=function(H,O){var Y,K=this.length;if((H=~~H)<0?(H+=K)<0&&(H=0):H>K&&(H=K),(O=O===void 0?K:~~O)<0?(O+=K)<0&&(O=0):O>K&&(O=K),O0&&(Z*=256);)K+=this[H+--O]*Z;return K},u.prototype.readUInt8=function(H,O){return O||V(H,1,this.length),this[H]},u.prototype.readUInt16LE=function(H,O){return O||V(H,2,this.length),this[H]|this[H+1]<<8},u.prototype.readUInt16BE=function(H,O){return O||V(H,2,this.length),this[H]<<8|this[H+1]},u.prototype.readUInt32LE=function(H,O){return O||V(H,4,this.length),(this[H]|this[H+1]<<8|this[H+2]<<16)+16777216*this[H+3]},u.prototype.readUInt32BE=function(H,O){return O||V(H,4,this.length),16777216*this[H]+(this[H+1]<<16|this[H+2]<<8|this[H+3])},u.prototype.readIntLE=function(H,O,Y){H|=0,O|=0,Y||V(H,O,this.length);for(var K=this[H],Z=1,ae=0;++ae=(Z*=128)&&(K-=Math.pow(2,8*O)),K},u.prototype.readIntBE=function(H,O,Y){H|=0,O|=0,Y||V(H,O,this.length);for(var K=O,Z=1,ae=this[H+--K];K>0&&(Z*=256);)ae+=this[H+--K]*Z;return ae>=(Z*=128)&&(ae-=Math.pow(2,8*O)),ae},u.prototype.readInt8=function(H,O){return O||V(H,1,this.length),128&this[H]?-1*(255-this[H]+1):this[H]},u.prototype.readInt16LE=function(H,O){O||V(H,2,this.length);var Y=this[H]|this[H+1]<<8;return 32768&Y?4294901760|Y:Y},u.prototype.readInt16BE=function(H,O){O||V(H,2,this.length);var Y=this[H+1]|this[H]<<8;return 32768&Y?4294901760|Y:Y},u.prototype.readInt32LE=function(H,O){return O||V(H,4,this.length),this[H]|this[H+1]<<8|this[H+2]<<16|this[H+3]<<24},u.prototype.readInt32BE=function(H,O){return O||V(H,4,this.length),this[H]<<24|this[H+1]<<16|this[H+2]<<8|this[H+3]},u.prototype.readFloatLE=function(H,O){return O||V(H,4,this.length),s.read(this,H,!0,23,4)},u.prototype.readFloatBE=function(H,O){return O||V(H,4,this.length),s.read(this,H,!1,23,4)},u.prototype.readDoubleLE=function(H,O){return O||V(H,8,this.length),s.read(this,H,!0,52,8)},u.prototype.readDoubleBE=function(H,O){return O||V(H,8,this.length),s.read(this,H,!1,52,8)},u.prototype.writeUIntLE=function(H,O,Y,K){H=+H,O|=0,Y|=0,K||F(this,H,O,Y,Math.pow(2,8*Y)-1,0);var Z=1,ae=0;for(this[O]=255&H;++ae=0&&(ae*=256);)this[O+Z]=H/ae&255;return O+Y},u.prototype.writeUInt8=function(H,O,Y){return H=+H,O|=0,Y||F(this,H,O,1,255,0),u.TYPED_ARRAY_SUPPORT||(H=Math.floor(H)),this[O]=255&H,O+1},u.prototype.writeUInt16LE=function(H,O,Y){return H=+H,O|=0,Y||F(this,H,O,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[O]=255&H,this[O+1]=H>>>8):G(this,H,O,!0),O+2},u.prototype.writeUInt16BE=function(H,O,Y){return H=+H,O|=0,Y||F(this,H,O,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[O]=H>>>8,this[O+1]=255&H):G(this,H,O,!1),O+2},u.prototype.writeUInt32LE=function(H,O,Y){return H=+H,O|=0,Y||F(this,H,O,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[O+3]=H>>>24,this[O+2]=H>>>16,this[O+1]=H>>>8,this[O]=255&H):X(this,H,O,!0),O+4},u.prototype.writeUInt32BE=function(H,O,Y){return H=+H,O|=0,Y||F(this,H,O,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[O]=H>>>24,this[O+1]=H>>>16,this[O+2]=H>>>8,this[O+3]=255&H):X(this,H,O,!1),O+4},u.prototype.writeIntLE=function(H,O,Y,K){if(H=+H,O|=0,!K){var Z=Math.pow(2,8*Y-1);F(this,H,O,Y,Z-1,-Z)}var ae=0,oe=1,_e=0;for(this[O]=255&H;++ae>0)-_e&255;return O+Y},u.prototype.writeIntBE=function(H,O,Y,K){if(H=+H,O|=0,!K){var Z=Math.pow(2,8*Y-1);F(this,H,O,Y,Z-1,-Z)}var ae=Y-1,oe=1,_e=0;for(this[O+ae]=255&H;--ae>=0&&(oe*=256);)H<0&&_e===0&&this[O+ae+1]!==0&&(_e=1),this[O+ae]=(H/oe>>0)-_e&255;return O+Y},u.prototype.writeInt8=function(H,O,Y){return H=+H,O|=0,Y||F(this,H,O,1,127,-128),u.TYPED_ARRAY_SUPPORT||(H=Math.floor(H)),H<0&&(H=255+H+1),this[O]=255&H,O+1},u.prototype.writeInt16LE=function(H,O,Y){return H=+H,O|=0,Y||F(this,H,O,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[O]=255&H,this[O+1]=H>>>8):G(this,H,O,!0),O+2},u.prototype.writeInt16BE=function(H,O,Y){return H=+H,O|=0,Y||F(this,H,O,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[O]=H>>>8,this[O+1]=255&H):G(this,H,O,!1),O+2},u.prototype.writeInt32LE=function(H,O,Y){return H=+H,O|=0,Y||F(this,H,O,4,2147483647,-2147483648),u.TYPED_ARRAY_SUPPORT?(this[O]=255&H,this[O+1]=H>>>8,this[O+2]=H>>>16,this[O+3]=H>>>24):X(this,H,O,!0),O+4},u.prototype.writeInt32BE=function(H,O,Y){return H=+H,O|=0,Y||F(this,H,O,4,2147483647,-2147483648),H<0&&(H=4294967295+H+1),u.TYPED_ARRAY_SUPPORT?(this[O]=H>>>24,this[O+1]=H>>>16,this[O+2]=H>>>8,this[O+3]=255&H):X(this,H,O,!1),O+4},u.prototype.writeFloatLE=function(H,O,Y){return ue(this,H,O,!0,Y)},u.prototype.writeFloatBE=function(H,O,Y){return ue(this,H,O,!1,Y)},u.prototype.writeDoubleLE=function(H,O,Y){return me(this,H,O,!0,Y)},u.prototype.writeDoubleBE=function(H,O,Y){return me(this,H,O,!1,Y)},u.prototype.copy=function(H,O,Y,K){if(Y||(Y=0),K||K===0||(K=this.length),O>=H.length&&(O=H.length),O||(O=0),K>0&&K=this.length)throw new RangeError("sourceStart out of bounds");if(K<0)throw new RangeError("sourceEnd out of bounds");K>this.length&&(K=this.length),H.length-O=0;--Z)H[Z+O]=this[Z+Y];else if(ae<1e3||!u.TYPED_ARRAY_SUPPORT)for(Z=0;Z>>=0,Y=Y===void 0?this.length:Y>>>0,H||(H=0),typeof H=="number")for(ae=O;ae55295&&Y<57344){if(!Z){if(Y>56319){(O-=3)>-1&&ae.push(239,191,189);continue}if(oe+1===K){(O-=3)>-1&&ae.push(239,191,189);continue}Z=Y;continue}if(Y<56320){(O-=3)>-1&&ae.push(239,191,189),Z=Y;continue}Y=65536+(Z-55296<<10|Y-56320)}else Z&&(O-=3)>-1&&ae.push(239,191,189);if(Z=null,Y<128){if((O-=1)<0)break;ae.push(Y)}else if(Y<2048){if((O-=2)<0)break;ae.push(Y>>6|192,63&Y|128)}else if(Y<65536){if((O-=3)<0)break;ae.push(Y>>12|224,Y>>6&63|128,63&Y|128)}else{if(!(Y<1114112))throw new Error("Invalid code point");if((O-=4)<0)break;ae.push(Y>>18|240,Y>>12&63|128,Y>>6&63|128,63&Y|128)}}return ae}function Pe(H){return a.toByteArray(function(O){if((O=function(Y){return Y.trim?Y.trim():Y.replace(/^\s+|\s+$/g,"")}(O).replace(ge,"")).length<2)return"";for(;O.length%4!=0;)O+="=";return O}(H))}function Ee(H,O,Y,K){for(var Z=0;Z=O.length||Z>=H.length);++Z)O[Z+Y]=H[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 y=s.element_createAnElement(d,"body",a.namespace.HTML);return h.appendChild(y),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(K){var Z=typeof Symbol=="function"&&Symbol.iterator,ae=Z&&K[Z],oe=0;if(ae)return ae.call(K);if(K&&typeof K.length=="number")return{next:function(){return K&&oe>=K.length&&(K=void 0),{value:K&&K[oe++],done:!K}}};throw new TypeError(Z?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__read||function(K,Z){var ae=typeof Symbol=="function"&&K[Symbol.iterator];if(!ae)return K;var oe,_e,Oe=ae.call(K),Ge=[];try{for(;(Z===void 0||Z-- >0)&&!(oe=Oe.next()).done;)Ge.push(oe.value)}catch($e){_e={error:$e}}finally{try{oe&&!oe.done&&(ae=Oe.return)&&ae.call(Oe)}finally{if(_e)throw _e.error}}return Ge};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]/,y=/[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 w(K){s!==void 0&&s.call(null,"Validation Error: "+K)}function x(){return{scheme:"",username:"",password:"",host:null,port:null,path:[],query:null,fragment:null,_cannotBeABaseURLFlag:!1,_blobURLEntry:null}}function C(K){return K in d}function S(K){return C(K.scheme)}function T(K){return d[K]||null}function _(K){return K.username!==""||K.password!==""}function E(K,Z){var ae,oe;Z===void 0&&(Z=!1);var _e=K.scheme+":";if(K.host!==null?(_e+="//",_(K)&&(_e+=K.username,K.password!==""&&(_e+=":"+K.password),_e+="@"),_e+=b(K.host),K.port!==null&&(_e+=":"+K.port)):K.host===null&&K.scheme==="file"&&(_e+="//"),K._cannotBeABaseURLFlag)_e+=K.path[0];else try{for(var Oe=o(K.path),Ge=Oe.next();!Ge.done;Ge=Oe.next())_e+="/"+Ge.value}catch($e){ae={error:$e}}finally{try{Ge&&!Ge.done&&(oe=Oe.return)&&oe.call(Oe)}finally{if(ae)throw ae.error}}return K.query!==null&&(_e+="?"+K.query),Z||K.fragment===null||(_e+="#"+K.fragment),_e}function b(K){return c.isNumber(K)?D(K):c.isArray(K)?"["+I(K)+"]":K}function D(K){for(var Z="",ae=K,oe=1;oe<=4;oe++)Z=(ae%256).toString()+Z,oe!==4&&(Z="."+Z),ae=Math.floor(ae/256);return Z}function I(K){for(var Z="",ae=null,oe=-1,_e=0,Oe=0,Ge=0;Ge<8;Ge++)if(K[Ge]===0){_e=1;for(var $e=Ge+1;$e<8&&K[$e]===0;$e++)_e++;_e>Oe&&(Oe=_e,oe=Ge)}Oe>1&&(ae=oe);for(var le=!1,de=0;de<8;de++)le&&K[de]===0||(le&&(le=!1),ae!==de?(Z+=K[de].toString(16),de!==7&&(Z+=":")):(Z+=de===0?"::":":",le=!0));return Z}function P(K,Z,ae,oe,_e){var Oe,Ge,$e,le;if(oe===void 0){oe={scheme:"",username:"",password:"",host:null,port:null,path:[],query:null,fragment:null,_cannotBeABaseURLFlag:!1,_blobURLEntry:null};var de=/^[\u0000-\u001F\u0020]+/,be=/[\u0000-\u001F\u0020]+$/;(de.test(K)||be.test(K))&&w("Input string contains leading or trailing control characters or space."),K=(K=K.replace(de,"")).replace(be,"")}var pe=/[\u0009\u000A\u000D]/g;pe.test(K)&&w("Input string contains tab or newline characters."),K=K.replace(pe,"");var Te=_e===void 0?l.ParserState.SchemeStart:_e;Z===void 0&&(Z=null);for(var Ye=ae===void 0||ae==="replacement"||ae==="UTF-16BE"||ae==="UTF-16LE"?"UTF-8":ae,fe="",ft=!1,gt=!1,mt=!1,Re=new c.StringWalker(K);;){switch(Te){case l.ParserState.SchemeStart:if(f.codePoint.ASCIIAlpha.test(Re.c()))fe+=Re.c().toLowerCase(),Te=l.ParserState.Scheme;else{if(_e!==void 0)return w("Invalid scheme start character."),null;Te=l.ParserState.NoScheme,Re.pointer--}break;case l.ParserState.Scheme:if(f.codePoint.ASCIIAlphanumeric.test(Re.c())||Re.c()==="+"||Re.c()==="-"||Re.c()===".")fe+=Re.c().toLowerCase();else{if(Re.c()!==":"){if(_e===void 0){fe="",Te=l.ParserState.NoScheme,Re.pointer=0;continue}return w("Invalid input string."),null}if(_e!==void 0&&(C(oe.scheme)&&!C(fe)||!C(oe.scheme)&&C(fe)||(_(oe)||oe.port!==null)&&fe==="file"||oe.scheme==="file"&&(oe.host===""||oe.host===null)))return oe;if(oe.scheme=fe,_e!==void 0)return oe.port===T(oe.scheme)&&(oe.port=null),oe;fe="",oe.scheme==="file"?(Re.remaining().startsWith("//")||w("Invalid file URL scheme, '//' expected."),Te=l.ParserState.File):S(oe)&&Z!==null&&Z.scheme===oe.scheme?Te=l.ParserState.SpecialRelativeOrAuthority:S(oe)?Te=l.ParserState.SpecialAuthoritySlashes:Re.remaining().startsWith("/")?(Te=l.ParserState.PathOrAuthority,Re.pointer++):(oe._cannotBeABaseURLFlag=!0,oe.path.push(""),Te=l.ParserState.CannotBeABaseURLPath)}break;case l.ParserState.NoScheme:if(Z===null||Z._cannotBeABaseURLFlag&&Re.c()!=="#")return w("Invalid input string."),null;Z._cannotBeABaseURLFlag&&Re.c()==="#"?(oe.scheme=Z.scheme,oe.path=f.list.clone(Z.path),oe.query=Z.query,oe.fragment="",oe._cannotBeABaseURLFlag=!0,Te=l.ParserState.Fragment):Z.scheme!=="file"?(Te=l.ParserState.Relative,Re.pointer--):(Te=l.ParserState.File,Re.pointer--);break;case l.ParserState.SpecialRelativeOrAuthority:Re.c()==="/"&&Re.remaining().startsWith("/")?(Te=l.ParserState.SpecialAuthorityIgnoreSlashes,Re.pointer++):(w("Invalid input string."),Te=l.ParserState.Relative,Re.pointer--);break;case l.ParserState.PathOrAuthority:Re.c()==="/"?Te=l.ParserState.Authority:(Te=l.ParserState.Path,Re.pointer--);break;case l.ParserState.Relative:if(Z===null)throw new Error("Invalid parser state. Base URL is null.");switch(oe.scheme=Z.scheme,Re.c()){case"":oe.username=Z.username,oe.password=Z.password,oe.host=Z.host,oe.port=Z.port,oe.path=f.list.clone(Z.path),oe.query=Z.query;break;case"/":Te=l.ParserState.RelativeSlash;break;case"?":oe.username=Z.username,oe.password=Z.password,oe.host=Z.host,oe.port=Z.port,oe.path=f.list.clone(Z.path),oe.query="",Te=l.ParserState.Query;break;case"#":oe.username=Z.username,oe.password=Z.password,oe.host=Z.host,oe.port=Z.port,oe.path=f.list.clone(Z.path),oe.query=Z.query,oe.fragment="",Te=l.ParserState.Fragment;break;default:S(oe)&&Re.c()==="\\"?(w("Invalid input string."),Te=l.ParserState.RelativeSlash):(oe.username=Z.username,oe.password=Z.password,oe.host=Z.host,oe.port=Z.port,oe.path=f.list.clone(Z.path),oe.path.length!==0&&oe.path.splice(oe.path.length-1,1),Te=l.ParserState.Path,Re.pointer--)}break;case l.ParserState.RelativeSlash:if(!S(oe)||Re.c()!=="/"&&Re.c()!=="\\")if(Re.c()==="/")Te=l.ParserState.Authority;else{if(Z===null)throw new Error("Invalid parser state. Base URL is null.");oe.username=Z.username,oe.password=Z.password,oe.host=Z.host,oe.port=Z.port,Te=l.ParserState.Path,Re.pointer--}else Re.c()==="\\"&&w("Invalid input string."),Te=l.ParserState.SpecialAuthorityIgnoreSlashes;break;case l.ParserState.SpecialAuthoritySlashes:Re.c()==="/"&&Re.remaining().startsWith("/")?(Te=l.ParserState.SpecialAuthorityIgnoreSlashes,Re.pointer++):(w("Expected '//'."),Te=l.ParserState.SpecialAuthorityIgnoreSlashes,Re.pointer--);break;case l.ParserState.SpecialAuthorityIgnoreSlashes:Re.c()!=="/"&&Re.c()!=="\\"?(Te=l.ParserState.Authority,Re.pointer--):w("Unexpected '/' or '\\'.");break;case l.ParserState.Authority:if(Re.c()==="@"){w("Unexpected '@'."),ft&&(fe="%40"+fe),ft=!0;try{for(var Je=(Oe=void 0,o(fe)),at=Je.next();!at.done;at=Je.next()){var tt=at.value;if(tt!==":"||mt){var wt=Ee(tt,v);mt?oe.password+=wt:oe.username+=wt}else mt=!0}}catch(qn){Oe={error:qn}}finally{try{at&&!at.done&&(Ge=Je.return)&&Ge.call(Je)}finally{if(Oe)throw Oe.error}}fe=""}else if(Re.c()===""||Re.c()==="/"||Re.c()==="?"||Re.c()==="#"||S(oe)&&Re.c()==="\\"){if(ft&&fe==="")return w("Invalid input string."),null;Re.pointer-=fe.length+1,fe="",Te=l.ParserState.Host}else fe+=Re.c();break;case l.ParserState.Host:case l.ParserState.Hostname:if(_e!==void 0&&oe.scheme==="file")Re.pointer--,Te=l.ParserState.FileHost;else if(Re.c()!==":"||gt)if(Re.c()===""||Re.c()==="/"||Re.c()==="?"||Re.c()==="#"||S(oe)&&Re.c()==="\\"){if(Re.pointer--,S(oe)&&fe==="")return w("Invalid input string."),null;if(_e!==void 0&&fe===""&&(_(oe)||oe.port!==null))return w("Invalid input string."),oe;if((Ct=G(fe,!S(oe)))===null)return null;if(oe.host=Ct,fe="",Te=l.ParserState.PathStart,_e!==void 0)return oe}else Re.c()==="["&&(gt=!0),Re.c()==="]"&&(gt=!1),fe+=Re.c();else{if(fe==="")return w("Invalid input string."),null;if((Ct=G(fe,!S(oe)))===null)return null;if(oe.host=Ct,fe="",Te=l.ParserState.Port,_e===l.ParserState.Hostname)return oe}break;case l.ParserState.Port:if(f.codePoint.ASCIIDigit.test(Re.c()))fe+=Re.c();else{if(!(Re.c()===""||Re.c()==="/"||Re.c()==="?"||Re.c()==="#"||S(oe)&&Re.c()==="\\"||_e))return w("Invalid input string."),null;if(fe!==""&&fe!==""){var Bt=parseInt(fe,10);if(Bt>Math.pow(2,16)-1)return w("Invalid port number."),null;oe.port=Bt===T(oe.scheme)?null:Bt,fe=""}if(_e!==void 0)return oe;Te=l.ParserState.PathStart,Re.pointer--}break;case l.ParserState.File:if(oe.scheme="file",Re.c()==="/"||Re.c()==="\\")Re.c()==="\\"&&w("Invalid input string."),Te=l.ParserState.FileSlash;else if(Z!==null&&Z.scheme==="file")switch(Re.c()){case"":oe.host=Z.host,oe.path=f.list.clone(Z.path),oe.query=Z.query;break;case"?":oe.host=Z.host,oe.path=f.list.clone(Z.path),oe.query="",Te=l.ParserState.Query;break;case"#":oe.host=Z.host,oe.path=f.list.clone(Z.path),oe.query=Z.query,oe.fragment="",Te=l.ParserState.Fragment;break;default:F(Re.substring())?w("Unexpected windows drive letter in input string."):(oe.host=Z.host,oe.path=f.list.clone(Z.path),B(oe)),Te=l.ParserState.Path,Re.pointer--}else Te=l.ParserState.Path,Re.pointer--;break;case l.ParserState.FileSlash:Re.c()==="/"||Re.c()==="\\"?(Re.c()==="\\"&&w("Invalid input string."),Te=l.ParserState.FileHost):(Z===null||Z.scheme!=="file"||F(Re.substring())||(j(Z.path[0])?oe.path.push(Z.path[0]):oe.host=Z.host),Te=l.ParserState.Path,Re.pointer--);break;case l.ParserState.FileHost:if(Re.c()===""||Re.c()==="/"||Re.c()==="\\"||Re.c()==="?"||Re.c()==="#")if(Re.pointer--,_e===void 0&&V(fe))w("Unexpected windows drive letter in input string."),Te=l.ParserState.Path;else if(fe===""){if(oe.host="",_e!==void 0)return oe;Te=l.ParserState.PathStart}else{var Ct;if((Ct=G(fe,!S(oe)))===null)return null;if(Ct==="localhost"&&(Ct=""),oe.host=Ct,_e!==void 0)return oe;fe="",Te=l.ParserState.PathStart}else fe+=Re.c();break;case l.ParserState.PathStart:S(oe)?(Re.c()==="\\"&&w("Invalid input string."),Te=l.ParserState.Path,Re.c()!=="/"&&Re.c()!=="\\"&&Re.pointer--):_e===void 0&&Re.c()==="?"?(oe.query="",Te=l.ParserState.Query):_e===void 0&&Re.c()==="#"?(oe.fragment="",Te=l.ParserState.Fragment):Re.c()!==""&&(Te=l.ParserState.Path,Re.c()!=="/"&&Re.pointer--);break;case l.ParserState.Path:if(Re.c()===""||Re.c()==="/"||S(oe)&&Re.c()==="\\"||_e===void 0&&(Re.c()==="?"||Re.c()==="#")){if(S(oe)&&Re.c()==="\\"&&w("Invalid input string."),L(fe))B(oe),Re.c()==="/"||S(oe)&&Re.c()==="\\"||oe.path.push("");else if(!M(fe)||Re.c()==="/"||S(oe)&&Re.c()==="\\"){if(!M(fe)){if(oe.scheme==="file"&&oe.path.length===0&&V(fe)){oe.host!==null&&oe.host!==""&&(w("Invalid input string."),oe.host="");var Ht=Array.from(fe);fe=Ht.slice(0,1)+":"+Ht.slice(2)}oe.path.push(fe)}}else oe.path.push("");if(fe="",oe.scheme==="file"&&(Re.c()===""||Re.c()==="?"||Re.c()==="#"))for(;oe.path.length>1&&oe.path[0]==="";)w("Invalid input string."),oe.path.splice(0,1);Re.c()==="?"&&(oe.query="",Te=l.ParserState.Query),Re.c()==="#"&&(oe.fragment="",Te=l.ParserState.Fragment)}else y.test(Re.c())||Re.c()==="%"||w("Character is not a URL code point or a percent encoded character."),Re.c()!=="%"||/^[0-9a-fA-F][0-9a-fA-F]/.test(Re.remaining())||w("Percent encoded character must be followed by two hex digits."),fe+=Ee(Re.c(),p);break;case l.ParserState.CannotBeABaseURLPath:Re.c()==="?"?(oe.query="",Te=l.ParserState.Query):Re.c()==="#"?(oe.fragment="",Te=l.ParserState.Fragment):(Re.c()===""||y.test(Re.c())||Re.c()==="%"||w("Character is not a URL code point or a percent encoded character."),Re.c()!=="%"||/^[0-9a-fA-F][0-9a-fA-F]/.test(Re.remaining())||w("Percent encoded character must be followed by two hex digits."),Re.c()!==""&&(oe.path[0]+=Ee(Re.c(),h)));break;case l.ParserState.Query:if(Ye==="UTF-8"||S(oe)&&oe.scheme!=="ws"&&oe.scheme!=="wss"||(Ye="UTF-8"),_e===void 0&&Re.c()==="#")oe.fragment="",Te=l.ParserState.Fragment;else if(Re.c()!==""){if(y.test(Re.c())||Re.c()==="%"||w("Character is not a URL code point or a percent encoded character."),Re.c()!=="%"||/^[0-9a-fA-F][0-9a-fA-F]/.test(Re.remaining())||w("Percent encoded character must be followed by two hex digits."),Ye.toUpperCase()!=="UTF-8")throw new Error("Only UTF-8 encoding is supported.");var $t=c.utf8Encode(Re.c());if($t.length>=3&&$t[0]===38&&$t[1]===35&&$t[$t.length-1]===59)$t=$t.subarray(2,$t.length-1),oe.query+="%26%23"+f.byteSequence.isomorphicDecode($t)+"%3B";else try{for(var dn=($e=void 0,o($t)),Nn=dn.next();!Nn.done;Nn=dn.next()){var Kt=Nn.value;Kt<33||Kt>126||Kt===34||Kt===35||Kt===60||Kt===62||Kt===39&&S(oe)?oe.query+=ye(Kt):oe.query+=String.fromCharCode(Kt)}}catch(qn){$e={error:qn}}finally{try{Nn&&!Nn.done&&(le=dn.return)&&le.call(dn)}finally{if($e)throw $e.error}}}break;case l.ParserState.Fragment:Re.c()===""||(Re.c()==="\0"?w("NULL character in input string."):(y.test(Re.c())||Re.c()==="%"||w("Unexpected character in fragment string."),Re.c()!=="%"||/^[A-Za-z0-9][A-Za-z0-9]/.test(Re.remaining())||w("Unexpected character in fragment string."),oe.fragment+=Ee(Re.c(),g)))}if(Re.eof)break;Re.pointer++}return oe}function M(K){return K==="."||K.toLowerCase()==="%2e"}function L(K){var Z=K.toLowerCase();return Z===".."||Z===".%2e"||Z==="%2e."||Z==="%2e%2e"}function B(K){var Z=K.path;Z.length!==0&&(K.scheme==="file"&&Z.length===1&&j(Z[0])||K.path.splice(K.path.length-1,1))}function j(K){return K.length>=2&&f.codePoint.ASCIIAlpha.test(K[0])&&K[1]===":"}function V(K){return K.length>=2&&f.codePoint.ASCIIAlpha.test(K[0])&&(K[1]===":"||K[1]==="|")}function F(K){return K.length>=2&&V(K)&&(K.length===2||K[2]==="/"||K[2]==="\\"||K[2]==="?"||K[2]==="#")}function G(K,Z){if(Z===void 0&&(Z=!1),K.startsWith("["))return K.endsWith("]")?ue(K.substring(1,K.length-1)):(w("Expected ']' after '['."),null);if(Z)return me(K);var ae=Y(c.utf8Decode(Pe(K)));if(ae===null||m.test(ae))return w("Invalid domain."),null;var oe=ne(ae);return oe===null||c.isNumber(oe)?oe:ae}function X(K,Z){Z===void 0&&(Z={value:!1});var ae=10;return K.startsWith("0x")||K.startsWith("0X")?(Z.value=!0,K=K.substr(2),ae=16):K.length>=2&&K[0]==="0"&&(Z.value=!0,K=K.substr(1),ae=8),K===""?0:(ae===10?/^[0-9]+$/:ae===16?/^[0-9A-Fa-f]+$/:/^[0-7]+$/).test(K)?parseInt(K,ae):null}function ne(K){var Z,ae,oe,_e,Oe={value:!1},Ge=K.split(".");if(Ge[Ge.length-1]===""&&(Oe.value=!0,Ge.length>1&&Ge.pop()),Ge.length>4)return K;var $e=[];try{for(var le=o(Ge),de=le.next();!de.done;de=le.next()){var be=de.value;if(be===""||(gt=X(be,Oe))===null)return K;$e.push(gt)}}catch(mt){Z={error:mt}}finally{try{de&&!de.done&&(ae=le.return)&&ae.call(le)}finally{if(Z)throw Z.error}}Oe.value&&w("Invalid IP v4 address.");for(var pe=0;pe<$e.length;pe++)if($e[pe]>255&&(w("Invalid IP v4 address."),pe<$e.length-1))return null;if($e[$e.length-1]>=Math.pow(256,5-$e.length))return w("Invalid IP v4 address."),null;var Te=$e[$e.length-1];$e.pop();var Ye=0;try{for(var fe=o($e),ft=fe.next();!ft.done;ft=fe.next()){var gt;Te+=(gt=ft.value)*Math.pow(256,3-Ye),Ye++}}catch(mt){oe={error:mt}}finally{try{ft&&!ft.done&&(_e=fe.return)&&_e.call(fe)}finally{if(oe)throw oe.error}}return Te}function ue(K){var Z,ae=[0,0,0,0,0,0,0,0],oe=0,_e=null,Oe=new c.StringWalker(K);if(Oe.c()===":"){if(!Oe.remaining().startsWith(":"))return w("Invalid IP v6 address."),null;Oe.pointer+=2,_e=oe+=1}for(;Oe.c()!=="";){if(oe===8)return w("Invalid IP v6 address."),null;if(Oe.c()!==":"){for(var Ge=0,$e=0;$e<4&&f.codePoint.ASCIIHexDigit.test(Oe.c());)Ge=16*Ge+parseInt(Oe.c(),16),Oe.pointer++,$e++;if(Oe.c()==="."){if($e===0||(Oe.pointer-=$e,oe>6))return w("Invalid IP v6 address."),null;for(var le=0;Oe.c()!=="";){var de=null;if(le>0){if(!(Oe.c()==="."&&le<4))return w("Invalid IP v6 address."),null;Oe.pointer++}if(!f.codePoint.ASCIIDigit.test(Oe.c()))return w("Invalid IP v6 address."),null;for(;f.codePoint.ASCIIDigit.test(Oe.c());){var be=parseInt(Oe.c(),10);if(de===null)de=be;else{if(de===0)return w("Invalid IP v6 address."),null;de=10*de+be}if(de>255)return w("Invalid IP v6 address."),null;Oe.pointer++}if(de===null)return w("Invalid IP v6 address."),null;ae[oe]=256*ae[oe]+de,++le!==2&&le!==4||oe++}if(le!==4)return w("Invalid IP v6 address."),null;break}if(Oe.c()===":"){if(Oe.pointer++,Oe.c()==="")return w("Invalid IP v6 address."),null}else if(Oe.c()!=="")return w("Invalid IP v6 address."),null;ae[oe]=Ge,oe++}else{if(_e!==null)return w("Invalid IP v6 address."),null;Oe.pointer++,_e=++oe}}if(_e!==null){var pe=oe-_e;for(oe=7;oe!==0&&pe>0;)Z=a([ae[_e+pe-1],ae[oe]],2),ae[oe]=Z[0],ae[_e+pe-1]=Z[1],oe--,pe--}else if(_e===null&&oe!==8)return w("Invalid IP v6 address."),null;return ae}function me(K){var Z,ae;if(/[\x00\t\f\r #/:?@\[\\\]]/.test(K))return w("Invalid host string."),null;var oe="";try{for(var _e=o(K),Oe=_e.next();!Oe.done;Oe=_e.next())oe+=Ee(Oe.value,h)}catch(Ge){Z={error:Ge}}finally{try{Oe&&!Oe.done&&(ae=_e.return)&&ae.call(_e)}finally{if(Z)throw Z.error}}return oe}function ge(K){return null}function ye(K){return"%"+("00"+K.toString(16).toUpperCase()).slice(-2)}function Ie(K){for(var Z=function($e){return $e>=48&&$e<=57||$e>=65&&$e<=70||$e>=97&&$e<=102},ae=new Uint8Array(K.length),oe=0,_e=0;_e=K.length-2)ae[oe]=Oe,oe++;else if(Oe!==37||Z(K[_e+1])&&Z(K[_e+2])){var Ge=parseInt(c.utf8Decode(Uint8Array.of(K[_e+1],K[_e+2])),16);ae[oe]=Ge,oe++,_e+=2}else ae[oe]=Oe,oe++}return ae.subarray(0,oe)}function Pe(K){return Ie(c.utf8Encode(K))}function Ee(K,Z){var ae,oe;if(!Z.test(K))return K;var _e=c.utf8Encode(K),Oe="";try{for(var Ge=o(_e),$e=Ge.next();!$e.done;$e=Ge.next())Oe+=ye($e.value)}catch(le){ae={error:le}}finally{try{$e&&!$e.done&&(oe=Ge.return)&&oe.call(Ge)}finally{if(ae)throw ae.error}}return Oe}function H(K){var Z,ae,oe,_e,Oe=[],Ge=[];try{for(var $e=o(K),le=$e.next();!le.done;le=$e.next()){var de=le.value;de===38?(Oe.push(Uint8Array.from(Ge)),Ge=[]):Ge.push(de)}}catch(at){Z={error:at}}finally{try{le&&!le.done&&(ae=$e.return)&&ae.call($e)}finally{if(Z)throw Z.error}}Ge.length!==0&&Oe.push(Uint8Array.from(Ge));var be=[];try{for(var pe=o(Oe),Te=pe.next();!Te.done;Te=pe.next()){var Ye=Te.value;if(Ye.length!==0){for(var fe=Ye.indexOf(61),ft=fe!==-1?Ye.slice(0,fe):Ye,gt=fe!==-1?Ye.slice(fe+1):new Uint8Array,mt=0;mt=48&&Ge<=57||Ge>=65&&Ge<=90||Ge===95||Ge>=97&&Ge<=122?String.fromCodePoint(Ge):ye(Ge)}}catch($e){Z={error:$e}}finally{try{Oe&&!Oe.done&&(ae=_e.return)&&ae.call(_e)}finally{if(Z)throw Z.error}}return oe}function Y(K,Z){var ae=u.domainToASCII(K);return ae===""?(w("Invalid domain name."),null):ae}n.setValidationErrorCallback=function(K){s=K},n.newURL=x,n.isSpecialScheme=C,n.isSpecial=S,n.defaultPort=T,n.includesCredentials=_,n.cannotHaveAUsernamePasswordPort=function(K){return K.host===null||K.host===""||K._cannotBeABaseURLFlag||K.scheme==="file"},n.urlSerializer=E,n.hostSerializer=b,n.iPv4Serializer=D,n.iPv6Serializer=I,n.urlParser=function(K,Z,ae){var oe=P(K,Z,ae);return oe===null?null:(oe.scheme!=="blob"||(oe._blobURLEntry=null),oe)},n.basicURLParser=P,n.setTheUsername=function(K,Z){var ae,oe,_e="";try{for(var Oe=o(Z),Ge=Oe.next();!Ge.done;Ge=Oe.next())_e+=Ee(Ge.value,v)}catch($e){ae={error:$e}}finally{try{Ge&&!Ge.done&&(oe=Oe.return)&&oe.call(Oe)}finally{if(ae)throw ae.error}}K.username=_e},n.setThePassword=function(K,Z){var ae,oe,_e="";try{for(var Oe=o(Z),Ge=Oe.next();!Ge.done;Ge=Oe.next())_e+=Ee(Ge.value,v)}catch($e){ae={error:$e}}finally{try{Ge&&!Ge.done&&(oe=Oe.return)&&oe.call(Oe)}finally{if(ae)throw ae.error}}K.password=_e},n.isSingleDotPathSegment=M,n.isDoubleDotPathSegment=L,n.shorten=B,n.isNormalizedWindowsDriveLetter=j,n.isWindowsDriveLetter=V,n.startsWithAWindowsDriveLetter=F,n.hostParser=G,n.iPv4NumberParser=X,n.iPv4Parser=ne,n.iPv6Parser=ue,n.opaqueHostParser=me,n.resolveABlobURL=ge,n.percentEncode=ye,n.percentDecode=Ie,n.stringPercentDecode=Pe,n.utf8PercentEncode=Ee,n.hostEquals=function(K,Z){return K===Z},n.urlEquals=function(K,Z,ae){return ae===void 0&&(ae=!1),E(K,ae)===E(Z,ae)},n.urlEncodedStringParser=function(K){return H(c.utf8Encode(K))},n.urlEncodedParser=H,n.urlEncodedByteSerializer=O,n.urlEncodedSerializer=function(K,Z){var ae,oe;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 _e="";try{for(var Oe=o(K),Ge=Oe.next();!Ge.done;Ge=Oe.next()){var $e=Ge.value,le=O(c.utf8Encode($e[0])),de=$e[1];de=O(c.utf8Encode(de)),_e!==""&&(_e+="&"),_e+=le+"="+de}}catch(be){ae={error:be}}finally{try{Ge&&!Ge.done&&(oe=Oe.return)&&oe.call(Oe)}finally{if(ae)throw ae.error}}return _e},n.origin=function K(Z){switch(Z.scheme){case"blob":Z._blobURLEntry;var ae=P(Z.path[0]);return ae===null?l.OpaqueOrigin:K(ae);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=Y,n.domainToUnicode=function(K,Z){var ae=u.domainToUnicode(K);return ae===""&&w("Invalid domain name."),ae},n.asciiSerializationOfAnOrigin=function(K){if(K[0]===""&&K[1]===""&&K[2]===null&&K[3]===null)return"null";var Z=K[0]+"://"+b(K[1]);return K[2]!==null&&(Z+=":"+K[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 y=v.value;f.call(u,y,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[w++],done:!v}}};throw new TypeError(y?"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 y(){var m=v.call(this)||this,w=c.dom.window._associatedDocument;return m._start=[w,0],m._end=[w,0],c.dom.rangeList.add(m),m}return a(y,v),Object.defineProperty(y.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}),y.prototype.setStart=function(m,w){d.range_setTheStart(this,m,w)},y.prototype.setEnd=function(m,w){d.range_setTheEnd(this,m,w)},y.prototype.setStartBefore=function(m){var w=m._parent;if(w===null)throw new u.InvalidNodeTypeError;d.range_setTheStart(this,w,d.tree_index(m))},y.prototype.setStartAfter=function(m){var w=m._parent;if(w===null)throw new u.InvalidNodeTypeError;d.range_setTheStart(this,w,d.tree_index(m)+1)},y.prototype.setEndBefore=function(m){var w=m._parent;if(w===null)throw new u.InvalidNodeTypeError;d.range_setTheEnd(this,w,d.tree_index(m))},y.prototype.setEndAfter=function(m){var w=m._parent;if(w===null)throw new u.InvalidNodeTypeError;d.range_setTheEnd(this,w,d.tree_index(m)+1)},y.prototype.collapse=function(m){m?this._end=this._start:this._start=this._end},y.prototype.selectNode=function(m){d.range_select(m,this)},y.prototype.selectNodeContents=function(m){if(g.Guard.isDocumentTypeNode(m))throw new u.InvalidNodeTypeError;var w=d.tree_nodeLength(m);this._start=[m,0],this._end=[m,w]},y.prototype.compareBoundaryPoints=function(m,w){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(w))throw new u.WrongDocumentError;var x,C;switch(m){case l.HowToCompare.StartToStart:x=this._start,C=w._start;break;case l.HowToCompare.StartToEnd:x=this._end,C=w._start;break;case l.HowToCompare.EndToEnd:x=this._end,C=w._end;break;case l.HowToCompare.EndToStart:x=this._start,C=w._end;break;default:throw new u.NotSupportedError}var S=d.boundaryPoint_position(x,C);return S===l.BoundaryPosition.Before?-1:S===l.BoundaryPosition.After?1:0},y.prototype.deleteContents=function(){var m,w,x,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 b,D,I=[];try{for(var P=s(d.range_getContainedNodes(this)),M=P.next();!M.done;M=P.next()){var L=(F=M.value)._parent;L!==null&&d.range_isContained(L,this)||I.push(F)}}catch(G){m={error:G}}finally{try{M&&!M.done&&(w=P.return)&&w.call(P)}finally{if(m)throw m.error}}if(d.tree_isAncestorOf(_,S,!0))b=S,D=T;else{for(var B=S;B._parent!==null&&!d.tree_isAncestorOf(_,B._parent,!0);)B=B._parent;if(B._parent===null)throw new Error("Parent node is null.");b=B._parent,D=d.tree_index(B)+1}g.Guard.isCharacterDataNode(S)&&d.characterData_replaceData(S,T,d.tree_nodeLength(S)-T,"");try{for(var j=s(I),V=j.next();!V.done;V=j.next()){var F;(F=V.value)._parent&&d.mutation_remove(F,F._parent)}}catch(G){x={error:G}}finally{try{V&&!V.done&&(C=j.return)&&C.call(j)}finally{if(x)throw x.error}}g.Guard.isCharacterDataNode(_)&&d.characterData_replaceData(_,0,E,""),this._start=[b,D],this._end=[b,D]}}},y.prototype.extractContents=function(){return d.range_extract(this)},y.prototype.cloneContents=function(){return d.range_cloneTheContents(this)},y.prototype.insertNode=function(m){return d.range_insert(m,this)},y.prototype.surroundContents=function(m){var w,x;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){w={error:E}}finally{try{S&&!S.done&&(x=C.return)&&x.call(C)}finally{if(w)throw w.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)},y.prototype.cloneRange=function(){return d.create_range(this._start,this._end)},y.prototype.detach=function(){c.dom.rangeList.delete(this)},y.prototype.isPointInRange=function(m,w){if(d.tree_rootNode(m)!==d.range_root(this))return!1;if(g.Guard.isDocumentTypeNode(m))throw new u.InvalidNodeTypeError;if(w>d.tree_nodeLength(m))throw new u.IndexSizeError;var x=[m,w];return d.boundaryPoint_position(x,this._start)!==l.BoundaryPosition.Before&&d.boundaryPoint_position(x,this._end)!==l.BoundaryPosition.After},y.prototype.comparePoint=function(m,w){if(d.tree_rootNode(m)!==d.range_root(this))throw new u.WrongDocumentError;if(g.Guard.isDocumentTypeNode(m))throw new u.InvalidNodeTypeError;if(w>d.tree_nodeLength(m))throw new u.IndexSizeError;var x=[m,w];return d.boundaryPoint_position(x,this._start)===l.BoundaryPosition.Before?-1:d.boundaryPoint_position(x,this._end)===l.BoundaryPosition.After?1:0},y.prototype.intersectsNode=function(m){if(d.tree_rootNode(m)!==d.range_root(this))return!1;var w=m._parent;if(w===null)return!0;var x=d.tree_index(m);return d.boundaryPoint_position([w,x],this._end)===l.BoundaryPosition.Before&&d.boundaryPoint_position([w,x+1],this._start)===l.BoundaryPosition.After},y.prototype.toString=function(){var m,w,x="";if(this._startNode===this._endNode&&g.Guard.isTextNode(this._startNode))return this._startNode._data.substring(this._startOffset,this._endOffset);g.Guard.isTextNode(this._startNode)&&(x+=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)&&(x+=T._data)}}catch(_){m={error:_}}finally{try{S&&!S.done&&(w=C.return)&&w.call(C)}finally{if(m)throw m.error}}return g.Guard.isTextNode(this._endNode)&&(x+=this._endNode._data.substring(0,this._endOffset)),x},y._create=function(m,w){var x=new y;return m&&(x._start=m),w&&(x._end=w),x},y.START_TO_START=0,y.START_TO_END=1,y.END_TO_END=2,y.END_TO_START=3,y}(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(y,m,w,x,C){m===v._attribute._localName&&C===null&&(x?v._tokenSet=l.orderedSet_parse(x):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),y=v.next();!y.done;y=v.next()){var m=y.value;if(p===d)return m;p++}}catch(w){h={error:w}}finally{try{y&&!y.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[y++],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,y){var m,w,x,C,S;if(v===void 0&&(v=null),y===void 0&&(y=!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&&(w=T.return)&&w.call(T)}finally{if(m)throw m.error}}}else if(s.Guard.isDocumentNode(p)){var b=l.create_document();b._encoding=p._encoding,b._contentType=p._contentType,b._URL=p._URL,b._origin=p._origin,b._type=p._type,b._mode=p._mode,S=b}else if(s.Guard.isDocumentTypeNode(p))S=l.create_documentType(v,p._name,p._publicId,p._systemId);else if(s.Guard.isAttrNode(p)){var D=l.create_attr(v,p.localName);D._namespace=p._namespace,D._namespacePrefix=p._namespacePrefix,D._value=p._value,S=D}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,y),y)try{for(var I=o(p._children),P=I.next();!P.done;P=I.next()){var M=g(P.value,v,!0);d.mutation_append(M,S)}}catch(L){x={error:L}}finally{try{P&&!P.done&&(C=I.return)&&C.call(I)}finally{if(x)throw x.error}}return S},n.node_equals=function g(p,v){var y,m,w,x;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[(b=T.value)._localName]=b}catch(B){y={error:B}}finally{try{T&&!T.done&&(m=S.return)&&m.call(S)}finally{if(y)throw y.error}}try{for(var _=o(v._attributeList),E=_.next();!E.done;E=_.next()){var b,D=E.value;if(!(b=C[D._localName])||!g(b,D))return!1}}catch(B){w={error:B}}finally{try{E&&!E.done&&(x=_.return)&&x.call(_)}finally{if(w)throw w.error}}}if(p._children.size!==v._children.size)return!1;for(var I=p._children[Symbol.iterator](),P=v._children[Symbol.iterator](),M=I.next(),L=P.next();!M.done&&!L.done;){if(!g(M.value,L.value))return!1;M=I.next(),L=P.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(y){return y._localName===p}):p==="*"?l.create_htmlCollection(v,function(y){return y._namespace===g}):l.create_htmlCollection(v,function(y){return y._localName===p&&y._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 y=p._nodeDocument._mode!=="quirks";return l.create_htmlCollection(p,function(m){var w=m.classList;return f.orderedSet_contains(w._tokenSet,v,y)})},n.node_locateANamespacePrefix=function g(p,v){if(p._namespace===v&&p._namespacePrefix!==null)return p._namespacePrefix;for(var y=0;y=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 y={done:!1,value:v};return v=s.Guard.isTextNode(v._nextSibling)?v._nextSibling:null,y}}},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 y={done:!1,value:v};return v=s.Guard.isExclusiveTextNode(v._nextSibling)?v._nextSibling:null,y}}},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,y=h._data.length;if(g>y)throw new c.IndexSizeError;var m=y-g,w=u.characterData_substringData(h,g,m),x=l.create_text(h._nodeDocument,w),C=h._parent;if(C!==null){d.mutation_insert(x,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]=x,_._start[1]-=g),_._end[0]===h&&_._end[1]>g&&(_._end[0]=x,_._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(b){p={error:b}}finally{try{T&&!T.done&&(v=S.return)&&v.call(S)}finally{if(p)throw p.error}}}return u.characterData_replaceData(h,g,m,""),x}},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._index=l())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+l().toString(16)+" bytes");return 0|$}function y($,R){if(u.isBuffer($))return $.length;if(typeof ArrayBuffer<"u"&&typeof ArrayBuffer.isView=="function"&&(ArrayBuffer.isView($)||$ instanceof ArrayBuffer))return $.byteLength;typeof $!="string"&&($=""+$);var X=$.length;if(X===0)return 0;for(var K=!1;;)switch(R){case"ascii":case"latin1":case"binary":return X;case"utf8":case"utf-8":case void 0:return Ie($).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*X;case"hex":return X>>>1;case"base64":return Le($).length;default:if(K)return Ie($).length;R=(""+R).toLowerCase(),K=!0}}function m($,R,X){var K=!1;if((R===void 0||R<0)&&(R=0),R>this.length||((X===void 0||X>this.length)&&(X=this.length),X<=0)||(X>>>=0)<=(R>>>=0))return"";for($||($="utf8");;)switch($){case"hex":return G(this,R,X);case"utf8":case"utf-8":return L(this,R,X);case"ascii":return P(this,R,X);case"latin1":case"binary":return k(this,R,X);case"base64":return O(this,R,X);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return j(this,R,X);default:if(K)throw new TypeError("Unknown encoding: "+$);$=($+"").toLowerCase(),K=!0}}function w($,R,X){var K=$[R];$[R]=$[X],$[X]=K}function x($,R,X,K,Z){if($.length===0)return-1;if(typeof X=="string"?(K=X,X=0):X>2147483647?X=2147483647:X<-2147483648&&(X=-2147483648),X=+X,isNaN(X)&&(X=Z?0:$.length-1),X<0&&(X=$.length+X),X>=$.length){if(Z)return-1;X=$.length-1}else if(X<0){if(!Z)return-1;X=0}if(typeof R=="string"&&(R=u.from(R,K)),u.isBuffer(R))return R.length===0?-1:C($,R,X,K,Z);if(typeof R=="number")return R&=255,u.TYPED_ARRAY_SUPPORT&&typeof Uint8Array.prototype.indexOf=="function"?Z?Uint8Array.prototype.indexOf.call($,R,X):Uint8Array.prototype.lastIndexOf.call($,R,X):C($,[R],X,K,Z);throw new TypeError("val must be string, number or Buffer")}function C($,R,X,K,Z){var ie,oe=1,Te=$.length,Oe=R.length;if(K!==void 0&&((K=String(K).toLowerCase())==="ucs2"||K==="ucs-2"||K==="utf16le"||K==="utf-16le")){if($.length<2||R.length<2)return-1;oe=2,Te/=2,Oe/=2,X/=2}function Ve(Se,he){return oe===1?Se[he]:Se.readUInt16BE(he*oe)}if(Z){var Ge=-1;for(ie=X;ieTe&&(X=Te-Oe),ie=X;ie>=0;ie--){for(var ce=!0,fe=0;feZ&&(K=Z):K=Z;var ie=R.length;if(ie%2!=0)throw new TypeError("Invalid hex string");K>ie/2&&(K=ie/2);for(var oe=0;oe>8,Oe=oe%256,Ve.push(Oe),Ve.push(Te);return Ve}(R,$.length-X),$,X,K)}function O($,R,X){return R===0&&X===$.length?a.fromByteArray($):a.fromByteArray($.slice(R,X))}function L($,R,X){X=Math.min($.length,X);for(var K=[],Z=R;Z239?4:Ve>223?3:Ve>191?2:1;if(Z+ce<=X)switch(ce){case 1:Ve<128&&(Ge=Ve);break;case 2:(192&(ie=$[Z+1]))==128&&(Oe=(31&Ve)<<6|63&ie)>127&&(Ge=Oe);break;case 3:ie=$[Z+1],oe=$[Z+2],(192&ie)==128&&(192&oe)==128&&(Oe=(15&Ve)<<12|(63&ie)<<6|63&oe)>2047&&(Oe<55296||Oe>57343)&&(Ge=Oe);break;case 4:ie=$[Z+1],oe=$[Z+2],Te=$[Z+3],(192&ie)==128&&(192&oe)==128&&(192&Te)==128&&(Oe=(15&Ve)<<18|(63&ie)<<12|(63&oe)<<6|63&Te)>65535&&Oe<1114112&&(Ge=Oe)}Ge===null?(Ge=65533,ce=1):Ge>65535&&(Ge-=65536,K.push(Ge>>>10&1023|55296),Ge=56320|1023&Ge),K.push(Ge),Z+=ce}return function(fe){var Se=fe.length;if(Se<=4096)return String.fromCharCode.apply(String,fe);for(var he="",xe=0;xe0&&($=this.toString("hex",0,R).match(/.{2}/g).join(" "),this.length>R&&($+=" ... ")),""},u.prototype.compare=function($,R,X,K,Z){if(!u.isBuffer($))throw new TypeError("Argument must be a Buffer");if(R===void 0&&(R=0),X===void 0&&(X=$?$.length:0),K===void 0&&(K=0),Z===void 0&&(Z=this.length),R<0||X>$.length||K<0||Z>this.length)throw new RangeError("out of range index");if(K>=Z&&R>=X)return 0;if(K>=Z)return-1;if(R>=X)return 1;if(this===$)return 0;for(var ie=(Z>>>=0)-(K>>>=0),oe=(X>>>=0)-(R>>>=0),Te=Math.min(ie,oe),Oe=this.slice(K,Z),Ve=$.slice(R,X),Ge=0;GeZ)&&(X=Z),$.length>0&&(X<0||R<0)||R>this.length)throw new RangeError("Attempt to write outside buffer bounds");K||(K="utf8");for(var ie=!1;;)switch(K){case"hex":return S(this,$,R,X);case"utf8":case"utf-8":return T(this,$,R,X);case"ascii":return _(this,$,R,X);case"latin1":case"binary":return E(this,$,R,X);case"base64":return b(this,$,R,X);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return D(this,$,R,X);default:if(ie)throw new TypeError("Unknown encoding: "+K);K=(""+K).toLowerCase(),ie=!0}},u.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function P($,R,X){var K="";X=Math.min($.length,X);for(var Z=R;ZK)&&(X=K);for(var Z="",ie=R;ieX)throw new RangeError("Trying to access beyond buffer length")}function U($,R,X,K,Z,ie){if(!u.isBuffer($))throw new TypeError('"buffer" argument must be a Buffer instance');if(R>Z||R$.length)throw new RangeError("Index out of range")}function W($,R,X,K){R<0&&(R=65535+R+1);for(var Z=0,ie=Math.min($.length-X,2);Z>>8*(K?Z:1-Z)}function J($,R,X,K){R<0&&(R=4294967295+R+1);for(var Z=0,ie=Math.min($.length-X,4);Z>>8*(K?Z:3-Z)&255}function te($,R,X,K,Z,ie){if(X+K>$.length)throw new RangeError("Index out of range");if(X<0)throw new RangeError("Index out of range")}function le($,R,X,K,Z){return Z||te($,0,X,4),s.write($,R,X,K,23,4),X+4}function ve($,R,X,K,Z){return Z||te($,0,X,8),s.write($,R,X,K,52,8),X+8}u.prototype.slice=function($,R){var X,K=this.length;if(($=~~$)<0?($+=K)<0&&($=0):$>K&&($=K),(R=R===void 0?K:~~R)<0?(R+=K)<0&&(R=0):R>K&&(R=K),R<$&&(R=$),u.TYPED_ARRAY_SUPPORT)(X=this.subarray($,R)).__proto__=u.prototype;else{var Z=R-$;X=new u(Z,void 0);for(var ie=0;ie0&&(Z*=256);)K+=this[$+--R]*Z;return K},u.prototype.readUInt8=function($,R){return R||F($,1,this.length),this[$]},u.prototype.readUInt16LE=function($,R){return R||F($,2,this.length),this[$]|this[$+1]<<8},u.prototype.readUInt16BE=function($,R){return R||F($,2,this.length),this[$]<<8|this[$+1]},u.prototype.readUInt32LE=function($,R){return R||F($,4,this.length),(this[$]|this[$+1]<<8|this[$+2]<<16)+16777216*this[$+3]},u.prototype.readUInt32BE=function($,R){return R||F($,4,this.length),16777216*this[$]+(this[$+1]<<16|this[$+2]<<8|this[$+3])},u.prototype.readIntLE=function($,R,X){$|=0,R|=0,X||F($,R,this.length);for(var K=this[$],Z=1,ie=0;++ie=(Z*=128)&&(K-=Math.pow(2,8*R)),K},u.prototype.readIntBE=function($,R,X){$|=0,R|=0,X||F($,R,this.length);for(var K=R,Z=1,ie=this[$+--K];K>0&&(Z*=256);)ie+=this[$+--K]*Z;return ie>=(Z*=128)&&(ie-=Math.pow(2,8*R)),ie},u.prototype.readInt8=function($,R){return R||F($,1,this.length),128&this[$]?-1*(255-this[$]+1):this[$]},u.prototype.readInt16LE=function($,R){R||F($,2,this.length);var X=this[$]|this[$+1]<<8;return 32768&X?4294901760|X:X},u.prototype.readInt16BE=function($,R){R||F($,2,this.length);var X=this[$+1]|this[$]<<8;return 32768&X?4294901760|X:X},u.prototype.readInt32LE=function($,R){return R||F($,4,this.length),this[$]|this[$+1]<<8|this[$+2]<<16|this[$+3]<<24},u.prototype.readInt32BE=function($,R){return R||F($,4,this.length),this[$]<<24|this[$+1]<<16|this[$+2]<<8|this[$+3]},u.prototype.readFloatLE=function($,R){return R||F($,4,this.length),s.read(this,$,!0,23,4)},u.prototype.readFloatBE=function($,R){return R||F($,4,this.length),s.read(this,$,!1,23,4)},u.prototype.readDoubleLE=function($,R){return R||F($,8,this.length),s.read(this,$,!0,52,8)},u.prototype.readDoubleBE=function($,R){return R||F($,8,this.length),s.read(this,$,!1,52,8)},u.prototype.writeUIntLE=function($,R,X,K){$=+$,R|=0,X|=0,K||U(this,$,R,X,Math.pow(2,8*X)-1,0);var Z=1,ie=0;for(this[R]=255&$;++ie=0&&(ie*=256);)this[R+Z]=$/ie&255;return R+X},u.prototype.writeUInt8=function($,R,X){return $=+$,R|=0,X||U(this,$,R,1,255,0),u.TYPED_ARRAY_SUPPORT||($=Math.floor($)),this[R]=255&$,R+1},u.prototype.writeUInt16LE=function($,R,X){return $=+$,R|=0,X||U(this,$,R,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[R]=255&$,this[R+1]=$>>>8):W(this,$,R,!0),R+2},u.prototype.writeUInt16BE=function($,R,X){return $=+$,R|=0,X||U(this,$,R,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[R]=$>>>8,this[R+1]=255&$):W(this,$,R,!1),R+2},u.prototype.writeUInt32LE=function($,R,X){return $=+$,R|=0,X||U(this,$,R,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[R+3]=$>>>24,this[R+2]=$>>>16,this[R+1]=$>>>8,this[R]=255&$):J(this,$,R,!0),R+4},u.prototype.writeUInt32BE=function($,R,X){return $=+$,R|=0,X||U(this,$,R,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[R]=$>>>24,this[R+1]=$>>>16,this[R+2]=$>>>8,this[R+3]=255&$):J(this,$,R,!1),R+4},u.prototype.writeIntLE=function($,R,X,K){if($=+$,R|=0,!K){var Z=Math.pow(2,8*X-1);U(this,$,R,X,Z-1,-Z)}var ie=0,oe=1,Te=0;for(this[R]=255&$;++ie>0)-Te&255;return R+X},u.prototype.writeIntBE=function($,R,X,K){if($=+$,R|=0,!K){var Z=Math.pow(2,8*X-1);U(this,$,R,X,Z-1,-Z)}var ie=X-1,oe=1,Te=0;for(this[R+ie]=255&$;--ie>=0&&(oe*=256);)$<0&&Te===0&&this[R+ie+1]!==0&&(Te=1),this[R+ie]=($/oe>>0)-Te&255;return R+X},u.prototype.writeInt8=function($,R,X){return $=+$,R|=0,X||U(this,$,R,1,127,-128),u.TYPED_ARRAY_SUPPORT||($=Math.floor($)),$<0&&($=255+$+1),this[R]=255&$,R+1},u.prototype.writeInt16LE=function($,R,X){return $=+$,R|=0,X||U(this,$,R,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[R]=255&$,this[R+1]=$>>>8):W(this,$,R,!0),R+2},u.prototype.writeInt16BE=function($,R,X){return $=+$,R|=0,X||U(this,$,R,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[R]=$>>>8,this[R+1]=255&$):W(this,$,R,!1),R+2},u.prototype.writeInt32LE=function($,R,X){return $=+$,R|=0,X||U(this,$,R,4,2147483647,-2147483648),u.TYPED_ARRAY_SUPPORT?(this[R]=255&$,this[R+1]=$>>>8,this[R+2]=$>>>16,this[R+3]=$>>>24):J(this,$,R,!0),R+4},u.prototype.writeInt32BE=function($,R,X){return $=+$,R|=0,X||U(this,$,R,4,2147483647,-2147483648),$<0&&($=4294967295+$+1),u.TYPED_ARRAY_SUPPORT?(this[R]=$>>>24,this[R+1]=$>>>16,this[R+2]=$>>>8,this[R+3]=255&$):J(this,$,R,!1),R+4},u.prototype.writeFloatLE=function($,R,X){return le(this,$,R,!0,X)},u.prototype.writeFloatBE=function($,R,X){return le(this,$,R,!1,X)},u.prototype.writeDoubleLE=function($,R,X){return ve(this,$,R,!0,X)},u.prototype.writeDoubleBE=function($,R,X){return ve(this,$,R,!1,X)},u.prototype.copy=function($,R,X,K){if(X||(X=0),K||K===0||(K=this.length),R>=$.length&&(R=$.length),R||(R=0),K>0&&K=this.length)throw new RangeError("sourceStart out of bounds");if(K<0)throw new RangeError("sourceEnd out of bounds");K>this.length&&(K=this.length),$.length-R=0;--Z)$[Z+R]=this[Z+X];else if(ie<1e3||!u.TYPED_ARRAY_SUPPORT)for(Z=0;Z>>=0,X=X===void 0?this.length:X>>>0,$||($=0),typeof $=="number")for(ie=R;ie55295&&X<57344){if(!Z){if(X>56319){(R-=3)>-1&&ie.push(239,191,189);continue}if(oe+1===K){(R-=3)>-1&&ie.push(239,191,189);continue}Z=X;continue}if(X<56320){(R-=3)>-1&&ie.push(239,191,189),Z=X;continue}X=65536+(Z-55296<<10|X-56320)}else Z&&(R-=3)>-1&&ie.push(239,191,189);if(Z=null,X<128){if((R-=1)<0)break;ie.push(X)}else if(X<2048){if((R-=2)<0)break;ie.push(X>>6|192,63&X|128)}else if(X<65536){if((R-=3)<0)break;ie.push(X>>12|224,X>>6&63|128,63&X|128)}else{if(!(X<1114112))throw new Error("Invalid code point");if((R-=4)<0)break;ie.push(X>>18|240,X>>12&63|128,X>>6&63|128,63&X|128)}}return ie}function Le($){return a.toByteArray(function(R){if((R=function(X){return X.trim?X.trim():X.replace(/^\s+|\s+$/g,"")}(R).replace(pe,"")).length<2)return"";for(;R.length%4!=0;)R+="=";return R}($))}function be($,R,X,K){for(var Z=0;Z=R.length||Z>=$.length);++Z)R[Z+X]=$[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 y=s.element_createAnElement(d,"body",a.namespace.HTML);return h.appendChild(y),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(K){var Z=typeof Symbol=="function"&&Symbol.iterator,ie=Z&&K[Z],oe=0;if(ie)return ie.call(K);if(K&&typeof K.length=="number")return{next:function(){return K&&oe>=K.length&&(K=void 0),{value:K&&K[oe++],done:!K}}};throw new TypeError(Z?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__read||function(K,Z){var ie=typeof Symbol=="function"&&K[Symbol.iterator];if(!ie)return K;var oe,Te,Oe=ie.call(K),Ve=[];try{for(;(Z===void 0||Z-- >0)&&!(oe=Oe.next()).done;)Ve.push(oe.value)}catch(Ge){Te={error:Ge}}finally{try{oe&&!oe.done&&(ie=Oe.return)&&ie.call(Oe)}finally{if(Te)throw Te.error}}return Ve};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]/,y=/[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 w(K){s!==void 0&&s.call(null,"Validation Error: "+K)}function x(){return{scheme:"",username:"",password:"",host:null,port:null,path:[],query:null,fragment:null,_cannotBeABaseURLFlag:!1,_blobURLEntry:null}}function C(K){return K in d}function S(K){return C(K.scheme)}function T(K){return d[K]||null}function _(K){return K.username!==""||K.password!==""}function E(K,Z){var ie,oe;Z===void 0&&(Z=!1);var Te=K.scheme+":";if(K.host!==null?(Te+="//",_(K)&&(Te+=K.username,K.password!==""&&(Te+=":"+K.password),Te+="@"),Te+=b(K.host),K.port!==null&&(Te+=":"+K.port)):K.host===null&&K.scheme==="file"&&(Te+="//"),K._cannotBeABaseURLFlag)Te+=K.path[0];else try{for(var Oe=o(K.path),Ve=Oe.next();!Ve.done;Ve=Oe.next())Te+="/"+Ve.value}catch(Ge){ie={error:Ge}}finally{try{Ve&&!Ve.done&&(oe=Oe.return)&&oe.call(Oe)}finally{if(ie)throw ie.error}}return K.query!==null&&(Te+="?"+K.query),Z||K.fragment===null||(Te+="#"+K.fragment),Te}function b(K){return c.isNumber(K)?D(K):c.isArray(K)?"["+O(K)+"]":K}function D(K){for(var Z="",ie=K,oe=1;oe<=4;oe++)Z=(ie%256).toString()+Z,oe!==4&&(Z="."+Z),ie=Math.floor(ie/256);return Z}function O(K){for(var Z="",ie=null,oe=-1,Te=0,Oe=0,Ve=0;Ve<8;Ve++)if(K[Ve]===0){Te=1;for(var Ge=Ve+1;Ge<8&&K[Ge]===0;Ge++)Te++;Te>Oe&&(Oe=Te,oe=Ve)}Oe>1&&(ie=oe);for(var ce=!1,fe=0;fe<8;fe++)ce&&K[fe]===0||(ce&&(ce=!1),ie!==fe?(Z+=K[fe].toString(16),fe!==7&&(Z+=":")):(Z+=fe===0?"::":":",ce=!0));return Z}function L(K,Z,ie,oe,Te){var Oe,Ve,Ge,ce;if(oe===void 0){oe={scheme:"",username:"",password:"",host:null,port:null,path:[],query:null,fragment:null,_cannotBeABaseURLFlag:!1,_blobURLEntry:null};var fe=/^[\u0000-\u001F\u0020]+/,Se=/[\u0000-\u001F\u0020]+$/;(fe.test(K)||Se.test(K))&&w("Input string contains leading or trailing control characters or space."),K=(K=K.replace(fe,"")).replace(Se,"")}var he=/[\u0009\u000A\u000D]/g;he.test(K)&&w("Input string contains tab or newline characters."),K=K.replace(he,"");var xe=Te===void 0?l.ParserState.SchemeStart:Te;Z===void 0&&(Z=null);for(var qe=ie===void 0||ie==="replacement"||ie==="UTF-16BE"||ie==="UTF-16LE"?"UTF-8":ie,de="",ht=!1,vt=!1,gt=!1,Me=new c.StringWalker(K);;){switch(xe){case l.ParserState.SchemeStart:if(f.codePoint.ASCIIAlpha.test(Me.c()))de+=Me.c().toLowerCase(),xe=l.ParserState.Scheme;else{if(Te!==void 0)return w("Invalid scheme start character."),null;xe=l.ParserState.NoScheme,Me.pointer--}break;case l.ParserState.Scheme:if(f.codePoint.ASCIIAlphanumeric.test(Me.c())||Me.c()==="+"||Me.c()==="-"||Me.c()===".")de+=Me.c().toLowerCase();else{if(Me.c()!==":"){if(Te===void 0){de="",xe=l.ParserState.NoScheme,Me.pointer=0;continue}return w("Invalid input string."),null}if(Te!==void 0&&(C(oe.scheme)&&!C(de)||!C(oe.scheme)&&C(de)||(_(oe)||oe.port!==null)&&de==="file"||oe.scheme==="file"&&(oe.host===""||oe.host===null)))return oe;if(oe.scheme=de,Te!==void 0)return oe.port===T(oe.scheme)&&(oe.port=null),oe;de="",oe.scheme==="file"?(Me.remaining().startsWith("//")||w("Invalid file URL scheme, '//' expected."),xe=l.ParserState.File):S(oe)&&Z!==null&&Z.scheme===oe.scheme?xe=l.ParserState.SpecialRelativeOrAuthority:S(oe)?xe=l.ParserState.SpecialAuthoritySlashes:Me.remaining().startsWith("/")?(xe=l.ParserState.PathOrAuthority,Me.pointer++):(oe._cannotBeABaseURLFlag=!0,oe.path.push(""),xe=l.ParserState.CannotBeABaseURLPath)}break;case l.ParserState.NoScheme:if(Z===null||Z._cannotBeABaseURLFlag&&Me.c()!=="#")return w("Invalid input string."),null;Z._cannotBeABaseURLFlag&&Me.c()==="#"?(oe.scheme=Z.scheme,oe.path=f.list.clone(Z.path),oe.query=Z.query,oe.fragment="",oe._cannotBeABaseURLFlag=!0,xe=l.ParserState.Fragment):Z.scheme!=="file"?(xe=l.ParserState.Relative,Me.pointer--):(xe=l.ParserState.File,Me.pointer--);break;case l.ParserState.SpecialRelativeOrAuthority:Me.c()==="/"&&Me.remaining().startsWith("/")?(xe=l.ParserState.SpecialAuthorityIgnoreSlashes,Me.pointer++):(w("Invalid input string."),xe=l.ParserState.Relative,Me.pointer--);break;case l.ParserState.PathOrAuthority:Me.c()==="/"?xe=l.ParserState.Authority:(xe=l.ParserState.Path,Me.pointer--);break;case l.ParserState.Relative:if(Z===null)throw new Error("Invalid parser state. Base URL is null.");switch(oe.scheme=Z.scheme,Me.c()){case"":oe.username=Z.username,oe.password=Z.password,oe.host=Z.host,oe.port=Z.port,oe.path=f.list.clone(Z.path),oe.query=Z.query;break;case"/":xe=l.ParserState.RelativeSlash;break;case"?":oe.username=Z.username,oe.password=Z.password,oe.host=Z.host,oe.port=Z.port,oe.path=f.list.clone(Z.path),oe.query="",xe=l.ParserState.Query;break;case"#":oe.username=Z.username,oe.password=Z.password,oe.host=Z.host,oe.port=Z.port,oe.path=f.list.clone(Z.path),oe.query=Z.query,oe.fragment="",xe=l.ParserState.Fragment;break;default:S(oe)&&Me.c()==="\\"?(w("Invalid input string."),xe=l.ParserState.RelativeSlash):(oe.username=Z.username,oe.password=Z.password,oe.host=Z.host,oe.port=Z.port,oe.path=f.list.clone(Z.path),oe.path.length!==0&&oe.path.splice(oe.path.length-1,1),xe=l.ParserState.Path,Me.pointer--)}break;case l.ParserState.RelativeSlash:if(!S(oe)||Me.c()!=="/"&&Me.c()!=="\\")if(Me.c()==="/")xe=l.ParserState.Authority;else{if(Z===null)throw new Error("Invalid parser state. Base URL is null.");oe.username=Z.username,oe.password=Z.password,oe.host=Z.host,oe.port=Z.port,xe=l.ParserState.Path,Me.pointer--}else Me.c()==="\\"&&w("Invalid input string."),xe=l.ParserState.SpecialAuthorityIgnoreSlashes;break;case l.ParserState.SpecialAuthoritySlashes:Me.c()==="/"&&Me.remaining().startsWith("/")?(xe=l.ParserState.SpecialAuthorityIgnoreSlashes,Me.pointer++):(w("Expected '//'."),xe=l.ParserState.SpecialAuthorityIgnoreSlashes,Me.pointer--);break;case l.ParserState.SpecialAuthorityIgnoreSlashes:Me.c()!=="/"&&Me.c()!=="\\"?(xe=l.ParserState.Authority,Me.pointer--):w("Unexpected '/' or '\\'.");break;case l.ParserState.Authority:if(Me.c()==="@"){w("Unexpected '@'."),ht&&(de="%40"+de),ht=!0;try{for(var Ze=(Oe=void 0,o(de)),it=Ze.next();!it.done;it=Ze.next()){var rt=it.value;if(rt!==":"||gt){var ut=be(rt,v);gt?oe.password+=ut:oe.username+=ut}else gt=!0}}catch(On){Oe={error:On}}finally{try{it&&!it.done&&(Ve=Ze.return)&&Ve.call(Ze)}finally{if(Oe)throw Oe.error}}de=""}else if(Me.c()===""||Me.c()==="/"||Me.c()==="?"||Me.c()==="#"||S(oe)&&Me.c()==="\\"){if(ht&&de==="")return w("Invalid input string."),null;Me.pointer-=de.length+1,de="",xe=l.ParserState.Host}else de+=Me.c();break;case l.ParserState.Host:case l.ParserState.Hostname:if(Te!==void 0&&oe.scheme==="file")Me.pointer--,xe=l.ParserState.FileHost;else if(Me.c()!==":"||vt)if(Me.c()===""||Me.c()==="/"||Me.c()==="?"||Me.c()==="#"||S(oe)&&Me.c()==="\\"){if(Me.pointer--,S(oe)&&de==="")return w("Invalid input string."),null;if(Te!==void 0&&de===""&&(_(oe)||oe.port!==null))return w("Invalid input string."),oe;if((wt=W(de,!S(oe)))===null)return null;if(oe.host=wt,de="",xe=l.ParserState.PathStart,Te!==void 0)return oe}else Me.c()==="["&&(vt=!0),Me.c()==="]"&&(vt=!1),de+=Me.c();else{if(de==="")return w("Invalid input string."),null;if((wt=W(de,!S(oe)))===null)return null;if(oe.host=wt,de="",xe=l.ParserState.Port,Te===l.ParserState.Hostname)return oe}break;case l.ParserState.Port:if(f.codePoint.ASCIIDigit.test(Me.c()))de+=Me.c();else{if(!(Me.c()===""||Me.c()==="/"||Me.c()==="?"||Me.c()==="#"||S(oe)&&Me.c()==="\\"||Te))return w("Invalid input string."),null;if(de!==""&&de!==""){var Dt=parseInt(de,10);if(Dt>Math.pow(2,16)-1)return w("Invalid port number."),null;oe.port=Dt===T(oe.scheme)?null:Dt,de=""}if(Te!==void 0)return oe;xe=l.ParserState.PathStart,Me.pointer--}break;case l.ParserState.File:if(oe.scheme="file",Me.c()==="/"||Me.c()==="\\")Me.c()==="\\"&&w("Invalid input string."),xe=l.ParserState.FileSlash;else if(Z!==null&&Z.scheme==="file")switch(Me.c()){case"":oe.host=Z.host,oe.path=f.list.clone(Z.path),oe.query=Z.query;break;case"?":oe.host=Z.host,oe.path=f.list.clone(Z.path),oe.query="",xe=l.ParserState.Query;break;case"#":oe.host=Z.host,oe.path=f.list.clone(Z.path),oe.query=Z.query,oe.fragment="",xe=l.ParserState.Fragment;break;default:U(Me.substring())?w("Unexpected windows drive letter in input string."):(oe.host=Z.host,oe.path=f.list.clone(Z.path),G(oe)),xe=l.ParserState.Path,Me.pointer--}else xe=l.ParserState.Path,Me.pointer--;break;case l.ParserState.FileSlash:Me.c()==="/"||Me.c()==="\\"?(Me.c()==="\\"&&w("Invalid input string."),xe=l.ParserState.FileHost):(Z===null||Z.scheme!=="file"||U(Me.substring())||(j(Z.path[0])?oe.path.push(Z.path[0]):oe.host=Z.host),xe=l.ParserState.Path,Me.pointer--);break;case l.ParserState.FileHost:if(Me.c()===""||Me.c()==="/"||Me.c()==="\\"||Me.c()==="?"||Me.c()==="#")if(Me.pointer--,Te===void 0&&F(de))w("Unexpected windows drive letter in input string."),xe=l.ParserState.Path;else if(de===""){if(oe.host="",Te!==void 0)return oe;xe=l.ParserState.PathStart}else{var wt;if((wt=W(de,!S(oe)))===null)return null;if(wt==="localhost"&&(wt=""),oe.host=wt,Te!==void 0)return oe;de="",xe=l.ParserState.PathStart}else de+=Me.c();break;case l.ParserState.PathStart:S(oe)?(Me.c()==="\\"&&w("Invalid input string."),xe=l.ParserState.Path,Me.c()!=="/"&&Me.c()!=="\\"&&Me.pointer--):Te===void 0&&Me.c()==="?"?(oe.query="",xe=l.ParserState.Query):Te===void 0&&Me.c()==="#"?(oe.fragment="",xe=l.ParserState.Fragment):Me.c()!==""&&(xe=l.ParserState.Path,Me.c()!=="/"&&Me.pointer--);break;case l.ParserState.Path:if(Me.c()===""||Me.c()==="/"||S(oe)&&Me.c()==="\\"||Te===void 0&&(Me.c()==="?"||Me.c()==="#")){if(S(oe)&&Me.c()==="\\"&&w("Invalid input string."),k(de))G(oe),Me.c()==="/"||S(oe)&&Me.c()==="\\"||oe.path.push("");else if(!P(de)||Me.c()==="/"||S(oe)&&Me.c()==="\\"){if(!P(de)){if(oe.scheme==="file"&&oe.path.length===0&&F(de)){oe.host!==null&&oe.host!==""&&(w("Invalid input string."),oe.host="");var kt=Array.from(de);de=kt.slice(0,1)+":"+kt.slice(2)}oe.path.push(de)}}else oe.path.push("");if(de="",oe.scheme==="file"&&(Me.c()===""||Me.c()==="?"||Me.c()==="#"))for(;oe.path.length>1&&oe.path[0]==="";)w("Invalid input string."),oe.path.splice(0,1);Me.c()==="?"&&(oe.query="",xe=l.ParserState.Query),Me.c()==="#"&&(oe.fragment="",xe=l.ParserState.Fragment)}else y.test(Me.c())||Me.c()==="%"||w("Character is not a URL code point or a percent encoded character."),Me.c()!=="%"||/^[0-9a-fA-F][0-9a-fA-F]/.test(Me.remaining())||w("Percent encoded character must be followed by two hex digits."),de+=be(Me.c(),p);break;case l.ParserState.CannotBeABaseURLPath:Me.c()==="?"?(oe.query="",xe=l.ParserState.Query):Me.c()==="#"?(oe.fragment="",xe=l.ParserState.Fragment):(Me.c()===""||y.test(Me.c())||Me.c()==="%"||w("Character is not a URL code point or a percent encoded character."),Me.c()!=="%"||/^[0-9a-fA-F][0-9a-fA-F]/.test(Me.remaining())||w("Percent encoded character must be followed by two hex digits."),Me.c()!==""&&(oe.path[0]+=be(Me.c(),h)));break;case l.ParserState.Query:if(qe==="UTF-8"||S(oe)&&oe.scheme!=="ws"&&oe.scheme!=="wss"||(qe="UTF-8"),Te===void 0&&Me.c()==="#")oe.fragment="",xe=l.ParserState.Fragment;else if(Me.c()!==""){if(y.test(Me.c())||Me.c()==="%"||w("Character is not a URL code point or a percent encoded character."),Me.c()!=="%"||/^[0-9a-fA-F][0-9a-fA-F]/.test(Me.remaining())||w("Percent encoded character must be followed by two hex digits."),qe.toUpperCase()!=="UTF-8")throw new Error("Only UTF-8 encoding is supported.");var qt=c.utf8Encode(Me.c());if(qt.length>=3&&qt[0]===38&&qt[1]===35&&qt[qt.length-1]===59)qt=qt.subarray(2,qt.length-1),oe.query+="%26%23"+f.byteSequence.isomorphicDecode(qt)+"%3B";else try{for(var In=(Ge=void 0,o(qt)),Vn=In.next();!Vn.done;Vn=In.next()){var zt=Vn.value;zt<33||zt>126||zt===34||zt===35||zt===60||zt===62||zt===39&&S(oe)?oe.query+=ye(zt):oe.query+=String.fromCharCode(zt)}}catch(On){Ge={error:On}}finally{try{Vn&&!Vn.done&&(ce=In.return)&&ce.call(In)}finally{if(Ge)throw Ge.error}}}break;case l.ParserState.Fragment:Me.c()===""||(Me.c()==="\0"?w("NULL character in input string."):(y.test(Me.c())||Me.c()==="%"||w("Unexpected character in fragment string."),Me.c()!=="%"||/^[A-Za-z0-9][A-Za-z0-9]/.test(Me.remaining())||w("Unexpected character in fragment string."),oe.fragment+=be(Me.c(),g)))}if(Me.eof)break;Me.pointer++}return oe}function P(K){return K==="."||K.toLowerCase()==="%2e"}function k(K){var Z=K.toLowerCase();return Z===".."||Z===".%2e"||Z==="%2e."||Z==="%2e%2e"}function G(K){var Z=K.path;Z.length!==0&&(K.scheme==="file"&&Z.length===1&&j(Z[0])||K.path.splice(K.path.length-1,1))}function j(K){return K.length>=2&&f.codePoint.ASCIIAlpha.test(K[0])&&K[1]===":"}function F(K){return K.length>=2&&f.codePoint.ASCIIAlpha.test(K[0])&&(K[1]===":"||K[1]==="|")}function U(K){return K.length>=2&&F(K)&&(K.length===2||K[2]==="/"||K[2]==="\\"||K[2]==="?"||K[2]==="#")}function W(K,Z){if(Z===void 0&&(Z=!1),K.startsWith("["))return K.endsWith("]")?le(K.substring(1,K.length-1)):(w("Expected ']' after '['."),null);if(Z)return ve(K);var ie=X(c.utf8Decode(Le(K)));if(ie===null||m.test(ie))return w("Invalid domain."),null;var oe=te(ie);return oe===null||c.isNumber(oe)?oe:ie}function J(K,Z){Z===void 0&&(Z={value:!1});var ie=10;return K.startsWith("0x")||K.startsWith("0X")?(Z.value=!0,K=K.substr(2),ie=16):K.length>=2&&K[0]==="0"&&(Z.value=!0,K=K.substr(1),ie=8),K===""?0:(ie===10?/^[0-9]+$/:ie===16?/^[0-9A-Fa-f]+$/:/^[0-7]+$/).test(K)?parseInt(K,ie):null}function te(K){var Z,ie,oe,Te,Oe={value:!1},Ve=K.split(".");if(Ve[Ve.length-1]===""&&(Oe.value=!0,Ve.length>1&&Ve.pop()),Ve.length>4)return K;var Ge=[];try{for(var ce=o(Ve),fe=ce.next();!fe.done;fe=ce.next()){var Se=fe.value;if(Se===""||(vt=J(Se,Oe))===null)return K;Ge.push(vt)}}catch(gt){Z={error:gt}}finally{try{fe&&!fe.done&&(ie=ce.return)&&ie.call(ce)}finally{if(Z)throw Z.error}}Oe.value&&w("Invalid IP v4 address.");for(var he=0;he255&&(w("Invalid IP v4 address."),he=Math.pow(256,5-Ge.length))return w("Invalid IP v4 address."),null;var xe=Ge[Ge.length-1];Ge.pop();var qe=0;try{for(var de=o(Ge),ht=de.next();!ht.done;ht=de.next()){var vt;xe+=(vt=ht.value)*Math.pow(256,3-qe),qe++}}catch(gt){oe={error:gt}}finally{try{ht&&!ht.done&&(Te=de.return)&&Te.call(de)}finally{if(oe)throw oe.error}}return xe}function le(K){var Z,ie=[0,0,0,0,0,0,0,0],oe=0,Te=null,Oe=new c.StringWalker(K);if(Oe.c()===":"){if(!Oe.remaining().startsWith(":"))return w("Invalid IP v6 address."),null;Oe.pointer+=2,Te=oe+=1}for(;Oe.c()!=="";){if(oe===8)return w("Invalid IP v6 address."),null;if(Oe.c()!==":"){for(var Ve=0,Ge=0;Ge<4&&f.codePoint.ASCIIHexDigit.test(Oe.c());)Ve=16*Ve+parseInt(Oe.c(),16),Oe.pointer++,Ge++;if(Oe.c()==="."){if(Ge===0||(Oe.pointer-=Ge,oe>6))return w("Invalid IP v6 address."),null;for(var ce=0;Oe.c()!=="";){var fe=null;if(ce>0){if(!(Oe.c()==="."&&ce<4))return w("Invalid IP v6 address."),null;Oe.pointer++}if(!f.codePoint.ASCIIDigit.test(Oe.c()))return w("Invalid IP v6 address."),null;for(;f.codePoint.ASCIIDigit.test(Oe.c());){var Se=parseInt(Oe.c(),10);if(fe===null)fe=Se;else{if(fe===0)return w("Invalid IP v6 address."),null;fe=10*fe+Se}if(fe>255)return w("Invalid IP v6 address."),null;Oe.pointer++}if(fe===null)return w("Invalid IP v6 address."),null;ie[oe]=256*ie[oe]+fe,++ce!==2&&ce!==4||oe++}if(ce!==4)return w("Invalid IP v6 address."),null;break}if(Oe.c()===":"){if(Oe.pointer++,Oe.c()==="")return w("Invalid IP v6 address."),null}else if(Oe.c()!=="")return w("Invalid IP v6 address."),null;ie[oe]=Ve,oe++}else{if(Te!==null)return w("Invalid IP v6 address."),null;Oe.pointer++,Te=++oe}}if(Te!==null){var he=oe-Te;for(oe=7;oe!==0&&he>0;)Z=a([ie[Te+he-1],ie[oe]],2),ie[oe]=Z[0],ie[Te+he-1]=Z[1],oe--,he--}else if(Te===null&&oe!==8)return w("Invalid IP v6 address."),null;return ie}function ve(K){var Z,ie;if(/[\x00\t\f\r #/:?@\[\\\]]/.test(K))return w("Invalid host string."),null;var oe="";try{for(var Te=o(K),Oe=Te.next();!Oe.done;Oe=Te.next())oe+=be(Oe.value,h)}catch(Ve){Z={error:Ve}}finally{try{Oe&&!Oe.done&&(ie=Te.return)&&ie.call(Te)}finally{if(Z)throw Z.error}}return oe}function pe(K){return null}function ye(K){return"%"+("00"+K.toString(16).toUpperCase()).slice(-2)}function Ie(K){for(var Z=function(Ge){return Ge>=48&&Ge<=57||Ge>=65&&Ge<=70||Ge>=97&&Ge<=102},ie=new Uint8Array(K.length),oe=0,Te=0;Te=K.length-2)ie[oe]=Oe,oe++;else if(Oe!==37||Z(K[Te+1])&&Z(K[Te+2])){var Ve=parseInt(c.utf8Decode(Uint8Array.of(K[Te+1],K[Te+2])),16);ie[oe]=Ve,oe++,Te+=2}else ie[oe]=Oe,oe++}return ie.subarray(0,oe)}function Le(K){return Ie(c.utf8Encode(K))}function be(K,Z){var ie,oe;if(!Z.test(K))return K;var Te=c.utf8Encode(K),Oe="";try{for(var Ve=o(Te),Ge=Ve.next();!Ge.done;Ge=Ve.next())Oe+=ye(Ge.value)}catch(ce){ie={error:ce}}finally{try{Ge&&!Ge.done&&(oe=Ve.return)&&oe.call(Ve)}finally{if(ie)throw ie.error}}return Oe}function $(K){var Z,ie,oe,Te,Oe=[],Ve=[];try{for(var Ge=o(K),ce=Ge.next();!ce.done;ce=Ge.next()){var fe=ce.value;fe===38?(Oe.push(Uint8Array.from(Ve)),Ve=[]):Ve.push(fe)}}catch(it){Z={error:it}}finally{try{ce&&!ce.done&&(ie=Ge.return)&&ie.call(Ge)}finally{if(Z)throw Z.error}}Ve.length!==0&&Oe.push(Uint8Array.from(Ve));var Se=[];try{for(var he=o(Oe),xe=he.next();!xe.done;xe=he.next()){var qe=xe.value;if(qe.length!==0){for(var de=qe.indexOf(61),ht=de!==-1?qe.slice(0,de):qe,vt=de!==-1?qe.slice(de+1):new Uint8Array,gt=0;gt=48&&Ve<=57||Ve>=65&&Ve<=90||Ve===95||Ve>=97&&Ve<=122?String.fromCodePoint(Ve):ye(Ve)}}catch(Ge){Z={error:Ge}}finally{try{Oe&&!Oe.done&&(ie=Te.return)&&ie.call(Te)}finally{if(Z)throw Z.error}}return oe}function X(K,Z){var ie=u.domainToASCII(K);return ie===""?(w("Invalid domain name."),null):ie}n.setValidationErrorCallback=function(K){s=K},n.newURL=x,n.isSpecialScheme=C,n.isSpecial=S,n.defaultPort=T,n.includesCredentials=_,n.cannotHaveAUsernamePasswordPort=function(K){return K.host===null||K.host===""||K._cannotBeABaseURLFlag||K.scheme==="file"},n.urlSerializer=E,n.hostSerializer=b,n.iPv4Serializer=D,n.iPv6Serializer=O,n.urlParser=function(K,Z,ie){var oe=L(K,Z,ie);return oe===null?null:(oe.scheme!=="blob"||(oe._blobURLEntry=null),oe)},n.basicURLParser=L,n.setTheUsername=function(K,Z){var ie,oe,Te="";try{for(var Oe=o(Z),Ve=Oe.next();!Ve.done;Ve=Oe.next())Te+=be(Ve.value,v)}catch(Ge){ie={error:Ge}}finally{try{Ve&&!Ve.done&&(oe=Oe.return)&&oe.call(Oe)}finally{if(ie)throw ie.error}}K.username=Te},n.setThePassword=function(K,Z){var ie,oe,Te="";try{for(var Oe=o(Z),Ve=Oe.next();!Ve.done;Ve=Oe.next())Te+=be(Ve.value,v)}catch(Ge){ie={error:Ge}}finally{try{Ve&&!Ve.done&&(oe=Oe.return)&&oe.call(Oe)}finally{if(ie)throw ie.error}}K.password=Te},n.isSingleDotPathSegment=P,n.isDoubleDotPathSegment=k,n.shorten=G,n.isNormalizedWindowsDriveLetter=j,n.isWindowsDriveLetter=F,n.startsWithAWindowsDriveLetter=U,n.hostParser=W,n.iPv4NumberParser=J,n.iPv4Parser=te,n.iPv6Parser=le,n.opaqueHostParser=ve,n.resolveABlobURL=pe,n.percentEncode=ye,n.percentDecode=Ie,n.stringPercentDecode=Le,n.utf8PercentEncode=be,n.hostEquals=function(K,Z){return K===Z},n.urlEquals=function(K,Z,ie){return ie===void 0&&(ie=!1),E(K,ie)===E(Z,ie)},n.urlEncodedStringParser=function(K){return $(c.utf8Encode(K))},n.urlEncodedParser=$,n.urlEncodedByteSerializer=R,n.urlEncodedSerializer=function(K,Z){var ie,oe;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 Te="";try{for(var Oe=o(K),Ve=Oe.next();!Ve.done;Ve=Oe.next()){var Ge=Ve.value,ce=R(c.utf8Encode(Ge[0])),fe=Ge[1];fe=R(c.utf8Encode(fe)),Te!==""&&(Te+="&"),Te+=ce+"="+fe}}catch(Se){ie={error:Se}}finally{try{Ve&&!Ve.done&&(oe=Oe.return)&&oe.call(Oe)}finally{if(ie)throw ie.error}}return Te},n.origin=function K(Z){switch(Z.scheme){case"blob":Z._blobURLEntry;var ie=L(Z.path[0]);return ie===null?l.OpaqueOrigin:K(ie);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=X,n.domainToUnicode=function(K,Z){var ie=u.domainToUnicode(K);return ie===""&&w("Invalid domain name."),ie},n.asciiSerializationOfAnOrigin=function(K){if(K[0]===""&&K[1]===""&&K[2]===null&&K[3]===null)return"null";var Z=K[0]+"://"+b(K[1]);return K[2]!==null&&(Z+=":"+K[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 y=v.value;f.call(u,y,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[w++],done:!v}}};throw new TypeError(y?"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 y(){var m=v.call(this)||this,w=c.dom.window._associatedDocument;return m._start=[w,0],m._end=[w,0],c.dom.rangeList.add(m),m}return a(y,v),Object.defineProperty(y.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}),y.prototype.setStart=function(m,w){d.range_setTheStart(this,m,w)},y.prototype.setEnd=function(m,w){d.range_setTheEnd(this,m,w)},y.prototype.setStartBefore=function(m){var w=m._parent;if(w===null)throw new u.InvalidNodeTypeError;d.range_setTheStart(this,w,d.tree_index(m))},y.prototype.setStartAfter=function(m){var w=m._parent;if(w===null)throw new u.InvalidNodeTypeError;d.range_setTheStart(this,w,d.tree_index(m)+1)},y.prototype.setEndBefore=function(m){var w=m._parent;if(w===null)throw new u.InvalidNodeTypeError;d.range_setTheEnd(this,w,d.tree_index(m))},y.prototype.setEndAfter=function(m){var w=m._parent;if(w===null)throw new u.InvalidNodeTypeError;d.range_setTheEnd(this,w,d.tree_index(m)+1)},y.prototype.collapse=function(m){m?this._end=this._start:this._start=this._end},y.prototype.selectNode=function(m){d.range_select(m,this)},y.prototype.selectNodeContents=function(m){if(g.Guard.isDocumentTypeNode(m))throw new u.InvalidNodeTypeError;var w=d.tree_nodeLength(m);this._start=[m,0],this._end=[m,w]},y.prototype.compareBoundaryPoints=function(m,w){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(w))throw new u.WrongDocumentError;var x,C;switch(m){case l.HowToCompare.StartToStart:x=this._start,C=w._start;break;case l.HowToCompare.StartToEnd:x=this._end,C=w._start;break;case l.HowToCompare.EndToEnd:x=this._end,C=w._end;break;case l.HowToCompare.EndToStart:x=this._start,C=w._end;break;default:throw new u.NotSupportedError}var S=d.boundaryPoint_position(x,C);return S===l.BoundaryPosition.Before?-1:S===l.BoundaryPosition.After?1:0},y.prototype.deleteContents=function(){var m,w,x,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 b,D,O=[];try{for(var L=s(d.range_getContainedNodes(this)),P=L.next();!P.done;P=L.next()){var k=(U=P.value)._parent;k!==null&&d.range_isContained(k,this)||O.push(U)}}catch(W){m={error:W}}finally{try{P&&!P.done&&(w=L.return)&&w.call(L)}finally{if(m)throw m.error}}if(d.tree_isAncestorOf(_,S,!0))b=S,D=T;else{for(var G=S;G._parent!==null&&!d.tree_isAncestorOf(_,G._parent,!0);)G=G._parent;if(G._parent===null)throw new Error("Parent node is null.");b=G._parent,D=d.tree_index(G)+1}g.Guard.isCharacterDataNode(S)&&d.characterData_replaceData(S,T,d.tree_nodeLength(S)-T,"");try{for(var j=s(O),F=j.next();!F.done;F=j.next()){var U;(U=F.value)._parent&&d.mutation_remove(U,U._parent)}}catch(W){x={error:W}}finally{try{F&&!F.done&&(C=j.return)&&C.call(j)}finally{if(x)throw x.error}}g.Guard.isCharacterDataNode(_)&&d.characterData_replaceData(_,0,E,""),this._start=[b,D],this._end=[b,D]}}},y.prototype.extractContents=function(){return d.range_extract(this)},y.prototype.cloneContents=function(){return d.range_cloneTheContents(this)},y.prototype.insertNode=function(m){return d.range_insert(m,this)},y.prototype.surroundContents=function(m){var w,x;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){w={error:E}}finally{try{S&&!S.done&&(x=C.return)&&x.call(C)}finally{if(w)throw w.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)},y.prototype.cloneRange=function(){return d.create_range(this._start,this._end)},y.prototype.detach=function(){c.dom.rangeList.delete(this)},y.prototype.isPointInRange=function(m,w){if(d.tree_rootNode(m)!==d.range_root(this))return!1;if(g.Guard.isDocumentTypeNode(m))throw new u.InvalidNodeTypeError;if(w>d.tree_nodeLength(m))throw new u.IndexSizeError;var x=[m,w];return d.boundaryPoint_position(x,this._start)!==l.BoundaryPosition.Before&&d.boundaryPoint_position(x,this._end)!==l.BoundaryPosition.After},y.prototype.comparePoint=function(m,w){if(d.tree_rootNode(m)!==d.range_root(this))throw new u.WrongDocumentError;if(g.Guard.isDocumentTypeNode(m))throw new u.InvalidNodeTypeError;if(w>d.tree_nodeLength(m))throw new u.IndexSizeError;var x=[m,w];return d.boundaryPoint_position(x,this._start)===l.BoundaryPosition.Before?-1:d.boundaryPoint_position(x,this._end)===l.BoundaryPosition.After?1:0},y.prototype.intersectsNode=function(m){if(d.tree_rootNode(m)!==d.range_root(this))return!1;var w=m._parent;if(w===null)return!0;var x=d.tree_index(m);return d.boundaryPoint_position([w,x],this._end)===l.BoundaryPosition.Before&&d.boundaryPoint_position([w,x+1],this._start)===l.BoundaryPosition.After},y.prototype.toString=function(){var m,w,x="";if(this._startNode===this._endNode&&g.Guard.isTextNode(this._startNode))return this._startNode._data.substring(this._startOffset,this._endOffset);g.Guard.isTextNode(this._startNode)&&(x+=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)&&(x+=T._data)}}catch(_){m={error:_}}finally{try{S&&!S.done&&(w=C.return)&&w.call(C)}finally{if(m)throw m.error}}return g.Guard.isTextNode(this._endNode)&&(x+=this._endNode._data.substring(0,this._endOffset)),x},y._create=function(m,w){var x=new y;return m&&(x._start=m),w&&(x._end=w),x},y.START_TO_START=0,y.START_TO_END=1,y.END_TO_END=2,y.END_TO_START=3,y}(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(y,m,w,x,C){m===v._attribute._localName&&C===null&&(x?v._tokenSet=l.orderedSet_parse(x):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),y=v.next();!y.done;y=v.next()){var m=y.value;if(p===d)return m;p++}}catch(w){h={error:w}}finally{try{y&&!y.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[y++],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,y){var m,w,x,C,S;if(v===void 0&&(v=null),y===void 0&&(y=!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(k){m={error:k}}finally{try{_&&!_.done&&(w=T.return)&&w.call(T)}finally{if(m)throw m.error}}}else if(s.Guard.isDocumentNode(p)){var b=l.create_document();b._encoding=p._encoding,b._contentType=p._contentType,b._URL=p._URL,b._origin=p._origin,b._type=p._type,b._mode=p._mode,S=b}else if(s.Guard.isDocumentTypeNode(p))S=l.create_documentType(v,p._name,p._publicId,p._systemId);else if(s.Guard.isAttrNode(p)){var D=l.create_attr(v,p.localName);D._namespace=p._namespace,D._namespacePrefix=p._namespacePrefix,D._value=p._value,S=D}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,y),y)try{for(var O=o(p._children),L=O.next();!L.done;L=O.next()){var P=g(L.value,v,!0);d.mutation_append(P,S)}}catch(k){x={error:k}}finally{try{L&&!L.done&&(C=O.return)&&C.call(O)}finally{if(x)throw x.error}}return S},n.node_equals=function g(p,v){var y,m,w,x;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[(b=T.value)._localName]=b}catch(G){y={error:G}}finally{try{T&&!T.done&&(m=S.return)&&m.call(S)}finally{if(y)throw y.error}}try{for(var _=o(v._attributeList),E=_.next();!E.done;E=_.next()){var b,D=E.value;if(!(b=C[D._localName])||!g(b,D))return!1}}catch(G){w={error:G}}finally{try{E&&!E.done&&(x=_.return)&&x.call(_)}finally{if(w)throw w.error}}}if(p._children.size!==v._children.size)return!1;for(var O=p._children[Symbol.iterator](),L=v._children[Symbol.iterator](),P=O.next(),k=L.next();!P.done&&!k.done;){if(!g(P.value,k.value))return!1;P=O.next(),k=L.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(y){return y._localName===p}):p==="*"?l.create_htmlCollection(v,function(y){return y._namespace===g}):l.create_htmlCollection(v,function(y){return y._localName===p&&y._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 y=p._nodeDocument._mode!=="quirks";return l.create_htmlCollection(p,function(m){var w=m.classList;return f.orderedSet_contains(w._tokenSet,v,y)})},n.node_locateANamespacePrefix=function g(p,v){if(p._namespace===v&&p._namespacePrefix!==null)return p._namespacePrefix;for(var y=0;y=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 y={done:!1,value:v};return v=s.Guard.isTextNode(v._nextSibling)?v._nextSibling:null,y}}},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 y={done:!1,value:v};return v=s.Guard.isExclusiveTextNode(v._nextSibling)?v._nextSibling:null,y}}},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,y=h._data.length;if(g>y)throw new c.IndexSizeError;var m=y-g,w=u.characterData_substringData(h,g,m),x=l.create_text(h._nodeDocument,w),C=h._parent;if(C!==null){d.mutation_insert(x,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]=x,_._start[1]-=g),_._end[0]===h&&_._end[1]>g&&(_._end[0]=x,_._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(b){p={error:b}}finally{try{T&&!T.done&&(v=S.return)&&v.call(S)}finally{if(p)throw p.error}}}return u.characterData_replaceData(h,g,m,""),x}},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),y=u(g)?p:g,m=l.createDocument();h(m,v);var w=new c.XMLBuilderImpl(m);return y!==void 0&&w.ele(y),w}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 y=g;y._xmlBuilderOptions=p,y._isFragment=v}n.builder=function(g,p){var v=d(u(g)?g:o.DefaultBuilderOptions),y=s.Guard.isNode(g)||a.isArray(g)?g:p;if(y===void 0)throw new Error("Invalid arguments.");if(a.isArray(y)){for(var m=[],w=0;w0)&&!(x=S.next()).done;)T.push(x.value)}catch(_){C={error:_}}finally{try{x&&!x.done&&(w=S.return)&&w.call(S)}finally{if(C)throw C.error}}return T},a=this&&this.__values||function(y){var m=typeof Symbol=="function"&&Symbol.iterator,w=m&&y[m],x=0;if(w)return w.call(y);if(y&&typeof y.length=="number")return{next:function(){return y&&x>=y.length&&(y=void 0),{value:y&&y[x++],done:!y}}};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 y(m){this._domNode=m}return Object.defineProperty(y.prototype,"node",{get:function(){return this._domNode},enumerable:!0,configurable:!0}),Object.defineProperty(y.prototype,"options",{get:function(){return this._options},enumerable:!0,configurable:!0}),y.prototype.set=function(m){return this._options=c.applyDefaults(c.applyDefaults(this._options,m,!0),s.DefaultBuilderOptions),this},y.prototype.ele=function(m,w,x){var C,S,T,_,E,b;if(c.isObject(m))return new p.ObjectReader(this._options).parse(this,m);if(m!==null&&/^\s*0&&(m===void 0&&(m=w.slice(C+1)),w=w.slice(0,C)),m===void 0)m=x?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,w]},y.prototype._updateNamespace=function(m){var w,x,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],b=_[1],D=d.create_element(this._doc,b,m,E);try{for(var I=a(T.attributes),P=I.next();!P.done;P=I.next()){var M=P.value,L=M.prefix?M.prefix+":"+M.localName:M.localName,B=o(d.namespace_extractQName(L),1)[0],j=M.namespaceURI;j===null&&B!==null&&(j=T.lookupNamespaceURI(B)),j===null?D.setAttribute(L,M.value):D.setAttributeNS(j,L,M.value)}}catch(me){w={error:me}}finally{try{P&&!P.done&&(x=I.return)&&x.call(I)}finally{if(w)throw w.error}}var V=T.parentNode;if(V===null)throw new Error("Parent node is null."+this._debugInfo());V.replaceChild(D,T),this._domNode=D;try{for(var F=a(T.childNodes),G=F.next();!G.done;G=F.next()){var X=G.value.cloneNode(!0);if(D.appendChild(X),u.Guard.isElementNode(X)){var ne=o(d.namespace_extractQName(X.prefix?X.prefix+":"+X.localName:X.localName),1)[0],ue=D.lookupNamespaceURI(ne);new y(X)._updateNamespace(ue)}}}catch(me){C={error:me}}finally{try{G&&!G.done&&(S=F.return)&&S.call(F)}finally{if(C)throw C.error}}}},Object.defineProperty(y.prototype,"_doc",{get:function(){var m=this.node;if(u.Guard.isDocumentNode(m))return m;var w=m.ownerDocument;if(!w)throw new Error("Owner document is null. "+this._debugInfo());return w},enumerable:!0,configurable:!0}),y.prototype._debugInfo=function(m){var w=this.node,x=w.parentNode;m=m||w.nodeName;var C=x?x.nodeName:"";return C?"node: <"+m+">, parent: <"+C+">":"node: <"+m+">"},Object.defineProperty(y.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}),y}();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),y=c(p.length),m=f?y-1:0,w=f?-1:1;if(h<2)for(;;){if(m in v){g=v[m],m+=w;break}if(m+=w,f?m<0:y<=m)throw TypeError("Reduce of empty array with no initial value")}for(;f?m>=0:y>m;m+=w)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(y){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(y){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 x=[];return x[v]=!1,x.concat()[0]!==x}),m=h("concat"),w=function(x){if(!c(x))return!1;var C=x[v];return C!==void 0?!!C:s(x)};o({target:"Array",proto:!0,forced:!y||!m},{concat:function(x){var C,S,T,_,E,b=l(this),D=d(b,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(D,I,E[S])}else{if(I>=9007199254740991)throw TypeError("Maximum allowed index exceeded");u(D,I++,E)}return D.length=I,D}})},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 y=[];return y.groups={a:"7"},y},"".replace(v,"$")!=="7"}),d="a".replace(/./,"$0")==="$0",h=s("replace"),g=!!/./[h]&&/./[h]("a","$0")==="",p=!a(function(){var v=/(?:)/,y=v.exec;v.exec=function(){return y.apply(this,arguments)};var m="ab".split(v);return m.length!==2||m[0]!=="a"||m[1]!=="b"});r.exports=function(v,y,m,w){var x=s(v),C=!a(function(){var D={};return D[x]=function(){return 7},""[v](D)!=7}),S=C&&!a(function(){var D=!1,I=/a/;return v==="split"&&((I={}).constructor={},I.constructor[f]=function(){return I},I.flags="",I[x]=/./[x]),I.exec=function(){return D=!0,null},I[x](""),!D});if(!C||!S||v==="replace"&&(!u||!d||g)||v==="split"&&!p){var T=/./[x],_=m(x,""[v],function(D,I,P,M,L){return I.exec===c?C&&!L?{done:!0,value:T.call(I,P,M)}:{done:!0,value:D.call(P,I,M)}:{done:!1}},{REPLACE_KEEPS_$0:d,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:g}),E=_[0],b=_[1];o(String.prototype,v,E),o(RegExp.prototype,x,y==2?function(D,I){return b.call(D,this,I)}:function(D){return b.call(D,this)})}w&&l(RegExp.prototype[x],"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),y=v[0],m=v[1],w=new s(function(S,T,_){return 3*(T+_)/4-_}(0,y,m)),x=0,C=m>0?y-4:y;for(p=0;p>16&255,w[x++]=g>>8&255,w[x++]=255&g;return m===2&&(g=a[h.charCodeAt(p)]<<2|a[h.charCodeAt(p+1)]>>4,w[x++]=255&g),m===1&&(g=a[h.charCodeAt(p)]<<10|a[h.charCodeAt(p+1)]<<4|a[h.charCodeAt(p+2)]>>2,w[x++]=g>>8&255,w[x++]=255&g),w},n.fromByteArray=function(h){for(var g,p=h.length,v=p%3,y=[],m=0,w=p-v;mw?w:m+16383));return v===1?(g=h[p-1],y.push(o[g>>2]+o[g<<4&63]+"==")):v===2&&(g=(h[p-2]<<8)+h[p-1],y.push(o[g>>10]+o[g>>4&63]+o[g<<2&63]+"=")),y.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,y,m=[],w=g;w>18&63]+o[y>>12&63]+o[y>>6&63]+o[63&y]);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,y=i[o+p];for(p+=v,l=y&(1<<-g)-1,y>>=-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*(y?-1:1);f+=Math.pow(2,s),l-=h}return(y?-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,y=s?0:l-1,m=s?1:-1,w=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+y]=255&u,y+=m,u/=256,c-=8);for(f=f<0;i[a+y]=255&f,y+=m,f/=256,h-=8);i[a+y-m]|=128*w}},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(y){l={error:y}}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:y(0),throw:y(1),return:y(2)},typeof Symbol=="function"&&(p[Symbol.iterator]=function(){return this}),p;function y(m){return function(w){return function(x){if(d)throw new TypeError("Generator is already executing.");for(;v;)try{if(d=1,h&&(g=2&x[0]?h.return:x[0]?h.throw||((g=h.return)&&g.call(h),0):h.next)&&!(g=g.call(h,x[1])).done)return g;switch(h=0,g&&(x=[2&x[0],g.value]),x[0]){case 0:case 1:g=x;break;case 4:return v.label++,{value:x[1],done:!1};case 5:v.label++,h=x[1],x=[0];continue;case 7:x=v.ops.pop(),v.trys.pop();continue;default:if(g=v.trys,!((g=g.length>0&&g[g.length-1])||x[0]!==6&&x[0]!==2)){v=0;continue}if(x[0]===3&&(!g||x[1]>g[0]&&x[1]0)&&!(h=p.next()).done;)v.push(h.value)}catch(y){g={error:y}}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),y=v.next();!y.done;y=v.next()){var m=y.value;if(l.isFunction(u))u.call(null,m)&&(f[p]=d);else if(m===u)return void(f[p]=d);p++}}catch(w){h={error:w}}finally{try{y&&!y.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(y){d={error:y}}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 y=v.value;u.call(null,y)&&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,y;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&&(y=d.return)&&y.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:y(0),throw:y(1),return:y(2)},typeof Symbol=="function"&&(p[Symbol.iterator]=function(){return this}),p;function y(m){return function(w){return function(x){if(d)throw new TypeError("Generator is already executing.");for(;v;)try{if(d=1,h&&(g=2&x[0]?h.return:x[0]?h.throw||((g=h.return)&&g.call(h),0):h.next)&&!(g=g.call(h,x[1])).done)return g;switch(h=0,g&&(x=[2&x[0],g.value]),x[0]){case 0:case 1:g=x;break;case 4:return v.label++,{value:x[1],done:!1};case 5:v.label++,h=x[1],x=[0];continue;case 7:x=v.ops.pop(),v.trys.pop();continue;default:if(g=v.trys,!((g=g.length>0&&g[g.length-1])||x[0]!==6&&x[0]!==2)){v=0;continue}if(x[0]===3&&(!g||x[1]>g[0]&&x[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(y){g={error:y}}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)){y=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),y=[];try{for(;(d===void 0||d-- >0)&&!(g=v.next()).done;)y.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 y},c=this&&this.__spread||function(){for(var u=[],d=0;d=y.length&&(y=void 0),{value:y&&y[x++],done:!y}}};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(y,m){for(var w=0;;){var x=w=65&&_<=90?String.fromCodePoint(_+32):T}}catch(E){m={error:E}}finally{try{S&&!S.done&&(w=C.return)&&w.call(C)}finally{if(m)throw m.error}}return x}function g(y){return y.replace(/^[\t\n\f\r ]+/,"").replace(/[\t\n\f\r ]+$/,"")}function p(y,m,w){if(!l.isArray(m))return p(y,Array.from(m),w);for(var x="";w.position=97&&_<=122?String.fromCodePoint(_-32):T}}catch(E){m={error:E}}finally{try{S&&!S.done&&(w=C.return)&&w.call(C)}finally{if(m)throw m.error}}return x},n.asciiCaseInsensitiveMatch=function(y,m){return h(y)===h(m)},n.asciiEncode=function(y){return console.assert(d(y),"asciiEncode requires an ASCII string."),u(y)},n.asciiDecode=function(y){var m,w;try{for(var x=o(y),C=x.next();!C.done;C=x.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&&(w=x.return)&&w.call(x)}finally{if(m)throw m.error}}return s.isomorphicDecode(y)},n.stripNewlines=function(y){return y.replace(/[\n\r]/g,"")},n.normalizeNewlines=function(y){return y.replace(/\r\n/g,` +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),y=u(g)?p:g,m=l.createDocument();h(m,v);var w=new c.XMLBuilderImpl(m);return y!==void 0&&w.ele(y),w}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 y=g;y._xmlBuilderOptions=p,y._isFragment=v}n.builder=function(g,p){var v=d(u(g)?g:o.DefaultBuilderOptions),y=s.Guard.isNode(g)||a.isArray(g)?g:p;if(y===void 0)throw new Error("Invalid arguments.");if(a.isArray(y)){for(var m=[],w=0;w0)&&!(x=S.next()).done;)T.push(x.value)}catch(_){C={error:_}}finally{try{x&&!x.done&&(w=S.return)&&w.call(S)}finally{if(C)throw C.error}}return T},a=this&&this.__values||function(y){var m=typeof Symbol=="function"&&Symbol.iterator,w=m&&y[m],x=0;if(w)return w.call(y);if(y&&typeof y.length=="number")return{next:function(){return y&&x>=y.length&&(y=void 0),{value:y&&y[x++],done:!y}}};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 y(m){this._domNode=m}return Object.defineProperty(y.prototype,"node",{get:function(){return this._domNode},enumerable:!0,configurable:!0}),Object.defineProperty(y.prototype,"options",{get:function(){return this._options},enumerable:!0,configurable:!0}),y.prototype.set=function(m){return this._options=c.applyDefaults(c.applyDefaults(this._options,m,!0),s.DefaultBuilderOptions),this},y.prototype.ele=function(m,w,x){var C,S,T,_,E,b;if(c.isObject(m))return new p.ObjectReader(this._options).parse(this,m);if(m!==null&&/^\s*0&&(m===void 0&&(m=w.slice(C+1)),w=w.slice(0,C)),m===void 0)m=x?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,w]},y.prototype._updateNamespace=function(m){var w,x,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],b=_[1],D=d.create_element(this._doc,b,m,E);try{for(var O=a(T.attributes),L=O.next();!L.done;L=O.next()){var P=L.value,k=P.prefix?P.prefix+":"+P.localName:P.localName,G=o(d.namespace_extractQName(k),1)[0],j=P.namespaceURI;j===null&&G!==null&&(j=T.lookupNamespaceURI(G)),j===null?D.setAttribute(k,P.value):D.setAttributeNS(j,k,P.value)}}catch(ve){w={error:ve}}finally{try{L&&!L.done&&(x=O.return)&&x.call(O)}finally{if(w)throw w.error}}var F=T.parentNode;if(F===null)throw new Error("Parent node is null."+this._debugInfo());F.replaceChild(D,T),this._domNode=D;try{for(var U=a(T.childNodes),W=U.next();!W.done;W=U.next()){var J=W.value.cloneNode(!0);if(D.appendChild(J),u.Guard.isElementNode(J)){var te=o(d.namespace_extractQName(J.prefix?J.prefix+":"+J.localName:J.localName),1)[0],le=D.lookupNamespaceURI(te);new y(J)._updateNamespace(le)}}}catch(ve){C={error:ve}}finally{try{W&&!W.done&&(S=U.return)&&S.call(U)}finally{if(C)throw C.error}}}},Object.defineProperty(y.prototype,"_doc",{get:function(){var m=this.node;if(u.Guard.isDocumentNode(m))return m;var w=m.ownerDocument;if(!w)throw new Error("Owner document is null. "+this._debugInfo());return w},enumerable:!0,configurable:!0}),y.prototype._debugInfo=function(m){var w=this.node,x=w.parentNode;m=m||w.nodeName;var C=x?x.nodeName:"";return C?"node: <"+m+">, parent: <"+C+">":"node: <"+m+">"},Object.defineProperty(y.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}),y}();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),y=c(p.length),m=f?y-1:0,w=f?-1:1;if(h<2)for(;;){if(m in v){g=v[m],m+=w;break}if(m+=w,f?m<0:y<=m)throw TypeError("Reduce of empty array with no initial value")}for(;f?m>=0:y>m;m+=w)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(y){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(y){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 x=[];return x[v]=!1,x.concat()[0]!==x}),m=h("concat"),w=function(x){if(!c(x))return!1;var C=x[v];return C!==void 0?!!C:s(x)};o({target:"Array",proto:!0,forced:!y||!m},{concat:function(x){var C,S,T,_,E,b=l(this),D=d(b,0),O=0;for(C=-1,T=arguments.length;C9007199254740991)throw TypeError("Maximum allowed index exceeded");for(S=0;S<_;S++,O++)S in E&&u(D,O,E[S])}else{if(O>=9007199254740991)throw TypeError("Maximum allowed index exceeded");u(D,O++,E)}return D.length=O,D}})},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 y=[];return y.groups={a:"7"},y},"".replace(v,"$")!=="7"}),d="a".replace(/./,"$0")==="$0",h=s("replace"),g=!!/./[h]&&/./[h]("a","$0")==="",p=!a(function(){var v=/(?:)/,y=v.exec;v.exec=function(){return y.apply(this,arguments)};var m="ab".split(v);return m.length!==2||m[0]!=="a"||m[1]!=="b"});r.exports=function(v,y,m,w){var x=s(v),C=!a(function(){var D={};return D[x]=function(){return 7},""[v](D)!=7}),S=C&&!a(function(){var D=!1,O=/a/;return v==="split"&&((O={}).constructor={},O.constructor[f]=function(){return O},O.flags="",O[x]=/./[x]),O.exec=function(){return D=!0,null},O[x](""),!D});if(!C||!S||v==="replace"&&(!u||!d||g)||v==="split"&&!p){var T=/./[x],_=m(x,""[v],function(D,O,L,P,k){return O.exec===c?C&&!k?{done:!0,value:T.call(O,L,P)}:{done:!0,value:D.call(L,O,P)}:{done:!1}},{REPLACE_KEEPS_$0:d,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:g}),E=_[0],b=_[1];o(String.prototype,v,E),o(RegExp.prototype,x,y==2?function(D,O){return b.call(D,this,O)}:function(D){return b.call(D,this)})}w&&l(RegExp.prototype[x],"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),y=v[0],m=v[1],w=new s(function(S,T,_){return 3*(T+_)/4-_}(0,y,m)),x=0,C=m>0?y-4:y;for(p=0;p>16&255,w[x++]=g>>8&255,w[x++]=255&g;return m===2&&(g=a[h.charCodeAt(p)]<<2|a[h.charCodeAt(p+1)]>>4,w[x++]=255&g),m===1&&(g=a[h.charCodeAt(p)]<<10|a[h.charCodeAt(p+1)]<<4|a[h.charCodeAt(p+2)]>>2,w[x++]=g>>8&255,w[x++]=255&g),w},n.fromByteArray=function(h){for(var g,p=h.length,v=p%3,y=[],m=0,w=p-v;mw?w:m+16383));return v===1?(g=h[p-1],y.push(o[g>>2]+o[g<<4&63]+"==")):v===2&&(g=(h[p-2]<<8)+h[p-1],y.push(o[g>>10]+o[g>>4&63]+o[g<<2&63]+"=")),y.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,y,m=[],w=g;w>18&63]+o[y>>12&63]+o[y>>6&63]+o[63&y]);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,y=i[o+p];for(p+=v,l=y&(1<<-g)-1,y>>=-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*(y?-1:1);f+=Math.pow(2,s),l-=h}return(y?-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,y=s?0:l-1,m=s?1:-1,w=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+y]=255&u,y+=m,u/=256,c-=8);for(f=f<0;i[a+y]=255&f,y+=m,f/=256,h-=8);i[a+y-m]|=128*w}},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(y){l={error:y}}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:y(0),throw:y(1),return:y(2)},typeof Symbol=="function"&&(p[Symbol.iterator]=function(){return this}),p;function y(m){return function(w){return function(x){if(d)throw new TypeError("Generator is already executing.");for(;v;)try{if(d=1,h&&(g=2&x[0]?h.return:x[0]?h.throw||((g=h.return)&&g.call(h),0):h.next)&&!(g=g.call(h,x[1])).done)return g;switch(h=0,g&&(x=[2&x[0],g.value]),x[0]){case 0:case 1:g=x;break;case 4:return v.label++,{value:x[1],done:!1};case 5:v.label++,h=x[1],x=[0];continue;case 7:x=v.ops.pop(),v.trys.pop();continue;default:if(g=v.trys,!((g=g.length>0&&g[g.length-1])||x[0]!==6&&x[0]!==2)){v=0;continue}if(x[0]===3&&(!g||x[1]>g[0]&&x[1]0)&&!(h=p.next()).done;)v.push(h.value)}catch(y){g={error:y}}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),y=v.next();!y.done;y=v.next()){var m=y.value;if(l.isFunction(u))u.call(null,m)&&(f[p]=d);else if(m===u)return void(f[p]=d);p++}}catch(w){h={error:w}}finally{try{y&&!y.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(y){d={error:y}}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 y=v.value;u.call(null,y)&&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,y;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&&(y=d.return)&&y.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:y(0),throw:y(1),return:y(2)},typeof Symbol=="function"&&(p[Symbol.iterator]=function(){return this}),p;function y(m){return function(w){return function(x){if(d)throw new TypeError("Generator is already executing.");for(;v;)try{if(d=1,h&&(g=2&x[0]?h.return:x[0]?h.throw||((g=h.return)&&g.call(h),0):h.next)&&!(g=g.call(h,x[1])).done)return g;switch(h=0,g&&(x=[2&x[0],g.value]),x[0]){case 0:case 1:g=x;break;case 4:return v.label++,{value:x[1],done:!1};case 5:v.label++,h=x[1],x=[0];continue;case 7:x=v.ops.pop(),v.trys.pop();continue;default:if(g=v.trys,!((g=g.length>0&&g[g.length-1])||x[0]!==6&&x[0]!==2)){v=0;continue}if(x[0]===3&&(!g||x[1]>g[0]&&x[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(y){g={error:y}}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)){y=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),y=[];try{for(;(d===void 0||d-- >0)&&!(g=v.next()).done;)y.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 y},c=this&&this.__spread||function(){for(var u=[],d=0;d=y.length&&(y=void 0),{value:y&&y[x++],done:!y}}};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(y,m){for(var w=0;;){var x=w=65&&_<=90?String.fromCodePoint(_+32):T}}catch(E){m={error:E}}finally{try{S&&!S.done&&(w=C.return)&&w.call(C)}finally{if(m)throw m.error}}return x}function g(y){return y.replace(/^[\t\n\f\r ]+/,"").replace(/[\t\n\f\r ]+$/,"")}function p(y,m,w){if(!l.isArray(m))return p(y,Array.from(m),w);for(var x="";w.position=97&&_<=122?String.fromCodePoint(_-32):T}}catch(E){m={error:E}}finally{try{S&&!S.done&&(w=C.return)&&w.call(C)}finally{if(m)throw m.error}}return x},n.asciiCaseInsensitiveMatch=function(y,m){return h(y)===h(m)},n.asciiEncode=function(y){return console.assert(d(y),"asciiEncode requires an ASCII string."),u(y)},n.asciiDecode=function(y){var m,w;try{for(var x=o(y),C=x.next();!C.done;C=x.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&&(w=x.return)&&w.call(x)}finally{if(m)throw m.error}}return s.isomorphicDecode(y)},n.stripNewlines=function(y){return y.replace(/[\n\r]/g,"")},n.normalizeNewlines=function(y){return y.replace(/\r\n/g,` `).replace(/\r/g,` `)},n.stripLeadingAndTrailingASCIIWhitespace=g,n.stripAndCollapseASCIIWhitespace=function(y){return g(y.replace(/[\t\n\f\r ]{2,}/g," "))},n.collectASequenceOfCodePoints=p,n.skipASCIIWhitespace=v,n.strictlySplit=function y(m,w){if(!l.isArray(m))return y(Array.from(m),w);var x={position:0},C=[],S=p(function(T){return w!==T},m,x);for(C.push(S);x.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})(.*)$/,y={javascript:!0,"javascript:":!0},m={javascript:!0,"javascript:":!0},w={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},x=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("?"),b=E!==-1&&E127?ye+="x":ye+=ge[Ie];if(!ye.match(p)){var Ee=ue.slice(0,G),H=ue.slice(G+1),O=ge.match(v);O&&(Ee.push(O[1]),H.unshift(O[2])),H.length&&(I="/"+H.join(".")+I),this.hostname=Ee.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),ne||(this.hostname=o.toASCII(this.hostname));var Y=this.port?":"+this.port:"",K=this.hostname||"";this.host=K+Y,this.href+=this.host,ne&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),I[0]!=="/"&&(I="/"+I))}if(!y[L])for(G=0,me=d.length;G0)&&_.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(!ge.length)return _.pathname=null,_.search?_.path="/"+_.search:_.path=null,_.href=_.format(),_;for(var Ie=ge.slice(-1)[0],Pe=(_.host||S.host||ge.length>1)&&(Ie==="."||Ie==="..")||Ie==="",Ee=0,H=ge.length;H>=0;H--)(Ie=ge[H])==="."?ge.splice(H,1):Ie===".."?(ge.splice(H,1),Ee++):Ee&&(ge.splice(H,1),Ee--);if(!ue&&!me)for(;Ee--;Ee)ge.unshift("..");!ue||ge[0]===""||ge[0]&&ge[0].charAt(0)==="/"||ge.unshift(""),Pe&&ge.join("/").substr(-1)!=="/"&&ge.push("");var O,Y=ge[0]===""||ge[0]&&ge[0].charAt(0)==="/";return ye&&(_.hostname=_.host=Y?"":ge.length?ge.shift():"",(O=!!(_.host&&_.host.indexOf("@")>0)&&_.host.split("@"))&&(_.auth=O.shift(),_.host=_.hostname=O.shift())),(ue=ue||_.host&&ge.length)&&!Y&&ge.unshift(""),ge.length?_.pathname=ge.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,y=String.fromCharCode;function m(D){throw new RangeError(p[D])}function w(D,I){for(var P=D.length,M=[];P--;)M[P]=I(D[P]);return M}function x(D,I){var P=D.split("@"),M="";return P.length>1&&(M=P[0]+"@",D=P[1]),M+w((D=D.replace(g,".")).split("."),I).join(".")}function C(D){for(var I,P,M=[],L=0,B=D.length;L=55296&&I<=56319&&L65535&&(P+=y((I-=65536)>>>10&1023|55296),I=56320|1023&I),P+=y(I)}).join("")}function T(D,I){return D+22+75*(D<26)-((I!=0)<<5)}function _(D,I,P){var M=0;for(D=P?v(D/700):D>>1,D+=v(D/I);D>455;M+=36)D=v(D/35);return v(M+36*D/(D+38))}function E(D){var I,P,M,L,B,j,V,F,G,X,ne,ue=[],me=D.length,ge=0,ye=128,Ie=72;for((P=D.lastIndexOf("-"))<0&&(P=0),M=0;M=128&&m("not-basic"),ue.push(D.charCodeAt(M));for(L=P>0?P+1:0;L=me&&m("invalid-input"),((F=(ne=D.charCodeAt(L++))-48<10?ne-22:ne-65<26?ne-65:ne-97<26?ne-97:36)>=36||F>v((u-ge)/j))&&m("overflow"),ge+=F*j,!(F<(G=V<=Ie?1:V>=Ie+26?26:V-Ie));V+=36)j>v(u/(X=36-G))&&m("overflow"),j*=X;Ie=_(ge-B,I=ue.length+1,B==0),v(ge/I)>u-ye&&m("overflow"),ye+=v(ge/I),ge%=I,ue.splice(ge++,0,ye)}return S(ue)}function b(D){var I,P,M,L,B,j,V,F,G,X,ne,ue,me,ge,ye,Ie=[];for(ue=(D=C(D)).length,I=128,P=0,B=72,j=0;j=I&&nev((u-P)/(me=M+1))&&m("overflow"),P+=(V-I)*me,I=V,j=0;ju&&m("overflow"),ne==I){for(F=P,G=36;!(F<(X=G<=B?1:G>=B+26?26:G-B));G+=36)ye=F-X,ge=36-X,Ie.push(y(T(X+ye%ge,0))),F=v(ye/ge);Ie.push(y(T(F,0))),B=_(P,me,M==L),P=0,++M}++P,++I}return Ie.join("")}f={version:"1.4.1",ucs2:{decode:C,encode:S},decode:E,encode:b,toASCII:function(D){return x(D,function(I){return h.test(I)?"xn--"+b(I):I})},toUnicode:function(D){return x(D,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=x.substr(0,C),y=x.substr(C+1)):(v=x,y=""),m=decodeURIComponent(v),w=decodeURIComponent(y),o(u,m)?a(u[m])?u[m].push(w):u[m]=[u[m],w]:u[m]=w}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[b++],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 b,D,I=E.call(T),P=[];try{for(;(_===void 0||_-- >0)&&!(b=I.next()).done;)P.push(b.value)}catch(M){D={error:M}}finally{try{b&&!b.done&&(E=I.return)&&E.call(I)}finally{if(D)throw D.error}}return P},s=this&&this.__spread||function(){for(var T=[],_=0;_0;ge--){var ye;if(C(ye=me[ge],T)){ue=ye;break}}var Ie,Pe,Ee=[];try{for(var H=o(F._children),O=H.next();!O.done;O=H.next())if(x(_e=O.value,T)){if(f.Guard.isDocumentTypeNode(_e))throw new l.HierarchyRequestError;Ee.push(_e)}}catch(Oe){b={error:Oe}}finally{try{O&&!O.done&&(D=H.return)&&D.call(H)}finally{if(b)throw b.error}}if(d.tree_isAncestorOf(j,L,!0))Ie=L,Pe=B;else{for(var Y=L;Y._parent!==null&&!d.tree_isAncestorOf(j,Y._parent);)Y=Y._parent;if(Y._parent===null)throw new Error("Parent node is null.");Ie=Y._parent,Pe=1+d.tree_index(Y)}if(f.Guard.isCharacterDataNode(G))(K=p.node_clone(L))._data=g.characterData_substringData(L,B,d.tree_nodeLength(L)-B),v.mutation_append(K,M),g.characterData_replaceData(L,B,d.tree_nodeLength(L)-B,"");else if(G!==null){var K=p.node_clone(G);v.mutation_append(K,M);var Z=S(u.create_range([L,B],[G,d.tree_nodeLength(G)]));v.mutation_append(Z,K)}try{for(var ae=o(Ee),oe=ae.next();!oe.done;oe=ae.next()){var _e=oe.value;v.mutation_append(_e,M)}}catch(Oe){I={error:Oe}}finally{try{oe&&!oe.done&&(P=ae.return)&&P.call(ae)}finally{if(I)throw I.error}}return f.Guard.isCharacterDataNode(ue)?((K=p.node_clone(j))._data=g.characterData_substringData(j,0,V),v.mutation_append(K,M),g.characterData_replaceData(j,0,V,"")):ue!==null&&(K=p.node_clone(ue),v.mutation_append(K,M),Z=S(u.create_range([ue,0],[j,V])),v.mutation_append(Z,K)),T._start=[Ie,Pe],T._end=[Ie,Pe],M}n.range_collapsed=m,n.range_root=w,n.range_isContained=x,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 b=[_,E];w(T)===d.tree_rootNode(_)&&h.boundaryPoint_position(b,T._end)!==c.BoundaryPosition.After||(T._end=b),T._start=b},n.range_setTheEnd=function(T,_,E){if(f.Guard.isDocumentTypeNode(_))throw new l.InvalidNodeTypeError;if(E>d.tree_nodeLength(_))throw new l.IndexSizeError;var b=[_,E];w(T)===d.tree_rootNode(_)&&h.boundaryPoint_position(b,T._start)!==c.BoundaryPosition.Before||(T._start=b),T._end=b},n.range_select=function(T,_){var E=T._parent;if(E===null)throw new l.InvalidNodeTypeError;var b=d.tree_index(T);_._start=[E,b],_._end=[E,b+1]},n.range_extract=S,n.range_cloneTheContents=function T(_){var E,b,D,I,P,M,L=u.create_documentFragment(_._startNode._nodeDocument);if(m(_))return L;var B=_._startNode,j=_._startOffset,V=_._endNode,F=_._endOffset;B===V&&f.Guard.isCharacterDataNode(B)&&((O=p.node_clone(B))._data=g.characterData_substringData(B,j,F-j),v.mutation_append(O,L));for(var G=B;!d.tree_isAncestorOf(V,G,!0);){if(G._parent===null)throw new Error("Parent node is null.");G=G._parent}var X=null;if(!d.tree_isAncestorOf(V,B,!0))try{for(var ne=o(G._children),ue=ne.next();!ue.done;ue=ne.next())if(C(Ie=ue.value,_)){X=Ie;break}}catch(oe){E={error:oe}}finally{try{ue&&!ue.done&&(b=ne.return)&&b.call(ne)}finally{if(E)throw E.error}}var me=null;if(!d.tree_isAncestorOf(B,V,!0))for(var ge=s(G._children),ye=ge.length-1;ye>0;ye--){var Ie;if(C(Ie=ge[ye],_)){me=Ie;break}}var Pe=[];try{for(var Ee=o(G._children),H=Ee.next();!H.done;H=Ee.next())if(x(ae=H.value,_)){if(f.Guard.isDocumentTypeNode(ae))throw new l.HierarchyRequestError;Pe.push(ae)}}catch(oe){D={error:oe}}finally{try{H&&!H.done&&(I=Ee.return)&&I.call(Ee)}finally{if(D)throw D.error}}if(f.Guard.isCharacterDataNode(X))(O=p.node_clone(B))._data=g.characterData_substringData(B,j,d.tree_nodeLength(B)-j),v.mutation_append(O,L);else if(X!==null){var O=p.node_clone(X);v.mutation_append(O,L);var Y=T(u.create_range([B,j],[X,d.tree_nodeLength(X)]));v.mutation_append(Y,O)}try{for(var K=o(Pe),Z=K.next();!Z.done;Z=K.next()){var ae=Z.value,O=p.node_clone(ae);v.mutation_append(O,L)}}catch(oe){P={error:oe}}finally{try{Z&&!Z.done&&(M=K.return)&&M.call(K)}finally{if(P)throw P.error}}return f.Guard.isCharacterDataNode(me)?((O=p.node_clone(V))._data=g.characterData_substringData(V,0,F),v.mutation_append(O,L)):me!==null&&(O=p.node_clone(me),L.append(O),Y=S(u.create_range([me,0],[V,F])),v.mutation_append(Y,O)),L},n.range_insert=function(T,_){var E,b;if(f.Guard.isProcessingInstructionNode(_._startNode)||f.Guard.isCommentNode(_._startNode)||f.Guard.isTextNode(_._startNode)&&_._startNode._parent===null||_._startNode===T)throw new l.HierarchyRequestError;var D,I=null;if(f.Guard.isTextNode(_._startNode))I=_._startNode;else{var P=0;try{for(var M=o(_._startNode._children),L=M.next();!L.done;L=M.next()){var B=L.value;if(P===_._startOffset){I=B;break}P++}}catch(V){E={error:V}}finally{try{L&&!L.done&&(b=M.return)&&b.call(M)}finally{if(E)throw E.error}}}if(I===null)D=_._startNode;else{if(I._parent===null)throw new Error("Parent node is null.");D=I._parent}v.mutation_ensurePreInsertionValidity(T,D,I),f.Guard.isTextNode(_._startNode)&&(I=y.text_split(_._startNode,_._startOffset)),T===I&&(I=T._nextSibling),T._parent!==null&&v.mutation_remove(T,T._parent);var j=I===null?d.tree_nodeLength(D):d.tree_index(I);f.Guard.isDocumentFragmentNode(T)?j+=d.tree_nodeLength(T):j++,v.mutation_preInsert(T,D,I),m(_)&&(_._end=[D,j])},n.range_getContainedNodes=function(T){var _;return(_={})[Symbol.iterator]=function(){var E=T.commonAncestorContainer,b=d.tree_getFirstDescendantNode(E);return{next:function(){for(;b&&!x(b,T);)b=d.tree_getNextDescendantNode(E,b);if(b===null)return{done:!0,value:null};var D={done:!1,value:b};return b=d.tree_getNextDescendantNode(E,b),D}}},_},n.range_getPartiallyContainedNodes=function(T){var _;return(_={})[Symbol.iterator]=function(){var E=T.commonAncestorContainer,b=d.tree_getFirstDescendantNode(E);return{next:function(){for(;b&&!C(b,T);)b=d.tree_getNextDescendantNode(E,b);if(b===null)return{done:!0,value:null};var D={done:!1,value:b};return b=d.tree_getNextDescendantNode(E,b),D}}},_}},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:` +`," "]),d=["'"].concat(u),h=["%","/","?",";","#"].concat(d),g=["/","?","#"],p=/^[+a-z0-9A-Z_-]{0,63}$/,v=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,y={javascript:!0,"javascript:":!0},m={javascript:!0,"javascript:":!0},w={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},x=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("?"),b=E!==-1&&E127?ye+="x":ye+=pe[Ie];if(!ye.match(p)){var be=le.slice(0,W),$=le.slice(W+1),R=pe.match(v);R&&(be.push(R[1]),$.unshift(R[2])),$.length&&(O="/"+$.join(".")+O),this.hostname=be.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),te||(this.hostname=o.toASCII(this.hostname));var X=this.port?":"+this.port:"",K=this.hostname||"";this.host=K+X,this.href+=this.host,te&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),O[0]!=="/"&&(O="/"+O))}if(!y[k])for(W=0,ve=d.length;W0)&&_.host.split("@"))&&(_.auth=R.shift(),_.host=_.hostname=R.shift())),_.search=S.search,_.query=S.query,a.isNull(_.pathname)&&a.isNull(_.search)||(_.path=(_.pathname?_.pathname:"")+(_.search?_.search:"")),_.href=_.format(),_;if(!pe.length)return _.pathname=null,_.search?_.path="/"+_.search:_.path=null,_.href=_.format(),_;for(var Ie=pe.slice(-1)[0],Le=(_.host||S.host||pe.length>1)&&(Ie==="."||Ie==="..")||Ie==="",be=0,$=pe.length;$>=0;$--)(Ie=pe[$])==="."?pe.splice($,1):Ie===".."?(pe.splice($,1),be++):be&&(pe.splice($,1),be--);if(!le&&!ve)for(;be--;be)pe.unshift("..");!le||pe[0]===""||pe[0]&&pe[0].charAt(0)==="/"||pe.unshift(""),Le&&pe.join("/").substr(-1)!=="/"&&pe.push("");var R,X=pe[0]===""||pe[0]&&pe[0].charAt(0)==="/";return ye&&(_.hostname=_.host=X?"":pe.length?pe.shift():"",(R=!!(_.host&&_.host.indexOf("@")>0)&&_.host.split("@"))&&(_.auth=R.shift(),_.host=_.hostname=R.shift())),(le=le||_.host&&pe.length)&&!X&&pe.unshift(""),pe.length?_.pathname=pe.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,y=String.fromCharCode;function m(D){throw new RangeError(p[D])}function w(D,O){for(var L=D.length,P=[];L--;)P[L]=O(D[L]);return P}function x(D,O){var L=D.split("@"),P="";return L.length>1&&(P=L[0]+"@",D=L[1]),P+w((D=D.replace(g,".")).split("."),O).join(".")}function C(D){for(var O,L,P=[],k=0,G=D.length;k=55296&&O<=56319&&k65535&&(L+=y((O-=65536)>>>10&1023|55296),O=56320|1023&O),L+=y(O)}).join("")}function T(D,O){return D+22+75*(D<26)-((O!=0)<<5)}function _(D,O,L){var P=0;for(D=L?v(D/700):D>>1,D+=v(D/O);D>455;P+=36)D=v(D/35);return v(P+36*D/(D+38))}function E(D){var O,L,P,k,G,j,F,U,W,J,te,le=[],ve=D.length,pe=0,ye=128,Ie=72;for((L=D.lastIndexOf("-"))<0&&(L=0),P=0;P=128&&m("not-basic"),le.push(D.charCodeAt(P));for(k=L>0?L+1:0;k=ve&&m("invalid-input"),((U=(te=D.charCodeAt(k++))-48<10?te-22:te-65<26?te-65:te-97<26?te-97:36)>=36||U>v((u-pe)/j))&&m("overflow"),pe+=U*j,!(U<(W=F<=Ie?1:F>=Ie+26?26:F-Ie));F+=36)j>v(u/(J=36-W))&&m("overflow"),j*=J;Ie=_(pe-G,O=le.length+1,G==0),v(pe/O)>u-ye&&m("overflow"),ye+=v(pe/O),pe%=O,le.splice(pe++,0,ye)}return S(le)}function b(D){var O,L,P,k,G,j,F,U,W,J,te,le,ve,pe,ye,Ie=[];for(le=(D=C(D)).length,O=128,L=0,G=72,j=0;j=O&&tev((u-L)/(ve=P+1))&&m("overflow"),L+=(F-O)*ve,O=F,j=0;ju&&m("overflow"),te==O){for(U=L,W=36;!(U<(J=W<=G?1:W>=G+26?26:W-G));W+=36)ye=U-J,pe=36-J,Ie.push(y(T(J+ye%pe,0))),U=v(ye/pe);Ie.push(y(T(U,0))),G=_(L,ve,P==k),L=0,++P}++L,++O}return Ie.join("")}f={version:"1.4.1",ucs2:{decode:C,encode:S},decode:E,encode:b,toASCII:function(D){return x(D,function(O){return h.test(O)?"xn--"+b(O):O})},toUnicode:function(D){return x(D,function(O){return d.test(O)?E(O.slice(4).toLowerCase()):O})}},(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=x.substr(0,C),y=x.substr(C+1)):(v=x,y=""),m=decodeURIComponent(v),w=decodeURIComponent(y),o(u,m)?a(u[m])?u[m].push(w):u[m]=[u[m],w]:u[m]=w}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[b++],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 b,D,O=E.call(T),L=[];try{for(;(_===void 0||_-- >0)&&!(b=O.next()).done;)L.push(b.value)}catch(P){D={error:P}}finally{try{b&&!b.done&&(E=O.return)&&E.call(O)}finally{if(D)throw D.error}}return L},s=this&&this.__spread||function(){for(var T=[],_=0;_0;pe--){var ye;if(C(ye=ve[pe],T)){le=ye;break}}var Ie,Le,be=[];try{for(var $=o(U._children),R=$.next();!R.done;R=$.next())if(x(Te=R.value,T)){if(f.Guard.isDocumentTypeNode(Te))throw new l.HierarchyRequestError;be.push(Te)}}catch(Oe){b={error:Oe}}finally{try{R&&!R.done&&(D=$.return)&&D.call($)}finally{if(b)throw b.error}}if(d.tree_isAncestorOf(j,k,!0))Ie=k,Le=G;else{for(var X=k;X._parent!==null&&!d.tree_isAncestorOf(j,X._parent);)X=X._parent;if(X._parent===null)throw new Error("Parent node is null.");Ie=X._parent,Le=1+d.tree_index(X)}if(f.Guard.isCharacterDataNode(W))(K=p.node_clone(k))._data=g.characterData_substringData(k,G,d.tree_nodeLength(k)-G),v.mutation_append(K,P),g.characterData_replaceData(k,G,d.tree_nodeLength(k)-G,"");else if(W!==null){var K=p.node_clone(W);v.mutation_append(K,P);var Z=S(u.create_range([k,G],[W,d.tree_nodeLength(W)]));v.mutation_append(Z,K)}try{for(var ie=o(be),oe=ie.next();!oe.done;oe=ie.next()){var Te=oe.value;v.mutation_append(Te,P)}}catch(Oe){O={error:Oe}}finally{try{oe&&!oe.done&&(L=ie.return)&&L.call(ie)}finally{if(O)throw O.error}}return f.Guard.isCharacterDataNode(le)?((K=p.node_clone(j))._data=g.characterData_substringData(j,0,F),v.mutation_append(K,P),g.characterData_replaceData(j,0,F,"")):le!==null&&(K=p.node_clone(le),v.mutation_append(K,P),Z=S(u.create_range([le,0],[j,F])),v.mutation_append(Z,K)),T._start=[Ie,Le],T._end=[Ie,Le],P}n.range_collapsed=m,n.range_root=w,n.range_isContained=x,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 b=[_,E];w(T)===d.tree_rootNode(_)&&h.boundaryPoint_position(b,T._end)!==c.BoundaryPosition.After||(T._end=b),T._start=b},n.range_setTheEnd=function(T,_,E){if(f.Guard.isDocumentTypeNode(_))throw new l.InvalidNodeTypeError;if(E>d.tree_nodeLength(_))throw new l.IndexSizeError;var b=[_,E];w(T)===d.tree_rootNode(_)&&h.boundaryPoint_position(b,T._start)!==c.BoundaryPosition.Before||(T._start=b),T._end=b},n.range_select=function(T,_){var E=T._parent;if(E===null)throw new l.InvalidNodeTypeError;var b=d.tree_index(T);_._start=[E,b],_._end=[E,b+1]},n.range_extract=S,n.range_cloneTheContents=function T(_){var E,b,D,O,L,P,k=u.create_documentFragment(_._startNode._nodeDocument);if(m(_))return k;var G=_._startNode,j=_._startOffset,F=_._endNode,U=_._endOffset;G===F&&f.Guard.isCharacterDataNode(G)&&((R=p.node_clone(G))._data=g.characterData_substringData(G,j,U-j),v.mutation_append(R,k));for(var W=G;!d.tree_isAncestorOf(F,W,!0);){if(W._parent===null)throw new Error("Parent node is null.");W=W._parent}var J=null;if(!d.tree_isAncestorOf(F,G,!0))try{for(var te=o(W._children),le=te.next();!le.done;le=te.next())if(C(Ie=le.value,_)){J=Ie;break}}catch(oe){E={error:oe}}finally{try{le&&!le.done&&(b=te.return)&&b.call(te)}finally{if(E)throw E.error}}var ve=null;if(!d.tree_isAncestorOf(G,F,!0))for(var pe=s(W._children),ye=pe.length-1;ye>0;ye--){var Ie;if(C(Ie=pe[ye],_)){ve=Ie;break}}var Le=[];try{for(var be=o(W._children),$=be.next();!$.done;$=be.next())if(x(ie=$.value,_)){if(f.Guard.isDocumentTypeNode(ie))throw new l.HierarchyRequestError;Le.push(ie)}}catch(oe){D={error:oe}}finally{try{$&&!$.done&&(O=be.return)&&O.call(be)}finally{if(D)throw D.error}}if(f.Guard.isCharacterDataNode(J))(R=p.node_clone(G))._data=g.characterData_substringData(G,j,d.tree_nodeLength(G)-j),v.mutation_append(R,k);else if(J!==null){var R=p.node_clone(J);v.mutation_append(R,k);var X=T(u.create_range([G,j],[J,d.tree_nodeLength(J)]));v.mutation_append(X,R)}try{for(var K=o(Le),Z=K.next();!Z.done;Z=K.next()){var ie=Z.value,R=p.node_clone(ie);v.mutation_append(R,k)}}catch(oe){L={error:oe}}finally{try{Z&&!Z.done&&(P=K.return)&&P.call(K)}finally{if(L)throw L.error}}return f.Guard.isCharacterDataNode(ve)?((R=p.node_clone(F))._data=g.characterData_substringData(F,0,U),v.mutation_append(R,k)):ve!==null&&(R=p.node_clone(ve),k.append(R),X=S(u.create_range([ve,0],[F,U])),v.mutation_append(X,R)),k},n.range_insert=function(T,_){var E,b;if(f.Guard.isProcessingInstructionNode(_._startNode)||f.Guard.isCommentNode(_._startNode)||f.Guard.isTextNode(_._startNode)&&_._startNode._parent===null||_._startNode===T)throw new l.HierarchyRequestError;var D,O=null;if(f.Guard.isTextNode(_._startNode))O=_._startNode;else{var L=0;try{for(var P=o(_._startNode._children),k=P.next();!k.done;k=P.next()){var G=k.value;if(L===_._startOffset){O=G;break}L++}}catch(F){E={error:F}}finally{try{k&&!k.done&&(b=P.return)&&b.call(P)}finally{if(E)throw E.error}}}if(O===null)D=_._startNode;else{if(O._parent===null)throw new Error("Parent node is null.");D=O._parent}v.mutation_ensurePreInsertionValidity(T,D,O),f.Guard.isTextNode(_._startNode)&&(O=y.text_split(_._startNode,_._startOffset)),T===O&&(O=T._nextSibling),T._parent!==null&&v.mutation_remove(T,T._parent);var j=O===null?d.tree_nodeLength(D):d.tree_index(O);f.Guard.isDocumentFragmentNode(T)?j+=d.tree_nodeLength(T):j++,v.mutation_preInsert(T,D,O),m(_)&&(_._end=[D,j])},n.range_getContainedNodes=function(T){var _;return(_={})[Symbol.iterator]=function(){var E=T.commonAncestorContainer,b=d.tree_getFirstDescendantNode(E);return{next:function(){for(;b&&!x(b,T);)b=d.tree_getNextDescendantNode(E,b);if(b===null)return{done:!0,value:null};var D={done:!1,value:b};return b=d.tree_getNextDescendantNode(E,b),D}}},_},n.range_getPartiallyContainedNodes=function(T){var _;return(_={})[Symbol.iterator]=function(){var E=T.commonAncestorContainer,b=d.tree_getFirstDescendantNode(E);return{next:function(){for(;b&&!C(b,T);)b=d.tree_getNextDescendantNode(E,b);if(b===null)return{done:!0,value:null};var D={done:!1,value:b};return b=d.tree_getNextDescendantNode(E,b),D}}},_}},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 y=!0,m=!0,w=this.currentNode.firstChild,x=0,C=0;w;){if(f.Guard.isExclusiveTextNode(w))C++;else{if(!f.Guard.isCDATASectionNode(w)){y=!1,m=!1;break}x++}w.data!==""&&(m=!1),w=w.nextSibling}this._refs.suppressPretty=!this._writerOptions.indentTextOnlyNodes&&y&&(x<=1&&C===0||x===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,y,m=this;p===void 0&&(p=0);var w="",x=this._isLeafNode(h);if(l.isArray(h)){w+="[";var C=h.length,S=0;try{for(var T=s(h),_=T.next();!_.done;_=T.next()){var E=_.value;w+=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,y){return g+=p._descendantCount(y,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 y,m,w=this;v===void 0&&(v=!1);var x="";if(l.isArray(h))try{for(var C=s(h),S=C.next();!S.done;S=C.next()){var T=S.value;x+=this._beginLine(g,p,!0),l.isObject(T)?l.isEmpty(T)?x+='""'+this._endLine(g):x+=this._convertObject(T,g,p,!0):x+=this._val(T)+this._endLine(g)}}catch(_){y={error:_}}finally{try{S&&!S.done&&(m=C.return)&&m.call(C)}finally{if(y)throw y.error}}else l.forEachObject(h,function(_,E){v?(x+=w._key(_),v=!1):x+=w._beginLine(g,p)+w._key(_),l.isObject(E)?l.isEmpty(E)?x+=' ""'+w._endLine(g):x+=w._endLine(g)+w._convertObject(E,g,p+1):x+=" "+w._val(E)+w._endLine(g)},this);return x},d.prototype._beginLine=function(h,g,p){p===void 0&&(p=!1);var v=h.offset+g+1,y=new Array(v).join(h.indent);return p?y.substr(0,y.length-2)+"-"+y.substr(-1,1):y},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,y=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 b=E.value;c.list.remove(b._registeredObserverList,function(D){return s.Guard.isTransientRegisteredObserver(D)&&D.source===C})}}catch(D){S={error:D}}finally{try{E&&!E.done&&(T=_.return)&&T.call(_)}finally{if(S)throw S.error}}C.options=v}},m=this;try{for(var w=o(u._registeredObserverList),x=w.next();!x.done;x=w.next())y(x.value)}catch(C){h={error:C}}finally{try{x&&!x.done&&(g=w.return)&&g.call(w)}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(y){return y.observer===h})}}catch(y){u={error:y}}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;)w.push(v.value)}catch(x){y={error:x}}finally{try{v&&!v.done&&(p=m.return)&&p.call(m)}finally{if(y)throw y.error}}return w},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,y,m,w=new s.XMLStringLexer(g,{skipWhitespaceOnlyText:!0}),x=f.create_document(),C=x,S=w.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(x.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(x.createCDATASection(E.data));break;case c.TokenType.Comment:var b=S;if(!f.xml_isLegalChar(b.data)||b.data.indexOf("--")!==-1||b.data.endsWith("-"))throw new Error("Comment data contains invalid characters.");C.appendChild(x.createComment(b.data));break;case c.TokenType.PI:var D=S;if(D.target.indexOf(":")!==-1||/^xml$/i.test(D.target))throw new Error("Processing instruction target contains invalid characters.");if(!f.xml_isLegalChar(D.data)||D.data.indexOf("?>")!==-1)throw new Error("Processing instruction data contains invalid characters.");C.appendChild(x.createProcessingInstruction(D.target,D.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(x.createTextNode(this._decodeText(I.data)));break;case c.TokenType.Element:var P=S,M=o(f.namespace_extractQName(P.name),2),L=M[0],B=M[1];if(B.indexOf(":")!==-1||!f.xml_isName(B))throw new Error("Node local name contains invalid characters.");if(L==="xmlns")throw new Error("An element cannot have the 'xmlns' prefix.");var j=C.lookupNamespaceURI(L),V={};try{for(var F=(p=void 0,a(P.attributes)),G=F.next();!G.done;G=F.next()){var X=o(G.value,2),ne=X[0],ue=X[1];if(ne==="xmlns")j=ue;else{var me=o(f.namespace_extractQName(ne),2),ge=me[0],ye=me[1];ge==="xmlns"&&(ye===L&&(j=ue),V[ye]=ue)}}}catch(Z){p={error:Z}}finally{try{G&&!G.done&&(v=F.return)&&v.call(F)}finally{if(p)throw p.error}}var Ie=j!==null?x.createElementNS(j,P.name):x.createElement(P.name);C.appendChild(Ie);var Pe=new u.LocalNameSet;try{for(var Ee=(y=void 0,a(P.attributes)),H=Ee.next();!H.done;H=Ee.next()){var O=o(H.value,2),Y=(ne=O[0],ue=O[1],o(f.namespace_extractQName(ne),2)),K=(ge=Y[0],ye=Y[1],null);if(ge==="xmlns"||ge===null&&ye==="xmlns"?K=l.namespace.XMLNS:(K=Ie.lookupNamespaceURI(ge))!==null&&Ie.isDefaultNamespace(K)?K=null:K===null&&ge!==null&&(K=V[ge]||null),Pe.has(K,ye))throw new Error("Element contains duplicate attributes.");if(Pe.set(K,ye),K===l.namespace.XMLNS&&ue===l.namespace.XMLNS)throw new Error("XMLNS namespace is reserved.");if(ye.indexOf(":")!==-1||!f.xml_isName(ye))throw new Error("Attribute local name contains invalid characters.");if(ge==="xmlns"&&ue==="")throw new Error("Empty XML namespace is not allowed.");K!==null?Ie.setAttributeNS(K,ne,this._decodeAttributeValue(ue)):Ie.setAttribute(ne,this._decodeAttributeValue(ue))}}catch(Z){y={error:Z}}finally{try{H&&!H.done&&(m=Ee.return)&&m.call(Ee)}finally{if(y)throw y.error}}P.selfClosing||(C=Ie);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=w.nextToken()}return x},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,y,m){switch(g.nodeType){case a.NodeType.Element:return this._serializeElementNS(g,p,v,y,m);case a.NodeType.Document:return this._serializeDocumentNS(g,p,v,y,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,y,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,y,m){var w,x;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(),b={},D=this._recordNamespaceInformation(g,E,b),I=p,P=g.namespaceURI;if(I===P)D!==null&&(_=!0),C+=S=P===f.namespace.XML?"xml:"+g.localName:g.localName;else{var M=g.prefix,L=null;if(M===null&&P===D||(L=E.get(M,P)),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,D!==null&&D!==f.namespace.XML&&(I=D||null),C+=S):M!==null?(M in b&&(M=this._generatePrefix(P,E,y)),E.set(M,P),C+=S+=M+":"+g.localName,C+=" xmlns:"+M+'="'+this._serializeAttributeValue(P,m)+'"',D!==null&&(I=D||null)):D===null||D!==null&&D!==P?(_=!0,I=P,C+=S+=g.localName,C+=' xmlns="'+this._serializeAttributeValue(P,m)+'"'):(I=P,C+=S+=g.localName)}C+=this._serializeAttributesNS(g,E,y,b,_,m);var B=P===f.namespace.HTML;if(B&&g.childNodes.length===0&&h._VoidElementNames.has(g.localName)?(C+=" /",T=!0):B||g.childNodes.length!==0||(C+="/",T=!0),C+=">",T)return C;if(!(B&&g.localName==="template"))try{for(var j=o(g._children||g.childNodes),V=j.next();!V.done;V=j.next()){var F=V.value;C+=this._serializeNodeNS(F,I,E,y,m)}}catch(G){w={error:G}}finally{try{V&&!V.done&&(x=j.return)&&x.call(j)}finally{if(w)throw w.error}}return C+=""},h.prototype._serializeDocumentNS=function(g,p,v,y,m){var w,x;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,y,m)}}catch(E){w={error:E}}finally{try{T&&!T.done&&(x=S.return)&&x.call(S)}finally{if(w)throw w.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="",y=0;y"?">":m}return v},h.prototype._serializeDocumentFragmentNS=function(g,p,v,y,m){var w,x,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,y,m)}}catch(E){w={error:E}}finally{try{T&&!T.done&&(x=S.return)&&x.call(S)}finally{if(w)throw w.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,y,m,w){var x,C,S="",T=w?new s.LocalNameSet:void 0;try{for(var _=o(g.attributes),E=_.next();!E.done;E=_.next()){var b=E.value;if(m||w||b.namespaceURI!==null){if(w&&T&&T.has(b.namespaceURI,b.localName))throw new Error("Element contains duplicate attributes (well-formed required).");w&&T&&T.set(b.namespaceURI,b.localName);var D=b.namespaceURI,I=null;if(D!==null)if(I=p.get(b.prefix,D),D===f.namespace.XMLNS){if(b.value===f.namespace.XML||b.prefix===null&&m||b.prefix!==null&&(!(b.localName in y)||y[b.localName]!==b.value)&&p.has(b.localName,b.value))continue;if(w&&b.value===f.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"&&(I="xmlns")}else I===null&&(S+=" xmlns:"+(I=b.prefix===null||p.hasPrefix(b.prefix)&&!p.has(b.prefix,D)?this._generatePrefix(D,p,v):b.prefix)+'="'+this._serializeAttributeValue(D,w)+'"');if(S+=" ",I!==null&&(S+=I+":"),w&&(b.localName.indexOf(":")!==-1||!u.xml_isName(b.localName)||b.localName==="xmlns"&&D===null))throw new Error("Attribute local name contains invalid characters (well-formed required).");S+=b.localName+'="'+this._serializeAttributeValue(b.value,w)+'"'}else S+=" "+b.localName+'="'+this._serializeAttributeValue(b.value,w)+'"'}}catch(P){x={error:P}}finally{try{E&&!E.done&&(C=_.return)&&C.call(_)}finally{if(x)throw x.error}}return S},h.prototype._recordNamespaceInformation=function(g,p,v){var y,m,w=null;try{for(var x=o(g.attributes),C=x.next();!C.done;C=x.next()){var S=C.value,T=S.namespaceURI,_=S.prefix;if(T===f.namespace.XMLNS){if(_===null){w=S.value;continue}var E=S.localName,b=S.value;if(b===f.namespace.XML||(b===""&&(b=null),p.has(E,b)))continue;p.set(E,b),v[E]=b||""}}}catch(D){y={error:D}}finally{try{C&&!C.done&&(m=x.return)&&m.call(x)}finally{if(y)throw y.error}}return w},h.prototype._generatePrefix=function(g,p,v){var y="ns"+v.value;return v.value++,p.set(y,g),y},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="",y=0;y"?">":m}return v},h.prototype._serializeElement=function(g,p){var v,y;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,w=g.localName,x="<"+w;if(x+=this._serializeAttributes(g,p),g._children.size===0&&(x+="/",m=!0),x+=">",m)return x;try{for(var C=o(g._children),S=C.next();!S.done;S=C.next()){var T=S.value;x+=this._serializeNode(T,p)}}catch(_){v={error:_}}finally{try{S&&!S.done&&(y=C.return)&&y.call(C)}finally{if(v)throw v.error}}return x+=""},h.prototype._serializeDocument=function(g,p){var v,y;if(p&&g.documentElement===null)throw new Error("Missing document element (well-formed required).");var m="";try{for(var w=o(g._children),x=w.next();!x.done;x=w.next()){var C=x.value;m+=this._serializeNode(C,p)}}catch(S){v={error:S}}finally{try{x&&!x.done&&(y=w.return)&&y.call(w)}finally{if(v)throw v.error}}return m},h.prototype._serializeDocumentFragment=function(g,p){var v,y,m="";try{for(var w=o(g._children),x=w.next();!x.done;x=w.next()){var C=x.value;m+=this._serializeNode(C,p)}}catch(S){v={error:S}}finally{try{x&&!x.done&&(y=w.return)&&y.call(w)}finally{if(v)throw v.error}}return m},h.prototype._serializeAttributes=function(g,p){var v,y,m="",w=p?{}:void 0;try{for(var x=o(g.attributes),C=x.next();!C.done;C=x.next()){var S=C.value;if(p&&w&&S.localName in w)throw new Error("Element contains duplicate attributes (well-formed required).");if(p&&w&&(w[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&&(y=x.return)&&y.call(x)}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,y){v.__proto__=y}||function(v,y){for(var m in y)y.hasOwnProperty(m)&&(v[m]=y[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 y,m,w=v.call(g),x=[];try{for(;(p===void 0||p-- >0)&&!(y=w.next()).done;)x.push(y.value)}catch(C){m={error:C}}finally{try{y&&!y.done&&(v=w.return)&&v.call(w)}finally{if(m)throw m.error}}return x},c=this&&this.__values||function(g){var p=typeof Symbol=="function"&&Symbol.iterator,v=p&&g[p],y=0;if(v)return v.call(g);if(g&&typeof g.length=="number")return{next:function(){return g&&y>=g.length&&(g=void 0),{value:g&&g[y++],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,y){for(var m,w,x,C,S=new l.XMLStringLexer(y,{skipWhitespaceOnlyText:!0}),T=v,_=v,E=S.nextToken();E.type!==f.TokenType.EOF;){switch(E.type){case f.TokenType.Declaration:var b=E,D=this.sanitize(b.version);if(D!=="1.0")throw new Error("Invalid xml version: "+D);var I={version:D};b.encoding&&(I.encoding=this.sanitize(b.encoding)),b.standalone&&(I.standalone=this.sanitize(b.standalone)==="yes"),_.set(I);break;case f.TokenType.DocType:var P=E;_=this.docType(_,this.sanitize(P.name),this.sanitize(P.pubId),this.sanitize(P.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 B=E;_=this.instruction(_,this.sanitize(B.target),this.sanitize(B.data))||_;break;case f.TokenType.Text:var j=E;_=this.text(_,this._decodeText(this.sanitize(j.data)))||_;break;case f.TokenType.Element:var V=E,F=this.sanitize(V.name),G=s(d.namespace_extractQName(F),1)[0],X=_.node.lookupNamespaceURI(G),ne={};try{for(var ue=(m=void 0,c(V.attributes)),me=ue.next();!me.done;me=ue.next()){var ge=s(me.value,2),ye=ge[0],Ie=ge[1];if(ye=this.sanitize(ye),Ie=this.sanitize(Ie),ye==="xmlns")X=Ie;else{var Pe=s(d.namespace_extractQName(ye),2),Ee=Pe[0],H=Pe[1];Ee==="xmlns"&&(H===G&&(X=Ie),ne[H]=Ie)}}}catch(_e){m={error:_e}}finally{try{me&&!me.done&&(w=ue.return)&&w.call(ue)}finally{if(m)throw m.error}}var O=X!==null?this.element(_,X,F):this.element(_,void 0,F);if(O===void 0)break;_.node===v.node&&(T=O);try{for(var Y=(x=void 0,c(V.attributes)),K=Y.next();!K.done;K=Y.next()){var Z=s(K.value,2);ye=Z[0],Ie=Z[1],ye=this.sanitize(ye),Ie=this.sanitize(Ie);var ae=s(d.namespace_extractQName(ye),2),oe=(Ee=ae[0],H=ae[1],null);Ee==="xmlns"||Ee===null&&H==="xmlns"?oe=u.namespace.XMLNS:(oe=O.node.lookupNamespaceURI(Ee))!==null&&O.node.isDefaultNamespace(oe)?oe=null:oe===null&&Ee!==null&&(oe=ne[Ee]||null),oe!==null?this.attribute(O,oe,ye,this._decodeAttributeValue(Ie)):this.attribute(O,void 0,ye,this._decodeAttributeValue(Ie))}}catch(_e){x={error:_e}}finally{try{K&&!K.done&&(C=Y.return)&&C.call(Y)}finally{if(x)throw x.error}}V.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(y){p[y]=y}),d({},g)[v]!=7||s(d({},p)).join("")!="abcdefghijklmnopqrst"})?function(g,p){for(var v=f(g),y=arguments.length,m=1,w=c.f,x=l.f;y>m;)for(var C,S=u(arguments[m++]),T=w?s(S).concat(w(S)):s(S),_=T.length,E=0;_>E;)C=T[E++],o&&!x.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 y(O){return O===10||O===13}function m(O){return O===9||O===32}function w(O){return O===9||O===32||O===10||O===13}function x(O){return O===44||O===91||O===93||O===123||O===125}function C(O){var Y;return 48<=O&&O<=57?O-48:97<=(Y=32|O)&&Y<=102?Y-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),b=0;b<256;b++)_[b]=S(b)?1:0,E[b]=S(b);function D(O,Y){this.input=O,this.filename=Y.filename||null,this.schema=Y.schema||l,this.onWarning=Y.onWarning||null,this.legacy=Y.legacy||!1,this.json=Y.json||!1,this.listener=Y.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,Y){return new a(Y,new s(O.filename,O.input,O.position,O.line,O.position-O.lineStart))}function P(O,Y){throw I(O,Y)}function M(O,Y){O.onWarning&&O.onWarning.call(null,I(O,Y))}var L={YAML:function(O,Y,K){var Z,ae,oe;O.version!==null&&P(O,"duplication of %YAML directive"),K.length!==1&&P(O,"YAML directive accepts exactly one argument"),(Z=/^([0-9]+)\.([0-9]+)$/.exec(K[0]))===null&&P(O,"ill-formed argument of the YAML directive"),ae=parseInt(Z[1],10),oe=parseInt(Z[2],10),ae!==1&&P(O,"unacceptable YAML version of the document"),O.version=K[0],O.checkLineBreaks=oe<2,oe!==1&&oe!==2&&M(O,"unsupported YAML version of the document")},TAG:function(O,Y,K){var Z,ae;K.length!==2&&P(O,"TAG directive accepts exactly two arguments"),Z=K[0],ae=K[1],g.test(Z)||P(O,"ill-formed tag handle (first argument) of the TAG directive"),f.call(O.tagMap,Z)&&P(O,'there is a previously declared suffix for "'+Z+'" tag handle'),p.test(ae)||P(O,"ill-formed tag prefix (second argument) of the TAG directive"),O.tagMap[Z]=ae}};function B(O,Y,K,Z){var ae,oe,_e,Oe;if(Y1&&(O.result+=o.repeat(` -`,Y-1))}function ue(O,Y){var K,Z,ae=O.tag,oe=O.anchor,_e=[],Oe=!1;for(O.anchor!==null&&(O.anchorMap[O.anchor]=_e),Z=O.input.charCodeAt(O.position);Z!==0&&Z===45&&w(O.input.charCodeAt(O.position+1));)if(Oe=!0,O.position++,G(O,!0,-1)&&O.lineIndent<=Y)_e.push(null),Z=O.input.charCodeAt(O.position);else if(K=O.line,ye(O,Y,3,!1,!0),_e.push(O.result),G(O,!0,-1),Z=O.input.charCodeAt(O.position),(O.line===K||O.lineIndent>Y)&&Z!==0)P(O,"bad indentation of a sequence entry");else if(O.lineIndentY?pe=1:O.lineIndent===Y?pe=0:O.lineIndentY?pe=1:O.lineIndent===Y?pe=0:O.lineIndentft)&&(ye(fe,ft,4,!0,Re)&&(Kt?dn=fe.result:Nn=fe.result),Kt||(V(fe,Ct,Ht,$t,dn,Nn,Je,at),$t=dn=Nn=null),G(fe,!0,-1),tt=fe.input.charCodeAt(fe.position)),fe.lineIndent>ft&&tt!==0)P(fe,"bad indentation of a mapping entry");else if(fe.lineIndent=0))break;Re===0?P(fe,"bad explicit indentation width of a block scalar; it cannot be less than one"):Bt?P(fe,"repeat of an indentation width identifier"):(Ct=ft+Re-1,Bt=!0)}if(m(Je)){do Je=fe.input.charCodeAt(++fe.position);while(m(Je));if(Je===35)do Je=fe.input.charCodeAt(++fe.position);while(!y(Je)&&Je!==0)}for(;Je!==0;){for(F(fe),fe.lineIndent=0,Je=fe.input.charCodeAt(fe.position);(!Bt||fe.lineIndentCt&&(Ct=fe.lineIndent),y(Je))Ht++;else{if(fe.lineIndent0){for(Re=at,Je=0;Re>0;Re--)(at=C(tt=fe.input.charCodeAt(++fe.position)))>=0?Je=(Je<<4)+at:P(fe,"expected hexadecimal character");fe.result+=T(Je),fe.position++}else P(fe,"unknown escape sequence");gt=mt=fe.position}else y(tt)?(B(fe,gt,mt,!0),ne(fe,G(fe,!1,ft)),gt=mt=fe.position):fe.position===fe.lineStart&&X(fe)?P(fe,"unexpected end of the document within a double quoted scalar"):(fe.position++,mt=fe.position)}P(fe,"unexpected end of the stream within a double quoted scalar")}(O,de)?Ye=!0:function(fe){var ft,gt,mt;if((mt=fe.input.charCodeAt(fe.position))!==42)return!1;for(mt=fe.input.charCodeAt(++fe.position),ft=fe.position;mt!==0&&!w(mt)&&!x(mt);)mt=fe.input.charCodeAt(++fe.position);return fe.position===ft&&P(fe,"name of an alias node must contain at least one character"),gt=fe.input.slice(ft,fe.position),fe.anchorMap.hasOwnProperty(gt)||P(fe,'unidentified alias "'+gt+'"'),fe.result=fe.anchorMap[gt],G(fe,!0,-1),!0}(O)?(Ye=!0,O.tag===null&&O.anchor===null||P(O,"alias node should not have any properties")):function(fe,ft,gt){var mt,Re,Je,at,tt,wt,Bt,Ct,Ht=fe.kind,$t=fe.result;if(w(Ct=fe.input.charCodeAt(fe.position))||x(Ct)||Ct===35||Ct===38||Ct===42||Ct===33||Ct===124||Ct===62||Ct===39||Ct===34||Ct===37||Ct===64||Ct===96||(Ct===63||Ct===45)&&(w(mt=fe.input.charCodeAt(fe.position+1))||gt&&x(mt)))return!1;for(fe.kind="scalar",fe.result="",Re=Je=fe.position,at=!1;Ct!==0;){if(Ct===58){if(w(mt=fe.input.charCodeAt(fe.position+1))||gt&&x(mt))break}else if(Ct===35){if(w(fe.input.charCodeAt(fe.position-1)))break}else{if(fe.position===fe.lineStart&&X(fe)||gt&&x(Ct))break;if(y(Ct)){if(tt=fe.line,wt=fe.lineStart,Bt=fe.lineIndent,G(fe,!1,-1),fe.lineIndent>=ft){at=!0,Ct=fe.input.charCodeAt(fe.position);continue}fe.position=Je,fe.line=tt,fe.lineStart=wt,fe.lineIndent=Bt;break}}at&&(B(fe,Re,Je,!1),ne(fe,fe.line-tt),Re=Je=fe.position,at=!1),m(Ct)||(Je=fe.position+1),Ct=fe.input.charCodeAt(++fe.position)}return B(fe,Re,Je,!1),!!fe.result||(fe.kind=Ht,fe.result=$t,!1)}(O,de,K===1)&&(Ye=!0,O.tag===null&&(O.tag="?")),O.anchor!==null&&(O.anchorMap[O.anchor]=O.result)):pe===0&&(Ye=Oe&&ue(O,be))),O.tag!==null&&O.tag!=="!")if(O.tag==="?"){for(O.result!==null&&O.kind!=="scalar"&&P(O,'unacceptable node kind for ! tag; it should be "scalar", not "'+O.kind+'"'),Ge=0,$e=O.implicitTypes.length;Ge<$e;Ge+=1)if((le=O.implicitTypes[Ge]).resolve(O.result)){O.result=le.construct(O.result),O.tag=le.tag,O.anchor!==null&&(O.anchorMap[O.anchor]=O.result);break}}else f.call(O.typeMap[O.kind||"fallback"],O.tag)?(le=O.typeMap[O.kind||"fallback"][O.tag],O.result!==null&&le.kind!==O.kind&&P(O,"unacceptable node kind for !<"+O.tag+'> tag; it should be "'+le.kind+'", not "'+O.kind+'"'),le.resolve(O.result)?(O.result=le.construct(O.result),O.anchor!==null&&(O.anchorMap[O.anchor]=O.result)):P(O,"cannot resolve a node with !<"+O.tag+"> explicit tag")):P(O,"unknown tag !<"+O.tag+">");return O.listener!==null&&O.listener("close",O),O.tag!==null||O.anchor!==null||Ye}function Ie(O){var Y,K,Z,ae,oe=O.position,_e=!1;for(O.version=null,O.checkLineBreaks=O.legacy,O.tagMap={},O.anchorMap={};(ae=O.input.charCodeAt(O.position))!==0&&(G(O,!0,-1),ae=O.input.charCodeAt(O.position),!(O.lineIndent>0||ae!==37));){for(_e=!0,ae=O.input.charCodeAt(++O.position),Y=O.position;ae!==0&&!w(ae);)ae=O.input.charCodeAt(++O.position);for(Z=[],(K=O.input.slice(Y,O.position)).length<1&&P(O,"directive name must not be less than one character in length");ae!==0;){for(;m(ae);)ae=O.input.charCodeAt(++O.position);if(ae===35){do ae=O.input.charCodeAt(++O.position);while(ae!==0&&!y(ae));break}if(y(ae))break;for(Y=O.position;ae!==0&&!w(ae);)ae=O.input.charCodeAt(++O.position);Z.push(O.input.slice(Y,O.position))}ae!==0&&F(O),f.call(L,K)?L[K](O,K,Z):M(O,'unknown document directive "'+K+'"')}G(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,G(O,!0,-1)):_e&&P(O,"directives end mark is expected"),ye(O,O.lineIndent-1,4,!1,!0),G(O,!0,-1),O.checkLineBreaks&&d.test(O.input.slice(oe,O.position))&&M(O,"non-ASCII line breaks are interpreted as content"),O.documents.push(O.result),O.position===O.lineStart&&X(O)?O.input.charCodeAt(O.position)===46&&(O.position+=3,G(O,!0,-1)):O.position0&&`\0\r +`,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,y,m=this;p===void 0&&(p=0);var w="",x=this._isLeafNode(h);if(l.isArray(h)){w+="[";var C=h.length,S=0;try{for(var T=s(h),_=T.next();!_.done;_=T.next()){var E=_.value;w+=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,y){return g+=p._descendantCount(y,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 y,m,w=this;v===void 0&&(v=!1);var x="";if(l.isArray(h))try{for(var C=s(h),S=C.next();!S.done;S=C.next()){var T=S.value;x+=this._beginLine(g,p,!0),l.isObject(T)?l.isEmpty(T)?x+='""'+this._endLine(g):x+=this._convertObject(T,g,p,!0):x+=this._val(T)+this._endLine(g)}}catch(_){y={error:_}}finally{try{S&&!S.done&&(m=C.return)&&m.call(C)}finally{if(y)throw y.error}}else l.forEachObject(h,function(_,E){v?(x+=w._key(_),v=!1):x+=w._beginLine(g,p)+w._key(_),l.isObject(E)?l.isEmpty(E)?x+=' ""'+w._endLine(g):x+=w._endLine(g)+w._convertObject(E,g,p+1):x+=" "+w._val(E)+w._endLine(g)},this);return x},d.prototype._beginLine=function(h,g,p){p===void 0&&(p=!1);var v=h.offset+g+1,y=new Array(v).join(h.indent);return p?y.substr(0,y.length-2)+"-"+y.substr(-1,1):y},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,y=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 b=E.value;c.list.remove(b._registeredObserverList,function(D){return s.Guard.isTransientRegisteredObserver(D)&&D.source===C})}}catch(D){S={error:D}}finally{try{E&&!E.done&&(T=_.return)&&T.call(_)}finally{if(S)throw S.error}}C.options=v}},m=this;try{for(var w=o(u._registeredObserverList),x=w.next();!x.done;x=w.next())y(x.value)}catch(C){h={error:C}}finally{try{x&&!x.done&&(g=w.return)&&g.call(w)}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(y){return y.observer===h})}}catch(y){u={error:y}}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;)w.push(v.value)}catch(x){y={error:x}}finally{try{v&&!v.done&&(p=m.return)&&p.call(m)}finally{if(y)throw y.error}}return w},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,y,m,w=new s.XMLStringLexer(g,{skipWhitespaceOnlyText:!0}),x=f.create_document(),C=x,S=w.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(x.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(x.createCDATASection(E.data));break;case c.TokenType.Comment:var b=S;if(!f.xml_isLegalChar(b.data)||b.data.indexOf("--")!==-1||b.data.endsWith("-"))throw new Error("Comment data contains invalid characters.");C.appendChild(x.createComment(b.data));break;case c.TokenType.PI:var D=S;if(D.target.indexOf(":")!==-1||/^xml$/i.test(D.target))throw new Error("Processing instruction target contains invalid characters.");if(!f.xml_isLegalChar(D.data)||D.data.indexOf("?>")!==-1)throw new Error("Processing instruction data contains invalid characters.");C.appendChild(x.createProcessingInstruction(D.target,D.data));break;case c.TokenType.Text:var O=S;if(!f.xml_isLegalChar(O.data))throw new Error("Text data contains invalid characters.");C.appendChild(x.createTextNode(this._decodeText(O.data)));break;case c.TokenType.Element:var L=S,P=o(f.namespace_extractQName(L.name),2),k=P[0],G=P[1];if(G.indexOf(":")!==-1||!f.xml_isName(G))throw new Error("Node local name contains invalid characters.");if(k==="xmlns")throw new Error("An element cannot have the 'xmlns' prefix.");var j=C.lookupNamespaceURI(k),F={};try{for(var U=(p=void 0,a(L.attributes)),W=U.next();!W.done;W=U.next()){var J=o(W.value,2),te=J[0],le=J[1];if(te==="xmlns")j=le;else{var ve=o(f.namespace_extractQName(te),2),pe=ve[0],ye=ve[1];pe==="xmlns"&&(ye===k&&(j=le),F[ye]=le)}}}catch(Z){p={error:Z}}finally{try{W&&!W.done&&(v=U.return)&&v.call(U)}finally{if(p)throw p.error}}var Ie=j!==null?x.createElementNS(j,L.name):x.createElement(L.name);C.appendChild(Ie);var Le=new u.LocalNameSet;try{for(var be=(y=void 0,a(L.attributes)),$=be.next();!$.done;$=be.next()){var R=o($.value,2),X=(te=R[0],le=R[1],o(f.namespace_extractQName(te),2)),K=(pe=X[0],ye=X[1],null);if(pe==="xmlns"||pe===null&&ye==="xmlns"?K=l.namespace.XMLNS:(K=Ie.lookupNamespaceURI(pe))!==null&&Ie.isDefaultNamespace(K)?K=null:K===null&&pe!==null&&(K=F[pe]||null),Le.has(K,ye))throw new Error("Element contains duplicate attributes.");if(Le.set(K,ye),K===l.namespace.XMLNS&&le===l.namespace.XMLNS)throw new Error("XMLNS namespace is reserved.");if(ye.indexOf(":")!==-1||!f.xml_isName(ye))throw new Error("Attribute local name contains invalid characters.");if(pe==="xmlns"&&le==="")throw new Error("Empty XML namespace is not allowed.");K!==null?Ie.setAttributeNS(K,te,this._decodeAttributeValue(le)):Ie.setAttribute(te,this._decodeAttributeValue(le))}}catch(Z){y={error:Z}}finally{try{$&&!$.done&&(m=be.return)&&m.call(be)}finally{if(y)throw y.error}}L.selfClosing||(C=Ie);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=w.nextToken()}return x},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,y,m){switch(g.nodeType){case a.NodeType.Element:return this._serializeElementNS(g,p,v,y,m);case a.NodeType.Document:return this._serializeDocumentNS(g,p,v,y,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,y,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,y,m){var w,x;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(),b={},D=this._recordNamespaceInformation(g,E,b),O=p,L=g.namespaceURI;if(O===L)D!==null&&(_=!0),C+=S=L===f.namespace.XML?"xml:"+g.localName:g.localName;else{var P=g.prefix,k=null;if(P===null&&L===D||(k=E.get(P,L)),P==="xmlns"){if(m)throw new Error("An element cannot have the 'xmlns' prefix (well-formed required).");k=P}k!==null?(S=k+":"+g.localName,D!==null&&D!==f.namespace.XML&&(O=D||null),C+=S):P!==null?(P in b&&(P=this._generatePrefix(L,E,y)),E.set(P,L),C+=S+=P+":"+g.localName,C+=" xmlns:"+P+'="'+this._serializeAttributeValue(L,m)+'"',D!==null&&(O=D||null)):D===null||D!==null&&D!==L?(_=!0,O=L,C+=S+=g.localName,C+=' xmlns="'+this._serializeAttributeValue(L,m)+'"'):(O=L,C+=S+=g.localName)}C+=this._serializeAttributesNS(g,E,y,b,_,m);var G=L===f.namespace.HTML;if(G&&g.childNodes.length===0&&h._VoidElementNames.has(g.localName)?(C+=" /",T=!0):G||g.childNodes.length!==0||(C+="/",T=!0),C+=">",T)return C;if(!(G&&g.localName==="template"))try{for(var j=o(g._children||g.childNodes),F=j.next();!F.done;F=j.next()){var U=F.value;C+=this._serializeNodeNS(U,O,E,y,m)}}catch(W){w={error:W}}finally{try{F&&!F.done&&(x=j.return)&&x.call(j)}finally{if(w)throw w.error}}return C+=""},h.prototype._serializeDocumentNS=function(g,p,v,y,m){var w,x;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,y,m)}}catch(E){w={error:E}}finally{try{T&&!T.done&&(x=S.return)&&x.call(S)}finally{if(w)throw w.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="",y=0;y"?">":m}return v},h.prototype._serializeDocumentFragmentNS=function(g,p,v,y,m){var w,x,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,y,m)}}catch(E){w={error:E}}finally{try{T&&!T.done&&(x=S.return)&&x.call(S)}finally{if(w)throw w.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,y,m,w){var x,C,S="",T=w?new s.LocalNameSet:void 0;try{for(var _=o(g.attributes),E=_.next();!E.done;E=_.next()){var b=E.value;if(m||w||b.namespaceURI!==null){if(w&&T&&T.has(b.namespaceURI,b.localName))throw new Error("Element contains duplicate attributes (well-formed required).");w&&T&&T.set(b.namespaceURI,b.localName);var D=b.namespaceURI,O=null;if(D!==null)if(O=p.get(b.prefix,D),D===f.namespace.XMLNS){if(b.value===f.namespace.XML||b.prefix===null&&m||b.prefix!==null&&(!(b.localName in y)||y[b.localName]!==b.value)&&p.has(b.localName,b.value))continue;if(w&&b.value===f.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"&&(O="xmlns")}else O===null&&(S+=" xmlns:"+(O=b.prefix===null||p.hasPrefix(b.prefix)&&!p.has(b.prefix,D)?this._generatePrefix(D,p,v):b.prefix)+'="'+this._serializeAttributeValue(D,w)+'"');if(S+=" ",O!==null&&(S+=O+":"),w&&(b.localName.indexOf(":")!==-1||!u.xml_isName(b.localName)||b.localName==="xmlns"&&D===null))throw new Error("Attribute local name contains invalid characters (well-formed required).");S+=b.localName+'="'+this._serializeAttributeValue(b.value,w)+'"'}else S+=" "+b.localName+'="'+this._serializeAttributeValue(b.value,w)+'"'}}catch(L){x={error:L}}finally{try{E&&!E.done&&(C=_.return)&&C.call(_)}finally{if(x)throw x.error}}return S},h.prototype._recordNamespaceInformation=function(g,p,v){var y,m,w=null;try{for(var x=o(g.attributes),C=x.next();!C.done;C=x.next()){var S=C.value,T=S.namespaceURI,_=S.prefix;if(T===f.namespace.XMLNS){if(_===null){w=S.value;continue}var E=S.localName,b=S.value;if(b===f.namespace.XML||(b===""&&(b=null),p.has(E,b)))continue;p.set(E,b),v[E]=b||""}}}catch(D){y={error:D}}finally{try{C&&!C.done&&(m=x.return)&&m.call(x)}finally{if(y)throw y.error}}return w},h.prototype._generatePrefix=function(g,p,v){var y="ns"+v.value;return v.value++,p.set(y,g),y},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="",y=0;y"?">":m}return v},h.prototype._serializeElement=function(g,p){var v,y;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,w=g.localName,x="<"+w;if(x+=this._serializeAttributes(g,p),g._children.size===0&&(x+="/",m=!0),x+=">",m)return x;try{for(var C=o(g._children),S=C.next();!S.done;S=C.next()){var T=S.value;x+=this._serializeNode(T,p)}}catch(_){v={error:_}}finally{try{S&&!S.done&&(y=C.return)&&y.call(C)}finally{if(v)throw v.error}}return x+=""},h.prototype._serializeDocument=function(g,p){var v,y;if(p&&g.documentElement===null)throw new Error("Missing document element (well-formed required).");var m="";try{for(var w=o(g._children),x=w.next();!x.done;x=w.next()){var C=x.value;m+=this._serializeNode(C,p)}}catch(S){v={error:S}}finally{try{x&&!x.done&&(y=w.return)&&y.call(w)}finally{if(v)throw v.error}}return m},h.prototype._serializeDocumentFragment=function(g,p){var v,y,m="";try{for(var w=o(g._children),x=w.next();!x.done;x=w.next()){var C=x.value;m+=this._serializeNode(C,p)}}catch(S){v={error:S}}finally{try{x&&!x.done&&(y=w.return)&&y.call(w)}finally{if(v)throw v.error}}return m},h.prototype._serializeAttributes=function(g,p){var v,y,m="",w=p?{}:void 0;try{for(var x=o(g.attributes),C=x.next();!C.done;C=x.next()){var S=C.value;if(p&&w&&S.localName in w)throw new Error("Element contains duplicate attributes (well-formed required).");if(p&&w&&(w[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&&(y=x.return)&&y.call(x)}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,y){v.__proto__=y}||function(v,y){for(var m in y)y.hasOwnProperty(m)&&(v[m]=y[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 y,m,w=v.call(g),x=[];try{for(;(p===void 0||p-- >0)&&!(y=w.next()).done;)x.push(y.value)}catch(C){m={error:C}}finally{try{y&&!y.done&&(v=w.return)&&v.call(w)}finally{if(m)throw m.error}}return x},c=this&&this.__values||function(g){var p=typeof Symbol=="function"&&Symbol.iterator,v=p&&g[p],y=0;if(v)return v.call(g);if(g&&typeof g.length=="number")return{next:function(){return g&&y>=g.length&&(g=void 0),{value:g&&g[y++],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,y){for(var m,w,x,C,S=new l.XMLStringLexer(y,{skipWhitespaceOnlyText:!0}),T=v,_=v,E=S.nextToken();E.type!==f.TokenType.EOF;){switch(E.type){case f.TokenType.Declaration:var b=E,D=this.sanitize(b.version);if(D!=="1.0")throw new Error("Invalid xml version: "+D);var O={version:D};b.encoding&&(O.encoding=this.sanitize(b.encoding)),b.standalone&&(O.standalone=this.sanitize(b.standalone)==="yes"),_.set(O);break;case f.TokenType.DocType:var L=E;_=this.docType(_,this.sanitize(L.name),this.sanitize(L.pubId),this.sanitize(L.sysId))||_;break;case f.TokenType.CDATA:var P=E;_=this.cdata(_,this.sanitize(P.data))||_;break;case f.TokenType.Comment:var k=E;_=this.comment(_,this.sanitize(k.data))||_;break;case f.TokenType.PI:var G=E;_=this.instruction(_,this.sanitize(G.target),this.sanitize(G.data))||_;break;case f.TokenType.Text:var j=E;_=this.text(_,this._decodeText(this.sanitize(j.data)))||_;break;case f.TokenType.Element:var F=E,U=this.sanitize(F.name),W=s(d.namespace_extractQName(U),1)[0],J=_.node.lookupNamespaceURI(W),te={};try{for(var le=(m=void 0,c(F.attributes)),ve=le.next();!ve.done;ve=le.next()){var pe=s(ve.value,2),ye=pe[0],Ie=pe[1];if(ye=this.sanitize(ye),Ie=this.sanitize(Ie),ye==="xmlns")J=Ie;else{var Le=s(d.namespace_extractQName(ye),2),be=Le[0],$=Le[1];be==="xmlns"&&($===W&&(J=Ie),te[$]=Ie)}}}catch(Te){m={error:Te}}finally{try{ve&&!ve.done&&(w=le.return)&&w.call(le)}finally{if(m)throw m.error}}var R=J!==null?this.element(_,J,U):this.element(_,void 0,U);if(R===void 0)break;_.node===v.node&&(T=R);try{for(var X=(x=void 0,c(F.attributes)),K=X.next();!K.done;K=X.next()){var Z=s(K.value,2);ye=Z[0],Ie=Z[1],ye=this.sanitize(ye),Ie=this.sanitize(Ie);var ie=s(d.namespace_extractQName(ye),2),oe=(be=ie[0],$=ie[1],null);be==="xmlns"||be===null&&$==="xmlns"?oe=u.namespace.XMLNS:(oe=R.node.lookupNamespaceURI(be))!==null&&R.node.isDefaultNamespace(oe)?oe=null:oe===null&&be!==null&&(oe=te[be]||null),oe!==null?this.attribute(R,oe,ye,this._decodeAttributeValue(Ie)):this.attribute(R,void 0,ye,this._decodeAttributeValue(Ie))}}catch(Te){x={error:Te}}finally{try{K&&!K.done&&(C=X.return)&&C.call(X)}finally{if(x)throw x.error}}F.selfClosing||(_=R);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(y){p[y]=y}),d({},g)[v]!=7||s(d({},p)).join("")!="abcdefghijklmnopqrst"})?function(g,p){for(var v=f(g),y=arguments.length,m=1,w=c.f,x=l.f;y>m;)for(var C,S=u(arguments[m++]),T=w?s(S).concat(w(S)):s(S),_=T.length,E=0;_>E;)C=T[E++],o&&!x.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(R){return Object.prototype.toString.call(R)}function y(R){return R===10||R===13}function m(R){return R===9||R===32}function w(R){return R===9||R===32||R===10||R===13}function x(R){return R===44||R===91||R===93||R===123||R===125}function C(R){var X;return 48<=R&&R<=57?R-48:97<=(X=32|R)&&X<=102?X-97+10:-1}function S(R){return R===48?"\0":R===97?"\x07":R===98?"\b":R===116||R===9?" ":R===110?` +`:R===118?"\v":R===102?"\f":R===114?"\r":R===101?"\x1B":R===32?" ":R===34?'"':R===47?"/":R===92?"\\":R===78?"…":R===95?" ":R===76?"\u2028":R===80?"\u2029":""}function T(R){return R<=65535?String.fromCharCode(R):String.fromCharCode(55296+(R-65536>>10),56320+(R-65536&1023))}for(var _=new Array(256),E=new Array(256),b=0;b<256;b++)_[b]=S(b)?1:0,E[b]=S(b);function D(R,X){this.input=R,this.filename=X.filename||null,this.schema=X.schema||l,this.onWarning=X.onWarning||null,this.legacy=X.legacy||!1,this.json=X.json||!1,this.listener=X.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=R.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function O(R,X){return new a(X,new s(R.filename,R.input,R.position,R.line,R.position-R.lineStart))}function L(R,X){throw O(R,X)}function P(R,X){R.onWarning&&R.onWarning.call(null,O(R,X))}var k={YAML:function(R,X,K){var Z,ie,oe;R.version!==null&&L(R,"duplication of %YAML directive"),K.length!==1&&L(R,"YAML directive accepts exactly one argument"),(Z=/^([0-9]+)\.([0-9]+)$/.exec(K[0]))===null&&L(R,"ill-formed argument of the YAML directive"),ie=parseInt(Z[1],10),oe=parseInt(Z[2],10),ie!==1&&L(R,"unacceptable YAML version of the document"),R.version=K[0],R.checkLineBreaks=oe<2,oe!==1&&oe!==2&&P(R,"unsupported YAML version of the document")},TAG:function(R,X,K){var Z,ie;K.length!==2&&L(R,"TAG directive accepts exactly two arguments"),Z=K[0],ie=K[1],g.test(Z)||L(R,"ill-formed tag handle (first argument) of the TAG directive"),f.call(R.tagMap,Z)&&L(R,'there is a previously declared suffix for "'+Z+'" tag handle'),p.test(ie)||L(R,"ill-formed tag prefix (second argument) of the TAG directive"),R.tagMap[Z]=ie}};function G(R,X,K,Z){var ie,oe,Te,Oe;if(X1&&(R.result+=o.repeat(` +`,X-1))}function le(R,X){var K,Z,ie=R.tag,oe=R.anchor,Te=[],Oe=!1;for(R.anchor!==null&&(R.anchorMap[R.anchor]=Te),Z=R.input.charCodeAt(R.position);Z!==0&&Z===45&&w(R.input.charCodeAt(R.position+1));)if(Oe=!0,R.position++,W(R,!0,-1)&&R.lineIndent<=X)Te.push(null),Z=R.input.charCodeAt(R.position);else if(K=R.line,ye(R,X,3,!1,!0),Te.push(R.result),W(R,!0,-1),Z=R.input.charCodeAt(R.position),(R.line===K||R.lineIndent>X)&&Z!==0)L(R,"bad indentation of a sequence entry");else if(R.lineIndentX?he=1:R.lineIndent===X?he=0:R.lineIndentX?he=1:R.lineIndent===X?he=0:R.lineIndentht)&&(ye(de,ht,4,!0,Me)&&(zt?In=de.result:Vn=de.result),zt||(F(de,wt,kt,qt,In,Vn,Ze,it),qt=In=Vn=null),W(de,!0,-1),rt=de.input.charCodeAt(de.position)),de.lineIndent>ht&&rt!==0)L(de,"bad indentation of a mapping entry");else if(de.lineIndent=0))break;Me===0?L(de,"bad explicit indentation width of a block scalar; it cannot be less than one"):Dt?L(de,"repeat of an indentation width identifier"):(wt=ht+Me-1,Dt=!0)}if(m(Ze)){do Ze=de.input.charCodeAt(++de.position);while(m(Ze));if(Ze===35)do Ze=de.input.charCodeAt(++de.position);while(!y(Ze)&&Ze!==0)}for(;Ze!==0;){for(U(de),de.lineIndent=0,Ze=de.input.charCodeAt(de.position);(!Dt||de.lineIndentwt&&(wt=de.lineIndent),y(Ze))kt++;else{if(de.lineIndent0){for(Me=it,Ze=0;Me>0;Me--)(it=C(rt=de.input.charCodeAt(++de.position)))>=0?Ze=(Ze<<4)+it:L(de,"expected hexadecimal character");de.result+=T(Ze),de.position++}else L(de,"unknown escape sequence");vt=gt=de.position}else y(rt)?(G(de,vt,gt,!0),te(de,W(de,!1,ht)),vt=gt=de.position):de.position===de.lineStart&&J(de)?L(de,"unexpected end of the document within a double quoted scalar"):(de.position++,gt=de.position)}L(de,"unexpected end of the stream within a double quoted scalar")}(R,fe)?qe=!0:function(de){var ht,vt,gt;if((gt=de.input.charCodeAt(de.position))!==42)return!1;for(gt=de.input.charCodeAt(++de.position),ht=de.position;gt!==0&&!w(gt)&&!x(gt);)gt=de.input.charCodeAt(++de.position);return de.position===ht&&L(de,"name of an alias node must contain at least one character"),vt=de.input.slice(ht,de.position),de.anchorMap.hasOwnProperty(vt)||L(de,'unidentified alias "'+vt+'"'),de.result=de.anchorMap[vt],W(de,!0,-1),!0}(R)?(qe=!0,R.tag===null&&R.anchor===null||L(R,"alias node should not have any properties")):function(de,ht,vt){var gt,Me,Ze,it,rt,ut,Dt,wt,kt=de.kind,qt=de.result;if(w(wt=de.input.charCodeAt(de.position))||x(wt)||wt===35||wt===38||wt===42||wt===33||wt===124||wt===62||wt===39||wt===34||wt===37||wt===64||wt===96||(wt===63||wt===45)&&(w(gt=de.input.charCodeAt(de.position+1))||vt&&x(gt)))return!1;for(de.kind="scalar",de.result="",Me=Ze=de.position,it=!1;wt!==0;){if(wt===58){if(w(gt=de.input.charCodeAt(de.position+1))||vt&&x(gt))break}else if(wt===35){if(w(de.input.charCodeAt(de.position-1)))break}else{if(de.position===de.lineStart&&J(de)||vt&&x(wt))break;if(y(wt)){if(rt=de.line,ut=de.lineStart,Dt=de.lineIndent,W(de,!1,-1),de.lineIndent>=ht){it=!0,wt=de.input.charCodeAt(de.position);continue}de.position=Ze,de.line=rt,de.lineStart=ut,de.lineIndent=Dt;break}}it&&(G(de,Me,Ze,!1),te(de,de.line-rt),Me=Ze=de.position,it=!1),m(wt)||(Ze=de.position+1),wt=de.input.charCodeAt(++de.position)}return G(de,Me,Ze,!1),!!de.result||(de.kind=kt,de.result=qt,!1)}(R,fe,K===1)&&(qe=!0,R.tag===null&&(R.tag="?")),R.anchor!==null&&(R.anchorMap[R.anchor]=R.result)):he===0&&(qe=Oe&&le(R,Se))),R.tag!==null&&R.tag!=="!")if(R.tag==="?"){for(R.result!==null&&R.kind!=="scalar"&&L(R,'unacceptable node kind for ! tag; it should be "scalar", not "'+R.kind+'"'),Ve=0,Ge=R.implicitTypes.length;Ve tag; it should be "'+ce.kind+'", not "'+R.kind+'"'),ce.resolve(R.result)?(R.result=ce.construct(R.result),R.anchor!==null&&(R.anchorMap[R.anchor]=R.result)):L(R,"cannot resolve a node with !<"+R.tag+"> explicit tag")):L(R,"unknown tag !<"+R.tag+">");return R.listener!==null&&R.listener("close",R),R.tag!==null||R.anchor!==null||qe}function Ie(R){var X,K,Z,ie,oe=R.position,Te=!1;for(R.version=null,R.checkLineBreaks=R.legacy,R.tagMap={},R.anchorMap={};(ie=R.input.charCodeAt(R.position))!==0&&(W(R,!0,-1),ie=R.input.charCodeAt(R.position),!(R.lineIndent>0||ie!==37));){for(Te=!0,ie=R.input.charCodeAt(++R.position),X=R.position;ie!==0&&!w(ie);)ie=R.input.charCodeAt(++R.position);for(Z=[],(K=R.input.slice(X,R.position)).length<1&&L(R,"directive name must not be less than one character in length");ie!==0;){for(;m(ie);)ie=R.input.charCodeAt(++R.position);if(ie===35){do ie=R.input.charCodeAt(++R.position);while(ie!==0&&!y(ie));break}if(y(ie))break;for(X=R.position;ie!==0&&!w(ie);)ie=R.input.charCodeAt(++R.position);Z.push(R.input.slice(X,R.position))}ie!==0&&U(R),f.call(k,K)?k[K](R,K,Z):P(R,'unknown document directive "'+K+'"')}W(R,!0,-1),R.lineIndent===0&&R.input.charCodeAt(R.position)===45&&R.input.charCodeAt(R.position+1)===45&&R.input.charCodeAt(R.position+2)===45?(R.position+=3,W(R,!0,-1)):Te&&L(R,"directives end mark is expected"),ye(R,R.lineIndent-1,4,!1,!0),W(R,!0,-1),R.checkLineBreaks&&d.test(R.input.slice(oe,R.position))&&P(R,"non-ASCII line breaks are interpreted as content"),R.documents.push(R.result),R.position===R.lineStart&&J(R)?R.input.charCodeAt(R.position)===46&&(R.position+=3,W(R,!0,-1)):R.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,y=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(y=l[7].slice(0,3);y.length<3;)y+="0";y=+y}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,y)),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,y){var m=null,w=function(b,D){y&&y(b,D),m&&m.visit(b,D)},x=typeof y=="function"?w: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,x=w)}var T,_=!1;v&&typeof v.sourceType=="string"&&(_=v.sourceType==="module"),T=v&&typeof v.jsx=="boolean"&&v.jsx?new f.JSXParser(p,v,x):new u.Parser(p,v,x);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,y){var m=v||{};return m.sourceType="module",h(p,m,y)},s.parseScript=function(p,v,y){var m=v||{};return m.sourceType="script",h(p,m,y)},s.tokenize=function(p,v,y){var m,w=new d.Tokenizer(p,v);m=[];try{for(;;){var x=w.getNextToken();if(!x)break;y&&(x=y(x)),m.push(x)}}catch(C){w.errorHandler.tolerate(C)}return w.errorHandler.tolerant&&(m.errors=w.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 y=v.node.trailingComments[0];y&&y.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&&(y=this.stack[this.stack.length-1])&&y.start>=d.start.offset;)h=y.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 y;(y=this.leading[p]).start<=d.start.offset&&(g.unshift(y.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(x,C){x.__proto__=C}||function(x,C){for(var S in C)C.hasOwnProperty(S)&&(x[S]=C[S])},function(x,C){function S(){this.constructor=x}l(x,C),x.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),y=c(14);function m(x){var C;switch(x.type){case h.JSXSyntax.JSXIdentifier:C=x.name;break;case h.JSXSyntax.JSXNamespacedName:var S=x;C=m(S.namespace)+":"+m(S.name);break;case h.JSXSyntax.JSXMemberExpression:var T=x;C=m(T.object)+"."+m(T.property)}return C}v.TokenName[100]="JSXIdentifier",v.TokenName[101]="JSXText";var w=function(x){function C(S,T,_){return x.call(this,S,T,_)||this}return f(C,x),C.prototype.parsePrimaryExpression=function(){return this.match("<")?this.parseJSXRoot():x.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,b=!1,D=!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:b=I==="#";break;case 3:b&&(_=(D=I==="x")||u.Character.isDecimalDigit(I.charCodeAt(0)),b=b&&!D);break;default:_=(_=_&&!(b&&!u.Character.isDecimalDigit(I.charCodeAt(0))))&&!(D&&!u.Character.isHexDigit(I.charCodeAt(0)))}}if(_&&E&&T.length>2){var P=T.substr(1,T.length-2);b&&P.length>1?T=String.fromCharCode(parseInt(P.substr(1),10)):D&&P.length>2?T=String.fromCharCode(parseInt("0"+P.substr(1),16)):b||D||!y.XHTMLEntities[P]||(T=y.XHTMLEntities[P])}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()&&(P=this.scanner.source[this.scanner.index++])!==_;)E+=P==="&"?this.scanXHTMLEntity(_):P;return{type:8,value:E,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:T,end:this.scanner.index}}if(S===46){var b=this.scanner.source.charCodeAt(this.scanner.index+1),D=this.scanner.source.charCodeAt(this.scanner.index+2),I=b===46&&D===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 P=this.scanner.source.charCodeAt(this.scanner.index);if(u.Character.isIdentifierPart(P)&&P!==92)++this.scanner.index;else{if(P!==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 b=T;this.expectJSX(".");var D=this.parseJSXIdentifier();T=this.finalize(S,new d.JSXMemberExpression(b,D))}return T},C.prototype.parseJSXAttributeName=function(){var S,T=this.createJSXNode(),_=this.parseJSXIdentifier();if(this.matchJSX(":")){var E=_;this.expectJSX(":");var b=this.parseJSXIdentifier();S=this.finalize(T,new d.JSXNamespacedName(E,b))}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(),b=this.matchJSX("/");return b&&this.expectJSX("/"),this.expectJSX(">"),this.finalize(S,new d.JSXOpeningElement(_,b,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(_),b=this.finalize(T,new d.JSXText(_.value,E));S.push(b)}if(this.scanner.source[this.scanner.index]!=="{")break;var D=this.parseJSXExpressionContainer();S.push(D)}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 b=E;if(b.selfClosing){var D=this.finalize(_,new d.JSXElement(b,[],null));S.children.push(D)}else T.push(S),S={node:_,opening:b,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;D=this.finalize(S.node,new d.JSXElement(S.opening,S.children,S.closing)),(S=T[T.length-1]).children.push(D),T.pop()}}return S},C.prototype.parseJSXElement=function(){var S=this.createJSXNode(),T=this.parseJSXOpeningElement(),_=[],E=null;if(!T.selfClosing){var b=this.parseComplexJSXElement({node:S,opening:T,closing:E,children:_});_=b.children,E=b.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 x.prototype.isStartOfExpression.call(this)||this.match("<")},C}(p.Parser);s.JSXParser=w},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 y=function(C,S){this.type=l.JSXSyntax.JSXNamespacedName,this.namespace=C,this.name=S};s.JSXNamespacedName=y;var m=function(C,S,T){this.type=l.JSXSyntax.JSXOpeningElement,this.name=C,this.selfClosing=S,this.attributes=T};s.JSXOpeningElement=m;var w=function(C){this.type=l.JSXSyntax.JSXSpreadAttribute,this.argument=C};s.JSXSpreadAttribute=w;var x=function(C,S){this.type=l.JSXSyntax.JSXText,this.value=C,this.raw=S};s.JSXText=x},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(Ke){this.type=l.Syntax.ArrayExpression,this.elements=Ke};s.ArrayExpression=f;var u=function(Ke){this.type=l.Syntax.ArrayPattern,this.elements=Ke};s.ArrayPattern=u;var d=function(Ke,dt,zt){this.type=l.Syntax.ArrowFunctionExpression,this.id=null,this.params=Ke,this.body=dt,this.generator=!1,this.expression=zt,this.async=!1};s.ArrowFunctionExpression=d;var h=function(Ke,dt,zt){this.type=l.Syntax.AssignmentExpression,this.operator=Ke,this.left=dt,this.right=zt};s.AssignmentExpression=h;var g=function(Ke,dt){this.type=l.Syntax.AssignmentPattern,this.left=Ke,this.right=dt};s.AssignmentPattern=g;var p=function(Ke,dt,zt){this.type=l.Syntax.ArrowFunctionExpression,this.id=null,this.params=Ke,this.body=dt,this.generator=!1,this.expression=zt,this.async=!0};s.AsyncArrowFunctionExpression=p;var v=function(Ke,dt,zt){this.type=l.Syntax.FunctionDeclaration,this.id=Ke,this.params=dt,this.body=zt,this.generator=!1,this.expression=!1,this.async=!0};s.AsyncFunctionDeclaration=v;var y=function(Ke,dt,zt){this.type=l.Syntax.FunctionExpression,this.id=Ke,this.params=dt,this.body=zt,this.generator=!1,this.expression=!1,this.async=!0};s.AsyncFunctionExpression=y;var m=function(Ke){this.type=l.Syntax.AwaitExpression,this.argument=Ke};s.AwaitExpression=m;var w=function(Ke,dt,zt){var Tn=Ke==="||"||Ke==="&&";this.type=Tn?l.Syntax.LogicalExpression:l.Syntax.BinaryExpression,this.operator=Ke,this.left=dt,this.right=zt};s.BinaryExpression=w;var x=function(Ke){this.type=l.Syntax.BlockStatement,this.body=Ke};s.BlockStatement=x;var C=function(Ke){this.type=l.Syntax.BreakStatement,this.label=Ke};s.BreakStatement=C;var S=function(Ke,dt){this.type=l.Syntax.CallExpression,this.callee=Ke,this.arguments=dt};s.CallExpression=S;var T=function(Ke,dt){this.type=l.Syntax.CatchClause,this.param=Ke,this.body=dt};s.CatchClause=T;var _=function(Ke){this.type=l.Syntax.ClassBody,this.body=Ke};s.ClassBody=_;var E=function(Ke,dt,zt){this.type=l.Syntax.ClassDeclaration,this.id=Ke,this.superClass=dt,this.body=zt};s.ClassDeclaration=E;var b=function(Ke,dt,zt){this.type=l.Syntax.ClassExpression,this.id=Ke,this.superClass=dt,this.body=zt};s.ClassExpression=b;var D=function(Ke,dt){this.type=l.Syntax.MemberExpression,this.computed=!0,this.object=Ke,this.property=dt};s.ComputedMemberExpression=D;var I=function(Ke,dt,zt){this.type=l.Syntax.ConditionalExpression,this.test=Ke,this.consequent=dt,this.alternate=zt};s.ConditionalExpression=I;var P=function(Ke){this.type=l.Syntax.ContinueStatement,this.label=Ke};s.ContinueStatement=P;var M=function(){this.type=l.Syntax.DebuggerStatement};s.DebuggerStatement=M;var L=function(Ke,dt){this.type=l.Syntax.ExpressionStatement,this.expression=Ke,this.directive=dt};s.Directive=L;var B=function(Ke,dt){this.type=l.Syntax.DoWhileStatement,this.body=Ke,this.test=dt};s.DoWhileStatement=B;var j=function(){this.type=l.Syntax.EmptyStatement};s.EmptyStatement=j;var V=function(Ke){this.type=l.Syntax.ExportAllDeclaration,this.source=Ke};s.ExportAllDeclaration=V;var F=function(Ke){this.type=l.Syntax.ExportDefaultDeclaration,this.declaration=Ke};s.ExportDefaultDeclaration=F;var G=function(Ke,dt,zt){this.type=l.Syntax.ExportNamedDeclaration,this.declaration=Ke,this.specifiers=dt,this.source=zt};s.ExportNamedDeclaration=G;var X=function(Ke,dt){this.type=l.Syntax.ExportSpecifier,this.exported=dt,this.local=Ke};s.ExportSpecifier=X;var ne=function(Ke){this.type=l.Syntax.ExpressionStatement,this.expression=Ke};s.ExpressionStatement=ne;var ue=function(Ke,dt,zt){this.type=l.Syntax.ForInStatement,this.left=Ke,this.right=dt,this.body=zt,this.each=!1};s.ForInStatement=ue;var me=function(Ke,dt,zt){this.type=l.Syntax.ForOfStatement,this.left=Ke,this.right=dt,this.body=zt};s.ForOfStatement=me;var ge=function(Ke,dt,zt,Tn){this.type=l.Syntax.ForStatement,this.init=Ke,this.test=dt,this.update=zt,this.body=Tn};s.ForStatement=ge;var ye=function(Ke,dt,zt,Tn){this.type=l.Syntax.FunctionDeclaration,this.id=Ke,this.params=dt,this.body=zt,this.generator=Tn,this.expression=!1,this.async=!1};s.FunctionDeclaration=ye;var Ie=function(Ke,dt,zt,Tn){this.type=l.Syntax.FunctionExpression,this.id=Ke,this.params=dt,this.body=zt,this.generator=Tn,this.expression=!1,this.async=!1};s.FunctionExpression=Ie;var Pe=function(Ke){this.type=l.Syntax.Identifier,this.name=Ke};s.Identifier=Pe;var Ee=function(Ke,dt,zt){this.type=l.Syntax.IfStatement,this.test=Ke,this.consequent=dt,this.alternate=zt};s.IfStatement=Ee;var H=function(Ke,dt){this.type=l.Syntax.ImportDeclaration,this.specifiers=Ke,this.source=dt};s.ImportDeclaration=H;var O=function(Ke){this.type=l.Syntax.ImportDefaultSpecifier,this.local=Ke};s.ImportDefaultSpecifier=O;var Y=function(Ke){this.type=l.Syntax.ImportNamespaceSpecifier,this.local=Ke};s.ImportNamespaceSpecifier=Y;var K=function(Ke,dt){this.type=l.Syntax.ImportSpecifier,this.local=Ke,this.imported=dt};s.ImportSpecifier=K;var Z=function(Ke,dt){this.type=l.Syntax.LabeledStatement,this.label=Ke,this.body=dt};s.LabeledStatement=Z;var ae=function(Ke,dt){this.type=l.Syntax.Literal,this.value=Ke,this.raw=dt};s.Literal=ae;var oe=function(Ke,dt){this.type=l.Syntax.MetaProperty,this.meta=Ke,this.property=dt};s.MetaProperty=oe;var _e=function(Ke,dt,zt,Tn,Fr){this.type=l.Syntax.MethodDefinition,this.key=Ke,this.computed=dt,this.value=zt,this.kind=Tn,this.static=Fr};s.MethodDefinition=_e;var Oe=function(Ke){this.type=l.Syntax.Program,this.body=Ke,this.sourceType="module"};s.Module=Oe;var Ge=function(Ke,dt){this.type=l.Syntax.NewExpression,this.callee=Ke,this.arguments=dt};s.NewExpression=Ge;var $e=function(Ke){this.type=l.Syntax.ObjectExpression,this.properties=Ke};s.ObjectExpression=$e;var le=function(Ke){this.type=l.Syntax.ObjectPattern,this.properties=Ke};s.ObjectPattern=le;var de=function(Ke,dt,zt,Tn,Fr,qt){this.type=l.Syntax.Property,this.key=dt,this.computed=zt,this.value=Tn,this.kind=Ke,this.method=Fr,this.shorthand=qt};s.Property=de;var be=function(Ke,dt,zt,Tn){this.type=l.Syntax.Literal,this.value=Ke,this.raw=dt,this.regex={pattern:zt,flags:Tn}};s.RegexLiteral=be;var pe=function(Ke){this.type=l.Syntax.RestElement,this.argument=Ke};s.RestElement=pe;var Te=function(Ke){this.type=l.Syntax.ReturnStatement,this.argument=Ke};s.ReturnStatement=Te;var Ye=function(Ke){this.type=l.Syntax.Program,this.body=Ke,this.sourceType="script"};s.Script=Ye;var fe=function(Ke){this.type=l.Syntax.SequenceExpression,this.expressions=Ke};s.SequenceExpression=fe;var ft=function(Ke){this.type=l.Syntax.SpreadElement,this.argument=Ke};s.SpreadElement=ft;var gt=function(Ke,dt){this.type=l.Syntax.MemberExpression,this.computed=!1,this.object=Ke,this.property=dt};s.StaticMemberExpression=gt;var mt=function(){this.type=l.Syntax.Super};s.Super=mt;var Re=function(Ke,dt){this.type=l.Syntax.SwitchCase,this.test=Ke,this.consequent=dt};s.SwitchCase=Re;var Je=function(Ke,dt){this.type=l.Syntax.SwitchStatement,this.discriminant=Ke,this.cases=dt};s.SwitchStatement=Je;var at=function(Ke,dt){this.type=l.Syntax.TaggedTemplateExpression,this.tag=Ke,this.quasi=dt};s.TaggedTemplateExpression=at;var tt=function(Ke,dt){this.type=l.Syntax.TemplateElement,this.value=Ke,this.tail=dt};s.TemplateElement=tt;var wt=function(Ke,dt){this.type=l.Syntax.TemplateLiteral,this.quasis=Ke,this.expressions=dt};s.TemplateLiteral=wt;var Bt=function(){this.type=l.Syntax.ThisExpression};s.ThisExpression=Bt;var Ct=function(Ke){this.type=l.Syntax.ThrowStatement,this.argument=Ke};s.ThrowStatement=Ct;var Ht=function(Ke,dt,zt){this.type=l.Syntax.TryStatement,this.block=Ke,this.handler=dt,this.finalizer=zt};s.TryStatement=Ht;var $t=function(Ke,dt){this.type=l.Syntax.UnaryExpression,this.operator=Ke,this.argument=dt,this.prefix=!0};s.UnaryExpression=$t;var dn=function(Ke,dt,zt){this.type=l.Syntax.UpdateExpression,this.operator=Ke,this.argument=dt,this.prefix=zt};s.UpdateExpression=dn;var Nn=function(Ke,dt){this.type=l.Syntax.VariableDeclaration,this.declarations=Ke,this.kind=dt};s.VariableDeclaration=Nn;var Kt=function(Ke,dt){this.type=l.Syntax.VariableDeclarator,this.id=Ke,this.init=dt};s.VariableDeclarator=Kt;var qn=function(Ke,dt){this.type=l.Syntax.WhileStatement,this.test=Ke,this.body=dt};s.WhileStatement=qn;var Cr=function(Ke,dt){this.type=l.Syntax.WithStatement,this.object=Ke,this.body=dt};s.WithStatement=Cr;var pr=function(Ke,dt){this.type=l.Syntax.YieldExpression,this.argument=Ke,this.delegate=dt};s.YieldExpression=pr},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 y(m,w,x){w===void 0&&(w={}),this.config={range:typeof w.range=="boolean"&&w.range,loc:typeof w.loc=="boolean"&&w.loc,source:null,tokens:typeof w.tokens=="boolean"&&w.tokens,comment:typeof w.comment=="boolean"&&w.comment,tolerant:typeof w.tolerant=="boolean"&&w.tolerant},this.config.loc&&w.source&&w.source!==null&&(this.config.source=String(w.source)),this.delegate=x,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 y.prototype.throwError=function(m){for(var w=[],x=1;x0&&this.delegate)for(var w=0;w>="||m===">>>="||m==="&="||m==="^="||m==="|="},y.prototype.isolateCoverGrammar=function(m){var w=this.context.isBindingElement,x=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=w,this.context.isAssignmentTarget=x,this.context.firstCoverInitializedNameError=C,S},y.prototype.inheritCoverGrammar=function(m){var w=this.context.isBindingElement,x=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&&w,this.context.isAssignmentTarget=this.context.isAssignmentTarget&&x,this.context.firstCoverInitializedNameError=C||this.context.firstCoverInitializedNameError,S},y.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)},y.prototype.parsePrimaryExpression=function(){var m,w,x,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,w=this.nextToken(),x=this.getTokenRaw(w),m=this.finalize(C,new d.Literal(w.value,x));break;case 1:this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,w=this.nextToken(),x=this.getTokenRaw(w),m=this.finalize(C,new d.Literal(w.value==="true",x));break;case 5:this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,w=this.nextToken(),x=this.getTokenRaw(w),m=this.finalize(C,new d.Literal(null,x));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,w=this.nextRegexToken(),x=this.getTokenRaw(w),m=this.finalize(C,new d.RegexLiteral(w.regex,x,w.pattern,w.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},y.prototype.parseSpreadElement=function(){var m=this.createNode();this.expect("...");var w=this.inheritCoverGrammar(this.parseAssignmentExpression);return this.finalize(m,new d.SpreadElement(w))},y.prototype.parseArrayInitializer=function(){var m=this.createNode(),w=[];for(this.expect("[");!this.match("]");)if(this.match(","))this.nextToken(),w.push(null);else if(this.match("...")){var x=this.parseSpreadElement();this.match("]")||(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,this.expect(",")),w.push(x)}else w.push(this.inheritCoverGrammar(this.parseAssignmentExpression)),this.match("]")||this.expect(",");return this.expect("]"),this.finalize(m,new d.ArrayExpression(w))},y.prototype.parsePropertyMethod=function(m){this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;var w=this.context.strict,x=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=w,this.context.allowStrictDirective=x,C},y.prototype.parsePropertyMethodFunction=function(){var m=this.createNode(),w=this.context.allowYield;this.context.allowYield=!0;var x=this.parseFormalParameters(),C=this.parsePropertyMethod(x);return this.context.allowYield=w,this.finalize(m,new d.FunctionExpression(null,x.params,C,!1))},y.prototype.parsePropertyMethodAsyncFunction=function(){var m=this.createNode(),w=this.context.allowYield,x=this.context.await;this.context.allowYield=!1,this.context.await=!0;var C=this.parseFormalParameters(),S=this.parsePropertyMethod(C);return this.context.allowYield=w,this.context.await=x,this.finalize(m,new d.AsyncFunctionExpression(null,C.params,S))},y.prototype.parseObjectPropertyKey=function(){var m,w=this.createNode(),x=this.nextToken();switch(x.type){case 8:case 6:this.context.strict&&x.octal&&this.tolerateUnexpectedToken(x,u.Messages.StrictOctalLiteral);var C=this.getTokenRaw(x);m=this.finalize(w,new d.Literal(x.value,C));break;case 3:case 1:case 5:case 4:m=this.finalize(w,new d.Identifier(x.value));break;case 7:x.value==="["?(m=this.isolateCoverGrammar(this.parseAssignmentExpression),this.expect("]")):m=this.throwUnexpectedToken(x);break;default:m=this.throwUnexpectedToken(x)}return m},y.prototype.isPropertyKey=function(m,w){return m.type===g.Syntax.Identifier&&m.name===w||m.type===g.Syntax.Literal&&m.value===w},y.prototype.parseObjectProperty=function(m){var w,x=this.createNode(),C=this.lookahead,S=null,T=null,_=!1,E=!1,b=!1,D=!1;if(C.type===3){var I=C.value;this.nextToken(),_=this.match("["),S=(D=!(this.hasLineTerminator||I!=="async"||this.match(":")||this.match("(")||this.match("*")||this.match(",")))?this.parseObjectPropertyKey():this.finalize(x,new d.Identifier(I))}else this.match("*")?this.nextToken():(_=this.match("["),S=this.parseObjectPropertyKey());var P=this.qualifiedPropertyName(this.lookahead);if(C.type===3&&!D&&C.value==="get"&&P)w="get",_=this.match("["),S=this.parseObjectPropertyKey(),this.context.allowYield=!1,T=this.parseGetterMethod();else if(C.type===3&&!D&&C.value==="set"&&P)w="set",_=this.match("["),S=this.parseObjectPropertyKey(),T=this.parseSetterMethod();else if(C.type===7&&C.value==="*"&&P)w="init",_=this.match("["),S=this.parseObjectPropertyKey(),T=this.parseGeneratorMethod(),E=!0;else if(S||this.throwUnexpectedToken(this.lookahead),w="init",this.match(":")&&!D)!_&&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=D?this.parsePropertyMethodAsyncFunction():this.parsePropertyMethodFunction(),E=!0;else if(C.type===3)if(I=this.finalize(x,new d.Identifier(C.value)),this.match("=")){this.context.firstCoverInitializedNameError=this.lookahead,this.nextToken(),b=!0;var M=this.isolateCoverGrammar(this.parseAssignmentExpression);T=this.finalize(x,new d.AssignmentPattern(I,M))}else b=!0,T=I;else this.throwUnexpectedToken(this.nextToken());return this.finalize(x,new d.Property(w,S,_,T,E,b))},y.prototype.parseObjectInitializer=function(){var m=this.createNode();this.expect("{");for(var w=[],x={value:!1};!this.match("}");)w.push(this.parseObjectProperty(x)),this.match("}")||this.expectCommaSeparator();return this.expect("}"),this.finalize(m,new d.ObjectExpression(w))},y.prototype.parseTemplateHead=function(){l.assert(this.lookahead.head,"Template literal must start with a template head");var m=this.createNode(),w=this.nextToken(),x=w.value,C=w.cooked;return this.finalize(m,new d.TemplateElement({raw:x,cooked:C},w.tail))},y.prototype.parseTemplateElement=function(){this.lookahead.type!==10&&this.throwUnexpectedToken();var m=this.createNode(),w=this.nextToken(),x=w.value,C=w.cooked;return this.finalize(m,new d.TemplateElement({raw:x,cooked:C},w.tail))},y.prototype.parseTemplateLiteral=function(){var m=this.createNode(),w=[],x=[],C=this.parseTemplateHead();for(x.push(C);!C.tail;)w.push(this.parseExpression()),C=this.parseTemplateElement(),x.push(C);return this.finalize(m,new d.TemplateLiteral(x,w))},y.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 w=0;w")||this.expect("=>"),m={type:"ArrowParameterPlaceHolder",params:[],async:!1};else{var w=this.lookahead,x=[];if(this.match("..."))m=this.parseRestElement(x),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(w),new d.ComputedMemberExpression(m,S));else{if(this.lookahead.type!==10||!this.lookahead.head)break;var b=this.parseTemplateLiteral();m=this.finalize(this.startNode(w),new d.TaggedTemplateExpression(m,b))}return this.context.allowIn=C,m},y.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)},y.prototype.parseLeftHandSideExpression=function(){l.assert(this.context.allowIn,"callee of new expression always allow in keyword.");for(var m=this.startNode(this.lookahead),w=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 x=this.isolateCoverGrammar(this.parseExpression);this.expect("]"),w=this.finalize(m,new d.ComputedMemberExpression(w,x))}else if(this.match("."))this.context.isBindingElement=!1,this.context.isAssignmentTarget=!0,this.expect("."),x=this.parseIdentifierName(),w=this.finalize(m,new d.StaticMemberExpression(w,x));else{if(this.lookahead.type!==10||!this.lookahead.head)break;var C=this.parseTemplateLiteral();w=this.finalize(m,new d.TaggedTemplateExpression(w,C))}return w},y.prototype.parseUpdateExpression=function(){var m,w=this.lookahead;if(this.match("++")||this.match("--")){var x=this.startNode(w),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(x,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(w),new d.UpdateExpression(T,m,S))}return m},y.prototype.parseAwaitExpression=function(){var m=this.createNode();this.nextToken();var w=this.parseUnaryExpression();return this.finalize(m,new d.AwaitExpression(w))},y.prototype.parseUnaryExpression=function(){var m;if(this.match("+")||this.match("-")||this.match("~")||this.match("!")||this.matchKeyword("delete")||this.matchKeyword("void")||this.matchKeyword("typeof")){var w=this.startNode(this.lookahead),x=this.nextToken();m=this.inheritCoverGrammar(this.parseUnaryExpression),m=this.finalize(w,new d.UnaryExpression(x.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},y.prototype.parseExponentiationExpression=function(){var m=this.lookahead,w=this.inheritCoverGrammar(this.parseUnaryExpression);if(w.type!==g.Syntax.UnaryExpression&&this.match("**")){this.nextToken(),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;var x=w,C=this.isolateCoverGrammar(this.parseExponentiationExpression);w=this.finalize(this.startNode(m),new d.BinaryExpression("**",x,C))}return w},y.prototype.binaryPrecedence=function(m){var w=m.value;return m.type===7?this.operatorPrecedence[w]||0:m.type===4&&(w==="instanceof"||this.context.allowIn&&w==="in")?7:0},y.prototype.parseBinaryExpression=function(){var m=this.lookahead,w=this.inheritCoverGrammar(this.parseExponentiationExpression),x=this.lookahead,C=this.binaryPrecedence(x);if(C>0){this.nextToken(),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;for(var S=[m,this.lookahead],T=w,_=this.isolateCoverGrammar(this.parseExponentiationExpression),E=[T,x.value,_],b=[C];!((C=this.binaryPrecedence(this.lookahead))<=0);){for(;E.length>2&&C<=b[b.length-1];){_=E.pop();var D=E.pop();b.pop(),T=E.pop(),S.pop();var I=this.startNode(S[S.length-1]);E.push(this.finalize(I,new d.BinaryExpression(D,T,_)))}E.push(this.nextToken().value),b.push(C),S.push(this.lookahead),E.push(this.isolateCoverGrammar(this.parseExponentiationExpression))}var P=E.length-1;w=E[P];for(var M=S.pop();P>1;){var L=S.pop(),B=M&&M.lineStart;I=this.startNode(L,B),D=E[P-1],w=this.finalize(I,new d.BinaryExpression(D,E[P-2],w)),P-=2,M=L}}return w},y.prototype.parseConditionalExpression=function(){var m=this.lookahead,w=this.inheritCoverGrammar(this.parseBinaryExpression);if(this.match("?")){this.nextToken();var x=this.context.allowIn;this.context.allowIn=!0;var C=this.isolateCoverGrammar(this.parseAssignmentExpression);this.context.allowIn=x,this.expect(":");var S=this.isolateCoverGrammar(this.parseAssignmentExpression);w=this.finalize(this.startNode(m),new d.ConditionalExpression(w,C,S)),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1}return w},y.prototype.checkPatternParam=function(m,w){switch(w.type){case g.Syntax.Identifier:this.validateParam(m,w,w.name);break;case g.Syntax.RestElement:this.checkPatternParam(m,w.argument);break;case g.Syntax.AssignmentPattern:this.checkPatternParam(m,w.left);break;case g.Syntax.ArrayPattern:for(var x=0;x")){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 b=this.context.allowYield,D=this.context.await;this.context.allowYield=!0,this.context.await=S;var I=this.startNode(w);this.expect("=>");var P=void 0;if(this.match("{")){var M=this.context.allowIn;this.context.allowIn=!0,P=this.parseFunctionSourceElements(),this.context.allowIn=M}else P=this.isolateCoverGrammar(this.parseAssignmentExpression);var L=P.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,P,L)):this.finalize(I,new d.ArrowFunctionExpression(T.params,P,L)),this.context.strict=_,this.context.allowStrictDirective=E,this.context.allowYield=b,this.context.await=D}}else if(this.matchAssign()){if(this.context.isAssignmentTarget||this.tolerateError(u.Messages.InvalidLHSInAssignment),this.context.strict&&m.type===g.Syntax.Identifier){var B=m;this.scanner.isRestrictedWord(B.name)&&this.tolerateUnexpectedToken(x,u.Messages.StrictLHSAssignment),this.scanner.isStrictModeReservedWord(B.name)&&this.tolerateUnexpectedToken(x,u.Messages.StrictReservedWord)}this.match("=")?this.reinterpretExpressionAsPattern(m):(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1);var j=(x=this.nextToken()).value,V=this.isolateCoverGrammar(this.parseAssignmentExpression);m=this.finalize(this.startNode(w),new d.AssignmentExpression(j,m,V)),this.context.firstCoverInitializedNameError=null}}return m},y.prototype.parseExpression=function(){var m=this.lookahead,w=this.isolateCoverGrammar(this.parseAssignmentExpression);if(this.match(",")){var x=[];for(x.push(w);this.lookahead.type!==2&&this.match(",");)this.nextToken(),x.push(this.isolateCoverGrammar(this.parseAssignmentExpression));w=this.finalize(this.startNode(m),new d.SequenceExpression(x))}return w},y.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},y.prototype.parseBlock=function(){var m=this.createNode();this.expect("{");for(var w=[];!this.match("}");)w.push(this.parseStatementListItem());return this.expect("}"),this.finalize(m,new d.BlockStatement(w))},y.prototype.parseLexicalBinding=function(m,w){var x=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")):(!w.inFor&&C.type!==g.Syntax.Identifier||this.match("="))&&(this.expect("="),S=this.isolateCoverGrammar(this.parseAssignmentExpression)),this.finalize(x,new d.VariableDeclarator(C,S))},y.prototype.parseBindingList=function(m,w){for(var x=[this.parseLexicalBinding(m,w)];this.match(",");)this.nextToken(),x.push(this.parseLexicalBinding(m,w));return x},y.prototype.isLexicalDeclaration=function(){var m=this.scanner.saveState();this.scanner.scanComments();var w=this.scanner.lex();return this.scanner.restoreState(m),w.type===3||w.type===7&&w.value==="["||w.type===7&&w.value==="{"||w.type===4&&w.value==="let"||w.type===4&&w.value==="yield"},y.prototype.parseLexicalDeclaration=function(m){var w=this.createNode(),x=this.nextToken().value;l.assert(x==="let"||x==="const","Lexical declaration must be either let or const");var C=this.parseBindingList(x,m);return this.consumeSemicolon(),this.finalize(w,new d.VariableDeclaration(C,x))},y.prototype.parseBindingRestElement=function(m,w){var x=this.createNode();this.expect("...");var C=this.parsePattern(m,w);return this.finalize(x,new d.RestElement(C))},y.prototype.parseArrayPattern=function(m,w){var x=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,w));break}C.push(this.parsePatternWithDefault(m,w)),this.match("]")||this.expect(",")}return this.expect("]"),this.finalize(x,new d.ArrayPattern(C))},y.prototype.parsePropertyPattern=function(m,w){var x,C,S=this.createNode(),T=!1,_=!1;if(this.lookahead.type===3){var E=this.lookahead;x=this.parseVariableIdentifier();var b=this.finalize(S,new d.Identifier(E.value));if(this.match("=")){m.push(E),_=!0,this.nextToken();var D=this.parseAssignmentExpression();C=this.finalize(this.startNode(E),new d.AssignmentPattern(b,D))}else this.match(":")?(this.expect(":"),C=this.parsePatternWithDefault(m,w)):(m.push(E),_=!0,C=b)}else T=this.match("["),x=this.parseObjectPropertyKey(),this.expect(":"),C=this.parsePatternWithDefault(m,w);return this.finalize(S,new d.Property("init",x,T,C,!1,_))},y.prototype.parseObjectPattern=function(m,w){var x=this.createNode(),C=[];for(this.expect("{");!this.match("}");)C.push(this.parsePropertyPattern(m,w)),this.match("}")||this.expect(",");return this.expect("}"),this.finalize(x,new d.ObjectPattern(C))},y.prototype.parsePattern=function(m,w){var x;return this.match("[")?x=this.parseArrayPattern(m,w):this.match("{")?x=this.parseObjectPattern(m,w):(!this.matchKeyword("let")||w!=="const"&&w!=="let"||this.tolerateUnexpectedToken(this.lookahead,u.Messages.LetInLexicalBinding),m.push(this.lookahead),x=this.parseVariableIdentifier(w)),x},y.prototype.parsePatternWithDefault=function(m,w){var x=this.lookahead,C=this.parsePattern(m,w);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(x),new d.AssignmentPattern(C,T))}return C},y.prototype.parseVariableIdentifier=function(m){var w=this.createNode(),x=this.nextToken();return x.type===4&&x.value==="yield"?this.context.strict?this.tolerateUnexpectedToken(x,u.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,u.Messages.StrictReservedWord):(this.context.strict||x.value!=="let"||m!=="var")&&this.throwUnexpectedToken(x):(this.context.isModule||this.context.await)&&x.type===3&&x.value==="await"&&this.tolerateUnexpectedToken(x),this.finalize(w,new d.Identifier(x.value))},y.prototype.parseVariableDeclaration=function(m){var w=this.createNode(),x=this.parsePattern([],"var");this.context.strict&&x.type===g.Syntax.Identifier&&this.scanner.isRestrictedWord(x.name)&&this.tolerateError(u.Messages.StrictVarName);var C=null;return this.match("=")?(this.nextToken(),C=this.isolateCoverGrammar(this.parseAssignmentExpression)):x.type===g.Syntax.Identifier||m.inFor||this.expect("="),this.finalize(w,new d.VariableDeclarator(x,C))},y.prototype.parseVariableDeclarationList=function(m){var w={inFor:m.inFor},x=[];for(x.push(this.parseVariableDeclaration(w));this.match(",");)this.nextToken(),x.push(this.parseVariableDeclaration(w));return x},y.prototype.parseVariableStatement=function(){var m=this.createNode();this.expectKeyword("var");var w=this.parseVariableDeclarationList({inFor:!1});return this.consumeSemicolon(),this.finalize(m,new d.VariableDeclaration(w,"var"))},y.prototype.parseEmptyStatement=function(){var m=this.createNode();return this.expect(";"),this.finalize(m,new d.EmptyStatement)},y.prototype.parseExpressionStatement=function(){var m=this.createNode(),w=this.parseExpression();return this.consumeSemicolon(),this.finalize(m,new d.ExpressionStatement(w))},y.prototype.parseIfClause=function(){return this.context.strict&&this.matchKeyword("function")&&this.tolerateError(u.Messages.StrictFunction),this.parseStatement()},y.prototype.parseIfStatement=function(){var m,w=this.createNode(),x=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(),x=this.parseIfClause())),this.finalize(w,new d.IfStatement(C,m,x))},y.prototype.parseDoWhileStatement=function(){var m=this.createNode();this.expectKeyword("do");var w=this.context.inIteration;this.context.inIteration=!0;var x=this.parseStatement();this.context.inIteration=w,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(x,C))},y.prototype.parseWhileStatement=function(){var m,w=this.createNode();this.expectKeyword("while"),this.expect("(");var x=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(w,new d.WhileStatement(x,m))},y.prototype.parseForStatement=function(){var m,w,x,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 b=this.context.allowIn;this.context.allowIn=!1;var D=this.parseVariableDeclarationList({inFor:!0});if(this.context.allowIn=b,D.length===1&&this.matchKeyword("in")){var I=D[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(D,"var")),this.nextToken(),m=C,w=this.parseExpression(),C=null}else D.length===1&&D[0].init===null&&this.matchContextualKeyword("of")?(C=this.finalize(C,new d.VariableDeclaration(D,"var")),this.nextToken(),m=C,w=this.parseAssignmentExpression(),C=null,_=!1):(C=this.finalize(C,new d.VariableDeclaration(D,"var")),this.expect(";"))}else if(this.matchKeyword("const")||this.matchKeyword("let")){C=this.createNode();var P=this.nextToken().value;this.context.strict||this.lookahead.value!=="in"?(b=this.context.allowIn,this.context.allowIn=!1,D=this.parseBindingList(P,{inFor:!0}),this.context.allowIn=b,D.length===1&&D[0].init===null&&this.matchKeyword("in")?(C=this.finalize(C,new d.VariableDeclaration(D,P)),this.nextToken(),m=C,w=this.parseExpression(),C=null):D.length===1&&D[0].init===null&&this.matchContextualKeyword("of")?(C=this.finalize(C,new d.VariableDeclaration(D,P)),this.nextToken(),m=C,w=this.parseAssignmentExpression(),C=null,_=!1):(this.consumeSemicolon(),C=this.finalize(C,new d.VariableDeclaration(D,P)))):(C=this.finalize(C,new d.Identifier(P)),this.nextToken(),m=C,w=this.parseExpression(),C=null)}else{var M=this.lookahead;if(b=this.context.allowIn,this.context.allowIn=!1,C=this.inheritCoverGrammar(this.parseAssignmentExpression),this.context.allowIn=b,this.matchKeyword("in"))this.context.isAssignmentTarget&&C.type!==g.Syntax.AssignmentExpression||this.tolerateError(u.Messages.InvalidLHSInForIn),this.nextToken(),this.reinterpretExpressionAsPattern(C),m=C,w=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,w=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()),x=this.finalize(this.createNode(),new d.EmptyStatement);else{this.expect(")");var B=this.context.inIteration;this.context.inIteration=!0,x=this.isolateCoverGrammar(this.parseStatement),this.context.inIteration=B}return m===void 0?this.finalize(E,new d.ForStatement(C,S,T,x)):_?this.finalize(E,new d.ForInStatement(m,w,x)):this.finalize(E,new d.ForOfStatement(m,w,x))},y.prototype.parseContinueStatement=function(){var m=this.createNode();this.expectKeyword("continue");var w=null;if(this.lookahead.type===3&&!this.hasLineTerminator){var x=this.parseVariableIdentifier();w=x;var C="$"+x.name;Object.prototype.hasOwnProperty.call(this.context.labelSet,C)||this.throwError(u.Messages.UnknownLabel,x.name)}return this.consumeSemicolon(),w!==null||this.context.inIteration||this.throwError(u.Messages.IllegalContinue),this.finalize(m,new d.ContinueStatement(w))},y.prototype.parseBreakStatement=function(){var m=this.createNode();this.expectKeyword("break");var w=null;if(this.lookahead.type===3&&!this.hasLineTerminator){var x=this.parseVariableIdentifier(),C="$"+x.name;Object.prototype.hasOwnProperty.call(this.context.labelSet,C)||this.throwError(u.Messages.UnknownLabel,x.name),w=x}return this.consumeSemicolon(),w!==null||this.context.inIteration||this.context.inSwitch||this.throwError(u.Messages.IllegalBreak),this.finalize(m,new d.BreakStatement(w))},y.prototype.parseReturnStatement=function(){this.context.inFunctionBody||this.tolerateError(u.Messages.IllegalReturn);var m=this.createNode();this.expectKeyword("return");var w=(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(w))},y.prototype.parseWithStatement=function(){this.context.strict&&this.tolerateError(u.Messages.StrictModeWith);var m,w=this.createNode();this.expectKeyword("with"),this.expect("(");var x=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(w,new d.WithStatement(x,m))},y.prototype.parseSwitchCase=function(){var m,w=this.createNode();this.matchKeyword("default")?(this.nextToken(),m=null):(this.expectKeyword("case"),m=this.parseExpression()),this.expect(":");for(var x=[];!(this.match("}")||this.matchKeyword("default")||this.matchKeyword("case"));)x.push(this.parseStatementListItem());return this.finalize(w,new d.SwitchCase(m,x))},y.prototype.parseSwitchStatement=function(){var m=this.createNode();this.expectKeyword("switch"),this.expect("(");var w=this.parseExpression();this.expect(")");var x=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=x,this.finalize(m,new d.SwitchStatement(w,C))},y.prototype.parseLabelledStatement=function(){var m,w=this.createNode(),x=this.parseExpression();if(x.type===g.Syntax.Identifier&&this.match(":")){this.nextToken();var C=x,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(x);return this.finalize(w,m)},y.prototype.parseThrowStatement=function(){var m=this.createNode();this.expectKeyword("throw"),this.hasLineTerminator&&this.throwError(u.Messages.NewlineAfterThrow);var w=this.parseExpression();return this.consumeSemicolon(),this.finalize(m,new d.ThrowStatement(w))},y.prototype.parseCatchClause=function(){var m=this.createNode();this.expectKeyword("catch"),this.expect("("),this.match(")")&&this.throwUnexpectedToken(this.lookahead);for(var w=[],x=this.parsePattern(w),C={},S=0;S0&&this.tolerateError(u.Messages.BadGetterArity);var C=this.parsePropertyMethod(x);return this.context.allowYield=w,this.finalize(m,new d.FunctionExpression(null,x.params,C,!1))},y.prototype.parseSetterMethod=function(){var m=this.createNode(),w=this.context.allowYield;this.context.allowYield=!0;var x=this.parseFormalParameters();x.params.length!==1?this.tolerateError(u.Messages.BadSetterArity):x.params[0]instanceof d.RestElement&&this.tolerateError(u.Messages.BadSetterRestParameter);var C=this.parsePropertyMethod(x);return this.context.allowYield=w,this.finalize(m,new d.FunctionExpression(null,x.params,C,!1))},y.prototype.parseGeneratorMethod=function(){var m=this.createNode(),w=this.context.allowYield;this.context.allowYield=!0;var x=this.parseFormalParameters();this.context.allowYield=!1;var C=this.parsePropertyMethod(x);return this.context.allowYield=w,this.finalize(m,new d.FunctionExpression(null,x.params,C,!0))},y.prototype.isStartOfExpression=function(){var m=!0,w=this.lookahead.value;switch(this.lookahead.type){case 7:m=w==="["||w==="("||w==="{"||w==="+"||w==="-"||w==="!"||w==="~"||w==="++"||w==="--"||w==="/"||w==="/=";break;case 4:m=w==="class"||w==="delete"||w==="function"||w==="let"||w==="new"||w==="super"||w==="this"||w==="typeof"||w==="void"||w==="yield"}return m},y.prototype.parseYieldExpression=function(){var m=this.createNode();this.expectKeyword("yield");var w=null,x=!1;if(!this.hasLineTerminator){var C=this.context.allowYield;this.context.allowYield=!1,(x=this.match("*"))?(this.nextToken(),w=this.parseAssignmentExpression()):this.isStartOfExpression()&&(w=this.parseAssignmentExpression()),this.context.allowYield=C}return this.finalize(m,new d.YieldExpression(w,x))},y.prototype.parseClassElement=function(m){var w=this.lookahead,x=this.createNode(),C="",S=null,T=null,_=!1,E=!1,b=!1,D=!1;if(this.match("*"))this.nextToken();else if(_=this.match("["),(S=this.parseObjectPropertyKey()).name==="static"&&(this.qualifiedPropertyName(this.lookahead)||this.match("*"))&&(w=this.lookahead,b=!0,_=this.match("["),this.match("*")?this.nextToken():S=this.parseObjectPropertyKey()),w.type===3&&!this.hasLineTerminator&&w.value==="async"){var I=this.lookahead.value;I!==":"&&I!=="("&&I!=="*"&&(D=!0,w=this.lookahead,S=this.parseObjectPropertyKey(),w.type===3&&w.value==="constructor"&&this.tolerateUnexpectedToken(w,u.Messages.ConstructorIsAsync))}var P=this.qualifiedPropertyName(this.lookahead);return w.type===3?w.value==="get"&&P?(C="get",_=this.match("["),S=this.parseObjectPropertyKey(),this.context.allowYield=!1,T=this.parseGetterMethod()):w.value==="set"&&P&&(C="set",_=this.match("["),S=this.parseObjectPropertyKey(),T=this.parseSetterMethod()):w.type===7&&w.value==="*"&&P&&(C="init",_=this.match("["),S=this.parseObjectPropertyKey(),T=this.parseGeneratorMethod(),E=!0),!C&&S&&this.match("(")&&(C="init",T=D?this.parsePropertyMethodAsyncFunction():this.parsePropertyMethodFunction(),E=!0),C||this.throwUnexpectedToken(this.lookahead),C==="init"&&(C="method"),_||(b&&this.isPropertyKey(S,"prototype")&&this.throwUnexpectedToken(w,u.Messages.StaticPrototype),!b&&this.isPropertyKey(S,"constructor")&&((C!=="method"||!E||T&&T.generator)&&this.throwUnexpectedToken(w,u.Messages.ConstructorSpecialMethod),m.value?this.throwUnexpectedToken(w,u.Messages.DuplicateConstructor):m.value=!0,C="constructor")),this.finalize(x,new d.MethodDefinition(S,_,T,C,b))},y.prototype.parseClassElementList=function(){var m=[],w={value:!1};for(this.expect("{");!this.match("}");)this.match(";")?this.nextToken():m.push(this.parseClassElement(w));return this.expect("}"),m},y.prototype.parseClassBody=function(){var m=this.createNode(),w=this.parseClassElementList();return this.finalize(m,new d.ClassBody(w))},y.prototype.parseClassDeclaration=function(m){var w=this.createNode(),x=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=x,this.finalize(w,new d.ClassDeclaration(C,S,T))},y.prototype.parseClassExpression=function(){var m=this.createNode(),w=this.context.strict;this.context.strict=!0,this.expectKeyword("class");var x=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=w,this.finalize(m,new d.ClassExpression(x,C,S))},y.prototype.parseModule=function(){this.context.strict=!0,this.context.isModule=!0,this.scanner.isModule=!0;for(var m=this.createNode(),w=this.parseDirectivePrologues();this.lookahead.type!==2;)w.push(this.parseStatementListItem());return this.finalize(m,new d.Module(w))},y.prototype.parseScript=function(){for(var m=this.createNode(),w=this.parseDirectivePrologues();this.lookahead.type!==2;)w.push(this.parseStatementListItem());return this.finalize(m,new d.Script(w))},y.prototype.parseModuleSpecifier=function(){var m=this.createNode();this.lookahead.type!==8&&this.throwError(u.Messages.InvalidModuleSpecifier);var w=this.nextToken(),x=this.getTokenRaw(w);return this.finalize(m,new d.Literal(w.value,x))},y.prototype.parseImportSpecifier=function(){var m,w,x=this.createNode();return this.lookahead.type===3?(w=m=this.parseVariableIdentifier(),this.matchContextualKeyword("as")&&(this.nextToken(),w=this.parseVariableIdentifier())):(w=m=this.parseIdentifierName(),this.matchContextualKeyword("as")?(this.nextToken(),w=this.parseVariableIdentifier()):this.throwUnexpectedToken(this.nextToken())),this.finalize(x,new d.ImportSpecifier(w,m))},y.prototype.parseNamedImports=function(){this.expect("{");for(var m=[];!this.match("}");)m.push(this.parseImportSpecifier()),this.match("}")||this.expect(",");return this.expect("}"),m},y.prototype.parseImportDefaultSpecifier=function(){var m=this.createNode(),w=this.parseIdentifierName();return this.finalize(m,new d.ImportDefaultSpecifier(w))},y.prototype.parseImportNamespaceSpecifier=function(){var m=this.createNode();this.expect("*"),this.matchContextualKeyword("as")||this.throwError(u.Messages.NoAsAfterImportNamespace),this.nextToken();var w=this.parseIdentifierName();return this.finalize(m,new d.ImportNamespaceSpecifier(w))},y.prototype.parseImportDeclaration=function(){this.context.inFunctionBody&&this.throwError(u.Messages.IllegalImportDeclaration);var m,w=this.createNode();this.expectKeyword("import");var x=[];if(this.lookahead.type===8)m=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 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(w,new d.ImportDeclaration(x,m))},y.prototype.parseExportSpecifier=function(){var m=this.createNode(),w=this.parseIdentifierName(),x=w;return this.matchContextualKeyword("as")&&(this.nextToken(),x=this.parseIdentifierName()),this.finalize(m,new d.ExportSpecifier(w,x))},y.prototype.parseExportDeclaration=function(){this.context.inFunctionBody&&this.throwError(u.Messages.IllegalExportDeclaration);var m,w=this.createNode();if(this.expectKeyword("export"),this.matchKeyword("default"))if(this.nextToken(),this.matchKeyword("function")){var x=this.parseFunctionDeclaration(!0);m=this.finalize(w,new d.ExportDefaultDeclaration(x))}else this.matchKeyword("class")?(x=this.parseClassDeclaration(!0),m=this.finalize(w,new d.ExportDefaultDeclaration(x))):this.matchContextualKeyword("async")?(x=this.matchAsyncFunction()?this.parseFunctionDeclaration(!0):this.parseAssignmentExpression(),m=this.finalize(w,new d.ExportDefaultDeclaration(x))):(this.matchContextualKeyword("from")&&this.throwError(u.Messages.UnexpectedToken,this.lookahead.value),x=this.match("{")?this.parseObjectInitializer():this.match("[")?this.parseArrayInitializer():this.parseAssignmentExpression(),this.consumeSemicolon(),m=this.finalize(w,new d.ExportDefaultDeclaration(x)));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(w,new d.ExportAllDeclaration(S))}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)}m=this.finalize(w,new d.ExportNamedDeclaration(x,[],null))}else if(this.matchAsyncFunction())x=this.parseFunctionDeclaration(),m=this.finalize(w,new d.ExportNamedDeclaration(x,[],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(w,new d.ExportNamedDeclaration(null,T,_))}return m},y}();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,y){this.source=v,this.errorHandler=y,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 y,m,w=[];for(this.trackComment&&(w=[],y=this.index-v,m={start:{line:this.lineNumber,column:this.index-this.lineStart-v},end:{}});!this.eof();){var x=this.source.charCodeAt(this.index);if(++this.index,f.Character.isLineTerminator(x)){if(this.trackComment){m.end={line:this.lineNumber,column:this.index-this.lineStart-1};var C={multiLine:!1,slice:[y+v,this.index-1],range:[y,this.index-1],loc:m};w.push(C)}return x===13&&this.source.charCodeAt(this.index)===10&&++this.index,++this.lineNumber,this.lineStart=this.index,w}}return this.trackComment&&(m.end={line:this.lineNumber,column:this.index-this.lineStart},C={multiLine:!1,slice:[y+v,this.index],range:[y,this.index],loc:m},w.push(C)),w},p.prototype.skipMultiLineComment=function(){var v,y,m=[];for(this.trackComment&&(m=[],v=this.index-2,y={start:{line:this.lineNumber,column:this.index-this.lineStart-2},end:{}});!this.eof();){var w=this.source.charCodeAt(this.index);if(f.Character.isLineTerminator(w))w===13&&this.source.charCodeAt(this.index+1)===10&&++this.index,++this.lineNumber,++this.index,this.lineStart=this.index;else if(w===42){if(this.source.charCodeAt(this.index+1)===47){if(this.index+=2,this.trackComment){y.end={line:this.lineNumber,column:this.index-this.lineStart};var x={multiLine:!0,slice:[v+2,this.index-2],range:[v,this.index],loc:y};m.push(x)}return m}++this.index}else++this.index}return this.trackComment&&(y.end={line:this.lineNumber,column:this.index-this.lineStart},x={multiLine:!0,slice:[v+2,this.index],range:[v,this.index],loc:y},m.push(x)),this.tolerateUnexpectedToken(),m},p.prototype.scanComments=function(){var v;this.trackComment&&(v=[]);for(var y=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,y=!0;else if(m===47)if((m=this.source.charCodeAt(this.index+1))===47){this.index+=2;var w=this.skipSingleLineComment(2);this.trackComment&&(v=v.concat(w)),y=!0}else{if(m!==42)break;this.index+=2,w=this.skipMultiLineComment(),this.trackComment&&(v=v.concat(w))}else if(y&&m===45){if(this.source.charCodeAt(this.index+1)!==45||this.source.charCodeAt(this.index+2)!==62)break;this.index+=3,w=this.skipSingleLineComment(3),this.trackComment&&(v=v.concat(w))}else{if(m!==60||this.isModule||this.source.slice(this.index+1,this.index+4)!=="!--")break;this.index+=4,w=this.skipSingleLineComment(4),this.trackComment&&(v=v.concat(w))}}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 y=this.source.charCodeAt(v);if(y>=55296&&y<=56319){var m=this.source.charCodeAt(v+1);m>=56320&&m<=57343&&(y=1024*(y-55296)+m-56320+65536)}return y},p.prototype.scanHexEscape=function(v){for(var y=v==="u"?4:2,m=0,w=0;w1114111||v!=="}")&&this.throwUnexpectedToken(),f.Character.fromCodePoint(y)},p.prototype.getIdentifier=function(){for(var v=this.index++;!this.eof();){var y=this.source.charCodeAt(this.index);if(y===92)return this.index=v,this.getComplexIdentifier();if(y>=55296&&y<57343)return this.index=v,this.getComplexIdentifier();if(!f.Character.isIdentifierPart(y))break;++this.index}return this.source.slice(v,this.index)},p.prototype.getComplexIdentifier=function(){var v,y=this.codePointAt(this.index),m=f.Character.fromCodePoint(y);for(this.index+=m.length,y===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()&&(y=this.codePointAt(this.index),f.Character.isIdentifierPart(y));)m+=v=f.Character.fromCodePoint(y),this.index+=v.length,y===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 y=v!=="0",m=h(v);return!this.eof()&&f.Character.isOctalDigit(this.source.charCodeAt(this.index))&&(y=!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:y}},p.prototype.scanIdentifier=function(){var v,y=this.index,m=this.source.charCodeAt(y)===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&&y+m.length!==this.index){var w=this.index;this.index=y,this.tolerateUnexpectedToken(u.Messages.InvalidEscapedReservedWord),this.index=w}return{type:v,value:m,lineNumber:this.lineNumber,lineStart:this.lineStart,start:y,end:this.index}},p.prototype.scanPunctuator=function(){var v=this.index,y=this.source[this.index];switch(y){case"(":case"{":y==="{"&&this.curlyStack.push("{"),++this.index;break;case".":++this.index,this.source[this.index]==="."&&this.source[this.index+1]==="."&&(this.index+=2,y="...");break;case"}":++this.index,this.curlyStack.pop();break;case")":case";":case",":case"[":case"]":case":":case"?":case"~":++this.index;break;default:(y=this.source.substr(this.index,4))===">>>="?this.index+=4:(y=y.substr(0,3))==="==="||y==="!=="||y===">>>"||y==="<<="||y===">>="||y==="**="?this.index+=3:(y=y.substr(0,2))==="&&"||y==="||"||y==="=="||y==="!="||y==="+="||y==="-="||y==="*="||y==="/="||y==="++"||y==="--"||y==="<<"||y===">>"||y==="&="||y==="|="||y==="^="||y==="%="||y==="<="||y===">="||y==="=>"||y==="**"?this.index+=2:(y=this.source[this.index],"<>=!+-*%&|^/".indexOf(y)>=0&&++this.index)}return this.index===v&&this.throwUnexpectedToken(),{type:7,value:y,lineNumber:this.lineNumber,lineStart:this.lineStart,start:v,end:this.index}},p.prototype.scanHexLiteral=function(v){for(var y="";!this.eof()&&f.Character.isHexDigit(this.source.charCodeAt(this.index));)y+=this.source[this.index++];return y.length===0&&this.throwUnexpectedToken(),f.Character.isIdentifierStart(this.source.charCodeAt(this.index))&&this.throwUnexpectedToken(),{type:6,value:parseInt("0x"+y,16),lineNumber:this.lineNumber,lineStart:this.lineStart,start:v,end:this.index}},p.prototype.scanBinaryLiteral=function(v){for(var y,m="";!this.eof()&&((y=this.source[this.index])==="0"||y==="1");)m+=this.source[this.index++];return m.length===0&&this.throwUnexpectedToken(),this.eof()||(y=this.source.charCodeAt(this.index),(f.Character.isIdentifierStart(y)||f.Character.isDecimalDigit(y))&&this.throwUnexpectedToken()),{type:6,value:parseInt(m,2),lineNumber:this.lineNumber,lineStart:this.lineStart,start:v,end:this.index}},p.prototype.scanOctalLiteral=function(v,y){var m="",w=!1;for(f.Character.isOctalDigit(v.charCodeAt(0))?(w=!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 w||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:w,lineNumber:this.lineNumber,lineStart:this.lineStart,start:y,end:this.index}},p.prototype.isImplicitOctalLiteral=function(){for(var v=this.index+1;v64)){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,y){var m=null,w=function(b,D){y&&y(b,D),m&&m.visit(b,D)},x=typeof y=="function"?w: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,x=w)}var T,_=!1;v&&typeof v.sourceType=="string"&&(_=v.sourceType==="module"),T=v&&typeof v.jsx=="boolean"&&v.jsx?new f.JSXParser(p,v,x):new u.Parser(p,v,x);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,y){var m=v||{};return m.sourceType="module",h(p,m,y)},s.parseScript=function(p,v,y){var m=v||{};return m.sourceType="script",h(p,m,y)},s.tokenize=function(p,v,y){var m,w=new d.Tokenizer(p,v);m=[];try{for(;;){var x=w.getNextToken();if(!x)break;y&&(x=y(x)),m.push(x)}}catch(C){w.errorHandler.tolerate(C)}return w.errorHandler.tolerant&&(m.errors=w.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 y=v.node.trailingComments[0];y&&y.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&&(y=this.stack[this.stack.length-1])&&y.start>=d.start.offset;)h=y.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 y;(y=this.leading[p]).start<=d.start.offset&&(g.unshift(y.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(x,C){x.__proto__=C}||function(x,C){for(var S in C)C.hasOwnProperty(S)&&(x[S]=C[S])},function(x,C){function S(){this.constructor=x}l(x,C),x.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),y=c(14);function m(x){var C;switch(x.type){case h.JSXSyntax.JSXIdentifier:C=x.name;break;case h.JSXSyntax.JSXNamespacedName:var S=x;C=m(S.namespace)+":"+m(S.name);break;case h.JSXSyntax.JSXMemberExpression:var T=x;C=m(T.object)+"."+m(T.property)}return C}v.TokenName[100]="JSXIdentifier",v.TokenName[101]="JSXText";var w=function(x){function C(S,T,_){return x.call(this,S,T,_)||this}return f(C,x),C.prototype.parsePrimaryExpression=function(){return this.match("<")?this.parseJSXRoot():x.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,b=!1,D=!1;!this.scanner.eof()&&_&&!E;){var O=this.scanner.source[this.scanner.index];if(O===S)break;if(E=O===";",T+=O,++this.scanner.index,!E)switch(T.length){case 2:b=O==="#";break;case 3:b&&(_=(D=O==="x")||u.Character.isDecimalDigit(O.charCodeAt(0)),b=b&&!D);break;default:_=(_=_&&!(b&&!u.Character.isDecimalDigit(O.charCodeAt(0))))&&!(D&&!u.Character.isHexDigit(O.charCodeAt(0)))}}if(_&&E&&T.length>2){var L=T.substr(1,T.length-2);b&&L.length>1?T=String.fromCharCode(parseInt(L.substr(1),10)):D&&L.length>2?T=String.fromCharCode(parseInt("0"+L.substr(1),16)):b||D||!y.XHTMLEntities[L]||(T=y.XHTMLEntities[L])}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:O=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()&&(L=this.scanner.source[this.scanner.index++])!==_;)E+=L==="&"?this.scanXHTMLEntity(_):L;return{type:8,value:E,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:T,end:this.scanner.index}}if(S===46){var b=this.scanner.source.charCodeAt(this.scanner.index+1),D=this.scanner.source.charCodeAt(this.scanner.index+2),O=b===46&&D===46?"...":".";return T=this.scanner.index,this.scanner.index+=O.length,{type:7,value:O,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 L=this.scanner.source.charCodeAt(this.scanner.index);if(u.Character.isIdentifierPart(L)&&L!==92)++this.scanner.index;else{if(L!==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 b=T;this.expectJSX(".");var D=this.parseJSXIdentifier();T=this.finalize(S,new d.JSXMemberExpression(b,D))}return T},C.prototype.parseJSXAttributeName=function(){var S,T=this.createJSXNode(),_=this.parseJSXIdentifier();if(this.matchJSX(":")){var E=_;this.expectJSX(":");var b=this.parseJSXIdentifier();S=this.finalize(T,new d.JSXNamespacedName(E,b))}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(),b=this.matchJSX("/");return b&&this.expectJSX("/"),this.expectJSX(">"),this.finalize(S,new d.JSXOpeningElement(_,b,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(_),b=this.finalize(T,new d.JSXText(_.value,E));S.push(b)}if(this.scanner.source[this.scanner.index]!=="{")break;var D=this.parseJSXExpressionContainer();S.push(D)}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 b=E;if(b.selfClosing){var D=this.finalize(_,new d.JSXElement(b,[],null));S.children.push(D)}else T.push(S),S={node:_,opening:b,closing:null,children:[]}}if(E.type===h.JSXSyntax.JSXClosingElement){S.closing=E;var O=m(S.opening.name);if(O!==m(S.closing.name)&&this.tolerateError("Expected corresponding JSX closing tag for %0",O),!(T.length>0))break;D=this.finalize(S.node,new d.JSXElement(S.opening,S.children,S.closing)),(S=T[T.length-1]).children.push(D),T.pop()}}return S},C.prototype.parseJSXElement=function(){var S=this.createJSXNode(),T=this.parseJSXOpeningElement(),_=[],E=null;if(!T.selfClosing){var b=this.parseComplexJSXElement({node:S,opening:T,closing:E,children:_});_=b.children,E=b.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 x.prototype.isStartOfExpression.call(this)||this.match("<")},C}(p.Parser);s.JSXParser=w},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 y=function(C,S){this.type=l.JSXSyntax.JSXNamespacedName,this.namespace=C,this.name=S};s.JSXNamespacedName=y;var m=function(C,S,T){this.type=l.JSXSyntax.JSXOpeningElement,this.name=C,this.selfClosing=S,this.attributes=T};s.JSXOpeningElement=m;var w=function(C){this.type=l.JSXSyntax.JSXSpreadAttribute,this.argument=C};s.JSXSpreadAttribute=w;var x=function(C,S){this.type=l.JSXSyntax.JSXText,this.value=C,this.raw=S};s.JSXText=x},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(We){this.type=l.Syntax.ArrayExpression,this.elements=We};s.ArrayExpression=f;var u=function(We){this.type=l.Syntax.ArrayPattern,this.elements=We};s.ArrayPattern=u;var d=function(We,dt,Ut){this.type=l.Syntax.ArrowFunctionExpression,this.id=null,this.params=We,this.body=dt,this.generator=!1,this.expression=Ut,this.async=!1};s.ArrowFunctionExpression=d;var h=function(We,dt,Ut){this.type=l.Syntax.AssignmentExpression,this.operator=We,this.left=dt,this.right=Ut};s.AssignmentExpression=h;var g=function(We,dt){this.type=l.Syntax.AssignmentPattern,this.left=We,this.right=dt};s.AssignmentPattern=g;var p=function(We,dt,Ut){this.type=l.Syntax.ArrowFunctionExpression,this.id=null,this.params=We,this.body=dt,this.generator=!1,this.expression=Ut,this.async=!0};s.AsyncArrowFunctionExpression=p;var v=function(We,dt,Ut){this.type=l.Syntax.FunctionDeclaration,this.id=We,this.params=dt,this.body=Ut,this.generator=!1,this.expression=!1,this.async=!0};s.AsyncFunctionDeclaration=v;var y=function(We,dt,Ut){this.type=l.Syntax.FunctionExpression,this.id=We,this.params=dt,this.body=Ut,this.generator=!1,this.expression=!1,this.async=!0};s.AsyncFunctionExpression=y;var m=function(We){this.type=l.Syntax.AwaitExpression,this.argument=We};s.AwaitExpression=m;var w=function(We,dt,Ut){var En=We==="||"||We==="&&";this.type=En?l.Syntax.LogicalExpression:l.Syntax.BinaryExpression,this.operator=We,this.left=dt,this.right=Ut};s.BinaryExpression=w;var x=function(We){this.type=l.Syntax.BlockStatement,this.body=We};s.BlockStatement=x;var C=function(We){this.type=l.Syntax.BreakStatement,this.label=We};s.BreakStatement=C;var S=function(We,dt){this.type=l.Syntax.CallExpression,this.callee=We,this.arguments=dt};s.CallExpression=S;var T=function(We,dt){this.type=l.Syntax.CatchClause,this.param=We,this.body=dt};s.CatchClause=T;var _=function(We){this.type=l.Syntax.ClassBody,this.body=We};s.ClassBody=_;var E=function(We,dt,Ut){this.type=l.Syntax.ClassDeclaration,this.id=We,this.superClass=dt,this.body=Ut};s.ClassDeclaration=E;var b=function(We,dt,Ut){this.type=l.Syntax.ClassExpression,this.id=We,this.superClass=dt,this.body=Ut};s.ClassExpression=b;var D=function(We,dt){this.type=l.Syntax.MemberExpression,this.computed=!0,this.object=We,this.property=dt};s.ComputedMemberExpression=D;var O=function(We,dt,Ut){this.type=l.Syntax.ConditionalExpression,this.test=We,this.consequent=dt,this.alternate=Ut};s.ConditionalExpression=O;var L=function(We){this.type=l.Syntax.ContinueStatement,this.label=We};s.ContinueStatement=L;var P=function(){this.type=l.Syntax.DebuggerStatement};s.DebuggerStatement=P;var k=function(We,dt){this.type=l.Syntax.ExpressionStatement,this.expression=We,this.directive=dt};s.Directive=k;var G=function(We,dt){this.type=l.Syntax.DoWhileStatement,this.body=We,this.test=dt};s.DoWhileStatement=G;var j=function(){this.type=l.Syntax.EmptyStatement};s.EmptyStatement=j;var F=function(We){this.type=l.Syntax.ExportAllDeclaration,this.source=We};s.ExportAllDeclaration=F;var U=function(We){this.type=l.Syntax.ExportDefaultDeclaration,this.declaration=We};s.ExportDefaultDeclaration=U;var W=function(We,dt,Ut){this.type=l.Syntax.ExportNamedDeclaration,this.declaration=We,this.specifiers=dt,this.source=Ut};s.ExportNamedDeclaration=W;var J=function(We,dt){this.type=l.Syntax.ExportSpecifier,this.exported=dt,this.local=We};s.ExportSpecifier=J;var te=function(We){this.type=l.Syntax.ExpressionStatement,this.expression=We};s.ExpressionStatement=te;var le=function(We,dt,Ut){this.type=l.Syntax.ForInStatement,this.left=We,this.right=dt,this.body=Ut,this.each=!1};s.ForInStatement=le;var ve=function(We,dt,Ut){this.type=l.Syntax.ForOfStatement,this.left=We,this.right=dt,this.body=Ut};s.ForOfStatement=ve;var pe=function(We,dt,Ut,En){this.type=l.Syntax.ForStatement,this.init=We,this.test=dt,this.update=Ut,this.body=En};s.ForStatement=pe;var ye=function(We,dt,Ut,En){this.type=l.Syntax.FunctionDeclaration,this.id=We,this.params=dt,this.body=Ut,this.generator=En,this.expression=!1,this.async=!1};s.FunctionDeclaration=ye;var Ie=function(We,dt,Ut,En){this.type=l.Syntax.FunctionExpression,this.id=We,this.params=dt,this.body=Ut,this.generator=En,this.expression=!1,this.async=!1};s.FunctionExpression=Ie;var Le=function(We){this.type=l.Syntax.Identifier,this.name=We};s.Identifier=Le;var be=function(We,dt,Ut){this.type=l.Syntax.IfStatement,this.test=We,this.consequent=dt,this.alternate=Ut};s.IfStatement=be;var $=function(We,dt){this.type=l.Syntax.ImportDeclaration,this.specifiers=We,this.source=dt};s.ImportDeclaration=$;var R=function(We){this.type=l.Syntax.ImportDefaultSpecifier,this.local=We};s.ImportDefaultSpecifier=R;var X=function(We){this.type=l.Syntax.ImportNamespaceSpecifier,this.local=We};s.ImportNamespaceSpecifier=X;var K=function(We,dt){this.type=l.Syntax.ImportSpecifier,this.local=We,this.imported=dt};s.ImportSpecifier=K;var Z=function(We,dt){this.type=l.Syntax.LabeledStatement,this.label=We,this.body=dt};s.LabeledStatement=Z;var ie=function(We,dt){this.type=l.Syntax.Literal,this.value=We,this.raw=dt};s.Literal=ie;var oe=function(We,dt){this.type=l.Syntax.MetaProperty,this.meta=We,this.property=dt};s.MetaProperty=oe;var Te=function(We,dt,Ut,En,qr){this.type=l.Syntax.MethodDefinition,this.key=We,this.computed=dt,this.value=Ut,this.kind=En,this.static=qr};s.MethodDefinition=Te;var Oe=function(We){this.type=l.Syntax.Program,this.body=We,this.sourceType="module"};s.Module=Oe;var Ve=function(We,dt){this.type=l.Syntax.NewExpression,this.callee=We,this.arguments=dt};s.NewExpression=Ve;var Ge=function(We){this.type=l.Syntax.ObjectExpression,this.properties=We};s.ObjectExpression=Ge;var ce=function(We){this.type=l.Syntax.ObjectPattern,this.properties=We};s.ObjectPattern=ce;var fe=function(We,dt,Ut,En,qr,Gt){this.type=l.Syntax.Property,this.key=dt,this.computed=Ut,this.value=En,this.kind=We,this.method=qr,this.shorthand=Gt};s.Property=fe;var Se=function(We,dt,Ut,En){this.type=l.Syntax.Literal,this.value=We,this.raw=dt,this.regex={pattern:Ut,flags:En}};s.RegexLiteral=Se;var he=function(We){this.type=l.Syntax.RestElement,this.argument=We};s.RestElement=he;var xe=function(We){this.type=l.Syntax.ReturnStatement,this.argument=We};s.ReturnStatement=xe;var qe=function(We){this.type=l.Syntax.Program,this.body=We,this.sourceType="script"};s.Script=qe;var de=function(We){this.type=l.Syntax.SequenceExpression,this.expressions=We};s.SequenceExpression=de;var ht=function(We){this.type=l.Syntax.SpreadElement,this.argument=We};s.SpreadElement=ht;var vt=function(We,dt){this.type=l.Syntax.MemberExpression,this.computed=!1,this.object=We,this.property=dt};s.StaticMemberExpression=vt;var gt=function(){this.type=l.Syntax.Super};s.Super=gt;var Me=function(We,dt){this.type=l.Syntax.SwitchCase,this.test=We,this.consequent=dt};s.SwitchCase=Me;var Ze=function(We,dt){this.type=l.Syntax.SwitchStatement,this.discriminant=We,this.cases=dt};s.SwitchStatement=Ze;var it=function(We,dt){this.type=l.Syntax.TaggedTemplateExpression,this.tag=We,this.quasi=dt};s.TaggedTemplateExpression=it;var rt=function(We,dt){this.type=l.Syntax.TemplateElement,this.value=We,this.tail=dt};s.TemplateElement=rt;var ut=function(We,dt){this.type=l.Syntax.TemplateLiteral,this.quasis=We,this.expressions=dt};s.TemplateLiteral=ut;var Dt=function(){this.type=l.Syntax.ThisExpression};s.ThisExpression=Dt;var wt=function(We){this.type=l.Syntax.ThrowStatement,this.argument=We};s.ThrowStatement=wt;var kt=function(We,dt,Ut){this.type=l.Syntax.TryStatement,this.block=We,this.handler=dt,this.finalizer=Ut};s.TryStatement=kt;var qt=function(We,dt){this.type=l.Syntax.UnaryExpression,this.operator=We,this.argument=dt,this.prefix=!0};s.UnaryExpression=qt;var In=function(We,dt,Ut){this.type=l.Syntax.UpdateExpression,this.operator=We,this.argument=dt,this.prefix=Ut};s.UpdateExpression=In;var Vn=function(We,dt){this.type=l.Syntax.VariableDeclaration,this.declarations=We,this.kind=dt};s.VariableDeclaration=Vn;var zt=function(We,dt){this.type=l.Syntax.VariableDeclarator,this.id=We,this.init=dt};s.VariableDeclarator=zt;var On=function(We,dt){this.type=l.Syntax.WhileStatement,this.test=We,this.body=dt};s.WhileStatement=On;var qi=function(We,dt){this.type=l.Syntax.WithStatement,this.object=We,this.body=dt};s.WithStatement=qi;var kr=function(We,dt){this.type=l.Syntax.YieldExpression,this.argument=We,this.delegate=dt};s.YieldExpression=kr},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 y(m,w,x){w===void 0&&(w={}),this.config={range:typeof w.range=="boolean"&&w.range,loc:typeof w.loc=="boolean"&&w.loc,source:null,tokens:typeof w.tokens=="boolean"&&w.tokens,comment:typeof w.comment=="boolean"&&w.comment,tolerant:typeof w.tolerant=="boolean"&&w.tolerant},this.config.loc&&w.source&&w.source!==null&&(this.config.source=String(w.source)),this.delegate=x,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 y.prototype.throwError=function(m){for(var w=[],x=1;x0&&this.delegate)for(var w=0;w>="||m===">>>="||m==="&="||m==="^="||m==="|="},y.prototype.isolateCoverGrammar=function(m){var w=this.context.isBindingElement,x=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=w,this.context.isAssignmentTarget=x,this.context.firstCoverInitializedNameError=C,S},y.prototype.inheritCoverGrammar=function(m){var w=this.context.isBindingElement,x=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&&w,this.context.isAssignmentTarget=this.context.isAssignmentTarget&&x,this.context.firstCoverInitializedNameError=C||this.context.firstCoverInitializedNameError,S},y.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)},y.prototype.parsePrimaryExpression=function(){var m,w,x,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,w=this.nextToken(),x=this.getTokenRaw(w),m=this.finalize(C,new d.Literal(w.value,x));break;case 1:this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,w=this.nextToken(),x=this.getTokenRaw(w),m=this.finalize(C,new d.Literal(w.value==="true",x));break;case 5:this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,w=this.nextToken(),x=this.getTokenRaw(w),m=this.finalize(C,new d.Literal(null,x));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,w=this.nextRegexToken(),x=this.getTokenRaw(w),m=this.finalize(C,new d.RegexLiteral(w.regex,x,w.pattern,w.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},y.prototype.parseSpreadElement=function(){var m=this.createNode();this.expect("...");var w=this.inheritCoverGrammar(this.parseAssignmentExpression);return this.finalize(m,new d.SpreadElement(w))},y.prototype.parseArrayInitializer=function(){var m=this.createNode(),w=[];for(this.expect("[");!this.match("]");)if(this.match(","))this.nextToken(),w.push(null);else if(this.match("...")){var x=this.parseSpreadElement();this.match("]")||(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,this.expect(",")),w.push(x)}else w.push(this.inheritCoverGrammar(this.parseAssignmentExpression)),this.match("]")||this.expect(",");return this.expect("]"),this.finalize(m,new d.ArrayExpression(w))},y.prototype.parsePropertyMethod=function(m){this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;var w=this.context.strict,x=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=w,this.context.allowStrictDirective=x,C},y.prototype.parsePropertyMethodFunction=function(){var m=this.createNode(),w=this.context.allowYield;this.context.allowYield=!0;var x=this.parseFormalParameters(),C=this.parsePropertyMethod(x);return this.context.allowYield=w,this.finalize(m,new d.FunctionExpression(null,x.params,C,!1))},y.prototype.parsePropertyMethodAsyncFunction=function(){var m=this.createNode(),w=this.context.allowYield,x=this.context.await;this.context.allowYield=!1,this.context.await=!0;var C=this.parseFormalParameters(),S=this.parsePropertyMethod(C);return this.context.allowYield=w,this.context.await=x,this.finalize(m,new d.AsyncFunctionExpression(null,C.params,S))},y.prototype.parseObjectPropertyKey=function(){var m,w=this.createNode(),x=this.nextToken();switch(x.type){case 8:case 6:this.context.strict&&x.octal&&this.tolerateUnexpectedToken(x,u.Messages.StrictOctalLiteral);var C=this.getTokenRaw(x);m=this.finalize(w,new d.Literal(x.value,C));break;case 3:case 1:case 5:case 4:m=this.finalize(w,new d.Identifier(x.value));break;case 7:x.value==="["?(m=this.isolateCoverGrammar(this.parseAssignmentExpression),this.expect("]")):m=this.throwUnexpectedToken(x);break;default:m=this.throwUnexpectedToken(x)}return m},y.prototype.isPropertyKey=function(m,w){return m.type===g.Syntax.Identifier&&m.name===w||m.type===g.Syntax.Literal&&m.value===w},y.prototype.parseObjectProperty=function(m){var w,x=this.createNode(),C=this.lookahead,S=null,T=null,_=!1,E=!1,b=!1,D=!1;if(C.type===3){var O=C.value;this.nextToken(),_=this.match("["),S=(D=!(this.hasLineTerminator||O!=="async"||this.match(":")||this.match("(")||this.match("*")||this.match(",")))?this.parseObjectPropertyKey():this.finalize(x,new d.Identifier(O))}else this.match("*")?this.nextToken():(_=this.match("["),S=this.parseObjectPropertyKey());var L=this.qualifiedPropertyName(this.lookahead);if(C.type===3&&!D&&C.value==="get"&&L)w="get",_=this.match("["),S=this.parseObjectPropertyKey(),this.context.allowYield=!1,T=this.parseGetterMethod();else if(C.type===3&&!D&&C.value==="set"&&L)w="set",_=this.match("["),S=this.parseObjectPropertyKey(),T=this.parseSetterMethod();else if(C.type===7&&C.value==="*"&&L)w="init",_=this.match("["),S=this.parseObjectPropertyKey(),T=this.parseGeneratorMethod(),E=!0;else if(S||this.throwUnexpectedToken(this.lookahead),w="init",this.match(":")&&!D)!_&&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=D?this.parsePropertyMethodAsyncFunction():this.parsePropertyMethodFunction(),E=!0;else if(C.type===3)if(O=this.finalize(x,new d.Identifier(C.value)),this.match("=")){this.context.firstCoverInitializedNameError=this.lookahead,this.nextToken(),b=!0;var P=this.isolateCoverGrammar(this.parseAssignmentExpression);T=this.finalize(x,new d.AssignmentPattern(O,P))}else b=!0,T=O;else this.throwUnexpectedToken(this.nextToken());return this.finalize(x,new d.Property(w,S,_,T,E,b))},y.prototype.parseObjectInitializer=function(){var m=this.createNode();this.expect("{");for(var w=[],x={value:!1};!this.match("}");)w.push(this.parseObjectProperty(x)),this.match("}")||this.expectCommaSeparator();return this.expect("}"),this.finalize(m,new d.ObjectExpression(w))},y.prototype.parseTemplateHead=function(){l.assert(this.lookahead.head,"Template literal must start with a template head");var m=this.createNode(),w=this.nextToken(),x=w.value,C=w.cooked;return this.finalize(m,new d.TemplateElement({raw:x,cooked:C},w.tail))},y.prototype.parseTemplateElement=function(){this.lookahead.type!==10&&this.throwUnexpectedToken();var m=this.createNode(),w=this.nextToken(),x=w.value,C=w.cooked;return this.finalize(m,new d.TemplateElement({raw:x,cooked:C},w.tail))},y.prototype.parseTemplateLiteral=function(){var m=this.createNode(),w=[],x=[],C=this.parseTemplateHead();for(x.push(C);!C.tail;)w.push(this.parseExpression()),C=this.parseTemplateElement(),x.push(C);return this.finalize(m,new d.TemplateLiteral(x,w))},y.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 w=0;w")||this.expect("=>"),m={type:"ArrowParameterPlaceHolder",params:[],async:!1};else{var w=this.lookahead,x=[];if(this.match("..."))m=this.parseRestElement(x),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(w),new d.ComputedMemberExpression(m,S));else{if(this.lookahead.type!==10||!this.lookahead.head)break;var b=this.parseTemplateLiteral();m=this.finalize(this.startNode(w),new d.TaggedTemplateExpression(m,b))}return this.context.allowIn=C,m},y.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)},y.prototype.parseLeftHandSideExpression=function(){l.assert(this.context.allowIn,"callee of new expression always allow in keyword.");for(var m=this.startNode(this.lookahead),w=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 x=this.isolateCoverGrammar(this.parseExpression);this.expect("]"),w=this.finalize(m,new d.ComputedMemberExpression(w,x))}else if(this.match("."))this.context.isBindingElement=!1,this.context.isAssignmentTarget=!0,this.expect("."),x=this.parseIdentifierName(),w=this.finalize(m,new d.StaticMemberExpression(w,x));else{if(this.lookahead.type!==10||!this.lookahead.head)break;var C=this.parseTemplateLiteral();w=this.finalize(m,new d.TaggedTemplateExpression(w,C))}return w},y.prototype.parseUpdateExpression=function(){var m,w=this.lookahead;if(this.match("++")||this.match("--")){var x=this.startNode(w),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(x,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(w),new d.UpdateExpression(T,m,S))}return m},y.prototype.parseAwaitExpression=function(){var m=this.createNode();this.nextToken();var w=this.parseUnaryExpression();return this.finalize(m,new d.AwaitExpression(w))},y.prototype.parseUnaryExpression=function(){var m;if(this.match("+")||this.match("-")||this.match("~")||this.match("!")||this.matchKeyword("delete")||this.matchKeyword("void")||this.matchKeyword("typeof")){var w=this.startNode(this.lookahead),x=this.nextToken();m=this.inheritCoverGrammar(this.parseUnaryExpression),m=this.finalize(w,new d.UnaryExpression(x.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},y.prototype.parseExponentiationExpression=function(){var m=this.lookahead,w=this.inheritCoverGrammar(this.parseUnaryExpression);if(w.type!==g.Syntax.UnaryExpression&&this.match("**")){this.nextToken(),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;var x=w,C=this.isolateCoverGrammar(this.parseExponentiationExpression);w=this.finalize(this.startNode(m),new d.BinaryExpression("**",x,C))}return w},y.prototype.binaryPrecedence=function(m){var w=m.value;return m.type===7?this.operatorPrecedence[w]||0:m.type===4&&(w==="instanceof"||this.context.allowIn&&w==="in")?7:0},y.prototype.parseBinaryExpression=function(){var m=this.lookahead,w=this.inheritCoverGrammar(this.parseExponentiationExpression),x=this.lookahead,C=this.binaryPrecedence(x);if(C>0){this.nextToken(),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;for(var S=[m,this.lookahead],T=w,_=this.isolateCoverGrammar(this.parseExponentiationExpression),E=[T,x.value,_],b=[C];!((C=this.binaryPrecedence(this.lookahead))<=0);){for(;E.length>2&&C<=b[b.length-1];){_=E.pop();var D=E.pop();b.pop(),T=E.pop(),S.pop();var O=this.startNode(S[S.length-1]);E.push(this.finalize(O,new d.BinaryExpression(D,T,_)))}E.push(this.nextToken().value),b.push(C),S.push(this.lookahead),E.push(this.isolateCoverGrammar(this.parseExponentiationExpression))}var L=E.length-1;w=E[L];for(var P=S.pop();L>1;){var k=S.pop(),G=P&&P.lineStart;O=this.startNode(k,G),D=E[L-1],w=this.finalize(O,new d.BinaryExpression(D,E[L-2],w)),L-=2,P=k}}return w},y.prototype.parseConditionalExpression=function(){var m=this.lookahead,w=this.inheritCoverGrammar(this.parseBinaryExpression);if(this.match("?")){this.nextToken();var x=this.context.allowIn;this.context.allowIn=!0;var C=this.isolateCoverGrammar(this.parseAssignmentExpression);this.context.allowIn=x,this.expect(":");var S=this.isolateCoverGrammar(this.parseAssignmentExpression);w=this.finalize(this.startNode(m),new d.ConditionalExpression(w,C,S)),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1}return w},y.prototype.checkPatternParam=function(m,w){switch(w.type){case g.Syntax.Identifier:this.validateParam(m,w,w.name);break;case g.Syntax.RestElement:this.checkPatternParam(m,w.argument);break;case g.Syntax.AssignmentPattern:this.checkPatternParam(m,w.left);break;case g.Syntax.ArrayPattern:for(var x=0;x")){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 b=this.context.allowYield,D=this.context.await;this.context.allowYield=!0,this.context.await=S;var O=this.startNode(w);this.expect("=>");var L=void 0;if(this.match("{")){var P=this.context.allowIn;this.context.allowIn=!0,L=this.parseFunctionSourceElements(),this.context.allowIn=P}else L=this.isolateCoverGrammar(this.parseAssignmentExpression);var k=L.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(O,new d.AsyncArrowFunctionExpression(T.params,L,k)):this.finalize(O,new d.ArrowFunctionExpression(T.params,L,k)),this.context.strict=_,this.context.allowStrictDirective=E,this.context.allowYield=b,this.context.await=D}}else if(this.matchAssign()){if(this.context.isAssignmentTarget||this.tolerateError(u.Messages.InvalidLHSInAssignment),this.context.strict&&m.type===g.Syntax.Identifier){var G=m;this.scanner.isRestrictedWord(G.name)&&this.tolerateUnexpectedToken(x,u.Messages.StrictLHSAssignment),this.scanner.isStrictModeReservedWord(G.name)&&this.tolerateUnexpectedToken(x,u.Messages.StrictReservedWord)}this.match("=")?this.reinterpretExpressionAsPattern(m):(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1);var j=(x=this.nextToken()).value,F=this.isolateCoverGrammar(this.parseAssignmentExpression);m=this.finalize(this.startNode(w),new d.AssignmentExpression(j,m,F)),this.context.firstCoverInitializedNameError=null}}return m},y.prototype.parseExpression=function(){var m=this.lookahead,w=this.isolateCoverGrammar(this.parseAssignmentExpression);if(this.match(",")){var x=[];for(x.push(w);this.lookahead.type!==2&&this.match(",");)this.nextToken(),x.push(this.isolateCoverGrammar(this.parseAssignmentExpression));w=this.finalize(this.startNode(m),new d.SequenceExpression(x))}return w},y.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},y.prototype.parseBlock=function(){var m=this.createNode();this.expect("{");for(var w=[];!this.match("}");)w.push(this.parseStatementListItem());return this.expect("}"),this.finalize(m,new d.BlockStatement(w))},y.prototype.parseLexicalBinding=function(m,w){var x=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")):(!w.inFor&&C.type!==g.Syntax.Identifier||this.match("="))&&(this.expect("="),S=this.isolateCoverGrammar(this.parseAssignmentExpression)),this.finalize(x,new d.VariableDeclarator(C,S))},y.prototype.parseBindingList=function(m,w){for(var x=[this.parseLexicalBinding(m,w)];this.match(",");)this.nextToken(),x.push(this.parseLexicalBinding(m,w));return x},y.prototype.isLexicalDeclaration=function(){var m=this.scanner.saveState();this.scanner.scanComments();var w=this.scanner.lex();return this.scanner.restoreState(m),w.type===3||w.type===7&&w.value==="["||w.type===7&&w.value==="{"||w.type===4&&w.value==="let"||w.type===4&&w.value==="yield"},y.prototype.parseLexicalDeclaration=function(m){var w=this.createNode(),x=this.nextToken().value;l.assert(x==="let"||x==="const","Lexical declaration must be either let or const");var C=this.parseBindingList(x,m);return this.consumeSemicolon(),this.finalize(w,new d.VariableDeclaration(C,x))},y.prototype.parseBindingRestElement=function(m,w){var x=this.createNode();this.expect("...");var C=this.parsePattern(m,w);return this.finalize(x,new d.RestElement(C))},y.prototype.parseArrayPattern=function(m,w){var x=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,w));break}C.push(this.parsePatternWithDefault(m,w)),this.match("]")||this.expect(",")}return this.expect("]"),this.finalize(x,new d.ArrayPattern(C))},y.prototype.parsePropertyPattern=function(m,w){var x,C,S=this.createNode(),T=!1,_=!1;if(this.lookahead.type===3){var E=this.lookahead;x=this.parseVariableIdentifier();var b=this.finalize(S,new d.Identifier(E.value));if(this.match("=")){m.push(E),_=!0,this.nextToken();var D=this.parseAssignmentExpression();C=this.finalize(this.startNode(E),new d.AssignmentPattern(b,D))}else this.match(":")?(this.expect(":"),C=this.parsePatternWithDefault(m,w)):(m.push(E),_=!0,C=b)}else T=this.match("["),x=this.parseObjectPropertyKey(),this.expect(":"),C=this.parsePatternWithDefault(m,w);return this.finalize(S,new d.Property("init",x,T,C,!1,_))},y.prototype.parseObjectPattern=function(m,w){var x=this.createNode(),C=[];for(this.expect("{");!this.match("}");)C.push(this.parsePropertyPattern(m,w)),this.match("}")||this.expect(",");return this.expect("}"),this.finalize(x,new d.ObjectPattern(C))},y.prototype.parsePattern=function(m,w){var x;return this.match("[")?x=this.parseArrayPattern(m,w):this.match("{")?x=this.parseObjectPattern(m,w):(!this.matchKeyword("let")||w!=="const"&&w!=="let"||this.tolerateUnexpectedToken(this.lookahead,u.Messages.LetInLexicalBinding),m.push(this.lookahead),x=this.parseVariableIdentifier(w)),x},y.prototype.parsePatternWithDefault=function(m,w){var x=this.lookahead,C=this.parsePattern(m,w);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(x),new d.AssignmentPattern(C,T))}return C},y.prototype.parseVariableIdentifier=function(m){var w=this.createNode(),x=this.nextToken();return x.type===4&&x.value==="yield"?this.context.strict?this.tolerateUnexpectedToken(x,u.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,u.Messages.StrictReservedWord):(this.context.strict||x.value!=="let"||m!=="var")&&this.throwUnexpectedToken(x):(this.context.isModule||this.context.await)&&x.type===3&&x.value==="await"&&this.tolerateUnexpectedToken(x),this.finalize(w,new d.Identifier(x.value))},y.prototype.parseVariableDeclaration=function(m){var w=this.createNode(),x=this.parsePattern([],"var");this.context.strict&&x.type===g.Syntax.Identifier&&this.scanner.isRestrictedWord(x.name)&&this.tolerateError(u.Messages.StrictVarName);var C=null;return this.match("=")?(this.nextToken(),C=this.isolateCoverGrammar(this.parseAssignmentExpression)):x.type===g.Syntax.Identifier||m.inFor||this.expect("="),this.finalize(w,new d.VariableDeclarator(x,C))},y.prototype.parseVariableDeclarationList=function(m){var w={inFor:m.inFor},x=[];for(x.push(this.parseVariableDeclaration(w));this.match(",");)this.nextToken(),x.push(this.parseVariableDeclaration(w));return x},y.prototype.parseVariableStatement=function(){var m=this.createNode();this.expectKeyword("var");var w=this.parseVariableDeclarationList({inFor:!1});return this.consumeSemicolon(),this.finalize(m,new d.VariableDeclaration(w,"var"))},y.prototype.parseEmptyStatement=function(){var m=this.createNode();return this.expect(";"),this.finalize(m,new d.EmptyStatement)},y.prototype.parseExpressionStatement=function(){var m=this.createNode(),w=this.parseExpression();return this.consumeSemicolon(),this.finalize(m,new d.ExpressionStatement(w))},y.prototype.parseIfClause=function(){return this.context.strict&&this.matchKeyword("function")&&this.tolerateError(u.Messages.StrictFunction),this.parseStatement()},y.prototype.parseIfStatement=function(){var m,w=this.createNode(),x=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(),x=this.parseIfClause())),this.finalize(w,new d.IfStatement(C,m,x))},y.prototype.parseDoWhileStatement=function(){var m=this.createNode();this.expectKeyword("do");var w=this.context.inIteration;this.context.inIteration=!0;var x=this.parseStatement();this.context.inIteration=w,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(x,C))},y.prototype.parseWhileStatement=function(){var m,w=this.createNode();this.expectKeyword("while"),this.expect("(");var x=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(w,new d.WhileStatement(x,m))},y.prototype.parseForStatement=function(){var m,w,x,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 b=this.context.allowIn;this.context.allowIn=!1;var D=this.parseVariableDeclarationList({inFor:!0});if(this.context.allowIn=b,D.length===1&&this.matchKeyword("in")){var O=D[0];O.init&&(O.id.type===g.Syntax.ArrayPattern||O.id.type===g.Syntax.ObjectPattern||this.context.strict)&&this.tolerateError(u.Messages.ForInOfLoopInitializer,"for-in"),C=this.finalize(C,new d.VariableDeclaration(D,"var")),this.nextToken(),m=C,w=this.parseExpression(),C=null}else D.length===1&&D[0].init===null&&this.matchContextualKeyword("of")?(C=this.finalize(C,new d.VariableDeclaration(D,"var")),this.nextToken(),m=C,w=this.parseAssignmentExpression(),C=null,_=!1):(C=this.finalize(C,new d.VariableDeclaration(D,"var")),this.expect(";"))}else if(this.matchKeyword("const")||this.matchKeyword("let")){C=this.createNode();var L=this.nextToken().value;this.context.strict||this.lookahead.value!=="in"?(b=this.context.allowIn,this.context.allowIn=!1,D=this.parseBindingList(L,{inFor:!0}),this.context.allowIn=b,D.length===1&&D[0].init===null&&this.matchKeyword("in")?(C=this.finalize(C,new d.VariableDeclaration(D,L)),this.nextToken(),m=C,w=this.parseExpression(),C=null):D.length===1&&D[0].init===null&&this.matchContextualKeyword("of")?(C=this.finalize(C,new d.VariableDeclaration(D,L)),this.nextToken(),m=C,w=this.parseAssignmentExpression(),C=null,_=!1):(this.consumeSemicolon(),C=this.finalize(C,new d.VariableDeclaration(D,L)))):(C=this.finalize(C,new d.Identifier(L)),this.nextToken(),m=C,w=this.parseExpression(),C=null)}else{var P=this.lookahead;if(b=this.context.allowIn,this.context.allowIn=!1,C=this.inheritCoverGrammar(this.parseAssignmentExpression),this.context.allowIn=b,this.matchKeyword("in"))this.context.isAssignmentTarget&&C.type!==g.Syntax.AssignmentExpression||this.tolerateError(u.Messages.InvalidLHSInForIn),this.nextToken(),this.reinterpretExpressionAsPattern(C),m=C,w=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,w=this.parseAssignmentExpression(),C=null,_=!1;else{if(this.match(",")){for(var k=[C];this.match(",");)this.nextToken(),k.push(this.isolateCoverGrammar(this.parseAssignmentExpression));C=this.finalize(this.startNode(P),new d.SequenceExpression(k))}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()),x=this.finalize(this.createNode(),new d.EmptyStatement);else{this.expect(")");var G=this.context.inIteration;this.context.inIteration=!0,x=this.isolateCoverGrammar(this.parseStatement),this.context.inIteration=G}return m===void 0?this.finalize(E,new d.ForStatement(C,S,T,x)):_?this.finalize(E,new d.ForInStatement(m,w,x)):this.finalize(E,new d.ForOfStatement(m,w,x))},y.prototype.parseContinueStatement=function(){var m=this.createNode();this.expectKeyword("continue");var w=null;if(this.lookahead.type===3&&!this.hasLineTerminator){var x=this.parseVariableIdentifier();w=x;var C="$"+x.name;Object.prototype.hasOwnProperty.call(this.context.labelSet,C)||this.throwError(u.Messages.UnknownLabel,x.name)}return this.consumeSemicolon(),w!==null||this.context.inIteration||this.throwError(u.Messages.IllegalContinue),this.finalize(m,new d.ContinueStatement(w))},y.prototype.parseBreakStatement=function(){var m=this.createNode();this.expectKeyword("break");var w=null;if(this.lookahead.type===3&&!this.hasLineTerminator){var x=this.parseVariableIdentifier(),C="$"+x.name;Object.prototype.hasOwnProperty.call(this.context.labelSet,C)||this.throwError(u.Messages.UnknownLabel,x.name),w=x}return this.consumeSemicolon(),w!==null||this.context.inIteration||this.context.inSwitch||this.throwError(u.Messages.IllegalBreak),this.finalize(m,new d.BreakStatement(w))},y.prototype.parseReturnStatement=function(){this.context.inFunctionBody||this.tolerateError(u.Messages.IllegalReturn);var m=this.createNode();this.expectKeyword("return");var w=(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(w))},y.prototype.parseWithStatement=function(){this.context.strict&&this.tolerateError(u.Messages.StrictModeWith);var m,w=this.createNode();this.expectKeyword("with"),this.expect("(");var x=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(w,new d.WithStatement(x,m))},y.prototype.parseSwitchCase=function(){var m,w=this.createNode();this.matchKeyword("default")?(this.nextToken(),m=null):(this.expectKeyword("case"),m=this.parseExpression()),this.expect(":");for(var x=[];!(this.match("}")||this.matchKeyword("default")||this.matchKeyword("case"));)x.push(this.parseStatementListItem());return this.finalize(w,new d.SwitchCase(m,x))},y.prototype.parseSwitchStatement=function(){var m=this.createNode();this.expectKeyword("switch"),this.expect("(");var w=this.parseExpression();this.expect(")");var x=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=x,this.finalize(m,new d.SwitchStatement(w,C))},y.prototype.parseLabelledStatement=function(){var m,w=this.createNode(),x=this.parseExpression();if(x.type===g.Syntax.Identifier&&this.match(":")){this.nextToken();var C=x,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(x);return this.finalize(w,m)},y.prototype.parseThrowStatement=function(){var m=this.createNode();this.expectKeyword("throw"),this.hasLineTerminator&&this.throwError(u.Messages.NewlineAfterThrow);var w=this.parseExpression();return this.consumeSemicolon(),this.finalize(m,new d.ThrowStatement(w))},y.prototype.parseCatchClause=function(){var m=this.createNode();this.expectKeyword("catch"),this.expect("("),this.match(")")&&this.throwUnexpectedToken(this.lookahead);for(var w=[],x=this.parsePattern(w),C={},S=0;S0&&this.tolerateError(u.Messages.BadGetterArity);var C=this.parsePropertyMethod(x);return this.context.allowYield=w,this.finalize(m,new d.FunctionExpression(null,x.params,C,!1))},y.prototype.parseSetterMethod=function(){var m=this.createNode(),w=this.context.allowYield;this.context.allowYield=!0;var x=this.parseFormalParameters();x.params.length!==1?this.tolerateError(u.Messages.BadSetterArity):x.params[0]instanceof d.RestElement&&this.tolerateError(u.Messages.BadSetterRestParameter);var C=this.parsePropertyMethod(x);return this.context.allowYield=w,this.finalize(m,new d.FunctionExpression(null,x.params,C,!1))},y.prototype.parseGeneratorMethod=function(){var m=this.createNode(),w=this.context.allowYield;this.context.allowYield=!0;var x=this.parseFormalParameters();this.context.allowYield=!1;var C=this.parsePropertyMethod(x);return this.context.allowYield=w,this.finalize(m,new d.FunctionExpression(null,x.params,C,!0))},y.prototype.isStartOfExpression=function(){var m=!0,w=this.lookahead.value;switch(this.lookahead.type){case 7:m=w==="["||w==="("||w==="{"||w==="+"||w==="-"||w==="!"||w==="~"||w==="++"||w==="--"||w==="/"||w==="/=";break;case 4:m=w==="class"||w==="delete"||w==="function"||w==="let"||w==="new"||w==="super"||w==="this"||w==="typeof"||w==="void"||w==="yield"}return m},y.prototype.parseYieldExpression=function(){var m=this.createNode();this.expectKeyword("yield");var w=null,x=!1;if(!this.hasLineTerminator){var C=this.context.allowYield;this.context.allowYield=!1,(x=this.match("*"))?(this.nextToken(),w=this.parseAssignmentExpression()):this.isStartOfExpression()&&(w=this.parseAssignmentExpression()),this.context.allowYield=C}return this.finalize(m,new d.YieldExpression(w,x))},y.prototype.parseClassElement=function(m){var w=this.lookahead,x=this.createNode(),C="",S=null,T=null,_=!1,E=!1,b=!1,D=!1;if(this.match("*"))this.nextToken();else if(_=this.match("["),(S=this.parseObjectPropertyKey()).name==="static"&&(this.qualifiedPropertyName(this.lookahead)||this.match("*"))&&(w=this.lookahead,b=!0,_=this.match("["),this.match("*")?this.nextToken():S=this.parseObjectPropertyKey()),w.type===3&&!this.hasLineTerminator&&w.value==="async"){var O=this.lookahead.value;O!==":"&&O!=="("&&O!=="*"&&(D=!0,w=this.lookahead,S=this.parseObjectPropertyKey(),w.type===3&&w.value==="constructor"&&this.tolerateUnexpectedToken(w,u.Messages.ConstructorIsAsync))}var L=this.qualifiedPropertyName(this.lookahead);return w.type===3?w.value==="get"&&L?(C="get",_=this.match("["),S=this.parseObjectPropertyKey(),this.context.allowYield=!1,T=this.parseGetterMethod()):w.value==="set"&&L&&(C="set",_=this.match("["),S=this.parseObjectPropertyKey(),T=this.parseSetterMethod()):w.type===7&&w.value==="*"&&L&&(C="init",_=this.match("["),S=this.parseObjectPropertyKey(),T=this.parseGeneratorMethod(),E=!0),!C&&S&&this.match("(")&&(C="init",T=D?this.parsePropertyMethodAsyncFunction():this.parsePropertyMethodFunction(),E=!0),C||this.throwUnexpectedToken(this.lookahead),C==="init"&&(C="method"),_||(b&&this.isPropertyKey(S,"prototype")&&this.throwUnexpectedToken(w,u.Messages.StaticPrototype),!b&&this.isPropertyKey(S,"constructor")&&((C!=="method"||!E||T&&T.generator)&&this.throwUnexpectedToken(w,u.Messages.ConstructorSpecialMethod),m.value?this.throwUnexpectedToken(w,u.Messages.DuplicateConstructor):m.value=!0,C="constructor")),this.finalize(x,new d.MethodDefinition(S,_,T,C,b))},y.prototype.parseClassElementList=function(){var m=[],w={value:!1};for(this.expect("{");!this.match("}");)this.match(";")?this.nextToken():m.push(this.parseClassElement(w));return this.expect("}"),m},y.prototype.parseClassBody=function(){var m=this.createNode(),w=this.parseClassElementList();return this.finalize(m,new d.ClassBody(w))},y.prototype.parseClassDeclaration=function(m){var w=this.createNode(),x=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=x,this.finalize(w,new d.ClassDeclaration(C,S,T))},y.prototype.parseClassExpression=function(){var m=this.createNode(),w=this.context.strict;this.context.strict=!0,this.expectKeyword("class");var x=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=w,this.finalize(m,new d.ClassExpression(x,C,S))},y.prototype.parseModule=function(){this.context.strict=!0,this.context.isModule=!0,this.scanner.isModule=!0;for(var m=this.createNode(),w=this.parseDirectivePrologues();this.lookahead.type!==2;)w.push(this.parseStatementListItem());return this.finalize(m,new d.Module(w))},y.prototype.parseScript=function(){for(var m=this.createNode(),w=this.parseDirectivePrologues();this.lookahead.type!==2;)w.push(this.parseStatementListItem());return this.finalize(m,new d.Script(w))},y.prototype.parseModuleSpecifier=function(){var m=this.createNode();this.lookahead.type!==8&&this.throwError(u.Messages.InvalidModuleSpecifier);var w=this.nextToken(),x=this.getTokenRaw(w);return this.finalize(m,new d.Literal(w.value,x))},y.prototype.parseImportSpecifier=function(){var m,w,x=this.createNode();return this.lookahead.type===3?(w=m=this.parseVariableIdentifier(),this.matchContextualKeyword("as")&&(this.nextToken(),w=this.parseVariableIdentifier())):(w=m=this.parseIdentifierName(),this.matchContextualKeyword("as")?(this.nextToken(),w=this.parseVariableIdentifier()):this.throwUnexpectedToken(this.nextToken())),this.finalize(x,new d.ImportSpecifier(w,m))},y.prototype.parseNamedImports=function(){this.expect("{");for(var m=[];!this.match("}");)m.push(this.parseImportSpecifier()),this.match("}")||this.expect(",");return this.expect("}"),m},y.prototype.parseImportDefaultSpecifier=function(){var m=this.createNode(),w=this.parseIdentifierName();return this.finalize(m,new d.ImportDefaultSpecifier(w))},y.prototype.parseImportNamespaceSpecifier=function(){var m=this.createNode();this.expect("*"),this.matchContextualKeyword("as")||this.throwError(u.Messages.NoAsAfterImportNamespace),this.nextToken();var w=this.parseIdentifierName();return this.finalize(m,new d.ImportNamespaceSpecifier(w))},y.prototype.parseImportDeclaration=function(){this.context.inFunctionBody&&this.throwError(u.Messages.IllegalImportDeclaration);var m,w=this.createNode();this.expectKeyword("import");var x=[];if(this.lookahead.type===8)m=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 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(w,new d.ImportDeclaration(x,m))},y.prototype.parseExportSpecifier=function(){var m=this.createNode(),w=this.parseIdentifierName(),x=w;return this.matchContextualKeyword("as")&&(this.nextToken(),x=this.parseIdentifierName()),this.finalize(m,new d.ExportSpecifier(w,x))},y.prototype.parseExportDeclaration=function(){this.context.inFunctionBody&&this.throwError(u.Messages.IllegalExportDeclaration);var m,w=this.createNode();if(this.expectKeyword("export"),this.matchKeyword("default"))if(this.nextToken(),this.matchKeyword("function")){var x=this.parseFunctionDeclaration(!0);m=this.finalize(w,new d.ExportDefaultDeclaration(x))}else this.matchKeyword("class")?(x=this.parseClassDeclaration(!0),m=this.finalize(w,new d.ExportDefaultDeclaration(x))):this.matchContextualKeyword("async")?(x=this.matchAsyncFunction()?this.parseFunctionDeclaration(!0):this.parseAssignmentExpression(),m=this.finalize(w,new d.ExportDefaultDeclaration(x))):(this.matchContextualKeyword("from")&&this.throwError(u.Messages.UnexpectedToken,this.lookahead.value),x=this.match("{")?this.parseObjectInitializer():this.match("[")?this.parseArrayInitializer():this.parseAssignmentExpression(),this.consumeSemicolon(),m=this.finalize(w,new d.ExportDefaultDeclaration(x)));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(w,new d.ExportAllDeclaration(S))}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)}m=this.finalize(w,new d.ExportNamedDeclaration(x,[],null))}else if(this.matchAsyncFunction())x=this.parseFunctionDeclaration(),m=this.finalize(w,new d.ExportNamedDeclaration(x,[],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(w,new d.ExportNamedDeclaration(null,T,_))}return m},y}();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,y){this.source=v,this.errorHandler=y,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 y,m,w=[];for(this.trackComment&&(w=[],y=this.index-v,m={start:{line:this.lineNumber,column:this.index-this.lineStart-v},end:{}});!this.eof();){var x=this.source.charCodeAt(this.index);if(++this.index,f.Character.isLineTerminator(x)){if(this.trackComment){m.end={line:this.lineNumber,column:this.index-this.lineStart-1};var C={multiLine:!1,slice:[y+v,this.index-1],range:[y,this.index-1],loc:m};w.push(C)}return x===13&&this.source.charCodeAt(this.index)===10&&++this.index,++this.lineNumber,this.lineStart=this.index,w}}return this.trackComment&&(m.end={line:this.lineNumber,column:this.index-this.lineStart},C={multiLine:!1,slice:[y+v,this.index],range:[y,this.index],loc:m},w.push(C)),w},p.prototype.skipMultiLineComment=function(){var v,y,m=[];for(this.trackComment&&(m=[],v=this.index-2,y={start:{line:this.lineNumber,column:this.index-this.lineStart-2},end:{}});!this.eof();){var w=this.source.charCodeAt(this.index);if(f.Character.isLineTerminator(w))w===13&&this.source.charCodeAt(this.index+1)===10&&++this.index,++this.lineNumber,++this.index,this.lineStart=this.index;else if(w===42){if(this.source.charCodeAt(this.index+1)===47){if(this.index+=2,this.trackComment){y.end={line:this.lineNumber,column:this.index-this.lineStart};var x={multiLine:!0,slice:[v+2,this.index-2],range:[v,this.index],loc:y};m.push(x)}return m}++this.index}else++this.index}return this.trackComment&&(y.end={line:this.lineNumber,column:this.index-this.lineStart},x={multiLine:!0,slice:[v+2,this.index],range:[v,this.index],loc:y},m.push(x)),this.tolerateUnexpectedToken(),m},p.prototype.scanComments=function(){var v;this.trackComment&&(v=[]);for(var y=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,y=!0;else if(m===47)if((m=this.source.charCodeAt(this.index+1))===47){this.index+=2;var w=this.skipSingleLineComment(2);this.trackComment&&(v=v.concat(w)),y=!0}else{if(m!==42)break;this.index+=2,w=this.skipMultiLineComment(),this.trackComment&&(v=v.concat(w))}else if(y&&m===45){if(this.source.charCodeAt(this.index+1)!==45||this.source.charCodeAt(this.index+2)!==62)break;this.index+=3,w=this.skipSingleLineComment(3),this.trackComment&&(v=v.concat(w))}else{if(m!==60||this.isModule||this.source.slice(this.index+1,this.index+4)!=="!--")break;this.index+=4,w=this.skipSingleLineComment(4),this.trackComment&&(v=v.concat(w))}}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 y=this.source.charCodeAt(v);if(y>=55296&&y<=56319){var m=this.source.charCodeAt(v+1);m>=56320&&m<=57343&&(y=1024*(y-55296)+m-56320+65536)}return y},p.prototype.scanHexEscape=function(v){for(var y=v==="u"?4:2,m=0,w=0;w1114111||v!=="}")&&this.throwUnexpectedToken(),f.Character.fromCodePoint(y)},p.prototype.getIdentifier=function(){for(var v=this.index++;!this.eof();){var y=this.source.charCodeAt(this.index);if(y===92)return this.index=v,this.getComplexIdentifier();if(y>=55296&&y<57343)return this.index=v,this.getComplexIdentifier();if(!f.Character.isIdentifierPart(y))break;++this.index}return this.source.slice(v,this.index)},p.prototype.getComplexIdentifier=function(){var v,y=this.codePointAt(this.index),m=f.Character.fromCodePoint(y);for(this.index+=m.length,y===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()&&(y=this.codePointAt(this.index),f.Character.isIdentifierPart(y));)m+=v=f.Character.fromCodePoint(y),this.index+=v.length,y===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 y=v!=="0",m=h(v);return!this.eof()&&f.Character.isOctalDigit(this.source.charCodeAt(this.index))&&(y=!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:y}},p.prototype.scanIdentifier=function(){var v,y=this.index,m=this.source.charCodeAt(y)===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&&y+m.length!==this.index){var w=this.index;this.index=y,this.tolerateUnexpectedToken(u.Messages.InvalidEscapedReservedWord),this.index=w}return{type:v,value:m,lineNumber:this.lineNumber,lineStart:this.lineStart,start:y,end:this.index}},p.prototype.scanPunctuator=function(){var v=this.index,y=this.source[this.index];switch(y){case"(":case"{":y==="{"&&this.curlyStack.push("{"),++this.index;break;case".":++this.index,this.source[this.index]==="."&&this.source[this.index+1]==="."&&(this.index+=2,y="...");break;case"}":++this.index,this.curlyStack.pop();break;case")":case";":case",":case"[":case"]":case":":case"?":case"~":++this.index;break;default:(y=this.source.substr(this.index,4))===">>>="?this.index+=4:(y=y.substr(0,3))==="==="||y==="!=="||y===">>>"||y==="<<="||y===">>="||y==="**="?this.index+=3:(y=y.substr(0,2))==="&&"||y==="||"||y==="=="||y==="!="||y==="+="||y==="-="||y==="*="||y==="/="||y==="++"||y==="--"||y==="<<"||y===">>"||y==="&="||y==="|="||y==="^="||y==="%="||y==="<="||y===">="||y==="=>"||y==="**"?this.index+=2:(y=this.source[this.index],"<>=!+-*%&|^/".indexOf(y)>=0&&++this.index)}return this.index===v&&this.throwUnexpectedToken(),{type:7,value:y,lineNumber:this.lineNumber,lineStart:this.lineStart,start:v,end:this.index}},p.prototype.scanHexLiteral=function(v){for(var y="";!this.eof()&&f.Character.isHexDigit(this.source.charCodeAt(this.index));)y+=this.source[this.index++];return y.length===0&&this.throwUnexpectedToken(),f.Character.isIdentifierStart(this.source.charCodeAt(this.index))&&this.throwUnexpectedToken(),{type:6,value:parseInt("0x"+y,16),lineNumber:this.lineNumber,lineStart:this.lineStart,start:v,end:this.index}},p.prototype.scanBinaryLiteral=function(v){for(var y,m="";!this.eof()&&((y=this.source[this.index])==="0"||y==="1");)m+=this.source[this.index++];return m.length===0&&this.throwUnexpectedToken(),this.eof()||(y=this.source.charCodeAt(this.index),(f.Character.isIdentifierStart(y)||f.Character.isDecimalDigit(y))&&this.throwUnexpectedToken()),{type:6,value:parseInt(m,2),lineNumber:this.lineNumber,lineStart:this.lineStart,start:v,end:this.index}},p.prototype.scanOctalLiteral=function(v,y){var m="",w=!1;for(f.Character.isOctalDigit(v.charCodeAt(0))?(w=!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 w||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:w,lineNumber:this.lineNumber,lineStart:this.lineStart,start:y,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(x,C,S){var T=parseInt(C||S,16);return T>1114111&&w.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,y)}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 y=this.source[this.index++],m=!1,w=!1;!this.eof();)if(y+=v=this.source[this.index++],v==="\\")v=this.source[this.index++],f.Character.isLineTerminator(v.charCodeAt(0))&&this.throwUnexpectedToken(u.Messages.UnterminatedRegExp),y+=v;else if(f.Character.isLineTerminator(v.charCodeAt(0)))this.throwUnexpectedToken(u.Messages.UnterminatedRegExp);else if(m)v==="]"&&(m=!1);else{if(v==="/"){w=!0;break}v==="["&&(m=!0)}return w||this.throwUnexpectedToken(u.Messages.UnterminatedRegExp),y.substr(1,y.length-2)},p.prototype.scanRegExpFlags=function(){for(var v="";!this.eof();){var y=this.source[this.index];if(!f.Character.isIdentifierPart(y.charCodeAt(0)))break;if(++this.index,y!=="\\"||this.eof())v+=y;else if((y=this.source[this.index])==="u"){++this.index;var m=this.index,w=this.scanHexEscape("u");if(w!==null)for(v+=w;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 y=this.values[this.paren-1];v=y==="if"||y==="while"||y==="for"||y==="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(F-1):null,Ie=Ie&&w(G,X)}else{for(F=0;Fj&&M[ye+1]!==" ",ye=F);else if(!m(G))return 5;X=F>0?M.charCodeAt(F-1):null,Ie=Ie&&w(G,X)}me=me||ge&&F-ye-1>j&&M[ye+1]!==" "}return ue||me?B>9&&x(M)?5:me?4:3:Ie&&!V(M)?1:2}function S(M,L,B,j){M.dump=function(){if(L.length===0)return"''";if(!M.noCompatMode&&d.indexOf(L)!==-1)return"'"+L+"'";var V=M.indent*Math.max(1,B),F=M.lineWidth===-1?-1:Math.max(Math.min(M.lineWidth,40),M.lineWidth-V),G=j||M.flowLevel>-1&&B>=M.flowLevel;switch(C(L,G,M.indent,F,function(X){return function(ne,ue){var me,ge;for(me=0,ge=ne.implicitTypes.length;me"+T(L,M.indent)+_(p(function(X,ne){for(var ue,me,ge=/(\n+)([^\n]*)/g,ye=(Pe=X.indexOf(` -`),Pe=Pe!==-1?Pe:X.length,ge.lastIndex=Pe,E(X.slice(0,Pe),ne)),Ie=X[0]===` -`||X[0]===" ",Pe;me=ge.exec(X);){var Ee=me[1],H=me[2];ue=H[0]===" ",ye+=Ee+(Ie||ue||H===""?"":` -`)+E(H,ne),Ie=ue}return ye}(L,F),V));case 5:return'"'+function(X){for(var ne,ue,me,ge="",ye=0;ye=55296&&ne<=56319&&(ue=X.charCodeAt(ye+1))>=56320&&ue<=57343?(ge+=h(1024*(ne-55296)+ue-56320+65536),ye++):(me=u[ne],ge+=!me&&m(ne)?X[ye]:me||h(ne));return ge}(L)+'"';default:throw new a("impossible error: invalid scalar style")}}()}function T(M,L){var B=x(M)?String(L):"",j=M[M.length-1]===` -`;return B+(j&&(M[M.length-2]===` -`||M===` +`):v+=S}return y||this.throwUnexpectedToken(),w||this.curlyStack.pop(),{type:10,value:this.source.slice(m+1,this.index-C),cooked:v,head:w,tail:x,lineNumber:this.lineNumber,lineStart:this.lineStart,start:m,end:this.index}},p.prototype.testRegExp=function(v,y){var m=v,w=this;y.indexOf("u")>=0&&(m=m.replace(/\\u\{([0-9a-fA-F]+)\}|\\u([a-fA-F0-9]{4})/g,function(x,C,S){var T=parseInt(C||S,16);return T>1114111&&w.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,y)}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 y=this.source[this.index++],m=!1,w=!1;!this.eof();)if(y+=v=this.source[this.index++],v==="\\")v=this.source[this.index++],f.Character.isLineTerminator(v.charCodeAt(0))&&this.throwUnexpectedToken(u.Messages.UnterminatedRegExp),y+=v;else if(f.Character.isLineTerminator(v.charCodeAt(0)))this.throwUnexpectedToken(u.Messages.UnterminatedRegExp);else if(m)v==="]"&&(m=!1);else{if(v==="/"){w=!0;break}v==="["&&(m=!0)}return w||this.throwUnexpectedToken(u.Messages.UnterminatedRegExp),y.substr(1,y.length-2)},p.prototype.scanRegExpFlags=function(){for(var v="";!this.eof();){var y=this.source[this.index];if(!f.Character.isIdentifierPart(y.charCodeAt(0)))break;if(++this.index,y!=="\\"||this.eof())v+=y;else if((y=this.source[this.index])==="u"){++this.index;var m=this.index,w=this.scanHexEscape("u");if(w!==null)for(v+=w;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 y=this.values[this.paren-1];v=y==="if"||y==="while"||y==="for"||y==="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?P.charCodeAt(U-1):null,Ie=Ie&&w(W,J)}else{for(U=0;Uj&&P[ye+1]!==" ",ye=U);else if(!m(W))return 5;J=U>0?P.charCodeAt(U-1):null,Ie=Ie&&w(W,J)}ve=ve||pe&&U-ye-1>j&&P[ye+1]!==" "}return le||ve?G>9&&x(P)?5:ve?4:3:Ie&&!F(P)?1:2}function S(P,k,G,j){P.dump=function(){if(k.length===0)return"''";if(!P.noCompatMode&&d.indexOf(k)!==-1)return"'"+k+"'";var F=P.indent*Math.max(1,G),U=P.lineWidth===-1?-1:Math.max(Math.min(P.lineWidth,40),P.lineWidth-F),W=j||P.flowLevel>-1&&G>=P.flowLevel;switch(C(k,W,P.indent,U,function(J){return function(te,le){var ve,pe;for(ve=0,pe=te.implicitTypes.length;ve"+T(k,P.indent)+_(p(function(J,te){for(var le,ve,pe=/(\n+)([^\n]*)/g,ye=(Le=J.indexOf(` +`),Le=Le!==-1?Le:J.length,pe.lastIndex=Le,E(J.slice(0,Le),te)),Ie=J[0]===` +`||J[0]===" ",Le;ve=pe.exec(J);){var be=ve[1],$=ve[2];le=$[0]===" ",ye+=be+(Ie||le||$===""?"":` +`)+E($,te),Ie=le}return ye}(k,U),F));case 5:return'"'+function(J){for(var te,le,ve,pe="",ye=0;ye=55296&&te<=56319&&(le=J.charCodeAt(ye+1))>=56320&&le<=57343?(pe+=h(1024*(te-55296)+le-56320+65536),ye++):(ve=u[te],pe+=!ve&&m(te)?J[ye]:ve||h(te));return pe}(k)+'"';default:throw new a("impossible error: invalid scalar style")}}()}function T(P,k){var G=x(P)?String(k):"",j=P[P.length-1]===` +`;return G+(j&&(P[P.length-2]===` +`||P===` `)?"+":j?"":"-")+` -`}function _(M){return M[M.length-1]===` -`?M.slice(0,-1):M}function E(M,L){if(M===""||M[0]===" ")return M;for(var B,j,V=/ [^ ]/g,F=0,G=0,X=0,ne="";B=V.exec(M);)(X=B.index)-F>L&&(j=G>F?G:X,ne+=` -`+M.slice(F,j),F=j+1),G=X;return ne+=` -`,M.length-F>L&&G>F?ne+=M.slice(F,G)+` -`+M.slice(G+1):ne+=M.slice(F),ne.slice(1)}function b(M,L,B){var j,V,F,G,X,ne;for(F=0,G=(V=B?M.explicitTypes:M.implicitTypes).length;F tag resolver accepts not "'+ne+'" style');j=X.represent[ne](L,ne)}M.dump=j}return!0}return!1}function D(M,L,B,j,V,F){M.tag=null,M.dump=B,b(M,B,!1)||b(M,B,!0);var G=l.call(M.dump);j&&(j=M.flowLevel<0||M.flowLevel>L);var X,ne,ue=G==="[object Object]"||G==="[object Array]";if(ue&&(ne=(X=M.duplicates.indexOf(B))!==-1),(M.tag!==null&&M.tag!=="?"||ne||M.indent!==2&&L>0)&&(V=!1),ne&&M.usedDuplicates[X])M.dump="*ref_"+X;else{if(ue&&ne&&!M.usedDuplicates[X]&&(M.usedDuplicates[X]=!0),G==="[object Object]")j&&Object.keys(M.dump).length!==0?(function(ge,ye,Ie,Pe){var Ee,H,O,Y,K,Z,ae="",oe=ge.tag,_e=Object.keys(Ie);if(ge.sortKeys===!0)_e.sort();else if(typeof ge.sortKeys=="function")_e.sort(ge.sortKeys);else if(ge.sortKeys)throw new a("sortKeys must be a boolean or a function");for(Ee=0,H=_e.length;Ee1024)&&(ge.dump&&ge.dump.charCodeAt(0)===10?Z+="?":Z+="? "),Z+=ge.dump,K&&(Z+=v(ge,ye)),D(ge,ye+1,Y,!0,K)&&(ge.dump&&ge.dump.charCodeAt(0)===10?Z+=":":Z+=": ",ae+=Z+=ge.dump));ge.tag=oe,ge.dump=ae||"{}"}(M,L,M.dump,V),ne&&(M.dump="&ref_"+X+M.dump)):(function(ge,ye,Ie){var Pe,Ee,H,O,Y,K="",Z=ge.tag,ae=Object.keys(Ie);for(Pe=0,Ee=ae.length;Pe1024&&(Y+="? "),Y+=ge.dump+(ge.condenseFlow?'"':"")+":"+(ge.condenseFlow?"":" "),D(ge,ye,O,!1,!1)&&(K+=Y+=ge.dump));ge.tag=Z,ge.dump="{"+K+"}"}(M,L,M.dump),ne&&(M.dump="&ref_"+X+" "+M.dump));else if(G==="[object Array]"){var me=M.noArrayIndent&&L>0?L-1:L;j&&M.dump.length!==0?(function(ge,ye,Ie,Pe){var Ee,H,O="",Y=ge.tag;for(Ee=0,H=Ie.length;Ee "+M.dump)}return!0}function I(M,L){var B,j,V=[],F=[];for(function G(X,ne,ue){var me,ge,ye;if(X!==null&&typeof X=="object")if((ge=ne.indexOf(X))!==-1)ue.indexOf(ge)===-1&&ue.push(ge);else if(ne.push(X),Array.isArray(X))for(ge=0,ye=X.length;ge=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,b=T.call(C),D=[];try{for(;(S===void 0||S-- >0)&&!(_=b.next()).done;)D.push(_.value)}catch(I){E={error:I}}finally{try{_&&!_.done&&(T=b.return)&&T.call(b)}finally{if(E)throw E.error}}return D};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),y=i(305),m=i(306),w=i(307),x=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 w.YAMLCBWriter(E._options):E._writer=new y.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 b,D;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(b){return this.emit("error",b),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,b=u.fragment().set(this._options);try{b.import(T)}catch(M){return this.emit("error",M),this}try{for(var D=s(b.node.childNodes),I=D.next();!I.done;I=D.next()){var P=I.value;this._fromNode(P)}}catch(M){_={error:M}}finally{try{I&&!I.done&&(E=D.return)&&E.call(D)}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="",b=!1,D=this._prefixMap.copy(),I={},P=this._recordNamespaceInformation(_,D,I),M=this._openTags.length===0?null:this._openTags[this._openTags.length-1][1],L=_.namespaceURI;if(L===null&&(L=M),M===L)P!==null&&(b=!0),E=L===h.namespace.XML?"xml:"+_.localName:_.localName,this._writer.beginElement(E),this._push(this._writer.openTagBegin(E));else{var B=_.prefix,j=null;if(B===null&&L===P||(j=D.get(B,L)),B==="xmlns"){if(this._options.wellFormed)return void this.emit("error",new Error("An element cannot have the 'xmlns' prefix (well-formed required)."));j=B}j!==null?(E=j+":"+_.localName,P!==null&&P!==h.namespace.XML&&(M=P||null),this._writer.beginElement(E),this._push(this._writer.openTagBegin(E))):B!==null?(B in I&&(B=this._generatePrefix(L,D,this._prefixIndex)),D.set(B,L),E+=B+":"+_.localName,this._writer.beginElement(E),this._push(this._writer.openTagBegin(E)),this._push(this._writer.attribute("xmlns:"+B,this._serializeAttributeValue(L,this._options.wellFormed))),P!==null&&(M=P||null)):P===null||P!==null&&P!==L?(b=!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(_,D,this._prefixIndex,I,b,this._options.wellFormed);var V=L===h.namespace.HTML;V&&!T&&S._VoidElementNames.has(_.localName)?(this._push(this._writer.openTagEnd(E,!0,!0)),this._writer.endElement(E)):V||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,D)&&(this._prefixMap=D),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],b=(_[1],_[2]),D=_[3];this._prefixMap=b,D&&(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,b,D;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 P=s(T.attributes),M=P.next();!M.done;M=P.next()){var L=M.value,B=L.prefix?L.prefix+":"+L.localName:L.localName;L.namespaceURI!==null?this.att(L.namespaceURI,B,L.value):this.att(B,L.value)}}catch(G){_={error:G}}finally{try{M&&!M.done&&(E=P.return)&&E.call(P)}finally{if(_)throw _.error}}try{for(var j=s(T.childNodes),V=j.next();!V.done;V=j.next()){var F=V.value;this._fromNode(F)}}catch(G){b={error:G}}finally{try{V&&!V.done&&(D=j.return)&&D.call(j)}finally{if(b)throw b.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,b,D,I){var P,M,L=I?new p.LocalNameSet:void 0;try{for(var B=s(T.attributes),j=B.next();!j.done;j=B.next()){var V=j.value;if(I||D||V.namespaceURI!==null){if(I&&L&&L.has(V.namespaceURI,V.localName))return void this.emit("error",new Error("Element contains duplicate attributes (well-formed required)."));I&&L&&L.set(V.namespaceURI,V.localName);var F=V.namespaceURI,G=null;if(F!==null)if(G=_.get(V.prefix,F),F===h.namespace.XMLNS){if(V.value===h.namespace.XML||V.prefix===null&&D||V.prefix!==null&&(!(V.localName in b)||b[V.localName]!==V.value)&&_.has(V.localName,V.value))continue;if(I&&V.value===h.namespace.XMLNS)return void this.emit("error",new Error("XMLNS namespace is reserved (well-formed required)."));if(I&&V.value==="")return void this.emit("error",new Error("Namespace prefix declarations cannot be used to undeclare a namespace (well-formed required)."));V.prefix==="xmlns"&&(G="xmlns")}else G===null&&(G=V.prefix===null||_.hasPrefix(V.prefix)&&!_.has(V.prefix,F)?this._generatePrefix(F,_,E):V.prefix,this._push(this._writer.attribute("xmlns:"+G,this._serializeAttributeValue(F,this._options.wellFormed))));if(I&&(V.localName.indexOf(":")!==-1||!d.xml_isName(V.localName)||V.localName==="xmlns"&&F===null))return void this.emit("error",new Error("Attribute local name contains invalid characters (well-formed required)."));this._push(this._writer.attribute((G!==null?G+":":"")+V.localName,this._serializeAttributeValue(V.value,this._options.wellFormed)))}else this._push(this._writer.attribute(V.localName,this._serializeAttributeValue(V.value,this._options.wellFormed)))}}catch(X){P={error:X}}finally{try{j&&!j.done&&(M=B.return)&&M.call(B)}finally{if(P)throw P.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 b,D,I=null;try{for(var P=s(T.attributes),M=P.next();!M.done;M=P.next()){var L=M.value,B=L.namespaceURI,j=L.prefix;if(B===h.namespace.XMLNS){if(j===null){I=L.value;continue}var V=L.localName,F=L.value;if(F===h.namespace.XML||(F===""&&(F=null),_.has(V,F)))continue;_.set(V,F),E[V]=F||""}}}catch(G){b={error:G}}finally{try{M&&!M.done&&(D=P.return)&&D.call(P)}finally{if(b)throw b.error}}return I},S.prototype._generatePrefix=function(T,_,E){var b="ns"+E.value;return E.value++,_.set(b,T),b},S.prototype._isPrefixMapModified=function(T,_){var E=T._items,b=_._items,D=T._nullItems,I=_._nullItems;for(var P in b){var M=E[P];if(M===void 0)return!0;var L=b[P];if(M.length!==L.length)return!0;for(var B=0;B':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(w,x,C){return Function.prototype.apply.call(w,x,C)};o=a&&typeof a.ownKeys=="function"?a.ownKeys:Object.getOwnPropertySymbols?function(w){return Object.getOwnPropertyNames(w).concat(Object.getOwnPropertySymbols(w))}:function(w){return Object.getOwnPropertyNames(w)};var c=Number.isNaN||function(w){return w!=w};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(w){if(typeof w!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof w)}function d(w){return w._maxListeners===void 0?l.defaultMaxListeners:w._maxListeners}function h(w,x,C,S){var T,_,E,b;if(u(C),(_=w._events)===void 0?(_=w._events=Object.create(null),w._eventsCount=0):(_.newListener!==void 0&&(w.emit("newListener",x,C.listener?C.listener:C),_=w._events),E=_[x]),E===void 0)E=_[x]=C,++w._eventsCount;else if(typeof E=="function"?E=_[x]=S?[C,E]:[E,C]:S?E.unshift(C):E.push(C),(T=d(w))>0&&E.length>T&&!E.warned){E.warned=!0;var D=new Error("Possible EventEmitter memory leak detected. "+E.length+" "+String(x)+" listeners added. Use emitter.setMaxListeners() to increase limit");D.name="MaxListenersExceededWarning",D.emitter=w,D.type=x,D.count=E.length,b=D,console&&console.warn&&console.warn(b)}return w}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(w,x,C){var S={fired:!1,wrapFn:void 0,target:w,type:x,listener:C},T=g.bind(S);return T.listener=C,S.wrapFn=T,T}function v(w,x,C){var S=w._events;if(S===void 0)return[];var T=S[x];return T===void 0?[]:typeof T=="function"?C?[T.listener||T]:[T]:C?function(_){for(var E=new Array(_.length),b=0;b0&&(_=x[0]),_ instanceof Error)throw _;var E=new Error("Unhandled error."+(_?" ("+_.message+")":""));throw E.context=_,E}var b=T[w];if(b===void 0)return!1;if(typeof b=="function")s(b,this,x);else{var D=b.length,I=m(b,D);for(C=0;C=0;_--)if(C[_]===x||C[_].listener===x){E=C[_].listener,T=_;break}if(T<0)return this;T===0?C.shift():function(b,D){for(;D+1=0;S--)this.removeListener(w,x[S]);return this},l.prototype.listeners=function(w){return v(this,w,!0)},l.prototype.rawListeners=function(w){return v(this,w,!1)},l.listenerCount=function(w,x){return typeof w.listenerCount=="function"?w.listenerCount(x):y.call(w,x)},l.prototype.listenerCount=y,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)}}])})})(tU);var _de=tU.exports,Ya=Uint8Array,Ld=Uint16Array,nU=Uint32Array,rU=new Ya([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]),iU=new Ya([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]),Ede=new Ya([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),oU=function(t,e){for(var r=new Ld(31),n=0;n<31;++n)r[n]=e+=1<>>1|(jr&21845)<<1;Xu=(Xu&52428)>>>2|(Xu&13107)<<2,Xu=(Xu&61680)>>>4|(Xu&3855)<<4,$T[jr]=((Xu&65280)>>>8|(Xu&255)<<8)>>>1}var d1=function(t,e,r){for(var n=t.length,i=0,o=new Ld(e);i>>c]=l}else for(s=new Ld(n),i=0;i>>15-t[i]);return s},sv=new Ya(288);for(var jr=0;jr<144;++jr)sv[jr]=8;for(var jr=144;jr<256;++jr)sv[jr]=9;for(var jr=256;jr<280;++jr)sv[jr]=7;for(var jr=280;jr<288;++jr)sv[jr]=8;var cU=new Ya(32);for(var jr=0;jr<32;++jr)cU[jr]=5;var Mde=d1(sv,9,1),Ode=d1(cU,5,1),a3=function(t){for(var e=t[0],r=1;re&&(e=t[r]);return e},ac=function(t,e,r){var n=e/8|0;return(t[n]|t[n+1]<<8)>>(e&7)&r},s3=function(t,e){var r=e/8|0;return(t[r]|t[r+1]<<8|t[r+2]<<16)>>(e&7)},Pde=function(t){return(t+7)/8|0},Rde=function(t,e,r){(r==null||r>t.length)&&(r=t.length);var n=new(t.BYTES_PER_ELEMENT==2?Ld:t.BYTES_PER_ELEMENT==4?nU:Ya)(r-e);return n.set(t.subarray(e,r)),n},Ade=["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"],pc=function(t,e,r){var n=new Error(e||Ade[t]);if(n.code=t,Error.captureStackTrace&&Error.captureStackTrace(n,pc),!r)throw n;return n},E8=function(t,e,r){var n=t.length;if(!n||r&&r.f&&!r.l)return e||new Ya(0);var i=!e||r,o=!r||r.i;r||(r={}),e||(e=new Ya(n*3));var a=function(ye){var Ie=e.length;if(ye>Ie){var Pe=new Ya(Math.max(Ie*2,ye));Pe.set(e),e=Pe}},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=ac(t,c,1);var p=ac(t,c+1,3);if(c+=3,p)if(p==1)f=Mde,u=Ode,d=9,h=5;else if(p==2){var w=ac(t,c,31)+257,x=ac(t,c+10,15)+4,C=w+ac(t,c+5,31)+1;c+=14;for(var S=new Ya(C),T=new Ya(19),_=0;_>>4;if(v<16)S[_++]=v;else{var P=0,M=0;for(v==16?(M=3+ac(t,c,3),c+=2,P=S[_-1]):v==17?(M=3+ac(t,c,7),c+=3):v==18&&(M=11+ac(t,c,127),c+=7);M--;)S[_++]=P}}var L=S.subarray(0,w),B=S.subarray(w);d=a3(L),h=a3(B),f=d1(L,d,1),u=d1(B,h,1)}else pc(1);else{var v=Pde(c)+4,y=t[v-4]|t[v-3]<<8,m=v+y;if(m>n){o&&pc(0);break}i&&a(l+y),e.set(t.subarray(v,m),l),r.b=l+=y,r.p=c=m*8,r.f=s;continue}if(c>g){o&&pc(0);break}}i&&a(l+131072);for(var j=(1<>>4;if(c+=P&15,c>g){o&&pc(0);break}if(P||pc(2),G<256)e[l++]=G;else if(G==256){F=c,f=null;break}else{var X=G-254;if(G>264){var _=G-257,ne=rU[_];X=ac(t,c,(1<>>4;ue||pc(3),c+=ue&15;var B=Ide[me];if(me>3){var ne=iU[me];B+=s3(t,c)&(1<g){o&&pc(0);break}i&&a(l+131072);for(var ge=l+X;l>3&1)+(e>>4&1);n>0;n-=!t[r++]);return r+(e&2)},kde=function(t){var e=t.length;return(t[e-4]|t[e-3]<<8|t[e-2]<<16|t[e-1]<<24)>>>0},Vde=function(t){((t[0]&15)!=8||t[0]>>>4>7||(t[0]<<8|t[1])%31)&&pc(6,"invalid zlib data"),t[1]&32&&pc(6,"invalid zlib data: preset dictionaries not supported")};function Fde(t,e){return E8(t,e)}function Ude(t,e){return E8(t.subarray(Nde(t),-8),new Ya(kde(t)))}function Bde(t,e){return E8((Vde(t),t.subarray(2,-4)),e)}function Gde(t,e){return t[0]==31&&t[1]==139&&t[2]==8?Ude(t):(t[0]&15)!=8||t[0]>>4>7||(t[0]<<8|t[1])%31?Fde(t,e):Bde(t,e)}var Wde=typeof TextDecoder<"u"&&new TextDecoder,$de=0;try{Wde.decode(Lde,{stream:!0}),$de=1}catch{}const Ha=[];Ha[45]=62;Ha[95]=63;const uh="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(let t=0;t>16&255,n[f++]=l>>8&255,n[f++]=l&255}switch(a){case 3:for(;!sl(t[c]);)c++;for(l=Ha[t.charCodeAt(c++)]<<10;!sl(t[c]);)c++;for(l|=Ha[t.charCodeAt(c++)]<<4;!sl(t[c]);)c++;l|=Ha[t.charCodeAt(c++)]>>2,n[f++]=l>>8&255,n[f++]=l&255;break;case 2:for(;!sl(t[c]);)c++;for(l=Ha[t.charCodeAt(c++)]<<2;!sl(t[c]);)c++;l|=Ha[t.charCodeAt(c++)]>>4,n[f++]=l&255;break;case 1:throw new Error("BASE64: remain 1 should not happen")}return f}function Hde(t){const e=zde(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]+uh[n>>12&63]+uh[n>>6&63]+uh[n&63]}function Kde(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=A9(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 b8={toArrayBuffer:Hde,fromArrayBuffer:Kde};function Xde(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=()=>uU({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 qde={name:"",numberOfComponents:1,size:0,dataType:"string"};function lU(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(Object.assign(e,qde,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),Q.obj(t,e),Q.set(t,e,["name"]),Xde(t,e)}const uU=Q.newInstance(lU,"vtkStringArray");var Yde={newInstance:uU,extend:lU};function Jde(t,e){return[...t.getElementsByTagName(e)]}function L9(t,e){return Jde(t,e)[0]}function Zde(t){return _de.create(t)}function Qde(t){const e=/^\s*\s*_/m,r=/\n\s*<\/AppendedData>/m;return lm.extractBinary(t,e,r)}const wf={Int8:Int8Array,UInt8:Uint8Array,Int16:Int16Array,UInt16:Uint16Array,Int32:Int32Array,UInt32:Uint32Array,Int64:Int32Array,UInt64:Uint32Array,Float32:Float32Array,Float64:Float64Array},um={Int8:1,UInt8:1,Int16:2,UInt16:2,Int32:4,UInt32:4,Int64:8,UInt64:8,Float32:4,Float64:8};function zT(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=t0e(r);for(;l{d.trim().length&&(f[u++]=Number(d))})}else if(c==="binary"){const u=new Uint8Array(b8.toArrayBuffer(e.firstChild.nodeValue.trim()));if(r==="vtkZLibDataCompressor"){const d=D8(u,i);f=new wf[a](d.buffer),/^U?Int64$/.test(a)&&(f=zT(f))}else f=new wf[a](u.buffer,um[i]),a.indexOf("Int64")!==-1&&(f=zT(f))}else if(c==="appended"){const u=Number(e.getAttribute("offset"));f=jT(new Uint8Array(o,u),a,i)}else console.error("Format not supported",c);return{name:s,values:f,numberOfComponents:l}}function c3(t){return new TextDecoder().decode(t).split("\0").slice(0,-1)}function r0e(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;uNt.newInstance(fm(Number(s.getAttribute("NumberOfTuples")),s,e,r,n,i))),a=[...t.getElementsByTagName("Array")].filter(s=>s.getAttribute("type")==="String").map(s=>Yde.newInstance(r0e(s,e,r,n,i)));return[...o,...a]}function s0e(t,e){e.classHierarchy.push("vtkXMLReader"),e.dataAccessHelper||(e.dataAccessHelper=av.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}=Qde(n);e.rawDataBuffer=n,e.binaryBuffer=o;const s=Zde(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(L9(c,"AppendedData")){const p=L9(c,"AppendedData"),v=p.getAttribute("encoding"),y=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"))}));y.sort((T,_)=>T.offset-_.offset);let m=e.binaryBuffer;v==="base64"&&(m=p.textContent.trim().substr(1));const w=[];for(let T=0;TT+_.length,0),C=new ArrayBuffer(x),S=new Uint8Array(C);for(let T=0,_=0;T{t.parseAsArrayBuffer(e.rawDataBuffer)}}const c0e={};function l0e(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,c0e,r),Q.obj(t,e),Q.get(t,e,["url","baseURL"]),Q.setGet(t,e,["dataAccessHelper"]),Q.algo(t,e,0,1),s0e(t,e)}var dm={extend:l0e,processDataArray:fm,processFieldData:o0e,processCells:i0e};function u0e(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}=dm.processDataArray(s,c,n,i,o,a);t[`get${e}`]().setData(l,f)}return s}function f0e(t,e,r,n,i,o,a){const s=Number(r.getAttribute(`NumberOf${e}`));if(s>0){const c=dm.processCells(s,r.getElementsByTagName(e)[0],n,i,o,a);t[`get${e}`]().setData(c)}return s}function d0e(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+=f0e(u,p,d,i,o,a,e.binaryBuffer)}),dm.processFieldData(h,d.getElementsByTagName("PointData")[0],u.getPointData(),i,o,a,e.binaryBuffer),dm.processFieldData(g,d.getElementsByTagName("CellData")[0],u.getCellData(),i,o,a,e.binaryBuffer),e.output[f]=u}}}const h0e={dataType:"PolyData"};function fU(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,h0e,r),dm.extend(t,e,r),d0e(t,e)}const g0e=Q.newInstance(fU,"vtkXMLPolyDataReader");var dU={newInstance:g0e,extend:fU};const wn={};function l3(t,e,r,n,i){for(let o=0;oNumber(o));let r=e[0]-1;r=r<0?r+1+wn.v.length/3:r;let n=e[1]?e[1]-1:r;n=n<0?n+1+wn.vt.length/2:n;let i=e[2]?e[2]-1:r;return i=i<0?i+1+wn.vn.length/3:i,[r,n,i]}function v0e(t){if(t[0]==="#")return;const e=t.split(/[ \t]+/);if(e[0]===wn.splitOn)e.shift(),wn.pieces.push(e.join(" ").trim()),wn.f.push([]),wn.size++;else if(e[0]==="v")wn.v.push(Number(e[1])),wn.v.push(Number(e[2])),wn.v.push(Number(e[3]));else if(e[0]==="vt")wn.vt.push(Number(e[1])),wn.vt.push(Number(e[2]));else if(e[0]==="vn")wn.vn.push(Number(e[1])),wn.vn.push(Number(e[2])),wn.vn.push(Number(e[3]));else if(e[0]==="f"){wn.size===0&&wn.size++;const r=wn.f[wn.size-1];e.shift();const n=e.filter(o=>o.length>0&&o!=="\r"),i=n.length;r.push(i);for(let o=0;o1?a+m:w;for(let C=1;C1&&arguments[1]!==void 0?arguments[1]:{};return e.dataAccessHelper.fetchText(t,n,i)}t.setUrl=function(n){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(n.indexOf(".obj")===-1&&!i.fullpath)e.baseURL=n,e.url=`${n}/index.obj`;else{e.url=n;const o=n.split("/");o.pop(),e.baseURL=o.join("/")}return t.loadData(i)},t.loadData=function(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return r(e.url,n).then(i=>t.isDeleted()?!1:t.parseAsText(i))},t.parseAsText=n=>(n&&(n!==e.parseData&&t.modified(),e.parseData=n,e.numberOfOutputs=0,p0e(e.splitMode),n.split(` -`).forEach(v0e),y0e(e)),!0),t.requestData=(n,i)=>{t.parseAsText(e.parseData)},t.isBusy=()=>!!e.requestCount,t.getNumberOfOutputPorts=()=>e.numberOfOutputs}const S0e={numberOfOutputs:1,requestCount:0,splitMode:null,trackDuplicates:!1};function hU(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,S0e,r),Q.obj(t,e),Q.get(t,e,["url","baseURL"]),Q.setGet(t,e,["dataAccessHelper","splitMode","trackDuplicates"]),Q.algo(t,e,0,1),Q.event(t,e,"busy"),C0e(t,e)}const T0e=Q.newInstance(hU,"vtkOBJReader");var _0e={newInstance:T0e,extend:hU,...x0e};function E0e(t,e){e.classHierarchy.push("vtkPolyDataNormals"),t.vtkPolyDataNormalsExecute=(r,n,i)=>{if(!i)return null;const o=new Float32Array(i.length),a=new Float32Array(3*r);let s=0,c=0;const l=n.length,f=[0,0,0],u=[0,0,0];for(let d=0;d{if(!t.getNumberOfInputPorts())return;const o=r[0];if(!o)return;const a=Dr.newInstance();a.setPoints(o.getPoints()),a.setVerts(o.getVerts()),a.setLines(o.getLines()),a.setPolys(o.getPolys()),a.setStrips(o.getStrips()),a.getPointData().passData(o.getPointData()),a.getCellData().passData(o.getCellData()),a.getFieldData().passData(o.getFieldData());const[s,c]=t.vtkPolyDataNormalsExecute(o.getNumberOfPolys(),o.getPolys().getData(),o.getPoints().getData());if(e.computePointNormals){const l=Nt.newInstance({numberOfComponents:3,name:"Normals",values:c});a.getPointData().setNormals(l)}if(e.computeCellNormals){const l=Nt.newInstance({numberOfComponents:3,name:"Normals",values:s});a.getCellData().setNormals(l)}n[0]=a}}function b0e(t){return{computeCellNormals:!1,computePointNormals:!0,...t}}function gU(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,b0e(r)),Q.obj(t,e),Q.algo(t,e,1,1),Q.setGet(t,e,["computeCellNormals","computePointNormals"]),E0e(t,e)}const D0e=Q.newInstance(gU,"vtkPolyDataNormals");var I0e={newInstance:D0e,extend:gU};class M0e{constructor(e){this._color=[255,255,255],this._actors=[],this.id=e.id,this._color=e.color??this._color,this._format=e.format;const r=new TextDecoder,n=I0e.newInstance(),i=o=>{const a=os.newInstance();a.setMapper(o);const s=w0.newInstance();return s.setColor(this._color[0]/255,this._color[1]/255,this._color[2]/255),a.setProperty(s),a};if(this._format===Cc.PLY){const o=Xo.newInstance(),a=vde.newInstance();a.parseAsArrayBuffer(e.arrayBuffer),o.setInputConnection(a.getOutputPort()),this._actors.push(i(o))}else if(this._format===Cc.STL){const o=Xo.newInstance(),a=Tde.newInstance();a.parseAsArrayBuffer(e.arrayBuffer),n.setInputConnection(a.getOutputPort()),o.setInputConnection(n.getOutputPort()),this._actors.push(i(o))}else if(this._format===Cc.OBJ){const o=_0e.newInstance({splitMode:e.materialUrl?"usemtl":null});o.parseAsText(r.decode(e.arrayBuffer));const a=o.getNumberOfOutputPorts();for(let s=0;s{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?fc.Capture:fc.Bubble,s=i.get(r)??fc.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?fc.Capture:fc.Bubble,a=this._eventListeners.get(e);if(!a)return;(r?[r]:Array.from(a.keys())).forEach(c=>{const l=a.get(c)??fc.None;if(!!!(l&o))return;this._target.removeEventListener(e,c,n);const u=l^o;u===fc.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=fc.Capture;for(let a=o;i;a<<=1){if(!(i&a))continue;const s=a===fc.Capture;this.removeEventListener(e,n,{capture:s}),i^=a}})}_unregisterAllEvents(){Array.from(this._eventListeners.entries()).forEach(([e,r])=>{this._unregisterAllListeners(e,r)})}}class pU{constructor(){this._targetsEventListeners=new Map}addEventListener(e,r,n,i){let o=this._targetsEventListeners.get(e);o||(o=new gx(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 O0e=Object.freeze(Object.defineProperty({__proto__:null,MultiTargetEventListenerManager:pU,TargetEventListeners:gx},Symbol.toStringTag,{value:"Module"}));function P0e(t,e){const r=t.getSize();for(let n=0;n0?r:L0e)>>>0).join(typeof e=="string"?e:N0e)}function k0e(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=Qr(t);N9[r]=e},get:(t,e)=>{if(t==="calibratedPixelSpacing"){const r=Qr(e);return N9[r]}}};function jp(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 F0e(t,e){let r;e?r=[ir(e)]:r=Yo();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 vU=t=>t.preScale.scaled&&t.preScale.scalingParameters.suvbw;function yU(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+Gh}px`,f.style.height=`${h/u+Gh}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=ts(f),v=ir(n)||new S8(n);let y=v.getViewport(l);if(!y){const m={viewportId:l,type:o?Jn.ORTHOGRAPHIC:Jn.STACK,element:f,defaultOptions:{...i,suppressEvents:!0}};v.enableElement(m),y=v.getViewport(l)}return new Promise(m=>{let w=!1,{viewReference:x}=i;const C=S=>{if(w)return;if(x){const M=x;x=null,y.setViewReference(M),y.render();return}t.getContext("2d").drawImage(p,0,0,p.width,p.height,0,0,t.width,t.height);const _=y.canvasToWorld([0,0]),E=y.canvasToWorld([p.width/u,0]),b=y.canvasToWorld([0,p.height/u]),D=Sn([0,0,0],y.canvasToWorld([1/u,0]),_),I=Sn([0,0,0],y.canvasToWorld([0,1/u]),_),P=1;w=!0,f.removeEventListener(qe.IMAGE_RENDERED,C),setTimeout(()=>{v.disableElement(l),document.querySelectorAll(`[viewport-id-for-remove="${g}"]`).forEach(L=>{L.remove()})},0),m({origin:_,bottomLeft:b,topRight:E,thicknessMm:P,rightVector:D,downVector:I})};f.addEventListener(qe.IMAGE_RENDERED,C),o?y.setVolumes([s],!1,!0):y.renderImageObject(e),y.resetCamera(),r==="PT"&&!vU(a)&&y.setProperties({voiRange:{lower:a.minPixelValue,upper:a.maxPixelValue}}),y.render()})}function wU(t,e,r,n,i){if(e.volumeId)throw new Error("Unsupported volume rendering for CPU");const a=e,s=BF(t,a,r),c={canvas:t,viewport:s,image:a,renderingTools:{}};c.transform=cm(c);const l=!0;return new Promise((f,u)=>{VF(c,l),f(null)})}function U0e(t){const{canvas:e,imageId:r,viewReference:n,requestType:i=gn.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?wU:yU;return new Promise((p,v)=>{function y(C,S){var b;const{modality:T}=ut("generalSeriesModule",S)||{},_=!d&&C,E=d&&C;_&&(_.isPreScaled=_.isPreScaled||((b=_.preScale)==null?void 0:b.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 w(C,S,T){return ks(C,T).then(_=>{y.call(this,_,C)},_=>{m.call(this,_,C)})}const x={useRGBA:!!s,requestType:i};if(u){const C=Ue.getVolume(u);C||v(new Error(`Volume id ${u} not found in cache`));const S=C.imageIds[0];y(C,S)}else zi.addRequest(w.bind(null,r,null,x),i,{imageId:r},o)})}function HT(t){return Array.isArray(t)?t:[t]}const k9={HISTORY_UNDO:"CORNERSTONE_TOOLS_HISTORY_UNDO",HISTORY_REDO:"CORNERSTONE_TOOLS_HISTORY_REDO"};class xU{constructor(e="Tools",r=50){this.position=-1,this.redoAvailable=0,this.undoAvailable=0,this.ring=new Array,this.isRecordingGrouped=!1,this.label=e,this._size=r}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}get canUndo(){return this.undoAvailable>0}get canRedo(){return this.redoAvailable>0}undo(e=1){for(;e>0&&this.undoAvailable>0;){const r=this.ring[this.position];for(const n of HT(r).reverse())n.restoreMemo(!0),this.dispatchHistoryEvent({item:n,isUndo:!0});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}dispatchHistoryEvent({item:e,isUndo:r}){e.id&&ze.dispatchEvent(new CustomEvent(r?k9.HISTORY_UNDO:k9.HISTORY_REDO,{detail:{isUndo:r,id:e.id,operationType:e.operationType||"annotation",memo:e}}))}redo(e=1){for(;e>0&&this.redoAvailable>0;){const r=(this.position+1)%this.size,n=this.ring[r];for(const i of HT(n).reverse())i.restoreMemo(!1),this.dispatchHistoryEvent({item:i,isUndo:!1});e--,this.position=r,this.undoAvailable++,this.redoAvailable--}}initializeGroupItem(){this.redoAvailable=0,this.undoAvailable{n.getViewports().forEach(o=>{o.hasImageURI(t)&&r.push(o)})}),r}function O8(t,e){const r=B0e(t,e);return r?r.index:null}function B0e(t,e){const r=e.getImageIds(),n=e.getCurrentImageIdIndex();if(r.length===0)return null;const i=c=>{const l=G0e(c);if(!l)return null;const f=Tl(l.planeNormal,l.imagePositionPatient);return sm(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}`;ud[i]||(ud[i]={}),ud[i]=e},get:(t,e,r)=>{if(t!=="spatialRegistrationModule")return;const n=`${e}_${r}`;if(ud[n])return ud[n];const i=`${r}_${e}`;if(ud[i])return ei(La(),ud[i])}};Ng(hm.get.bind(hm));const W0e=.05;function TU(t,e){const r=t.getSliceIndex(),n=e.getSliceIndex(),i=ut("imagePlaneModule",r.toString()),o=ut("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]{r.getViewports().forEach(({element:i})=>{t.push(De(i))})}),t}function z0e(t){const e=De(t);if(!e)return;const{viewport:r}=e;if(!(r instanceof hr))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 Zf(t){if(t.length<=1)return!1;const e=t[0],{modality:r,seriesInstanceUID:n}=ut("generalSeriesModule",e),{imageOrientationPatient:i,pixelSpacing:o,frameOfReferenceUID:a,columns:s,rows:c,usingDefaultValues:l}=ut("imagePlaneModule",e);if(l)return!1;const f={modality:r,imageOrientationPatient:i,pixelSpacing:o,frameOfReferenceUID:a,columns:s,rows:c,seriesInstanceUID:n};let u=!0;for(let d=0;dj0e.has(r)):!1}async function H0e({viewport:t,options:e={}}){const r=t.getRenderingEngine();let n=e.volumeId||`${Pn()}`;n.split(":").length===0&&(n=`${uF()}:${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:Jn.ORTHOGRAPHIC,element:o,defaultOptions:{background:e.background,orientation:e.orientation}}),(await am(n,{imageIds:s})).load();const u=r.getViewport(a);await GF(r,[{volumeId:n}],[a]);const d=()=>{u.render(),o.removeEventListener(qe.VOLUME_VIEWPORT_NEW_VOLUME,d)};return(()=>{o.addEventListener(qe.VOLUME_VIEWPORT_NEW_VOLUME,d)})(),u.setViewPresentation(c),u.setViewReference(l),u.render(),u}async function K0e({viewport:t,options:e}){const r=t,{id:n,element:i}=r,o=t.getRenderingEngine(),{background:a}=e,s=e.viewportId||n,c=Ue.getVolume(r.getVolumeId());if(!(c instanceof x0))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:Jn.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 un(t,e=2){if(Array.isArray(t))return t.map(i=>un(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 xf(t){return Math.round(t/is)*is}function bU(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?(V9(r),r):(V9(r),r.slice(0,e))}function V9(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 u3(t){const e=t.toString(16);return e.length==1?"0"+e:e}function q0e(t,e,r){return"#"+u3(t)+u3(e)+u3(r)}function Y0e(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 J0e=Object.freeze(Object.defineProperty({__proto__:null,hexToRgb:Y0e,rgbToHex:q0e},Symbol.toStringTag,{value:"Module"}));function DU(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 Z0e(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 Q0e=(t,e)=>t.reduce((r,n)=>((r[n[e]]=r[n[e]]||[]).push(n),r),{});function ehe(t){const e=t.map(a=>{const{imagePositionPatient:s}=ut("imagePlaneModule",a)||{};return{imageId:a,imagePositionPatient:s}});if(!e.every(a=>a.imagePositionPatient))return null;const r=Q0e(e,"imagePositionPatient"),n=Object.keys(r),i=r[n[0]].length;return i===1||!n.every(a=>r[a].length===i)?null:r}function the(t,e){const r={};let n=[];const i=Object.keys(t);for(let o=0;owp(i,r[0]),i=>wp(i,r[1]),i=>wp(i,r[2]),i=>wp(i,r[3]),i=>wp(i,r[4]),nhe,rhe,ihe,ahe];for(let i=0;ic-l).map(c=>o[c].map(l=>l.imageId)),splittingTag:r[i]}}return{imageIdGroups:[t],splittingTag:null}}function she(t){const{imageIdGroups:e,splittingTag:r}=A8(t);return{isDynamicVolume:e.length>1,timePoints:e,splittingTag:r}}function che(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};nt(ze,qe.STACK_SCROLL_OUT_OF_BOUNDS,s)}t.scroll(i,e.debounceLoading,e.loop)}}function lhe(t,e,r,n=!1){const i=n,{numScrollSteps:o,currentStepIndex:a,sliceRangeInfo:s}=jd(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}=Bh(u,h,c,d,l,r);t.setCamera({focalPoint:g,position:p}),t.render();const v=a+r,y={volumeId:e,viewport:t,delta:r,desiredStepIndex:v,currentStepIndex:a,numScrollSteps:o,currentImageId:t.getCurrentImageId()};(v>o||v<0)&&t.getCurrentImageId()?nt(ze,qe.VOLUME_VIEWPORT_SCROLL_OUT_OF_BOUNDS,y):nt(ze,qe.VOLUME_VIEWPORT_SCROLL,y)}async function Wo(t,e={}){const{imageIndex:r,debounceLoading:n,volumeId:i}=e,o=De(t);if(!o)throw new Error("Element has been disabled");const{viewport:a}=o,{imageIndex:s,numberOfSlices:c}=uhe(a,n),f=fhe(c,r)-s;_c(a,{delta:f,debounceLoading:n,volumeId:i})}function uhe(t,e){return t instanceof hr?{numberOfSlices:t.getImageIds().length,imageIndex:e?t.getTargetImageIdIndex():t.getCurrentImageIdIndex()}:{numberOfSlices:t.getNumberOfSlices(),imageIndex:t.getSliceIndex()}}function fhe(t,e){const r=t-1;return G5(e,0,r)}function L8(t,e,r={}){const n=Ue.getVolume(t);if(!n)throw new Error(`Referenced volume with id ${t} does not exist.`);const{metadata:i,spacing:o,direction:a,dimensions:s}=n,{minX:c,maxX:l,minY:f,maxY:u,minZ:d,maxZ:h}=e,g=[Math.min(c,l),Math.min(f,u),Math.min(d,h)],p=fg(n.imageData,g),v=[Math.abs(l-c)+1,Math.abs(u-f)+1,Math.abs(h-d)+1],{targetBuffer:y}=r,m={metadata:i,dimensions:v,spacing:o,origin:p,direction:a,targetBuffer:y,scalarData:(y==null?void 0:y.type)==="Float32Array"?new Float32Array(v[0]*v[1]*v[2]):void 0},w=rv(Pn(),m),x=w.voxelManager.getCompleteScalarDataArray(),C=v[0]*v[1],S=s[0]*s[1],T=n.voxelManager.getCompleteScalarDataArray();for(let _=0;_=a)){for(let m=d-n;m<=d+n;m++)if(!(m<0||m>=o))for(let w=u-n;w<=u+n;w++){if(w<0||w>=i)continue;const x=y*s+m*i+w,C=t[x];c+=C,l+=C*C,f++}}if(f===0){const y=h*s+d*i+u;return y>=0&&yc/n),type:vc.ERMF,isProjection:a}:(console.warn("EstimatedRadiographicMagnificationFactor was not present. Unable to correct ImagerPixelSpacing."),{PixelSpacing:r,type:vc.PROJECTION,isProjection:a}):{PixelSpacing:e,type:vc.UNKNOWN,isProjection:a}}function ghe(t){const{SequenceOfUltrasoundRegions:e}=t,r=Array.isArray(e);if(r&&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:n,PhysicalDeltaY:i}=r?e[0]:e;return{PixelSpacing:[Math.abs(n)*10,Math.abs(i)*10]}}function phe(t){const{PixelSpacing:e,SOPClassUID:r,SequenceOfUltrasoundRegions:n}=t;return n?ghe(t):dhe.has(r)?hhe(t):{PixelSpacing:e,type:vc.NOT_APPLICABLE,isProjection:!1}}const MU=(t,e)=>Z0e(t,e,Ue.getVolume),Dn=Object.freeze(Object.defineProperty({__proto__:null,FrameRange:Wh,HistoryMemo:M8,PointsManager:Sy,ProgressiveIterator:A5,RLEVoxelMap:X0,VoxelManager:Rc,actorIsA:da,applyPreset:wF,asArray:HT,autoLoad:kT,buildMetadata:IF,calculateNeighborhoodStats:IU,calculateSpacingBetweenImageIds:QV,calculateViewportsSpatialRegistration:TU,calibratedPixelSpacingMetadataProvider:V0e,clamp:GT,clip:G5,color:J0e,colormap:see,convertStackToVolumeViewport:H0e,convertToGrayscale:bU,convertVolumeToStackViewport:K0e,createLinearRGBTransferFunction:PF,createSigmoidRGBTransferFunction:A4,createSubVolume:L8,decimate:nF,deepClone:Is,deepEqual:DU,deepMerge:$i,eventListener:O0e,fnv1aHash:IL,generateVolumePropsFromImageIds:ev,genericMetadataProvider:yf,getBufferConfiguration:n8,getClosestImageId:Pu,getClosestStackImageIndexForPoint:O8,getCurrentVolumeViewportSlice:P8,getDynamicVolumeInfo:she,getImageDataMetadata:lx,getImageLegacy:z0e,getImageSliceDataForVolumeViewport:N5,getMinMax:I8,getPixelSpacingInformation:phe,getRandomSampleFromArray:R8,getRuntimeId:mU,getScalingParameters:eF,getSliceRange:cx,getSpacingInNormalDirection:Jf,getTargetVolumeAndSpacingInNormalDir:kg,getViewportImageCornersInWorld:B5,getViewportImageIds:X0e,getViewportModality:MU,getViewportsWithImageURI:U5,getViewportsWithVolumeId:tv,getVoiFromSigmoidRGBTransferFunction:yF,getVolumeActorCorners:hF,getVolumeDirectionVectors:px,getVolumeId:Bl,getVolumeSliceRangeInfo:vF,getVolumeViewportScrollInfo:jd,getVolumeViewportsContainingSameVolumes:F0e,hasFloatScalingParameters:l8,hasNaNValues:VT,imageIdToURI:Qr,imageRetrieveMetadataProvider:lg,imageToWorldCoords:SU,indexWithinDimensions:vr,invertRgbTransferFunction:c1,isEqual:Vt,isEqualAbs:my,isEqualNegative:PL,isImageActor:wc,isNumber:$r,isOpposite:jp,isPTPrescaledWithSUV:vU,isValidVolume:Zf,isVideoTransferSyntax:EU,jumpToSlice:Wo,loadImageToCanvas:U0e,logger:tfe,makeVolumeMetadata:ZV,planar:yue,pointInShapeCallback:Y4,renderToCanvasCPU:wU,renderToCanvasGPU:yU,roundNumber:un,roundToPrecision:xf,scaleArray:che,scaleRgbTransferFunction:P0e,scroll:_c,snapFocalPointToSlice:Bh,sortImageIdsAndGetSpacing:c8,spatialRegistrationMetadataProvider:hm,splitImageIdsBy4DTags:A8,transferFunctionUtils:lee,transformIndexToWorld:fg,transformWorldToIndex:Zr,transformWorldToIndexContinuous:vy,triggerEvent:nt,updatePlaneRestriction:mF,updateVTKImageDataWithCornerstoneImage:fx,uuidv4:Pn,windowLevel:cee,worldToImageCoords:KT},Symbol.toStringTag,{value:"Module"}));class OU extends iF{constructor(e,r){super(e,r),this._dimensionGroupNumber=1,this._loadedDimensionGroups=new Set,this._getImageIdRequests=(o,a)=>this.getImageIdsRequests(o,a),this.getImageLoadRequests=o=>{const a=this.getImageIdsToLoad();return this._getImageIdRequests(a,o)};const{imageIdGroups:n,splittingTag:i}=e;this._splittingTag=i,this._imageIdGroups=n,this.numDimensionGroups=this._imageIdGroups.length,this.numTimePoints=this.numDimensionGroups}_getImageIdsToLoad(){const e=this._imageIdGroups,r=this._dimensionGroupNumber-1,n=[...e[r]];let i=r-1,o=r+1;for(;i>=0||o=0&&n.push(...e[i--]),othis.numDimensionGroups?this.dimensionGroupNumber=1:this.dimensionGroupNumber=r}getCurrentDimensionGroupImageIds(){return this._imageIdGroups[this._dimensionGroupNumber-1]}getCurrentTimePointImageIds(){return console.warn("Warning: getCurrentTimePointImageIds is deprecated. Please use getCurrentDimensionGroupImageIds instead."),this.getCurrentDimensionGroupImageIds()}flatImageIdIndexToTimePointIndex(e){return console.warn("Warning: flatImageIdIndexToTimePointIndex is deprecated. Please use flatImageIdIndexToDimensionGroupNumber instead."),this.flatImageIdIndexToDimensionGroupNumber(e)-1}flatImageIdIndexToDimensionGroupNumber(e){return Math.floor(e/this._imageIdGroups[0].length)+1}flatImageIdIndexToImageIdIndex(e){return e%this._imageIdGroups[0].length}get splittingTag(){return this._splittingTag}isTimePointLoaded(e){return console.warn("Warning: isTimePointLoaded is deprecated. Please use isDimensionGroupLoaded instead. Note that timePointIndex is zero-based while dimensionGroupNumber starts at 1."),this.isDimensionGroupLoaded(e+1)}isDimensionGroupLoaded(e){return this._loadedDimensionGroups.has(e)}markDimensionGroupAsLoaded(e){this._loadedDimensionGroups.add(e),nt(ze,qe.DYNAMIC_VOLUME_DIMENSION_GROUP_LOADED,{volumeId:this.volumeId,dimensionGroupNumber:e}),nt(ze,qe.DYNAMIC_VOLUME_TIME_POINT_LOADED,{volumeId:this.volumeId,timePointIndex:e-1})}checkTimePointCompletion(e){console.warn("Warning: checkTimePointCompletion is deprecated. Please use checkDimensionGroupCompletion instead."),this.checkDimensionGroupCompletion(e)}checkDimensionGroupCompletion(e){const r=this.flatImageIdIndexToDimensionGroupNumber(e);this._imageIdGroups[r-1].every(o=>{const a=this.getImageIdIndex(o);return this.cachedFrames[a]===Ia.FULL_RESOLUTION})&&!this.isDimensionGroupLoaded(r)&&this.markDimensionGroupAsLoaded(r)}}const Ug=new HE("imageRetrievalPool");Ug.setMaxSimultaneousRequests(gn.Interaction,200);Ug.setMaxSimultaneousRequests(gn.Thumbnail,200);Ug.setMaxSimultaneousRequests(gn.Prefetch,200);Ug.grabDelay=0;const F9=Symbol("DefaultSettings"),U9=Symbol("RuntimeSettings"),B9=Symbol("ObjectSettingsMap"),Zl=Symbol("Dictionary");class Rr{constructor(e){const r=Object.create(e instanceof Rr&&Zl in e?e[Zl]:null);Object.seal(Object.defineProperty(this,Zl,{value:r}))}set(e,r){return W5(this[Zl],e,r,null)}get(e){return yhe(this[Zl],e)}unset(e){return mhe(this[Zl],e+"")}forEach(e){G9(this[Zl],e)}extend(){return new Rr(this)}import(e){PU(e)&&Object.keys(e).forEach(r=>{W5(this[Zl],r,e[r],null)})}dump(){const e={};return G9(this[Zl],(r,n)=>{typeof n<"u"&&RU(e,r,n)}),e}static assert(e){return e instanceof Rr?e:Rr.getRuntimeSettings()}static getDefaultSettings(e=null){let r=Rr[F9];if(r instanceof Rr||(r=new Rr,Rr[F9]=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=Rr[U9];return e instanceof Rr||(e=new Rr(Rr.getDefaultSettings()),Rr[U9]=e),e}static getObjectSettings(e,r){let n=null;if(e instanceof Rr)n=e;else if(typeof e=="object"&&e!==null){let i=Rr[B9];i instanceof WeakMap||(i=new WeakMap,Rr[B9]=i),n=i.get(e),n instanceof Rr||(n=new Rr(Rr.assert(Rr.getObjectSettings(r))),i.set(e,n))}return n}static extendRuntimeSettings(){return Rr.getRuntimeSettings().extend()}}function mhe(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 G9(t,e){for(const r in t)e(r,t[r])}function vhe(t,e,r,n){let i;if(n.has(r))return W5(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}`;W5(t,a,r[o],n)||++i}return n.delete(r),i===0}function W5(t,e,r,n){return whe(e)?PU(r)?vhe(t,e,r,n instanceof WeakSet?n:new WeakSet):(t[e]=r,!0):!1}function yhe(t,e){return t[e]}function whe(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 PU(t){if(typeof t=="object"&&t!==null){const e=Object.getPrototypeOf(t);if(e===Object.prototype||e===null)return!0}return!1}function RU(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}RU(o,e.slice(n+1,e.length),r)}else t[e]=r}Rr.getDefaultSettings().set("useCursors",!0);function by(t,e){return t==null||e==null?NaN:te?1:t>=e?0:NaN}function xhe(t,e){return t==null||e==null?NaN:et?1:e>=t?0:NaN}function AU(t){let e,r,n;t.length!==2?(e=by,r=(s,c)=>by(t(s),c),n=(s,c)=>t(s)-c):(e=t===by||t===xhe?t:Che,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 Che(){return 0}function She(t){return t===null?NaN:+t}const The=AU(by),_he=The.right;AU(She).center;const Ehe=Math.sqrt(50),bhe=Math.sqrt(10),Dhe=Math.sqrt(2);function $5(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>=Ehe?10:o>=bhe?5:o>=Dhe?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 Phe(t){if(!(o=t.length))return[];for(var e=-1,r=Ohe(t,Rhe),n=new Array(r);++e>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):r===8?p2(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):r===4?p2(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=Nhe.exec(t))?new Ma(e[1],e[2],e[3],1):(e=khe.exec(t))?new Ma(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=Vhe.exec(t))?p2(e[1],e[2],e[3],e[4]):(e=Fhe.exec(t))?p2(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=Uhe.exec(t))?q9(e[1],e[2]/100,e[3]/100,1):(e=Bhe.exec(t))?q9(e[1],e[2]/100,e[3]/100,e[4]):$9.hasOwnProperty(t)?H9($9[t]):t==="transparent"?new Ma(NaN,NaN,NaN,0):null}function H9(t){return new Ma(t>>16&255,t>>8&255,t&255,1)}function p2(t,e,r,n){return n<=0&&(t=e=r=NaN),new Ma(t,e,r,n)}function $he(t){return t instanceof cv||(t=mm(t)),t?(t=t.rgb(),new Ma(t.r,t.g,t.b,t.opacity)):new Ma}function qT(t,e,r,n){return arguments.length===1?$he(t):new Ma(t,e,r,n??1)}function Ma(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}N8(Ma,qT,LU(cv,{brighter(t){return t=t==null?z5:Math.pow(z5,t),new Ma(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?gm:Math.pow(gm,t),new Ma(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new Ma(Hd(this.r),Hd(this.g),Hd(this.b),j5(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:K9,formatHex:K9,formatHex8:zhe,formatRgb:X9,toString:X9}));function K9(){return`#${Nd(this.r)}${Nd(this.g)}${Nd(this.b)}`}function zhe(){return`#${Nd(this.r)}${Nd(this.g)}${Nd(this.b)}${Nd((isNaN(this.opacity)?1:this.opacity)*255)}`}function X9(){const t=j5(this.opacity);return`${t===1?"rgb(":"rgba("}${Hd(this.r)}, ${Hd(this.g)}, ${Hd(this.b)}${t===1?")":`, ${t})`}`}function j5(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Hd(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Nd(t){return t=Hd(t),(t<16?"0":"")+t.toString(16)}function q9(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new xc(t,e,r,n)}function NU(t){if(t instanceof xc)return new xc(t.h,t.s,t.l,t.opacity);if(t instanceof cv||(t=mm(t)),!t)return new xc;if(t instanceof xc)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 xc(a,s,c,t.opacity)}function jhe(t,e,r,n){return arguments.length===1?NU(t):new xc(t,e,r,n??1)}function xc(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}N8(xc,jhe,LU(cv,{brighter(t){return t=t==null?z5:Math.pow(z5,t),new xc(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?gm:Math.pow(gm,t),new xc(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 Ma(f3(t>=240?t-240:t+120,i,n),f3(t,i,n),f3(t<120?t+240:t-120,i,n),this.opacity)},clamp(){return new xc(Y9(this.h),m2(this.s),m2(this.l),j5(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=j5(this.opacity);return`${t===1?"hsl(":"hsla("}${Y9(this.h)}, ${m2(this.s)*100}%, ${m2(this.l)*100}%${t===1?")":`, ${t})`}`}}));function Y9(t){return t=(t||0)%360,t<0?t+360:t}function m2(t){return Math.max(0,Math.min(1,t||0))}function f3(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 Hhe(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 d3(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 Khe(t,e){return function(r){return t+r*e}}function Xhe(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 qhe(t){return(t=+t)==1?kU:function(e,r){return r-e?Xhe(e,r,t):k8(isNaN(e)?r:e)}}function kU(t,e){var r=e-t;return r?Khe(t,r):k8(isNaN(t)?e:t)}const J9=function t(e){var r=qhe(e);function n(i,o){var a=r((i=qT(i)).r,(o=qT(o)).r),s=r(i.g,o.g),c=r(i.b,o.b),l=kU(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 Yhe(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:H5(n,i)})),r=h3.lastIndex;return re&&(r=t,t=e,e=r),function(n){return Math.max(t,Math.min(e,n))}}function cge(t,e,r){var n=t[0],i=t[1],o=e[0],a=e[1];return i2?lge:cge,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),H5)))(d)))},u.domain=function(d){return arguments.length?(t=Array.from(d,age),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=ige,f()},u.clamp=function(d){return arguments.length?(a=d?!0:fh,f()):a!==fh},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 dge(){return fge()(fh,fh)}function hge(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function K5(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 gg(t){return t=K5(Math.abs(t)),t?t[1]:NaN}function gge(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 pge(t){return function(e){return e.replace(/[0-9]/g,function(r){return t[+r]})}}var mge=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function X5(t){if(!(e=mge.exec(t)))throw new Error("invalid format: "+t);var e;return new F8({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]})}X5.prototype=F8.prototype;function F8(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+""}F8.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 vge(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 VU;function yge(t,e){var r=K5(t,e);if(!r)return t+"";var n=r[0],i=r[1],o=i-(VU=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")+K5(t,Math.max(0,e+o-1))[0]}function Q9(t,e){var r=K5(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 e7={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:hge,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)=>Q9(t*100,e),r:Q9,s:yge,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function t7(t){return t}var n7=Array.prototype.map,r7=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function wge(t){var e=t.grouping===void 0||t.thousands===void 0?t7:gge(n7.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?t7:pge(n7.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=X5(u);var d=u.fill,h=u.align,g=u.sign,p=u.symbol,v=u.zero,y=u.width,m=u.comma,w=u.precision,x=u.trim,C=u.type;C==="n"?(m=!0,C="g"):e7[C]||(w===void 0&&(w=12),x=!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:"",_=e7[C],E=/[defgprs%]/.test(C);w=w===void 0?6:/[gprs]/.test(C)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function b(D){var I=S,P=T,M,L,B;if(C==="c")P=_(D)+P,D="";else{D=+D;var j=D<0||1/D<0;if(D=isNaN(D)?c:_(Math.abs(D),w),x&&(D=vge(D)),j&&+D==0&&g!=="+"&&(j=!1),I=(j?g==="("?g:s:g==="-"||g==="("?"":g)+I,P=(C==="s"?r7[8+VU/3]:"")+P+(j&&g==="("?")":""),E){for(M=-1,L=D.length;++MB||B>57){P=(B===46?i+D.slice(M+1):D.slice(M))+P,D=D.slice(0,M);break}}}m&&!v&&(D=e(D,1/0));var V=I.length+D.length+P.length,F=V>1)+I+D+P+F.slice(V);break;default:D=F+I+D+P;break}return o(D)}return b.toString=function(){return u+""},b}function f(u,d){var h=l((u=X5(u),u.type="f",u)),g=Math.max(-8,Math.min(8,Math.floor(gg(d)/3)))*3,p=Math.pow(10,-g),v=r7[8+g/3];return function(y){return h(p*y)+v}}return{format:l,formatPrefix:f}}var v2,FU,UU;xge({thousands:",",grouping:[3],currency:["$",""]});function xge(t){return v2=wge(t),FU=v2.format,UU=v2.formatPrefix,v2}function Cge(t){return Math.max(0,-gg(Math.abs(t)))}function Sge(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(gg(e)/3)))*3-gg(Math.abs(t)))}function Tge(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,gg(e)-gg(t))+1}function _ge(t,e,r,n){var i=Mhe(t,e,r),o;switch(n=X5(n??",f"),n.type){case"s":{var a=Math.max(Math.abs(t),Math.abs(e));return n.precision==null&&!isNaN(o=Sge(i,a))&&(n.precision=o),UU(n,a)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(o=Tge(i,Math.max(Math.abs(t),Math.abs(e))))&&(n.precision=o-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(o=Cge(i))&&(n.precision=o-(n.type==="%")*2);break}}return FU(n)}function Ege(t){var e=t.domain;return t.ticks=function(r){var n=e();return Ihe(n[0],n[n.length-1],r??10)},t.tickFormat=function(r,n){var i=e();return _ge(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=XT(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 U8(){var t=dge();return t.copy=function(){return uge(t,U8())},Ahe.apply(t,arguments),Ege(t)}function bge(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 Dge=(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),y[_]?S+=y[_]*a[T]:C-=a[T],x+=1}u[m+w]=S/C}y=[...u];for(let m=0;m2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Ige,r),Q.obj(t,e),Q.algo(t,e,6,0),Q.get(t,e,["canvas","image","jsImageData","imageLoaded","resizable"]),Q.setGet(t,e,["repeat","edgeClamp","interpolate","mipLevel"]),bge(t,e)}const Mge=Q.newInstance(BU,"vtkTexture"),Oge={generateMipmaps:Dge};var C0={newInstance:Mge,extend:BU,...Oge};const Pge=[[-1,0,0],[1,0,0],[0,-1,0],[0,1,0],[0,0,-1],[0,0,1]],i7=[[8,7,11,3],[9,1,10,5],[4,9,0,8],[2,11,6,10],[0,3,2,1],[4,5,6,7]],y2=[[0,1],[1,3],[2,3],[0,2],[4,5],[5,7],[6,7],[4,6],[0,4],[1,5],[3,7],[2,6]],o7=[0,1,0,1,0,1,0,1,2,2,2,2],Yr=[[1,2],[1,2],[0,2],[0,2],[0,1],[0,1]],yn=new Float64Array(3),w2=new Float64Array(3),ur=new Float64Array(3),bd=new Float64Array(3),fd=new Float64Array(3),x2=new Float64Array(3),g3=new Float64Array(16);function p3(t,e){t.strokeStyle=e.strokeColor,t.lineWidth=e.strokeSize,t.fillStyle=e.fontColor,t.font=`${e.fontStyle} ${e.fontSize}px ${e.fontFamily}`}function GU(t){const e=[],r=[];for(let n=0;n<3;n++){const i=U8().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 Rge(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;yn[0]=f[n*3],yn[1]=f[n*3+1],yn[2]=f[n*3+2],Gt(ur,yn,i),ur[0]+=.1,Gt(w2,ur,o),pn(fd,w2,yn),ur[0]-=.1,ur[1]+=.1,Gt(w2,ur,o),pn(x2,w2,yn);for(let g=0;g<3;g++)fd[g]/=.5*.1*u[0],x2[g]/=.5*.1*u[1];let d=c.ptIdx,h=c.cellIdx;yn[0]=f[n*3],yn[1]=f[n*3+1],yn[2]=f[n*3+2],a[0]<-.5?Er(ur,fd,a[0]*s-l.width):a[0]>.5?Er(ur,fd,a[0]*s):Er(ur,fd,a[0]*s-l.width/2),Kr(yn,yn,ur),Er(ur,x2,a[1]*s-l.height/2),Kr(yn,yn,ur),c.points[d*3]=yn[0],c.points[d*3+1]=yn[1],c.points[d*3+2]=yn[2],c.tcoords[d*2]=l.tcoords[0],c.tcoords[d*2+1]=l.tcoords[1],d++,Er(ur,fd,l.width),Kr(yn,yn,ur),c.points[d*3]=yn[0],c.points[d*3+1]=yn[1],c.points[d*3+2]=yn[2],c.tcoords[d*2]=l.tcoords[2],c.tcoords[d*2+1]=l.tcoords[3],d++,Er(ur,x2,l.height),Kr(yn,yn,ur),c.points[d*3]=yn[0],c.points[d*3+1]=yn[1],c.points[d*3+2]=yn[2],c.tcoords[d*2]=l.tcoords[4],c.tcoords[d*2+1]=l.tcoords[5],d++,Er(ur,fd,l.width),pn(yn,yn,ur),c.points[d*3]=yn[0],c.points[d*3+1]=yn[1],c.points[d*3+2]=yn[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);Mn(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);ei(g3,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 Age=Q.newInstance(function(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{renderable:null};Object.assign(e,{},r),Q.obj(t,e),e.tmPolyData=Dr.newInstance(),e.tmMapper=Xo.newInstance(),e.tmMapper.setInputData(e.tmPolyData),e.tmActor=os.newInstance({parentProp:t}),e.tmActor.setMapper(e.tmMapper),Q.setGet(t,e,["renderable"]),Q.get(t,e,["lastSize","lastAspectRatio","axisTextStyle","tickTextStyle","tmActor","ticks"]),e.forceUpdate=!1,e.lastRedrawTime={},Q.obj(e.lastRedrawTime,{mtime:0}),e.lastRebuildTime={},Q.obj(e.lastRebuildTime,{mtime:0}),e.lastSize=[-1,-1],e.lastTickBounds=[],Rge(t,e)},"vtkCubeAxesActorHelper");function Lge(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();Mn(n,n);let i=!1;const o=ar.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]&&(yn[l]=e.dataBounds[s]-.1*o*Pge[s][l],yn[f]=.5*(e.dataBounds[f*2]+e.dataBounds[f*2+1]),yn[u]=.5*(e.dataBounds[u*2]+e.dataBounds[u*2+1]),Gt(ur,yn,n),yn[l]=e.dataBounds[s],Gt(bd,yn,n),pn(ur,bd,ur),en(ur,ur),c=ur[2]>a,e.camera.getParallelProjection()||(en(bd,bd),c=pt(bd,ur)>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[Yr[h][0]].length*2+o[Yr[h][1]].length*2,s+=o[Yr[h][0]].length+o[Yr[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]=y2[h][0],f[d*3+2]=y2[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[Yr[h][0]];for(let v=0;v{let s=0;for(let h=0;h<12;h++)i[h]===1&&(s+=2,s+=o[o7[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=i7[h][g];if(i[p]===1){const v=o7[p],y=y2[p][0]*3,m=y2[p][1]*3;l[f*3]=.5*(c[y]+c[m]),l[f*3+1]=.5*(c[y+1]+c[m+1]),l[f*3+2]=.5*(c[y+2]+c[m+2]),f++;const w=Math.floor(h/2);l[f*3+w]=e.dataBounds[h],l[f*3+Yr[h][0]]=.5*(e.dataBounds[Yr[h][0]*2]+e.dataBounds[Yr[h][0]*2+1]),l[f*3+Yr[h][1]]=.5*(e.dataBounds[Yr[h][1]*2]+e.dataBounds[Yr[h][1]*2+1]),f++,e.textValues[u]=e.axisLabels[v],u++;const x=(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[i7[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])){p3(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)=>{p3(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(),ar.setBounds(e.bounds,e.gridActor.getBounds()),ar.scaleAboutCenter(e.bounds,e.boundsScaleFactor,e.boundsScaleFactor,e.boundsScaleFactor),e.bounds);const r=Q.chain(t.setProperty,e.gridActor.setProperty);t.setProperty=n=>r(n)[0]}function Nge(t,e,r){return{boundsScaleFactor:1.3,camera:null,dataBounds:[...ar.INIT_BOUNDS],faceVisibilityAngle:8,gridLines:!0,axisLabels:null,axisTitlePixelOffset:35,tickLabelPixelOffset:12,generateTicks:GU,...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 WU(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};os.extend(t,e,Nge(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=C0.newInstance({resizable:!0}),e.tmTexture.setInterpolate(!1),t.getProperty().setDiffuse(0),t.getProperty().setAmbient(1),e.gridMapper=Xo.newInstance(),e.polyData=Dr.newInstance(),e.gridMapper.setInputData(e.polyData),e.gridActor=os.newInstance(),e.gridActor.setMapper(e.gridMapper),e.gridActor.setProperty(t.getProperty()),e.gridActor.setParentProp(t),e.textPolyData=Dr.newInstance(),Q.setGet(t,e,["axisTitlePixelOffset","boundsScaleFactor","faceVisibilityAngle","gridLines","tickLabelPixelOffset","generateTicks"]),Q.setGetArray(t,e,["dataBounds"],6),Q.setGetArray(t,e,["axisLabels"],3),Q.get(t,e,["axisTextStyle","tickTextStyle","camera","tmTexture","textValues","textPolyData","tickCounts","gridActor"]),Lge(t,e)}const kge=Q.newInstance(WU,"vtkCubeAxesActor");var $U={newInstance:kge,extend:WU,newCubeAxesActorHelper:Age,defaultGenerateTicks:GU};function Vge(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 Fge={};function Uge(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Fge,r),gr.extend(t,e,r),e.CubeAxesActorHelper=$U.newCubeAxesActorHelper(),Vge(t,e)}const Bge=jn(Uge,"vtkOpenGLCubeAxesActor");Ri("vtkCubeAxesActor",Bge);const{ColorMode:Gge,ScalarMode:dd,GetArray:m3}=qw;function Wge(t,e){e.classHierarchy.push("vtkMapper2D"),t.createDefaultLookupTable=()=>{e.lookupTable=O5.newInstance()},t.getColorModeAsString=()=>Q.enumToString(Gge,e.colorMode),t.setColorModeToDefault=()=>t.setColorMode(0),t.setColorModeToMapScalars=()=>t.setColorMode(1),t.setColorModeToDirectScalars=()=>t.setColorMode(2),t.getScalarModeAsString=()=>Q.enumToString(dd,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===dd.DEFAULT)s=r.getPointData().getScalars(),s||(s=r.getCellData().getScalars(),c=!0);else if(n===dd.USE_POINT_DATA)s=r.getPointData().getScalars();else if(n===dd.USE_CELL_DATA)s=r.getCellData().getScalars(),c=!0;else if(n===dd.USE_POINT_FIELD_DATA){const l=r.getPointData();i===m3.BY_ID?s=l.getArrayByIndex(o):s=l.getArrayByName(a)}else if(n===dd.USE_CELL_FIELD_DATA){const l=r.getCellData();c=!0,i===m3.BY_ID?s=l.getArrayByIndex(o):s=l.getArrayByName(a)}else if(n===dd.USE_FIELD_DATA){const l=r.getFieldData();i===m3.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 $ge={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 zU(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,$ge,r),mV.extend(t,e,r),Q.get(t,e,["colorMapColors"]),Q.setGet(t,e,["arrayAccessMode","colorByArrayName","colorMode","lookupTable","renderTime","scalarMode","scalarVisibility","static","transformCoordinate","useLookupTableScalarRange","viewSpecificProperties","customShaderAttributes"]),Q.setGetArray(t,e,["scalarRange"],2),e.viewSpecificProperties||(e.viewSpecificProperties={}),Wge(t,e)}const zge=Q.newInstance(zU,"vtkMapper2D");var jge={newInstance:zge,extend:zU},Hge=`//VTK::System::Dec +`}function _(P){return P[P.length-1]===` +`?P.slice(0,-1):P}function E(P,k){if(P===""||P[0]===" ")return P;for(var G,j,F=/ [^ ]/g,U=0,W=0,J=0,te="";G=F.exec(P);)(J=G.index)-U>k&&(j=W>U?W:J,te+=` +`+P.slice(U,j),U=j+1),W=J;return te+=` +`,P.length-U>k&&W>U?te+=P.slice(U,W)+` +`+P.slice(W+1):te+=P.slice(U),te.slice(1)}function b(P,k,G){var j,F,U,W,J,te;for(U=0,W=(F=G?P.explicitTypes:P.implicitTypes).length;U tag resolver accepts not "'+te+'" style');j=J.represent[te](k,te)}P.dump=j}return!0}return!1}function D(P,k,G,j,F,U){P.tag=null,P.dump=G,b(P,G,!1)||b(P,G,!0);var W=l.call(P.dump);j&&(j=P.flowLevel<0||P.flowLevel>k);var J,te,le=W==="[object Object]"||W==="[object Array]";if(le&&(te=(J=P.duplicates.indexOf(G))!==-1),(P.tag!==null&&P.tag!=="?"||te||P.indent!==2&&k>0)&&(F=!1),te&&P.usedDuplicates[J])P.dump="*ref_"+J;else{if(le&&te&&!P.usedDuplicates[J]&&(P.usedDuplicates[J]=!0),W==="[object Object]")j&&Object.keys(P.dump).length!==0?(function(pe,ye,Ie,Le){var be,$,R,X,K,Z,ie="",oe=pe.tag,Te=Object.keys(Ie);if(pe.sortKeys===!0)Te.sort();else if(typeof pe.sortKeys=="function")Te.sort(pe.sortKeys);else if(pe.sortKeys)throw new a("sortKeys must be a boolean or a function");for(be=0,$=Te.length;be<$;be+=1)Z="",Le&&be===0||(Z+=v(pe,ye)),X=Ie[R=Te[be]],D(pe,ye+1,R,!0,!0,!0)&&((K=pe.tag!==null&&pe.tag!=="?"||pe.dump&&pe.dump.length>1024)&&(pe.dump&&pe.dump.charCodeAt(0)===10?Z+="?":Z+="? "),Z+=pe.dump,K&&(Z+=v(pe,ye)),D(pe,ye+1,X,!0,K)&&(pe.dump&&pe.dump.charCodeAt(0)===10?Z+=":":Z+=": ",ie+=Z+=pe.dump));pe.tag=oe,pe.dump=ie||"{}"}(P,k,P.dump,F),te&&(P.dump="&ref_"+J+P.dump)):(function(pe,ye,Ie){var Le,be,$,R,X,K="",Z=pe.tag,ie=Object.keys(Ie);for(Le=0,be=ie.length;Le1024&&(X+="? "),X+=pe.dump+(pe.condenseFlow?'"':"")+":"+(pe.condenseFlow?"":" "),D(pe,ye,R,!1,!1)&&(K+=X+=pe.dump));pe.tag=Z,pe.dump="{"+K+"}"}(P,k,P.dump),te&&(P.dump="&ref_"+J+" "+P.dump));else if(W==="[object Array]"){var ve=P.noArrayIndent&&k>0?k-1:k;j&&P.dump.length!==0?(function(pe,ye,Ie,Le){var be,$,R="",X=pe.tag;for(be=0,$=Ie.length;be<$;be+=1)D(pe,ye+1,Ie[be],!0,!0)&&(Le&&be===0||(R+=v(pe,ye)),pe.dump&&pe.dump.charCodeAt(0)===10?R+="-":R+="- ",R+=pe.dump);pe.tag=X,pe.dump=R||"[]"}(P,ve,P.dump,F),te&&(P.dump="&ref_"+J+P.dump)):(function(pe,ye,Ie){var Le,be,$="",R=pe.tag;for(Le=0,be=Ie.length;Le "+P.dump)}return!0}function O(P,k){var G,j,F=[],U=[];for(function W(J,te,le){var ve,pe,ye;if(J!==null&&typeof J=="object")if((pe=te.indexOf(J))!==-1)le.indexOf(pe)===-1&&le.push(pe);else if(te.push(J),Array.isArray(J))for(pe=0,ye=J.length;pe=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,b=T.call(C),D=[];try{for(;(S===void 0||S-- >0)&&!(_=b.next()).done;)D.push(_.value)}catch(O){E={error:O}}finally{try{_&&!_.done&&(T=b.return)&&T.call(b)}finally{if(E)throw E.error}}return D};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),y=i(305),m=i(306),w=i(307),x=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 w.YAMLCBWriter(E._options):E._writer=new y.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 b,D;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(b){return this.emit("error",b),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,b=u.fragment().set(this._options);try{b.import(T)}catch(P){return this.emit("error",P),this}try{for(var D=s(b.node.childNodes),O=D.next();!O.done;O=D.next()){var L=O.value;this._fromNode(L)}}catch(P){_={error:P}}finally{try{O&&!O.done&&(E=D.return)&&E.call(D)}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="",b=!1,D=this._prefixMap.copy(),O={},L=this._recordNamespaceInformation(_,D,O),P=this._openTags.length===0?null:this._openTags[this._openTags.length-1][1],k=_.namespaceURI;if(k===null&&(k=P),P===k)L!==null&&(b=!0),E=k===h.namespace.XML?"xml:"+_.localName:_.localName,this._writer.beginElement(E),this._push(this._writer.openTagBegin(E));else{var G=_.prefix,j=null;if(G===null&&k===L||(j=D.get(G,k)),G==="xmlns"){if(this._options.wellFormed)return void this.emit("error",new Error("An element cannot have the 'xmlns' prefix (well-formed required)."));j=G}j!==null?(E=j+":"+_.localName,L!==null&&L!==h.namespace.XML&&(P=L||null),this._writer.beginElement(E),this._push(this._writer.openTagBegin(E))):G!==null?(G in O&&(G=this._generatePrefix(k,D,this._prefixIndex)),D.set(G,k),E+=G+":"+_.localName,this._writer.beginElement(E),this._push(this._writer.openTagBegin(E)),this._push(this._writer.attribute("xmlns:"+G,this._serializeAttributeValue(k,this._options.wellFormed))),L!==null&&(P=L||null)):L===null||L!==null&&L!==k?(b=!0,E+=_.localName,P=k,this._writer.beginElement(E),this._push(this._writer.openTagBegin(E)),this._push(this._writer.attribute("xmlns",this._serializeAttributeValue(k,this._options.wellFormed)))):(E+=_.localName,P=k,this._writer.beginElement(E),this._push(this._writer.openTagBegin(E)))}this._serializeAttributes(_,D,this._prefixIndex,O,b,this._options.wellFormed);var F=k===h.namespace.HTML;F&&!T&&S._VoidElementNames.has(_.localName)?(this._push(this._writer.openTagEnd(E,!0,!0)),this._writer.endElement(E)):F||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,P,this._prefixMap,T]),this._isPrefixMapModified(this._prefixMap,D)&&(this._prefixMap=D),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],b=(_[1],_[2]),D=_[3];this._prefixMap=b,D&&(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,b,D;if(v.Guard.isElementNode(T)){var O=T.prefix?T.prefix+":"+T.localName:T.localName;T.namespaceURI!==null?this.ele(T.namespaceURI,O):this.ele(O);try{for(var L=s(T.attributes),P=L.next();!P.done;P=L.next()){var k=P.value,G=k.prefix?k.prefix+":"+k.localName:k.localName;k.namespaceURI!==null?this.att(k.namespaceURI,G,k.value):this.att(G,k.value)}}catch(W){_={error:W}}finally{try{P&&!P.done&&(E=L.return)&&E.call(L)}finally{if(_)throw _.error}}try{for(var j=s(T.childNodes),F=j.next();!F.done;F=j.next()){var U=F.value;this._fromNode(U)}}catch(W){b={error:W}}finally{try{F&&!F.done&&(D=j.return)&&D.call(j)}finally{if(b)throw b.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,b,D,O){var L,P,k=O?new p.LocalNameSet:void 0;try{for(var G=s(T.attributes),j=G.next();!j.done;j=G.next()){var F=j.value;if(O||D||F.namespaceURI!==null){if(O&&k&&k.has(F.namespaceURI,F.localName))return void this.emit("error",new Error("Element contains duplicate attributes (well-formed required)."));O&&k&&k.set(F.namespaceURI,F.localName);var U=F.namespaceURI,W=null;if(U!==null)if(W=_.get(F.prefix,U),U===h.namespace.XMLNS){if(F.value===h.namespace.XML||F.prefix===null&&D||F.prefix!==null&&(!(F.localName in b)||b[F.localName]!==F.value)&&_.has(F.localName,F.value))continue;if(O&&F.value===h.namespace.XMLNS)return void this.emit("error",new Error("XMLNS namespace is reserved (well-formed required)."));if(O&&F.value==="")return void this.emit("error",new Error("Namespace prefix declarations cannot be used to undeclare a namespace (well-formed required)."));F.prefix==="xmlns"&&(W="xmlns")}else W===null&&(W=F.prefix===null||_.hasPrefix(F.prefix)&&!_.has(F.prefix,U)?this._generatePrefix(U,_,E):F.prefix,this._push(this._writer.attribute("xmlns:"+W,this._serializeAttributeValue(U,this._options.wellFormed))));if(O&&(F.localName.indexOf(":")!==-1||!d.xml_isName(F.localName)||F.localName==="xmlns"&&U===null))return void this.emit("error",new Error("Attribute local name contains invalid characters (well-formed required)."));this._push(this._writer.attribute((W!==null?W+":":"")+F.localName,this._serializeAttributeValue(F.value,this._options.wellFormed)))}else this._push(this._writer.attribute(F.localName,this._serializeAttributeValue(F.value,this._options.wellFormed)))}}catch(J){L={error:J}}finally{try{j&&!j.done&&(P=G.return)&&P.call(G)}finally{if(L)throw L.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 b,D,O=null;try{for(var L=s(T.attributes),P=L.next();!P.done;P=L.next()){var k=P.value,G=k.namespaceURI,j=k.prefix;if(G===h.namespace.XMLNS){if(j===null){O=k.value;continue}var F=k.localName,U=k.value;if(U===h.namespace.XML||(U===""&&(U=null),_.has(F,U)))continue;_.set(F,U),E[F]=U||""}}}catch(W){b={error:W}}finally{try{P&&!P.done&&(D=L.return)&&D.call(L)}finally{if(b)throw b.error}}return O},S.prototype._generatePrefix=function(T,_,E){var b="ns"+E.value;return E.value++,_.set(b,T),b},S.prototype._isPrefixMapModified=function(T,_){var E=T._items,b=_._items,D=T._nullItems,O=_._nullItems;for(var L in b){var P=E[L];if(P===void 0)return!0;var k=b[L];if(P.length!==k.length)return!0;for(var G=0;G':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(w,x,C){return Function.prototype.apply.call(w,x,C)};o=a&&typeof a.ownKeys=="function"?a.ownKeys:Object.getOwnPropertySymbols?function(w){return Object.getOwnPropertyNames(w).concat(Object.getOwnPropertySymbols(w))}:function(w){return Object.getOwnPropertyNames(w)};var c=Number.isNaN||function(w){return w!=w};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(w){if(typeof w!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof w)}function d(w){return w._maxListeners===void 0?l.defaultMaxListeners:w._maxListeners}function h(w,x,C,S){var T,_,E,b;if(u(C),(_=w._events)===void 0?(_=w._events=Object.create(null),w._eventsCount=0):(_.newListener!==void 0&&(w.emit("newListener",x,C.listener?C.listener:C),_=w._events),E=_[x]),E===void 0)E=_[x]=C,++w._eventsCount;else if(typeof E=="function"?E=_[x]=S?[C,E]:[E,C]:S?E.unshift(C):E.push(C),(T=d(w))>0&&E.length>T&&!E.warned){E.warned=!0;var D=new Error("Possible EventEmitter memory leak detected. "+E.length+" "+String(x)+" listeners added. Use emitter.setMaxListeners() to increase limit");D.name="MaxListenersExceededWarning",D.emitter=w,D.type=x,D.count=E.length,b=D,console&&console.warn&&console.warn(b)}return w}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(w,x,C){var S={fired:!1,wrapFn:void 0,target:w,type:x,listener:C},T=g.bind(S);return T.listener=C,S.wrapFn=T,T}function v(w,x,C){var S=w._events;if(S===void 0)return[];var T=S[x];return T===void 0?[]:typeof T=="function"?C?[T.listener||T]:[T]:C?function(_){for(var E=new Array(_.length),b=0;b0&&(_=x[0]),_ instanceof Error)throw _;var E=new Error("Unhandled error."+(_?" ("+_.message+")":""));throw E.context=_,E}var b=T[w];if(b===void 0)return!1;if(typeof b=="function")s(b,this,x);else{var D=b.length,O=m(b,D);for(C=0;C=0;_--)if(C[_]===x||C[_].listener===x){E=C[_].listener,T=_;break}if(T<0)return this;T===0?C.shift():function(b,D){for(;D+1=0;S--)this.removeListener(w,x[S]);return this},l.prototype.listeners=function(w){return v(this,w,!0)},l.prototype.rawListeners=function(w){return v(this,w,!1)},l.listenerCount=function(w,x){return typeof w.listenerCount=="function"?w.listenerCount(x):y.call(w,x)},l.prototype.listenerCount=y,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)}}])})})(uV);var nue=uV.exports,za=Uint8Array,dd=Uint16Array,fV=Uint32Array,dV=new za([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]),hV=new za([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]),rue=new za([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),gV=function(t,e){for(var r=new dd(31),n=0;n<31;++n)r[n]=e+=1<>>1|(Rr&21845)<<1;bu=(bu&52428)>>>2|(bu&13107)<<2,bu=(bu&61680)>>>4|(bu&3855)<<4,FS[Rr]=((bu&65280)>>>8|(bu&255)<<8)>>>1}var Op=function(t,e,r){for(var n=t.length,i=0,o=new dd(e);i>>c]=l}else for(s=new dd(n),i=0;i>>15-t[i]);return s},S1=new za(288);for(var Rr=0;Rr<144;++Rr)S1[Rr]=8;for(var Rr=144;Rr<256;++Rr)S1[Rr]=9;for(var Rr=256;Rr<280;++Rr)S1[Rr]=7;for(var Rr=280;Rr<288;++Rr)S1[Rr]=8;var vV=new za(32);for(var Rr=0;Rr<32;++Rr)vV[Rr]=5;var sue=Op(S1,9,1),cue=Op(vV,5,1),gC=function(t){for(var e=t[0],r=1;re&&(e=t[r]);return e},qs=function(t,e,r){var n=e/8|0;return(t[n]|t[n+1]<<8)>>(e&7)&r},pC=function(t,e){var r=e/8|0;return(t[r]|t[r+1]<<8|t[r+2]<<16)>>(e&7)},lue=function(t){return(t+7)/8|0},uue=function(t,e,r){(r==null||r>t.length)&&(r=t.length);var n=new(t.BYTES_PER_ELEMENT==2?dd:t.BYTES_PER_ELEMENT==4?fV:za)(r-e);return n.set(t.subarray(e,r)),n},fue=["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(t,e,r){var n=new Error(e||fue[t]);if(n.code=t,Error.captureStackTrace&&Error.captureStackTrace(n,rc),!r)throw n;return n},mE=function(t,e,r){var n=t.length;if(!n||r&&r.f&&!r.l)return e||new za(0);var i=!e||r,o=!r||r.i;r||(r={}),e||(e=new za(n*3));var a=function(ye){var Ie=e.length;if(ye>Ie){var Le=new za(Math.max(Ie*2,ye));Le.set(e),e=Le}},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=qs(t,c,1);var p=qs(t,c+1,3);if(c+=3,p)if(p==1)f=sue,u=cue,d=9,h=5;else if(p==2){var w=qs(t,c,31)+257,x=qs(t,c+10,15)+4,C=w+qs(t,c+5,31)+1;c+=14;for(var S=new za(C),T=new za(19),_=0;_>>4;if(v<16)S[_++]=v;else{var L=0,P=0;for(v==16?(P=3+qs(t,c,3),c+=2,L=S[_-1]):v==17?(P=3+qs(t,c,7),c+=3):v==18&&(P=11+qs(t,c,127),c+=7);P--;)S[_++]=L}}var k=S.subarray(0,w),G=S.subarray(w);d=gC(k),h=gC(G),f=Op(k,d,1),u=Op(G,h,1)}else rc(1);else{var v=lue(c)+4,y=t[v-4]|t[v-3]<<8,m=v+y;if(m>n){o&&rc(0);break}i&&a(l+y),e.set(t.subarray(v,m),l),r.b=l+=y,r.p=c=m*8,r.f=s;continue}if(c>g){o&&rc(0);break}}i&&a(l+131072);for(var j=(1<>>4;if(c+=L&15,c>g){o&&rc(0);break}if(L||rc(2),W<256)e[l++]=W;else if(W==256){U=c,f=null;break}else{var J=W-254;if(W>264){var _=W-257,te=dV[_];J=qs(t,c,(1<>>4;le||rc(3),c+=le&15;var G=aue[ve];if(ve>3){var te=hV[ve];G+=pC(t,c)&(1<g){o&&rc(0);break}i&&a(l+131072);for(var pe=l+J;l>3&1)+(e>>4&1);n>0;n-=!t[r++]);return r+(e&2)},gue=function(t){var e=t.length;return(t[e-4]|t[e-3]<<8|t[e-2]<<16|t[e-1]<<24)>>>0},pue=function(t){((t[0]&15)!=8||t[0]>>>4>7||(t[0]<<8|t[1])%31)&&rc(6,"invalid zlib data"),t[1]&32&&rc(6,"invalid zlib data: preset dictionaries not supported")};function mue(t,e){return mE(t,e)}function vue(t,e){return mE(t.subarray(hue(t),-8),new za(gue(t)))}function yue(t,e){return mE((pue(t),t.subarray(2,-4)),e)}function wue(t,e){return t[0]==31&&t[1]==139&&t[2]==8?vue(t):(t[0]&15)!=8||t[0]>>4>7||(t[0]<<8|t[1])%31?mue(t,e):yue(t,e)}var xue=typeof TextDecoder<"u"&&new TextDecoder,Cue=0;try{xue.decode(due,{stream:!0}),Cue=1}catch{}const Ba=[];Ba[45]=62;Ba[95]=63;const L0="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(let t=0;t>16&255,n[f++]=l>>8&255,n[f++]=l&255}switch(a){case 3:for(;!zc(t[c]);)c++;for(l=Ba[t.charCodeAt(c++)]<<10;!zc(t[c]);)c++;for(l|=Ba[t.charCodeAt(c++)]<<4;!zc(t[c]);)c++;l|=Ba[t.charCodeAt(c++)]>>2,n[f++]=l>>8&255,n[f++]=l&255;break;case 2:for(;!zc(t[c]);)c++;for(l=Ba[t.charCodeAt(c++)]<<2;!zc(t[c]);)c++;l|=Ba[t.charCodeAt(c++)]>>4,n[f++]=l&255;break;case 1:throw new Error("BASE64: remain 1 should not happen")}return f}function _ue(t){const e=Sue(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]+L0[n>>12&63]+L0[n>>6&63]+L0[n&63]}function Eue(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=w9(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 vE={toArrayBuffer:_ue,fromArrayBuffer:Eue};function bue(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=()=>wV({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 Due={name:"",numberOfComponents:1,size:0,dataType:"string"};function yV(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(Object.assign(e,Due,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),Q.obj(t,e),Q.set(t,e,["name"]),bue(t,e)}const wV=Q.newInstance(yV,"vtkStringArray");var Iue={newInstance:wV,extend:yV};function Oue(t,e){return[...t.getElementsByTagName(e)]}function x9(t,e){return Oue(t,e)[0]}function Mue(t){return nue.create(t)}function Pue(t){const e=/^\s*\s*_/m,r=/\n\s*<\/AppendedData>/m;return bm.extractBinary(t,e,r)}const Xu={Int8:Int8Array,UInt8:Uint8Array,Int16:Int16Array,UInt16:Uint16Array,Int32:Int32Array,UInt32:Uint32Array,Int64:Int32Array,UInt64:Uint32Array,Float32:Float32Array,Float64:Float64Array},Dm={Int8:1,UInt8:1,Int16:2,UInt16:2,Int32:4,UInt32:4,Int64:8,UInt64:8,Float32:4,Float64:8};function US(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=Lue(r);for(;l{d.trim().length&&(f[u++]=Number(d))})}else if(c==="binary"){const u=new Uint8Array(vE.toArrayBuffer(e.firstChild.nodeValue.trim()));if(r==="vtkZLibDataCompressor"){const d=yE(u,i);f=new Xu[a](d.buffer),/^U?Int64$/.test(a)&&(f=US(f))}else f=new Xu[a](u.buffer,Dm[i]),a.indexOf("Int64")!==-1&&(f=US(f))}else if(c==="appended"){const u=Number(e.getAttribute("offset"));f=BS(new Uint8Array(o,u),a,i)}else console.error("Format not supported",c);return{name:s,values:f,numberOfComponents:l}}function mC(t){return new TextDecoder().decode(t).split("\0").slice(0,-1)}function Nue(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;uOt.newInstance(Im(Number(s.getAttribute("NumberOfTuples")),s,e,r,n,i))),a=[...t.getElementsByTagName("Array")].filter(s=>s.getAttribute("type")==="String").map(s=>Iue.newInstance(Nue(s,e,r,n,i)));return[...o,...a]}function Uue(t,e){e.classHierarchy.push("vtkXMLReader"),e.dataAccessHelper||(e.dataAccessHelper=C1.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}=Pue(n);e.rawDataBuffer=n,e.binaryBuffer=o;const s=Mue(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(x9(c,"AppendedData")){const p=x9(c,"AppendedData"),v=p.getAttribute("encoding"),y=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"))}));y.sort((T,_)=>T.offset-_.offset);let m=e.binaryBuffer;v==="base64"&&(m=p.textContent.trim().substr(1));const w=[];for(let T=0;TT+_.length,0),C=new ArrayBuffer(x),S=new Uint8Array(C);for(let T=0,_=0;T{t.parseAsArrayBuffer(e.rawDataBuffer)}}const Bue={};function Gue(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Bue,r),Q.obj(t,e),Q.get(t,e,["url","baseURL"]),Q.setGet(t,e,["dataAccessHelper"]),Q.algo(t,e,0,1),Uue(t,e)}var Om={extend:Gue,processDataArray:Im,processFieldData:Vue,processCells:kue};function Wue(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}=Om.processDataArray(s,c,n,i,o,a);t[`get${e}`]().setData(l,f)}return s}function zue(t,e,r,n,i,o,a){const s=Number(r.getAttribute(`NumberOf${e}`));if(s>0){const c=Om.processCells(s,r.getElementsByTagName(e)[0],n,i,o,a);t[`get${e}`]().setData(c)}return s}function $ue(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+=zue(u,p,d,i,o,a,e.binaryBuffer)}),Om.processFieldData(h,d.getElementsByTagName("PointData")[0],u.getPointData(),i,o,a,e.binaryBuffer),Om.processFieldData(g,d.getElementsByTagName("CellData")[0],u.getCellData(),i,o,a,e.binaryBuffer),e.output[f]=u}}}const jue={dataType:"PolyData"};function xV(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,jue,r),Om.extend(t,e,r),$ue(t,e)}const Hue=Q.newInstance(xV,"vtkXMLPolyDataReader");var CV={newInstance:Hue,extend:xV};const hn={};function vC(t,e,r,n,i){for(let o=0;oNumber(o));let r=e[0]-1;r=r<0?r+1+hn.v.length/3:r;let n=e[1]?e[1]-1:r;n=n<0?n+1+hn.vt.length/2:n;let i=e[2]?e[2]-1:r;return i=i<0?i+1+hn.vn.length/3:i,[r,n,i]}function Xue(t){if(t[0]==="#")return;const e=t.split(/[ \t]+/);if(e[0]===hn.splitOn)e.shift(),hn.pieces.push(e.join(" ").trim()),hn.f.push([]),hn.size++;else if(e[0]==="v")hn.v.push(Number(e[1])),hn.v.push(Number(e[2])),hn.v.push(Number(e[3]));else if(e[0]==="vt")hn.vt.push(Number(e[1])),hn.vt.push(Number(e[2]));else if(e[0]==="vn")hn.vn.push(Number(e[1])),hn.vn.push(Number(e[2])),hn.vn.push(Number(e[3]));else if(e[0]==="f"){hn.size===0&&hn.size++;const r=hn.f[hn.size-1];e.shift();const n=e.filter(o=>o.length>0&&o!=="\r"),i=n.length;r.push(i);for(let o=0;o1?a+m:w;for(let C=1;C1&&arguments[1]!==void 0?arguments[1]:{};return e.dataAccessHelper.fetchText(t,n,i)}t.setUrl=function(n){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(n.indexOf(".obj")===-1&&!i.fullpath)e.baseURL=n,e.url=`${n}/index.obj`;else{e.url=n;const o=n.split("/");o.pop(),e.baseURL=o.join("/")}return t.loadData(i)},t.loadData=function(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return r(e.url,n).then(i=>t.isDeleted()?!1:t.parseAsText(i))},t.parseAsText=n=>(n&&(n!==e.parseData&&t.modified(),e.parseData=n,e.numberOfOutputs=0,Kue(e.splitMode),n.split(` +`).forEach(Xue),Yue(e)),!0),t.requestData=(n,i)=>{t.parseAsText(e.parseData)},t.isBusy=()=>!!e.requestCount,t.getNumberOfOutputPorts=()=>e.numberOfOutputs}const efe={numberOfOutputs:1,requestCount:0,splitMode:null,trackDuplicates:!1};function SV(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,efe,r),Q.obj(t,e),Q.get(t,e,["url","baseURL"]),Q.setGet(t,e,["dataAccessHelper","splitMode","trackDuplicates"]),Q.algo(t,e,0,1),Q.event(t,e,"busy"),Que(t,e)}const tfe=Q.newInstance(SV,"vtkOBJReader");var nfe={newInstance:tfe,extend:SV,...Zue};function rfe(t,e){e.classHierarchy.push("vtkPolyDataNormals"),t.vtkPolyDataNormalsExecute=(r,n,i)=>{if(!i)return null;const o=new Float32Array(i.length),a=new Float32Array(3*r);let s=0,c=0;const l=n.length,f=[0,0,0],u=[0,0,0];for(let d=0;d{if(!t.getNumberOfInputPorts())return;const o=r[0];if(!o)return;const a=Nr.newInstance();a.setPoints(o.getPoints()),a.setVerts(o.getVerts()),a.setLines(o.getLines()),a.setPolys(o.getPolys()),a.setStrips(o.getStrips()),a.getPointData().passData(o.getPointData()),a.getCellData().passData(o.getCellData()),a.getFieldData().passData(o.getFieldData());const[s,c]=t.vtkPolyDataNormalsExecute(o.getNumberOfPolys(),o.getPolys().getData(),o.getPoints().getData());if(e.computePointNormals){const l=Ot.newInstance({numberOfComponents:3,name:"Normals",values:c});a.getPointData().setNormals(l)}if(e.computeCellNormals){const l=Ot.newInstance({numberOfComponents:3,name:"Normals",values:s});a.getCellData().setNormals(l)}n[0]=a}}function ife(t){return{computeCellNormals:!1,computePointNormals:!0,...t}}function TV(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ife(r)),Q.obj(t,e),Q.algo(t,e,1,1),Q.setGet(t,e,["computeCellNormals","computePointNormals"]),rfe(t,e)}const ofe=Q.newInstance(TV,"vtkPolyDataNormals");var afe={newInstance:ofe,extend:TV};class sfe{constructor(e){this._color=[255,255,255],this._actors=[],this.id=e.id,this._color=e.color??this._color,this._format=e.format;const r=new TextDecoder,n=afe.newInstance(),i=o=>{const a=yc.newInstance();a.setMapper(o);const s=Kd.newInstance();return s.setColor(this._color[0]/255,this._color[1]/255,this._color[2]/255),a.setProperty(s),a};if(this._format===ja.PLY){const o=ya.newInstance(),a=Xle.newInstance();a.parseAsArrayBuffer(e.arrayBuffer),o.setInputConnection(a.getOutputPort()),this._actors.push(i(o))}else if(this._format===ja.STL){const o=ya.newInstance(),a=tue.newInstance();a.parseAsArrayBuffer(e.arrayBuffer),n.setInputConnection(a.getOutputPort()),o.setInputConnection(n.getOutputPort()),this._actors.push(i(o))}else if(this._format===ja.OBJ){const o=nfe.newInstance({splitMode:e.materialUrl?"usemtl":null});o.parseAsText(r.decode(e.arrayBuffer));const a=o.getNumberOfOutputPorts();for(let s=0;s{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?Qs.Capture:Qs.Bubble,s=i.get(r)??Qs.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?Qs.Capture:Qs.Bubble,a=this._eventListeners.get(e);if(!a)return;(r?[r]:Array.from(a.keys())).forEach(c=>{const l=a.get(c)??Qs.None;if(!!!(l&o))return;this._target.removeEventListener(e,c,n);const u=l^o;u===Qs.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=Qs.Capture;for(let a=o;i;a<<=1){if(!(i&a))continue;const s=a===Qs.Capture;this.removeEventListener(e,n,{capture:s}),i^=a}})}_unregisterAllEvents(){Array.from(this._eventListeners.entries()).forEach(([e,r])=>{this._unregisterAllListeners(e,r)})}}class _V{constructor(){this._targetsEventListeners=new Map}addEventListener(e,r,n,i){let o=this._targetsEventListeners.get(e);o||(o=new Iw(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 cfe=Object.freeze(Object.defineProperty({__proto__:null,MultiTargetEventListenerManager:_V,TargetEventListeners:Iw},Symbol.toStringTag,{value:"Module"}));function lfe(t,e){const r=t.getSize();for(let n=0;n0?r:dfe)>>>0).join(typeof e=="string"?e:hfe)}function gfe(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=Ar(t);C9[r]=e},get:(t,e)=>{if(t==="calibratedPixelSpacing"){const r=Ar(e);return C9[r]}}};function cp(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 mfe(t,e){let r;e?r=[jr(e)]:r=Go();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 bV=t=>t.preScale.scaled&&t.preScale.scalingParameters.suvbw;function DV(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+ch}px`,f.style.height=`${h/u+ch}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=Xc(f),v=jr(n)||new hE(n);let y=v.getViewport(l);if(!y){const m={viewportId:l,type:o?gr.ORTHOGRAPHIC:gr.STACK,element:f,defaultOptions:{...i,suppressEvents:!0}};v.enableElement(m),y=v.getViewport(l)}return new Promise(m=>{let w=!1,{viewReference:x}=i;const C=S=>{if(w)return;if(x){const P=x;x=null,y.setViewReference(P),y.render();return}t.getContext("2d").drawImage(p,0,0,p.width,p.height,0,0,t.width,t.height);const _=y.canvasToWorld([0,0]),E=y.canvasToWorld([p.width/u,0]),b=y.canvasToWorld([0,p.height/u]),D=Sn([0,0,0],y.canvasToWorld([1/u,0]),_),O=Sn([0,0,0],y.canvasToWorld([0,1/u]),_),L=1;w=!0,f.removeEventListener(Xe.IMAGE_RENDERED,C),setTimeout(()=>{v.disableElement(l),document.querySelectorAll(`[viewport-id-for-remove="${g}"]`).forEach(k=>{k.remove()})},0),m({origin:_,bottomLeft:b,topRight:E,thicknessMm:L,rightVector:D,downVector:O})};f.addEventListener(Xe.IMAGE_RENDERED,C),o?y.setVolumes([s],!1,!0):y.renderImageObject(e),y.resetCamera(),r==="PT"&&!bV(a)&&y.setProperties({voiRange:{lower:a.minPixelValue,upper:a.maxPixelValue}}),y.render()})}function IV(t,e,r,n,i){if(e.volumeId)throw new Error("Unsupported volume rendering for CPU");const a=e,s=Yk(t,a,r),c={canvas:t,viewport:s,image:a,renderingTools:{}};c.transform=Em(c);const l=!0;return new Promise((f,u)=>{Kk(c,l),f(null)})}function vfe(t){const{canvas:e,imageId:r,viewReference:n,requestType:i=un.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?IV:DV;return new Promise((p,v)=>{function y(C,S){var b;const{modality:T}=lt("generalSeriesModule",S)||{},_=!d&&C,E=d&&C;_&&(_.isPreScaled=_.isPreScaled||((b=_.preScale)==null?void 0:b.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 w(C,S,T){return Ds(C,T).then(_=>{y.call(this,_,C)},_=>{m.call(this,_,C)})}const x={useRGBA:!!s,requestType:i};if(u){const C=ke.getVolume(u);C||v(new Error(`Volume id ${u} not found in cache`));const S=C.imageIds[0];y(C,S)}else Ai.addRequest(w.bind(null,r,null,x),i,{imageId:r},o)})}const S9={HISTORY_UNDO:"CORNERSTONE_TOOLS_HISTORY_UNDO",HISTORY_REDO:"CORNERSTONE_TOOLS_HISTORY_REDO"};class OV{constructor(e="Tools",r=50){this.position=-1,this.redoAvailable=0,this.undoAvailable=0,this.ring=new Array,this.label=e,this._size=r}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 r=this.ring[this.position];r.restoreMemo(!0),r.id&&He.dispatchEvent(new CustomEvent(S9.HISTORY_UNDO,{detail:{isUndo:!0,id:r.id,operationType:r.operationType||"annotation",memo:r}})),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 r=(this.position+1)%this.size,n=this.ring[r];n.restoreMemo(!1),n.id&&He.dispatchEvent(new CustomEvent(S9.HISTORY_REDO,{detail:{isUndo:!1,id:n.id,operationType:n.operationType||"annotation",memo:n}})),e--,this.position=r,this.undoAvailable++,this.redoAvailable--}}push(e){var n;if(!e)return;const r=e.restoreMemo?e:(n=e.createMemo)==null?void 0:n.call(e);if(r)return this.redoAvailable=0,this.undoAvailable{n.getViewports().forEach(o=>{o.hasImageURI(t)&&r.push(o)})}),r}function CE(t,e){const r=yfe(t,e);return r?r.index:null}function yfe(t,e){const r=e.getImageIds(),n=e.getCurrentImageIdIndex();if(r.length===0)return null;const i=c=>{const l=wfe(c);if(!l)return null;const f=ol(l.planeNormal,l.imagePositionPatient);return _m(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}`;zf[i]||(zf[i]={}),zf[i]=e},get:(t,e,r)=>{if(t!=="spatialRegistrationModule")return;const n=`${e}_${r}`;if(zf[n])return zf[n];const i=`${r}_${e}`;if(zf[i])return $r(Ea(),zf[i])}};Zh(Mm.get.bind(Mm));const xfe=.05;function RV(t,e){const r=t.getSliceIndex(),n=e.getSliceIndex(),i=lt("imagePlaneModule",r.toString()),o=lt("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]{r.getViewports().forEach(({element:i})=>{t.push(Ee(i))})}),t}function Sfe(t){const e=Ee(t);if(!e)return;const{viewport:r}=e;if(!(r instanceof ar))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 Pf(t){if(t.length<=1)return!1;const e=t[0],{modality:r,seriesInstanceUID:n}=lt("generalSeriesModule",e),{imageOrientationPatient:i,pixelSpacing:o,frameOfReferenceUID:a,columns:s,rows:c,usingDefaultValues:l}=lt("imagePlaneModule",e);if(l)return!1;const f={modality:r,imageOrientationPatient:i,pixelSpacing:o,columns:s,rows:c,seriesInstanceUID:n};let u=!0;for(let d=0;dTfe.has(r)):!1}async function _fe({viewport:t,options:e={}}){const r=t.getRenderingEngine();let n=e.volumeId||`${Tn()}`;n.split(":").length===0&&(n=`${Ik()}:${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:gr.ORTHOGRAPHIC,element:o,defaultOptions:{background:e.background,orientation:e.orientation}}),(await Tm(n,{imageIds:s})).load();const u=r.getViewport(a);await Jk(r,[{volumeId:n}],[a]);const d=()=>{u.render(),o.removeEventListener(Xe.VOLUME_VIEWPORT_NEW_VOLUME,d)};return(()=>{o.addEventListener(Xe.VOLUME_VIEWPORT_NEW_VOLUME,d)})(),u.setViewPresentation(c),u.setViewReference(l),u.render(),u}async function Efe({viewport:t,options:e}){const r=t,{id:n,element:i}=r,o=t.getRenderingEngine(),{background:a}=e,s=e.viewportId||n,c=ke.getVolume(r.getVolumeId());if(!(c instanceof qd))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:gr.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 an(t,e=2){if(Array.isArray(t))return t.map(i=>an(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 Yu(t){return Math.round(t/Ya)*Ya}function NV(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?(T9(r),r):(T9(r),r.slice(0,e))}function T9(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 yC(t){const e=t.toString(16);return e.length==1?"0"+e:e}function Dfe(t,e,r){return"#"+yC(t)+yC(e)+yC(r)}function Ife(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 Ofe=Object.freeze(Object.defineProperty({__proto__:null,hexToRgb:Ife,rgbToHex:Dfe},Symbol.toStringTag,{value:"Module"}));function kV(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 Mfe(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 Pfe=(t,e)=>t.reduce((r,n)=>((r[n[e]]=r[n[e]]||[]).push(n),r),{});function Rfe(t){const e=t.map(a=>{const{imagePositionPatient:s}=lt("imagePlaneModule",a)||{};return{imageId:a,imagePositionPatient:s}});if(!e.every(a=>a.imagePositionPatient))return null;const r=Pfe(e,"imagePositionPatient"),n=Object.keys(r),i=r[n[0]].length;return i===1||!n.every(a=>r[a].length===i)?null:r}function Lfe(t,e){const r={};let n=[];const i=Object.keys(t);for(let o=0;okg(i,r[0]),i=>kg(i,r[1]),i=>kg(i,r[2]),i=>kg(i,r[3]),i=>kg(i,r[4]),Afe,Nfe,kfe,Ffe];for(let i=0;ic-l).map(c=>o[c].map(l=>l.imageId)),splittingTag:r[i]}}return{imageIdGroups:[t],splittingTag:null}}function Ufe(t){const{imageIdGroups:e,splittingTag:r}=_E(t);return{isDynamicVolume:e.length>1,timePoints:e,splittingTag:r}}function Bfe(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};nt(He,Xe.STACK_SCROLL_OUT_OF_BOUNDS,s)}t.scroll(i,e.debounceLoading,e.loop)}}function Gfe(t,e,r,n=!1){const i=n,{numScrollSteps:o,currentStepIndex:a,sliceRangeInfo:s}=wd(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}=oh(u,h,c,d,l,r);t.setCamera({focalPoint:g,position:p}),t.render();const v=a+r,y={volumeId:e,viewport:t,delta:r,desiredStepIndex:v,currentStepIndex:a,numScrollSteps:o,currentImageId:t.getCurrentImageId()};(v>o||v<0)&&t.getCurrentImageId()?nt(He,Xe.VOLUME_VIEWPORT_SCROLL_OUT_OF_BOUNDS,y):nt(He,Xe.VOLUME_VIEWPORT_SCROLL,y)}async function Po(t,e={}){const{imageIndex:r,debounceLoading:n,volumeId:i}=e,o=Ee(t);if(!o)throw new Error("Element has been disabled");const{viewport:a}=o,{imageIndex:s,numberOfSlices:c}=Wfe(a,n),f=zfe(c,r)-s;hc(a,{delta:f,debounceLoading:n,volumeId:i})}function Wfe(t,e){return t instanceof ar?{numberOfSlices:t.getImageIds().length,imageIndex:e?t.getTargetImageIdIndex():t.getCurrentImageIdIndex()}:{numberOfSlices:t.getNumberOfSlices(),imageIndex:t.getSliceIndex()}}function zfe(t,e){const r=t-1;return Qy(e,0,r)}function EE(t,e,r={}){const n=ke.getVolume(t);if(!n)throw new Error(`Referenced volume with id ${t} does not exist.`);const{metadata:i,spacing:o,direction:a,dimensions:s}=n,{minX:c,maxX:l,minY:f,maxY:u,minZ:d,maxZ:h}=e,g=[Math.min(c,l),Math.min(f,u),Math.min(d,h)],p=Rh(n.imageData,g),v=[Math.abs(l-c)+1,Math.abs(u-f)+1,Math.abs(h-d)+1],{targetBuffer:y}=r,m={metadata:i,dimensions:v,spacing:o,origin:p,direction:a,targetBuffer:y,scalarData:(y==null?void 0:y.type)==="Float32Array"?new Float32Array(v[0]*v[1]*v[2]):void 0},w=y1(Tn(),m),x=w.voxelManager.getCompleteScalarDataArray(),C=v[0]*v[1],S=s[0]*s[1],T=n.voxelManager.getCompleteScalarDataArray();for(let _=0;_=a)){for(let m=d-n;m<=d+n;m++)if(!(m<0||m>=o))for(let w=u-n;w<=u+n;w++){if(w<0||w>=i)continue;const x=y*s+m*i+w,C=t[x];c+=C,l+=C*C,f++}}if(f===0){const y=h*s+d*i+u;return y>=0&&yc/n),type:oc.ERMF,isProjection:a}:(console.warn("EstimatedRadiographicMagnificationFactor was not present. Unable to correct ImagerPixelSpacing."),{PixelSpacing:r,type:oc.PROJECTION,isProjection:a}):{PixelSpacing:e,type:oc.UNKNOWN,isProjection:a}}function Hfe(t){const{SequenceOfUltrasoundRegions:e}=t,r=Array.isArray(e);if(r&&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:n,PhysicalDeltaY:i}=r?e[0]:e;return{PixelSpacing:[n*10,i*10]}}function Kfe(t){const{PixelSpacing:e,SOPClassUID:r,SequenceOfUltrasoundRegions:n}=t;return n?Hfe(t):$fe.has(r)?jfe(t):{PixelSpacing:e,type:oc.NOT_APPLICABLE,isProjection:!1}}const FV=(t,e)=>Mfe(t,e,ke.getVolume),_n=Object.freeze(Object.defineProperty({__proto__:null,FrameRange:lh,HistoryMemo:xE,PointsManager:Fv,ProgressiveIterator:Hy,RLEVoxelMap:v0,VoxelManager:wc,actorIsA:Ta,applyPreset:Nk,autoLoad:RS,buildMetadata:Bk,calculateNeighborhoodStats:VV,calculateSpacingBetweenImageIds:vk,calculateViewportsSpatialRegistration:RV,calibratedPixelSpacingMetadataProvider:pfe,clamp:VS,clip:Qy,color:Ofe,colormap:Bie,convertStackToVolumeViewport:_fe,convertToGrayscale:NV,convertVolumeToStackViewport:Efe,createLinearRGBTransferFunction:Gk,createSigmoidRGBTransferFunction:Y4,createSubVolume:EE,decimate:xk,deepClone:xs,deepEqual:kV,deepMerge:Li,eventListener:cfe,fnv1aHash:DN,generateVolumePropsFromImageIds:p1,genericMetadataProvider:qu,getBufferConfiguration:A4,getClosestImageId:cu,getClosestStackImageIndexForPoint:CE,getCurrentVolumeViewportSlice:SE,getDynamicVolumeInfo:Ufe,getImageDataMetadata:Ew,getImageLegacy:Sfe,getImageSliceDataForVolumeViewport:qy,getMinMax:wE,getPixelSpacingInformation:Kfe,getRandomSampleFromArray:TE,getRuntimeId:EV,getScalingParameters:yk,getSliceRange:Tw,getSpacingInNormalDirection:Mf,getTargetVolumeAndSpacingInNormalDir:tg,getViewportImageCornersInWorld:Zy,getViewportImageIds:bfe,getViewportModality:FV,getViewportsWithImageURI:Jy,getViewportsWithVolumeId:m1,getVoiFromSigmoidRGBTransferFunction:Ak,getVolumeActorCorners:LN,getVolumeDirectionVectors:Ow,getVolumeId:Cl,getVolumeSliceRangeInfo:Lk,getVolumeViewportScrollInfo:wd,getVolumeViewportsContainingSameVolumes:mfe,hasFloatScalingParameters:nE,hasNaNValues:LS,imageIdToURI:Ar,imageRetrieveMetadataProvider:Cm,imageToWorldCoords:PV,indexWithinDimensions:fr,invertRgbTransferFunction:Dp,isEqual:Kt,isEqualAbs:Vie,isEqualNegative:FN,isImageActor:sc,isNumber:Mr,isOpposite:cp,isPTPrescaledWithSUV:bV,isValidVolume:Pf,isVideoTransferSyntax:AV,jumpToSlice:Po,loadImageToCanvas:vfe,logger:vie,makeVolumeMetadata:mk,planar:sce,pointInShapeCallback:Z4,renderToCanvasCPU:IV,renderToCanvasGPU:DV,roundNumber:an,roundToPrecision:Yu,scaleArray:Bfe,scaleRgbTransferFunction:lfe,scroll:hc,snapFocalPointToSlice:oh,sortImageIdsAndGetSpacing:tE,spatialRegistrationMetadataProvider:Mm,splitImageIdsBy4DTags:_E,transferFunctionUtils:Wie,transformIndexToWorld:Rh,transformWorldToIndex:zr,transformWorldToIndexContinuous:kv,triggerEvent:nt,updateVTKImageDataWithCornerstoneImage:bw,uuidv4:Tn,windowLevel:Gie,worldToImageCoords:GS},Symbol.toStringTag,{value:"Module"}));class UV extends Sk{constructor(e,r){super(e,r),this._dimensionGroupNumber=1,this._loadedDimensionGroups=new Set,this._getImageIdRequests=(o,a)=>this.getImageIdsRequests(o,a),this.getImageLoadRequests=o=>{const a=this.getImageIdsToLoad();return this._getImageIdRequests(a,o)};const{imageIdGroups:n,splittingTag:i}=e;this._splittingTag=i,this._imageIdGroups=n,this.numDimensionGroups=this._imageIdGroups.length,this.numTimePoints=this.numDimensionGroups}_getImageIdsToLoad(){const e=this._imageIdGroups,r=this._dimensionGroupNumber-1,n=[...e[r]];let i=r-1,o=r+1;for(;i>=0||o=0&&n.push(...e[i--]),othis.numDimensionGroups?this.dimensionGroupNumber=1:this.dimensionGroupNumber=r}getCurrentDimensionGroupImageIds(){return this._imageIdGroups[this._dimensionGroupNumber-1]}getCurrentTimePointImageIds(){return console.warn("Warning: getCurrentTimePointImageIds is deprecated. Please use getCurrentDimensionGroupImageIds instead."),this.getCurrentDimensionGroupImageIds()}flatImageIdIndexToTimePointIndex(e){return console.warn("Warning: flatImageIdIndexToTimePointIndex is deprecated. Please use flatImageIdIndexToDimensionGroupNumber instead."),this.flatImageIdIndexToDimensionGroupNumber(e)-1}flatImageIdIndexToDimensionGroupNumber(e){return Math.floor(e/this._imageIdGroups[0].length)+1}flatImageIdIndexToImageIdIndex(e){return e%this._imageIdGroups[0].length}get splittingTag(){return this._splittingTag}isTimePointLoaded(e){return console.warn("Warning: isTimePointLoaded is deprecated. Please use isDimensionGroupLoaded instead. Note that timePointIndex is zero-based while dimensionGroupNumber starts at 1."),this.isDimensionGroupLoaded(e+1)}isDimensionGroupLoaded(e){return this._loadedDimensionGroups.has(e)}markDimensionGroupAsLoaded(e){this._loadedDimensionGroups.add(e),nt(He,Xe.DYNAMIC_VOLUME_DIMENSION_GROUP_LOADED,{volumeId:this.volumeId,dimensionGroupNumber:e}),nt(He,Xe.DYNAMIC_VOLUME_TIME_POINT_LOADED,{volumeId:this.volumeId,timePointIndex:e-1})}checkTimePointCompletion(e){console.warn("Warning: checkTimePointCompletion is deprecated. Please use checkDimensionGroupCompletion instead."),this.checkDimensionGroupCompletion(e)}checkDimensionGroupCompletion(e){const r=this.flatImageIdIndexToDimensionGroupNumber(e);this._imageIdGroups[r-1].every(o=>{const a=this.getImageIdIndex(o);return this.cachedFrames[a]===va.FULL_RESOLUTION})&&!this.isDimensionGroupLoaded(r)&&this.markDimensionGroupAsLoaded(r)}}const rg=new k4("imageRetrievalPool");rg.setMaxSimultaneousRequests(un.Interaction,200);rg.setMaxSimultaneousRequests(un.Thumbnail,200);rg.setMaxSimultaneousRequests(un.Prefetch,200);rg.grabDelay=0;const _9=Symbol("DefaultSettings"),E9=Symbol("RuntimeSettings"),b9=Symbol("ObjectSettingsMap"),Al=Symbol("Dictionary");class yr{constructor(e){const r=Object.create(e instanceof yr&&Al in e?e[Al]:null);Object.seal(Object.defineProperty(this,Al,{value:r}))}set(e,r){return e5(this[Al],e,r,null)}get(e){return Yfe(this[Al],e)}unset(e){return qfe(this[Al],e+"")}forEach(e){D9(this[Al],e)}extend(){return new yr(this)}import(e){BV(e)&&Object.keys(e).forEach(r=>{e5(this[Al],r,e[r],null)})}dump(){const e={};return D9(this[Al],(r,n)=>{typeof n<"u"&&GV(e,r,n)}),e}static assert(e){return e instanceof yr?e:yr.getRuntimeSettings()}static getDefaultSettings(e=null){let r=yr[_9];if(r instanceof yr||(r=new yr,yr[_9]=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=yr[E9];return e instanceof yr||(e=new yr(yr.getDefaultSettings()),yr[E9]=e),e}static getObjectSettings(e,r){let n=null;if(e instanceof yr)n=e;else if(typeof e=="object"&&e!==null){let i=yr[b9];i instanceof WeakMap||(i=new WeakMap,yr[b9]=i),n=i.get(e),n instanceof yr||(n=new yr(yr.assert(yr.getObjectSettings(r))),i.set(e,n))}return n}static extendRuntimeSettings(){return yr.getRuntimeSettings().extend()}}function qfe(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 D9(t,e){for(const r in t)e(r,t[r])}function Xfe(t,e,r,n){let i;if(n.has(r))return e5(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}`;e5(t,a,r[o],n)||++i}return n.delete(r),i===0}function e5(t,e,r,n){return Jfe(e)?BV(r)?Xfe(t,e,r,n instanceof WeakSet?n:new WeakSet):(t[e]=r,!0):!1}function Yfe(t,e){return t[e]}function Jfe(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 BV(t){if(typeof t=="object"&&t!==null){const e=Object.getPrototypeOf(t);if(e===Object.prototype||e===null)return!0}return!1}function GV(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}GV(o,e.slice(n+1,e.length),r)}else t[e]=r}yr.getDefaultSettings().set("useCursors",!0);function Gv(t,e){return t==null||e==null?NaN:te?1:t>=e?0:NaN}function Zfe(t,e){return t==null||e==null?NaN:et?1:e>=t?0:NaN}function WV(t){let e,r,n;t.length!==2?(e=Gv,r=(s,c)=>Gv(t(s),c),n=(s,c)=>t(s)-c):(e=t===Gv||t===Zfe?t:Qfe,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 Qfe(){return 0}function ede(t){return t===null?NaN:+t}const tde=WV(Gv),nde=tde.right;WV(ede).center;const rde=Math.sqrt(50),ide=Math.sqrt(10),ode=Math.sqrt(2);function t5(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>=rde?10:o>=ide?5:o>=ode?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 lde(t){if(!(o=t.length))return[];for(var e=-1,r=cde(t,ude),n=new Array(r);++e>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):r===8?O2(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):r===4?O2(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=hde.exec(t))?new wa(e[1],e[2],e[3],1):(e=gde.exec(t))?new wa(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=pde.exec(t))?O2(e[1],e[2],e[3],e[4]):(e=mde.exec(t))?O2(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=vde.exec(t))?N9(e[1],e[2]/100,e[3]/100,1):(e=yde.exec(t))?N9(e[1],e[2]/100,e[3]/100,e[4]):O9.hasOwnProperty(t)?R9(O9[t]):t==="transparent"?new wa(NaN,NaN,NaN,0):null}function R9(t){return new wa(t>>16&255,t>>8&255,t&255,1)}function O2(t,e,r,n){return n<=0&&(t=e=r=NaN),new wa(t,e,r,n)}function Cde(t){return t instanceof T1||(t=Lm(t)),t?(t=t.rgb(),new wa(t.r,t.g,t.b,t.opacity)):new wa}function zS(t,e,r,n){return arguments.length===1?Cde(t):new wa(t,e,r,n??1)}function wa(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}bE(wa,zS,zV(T1,{brighter(t){return t=t==null?n5:Math.pow(n5,t),new wa(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Pm:Math.pow(Pm,t),new wa(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new wa(xd(this.r),xd(this.g),xd(this.b),r5(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:L9,formatHex:L9,formatHex8:Sde,formatRgb:A9,toString:A9}));function L9(){return`#${hd(this.r)}${hd(this.g)}${hd(this.b)}`}function Sde(){return`#${hd(this.r)}${hd(this.g)}${hd(this.b)}${hd((isNaN(this.opacity)?1:this.opacity)*255)}`}function A9(){const t=r5(this.opacity);return`${t===1?"rgb(":"rgba("}${xd(this.r)}, ${xd(this.g)}, ${xd(this.b)}${t===1?")":`, ${t})`}`}function r5(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function xd(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function hd(t){return t=xd(t),(t<16?"0":"")+t.toString(16)}function N9(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new cc(t,e,r,n)}function $V(t){if(t instanceof cc)return new cc(t.h,t.s,t.l,t.opacity);if(t instanceof T1||(t=Lm(t)),!t)return new cc;if(t instanceof cc)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 cc(a,s,c,t.opacity)}function Tde(t,e,r,n){return arguments.length===1?$V(t):new cc(t,e,r,n??1)}function cc(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}bE(cc,Tde,zV(T1,{brighter(t){return t=t==null?n5:Math.pow(n5,t),new cc(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Pm:Math.pow(Pm,t),new cc(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 wa(wC(t>=240?t-240:t+120,i,n),wC(t,i,n),wC(t<120?t+240:t-120,i,n),this.opacity)},clamp(){return new cc(k9(this.h),M2(this.s),M2(this.l),r5(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=r5(this.opacity);return`${t===1?"hsl(":"hsla("}${k9(this.h)}, ${M2(this.s)*100}%, ${M2(this.l)*100}%${t===1?")":`, ${t})`}`}}));function k9(t){return t=(t||0)%360,t<0?t+360:t}function M2(t){return Math.max(0,Math.min(1,t||0))}function wC(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 _de(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 xC(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 Ede(t,e){return function(r){return t+r*e}}function bde(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 Dde(t){return(t=+t)==1?jV:function(e,r){return r-e?bde(e,r,t):DE(isNaN(e)?r:e)}}function jV(t,e){var r=e-t;return r?Ede(t,r):DE(isNaN(t)?e:t)}const V9=function t(e){var r=Dde(e);function n(i,o){var a=r((i=zS(i)).r,(o=zS(o)).r),s=r(i.g,o.g),c=r(i.b,o.b),l=jV(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 Ide(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:i5(n,i)})),r=CC.lastIndex;return re&&(r=t,t=e,e=r),function(n){return Math.max(t,Math.min(e,n))}}function Bde(t,e,r){var n=t[0],i=t[1],o=e[0],a=e[1];return i2?Gde:Bde,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),i5)))(d)))},u.domain=function(d){return arguments.length?(t=Array.from(d,Fde),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=kde,f()},u.clamp=function(d){return arguments.length?(a=d?!0:A0,f()):a!==A0},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 $de(){return zde()(A0,A0)}function jde(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function o5(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 Nh(t){return t=o5(Math.abs(t)),t?t[1]:NaN}function Hde(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 Kde(t){return function(e){return e.replace(/[0-9]/g,function(r){return t[+r]})}}var qde=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function a5(t){if(!(e=qde.exec(t)))throw new Error("invalid format: "+t);var e;return new OE({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]})}a5.prototype=OE.prototype;function OE(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+""}OE.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 Xde(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 HV;function Yde(t,e){var r=o5(t,e);if(!r)return t+"";var n=r[0],i=r[1],o=i-(HV=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")+o5(t,Math.max(0,e+o-1))[0]}function U9(t,e){var r=o5(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 B9={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:jde,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)=>U9(t*100,e),r:U9,s:Yde,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function G9(t){return t}var W9=Array.prototype.map,z9=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Jde(t){var e=t.grouping===void 0||t.thousands===void 0?G9:Hde(W9.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?G9:Kde(W9.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=a5(u);var d=u.fill,h=u.align,g=u.sign,p=u.symbol,v=u.zero,y=u.width,m=u.comma,w=u.precision,x=u.trim,C=u.type;C==="n"?(m=!0,C="g"):B9[C]||(w===void 0&&(w=12),x=!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:"",_=B9[C],E=/[defgprs%]/.test(C);w=w===void 0?6:/[gprs]/.test(C)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function b(D){var O=S,L=T,P,k,G;if(C==="c")L=_(D)+L,D="";else{D=+D;var j=D<0||1/D<0;if(D=isNaN(D)?c:_(Math.abs(D),w),x&&(D=Xde(D)),j&&+D==0&&g!=="+"&&(j=!1),O=(j?g==="("?g:s:g==="-"||g==="("?"":g)+O,L=(C==="s"?z9[8+HV/3]:"")+L+(j&&g==="("?")":""),E){for(P=-1,k=D.length;++PG||G>57){L=(G===46?i+D.slice(P+1):D.slice(P))+L,D=D.slice(0,P);break}}}m&&!v&&(D=e(D,1/0));var F=O.length+D.length+L.length,U=F>1)+O+D+L+U.slice(F);break;default:D=U+O+D+L;break}return o(D)}return b.toString=function(){return u+""},b}function f(u,d){var h=l((u=a5(u),u.type="f",u)),g=Math.max(-8,Math.min(8,Math.floor(Nh(d)/3)))*3,p=Math.pow(10,-g),v=z9[8+g/3];return function(y){return h(p*y)+v}}return{format:l,formatPrefix:f}}var P2,KV,qV;Zde({thousands:",",grouping:[3],currency:["$",""]});function Zde(t){return P2=Jde(t),KV=P2.format,qV=P2.formatPrefix,P2}function Qde(t){return Math.max(0,-Nh(Math.abs(t)))}function e0e(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Nh(e)/3)))*3-Nh(Math.abs(t)))}function t0e(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Nh(e)-Nh(t))+1}function n0e(t,e,r,n){var i=sde(t,e,r),o;switch(n=a5(n??",f"),n.type){case"s":{var a=Math.max(Math.abs(t),Math.abs(e));return n.precision==null&&!isNaN(o=e0e(i,a))&&(n.precision=o),qV(n,a)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(o=t0e(i,Math.max(Math.abs(t),Math.abs(e))))&&(n.precision=o-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(o=Qde(i))&&(n.precision=o-(n.type==="%")*2);break}}return KV(n)}function r0e(t){var e=t.domain;return t.ticks=function(r){var n=e();return ade(n[0],n[n.length-1],r??10)},t.tickFormat=function(r,n){var i=e();return n0e(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=WS(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 ME(){var t=$de();return t.copy=function(){return Wde(t,ME())},fde.apply(t,arguments),r0e(t)}function i0e(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 o0e=(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),y[_]?S+=y[_]*a[T]:C-=a[T],x+=1}u[m+w]=S/C}y=[...u];for(let m=0;m2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,a0e,r),Q.obj(t,e),Q.algo(t,e,6,0),Q.get(t,e,["canvas","image","jsImageData","imageLoaded","resizable"]),Q.setGet(t,e,["repeat","edgeClamp","interpolate","mipLevel"]),i0e(t,e)}const s0e=Q.newInstance(XV,"vtkTexture"),c0e={generateMipmaps:o0e};var Xd={newInstance:s0e,extend:XV,...c0e};const l0e=[[-1,0,0],[1,0,0],[0,-1,0],[0,1,0],[0,0,-1],[0,0,1]],$9=[[8,7,11,3],[9,1,10,5],[4,9,0,8],[2,11,6,10],[0,3,2,1],[4,5,6,7]],R2=[[0,1],[1,3],[2,3],[0,2],[4,5],[5,7],[6,7],[4,6],[0,4],[1,5],[3,7],[2,6]],j9=[0,1,0,1,0,1,0,1,2,2,2,2],Gr=[[1,2],[1,2],[0,2],[0,2],[0,1],[0,1]],dn=new Float64Array(3),L2=new Float64Array(3),rr=new Float64Array(3),od=new Float64Array(3),$f=new Float64Array(3),A2=new Float64Array(3),SC=new Float64Array(16);function TC(t,e){t.strokeStyle=e.strokeColor,t.lineWidth=e.strokeSize,t.fillStyle=e.fontColor,t.font=`${e.fontStyle} ${e.fontSize}px ${e.fontFamily}`}function YV(t){const e=[],r=[];for(let n=0;n<3;n++){const i=ME().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 u0e(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;dn[0]=f[n*3],dn[1]=f[n*3+1],dn[2]=f[n*3+2],Wt(rr,dn,i),rr[0]+=.1,Wt(L2,rr,o),jn($f,L2,dn),rr[0]-=.1,rr[1]+=.1,Wt(L2,rr,o),jn(A2,L2,dn);for(let g=0;g<3;g++)$f[g]/=.5*.1*u[0],A2[g]/=.5*.1*u[1];let d=c.ptIdx,h=c.cellIdx;dn[0]=f[n*3],dn[1]=f[n*3+1],dn[2]=f[n*3+2],a[0]<-.5?_r(rr,$f,a[0]*s-l.width):a[0]>.5?_r(rr,$f,a[0]*s):_r(rr,$f,a[0]*s-l.width/2),ni(dn,dn,rr),_r(rr,A2,a[1]*s-l.height/2),ni(dn,dn,rr),c.points[d*3]=dn[0],c.points[d*3+1]=dn[1],c.points[d*3+2]=dn[2],c.tcoords[d*2]=l.tcoords[0],c.tcoords[d*2+1]=l.tcoords[1],d++,_r(rr,$f,l.width),ni(dn,dn,rr),c.points[d*3]=dn[0],c.points[d*3+1]=dn[1],c.points[d*3+2]=dn[2],c.tcoords[d*2]=l.tcoords[2],c.tcoords[d*2+1]=l.tcoords[3],d++,_r(rr,A2,l.height),ni(dn,dn,rr),c.points[d*3]=dn[0],c.points[d*3+1]=dn[1],c.points[d*3+2]=dn[2],c.tcoords[d*2]=l.tcoords[4],c.tcoords[d*2+1]=l.tcoords[5],d++,_r(rr,$f,l.width),jn(dn,dn,rr),c.points[d*3]=dn[0],c.points[d*3+1]=dn[1],c.points[d*3+2]=dn[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);wn(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);$r(SC,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 f0e=Q.newInstance(function(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{renderable:null};Object.assign(e,{},r),Q.obj(t,e),e.tmPolyData=Nr.newInstance(),e.tmMapper=ya.newInstance(),e.tmMapper.setInputData(e.tmPolyData),e.tmActor=yc.newInstance({parentProp:t}),e.tmActor.setMapper(e.tmMapper),Q.setGet(t,e,["renderable"]),Q.get(t,e,["lastSize","lastAspectRatio","axisTextStyle","tickTextStyle","tmActor","ticks"]),e.forceUpdate=!1,e.lastRedrawTime={},Q.obj(e.lastRedrawTime,{mtime:0}),e.lastRebuildTime={},Q.obj(e.lastRebuildTime,{mtime:0}),e.lastSize=[-1,-1],e.lastTickBounds=[],u0e(t,e)},"vtkCubeAxesActorHelper");function d0e(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();wn(n,n);let i=!1;const o=tr.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]&&(dn[l]=e.dataBounds[s]-.1*o*l0e[s][l],dn[f]=.5*(e.dataBounds[f*2]+e.dataBounds[f*2+1]),dn[u]=.5*(e.dataBounds[u*2]+e.dataBounds[u*2+1]),Wt(rr,dn,n),dn[l]=e.dataBounds[s],Wt(od,dn,n),jn(rr,od,rr),Yn(rr,rr),c=rr[2]>a,e.camera.getParallelProjection()||(Yn(od,od),c=St(od,rr)>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[Gr[h][0]].length*2+o[Gr[h][1]].length*2,s+=o[Gr[h][0]].length+o[Gr[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]=R2[h][0],f[d*3+2]=R2[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[Gr[h][0]];for(let v=0;v{let s=0;for(let h=0;h<12;h++)i[h]===1&&(s+=2,s+=o[j9[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=$9[h][g];if(i[p]===1){const v=j9[p],y=R2[p][0]*3,m=R2[p][1]*3;l[f*3]=.5*(c[y]+c[m]),l[f*3+1]=.5*(c[y+1]+c[m+1]),l[f*3+2]=.5*(c[y+2]+c[m+2]),f++;const w=Math.floor(h/2);l[f*3+w]=e.dataBounds[h],l[f*3+Gr[h][0]]=.5*(e.dataBounds[Gr[h][0]*2]+e.dataBounds[Gr[h][0]*2+1]),l[f*3+Gr[h][1]]=.5*(e.dataBounds[Gr[h][1]*2]+e.dataBounds[Gr[h][1]*2+1]),f++,e.textValues[u]=e.axisLabels[v],u++;const x=(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[$9[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])){TC(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)=>{TC(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(),tr.setBounds(e.bounds,e.gridActor.getBounds()),tr.scaleAboutCenter(e.bounds,e.boundsScaleFactor,e.boundsScaleFactor,e.boundsScaleFactor),e.bounds);const r=Q.chain(t.setProperty,e.gridActor.setProperty);t.setProperty=n=>r(n)[0]}function h0e(t,e,r){return{boundsScaleFactor:1.3,camera:null,dataBounds:[...tr.INIT_BOUNDS],faceVisibilityAngle:8,gridLines:!0,axisLabels:null,axisTitlePixelOffset:35,tickLabelPixelOffset:12,generateTicks:YV,...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 JV(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};yc.extend(t,e,h0e(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=Xd.newInstance({resizable:!0}),e.tmTexture.setInterpolate(!1),t.getProperty().setDiffuse(0),t.getProperty().setAmbient(1),e.gridMapper=ya.newInstance(),e.polyData=Nr.newInstance(),e.gridMapper.setInputData(e.polyData),e.gridActor=yc.newInstance(),e.gridActor.setMapper(e.gridMapper),e.gridActor.setProperty(t.getProperty()),e.gridActor.setParentProp(t),e.textPolyData=Nr.newInstance(),Q.setGet(t,e,["axisTitlePixelOffset","boundsScaleFactor","faceVisibilityAngle","gridLines","tickLabelPixelOffset","generateTicks"]),Q.setGetArray(t,e,["dataBounds"],6),Q.setGetArray(t,e,["axisLabels"],3),Q.get(t,e,["axisTextStyle","tickTextStyle","camera","tmTexture","textValues","textPolyData","tickCounts","gridActor"]),d0e(t,e)}const g0e=Q.newInstance(JV,"vtkCubeAxesActor");var ZV={newInstance:g0e,extend:JV,newCubeAxesActorHelper:f0e,defaultGenerateTicks:YV};function p0e(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 m0e={};function v0e(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,m0e,r),cr.extend(t,e,r),e.CubeAxesActorHelper=ZV.newCubeAxesActorHelper(),p0e(t,e)}const y0e=Wn(v0e,"vtkOpenGLCubeAxesActor");Si("vtkCubeAxesActor",y0e);const{ColorMode:w0e,ScalarMode:jf,GetArray:_C}=hw;function x0e(t,e){e.classHierarchy.push("vtkMapper2D"),t.createDefaultLookupTable=()=>{e.lookupTable=Ny.newInstance()},t.getColorModeAsString=()=>Q.enumToString(w0e,e.colorMode),t.setColorModeToDefault=()=>t.setColorMode(0),t.setColorModeToMapScalars=()=>t.setColorMode(1),t.setColorModeToDirectScalars=()=>t.setColorMode(2),t.getScalarModeAsString=()=>Q.enumToString(jf,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===jf.DEFAULT)s=r.getPointData().getScalars(),s||(s=r.getCellData().getScalars(),c=!0);else if(n===jf.USE_POINT_DATA)s=r.getPointData().getScalars();else if(n===jf.USE_CELL_DATA)s=r.getCellData().getScalars(),c=!0;else if(n===jf.USE_POINT_FIELD_DATA){const l=r.getPointData();i===_C.BY_ID?s=l.getArrayByIndex(o):s=l.getArrayByName(a)}else if(n===jf.USE_CELL_FIELD_DATA){const l=r.getCellData();c=!0,i===_C.BY_ID?s=l.getArrayByIndex(o):s=l.getArrayByName(a)}else if(n===jf.USE_FIELD_DATA){const l=r.getFieldData();i===_C.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 C0e={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 S0e(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,C0e,r),NL.extend(t,e,r),Q.get(t,e,["colorMapColors"]),Q.setGet(t,e,["arrayAccessMode","colorByArrayName","colorMode","lookupTable","renderTime","scalarMode","scalarVisibility","static","transformCoordinate","useLookupTableScalarRange","viewSpecificProperties","customShaderAttributes"]),Q.setGetArray(t,e,["scalarRange"],2),e.viewSpecificProperties||(e.viewSpecificProperties={}),x0e(t,e)}Q.newInstance(S0e,"vtkMapper2D");var T0e={},_0e=`//VTK::System::Dec /*========================================================================= @@ -3504,7 +3504,7 @@ void main() discard; } } -`,Kge=`//VTK::System::Dec +`,E0e=`//VTK::System::Dec /*========================================================================= @@ -3557,10 +3557,10 @@ void main() //VTK::PositionVC::Impl } -`;const jU={BACKGROUND:0,FOREGROUND:1};var HU={DisplayLocation:jU};const{primTypes:hc}=Ul,{ScalarMode:C2}=jge,{vtkErrorMacro:S2}=Ao,Xge={type:"StartEvent"},qge={type:"EndEvent"};function Yge(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=Kge,n.Fragment=Hge,n.Geometry=""},t.render=()=>{const n=e._openGLRenderWindow.getContext();if(e.context!==n){e.context=n;for(let a=hc.Start;a{if(t.invokeEvent(Xge),e.renderable.getStatic()||e.renderable.update(),e.currentInput=e.renderable.getInputData(),t.invokeEvent(qge),!e.currentInput){S2("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===C2.USE_CELL_DATA||s===C2.USE_CELL_FIELD_DATA||s===C2.USE_FIELD_DATA||!o.getPointData().getScalars())&&s!==C2.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=cg.newInstance(),y=g.getNumberOfPoints();v.setNumberOfPoints(y);const m=[];for(let w=0;wo.getPointData().getArrayByName(v))};p.cellOffset+=e.primitives[hc.Points].getCABO().createVBO(o.getVerts(),"verts",c,p),p.cellOffset+=e.primitives[hc.Lines].getCABO().createVBO(o.getLines(),"lines",c,p),p.cellOffset+=e.primitives[hc.Tris].getCABO().createVBO(o.getPolys(),"polys",c,p),p.cellOffset+=e.primitives[hc.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=hc.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=Le.substitute(c,"//VTK::Color::Dec",["uniform samplerBuffer texture1;"]).result,c=Le.substitute(c,"//VTK::Color::Impl",["gl_FragData[0] = texelFetchBuffer(texture1, gl_PrimitiveID + PrimitiveIDOffset);"]).result),e.lastBoundBO.getCABO().getColorComponents()!==0?(a=Le.substitute(a,"//VTK::Color::Dec",["in vec4 diffuseColor;","out vec4 fcolorVSOutput;"]).result,a=Le.substitute(a,"//VTK::Color::Impl",["fcolorVSOutput = diffuseColor;"]).result,s=Le.substitute(s,"//VTK::Color::Dec",[`in vec4 fcolorVSOutput[]; -`,"out vec4 fcolorGSOutput;"]).result,s=Le.substitute(s,"//VTK::Color::Impl",["fcolorGSOutput = fcolorVSOutput[i];"]).result,c=Le.substitute(c,"//VTK::Color::Dec",["in vec4 fcolorVSOutput;"]).result,c=Le.substitute(c,"//VTK::Color::Impl",["gl_FragData[0] = fcolorVSOutput;"]).result):(c=Le.substitute(c,"//VTK::Color::Dec",["uniform vec4 diffuseColor;"]).result,c=Le.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=Le.substitute(a,"//VTK::TCoord::Dec",["in float tcoordMC;","out float tcoordVCVSOutput;"]).result,a=Le.substitute(a,"//VTK::TCoord::Impl",["tcoordVCVSOutput = tcoordMC;"]).result,s=Le.substitute(s,"//VTK::TCoord::Dec",[`in float tcoordVCVSOutput[]; -`,"out float tcoordVCGSOutput;"]).result,s=Le.substitute(s,["//VTK::TCoord::Impl","tcoordVCGSOutput = tcoordVCVSOutput[i];"]).result,c=Le.substitute(c,"//VTK::TCoord::Dec",["in float tcoordVCVSOutput;","uniform sampler2D texture1;"]).result,c=Le.substitute(c,"//VTK::TCoord::Impl",["gl_FragData[0] = gl_FragData[0]*texture2D(texture1, vec2(tcoordVCVSOutput,0));"]).result):l===2&&(a=Le.substitute(a,"//VTK::TCoord::Dec",["in vec2 tcoordMC;","out vec2 tcoordVCVSOutput;"]).result,a=Le.substitute(a,"//VTK::TCoord::Impl",["tcoordVCVSOutput = tcoordMC;"]).result,s=Le.substitute(s,"//VTK::TCoord::Dec",[`in vec2 tcoordVCVSOutput[]; -`,"out vec2 tcoordVCGSOutput;"]).result,s=Le.substitute(s,"//VTK::TCoord::Impl",["tcoordVCGSOutput = tcoordVCVSOutput[i];"]).result,c=Le.substitute(c,"//VTK::TCoord::Dec",["in vec2 tcoordVCVSOutput;","uniform sampler2D texture1;"]).result,c=Le.substitute(c,"//VTK::TCoord::Impl",["gl_FragData[0] = gl_FragData[0]*texture2D(texture1, tcoordVCVSOutput.st);"]).result),e.haveCellScalars&&(s=Le.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=Le.substitute(a,"//VTK::Picking::Dec",["uniform vec3 mapperIndex;","uniform int picking;"]).result,a=Le.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)||S2("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)||S2(`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)||S2("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]=Np(f[0]*(g[2]-g[0])/(u[2]-u[0])),f[1]=Np(f[1]*(g[3]-g[1])/(u[3]-u[1]));const p=e._openGLRenderer.getParent().getSize(),v=Np(d[0]-(g[0]-u[0])*p[0]),y=Np(d[1]-(g[1]-u[1])*p[1]),m=-v;let w=-v+f[0];const x=-y;let C=-y+f[1];m===w&&(w=m+1),x===C&&(C=x+1);const S=Lt(new Float64Array(16));S[0]=2/(w-m),S[1*4+1]=2/(C-x),S[0*4+3]=-1*(w+m)/(w-m),S[1*4+3]=-1*(C+x)/(C-x),S[2*4+2]=0,S[2*4+3]=o.getProperty().getDisplayLocation()===jU.FOREGROUND?-1:1,S[3*4+3]=1,Mn(S,S),a.setUniformMatrix("WCVCMatrix",r([S,c],tm,e.tmpMat4))},t.getAllocatedGPUMemoryInBytes=()=>{let n=0;return e.primitives.forEach(i=>{n+=i.getAllocatedGPUMemoryInBytes()}),n}}const Jge={context:null,VBOBuildTime:0,VBOBuildString:null,primitives:null,primTypes:null,shaderRebuildString:null};function Zge(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Jge,r),gr.extend(t,e,r),Ol.implementReplaceShaderCoincidentOffset(t,e,r),Ol.implementBuildShadersWithReplacements(t,e,r),e.primitives=[],e.primTypes=hc,e.tmpMat4=Lt(new Float64Array(16));for(let n=hc.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 XU(t,e){return r=>{const n=r.getLastTickBounds(),i=U8().domain([n[0],n[1]]),o=i.ticks(5),a=i.tickFormat(5);r.setTicks(o),r.setTickStrings(o.map(a))}}function tpe(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;v3(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,v3(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)=>{v3(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,y){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:y,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()===epe.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 y=0;y2&&arguments[2]!==void 0?arguments[2]:{renderable:null};Object.assign(e,{},r),Q.obj(t,e),Q.setGet(t,e,["axisTitlePixelOffset","tickLabelPixelOffset","renderable","topTitle","ticks","tickStrings"]),Q.get(t,e,["lastSize","lastAspectRatio","lastTickBounds","axisTextStyle","tickTextStyle","barActor","tmActor"]),Q.getArray(t,e,["boxPosition","boxSize"]),Q.setArray(t,e,["boxPosition","boxSize"],2),e.forceUpdate=!1,e.lastRebuildTime={},Q.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=Xo.newInstance(),e.barMapper.setInterpolateScalarsBeforeMapping(!0),e.barMapper.setUseLookupTableScalarRange(!0),e.polyData=Dr.newInstance(),e.barMapper.setInputData(e.polyData),e.barActor=os.newInstance(),e.barActor.setMapper(e.barMapper),e.tmPolyData=Dr.newInstance(),e.tmMapper=Xo.newInstance(),e.tmMapper.setInputData(e.tmPolyData),e.tmTexture=C0.newInstance({resizable:!0}),e.tmTexture.setInterpolate(!1),e.tmActor=os.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=[],tpe(t,e)},"vtkScalarBarActorHelper");function rpe(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(KU(t,e))},t.resetGenerateTicksToDefault=()=>{t.setGenerateTicks(XU())}}function ipe(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 qU(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ipe(r)),e.autoLayout||(e.autoLayout=KU(t,e)),e.generateTicks||(e.generateTicks=XU()),os.extend(t,e,r),t.getProperty().setDiffuse(0),t.getProperty().setAmbient(1),Q.setGet(t,e,["automated","autoLayout","axisTitlePixelOffset","axisLabel","scalarsToColors","tickLabelPixelOffset","generateTicks","drawNanAnnotation","drawBelowRangeSwatch","drawAboveRangeSwatch"]),Q.get(t,e,["axisTextStyle","tickTextStyle"]),Q.getArray(t,e,["barPosition","barSize","boxPosition","boxSize"]),Q.setArray(t,e,["barPosition","barSize","boxPosition","boxSize"],2),rpe(t,e)}const ope=Q.newInstance(qU,"vtkScalarBarActor");var YU={newInstance:ope,extend:qU,newScalarBarActorHelper:npe};function ape(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 spe={};function cpe(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,spe,r),gr.extend(t,e,r),e.scalarBarActorHelper=YU.newScalarBarActorHelper(),ape(t,e)}const lpe=jn(cpe,"vtkOpenGLScalarBarActor");Ri("vtkScalarBarActor",lpe);const{CoordinateSystem:a7}=Ym;function upe(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()===a7.WORLD&&(e.bufferShift[0]-=i[0],e.bufferShift[1]-=i[1],e.bufferShift[2]-=i[2]),Mn(e.keyMatrices.bcwc,n),e.renderable.getIsIdentity()?Lt(e.keyMatrices.normalMatrix):(zr(e.keyMatrices.normalMatrix,e.keyMatrices.bcwc),e.keyMatrices.normalMatrix[3]=0,e.keyMatrices.normalMatrix[7]=0,e.keyMatrices.normalMatrix[11]=0,ei(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix),Mn(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix)),or(e.keyMatrices.bcwc,e.keyMatrices.bcwc,[-e.bufferShift[0],-e.bufferShift[1],-e.bufferShift[2]]),e.renderable.getCoordinateSystem()===a7.WORLD?or(e.keyMatrices.bcsc,e.keyMatrices.bcwc,[-i[0],-i[1],-i[2]]):zr(e.keyMatrices.bcsc,e.keyMatrices.bcwc),e.keyMatricesTime.modified()}return e.keyMatrices}}const fpe={keyMatricesTime:null,keyMatrices:null,propID:void 0,bufferShift:void 0};function dpe(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,fpe,r),gr.extend(t,e,r),e.keyMatricesTime={},Q.obj(e.keyMatricesTime,{mtime:0}),e.keyMatrices={normalMatrix:new Float64Array(16),bcwc:new Float64Array(16),bcsc:new Float64Array(16)},Q.get(t,e,["propID","keyMatricesTime"]),e.bufferShift=[0,0,0,0],upe(t,e)}const hpe=Q.newInstance(dpe);Vs("vtkActor",hpe);const{CoordinateSystem:s7}=Ym;function gpe(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()===s7.WORLD&&(e.bufferShift[0]-=n[0],e.bufferShift[1]-=n[1],e.bufferShift[2]-=n[2]),Lt(e.keyMatrices.bcwc),Lt(e.keyMatrices.normalMatrix),or(e.keyMatrices.bcwc,e.keyMatrices.bcwc,[-e.bufferShift[0],-e.bufferShift[1],-e.bufferShift[2]]),e.renderable.getCoordinateSystem()===s7.WORLD?or(e.keyMatrices.bcsc,e.keyMatrices.bcwc,[-n[0],-n[1],-n[2]]):zr(e.keyMatrices.bcsc,e.keyMatrices.bcwc),e.keyMatricesTime.modified()}return e.keyMatrices}}const ppe={keyMatricesTime:null,keyMatrices:null,propID:void 0,bufferShift:void 0};function mpe(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ppe,r),gr.extend(t,e,r),e.keyMatricesTime={},Q.obj(e.keyMatricesTime,{mtime:0}),e.keyMatrices={normalMatrix:new Float64Array(16),bcwc:new Float64Array(16),bcsc:new Float64Array(16)},Q.get(t,e,["propID","keyMatricesTime"]),e.bufferShift=[0,0,0,0],gpe(t,e)}const vpe=Q.newInstance(mpe);Vs("vtkActor2D",vpe);function ype(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 wpe={};function xpe(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,wpe,r),gr.extend(t,e,r),e.CubeAxesActorHelper=$U.newCubeAxesActorHelper(),ype(t,e)}const Cpe=jn(xpe,"vtkWebGPUCubeAxesActor");Vs("vtkCubeAxesActor",Cpe);const{DisplayLocation:ZT}=HU;function Spe(t,e){e.classHierarchy.push("vtkProperty2D"),t.setDisplayLocationToBackground=()=>t.setDisplayLocation(ZT.BACKGROUND),t.setDisplayLocationToForeground=()=>t.setDisplayLocation(ZT.FOREGROUND),t.setRepresentationToWireframe=()=>t.setRepresentation(Io.WIREFRAME),t.setRepresentationToSurface=()=>t.setRepresentation(Io.SURFACE),t.setRepresentationToPoints=()=>t.setRepresentation(Io.POINTS),t.getRepresentationAsString=()=>Q.enumToString(Io,e.representation)}const Tpe={color:[1,1,1],opacity:1,pointSize:1,lineWidth:1,representation:Io.SURFACE,displayLocation:ZT.FOREGROUND};function JU(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Tpe,r),Q.obj(t,e),Q.setGet(t,e,["opacity","lineWidth","pointSize","displayLocation","representation"]),Q.setGetArray(t,e,["color"],3),Spe(t,e)}const _pe=Q.newInstance(JU,"vtkProperty2D");var Epe={newInstance:_pe,extend:JU,...HU};const{BufferUsage:uo,PrimitiveTypes:sa}=Lg,{Representation:T2}=w0,{ScalarMode:_2}=Xo,{CoordinateSystem:bpe}=Ym,{DisplayLocation:Dpe}=Epe,Ipe=` +`;const QV={BACKGROUND:0,FOREGROUND:1};var eF={DisplayLocation:QV};const{primTypes:tc}=wl,{ScalarMode:N2}=T0e,{vtkErrorMacro:k2}=xo,b0e={type:"StartEvent"},D0e={type:"EndEvent"};function I0e(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=E0e,n.Fragment=_0e,n.Geometry=""},t.render=()=>{const n=e._openGLRenderWindow.getContext();if(e.context!==n){e.context=n;for(let a=tc.Start;a{if(t.invokeEvent(b0e),e.renderable.getStatic()||e.renderable.update(),e.currentInput=e.renderable.getInputData(),t.invokeEvent(D0e),!e.currentInput){k2("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===N2.USE_CELL_DATA||s===N2.USE_CELL_FIELD_DATA||s===N2.USE_FIELD_DATA||!o.getPointData().getScalars())&&s!==N2.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=vm.newInstance(),y=g.getNumberOfPoints();v.setNumberOfPoints(y);const m=[];for(let w=0;wo.getPointData().getArrayByName(v))};p.cellOffset+=e.primitives[tc.Points].getCABO().createVBO(o.getVerts(),"verts",c,p),p.cellOffset+=e.primitives[tc.Lines].getCABO().createVBO(o.getLines(),"lines",c,p),p.cellOffset+=e.primitives[tc.Tris].getCABO().createVBO(o.getPolys(),"polys",c,p),p.cellOffset+=e.primitives[tc.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=tc.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=Pe.substitute(c,"//VTK::Color::Dec",["uniform samplerBuffer texture1;"]).result,c=Pe.substitute(c,"//VTK::Color::Impl",["gl_FragData[0] = texelFetchBuffer(texture1, gl_PrimitiveID + PrimitiveIDOffset);"]).result),e.lastBoundBO.getCABO().getColorComponents()!==0?(a=Pe.substitute(a,"//VTK::Color::Dec",["in vec4 diffuseColor;","out vec4 fcolorVSOutput;"]).result,a=Pe.substitute(a,"//VTK::Color::Impl",["fcolorVSOutput = diffuseColor;"]).result,s=Pe.substitute(s,"//VTK::Color::Dec",[`in vec4 fcolorVSOutput[]; +`,"out vec4 fcolorGSOutput;"]).result,s=Pe.substitute(s,"//VTK::Color::Impl",["fcolorGSOutput = fcolorVSOutput[i];"]).result,c=Pe.substitute(c,"//VTK::Color::Dec",["in vec4 fcolorVSOutput;"]).result,c=Pe.substitute(c,"//VTK::Color::Impl",["gl_FragData[0] = fcolorVSOutput;"]).result):(c=Pe.substitute(c,"//VTK::Color::Dec",["uniform vec4 diffuseColor;"]).result,c=Pe.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=Pe.substitute(a,"//VTK::TCoord::Dec",["in float tcoordMC;","out float tcoordVCVSOutput;"]).result,a=Pe.substitute(a,"//VTK::TCoord::Impl",["tcoordVCVSOutput = tcoordMC;"]).result,s=Pe.substitute(s,"//VTK::TCoord::Dec",[`in float tcoordVCVSOutput[]; +`,"out float tcoordVCGSOutput;"]).result,s=Pe.substitute(s,["//VTK::TCoord::Impl","tcoordVCGSOutput = tcoordVCVSOutput[i];"]).result,c=Pe.substitute(c,"//VTK::TCoord::Dec",["in float tcoordVCVSOutput;","uniform sampler2D texture1;"]).result,c=Pe.substitute(c,"//VTK::TCoord::Impl",["gl_FragData[0] = gl_FragData[0]*texture2D(texture1, vec2(tcoordVCVSOutput,0));"]).result):l===2&&(a=Pe.substitute(a,"//VTK::TCoord::Dec",["in vec2 tcoordMC;","out vec2 tcoordVCVSOutput;"]).result,a=Pe.substitute(a,"//VTK::TCoord::Impl",["tcoordVCVSOutput = tcoordMC;"]).result,s=Pe.substitute(s,"//VTK::TCoord::Dec",[`in vec2 tcoordVCVSOutput[]; +`,"out vec2 tcoordVCGSOutput;"]).result,s=Pe.substitute(s,"//VTK::TCoord::Impl",["tcoordVCGSOutput = tcoordVCVSOutput[i];"]).result,c=Pe.substitute(c,"//VTK::TCoord::Dec",["in vec2 tcoordVCVSOutput;","uniform sampler2D texture1;"]).result,c=Pe.substitute(c,"//VTK::TCoord::Impl",["gl_FragData[0] = gl_FragData[0]*texture2D(texture1, tcoordVCVSOutput.st);"]).result),e.haveCellScalars&&(s=Pe.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=Pe.substitute(a,"//VTK::Picking::Dec",["uniform vec3 mapperIndex;","uniform int picking;"]).result,a=Pe.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)||k2("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)||k2(`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)||k2("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]=Qg(f[0]*(g[2]-g[0])/(u[2]-u[0])),f[1]=Qg(f[1]*(g[3]-g[1])/(u[3]-u[1]));const p=e._openGLRenderer.getParent().getSize(),v=Qg(d[0]-(g[0]-u[0])*p[0]),y=Qg(d[1]-(g[1]-u[1])*p[1]),m=-v;let w=-v+f[0];const x=-y;let C=-y+f[1];m===w&&(w=m+1),x===C&&(C=x+1);const S=Pt(new Float64Array(16));S[0]=2/(w-m),S[1*4+1]=2/(C-x),S[0*4+3]=-1*(w+m)/(w-m),S[1*4+3]=-1*(C+x)/(C-x),S[2*4+2]=0,S[2*4+3]=o.getProperty().getDisplayLocation()===QV.FOREGROUND?-1:1,S[3*4+3]=1,wn(S,S),a.setUniformMatrix("WCVCMatrix",r([S,c],pm,e.tmpMat4))},t.getAllocatedGPUMemoryInBytes=()=>{let n=0;return e.primitives.forEach(i=>{n+=i.getAllocatedGPUMemoryInBytes()}),n}}const O0e={context:null,VBOBuildTime:0,VBOBuildString:null,primitives:null,primTypes:null,shaderRebuildString:null};function M0e(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,O0e,r),cr.extend(t,e,r),dl.implementReplaceShaderCoincidentOffset(t,e,r),dl.implementBuildShadersWithReplacements(t,e,r),e.primitives=[],e.primTypes=tc,e.tmpMat4=Pt(new Float64Array(16));for(let n=tc.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 nF(t,e){return r=>{const n=r.getLastTickBounds(),i=ME().domain([n[0],n[1]]),o=i.ticks(5),a=i.tickFormat(5);r.setTicks(o),r.setTickStrings(o.map(a))}}function L0e(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;EC(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,EC(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)=>{EC(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,y){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:y,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()===R0e.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 y=0;y2&&arguments[2]!==void 0?arguments[2]:{renderable:null};Object.assign(e,{},r),Q.obj(t,e),Q.setGet(t,e,["axisTitlePixelOffset","tickLabelPixelOffset","renderable","topTitle","ticks","tickStrings"]),Q.get(t,e,["lastSize","lastAspectRatio","lastTickBounds","axisTextStyle","tickTextStyle","barActor","tmActor"]),Q.getArray(t,e,["boxPosition","boxSize"]),Q.setArray(t,e,["boxPosition","boxSize"],2),e.forceUpdate=!1,e.lastRebuildTime={},Q.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=ya.newInstance(),e.barMapper.setInterpolateScalarsBeforeMapping(!0),e.barMapper.setUseLookupTableScalarRange(!0),e.polyData=Nr.newInstance(),e.barMapper.setInputData(e.polyData),e.barActor=yc.newInstance(),e.barActor.setMapper(e.barMapper),e.tmPolyData=Nr.newInstance(),e.tmMapper=ya.newInstance(),e.tmMapper.setInputData(e.tmPolyData),e.tmTexture=Xd.newInstance({resizable:!0}),e.tmTexture.setInterpolate(!1),e.tmActor=yc.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=[],L0e(t,e)},"vtkScalarBarActorHelper");function N0e(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(tF(t,e))},t.resetGenerateTicksToDefault=()=>{t.setGenerateTicks(nF())}}function k0e(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 rF(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,k0e(r)),e.autoLayout||(e.autoLayout=tF(t,e)),e.generateTicks||(e.generateTicks=nF()),yc.extend(t,e,r),t.getProperty().setDiffuse(0),t.getProperty().setAmbient(1),Q.setGet(t,e,["automated","autoLayout","axisTitlePixelOffset","axisLabel","scalarsToColors","tickLabelPixelOffset","generateTicks","drawNanAnnotation","drawBelowRangeSwatch","drawAboveRangeSwatch"]),Q.get(t,e,["axisTextStyle","tickTextStyle"]),Q.getArray(t,e,["barPosition","barSize","boxPosition","boxSize"]),Q.setArray(t,e,["barPosition","barSize","boxPosition","boxSize"],2),N0e(t,e)}const V0e=Q.newInstance(rF,"vtkScalarBarActor");var iF={newInstance:V0e,extend:rF,newScalarBarActorHelper:A0e};function F0e(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 U0e={};function B0e(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,U0e,r),cr.extend(t,e,r),e.scalarBarActorHelper=iF.newScalarBarActorHelper(),F0e(t,e)}const G0e=Wn(B0e,"vtkOpenGLScalarBarActor");Si("vtkScalarBarActor",G0e);const{CoordinateSystem:H9}=f1;function W0e(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()===H9.WORLD&&(e.bufferShift[0]-=i[0],e.bufferShift[1]-=i[1],e.bufferShift[2]-=i[2]),wn(e.keyMatrices.bcwc,n),e.renderable.getIsIdentity()?Pt(e.keyMatrices.normalMatrix):(Pr(e.keyMatrices.normalMatrix,e.keyMatrices.bcwc),e.keyMatrices.normalMatrix[3]=0,e.keyMatrices.normalMatrix[7]=0,e.keyMatrices.normalMatrix[11]=0,$r(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix),wn(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix)),ur(e.keyMatrices.bcwc,e.keyMatrices.bcwc,[-e.bufferShift[0],-e.bufferShift[1],-e.bufferShift[2]]),e.renderable.getCoordinateSystem()===H9.WORLD?ur(e.keyMatrices.bcsc,e.keyMatrices.bcwc,[-i[0],-i[1],-i[2]]):Pr(e.keyMatrices.bcsc,e.keyMatrices.bcwc),e.keyMatricesTime.modified()}return e.keyMatrices}}const z0e={keyMatricesTime:null,keyMatrices:null,propID:void 0,bufferShift:void 0};function $0e(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,z0e,r),cr.extend(t,e,r),e.keyMatricesTime={},Q.obj(e.keyMatricesTime,{mtime:0}),e.keyMatrices={normalMatrix:new Float64Array(16),bcwc:new Float64Array(16),bcsc:new Float64Array(16)},Q.get(t,e,["propID","keyMatricesTime"]),e.bufferShift=[0,0,0,0],W0e(t,e)}const j0e=Q.newInstance($0e);Is("vtkActor",j0e);const{CoordinateSystem:K9}=f1;function H0e(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()===K9.WORLD&&(e.bufferShift[0]-=n[0],e.bufferShift[1]-=n[1],e.bufferShift[2]-=n[2]),Pt(e.keyMatrices.bcwc),Pt(e.keyMatrices.normalMatrix),ur(e.keyMatrices.bcwc,e.keyMatrices.bcwc,[-e.bufferShift[0],-e.bufferShift[1],-e.bufferShift[2]]),e.renderable.getCoordinateSystem()===K9.WORLD?ur(e.keyMatrices.bcsc,e.keyMatrices.bcwc,[-n[0],-n[1],-n[2]]):Pr(e.keyMatrices.bcsc,e.keyMatrices.bcwc),e.keyMatricesTime.modified()}return e.keyMatrices}}const K0e={keyMatricesTime:null,keyMatrices:null,propID:void 0,bufferShift:void 0};function q0e(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,K0e,r),cr.extend(t,e,r),e.keyMatricesTime={},Q.obj(e.keyMatricesTime,{mtime:0}),e.keyMatrices={normalMatrix:new Float64Array(16),bcwc:new Float64Array(16),bcsc:new Float64Array(16)},Q.get(t,e,["propID","keyMatricesTime"]),e.bufferShift=[0,0,0,0],H0e(t,e)}const X0e=Q.newInstance(q0e);Is("vtkActor2D",X0e);function Y0e(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 J0e={};function Z0e(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,J0e,r),cr.extend(t,e,r),e.CubeAxesActorHelper=ZV.newCubeAxesActorHelper(),Y0e(t,e)}const Q0e=Wn(Z0e,"vtkWebGPUCubeAxesActor");Is("vtkCubeAxesActor",Q0e);const{DisplayLocation:HS}=eF;function ehe(t,e){e.classHierarchy.push("vtkProperty2D"),t.setDisplayLocationToBackground=()=>t.setDisplayLocation(HS.BACKGROUND),t.setDisplayLocationToForeground=()=>t.setDisplayLocation(HS.FOREGROUND),t.setRepresentationToWireframe=()=>t.setRepresentation(mo.WIREFRAME),t.setRepresentationToSurface=()=>t.setRepresentation(mo.SURFACE),t.setRepresentationToPoints=()=>t.setRepresentation(mo.POINTS),t.getRepresentationAsString=()=>Q.enumToString(mo,e.representation)}const the={color:[1,1,1],opacity:1,pointSize:1,lineWidth:1,representation:mo.SURFACE,displayLocation:HS.FOREGROUND};function nhe(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,the,r),Q.obj(t,e),Q.setGet(t,e,["opacity","lineWidth","pointSize","displayLocation","representation"]),Q.setGetArray(t,e,["color"],3),ehe(t,e)}Q.newInstance(nhe,"vtkProperty2D");var rhe={...eF};const{BufferUsage:no,PrimitiveTypes:Zo}=eg,{Representation:V2}=Kd,{ScalarMode:F2}=ya,{CoordinateSystem:ihe}=f1,{DisplayLocation:ohe}=rhe,ahe=` //VTK::Renderer::Dec //VTK::Color::Dec @@ -3597,7 +3597,7 @@ fn main( return output; } -`,Mpe=` +`,she=` struct PBRData { diffuse: vec3, specular: vec3, @@ -3873,36 +3873,36 @@ fn main( return output; } -`;function c7(t){return t.indexOf("edge")>=0}function Ope(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!==bpe.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()===Dpe.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===sa.Verts?!1:e.primitiveType===sa.Triangles||e.primitiveType===sa.TriangleStrips?n===T2.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=fr.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=fr.substitute(a,"//VTK::Position::Impl",["pCoord = vec4(pCoord.xyz/pCoord.w, 1.0);","pCoord.z = mapperUBO.ZValue;","//VTK::Position::Impl"]).result)):(a=fr.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=fr.substitute(a,"//VTK::Position::Impl",[" pCoord.z = mapperUBO.ZValue;","//VTK::Position::Impl"]).result)),t.haveWideLines()&&(o.addBuiltinInput("u32","@builtin(instance_index) instanceIndex"),a=fr.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=fr.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=fr.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=fr.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=fr.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&&!c7(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=fr.substitute(c,"//VTK::Light::Impl",f).result,s.setCode(c)}else c=fr.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(c7(r)){const l=n.getShaderDescription("fragment");let f=l.getCode();f=fr.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=fr.substitute(s,"//VTK::Color::Impl",[" output.color = colorVI;"]).result,a.setCode(s);const c=n.getShaderDescription("fragment");s=c.getCode(),s=fr.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,y,m,w,x,C,S,T,_,E,b,D,I,P,M,L,B;if(!i.hasAttribute("tcoord"))return;const o=n.getShaderDescription("vertex"),a=i.getBuffer("tcoord"),s=bo.getNumberOfComponentsFromBufferFormat(a.getArrayInformation()[0].format);let c=o.getCode();o.addOutput(`vec${s}`,"tcoordVS"),c=fr.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=j=>j?j.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((y=(v=f.getProperty()).getDiffuseTexture)==null?void 0:y.call(v))||u(f.getTextures()[0])||u(e.colorTexture))&&d.push("_diffuseMap = textureSample(DiffuseTexture, DiffuseTextureSampler, input.tcoordVS);"),(x=(w=(m=f.getProperty()).getRoughnessTexture)==null?void 0:w.call(m))!=null&&x.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);"),(b=(E=(_=f.getProperty()).getNormalTexture)==null?void 0:E.call(_))!=null&&b.getImageLoaded()&&u(f.getProperty().getNormalTexture())&&d.push("_normalMap = textureSample(NormalTexture, NormalTextureSampler, input.tcoordVS);"),(P=(I=(D=f.getProperty()).getAmbientOcclusionTexture)==null?void 0:I.call(D))!=null&&P.getImageLoaded()&&u(f.getProperty().getAmbientOcclusionTexture())&&d.push("_ambientOcclusionMap = textureSample(AmbientOcclusionTexture, AmbientOcclusionTextureSampler, input.tcoordVS);"),(B=(L=(M=f.getProperty()).getEmissionTexture)==null?void 0:L.call(M))!=null&&B.getImageLoaded()&&u(f.getProperty().getEmissionTexture())&&d.push("_emissionMap = textureSample(EmissionTexture, EmissionTextureSampler, input.tcoordVS);"),c=fr.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=fr.substitute(a,"//VTK::Select::Impl",[" var compositeID: u32 = 0u;"]).result,o.setCode(a)}},e.shaderReplacements.set("replaceShaderSelect",t.replaceShaderSelect),t.getUsage=(r,n)=>r===T2.POINTS||n===sa.Points?uo.Verts:n===sa.Lines?uo.Lines:r===T2.WIREFRAME?n===sa.Triangles?uo.LinesFromTriangles:uo.LinesFromStrips:n===sa.Triangles?uo.Triangles:n===sa.TriangleStrips?uo.Strips:n===sa.TriangleEdges?uo.LinesFromTriangles:uo.LinesFromStrips,t.getHashFromUsage=r=>`pt${r}`,t.getTopologyFromUsage=r=>{switch(r){case uo.Triangles:return"triangle-list";case uo.Verts:return"point-list";case uo.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===sa.TriangleEdges&&(c=!0,a=T2.WIREFRAME);const l=e.vertexInput,f=r.getPoints();let u;if(n){const y={hash:`R${a}P${i}${n.getMTime()}`,usage:uo.Index,cells:n,numberOfPoints:f.getNumberOfPoints(),primitiveType:i,representation:a};u=s.getBufferManager().getBuffer(y),l.setIndexBuffer(u)}else l.setIndexBuffer(null);if(f){const y=e.WebGPUActor.getBufferShift(e.WebGPURenderer),m={hash:`${f.getMTime()}I${u.getMTime()}${y.join()}float32x4`,usage:uo.PointArray,format:"float32x4",dataArray:f,indexBuffer:u,shift:y,packExtra:!0},w=s.getBufferManager().getBuffer(m);l.addBuffer(w,["vertexBC"])}else l.removeBufferIfPresent("vertexBC");const d=t.getUsage(a,i);if(e._usesCellNormals=!1,!e.is2D&&(d===uo.Triangles||d===uo.Strips)){const y=r.getPointData().getNormals(),m={format:"snorm8x4",indexBuffer:u,packExtra:!0,shift:0,scale:127};if(y){m.hash=`${y.getMTime()}I${u.getMTime()}snorm8x4`,m.dataArray=y,m.usage=uo.PointArray;const w=s.getBufferManager().getBuffer(m);l.addBuffer(w,["normalMC"])}else if(i===sa.Triangles){e._usesCellNormals=!0,m.hash=`PFN${f.getMTime()}I${u.getMTime()}snorm8x4`,m.dataArray=f,m.cells=n,m.usage=uo.NormalsFromPoints;const w=s.getBufferManager().getBuffer(m);l.addBuffer(w,["normalMC"])}else l.removeBufferIfPresent("normalMC")}else l.removeBufferIfPresent("normalMC");let h=!1;if(e.renderable.getScalarVisibility()){const y=e.renderable.getColorMapColors();if(y&&!c){const m=e.renderable.getScalarMode();let w=!1;(m===_2.USE_CELL_DATA||m===_2.USE_CELL_FIELD_DATA||m===_2.USE_FIELD_DATA||!r.getPointData().getScalars())&&m!==_2.USE_POINT_FIELD_DATA&&y&&(w=!0);const x={usage:uo.PointArray,format:"unorm8x4",hash:`${w}${y.getMTime()}I${u.getMTime()}unorm8x4`,dataArray:y,indexBuffer:u,cellData:w,cellOffset:0},C=s.getBufferManager().getBuffer(x);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 y=s.getBufferManager().getBufferForPointArray(g,l.getIndexBuffer());l.addBuffer(y,["tcoord"])}else l.removeBufferIfPresent("tcoord")},t.updateTextures=()=>{var c,l,f,u,d,h,g,p,v,y,m,w,x,C,S;const r=[],n=[],i=(l=(c=e.renderable).getColorTextureMap)==null?void 0:l.call(c);i&&(e.colorTexture||(e.colorTexture=C0.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((y=(v=o.getProperty()).getNormalTexture)!=null&&y.call(v)){const T=["Normal",o.getProperty().getNormalTexture()];s.push(T)}if((w=(m=o.getProperty()).getAmbientOcclusionTexture)!=null&&w.call(m)){const T=["AmbientOcclusion",o.getProperty().getAmbientOcclusionTexture()];s.push(T)}if((C=(x=o.getProperty()).getEmissionTexture)!=null&&C.call(x)){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===sa.TriangleEdges||e.primitiveType===sa.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=bo.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!==sa.TriangleEdges&&e.primitiveType!==sa.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 Ppe={is2D:!1,cellArray:null,currentInput:null,cellOffset:0,primitiveType:0,colorTexture:null,renderEncoder:null,textures:null};function ZU(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Ppe,r),Rk.extend(t,e,r),e.fragmentShaderTemplate=Mpe,e.vertexShaderTemplate=Ipe,e._tmpMat3=Ns(new Float64Array(9)),e._tmpMat4=Lt(new Float64Array(16)),e.UBO=Fh.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"),vi(t,e,["cellArray","currentInput","cellOffset","is2D","primitiveType","renderEncoder"]),e.textures=[],Ope(t,e)}const Rpe=jn(ZU,"vtkWebGPUCellArrayMapper");var QU={newInstance:Rpe,extend:ZU};const{PrimitiveTypes:E2}=Lg;function Ape(t,e){e.classHierarchy.push("vtkWebGPUPolyDataMapper"),t.createCellArrayMapper=()=>QU.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=E2.Points;a<=E2.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=E2.TriangleEdges;a<=E2.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 Lpe={primitives:null};function Npe(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Lpe,r),gr.extend(t,e,r),e.primitives=[],Ape(t,e)}const kpe=jn(Npe,"vtkWebGPUPolyDataMapper");Vs("vtkMapper",kpe);const{PrimitiveTypes:l7}=Lg;function Vpe(t,e){e.classHierarchy.push("vtkWebGPUPolyDataMapper2D"),t.createCellArrayMapper=()=>QU.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=l7.Points;a<=l7.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 Fpe(t){return{primitives:[],...t}}function Upe(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Fpe(r)),gr.extend(t,e,r),e.primitives=[],Vpe(t,e)}const Bpe=jn(Upe,"vtkWebGPUPolyDataMapper2D");Vs("vtkMapper2D",Bpe);function Gpe(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 Wpe={};function $pe(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Wpe,r),gr.extend(t,e,r),e.scalarBarActorHelper=YU.newScalarBarActorHelper(),Gpe(t,e)}const zpe=jn($pe,"vtkWebGPUScalarBarActor");Vs("vtkScalarBarActor",zpe);function jpe(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=bo.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=bo.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=Gk.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 Hpe={texture:null,handle:null,sampler:null,label:null};function eB(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Hpe,r),Q.obj(t,e),e.bindGroupLayoutEntry={visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,texture:{sampleType:"float",viewDimension:"2d"}},e.bindGroupTime={},Q.obj(e.bindGroupTime,{mtime:0}),Q.get(t,e,["bindGroupTime","texture"]),Q.setGet(t,e,["bindGroupLayoutEntry","label","sampler"]),jpe(t,e)}const Kpe=Q.newInstance(eB);var Xpe={newInstance:Kpe,extend:eB};const{BufferUsage:u7}=Lg;function qpe(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=bo.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),y=v/p,m=Q.newTypedArray(d?"Uint16Array":h.constructor.name,y*l*f);for(let w=0;w{const r=bo.getDetailsFromTextureFormat(e.format);return r.elementSize===2&&r.sampleType==="float"?1:255},t.getNumberOfComponents=()=>bo.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=Xpe.newInstance({label:r});return i.create(t,n),i}}const Ype={device:null,handle:null,buffer:null,ready:!1,label:null};function Jpe(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Ype,r),Q.obj(t,e),Q.get(t,e,["handle","ready","width","height","depth","format","usage"]),Q.setGet(t,e,["device","label"]),qpe(t,e)}Q.newInstance(Jpe);function Zpe(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 f7{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 Qpe{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 f7({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 f7&&(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 e1e(t,e){Zpe(e);const r=new Qpe({id:e.id,data:e.data,color:e.color,frameOfReferenceUID:e.frameOfReferenceUID,segmentIndex:e.segmentIndex??1});return{id:t,type:Of.CONTOUR,data:r,sizeInBytes:r.sizeInBytes}}function t1e(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 n1e(t,e){t1e(e);const r=new HF({id:e.id,points:e.points,polys:e.polys,color:e.color,frameOfReferenceUID:e.frameOfReferenceUID,segmentIndex:e.segmentIndex??1});return{id:t,type:Of.SURFACE,data:r,sizeInBytes:r.sizeInBytes}}function r1e(t){if(!t.id)throw new Error("Mesh must have an id");if(!t.arrayBuffer)throw new Error("Mesh must have an arrayBuffer");if(!(t.format in Cc))throw new Error(`Mesh format must be one of the following: ${Object.values(Cc).join(", ")}`)}function i1e(t,e){e.classHierarchy.push("vtkMTLReader");function r(){e.requestCount--,e.requestCount===0&&t.invokeBusy(!1)}function n(o){if(o[0]==="#"||o.length===0)return;const a=o.split(/[ \t]+/).map(s=>s.trim()).filter(s=>s.length);if(a[0]==="newmtl")a.shift(),e.currentMaterial=a.join(" ").trim();else if(e.currentMaterial){if(a.length<2)return;if(e.materials[e.currentMaterial]||(e.materials[e.currentMaterial]={}),e.materials[e.currentMaterial][a[0]]=a.slice(1),a[0]==="map_Kd"){const s=new Image;s.onload=()=>setTimeout(r,0),s.src=[e.baseURL,a[1]].join("/"),e.materials[e.currentMaterial].image=s,e.requestCount++}}}e.dataAccessHelper||(e.dataAccessHelper=av.get("http"));function i(o,a){return e.dataAccessHelper.fetchText(t,o,a)}t.setUrl=function(o){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(o.indexOf(".mtl")===-1&&!a.fullpath)e.baseURL=o,e.url=`${o}/index.mtl`;else{e.url=o;const s=o.split("/");s.pop(),e.baseURL=s.join("/")}return t.loadData(a)},t.loadData=o=>new Promise((a,s)=>{i(e.url,o).then(c=>{t.parseAsText(c),a()},c=>{s()})}),t.parseAsText=o=>{t.modified(),e.materials={},o.split(` -`).forEach(n)},t.isBusy=()=>!!e.requestCount,t.getMaterialNames=()=>Object.keys(e.materials),t.getMaterial=o=>e.materials[o],t.listImages=()=>Object.keys(e.materials).map(o=>e.materials[o].map_Kd).filter(o=>!!o).map(o=>o[0].trim()),t.setImageSrc=(o,a)=>new Promise((s,c)=>{const l=Object.keys(e.materials).find(u=>e.materials[u].map_Kd&&e.materials[u].map_Kd[0].trim()===o.trim()),f=e.materials[l];f&&f.image?(f.image.src=a,f.image.onload=()=>setTimeout(s,0)):s()}),t.applyMaterialToActor=(o,a)=>{const s=e.materials[o];if(s&&a){const c=[1,1,1],l={ambientColor:s.Ka?s.Ka.map(u=>Number(u)):c,specularColor:s.Ks?s.Ks.map(u=>Number(u)):c,diffuseColor:s.Kd?s.Kd.map(u=>Number(u)):c,opacity:s.d?Number(s.d):1,specularPower:s.Ns?Number(s.Ns):1},f=Number(s.illum||2);if(["ambient","diffuse","specular"].forEach((u,d)=>{l[u]=d<=f?1:0}),s.image){const u=C0.newInstance({interpolate:e.interpolateTextures});u.setImage(s.image),a.addTexture(u)}a.getProperty().set(l)}}}const o1e={numberOfOutputs:1,requestCount:0,materials:{},interpolateTextures:!0};function tB(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,o1e,r),xr(t,e),Qo(t,e,["url","baseURL"]),vi(t,e,["dataAccessHelper","interpolateTextures","splitGroup"]),QE(t,e,"busy"),i1e(t,e)}const a1e=jn(tB,"vtkMTLReader");var s1e={newInstance:a1e,extend:tB};function nB(t,e){r1e(e);const r=new M0e({...e}),n={id:t,type:Of.MESH,data:r,sizeInBytes:r.sizeInBytes};switch(e.format){case Cc.PLY:if(e.materialUrl){const i=new Image;return new Promise((o,a)=>{i.onload=()=>{try{const s=C0.newInstance();s.setInterpolate(!0),s.setImage(i),r.defaultActor.addTexture(s),o(n)}catch(s){a(s)}},i.onerror=s=>a(s),i.src=e.materialUrl})}return Promise.resolve(n);case Cc.OBJ:if(e.materialUrl){const i=s1e.newInstance();return i.setUrl(e.materialUrl).then(()=>{for(let o=0;o{throw new Error(`Failed to load material: ${o}`)})}return Promise.resolve(n);case Cc.STL:case Cc.VTP:return Promise.resolve(n);default:return Promise.reject(new Error(`Unsupported format: ${e.format}`))}}function c1e({url:t,signal:e,onload:r,loaderOptions:n}){return new Promise((i,o)=>{const a=new XMLHttpRequest;a.open("GET",t,!0);const s={},c=n.beforeSend(a,s),l=Object.assign({},s,c);a.responseType="arraybuffer",Object.keys(l).forEach(function(h){l[h]!==null&&a.setRequestHeader(h,l[h])});const f=function(h){r&&typeof r=="function"&&r(),e&&e.removeEventListener("abort",u),i(a.response)},u=()=>{a.abort(),a.removeEventListener("load",f),o(new Error("Request aborted"))};a.addEventListener("load",f);const d=(h,g)=>{const p={url:t,loaded:h,total:g};nt(ze,qe.GEOMETRY_LOAD_PROGRESS,{data:p})};a.onprogress=function(h){d(h.loaded,h.total)},e&&e.aborted?(a.abort(),o(new Error("Request aborted"))):e&&e.addEventListener("abort",u),a.send()})}function rB(t,e,r){return{promise:new Promise((i,o)=>{l1e(t,e,r).then(i).catch(o)}),cancelFn:void 0,decache:()=>{}}}async function l1e(t,e,r){const i=t.split(":").slice(1).join(":"),o=await c1e({url:i,loaderOptions:r});if(!e||!("geometryData"in e))throw new Error("Mesh must have a geometryData");return nB(i,{...e.geometryData,arrayBuffer:o})}let q5={beforeSend(t){}};function u1e(t){q5=Object.assign(q5,t)}function f1e(){return q5}const iB={};let h1;function oB(t,e){const r=t.indexOf(":"),n=t.substring(0,r);let i=iB[n];if(i==null){if(h1==null||typeof h1!="function")throw new Error(`No geometry loader for scheme ${n} has been registered`);i=h1}const o=i(t,e,q5);return o.promise.then(function(a){nt(ze,qe.GEOMETRY_LOADED,{geometry:a})},function(a){const s={geometryId:t,error:a};nt(ze,qe.GEOMETRY_LOADED_FAILED,s)}),o}function d1e(t,e){if(t===void 0)throw new Error("loadGeometry: parameter geometryId must not be undefined");let r=Ue.getGeometryLoadObject(t);return r!==void 0||(r=oB(t,e)),r.promise}async function h1e(t,e){if(t===void 0)throw new Error("createAndCacheGeometry: parameter geometryId must not be undefined");let r=Ue.getGeometryLoadObject(t);return r!==void 0||(r=oB(t,e),await Ue.putGeometryLoadObject(t,r)),r.promise}function g1e(t,e){if(t===void 0)throw new Error("createAndCacheGeometry: parameter geometryId must not be undefined");let r=Ue.getGeometry(t);if(r)return r;if(e.type===Of.CONTOUR)r=e1e(t,e.geometryData);else if(e.type===Of.SURFACE)r=n1e(t,e.geometryData);else if(e.type===Of.MESH)nB(t,e.geometryData).then(n=>{r=n});else throw new Error(`Unknown geometry type: ${e.type}`);return Ue.putGeometrySync(t,r),r}function aB(t,e){iB[t]=e}function p1e(t){const e=h1;return h1=t,e}aB("mesh",rB);const m1e=Object.freeze(Object.defineProperty({__proto__:null,createAndCacheGeometry:g1e,getOptions:f1e,loadAndCacheGeometry:h1e,loadGeometry:d1e,registerGeometryLoader:aB,registerUnknownGeometryLoader:p1e,setOptions:u1e},Symbol.toStringTag,{value:"Module"}));function v1e(t,e){if(!e||!e.imageIds||!e.imageIds.length)throw new Error("ImageIds must be provided to create a 4D streaming image volume");const{imageIds:r}=e,{splittingTag:n,imageIdGroups:i}=A8(r),o=Math.floor(i.length/2),a=ev(i[o],t),{metadata:s,dimensions:c,spacing:l,direction:f,sizeInBytes:u,origin:d,numberOfComponents:h,dataType:g}=a,p=f.slice(6,9),v=i.map(x=>c8(x,p).sortedImageIds),y=v.flat(),m=Rc.createScalarDynamicVolumeVoxelManager({dimensions:c,imageIdGroups:v,dimensionGroupNumber:1,numberOfComponents:h});let w=new OU({volumeId:t,metadata:s,dimensions:c,spacing:l,origin:d,direction:f,sizeInBytes:u,imageIds:y,imageIdGroups:v,splittingTag:n,voxelManager:m,numberOfComponents:h,dataType:g},{imageIds:y,loadStatus:{loaded:!1,loading:!1,cancelled:!1,cachedFrames:[],callbacks:[]}});return{promise:Promise.resolve(w),decache:()=>{w.destroy(),w=null},cancel:()=>{w.cancelLoading()}}}const y1e=Object.freeze(Object.defineProperty({__proto__:null,BaseRenderingEngine:C8,BaseVolumeViewport:Ir,CONSTANTS:Uu,ContextPoolRenderingEngine:WT,EPSILON:Gh,EVENTS:qe,Enums:ka,ImageVolume:x0,ProgressiveRetrieveImages:om,RenderingEngine:jF,Settings:Rr,StackViewport:hr,StreamingDynamicImageVolume:OU,StreamingImageVolume:oF,Surface:HF,TiledRenderingEngine:S8,VideoViewport:dg,Viewport:s0,VolumeViewport:lr,VolumeViewport3D:dx,WSIViewport:V5,addImageSlicesToViewports:$F,addVolumesToViewports:WF,cache:Ue,canRenderFloatTextures:$w,convertMapperToNotSharedMapper:dF,cornerstoneMeshLoader:rB,cornerstoneStreamingDynamicImageVolumeLoader:v1e,cornerstoneStreamingImageVolumeLoader:aF,createCanvas:ov,createViewportElement:NF,createVolumeActor:L5,createVolumeMapper:fF,eventTarget:ze,geometryLoader:m1e,getConfiguration:Iu,getEnabledElement:De,getEnabledElementByIds:Qn,getEnabledElementByViewportId:Vn,getEnabledElements:_U,getOrCreateCanvas:ts,getRenderingEngine:ir,getRenderingEngines:Yo,getShouldUseCPURendering:Lh,getWebWorkerManager:Fl,imageLoadPoolManager:zi,imageLoader:Kle,imageRetrievalPoolManager:Ug,init:QR,isCornerstoneInitialized:eA,metaData:o8,peerImport:tA,registerImageLoader:zd,requestPoolManager:zi,resetInitialization:Iq,resetUseCPURendering:Dq,setCanvasCreator:sfe,setConfiguration:Mq,setPreferSizeOverAccuracy:bq,setUseCPURendering:Eq,setVolumesForViewports:GF,triggerEvent:nt,utilities:Dn,version:ede,volumeLoader:iue},Symbol.toStringTag,{value:"Module"}));var Rl;(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"})(Rl||(Rl={}));var Qi;(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"})(Qi||(Qi={}));var Fn;(function(t){t.Active="Active",t.Passive="Passive",t.Enabled="Enabled",t.Disabled="Disabled"})(Fn||(Fn={}));var QT;(function(t){t.Default="",t.Highlighted="Highlighted",t.Selected="Selected",t.Locked="Locked",t.AutoGenerated="AutoGenerated"})(QT||(QT={}));const uu=QT;var U;(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.CROSSHAIR_TOOL_CENTER_CHANGED="CORNERSTONE_TOOLS_CROSSHAIR_TOOL_CENTER_CHANGED",t.VOLUMECROPPINGCONTROL_TOOL_CHANGED="CORNERSTONE_TOOLS_VOLUMECROPPINGCONTROL_TOOL_CHANGED",t.VOLUMECROPPING_TOOL_CHANGED="CORNERSTONE_TOOLS_VOLUMECROPPING_TOOL_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_CUT_MERGE_PROCESS_COMPLETED="CORNERSTONE_TOOLS_ANNOTATION_CUT_MERGE_PROCESS_COMPLETED",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.HISTORY_UNDO="CORNERSTONE_TOOLS_HISTORY_UNDO",t.HISTORY_REDO="CORNERSTONE_TOOLS_HISTORY_REDO",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"})(U||(U={}));var Pt;(function(t){t.Labelmap="Labelmap",t.Contour="Contour",t.Surface="Surface"})(Pt||(Pt={}));var kd;(function(t){t.UP="UP",t.DOWN="DOWN",t.LEFT="LEFT",t.RIGHT="RIGHT"})(kd||(kd={}));var _t;(function(t){t.OnInteractionStart="onInteractionStart",t.OnInteractionEnd="onInteractionEnd",t.Preview="preview",t.RejectPreview="rejectPreview",t.AcceptPreview="acceptPreview",t.Fill="fill",t.Interpolate="interpolate",t.StrategyFunction="strategyFunction",t.CreateIsInThreshold="createIsInThreshold",t.Initialize="initialize",t.INTERNAL_setValue="setValue",t.AddPreview="addPreview",t.ComputeInnerCircleRadius="computeInnerCircleRadius",t.GetStatistics="getStatistics",t.EnsureImageVolumeFor3DManipulation="ensureImageVolumeFor3DManipulation",t.EnsureSegmentationVolumeFor3DManipulation="ensureSegmentationVolumeFor3DManipulation"})(_t||(_t={}));var Qt;(function(t){t.Interaction="Interaction",t.HandlesUpdated="HandlesUpdated",t.StatsUpdated="StatsUpdated",t.InitialSetup="InitialSetup",t.Completed="Completed",t.InterpolationUpdated="InterpolationUpdated",t.History="History",t.MetadataReferenceModified="MetadataReferenceModified",t.LabelChange="LabelChange"})(Qt||(Qt={}));var e_;(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",t.COMPUTE_STATISTICS="Computing Statistics",t.INTERPOLATE_LABELMAP="Interpolating Labelmap",t.COMPUTE_LARGEST_BIDIRECTIONAL="Computing Largest Bidirectional",t.GENERATE_CONTOUR_SETS="Generating Contour Sets"})(e_||(e_={}));const Ac=e_,sB=Object.freeze(Object.defineProperty({__proto__:null,AnnotationStyleStates:uu,ChangeTypes:Qt,Events:U,get KeyboardBindings(){return Qi},get MouseBindings(){return Rl},SegmentationRepresentations:Pt,StrategyCallbacks:_t,get Swipe(){return kd},ToolModes:Fn,WorkerTypes:Ac},Symbol.toStringTag,{value:"Module"}));let mx={};function w1e(){mx={}}const d7={isInteractingWithTool:!1,isMultiPartToolActive:!1,tools:{},toolGroups:[],synchronizers:[],svgNodeCache:mx,enabledElements:[],handleRadius:6};let je={isInteractingWithTool:!1,isMultiPartToolActive:!1,tools:{},toolGroups:[],synchronizers:[],svgNodeCache:mx,enabledElements:[],handleRadius:6};function x1e(){w1e(),je={...structuredClone({...d7,svgNodeCache:{}}),svgNodeCache:{...d7.svgNodeCache}}}var C1e="Expected a function",cB="__lodash_hash_undefined__",lB=1/0,S1e="[object Function]",T1e="[object GeneratorFunction]",_1e="[object Symbol]",E1e=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,b1e=/^\w*$/,D1e=/^\./,I1e=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,M1e=/[\\^$.*+?()[\]{}|]/g,O1e=/\\(\\)?/g,P1e=/^\[object .+?Constructor\]$/,R1e=typeof to=="object"&&to&&to.Object===Object&&to,A1e=typeof self=="object"&&self&&self.Object===Object&&self,B8=R1e||A1e||Function("return this")();function L1e(t,e){return t==null?void 0:t[e]}function N1e(t){var e=!1;if(t!=null&&typeof t.toString!="function")try{e=!!(t+"")}catch{}return e}var k1e=Array.prototype,V1e=Function.prototype,uB=Object.prototype,y3=B8["__core-js_shared__"],h7=function(){var t=/[^.]+$/.exec(y3&&y3.keys&&y3.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),fB=V1e.toString,G8=uB.hasOwnProperty,dB=uB.toString,F1e=RegExp("^"+fB.call(G8).replace(M1e,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),g7=B8.Symbol,U1e=k1e.splice,B1e=hB(B8,"Map"),vm=hB(Object,"create"),p7=g7?g7.prototype:void 0,m7=p7?p7.toString:void 0;function c0(t){var e=-1,r=t?t.length:0;for(this.clear();++e-1}function Y1e(t,e){var r=this.__data__,n=vx(r,t);return n<0?r.push([t,e]):r[n][1]=e,this}Bg.prototype.clear=H1e;Bg.prototype.delete=K1e;Bg.prototype.get=X1e;Bg.prototype.has=q1e;Bg.prototype.set=Y1e;function S0(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}-${mU(ym)}`}}const Bn={iconContent:"",iconSize:16,viewBox:{x:16,y:16},mousePoint:{x:8,y:8},mousePointerGroupString:` +`;function q9(t){return t.indexOf("edge")>=0}function che(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!==ihe.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()===ohe.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===Zo.Verts?!1:e.primitiveType===Zo.Triangles||e.primitiveType===Zo.TriangleStrips?n===V2.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=ir.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=ir.substitute(a,"//VTK::Position::Impl",["pCoord = vec4(pCoord.xyz/pCoord.w, 1.0);","pCoord.z = mapperUBO.ZValue;","//VTK::Position::Impl"]).result)):(a=ir.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=ir.substitute(a,"//VTK::Position::Impl",[" pCoord.z = mapperUBO.ZValue;","//VTK::Position::Impl"]).result)),t.haveWideLines()&&(o.addBuiltinInput("u32","@builtin(instance_index) instanceIndex"),a=ir.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=ir.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=ir.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=ir.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=ir.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&&!q9(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=ir.substitute(c,"//VTK::Light::Impl",f).result,s.setCode(c)}else c=ir.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(q9(r)){const l=n.getShaderDescription("fragment");let f=l.getCode();f=ir.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=ir.substitute(s,"//VTK::Color::Impl",[" output.color = colorVI;"]).result,a.setCode(s);const c=n.getShaderDescription("fragment");s=c.getCode(),s=ir.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,y,m,w,x,C,S,T,_,E,b,D,O,L,P,k,G;if(!i.hasAttribute("tcoord"))return;const o=n.getShaderDescription("vertex"),a=i.getBuffer("tcoord"),s=go.getNumberOfComponentsFromBufferFormat(a.getArrayInformation()[0].format);let c=o.getCode();o.addOutput(`vec${s}`,"tcoordVS"),c=ir.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=j=>j?j.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((y=(v=f.getProperty()).getDiffuseTexture)==null?void 0:y.call(v))||u(f.getTextures()[0])||u(e.colorTexture))&&d.push("_diffuseMap = textureSample(DiffuseTexture, DiffuseTextureSampler, input.tcoordVS);"),(x=(w=(m=f.getProperty()).getRoughnessTexture)==null?void 0:w.call(m))!=null&&x.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);"),(b=(E=(_=f.getProperty()).getNormalTexture)==null?void 0:E.call(_))!=null&&b.getImageLoaded()&&u(f.getProperty().getNormalTexture())&&d.push("_normalMap = textureSample(NormalTexture, NormalTextureSampler, input.tcoordVS);"),(L=(O=(D=f.getProperty()).getAmbientOcclusionTexture)==null?void 0:O.call(D))!=null&&L.getImageLoaded()&&u(f.getProperty().getAmbientOcclusionTexture())&&d.push("_ambientOcclusionMap = textureSample(AmbientOcclusionTexture, AmbientOcclusionTextureSampler, input.tcoordVS);"),(G=(k=(P=f.getProperty()).getEmissionTexture)==null?void 0:k.call(P))!=null&&G.getImageLoaded()&&u(f.getProperty().getEmissionTexture())&&d.push("_emissionMap = textureSample(EmissionTexture, EmissionTextureSampler, input.tcoordVS);"),c=ir.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=ir.substitute(a,"//VTK::Select::Impl",[" var compositeID: u32 = 0u;"]).result,o.setCode(a)}},e.shaderReplacements.set("replaceShaderSelect",t.replaceShaderSelect),t.getUsage=(r,n)=>r===V2.POINTS||n===Zo.Points?no.Verts:n===Zo.Lines?no.Lines:r===V2.WIREFRAME?n===Zo.Triangles?no.LinesFromTriangles:no.LinesFromStrips:n===Zo.Triangles?no.Triangles:n===Zo.TriangleStrips?no.Strips:n===Zo.TriangleEdges?no.LinesFromTriangles:no.LinesFromStrips,t.getHashFromUsage=r=>`pt${r}`,t.getTopologyFromUsage=r=>{switch(r){case no.Triangles:return"triangle-list";case no.Verts:return"point-list";case no.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===Zo.TriangleEdges&&(c=!0,a=V2.WIREFRAME);const l=e.vertexInput,f=r.getPoints();let u;if(n){const y={hash:`R${a}P${i}${n.getMTime()}`,usage:no.Index,cells:n,numberOfPoints:f.getNumberOfPoints(),primitiveType:i,representation:a};u=s.getBufferManager().getBuffer(y),l.setIndexBuffer(u)}else l.setIndexBuffer(null);if(f){const y=e.WebGPUActor.getBufferShift(e.WebGPURenderer),m={hash:`${f.getMTime()}I${u.getMTime()}${y.join()}float32x4`,usage:no.PointArray,format:"float32x4",dataArray:f,indexBuffer:u,shift:y,packExtra:!0},w=s.getBufferManager().getBuffer(m);l.addBuffer(w,["vertexBC"])}else l.removeBufferIfPresent("vertexBC");const d=t.getUsage(a,i);if(e._usesCellNormals=!1,!e.is2D&&(d===no.Triangles||d===no.Strips)){const y=r.getPointData().getNormals(),m={format:"snorm8x4",indexBuffer:u,packExtra:!0,shift:0,scale:127};if(y){m.hash=`${y.getMTime()}I${u.getMTime()}snorm8x4`,m.dataArray=y,m.usage=no.PointArray;const w=s.getBufferManager().getBuffer(m);l.addBuffer(w,["normalMC"])}else if(i===Zo.Triangles){e._usesCellNormals=!0,m.hash=`PFN${f.getMTime()}I${u.getMTime()}snorm8x4`,m.dataArray=f,m.cells=n,m.usage=no.NormalsFromPoints;const w=s.getBufferManager().getBuffer(m);l.addBuffer(w,["normalMC"])}else l.removeBufferIfPresent("normalMC")}else l.removeBufferIfPresent("normalMC");let h=!1;if(e.renderable.getScalarVisibility()){const y=e.renderable.getColorMapColors();if(y&&!c){const m=e.renderable.getScalarMode();let w=!1;(m===F2.USE_CELL_DATA||m===F2.USE_CELL_FIELD_DATA||m===F2.USE_FIELD_DATA||!r.getPointData().getScalars())&&m!==F2.USE_POINT_FIELD_DATA&&y&&(w=!0);const x={usage:no.PointArray,format:"unorm8x4",hash:`${w}${y.getMTime()}I${u.getMTime()}unorm8x4`,dataArray:y,indexBuffer:u,cellData:w,cellOffset:0},C=s.getBufferManager().getBuffer(x);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 y=s.getBufferManager().getBufferForPointArray(g,l.getIndexBuffer());l.addBuffer(y,["tcoord"])}else l.removeBufferIfPresent("tcoord")},t.updateTextures=()=>{var c,l,f,u,d,h,g,p,v,y,m,w,x,C,S;const r=[],n=[],i=(l=(c=e.renderable).getColorTextureMap)==null?void 0:l.call(c);i&&(e.colorTexture||(e.colorTexture=Xd.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((y=(v=o.getProperty()).getNormalTexture)!=null&&y.call(v)){const T=["Normal",o.getProperty().getNormalTexture()];s.push(T)}if((w=(m=o.getProperty()).getAmbientOcclusionTexture)!=null&&w.call(m)){const T=["AmbientOcclusion",o.getProperty().getAmbientOcclusionTexture()];s.push(T)}if((C=(x=o.getProperty()).getEmissionTexture)!=null&&C.call(x)){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===Zo.TriangleEdges||e.primitiveType===Zo.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=go.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!==Zo.TriangleEdges&&e.primitiveType!==Zo.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 lhe={is2D:!1,cellArray:null,currentInput:null,cellOffset:0,primitiveType:0,colorTexture:null,renderEncoder:null,textures:null};function oF(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,lhe,r),ik.extend(t,e,r),e.fragmentShaderTemplate=she,e.vertexShaderTemplate=ahe,e._tmpMat3=bs(new Float64Array(9)),e._tmpMat4=Pt(new Float64Array(16)),e.UBO=ah.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"),si(t,e,["cellArray","currentInput","cellOffset","is2D","primitiveType","renderEncoder"]),e.textures=[],che(t,e)}const uhe=Wn(oF,"vtkWebGPUCellArrayMapper");var aF={newInstance:uhe,extend:oF};const{PrimitiveTypes:U2}=eg;function fhe(t,e){e.classHierarchy.push("vtkWebGPUPolyDataMapper"),t.createCellArrayMapper=()=>aF.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=U2.Points;a<=U2.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=U2.TriangleEdges;a<=U2.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 dhe={primitives:null};function hhe(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,dhe,r),cr.extend(t,e,r),e.primitives=[],fhe(t,e)}const ghe=Wn(hhe,"vtkWebGPUPolyDataMapper");Is("vtkMapper",ghe);const{PrimitiveTypes:X9}=eg;function phe(t,e){e.classHierarchy.push("vtkWebGPUPolyDataMapper2D"),t.createCellArrayMapper=()=>aF.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=X9.Points;a<=X9.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 mhe(t){return{primitives:[],...t}}function vhe(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,mhe(r)),cr.extend(t,e,r),e.primitives=[],phe(t,e)}const yhe=Wn(vhe,"vtkWebGPUPolyDataMapper2D");Is("vtkMapper2D",yhe);function whe(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 xhe={};function Che(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,xhe,r),cr.extend(t,e,r),e.scalarBarActorHelper=iF.newScalarBarActorHelper(),whe(t,e)}const She=Wn(Che,"vtkWebGPUScalarBarActor");Is("vtkScalarBarActor",She);function The(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=go.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=go.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=fk.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 _he={texture:null,handle:null,sampler:null,label:null};function sF(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,_he,r),Q.obj(t,e),e.bindGroupLayoutEntry={visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,texture:{sampleType:"float",viewDimension:"2d"}},e.bindGroupTime={},Q.obj(e.bindGroupTime,{mtime:0}),Q.get(t,e,["bindGroupTime","texture"]),Q.setGet(t,e,["bindGroupLayoutEntry","label","sampler"]),The(t,e)}const Ehe=Q.newInstance(sF);var bhe={newInstance:Ehe,extend:sF};const{BufferUsage:Y9}=eg;function Dhe(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=go.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),y=v/p,m=Q.newTypedArray(d?"Uint16Array":h.constructor.name,y*l*f);for(let w=0;w{const r=go.getDetailsFromTextureFormat(e.format);return r.elementSize===2&&r.sampleType==="float"?1:255},t.getNumberOfComponents=()=>go.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=bhe.newInstance({label:r});return i.create(t,n),i}}const Ihe={device:null,handle:null,buffer:null,ready:!1,label:null};function Ohe(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Ihe,r),Q.obj(t,e),Q.get(t,e,["handle","ready","width","height","depth","format","usage"]),Q.setGet(t,e,["device","label"]),Dhe(t,e)}Q.newInstance(Ohe);function Mhe(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 J9{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 Phe{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 J9({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 J9&&(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 Rhe(t,e){Mhe(e);const r=new Phe({id:e.id,data:e.data,color:e.color,frameOfReferenceUID:e.frameOfReferenceUID,segmentIndex:e.segmentIndex??1});return{id:t,type:nl.CONTOUR,data:r,sizeInBytes:r.sizeInBytes}}function Lhe(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 Ahe(t,e){Lhe(e);const r=new tV({id:e.id,points:e.points,polys:e.polys,color:e.color,frameOfReferenceUID:e.frameOfReferenceUID,segmentIndex:e.segmentIndex??1});return{id:t,type:nl.SURFACE,data:r,sizeInBytes:r.sizeInBytes}}function Nhe(t){if(!t.id)throw new Error("Mesh must have an id");if(!t.arrayBuffer)throw new Error("Mesh must have an arrayBuffer");if(!(t.format in ja))throw new Error(`Mesh format must be one of the following: ${Object.values(ja).join(", ")}`)}function khe(t,e){e.classHierarchy.push("vtkMTLReader");function r(){e.requestCount--,e.requestCount===0&&t.invokeBusy(!1)}function n(o){if(o[0]==="#"||o.length===0)return;const a=o.split(/[ \t]+/).map(s=>s.trim()).filter(s=>s.length);if(a[0]==="newmtl")a.shift(),e.currentMaterial=a.join(" ").trim();else if(e.currentMaterial){if(a.length<2)return;if(e.materials[e.currentMaterial]||(e.materials[e.currentMaterial]={}),e.materials[e.currentMaterial][a[0]]=a.slice(1),a[0]==="map_Kd"){const s=new Image;s.onload=()=>setTimeout(r,0),s.src=[e.baseURL,a[1]].join("/"),e.materials[e.currentMaterial].image=s,e.requestCount++}}}e.dataAccessHelper||(e.dataAccessHelper=C1.get("http"));function i(o,a){return e.dataAccessHelper.fetchText(t,o,a)}t.setUrl=function(o){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(o.indexOf(".mtl")===-1&&!a.fullpath)e.baseURL=o,e.url=`${o}/index.mtl`;else{e.url=o;const s=o.split("/");s.pop(),e.baseURL=s.join("/")}return t.loadData(a)},t.loadData=o=>new Promise((a,s)=>{i(e.url,o).then(c=>{t.parseAsText(c),a()},c=>{s()})}),t.parseAsText=o=>{t.modified(),e.materials={},o.split(` +`).forEach(n)},t.isBusy=()=>!!e.requestCount,t.getMaterialNames=()=>Object.keys(e.materials),t.getMaterial=o=>e.materials[o],t.listImages=()=>Object.keys(e.materials).map(o=>e.materials[o].map_Kd).filter(o=>!!o).map(o=>o[0].trim()),t.setImageSrc=(o,a)=>new Promise((s,c)=>{const l=Object.keys(e.materials).find(u=>e.materials[u].map_Kd&&e.materials[u].map_Kd[0].trim()===o.trim()),f=e.materials[l];f&&f.image?(f.image.src=a,f.image.onload=()=>setTimeout(s,0)):s()}),t.applyMaterialToActor=(o,a)=>{const s=e.materials[o];if(s&&a){const c=[1,1,1],l={ambientColor:s.Ka?s.Ka.map(u=>Number(u)):c,specularColor:s.Ks?s.Ks.map(u=>Number(u)):c,diffuseColor:s.Kd?s.Kd.map(u=>Number(u)):c,opacity:s.d?Number(s.d):1,specularPower:s.Ns?Number(s.Ns):1},f=Number(s.illum||2);if(["ambient","diffuse","specular"].forEach((u,d)=>{l[u]=d<=f?1:0}),s.image){const u=Xd.newInstance({interpolate:e.interpolateTextures});u.setImage(s.image),a.addTexture(u)}a.getProperty().set(l)}}}const Vhe={numberOfOutputs:1,requestCount:0,materials:{},interpolateTextures:!0};function cF(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Vhe,r),pr(t,e),Wo(t,e,["url","baseURL"]),si(t,e,["dataAccessHelper","interpolateTextures","splitGroup"]),B_(t,e,"busy"),khe(t,e)}const Fhe=Wn(cF,"vtkMTLReader");var Uhe={newInstance:Fhe,extend:cF};function lF(t,e){Nhe(e);const r=new sfe({...e}),n={id:t,type:nl.MESH,data:r,sizeInBytes:r.sizeInBytes};switch(e.format){case ja.PLY:if(e.materialUrl){const i=new Image;return new Promise((o,a)=>{i.onload=()=>{try{const s=Xd.newInstance();s.setInterpolate(!0),s.setImage(i),r.defaultActor.addTexture(s),o(n)}catch(s){a(s)}},i.onerror=s=>a(s),i.src=e.materialUrl})}return Promise.resolve(n);case ja.OBJ:if(e.materialUrl){const i=Uhe.newInstance();return i.setUrl(e.materialUrl).then(()=>{for(let o=0;o{throw new Error(`Failed to load material: ${o}`)})}return Promise.resolve(n);case ja.STL:case ja.VTP:return Promise.resolve(n);default:return Promise.reject(new Error(`Unsupported format: ${e.format}`))}}function Bhe({url:t,signal:e,onload:r,loaderOptions:n}){return new Promise((i,o)=>{const a=new XMLHttpRequest;a.open("GET",t,!0);const s={},c=n.beforeSend(a,s),l=Object.assign({},s,c);a.responseType="arraybuffer",Object.keys(l).forEach(function(h){l[h]!==null&&a.setRequestHeader(h,l[h])});const f=function(h){r&&typeof r=="function"&&r(),e&&e.removeEventListener("abort",u),i(a.response)},u=()=>{a.abort(),a.removeEventListener("load",f),o(new Error("Request aborted"))};a.addEventListener("load",f);const d=(h,g)=>{const p={url:t,loaded:h,total:g};nt(He,Xe.GEOMETRY_LOAD_PROGRESS,{data:p})};a.onprogress=function(h){d(h.loaded,h.total)},e&&e.aborted?(a.abort(),o(new Error("Request aborted"))):e&&e.addEventListener("abort",u),a.send()})}function uF(t,e,r){return{promise:new Promise((i,o)=>{Ghe(t,e,r).then(i).catch(o)}),cancelFn:void 0,decache:()=>{}}}async function Ghe(t,e,r){const i=t.split(":").slice(1).join(":"),o=await Bhe({url:i,loaderOptions:r});if(!e||!("geometryData"in e))throw new Error("Mesh must have a geometryData");return lF(i,{...e.geometryData,arrayBuffer:o})}let s5={beforeSend(t){}};function Whe(t){s5=Object.assign(s5,t)}function zhe(){return s5}const fF={};let Mp;function dF(t,e){const r=t.indexOf(":"),n=t.substring(0,r);let i=fF[n];if(i==null){if(Mp==null||typeof Mp!="function")throw new Error(`No geometry loader for scheme ${n} has been registered`);i=Mp}const o=i(t,e,s5);return o.promise.then(function(a){nt(He,Xe.GEOMETRY_LOADED,{geometry:a})},function(a){const s={geometryId:t,error:a};nt(He,Xe.GEOMETRY_LOADED_FAILED,s)}),o}function $he(t,e){if(t===void 0)throw new Error("loadGeometry: parameter geometryId must not be undefined");let r=ke.getGeometryLoadObject(t);return r!==void 0||(r=dF(t,e)),r.promise}async function jhe(t,e){if(t===void 0)throw new Error("createAndCacheGeometry: parameter geometryId must not be undefined");let r=ke.getGeometryLoadObject(t);return r!==void 0||(r=dF(t,e),await ke.putGeometryLoadObject(t,r)),r.promise}function Hhe(t,e){if(t===void 0)throw new Error("createAndCacheGeometry: parameter geometryId must not be undefined");let r=ke.getGeometry(t);if(r)return r;if(e.type===nl.CONTOUR)r=Rhe(t,e.geometryData);else if(e.type===nl.SURFACE)r=Ahe(t,e.geometryData);else if(e.type===nl.MESH)lF(t,e.geometryData).then(n=>{r=n});else throw new Error(`Unknown geometry type: ${e.type}`);return ke.putGeometrySync(t,r),r}function hF(t,e){fF[t]=e}function Khe(t){const e=Mp;return Mp=t,e}hF("mesh",uF);const qhe=Object.freeze(Object.defineProperty({__proto__:null,createAndCacheGeometry:Hhe,getOptions:zhe,loadAndCacheGeometry:jhe,loadGeometry:$he,registerGeometryLoader:hF,registerUnknownGeometryLoader:Khe,setOptions:Whe},Symbol.toStringTag,{value:"Module"}));function Xhe(t,e){if(!e||!e.imageIds||!e.imageIds.length)throw new Error("ImageIds must be provided to create a 4D streaming image volume");const{imageIds:r}=e,{splittingTag:n,imageIdGroups:i}=_E(r),o=Math.floor(i.length/2),a=p1(i[o],t),{metadata:s,dimensions:c,spacing:l,direction:f,sizeInBytes:u,origin:d,numberOfComponents:h,dataType:g}=a,p=f.slice(6,9),v=i.map(x=>tE(x,p).sortedImageIds),y=v.flat(),m=wc.createScalarDynamicVolumeVoxelManager({dimensions:c,imageIdGroups:v,dimensionGroupNumber:1,numberOfComponents:h});let w=new UV({volumeId:t,metadata:s,dimensions:c,spacing:l,origin:d,direction:f,sizeInBytes:u,imageIds:y,imageIdGroups:v,splittingTag:n,voxelManager:m,numberOfComponents:h,dataType:g},{imageIds:y,loadStatus:{loaded:!1,loading:!1,cancelled:!1,cachedFrames:[],callbacks:[]}});return{promise:Promise.resolve(w),decache:()=>{w.destroy(),w=null},cancel:()=>{w.cancelLoading()}}}const Yhe=Object.freeze(Object.defineProperty({__proto__:null,BaseVolumeViewport:Cr,CONSTANTS:Of,EPSILON:ch,EVENTS:Xe,Enums:ts,ImageVolume:qd,ProgressiveRetrieveImages:Sm,RenderingEngine:hE,Settings:yr,StackViewport:ar,StreamingDynamicImageVolume:UV,StreamingImageVolume:Tk,Surface:tV,VideoViewport:Lh,Viewport:Nd,VolumeViewport:sr,VolumeViewport3D:dE,WSIViewport:Yy,addImageSlicesToViewports:Qk,addVolumesToViewports:Zk,cache:ke,canRenderFloatTextures:ww,convertMapperToNotSharedMapper:Mk,cornerstoneMeshLoader:uF,cornerstoneStreamingDynamicImageVolumeLoader:Xhe,cornerstoneStreamingImageVolumeLoader:_k,createCanvas:x1,createViewportElement:jk,createVolumeActor:Ky,createVolumeMapper:Ok,eventTarget:He,geometryLoader:qhe,getConfiguration:xw,getEnabledElement:Ee,getEnabledElementByIds:Ci,getEnabledElementByViewportId:Bn,getEnabledElements:LV,getOrCreateCanvas:Xc,getRenderingEngine:jr,getRenderingEngines:Go,getShouldUseCPURendering:ih,getWebWorkerManager:xl,imageLoadPoolManager:Ai,imageLoader:Fse,imageRetrievalPoolManager:rg,init:KA,isCornerstoneInitialized:qA,metaData:G4,peerImport:XA,registerImageLoader:yd,requestPoolManager:Ai,resetInitialization:Zte,resetUseCPURendering:Jte,setCanvasCreator:Gce,setConfiguration:Qte,setPreferSizeOverAccuracy:Yte,setUseCPURendering:Xte,setVolumesForViewports:Jk,triggerEvent:nt,utilities:_n,version:Rle,volumeLoader:Xse},Symbol.toStringTag,{value:"Module"}));var gl;(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"})(gl||(gl={}));var Gi;(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"})(Gi||(Gi={}));var Nn;(function(t){t.Active="Active",t.Passive="Passive",t.Enabled="Enabled",t.Disabled="Disabled"})(Nn||(Nn={}));var lc;(function(t){t.Default="",t.Highlighted="Highlighted",t.Selected="Selected",t.Locked="Locked",t.AutoGenerated="AutoGenerated"})(lc||(lc={}));var B;(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.CROSSHAIR_TOOL_CENTER_CHANGED="CORNERSTONE_TOOLS_CROSSHAIR_TOOL_CENTER_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_CUT_MERGE_PROCESS_COMPLETED="CORNERSTONE_TOOLS_ANNOTATION_CUT_MERGE_PROCESS_COMPLETED",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.HISTORY_UNDO="CORNERSTONE_TOOLS_HISTORY_UNDO",t.HISTORY_REDO="CORNERSTONE_TOOLS_HISTORY_REDO",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"})(B||(B={}));var Et;(function(t){t.Labelmap="Labelmap",t.Contour="Contour",t.Surface="Surface"})(Et||(Et={}));var gd;(function(t){t.UP="UP",t.DOWN="DOWN",t.LEFT="LEFT",t.RIGHT="RIGHT"})(gd||(gd={}));var xt;(function(t){t.OnInteractionStart="onInteractionStart",t.OnInteractionEnd="onInteractionEnd",t.Preview="preview",t.RejectPreview="rejectPreview",t.AcceptPreview="acceptPreview",t.Fill="fill",t.Interpolate="interpolate",t.StrategyFunction="strategyFunction",t.CreateIsInThreshold="createIsInThreshold",t.Initialize="initialize",t.INTERNAL_setValue="setValue",t.AddPreview="addPreview",t.ComputeInnerCircleRadius="computeInnerCircleRadius",t.GetStatistics="getStatistics",t.EnsureImageVolumeFor3DManipulation="ensureImageVolumeFor3DManipulation",t.EnsureSegmentationVolumeFor3DManipulation="ensureSegmentationVolumeFor3DManipulation"})(xt||(xt={}));var Xt;(function(t){t.Interaction="Interaction",t.HandlesUpdated="HandlesUpdated",t.StatsUpdated="StatsUpdated",t.InitialSetup="InitialSetup",t.Completed="Completed",t.InterpolationUpdated="InterpolationUpdated",t.History="History",t.MetadataReferenceModified="MetadataReferenceModified",t.LabelChange="LabelChange"})(Xt||(Xt={}));var Ja;(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",t.COMPUTE_STATISTICS="Computing Statistics",t.INTERPOLATE_LABELMAP="Interpolating Labelmap",t.COMPUTE_LARGEST_BIDIRECTIONAL="Computing Largest Bidirectional",t.GENERATE_CONTOUR_SETS="Generating Contour Sets"})(Ja||(Ja={}));const gF=Object.freeze(Object.defineProperty({__proto__:null,AnnotationStyleStates:lc,ChangeTypes:Xt,Events:B,get KeyboardBindings(){return Gi},get MouseBindings(){return gl},SegmentationRepresentations:Et,StrategyCallbacks:xt,get Swipe(){return gd},ToolModes:Nn,WorkerTypes:Ja},Symbol.toStringTag,{value:"Module"}));let Mw={};function Jhe(){Mw={}}const Z9={isInteractingWithTool:!1,isMultiPartToolActive:!1,tools:{},toolGroups:[],synchronizers:[],svgNodeCache:Mw,enabledElements:[],handleRadius:6};let ze={isInteractingWithTool:!1,isMultiPartToolActive:!1,tools:{},toolGroups:[],synchronizers:[],svgNodeCache:Mw,enabledElements:[],handleRadius:6};function Zhe(){Jhe(),ze={...structuredClone({...Z9,svgNodeCache:{}}),svgNodeCache:{...Z9.svgNodeCache}}}var Qhe="Expected a function",pF="__lodash_hash_undefined__",ege="[object Function]",tge="[object GeneratorFunction]",nge="[object Symbol]",rge=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ige=/^\w*$/,oge=/^\./,age=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,sge=/[\\^$.*+?()[\]{}|]/g,cge=/\\(\\)?/g,lge=/^\[object .+?Constructor\]$/,uge=typeof zi=="object"&&zi&&zi.Object===Object&&zi,fge=typeof self=="object"&&self&&self.Object===Object&&self,PE=uge||fge||Function("return this")();function dge(t,e){return t==null?void 0:t[e]}function hge(t){var e=!1;if(t!=null&&typeof t.toString!="function")try{e=!!(t+"")}catch{}return e}var gge=Array.prototype,pge=Function.prototype,mF=Object.prototype,bC=PE["__core-js_shared__"],Q9=function(){var t=/[^.]+$/.exec(bC&&bC.keys&&bC.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),vF=pge.toString,RE=mF.hasOwnProperty,yF=mF.toString,mge=RegExp("^"+vF.call(RE).replace(sge,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),eI=PE.Symbol,vge=gge.splice,yge=wF(PE,"Map"),Am=wF(Object,"create"),tI=eI?eI.prototype:void 0,nI=tI?tI.toString:void 0;function kd(t){var e=-1,r=t?t.length:0;for(this.clear();++e-1}function Ige(t,e){var r=this.__data__,n=Pw(r,t);return n<0?r.push([t,e]):r[n][1]=e,this}ig.prototype.clear=_ge;ig.prototype.delete=Ege;ig.prototype.get=bge;ig.prototype.has=Dge;ig.prototype.set=Ige;function Yd(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}-${EV(Nm)}`}}const Fn={iconContent:"",iconSize:16,viewBox:{x:16,y:16},mousePoint:{x:8,y:8},mousePointerGroupString:` - `},Ta={x:127,y:60},F0=` + `},ha={x:127,y:60},l0=` -`,qu=` +`,Du=` -`,b2='',U0='',D2='',wx={Angle:Gn(Bn,{name:"Angle",iconContent:`',u0='',G2='',Lw={Angle:Un(Fn,{name:"Angle",iconContent:``,viewBox:{x:1792,y:1792}}),ArrowAnnotate:Gn(Bn,{name:"ArrowAnnotate",iconContent:` + 10l50 50q10 10 10 23z" />`,viewBox:{x:1792,y:1792}}),ArrowAnnotate:Un(Fn,{name:"ArrowAnnotate",iconContent:` - `,viewBox:{x:24,y:24}}),Bidirectional:Gn(Bn,{name:"Bidirectional",iconContent:` + `,viewBox:{x:24,y:24}}),Bidirectional:Un(Fn,{name:"Bidirectional",iconContent:` - `,viewBox:{x:48,y:48}}),CobbAngle:Gn(Bn,{name:"CobbAngle",iconContent:` + `,viewBox:{x:48,y:48}}),CobbAngle:Un(Fn,{name:"CobbAngle",iconContent:` - `,viewBox:{x:32,y:32}}),CircleROI:Gn(Bn,{name:"CircleROI",iconContent:'',viewBox:{x:32,y:32}}),EllipticalROI:Gn(Bn,{name:"EllipticalROI",iconContent:`',viewBox:{x:32,y:32}}),EllipticalROI:Un(Fn,{name:"EllipticalROI",iconContent:``,viewBox:{x:32,y:32}}),FreehandROI:Gn(Bn,{name:"FreehandROI",iconContent:` + 6.3 30.74 10.54 30.74 15.76Z" />`,viewBox:{x:32,y:32}}),FreehandROI:Un(Fn,{name:"FreehandROI",iconContent:` @@ -3933,7 +3933,7 @@ fn main( - `,viewBox:{x:18,y:18}}),FreehandROISculptor:Gn(Bn,{name:"FreehandROISculptor",iconContent:` + `,viewBox:{x:18,y:18}}),FreehandROISculptor:Un(Fn,{name:"FreehandROISculptor",iconContent:` @@ -3966,16 +3966,16 @@ fn main( - `,viewBox:{x:18,y:18}}),Length:Gn(Bn,{name:"Length",iconContent:` + `,viewBox:{x:18,y:18}}),Length:Un(Fn,{name:"Length",iconContent:` - `,viewBox:{x:24,y:24}}),Height:Gn(Bn,{name:"Height",iconContent:'',viewBox:{x:24,y:24}}),Probe:Gn(Bn,{name:"Probe",iconContent:`',viewBox:{x:24,y:24}}),Probe:Un(Fn,{name:"Probe",iconContent:``,viewBox:{x:1792,y:1792}}),RectangleROI:Gn(Bn,{name:"RectangleROI",iconContent:``,viewBox:{x:1792,y:1792}}),RectangleROI:Un(Fn,{name:"RectangleROI",iconContent:``,viewBox:{x:1792,y:1792}}),Label:Gn(Bn,{name:"Label",iconContent:``,viewBox:{x:1792,y:1792}}),Label:Un(Fn,{name:"Label",iconContent:``,viewBox:{x:1792,y:1792}}),Crosshairs:Gn(Bn,{name:"Crosshairs",iconContent:``,viewBox:{x:1792,y:1792}}),Crosshairs:Un(Fn,{name:"Crosshairs",iconContent:``,viewBox:{x:1792,y:1792}}),Eraser:Gn(Bn,{name:"Eraser",iconContent:``,viewBox:{x:1792,y:1792}}),Eraser:Un(Fn,{name:"Eraser",iconContent:``,viewBox:{x:2048,y:1792}}),Magnify:Gn(Bn,{name:"Magnify",iconContent:``,viewBox:{x:2048,y:1792}}),Magnify:Un(Fn,{name:"Magnify",iconContent:``,viewBox:{x:512,y:512}}),Pan:Gn(Bn,{name:"Pan",iconContent:``,viewBox:{x:512,y:512}}),Pan:Un(Fn,{name:"Pan",iconContent:``,viewBox:{x:1792,y:1792}}),Rotate:Gn(Bn,{name:"Rotate",iconContent:``,viewBox:{x:1792,y:1792}}),Rotate:Un(Fn,{name:"Rotate",iconContent:``,viewBox:{x:1792,y:1792}}),StackScroll:Gn(Bn,{name:"StackScroll",iconContent:``,viewBox:{x:1792,y:1792}}),StackScroll:Un(Fn,{name:"StackScroll",iconContent:``,viewBox:{x:24,y:28}}),WindowLevelRegion:Gn(Bn,{name:"WindowLevelRegion",iconContent:``,viewBox:{x:24,y:28}}),WindowLevelRegion:Un(Fn,{name:"WindowLevelRegion",iconContent:``,viewBox:{x:1792,y:1792}}),WindowLevel:Gn(Bn,{name:"WindowLevel",iconContent:` + 84.5t84.5 203.5z" />`,viewBox:{x:1792,y:1792}}),WindowLevel:Un(Fn,{name:"WindowLevel",iconContent:` - `,viewBox:{x:18,y:18}}),Zoom:Gn(Bn,{name:"Zoom",iconContent:` + `,viewBox:{x:18,y:18}}),Zoom:Un(Fn,{name:"Zoom",iconContent:` `,viewBox:{x:640,y:512}}),SegmentationFreeHandEraseInside:Gn(Bn,{name:"SegmentationFreeHandEraseInside",iconContent:`${b2} ${F0}`,viewBox:Ta}),SegmentationFreeHandFillInside:Gn(Bn,{name:"SegmentationFreeHandFillInside",iconContent:`${b2} ${qu}`,viewBox:Ta}),SegmentationFreeHandEraseOutside:Gn(Bn,{name:"SegmentationFreeHandEraseOutside",iconContent:`${b2} ${F0}`,viewBox:Ta}),SegmentationFreeHandFillOutside:Gn(Bn,{name:"SegmentationFreeHandFillOutside",iconContent:`${b2} ${qu}`,viewBox:Ta}),SegmentationRectangleEraseInside:Gn(Bn,{name:"SegmentationRectangleEraseInside",iconContent:`${U0} ${F0}`,viewBox:Ta}),RectangleScissor:Gn(Bn,{name:"RectangleScissor",iconContent:`${U0} ${qu}`,viewBox:Ta}),"RectangleScissor.FILL_INSIDE":Gn(Bn,{name:"RectangleScissor.FILL_INSIDE",iconContent:`${U0} ${qu}`,viewBox:Ta}),"RectangleScissor.FILL_OUTSIDE":Gn(Bn,{name:"RectangleScissor.FILL_OUTSIDE",iconContent:`${U0} ${qu}`,viewBox:Ta}),"RectangleScissor.ERASE_OUTSIDE":Gn(Bn,{name:"RectangleScissor.ERASE_OUTSIDE",iconContent:`${U0} ${F0}`,viewBox:Ta}),"RectangleScissor.ERASE_INSIDE":Gn(Bn,{name:"RectangleScissor.ERASE_INSIDE",iconContent:`${U0} ${F0}`,viewBox:Ta}),CircleScissor:Gn(Bn,{name:"CircleScissor",iconContent:`${D2} ${qu}`,viewBox:Ta}),"CircleScissor.FILL_INSIDE":Gn(Bn,{name:"CircleScissor.FILL_INSIDE",iconContent:`${D2} ${qu}`,viewBox:Ta}),"CircleScissor.ERASE_OUTSIDE":Gn(Bn,{name:"CircleScissor.ERASE_OUTSIDE",iconContent:`${D2} ${F0}`,viewBox:Ta}),"CircleScissor.FILL_OUTSIDE":Gn(Bn,{name:"CircleScissor.FILL_OUTSIDE",iconContent:`${D2} ${qu}`,viewBox:Ta})};function Gn(t,e){return Object.assign(Object.create(t),{...e,name:e.name||t.name})}function Cme(t,e,r){wx[t]=Gn(Bn,{iconContent:e,viewBox:r})}function Sme(t){return wx[t]}const Tme=Object.keys(wx);class _me{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,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 z8=new _me;function Eme(t,e,r){const n=[`${t}`];return e&&n.push(`${n[0]}${e}`),r&&n.push(`${n[n.length-1]}${r}`),n}function pg(t,e,r,n){const i=Eme(t,r,n);for(let o=i.length-1;o>=0;--o){const a=z8.getStyleProperty(i[o],e);if(a!==void 0)return a}}const bme="color",Dme=uu.Highlighted,Ime=Fn.Active;class zh extends ym{constructor(e,r,n,i,o){super(e,r,n,i,o)}static getDefinedCursor(e,r=!1,n){n||(n=pg(bme,{},Dme,Ime));const i=Mme(e,r,n);let o=super.getDefinedCursor(i);if(!o){const a=Sme(e);a&&(o=Ome(a,i,r,n,super.getDefinedCursor("default")),super.setDefinedCursor(i,o))}return o}}function vB(t,e){const r=Object(e),n=Object.prototype.hasOwnProperty.bind(r);return(t+"").replace(/\{\{(\w+)\}\}/g,(i,o)=>n(o)?r[o]+"":"")}function Mme(t,e,r){return`${e?"pointer":"cursor"}:${t}/${r}`}function Ome(t,e,r,n,i){const{x:o,y:a}=t.mousePoint;return new zh(Pme(t,r,{color:n}),o,a,e,i)}function Pme(t,e,r){const n=Rme(t,e,r);return`${URL.createObjectURL(n)}#${t.name||"unknown"}-${e?"pointer":"cursor"}`}function Rme(t,e,r){const n=(e?Lme:Ame)(t,r);return new Blob([n],{type:"image/svg+xml"})}function Ame(t,e){const{iconContent:r,iconSize:n,viewBox:i}=t,o=` + 0-45-19t-19-45 19-45l256-256q19-19 45-19t45 19l256 256q19 19 19 45z" />`,viewBox:{x:640,y:512}}),SegmentationFreeHandEraseInside:Un(Fn,{name:"SegmentationFreeHandEraseInside",iconContent:`${B2} ${l0}`,viewBox:ha}),SegmentationFreeHandFillInside:Un(Fn,{name:"SegmentationFreeHandFillInside",iconContent:`${B2} ${Du}`,viewBox:ha}),SegmentationFreeHandEraseOutside:Un(Fn,{name:"SegmentationFreeHandEraseOutside",iconContent:`${B2} ${l0}`,viewBox:ha}),SegmentationFreeHandFillOutside:Un(Fn,{name:"SegmentationFreeHandFillOutside",iconContent:`${B2} ${Du}`,viewBox:ha}),SegmentationRectangleEraseInside:Un(Fn,{name:"SegmentationRectangleEraseInside",iconContent:`${u0} ${l0}`,viewBox:ha}),RectangleScissor:Un(Fn,{name:"RectangleScissor",iconContent:`${u0} ${Du}`,viewBox:ha}),"RectangleScissor.FILL_INSIDE":Un(Fn,{name:"RectangleScissor.FILL_INSIDE",iconContent:`${u0} ${Du}`,viewBox:ha}),"RectangleScissor.FILL_OUTSIDE":Un(Fn,{name:"RectangleScissor.FILL_OUTSIDE",iconContent:`${u0} ${Du}`,viewBox:ha}),"RectangleScissor.ERASE_OUTSIDE":Un(Fn,{name:"RectangleScissor.ERASE_OUTSIDE",iconContent:`${u0} ${l0}`,viewBox:ha}),"RectangleScissor.ERASE_INSIDE":Un(Fn,{name:"RectangleScissor.ERASE_INSIDE",iconContent:`${u0} ${l0}`,viewBox:ha}),CircleScissor:Un(Fn,{name:"CircleScissor",iconContent:`${G2} ${Du}`,viewBox:ha}),"CircleScissor.FILL_INSIDE":Un(Fn,{name:"CircleScissor.FILL_INSIDE",iconContent:`${G2} ${Du}`,viewBox:ha}),"CircleScissor.ERASE_OUTSIDE":Un(Fn,{name:"CircleScissor.ERASE_OUTSIDE",iconContent:`${G2} ${l0}`,viewBox:ha}),"CircleScissor.FILL_OUTSIDE":Un(Fn,{name:"CircleScissor.FILL_OUTSIDE",iconContent:`${G2} ${Du}`,viewBox:ha})};function Un(t,e){return Object.assign(Object.create(t),{...e,name:e.name||t.name})}function Qge(t,e,r){Lw[t]=Un(Fn,{iconContent:e,viewBox:r})}function epe(t){return Lw[t]}const tpe=Object.keys(Lw);class npe{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,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 NE=new npe;function rpe(t,e,r){const n=[`${t}`];return e&&n.push(`${n[0]}${e}`),r&&n.push(`${n[n.length-1]}${r}`),n}function kh(t,e,r,n){const i=rpe(t,r,n);for(let o=i.length-1;o>=0;--o){const a=NE.getStyleProperty(i[o],e);if(a!==void 0)return a}}const ipe="color",ope=lc.Highlighted,ape=Nn.Active;class fh extends Nm{constructor(e,r,n,i,o){super(e,r,n,i,o)}static getDefinedCursor(e,r=!1,n){n||(n=kh(ipe,{},ope,ape));const i=spe(e,r,n);let o=super.getDefinedCursor(i);if(!o){const a=epe(e);a&&(o=cpe(a,i,r,n,super.getDefinedCursor("default")),super.setDefinedCursor(i,o))}return o}}function TF(t,e){const r=Object(e),n=Object.prototype.hasOwnProperty.bind(r);return(t+"").replace(/\{\{(\w+)\}\}/g,(i,o)=>n(o)?r[o]+"":"")}function spe(t,e,r){return`${e?"pointer":"cursor"}:${t}/${r}`}function cpe(t,e,r,n,i){const{x:o,y:a}=t.mousePoint;return new fh(lpe(t,r,{color:n}),o,a,e,i)}function lpe(t,e,r){const n=upe(t,e,r);return`${URL.createObjectURL(n)}#${t.name||"unknown"}-${e?"pointer":"cursor"}`}function upe(t,e,r){const n=(e?dpe:fpe)(t,r);return new Blob([n],{type:"image/svg+xml"})}function fpe(t,e){const{iconContent:r,iconSize:n,viewBox:i}=t,o=` ${r} - `;return vB(o,e)}function Lme(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=` + `;return TF(o,e)}function dpe(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 vB(c,e)}const w7=Symbol("ElementCursorsMap");function yB(t,e){wm(t)[0]=e,lv(t,e)}function lv(t,e){const r=wm(t);r[1]=r[0],r[0]=e,t.style.cursor=(e instanceof Ho?e:Ho.getDefinedCursor("auto")).getStyleProperty()}function Yt(t){lv(t,wm(t)[1])}function At(t){lv(t,Ho.getDefinedCursor("none"))}function wm(t){let e=wm[w7];e instanceof WeakMap||(e=new WeakMap,Object.defineProperty(wm,w7,{value:e}));let r=e.get(t);return r||(r=[null,null],e.set(t,r)),r}const Nme=Object.freeze(Object.defineProperty({__proto__:null,hideElementCursor:At,initElementCursor:yB,resetElementCursor:Yt,setElementCursor:lv},Symbol.toStringTag,{value:"Module"}));function kme(t,e){let r=zh.getDefinedCursor(e,!0);r||(r=Ho.getDefinedCursor(e)),r||(console.log(`Cursor ${e} is not defined either as SVG or as a standard cursor.`),r=Ho.getDefinedCursor(e)),lv(t,r)}const Vme=[...Tme,...wme],Fme=Object.freeze(Object.defineProperty({__proto__:null,CursorNames:Vme,CursorSVG:wx,ImageMouseCursor:ym,MouseCursor:Ho,SVGMouseCursor:zh,elementCursor:Nme,registerCursor:Cme,setCursorForElement:kme},Symbol.toStringTag,{value:"Module"}));function kr(t){return je.toolGroups.find(e=>e.id===t)}const{Active:Cp,Passive:w3,Enabled:x3,Disabled:C3}=Fn,Ume=[{mouseButton:Rl.Primary}];class j8{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=je.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=je.tools[e])==null?void 0:o.toolClass;if(!i){const a=je.tools[r].toolClass;class s extends a{}s.toolName=e,i=s,je.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:a})=>a===e)||this.viewportsInfo.push({viewportId:e,renderingEngineId:n});const i=this.getActivePrimaryMouseButtonTool();this.setViewportsCursorByToolName(i);const o={toolGroupId:this.id,viewportId:e,renderingEngineId:n};nt(ze,U.TOOLGROUP_VIEWPORT_ADDED,o)}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};nt(ze,U.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===Fn.Active){this.setToolActive(e,n||this.restoreToolOptions[e]);return}if(r===Fn.Passive){this.setToolPassive(e);return}if(r===Fn.Enabled){this.setToolEnabled(e);return}if(r===Fn.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((l,f)=>{const u=f.numTouchPoints!==void 0,d=f.mouseButton!==void 0;return!l.some(h=>S3(h,f))&&(u||d)&&l.push(f),l},[]),mode:Cp};if(this.toolOptions[e]=s,this._toolInstances[e].mode=Cp,this._hasMousePrimaryButtonBinding(r))this.setViewportsCursorByToolName(e);else if(!this.getActivePrimaryMouseButtonTool()){const f=Ho.getDefinedCursor("default");this._setCursorForViewports(f)}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 c={toolGroupId:this.id,toolName:e,toolBindingsOptions:r};nt(ze,U.TOOL_ACTIVATED,c),this._triggerToolModeChangedEvent(e,Cp,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:w3}),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=>S3(c,l)));let s=w3;o.bindings.length!==0&&(s=Cp,o.mode=s),this.toolOptions[e]=o,n.mode=s,typeof n.onSetToolPassive=="function"&&n.onSetToolPassive(),this._renderViewports(),this._triggerToolModeChangedEvent(e,w3)}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:x3};this.toolOptions[e]=n,r.mode=x3,typeof r.onSetToolEnabled=="function"&&r.onSetToolEnabled(),this._renderViewports(),this._triggerToolModeChangedEvent(e,x3)}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:C3};this.restoreToolOptions[e]=this.toolOptions[e],this.toolOptions[e]=n,r.mode=C3,typeof r.onSetToolDisabled=="function"&&r.onSetToolDisabled(),this._renderViewports(),this._triggerToolModeChangedEvent(e,C3)}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===Cp&&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=zh.getDefinedCursor(n,!0),i)||(n=`${e}`,i=zh.getDefinedCursor(n,!0),i)||(n=e,i=zh.getDefinedCursor(n,!0),i)?i:Ho.getDefinedCursor("default")}_setCursorForViewports(e){Rr.getRuntimeSettings().get("useCursors")&&this.viewportsInfo.forEach(({renderingEngineId:n,viewportId:i})=>{const o=Qn(i,n);if(!o)return;const{viewport:a}=o;yB(a.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 Rl.Primary}getDefaultPrimaryBindings(){return Ume}getToolConfiguration(e,r){if(this._toolInstances[e]===void 0){console.warn(`Tool ${e} not present, can't set tool configuration.`);return}const n=yme(this._toolInstances[e].configuration,r)||this._toolInstances[e].configuration;return Is(n)}getPrevActivePrimaryToolName(){return this.prevActivePrimaryToolName}setActivePrimaryTool(e){const r=this.getCurrentActivePrimaryToolName();this.setToolDisabled(r),this.setToolActive(e,{bindings:[{mouseButton:Rl.Primary}]})}getCurrentActivePrimaryToolName(){return this.currentActivePrimaryToolName}clone(e,r=null){let n=kr(e);return n?(console.debug(`ToolGroup ${e} already exists`),n):(n=new j8(e),je.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=>S3(i,o)))}_renderViewports(){this.viewportsInfo.forEach(({renderingEngineId:e,viewportId:r})=>{ir(e).renderViewport(r)})}_triggerToolModeChangedEvent(e,r,n){const i={toolGroupId:this.id,toolName:e,mode:r,toolBindingsOptions:n};nt(ze,U.TOOL_MODE_CHANGED,i)}_findRenderingEngine(e,r){const n=Yo();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 S3(t,e){return t.mouseButton!==e.mouseButton||t.numTouchPoints!==e.numTouchPoints?!1:t.modifierKey===e.modifierKey}function wB(t){if(je.toolGroups.some(n=>n.id===t)){console.warn(`'${t}' already exists.`);return}const r=new j8(t);return je.toolGroups.push(r),r}function xB(t){const e=je.toolGroups.findIndex(r=>r.id===t);e>-1&&je.toolGroups.splice(e,1)}function CB(){const t=[...je.toolGroups];for(const e of t)xB(e.id);je.toolGroups=[]}function Mr(t,e){var n;e||(e=(n=Yo().find(i=>i.getViewports().find(o=>o.id===t)))==null?void 0:n.id);const r=je.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 Bme(){return je.toolGroups}const Gme=[Fn.Active,Fn.Passive,Fn.Enabled];function SB(t){return je.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}=Qn(l,c);t.metadata.FrameOfReferenceUID===f&&n.push(s)})});const i=U.ANNOTATION_ADDED,o={annotation:t};if(!n.length){nt(ze,i,o);return}n.forEach(({renderingEngineId:a,viewportId:s})=>{o.viewportId=s,o.renderingEngineId=a,nt(ze,i,o)})}function xx(t){const e=U.ANNOTATION_REMOVED;nt(ze,e,t)}function cn(t,e,r=Qt.HandlesUpdated){const n=e&&De(e),{viewportId:i,renderingEngineId:o}=n||{},a=U.ANNOTATION_MODIFIED;nt(ze,a,{annotation:t,viewportId:i,renderingEngineId:o,changeType:r})}function Un(t){bB({annotation:t})}function Cx(t,e=!1){bB({annotation:t,contourHoleProcessingEnabled:e})}function bB(t){const e=U.ANNOTATION_COMPLETED;nt(ze,e,t)}const Wme=Object.freeze(Object.defineProperty({__proto__:null,triggerAnnotationAddedForElement:_B,triggerAnnotationAddedForFOR:EB,triggerAnnotationCompleted:Un,triggerAnnotationModified:cn,triggerAnnotationRemoved:xx,triggerContourAnnotationCompleted:Cx},Symbol.toStringTag,{value:"Module"}));let DB;function Fc(){return DB}function H8(t){DB=t}function ln(t,e){const r=Fc(),n=r.getGroupKey(e);return r.getAnnotations(n,t)}function $n(t){return Fc().getAnnotation(t)}function uv(){return Fc().getAllAnnotations()}function Gg(t){const{annotationUID:e,parentAnnotationUID:r}=t;if(!r)return;const n=$n(r),i=n.childAnnotationUIDs.indexOf(e);n.childAnnotationUIDs.splice(i,1),t.parentAnnotationUID=void 0}function fv(t,e){const{annotationUID:r}=t,{annotationUID:n}=e;Gg(e),t.childAnnotationUIDs||(t.childAnnotationUIDs=[]),!t.childAnnotationUIDs.includes(n)&&(t.childAnnotationUIDs.push(n),e.parentAnnotationUID=r)}function IB(t){return t.parentAnnotationUID?$n(t.parentAnnotationUID):void 0}function dv(t){var e;return((e=t.childAnnotationUIDs)==null?void 0:e.map(r=>$n(r)))??[]}function rn(t,e){t.annotationUID||(t.annotationUID=Pn());const r=Fc();if(e instanceof HTMLDivElement){const n=r.getGroupKey(e);r.addAnnotation(t,n),_B(t,e)}else r.addAnnotation(t,void 0),EB(t);return t.annotationUID}function $me(t,e){const r=Fc(),n=r.getGroupKey(e);return r.getNumberOfAnnotations(n,t)}function nn(t){var n;if(!t)return;const e=Fc(),r=e.getAnnotation(t);r&&((n=r.childAnnotationUIDs)==null||n.forEach(i=>nn(i)),e.removeAnnotation(t),xx({annotation:r,annotationManagerUID:e.uid}))}function zme(){const t=Fc(),e=t.removeAllAnnotations();for(const r of e)xx({annotation:r,annotationManagerUID:t.uid})}function jme(t,e){const r=Fc(),n=r.getGroupKey(e),i=r.removeAnnotations(n,t);for(const o of i)xx({annotation:o,annotationManagerUID:r.uid})}function K8(t){let e=t;for(;e;)e.invalidated=!0,e=e.parentAnnotationUID?$n(e.parentAnnotationUID):void 0}const Hme=Object.freeze(Object.defineProperty({__proto__:null,addAnnotation:rn,addChildAnnotation:fv,clearParentAnnotation:Gg,getAllAnnotations:uv,getAnnotation:$n,getAnnotationManager:Fc,getAnnotations:ln,getChildAnnotations:dv,getNumberOfAnnotations:$me,getParentAnnotation:IB,invalidateAnnotation:K8,removeAllAnnotations:zme,removeAnnotation:nn,removeAnnotations:jme,setAnnotationManager:H8},Symbol.toStringTag,{value:"Module"}));function Ui(t){const e=t.toolName;if(!e)throw new Error(`No Tool Found for the ToolClass ${t.name}`);je.tools[e]||(je.tools[e]={toolClass:t})}function Kme(t){const e=t.toolName;return!!(e&&je.tools[e])}function Sx(t){return!!(t&&je.tools[t])}function MB(t){const e=t.toolName;if(!e)throw new Error(`No tool found for: ${t.name}`);if(!je.tools[e]!==void 0)delete je.tools[e];else throw new Error(`${e} cannot be removed because it has not been added`)}function T0(t,e){const r=e||t.currentTarget,{viewport:n}=De(r)||{};if(!n)return;const i=Yme(t),o=qme(t),a=Xme(r,o),s=n.canvasToWorld(a);return{page:o,client:i,canvas:a,world:s}}function Xme(t,e){const r=t.getBoundingClientRect();return[e[0]-r.left-window.pageXOffset,e[1]-r.top-window.pageYOffset]}function qme(t){return[t.pageX,t.pageY]}function Yme(t){return[t.clientX,t.clientY]}function OB(t){const e=t.currentTarget,{viewportId:r,renderingEngineId:n}=De(e),i=T0(t,e),o={page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]},a={event:t,eventName:U.MOUSE_DOUBLE_CLICK,viewportId:r,renderingEngineId:n,camera:{},element:e,startPoints:i,lastPoints:i,currentPoints:i,deltaPoints:o};!nt(e,U.MOUSE_DOUBLE_CLICK,a)&&(t.stopImmediatePropagation(),t.preventDefault())}const x7=U.MOUSE_MOVE;function hv(t){const e=t.currentTarget,r=De(e);if(!r)return;const{renderingEngineId:n,viewportId:i}=r,o=T0(t);!nt(e,x7,{renderingEngineId:n,viewportId:i,camera:{},element:e,currentPoints:o,eventName:x7,event:t})&&(t.stopImmediatePropagation(),t.preventDefault())}const{MOUSE_DOWN:C7,MOUSE_DOWN_ACTIVATE:Jme,MOUSE_CLICK:Zme,MOUSE_UP:Qme,MOUSE_DRAG:S7}=U,eve=400,tve=150,nve=3,rve={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 on={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 Gi={doubleClickTimeout:null,mouseDownEvent:null,mouseUpEvent:null,ignoreDoubleClick:!1};function PB(t){if(Gi.doubleClickTimeout){if(t.buttons===Gi.mouseDownEvent.buttons)return;Gi.mouseDownEvent=t,Y5();return}Gi.doubleClickTimeout=setTimeout(Y5,t.buttons===1?eve:tve),Gi.mouseDownEvent=t,Gi.ignoreDoubleClick=!1,on.element=t.currentTarget,on.mouseButton=t.buttons;const e=De(on.element),{renderingEngineId:r,viewportId:n}=e;on.renderingEngineId=r,on.viewportId=n,on.preventClickTimeout=setTimeout(ove,on.clickDelay),on.element.removeEventListener("mousemove",hv);const i=T0(t,on.element);on.startPoints=Rf(i),on.lastPoints=Rf(i),document.addEventListener("mouseup",X8),document.addEventListener("mousemove",RB)}function ive(t){const e=Tx(on.startPoints,on.startPoints),r={event:t,eventName:C7,element:on.element,mouseButton:on.mouseButton,renderingEngineId:on.renderingEngineId,viewportId:on.viewportId,camera:{},startPoints:on.startPoints,lastPoints:on.startPoints,currentPoints:on.startPoints,deltaPoints:e};on.lastPoints=Rf(r.lastPoints),nt(r.element,C7,r)&&nt(r.element,Jme,r)}function RB(t){const e=De(on.element);if(!(e!=null&&e.viewport))return;const r=T0(t,on.element),n=kB(on.element,on.lastPoints),i=Tx(r,n);if(Gi.doubleClickTimeout)if(LB(i.canvas))Y5();else return;const o={event:t,eventName:S7,mouseButton:on.mouseButton,renderingEngineId:on.renderingEngineId,viewportId:on.viewportId,camera:{},element:on.element,startPoints:Rf(on.startPoints),lastPoints:Rf(n),currentPoints:r,deltaPoints:i};!nt(on.element,S7,o)&&(t.stopImmediatePropagation(),t.preventDefault()),on.lastPoints=Rf(r)}function X8(t){if(clearTimeout(on.preventClickTimeout),Gi.doubleClickTimeout)Gi.mouseUpEvent?t_():(Gi.mouseUpEvent=t,on.element.addEventListener("mousemove",AB));else{const e=on.isClickEvent?Zme:Qme,r=T0(t,on.element),n=Tx(r,on.lastPoints),i={event:t,eventName:e,mouseButton:on.mouseButton,element:on.element,renderingEngineId:on.renderingEngineId,viewportId:on.viewportId,camera:{},startPoints:Rf(on.startPoints),lastPoints:Rf(on.lastPoints),currentPoints:r,deltaPoints:n};nt(i.element,e,i),t_()}document.removeEventListener("mousemove",RB)}function AB(t){const e=T0(t,on.element),r=kB(on.element,on.lastPoints),n=Tx(e,r);LB(n.canvas)&&(Y5(),hv(t))}function LB(t){return Math.abs(t[0])+Math.abs(t[1])>nve}function ove(){on.isClickEvent=!1}function Y5(){Gi.ignoreDoubleClick=!0;const t=Gi.mouseDownEvent,e=Gi.mouseUpEvent;NB(),ive(t),e&&X8(e)}function NB(){Gi.doubleClickTimeout&&(clearTimeout(Gi.doubleClickTimeout),Gi.doubleClickTimeout=null),Gi.mouseDownEvent=null,Gi.mouseUpEvent=null}function t_(){var t,e;document.removeEventListener("mouseup",X8),(t=on.element)==null||t.removeEventListener("mousemove",AB),(e=on.element)==null||e.addEventListener("mousemove",hv),NB(),on=JSON.parse(JSON.stringify(rve))}function Rf(t){return JSON.parse(JSON.stringify(t))}function kB(t,e){const{viewport:r}=De(t)||{};if(!r)return e;const n=r.canvasToWorld(e.canvas);return{page:e.page,client:e.client,canvas:e.canvas,world:n}}function Tx(t,e){return!t||!e?{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]}:{page:T3(t.page,e.page),client:T3(t.client,e.client),canvas:T3(t.canvas,e.canvas),world:ave(t.world,e.world)}}function T3(t,e){return[t[0]-e[0],t[1]-e[1]]}function ave(t,e){return[t[0]-e[0],t[1]-e[1],t[2]-e[2]]}function sve(){return on.mouseButton}function VB(t){Gi.ignoreDoubleClick?(Gi.ignoreDoubleClick=!1,t.stopImmediatePropagation(),t.preventDefault()):t_()}function FB(t){t.removeEventListener("dblclick",OB),t.removeEventListener("mousedown",PB),t.removeEventListener("mousemove",hv),t.removeEventListener("dblclick",VB,{capture:!0})}function cve(t){FB(t),t.addEventListener("dblclick",OB),t.addEventListener("mousedown",PB),t.addEventListener("mousemove",hv),t.addEventListener("dblclick",VB,{capture:!0})}const UB={enable:cve,disable:FB},lve=2e3,mg={mouse:0,touch:1};let T7,_7;function BB(t,e){const r=Date.now();if(t!==T7){if(r-_7<=lve)return e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),!1;T7=t}_7=r}const GB=BB.bind(null,mg.mouse),WB=BB.bind(null,mg.touch);function E7(t,e,r){const n=r?GB:WB;e.forEach(function(i){t.addEventListener(i,n,{passive:!1})})}function b7(t,e,r){const n=r?GB:WB;e.forEach(function(i){t.removeEventListener(i,n)})}const $B=["mousedown","mouseup","mousemove"],zB=["touchstart","touchend"];function jB(t){b7(t,$B,mg.mouse),b7(t,zB,mg.touch)}function uve(t){jB(t),E7(t,$B,mg.mouse),E7(t,zB,mg.touch)}const HB={enable:uve,disable:jB};function _x(t,e){const r=e||t.currentTarget,n=t.type==="touchend"?t.changedTouches:t.touches;return Object.keys(n).map(i=>{const o=hve(n[i]),a=dve(n[i]),s=fve(r,a),{viewport:c}=De(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 fve(t,e){const r=t.getBoundingClientRect();return[e[0]-r.left-window.pageXOffset,e[1]-r.top-window.pageYOffset]}function dve(t){return[t.pageX,t.pageY]}function hve(t){return[t.clientX,t.clientY]}function J5(t,e){const r=xm(t),n=xm(e);return{page:_3(r.page,n.page),client:_3(r.client,n.client),canvas:_3(r.canvas,n.canvas),world:pve(r.world,n.world)}}function q8(t,e){const r=xm(t),n=xm(e);return{page:jh(r.page,n.page),client:jh(r.client,n.client),canvas:jh(r.canvas,n.canvas),world:KB(r.world,n.world)}}function gve(t,e){}function Z5(t,e){const r=D7(t),n=D7(e);return{page:r.page-n.page,client:r.client-n.client,canvas:r.canvas-n.canvas,world:r.world-n.world}}function El(t){return JSON.parse(JSON.stringify(t))}function n_(t){return JSON.parse(JSON.stringify(t))}function xm(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 Mc(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 _3(t,e){return[t[0]-e[0],t[1]-e[1]]}function pve(t,e){return[t[0]-e[0],t[1]-e[1],t[2]-e[2]]}function D7(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 jh(t,e){return Math.sqrt(Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2))}function KB(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 mve=Object.freeze(Object.defineProperty({__proto__:null,copyPoints:n_,copyPointsList:El,getDeltaDistance:q8,getDeltaDistanceBetweenIPoints:Z5,getDeltaPoints:J5,getDeltaRotation:gve,getMeanPoints:xm,getMeanTouchPoints:Mc},Symbol.toStringTag,{value:"Module"}));Rr.getRuntimeSettings();const{TOUCH_START:I7,TOUCH_START_ACTIVATE:vve,TOUCH_PRESS:M7,TOUCH_DRAG:O7,TOUCH_END:P7,TOUCH_TAP:R7,TOUCH_SWIPE:E3}=U,Cm={page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]},Q5={page:0,client:0,canvas:0,world:0},XB={renderingEngineId:void 0,viewportId:void 0,element:null,startPointsList:[{...Cm,touch:null}],lastPointsList:[{...Cm,touch:null}],isTouchStart:!1,startTime:null,pressTimeout:null,pressDelay:700,pressMaxDistance:5,accumulatedDistance:Q5,swipeDistanceThreshold:48,swiped:!1,swipeToleranceMs:300},qB={renderingEngineId:void 0,viewportId:void 0,element:null,startPointsList:[{...Cm,touch:null}],taps:0,tapTimeout:null,tapMaxDistance:24,tapToleranceMs:300};let kt=JSON.parse(JSON.stringify(XB)),xi=JSON.parse(JSON.stringify(qB));function Wf(t,e,r){return nt(t,e,r)}function YB(t){kt.element=t.currentTarget;const e=De(kt.element),{renderingEngineId:r,viewportId:n}=e;kt.renderingEngineId=r,kt.viewportId=n,!kt.isTouchStart&&(clearTimeout(kt.pressTimeout),kt.pressTimeout=setTimeout(()=>yve(t),kt.pressDelay),wve(t),document.addEventListener("touchmove",JB),document.addEventListener("touchend",ZB))}function yve(t){if(kt.accumulatedDistance.canvas>kt.pressMaxDistance)return;const r={event:t,eventName:M7,renderingEngineId:kt.renderingEngineId,viewportId:kt.viewportId,camera:{},element:kt.element,startPointsList:El(kt.startPointsList),lastPointsList:El(kt.lastPointsList),startPoints:n_(Mc(kt.startPointsList)),lastPoints:n_(Mc(kt.lastPointsList))};Wf(r.element,M7,r)}function wve(t){kt.isTouchStart=!0,kt.startTime=new Date;const e=_x(t,kt.element),r=Mc(e),n=Cm,i=Q5,o={event:t,eventName:I7,element:kt.element,renderingEngineId:kt.renderingEngineId,viewportId:kt.viewportId,camera:{},startPointsList:e,lastPointsList:e,currentPointsList:e,startPoints:r,lastPoints:r,currentPoints:r,deltaPoints:n,deltaDistance:i};kt.startPointsList=El(o.startPointsList),kt.lastPointsList=El(o.lastPointsList),Wf(o.element,I7,o)&&Wf(o.element,vve,o)}function JB(t){const e=_x(t,kt.element),r=QB(kt.element,kt.lastPointsList),n=e.length===r.length?J5(e,r):Cm,i=e.length===r.length?Z5(e,r):Q5,o=e.length===r.length?q8(e,kt.lastPointsList):Q5;kt.accumulatedDistance={page:kt.accumulatedDistance.page+o.page,client:kt.accumulatedDistance.client+o.client,canvas:kt.accumulatedDistance.canvas+o.canvas,world:kt.accumulatedDistance.world+o.world};const a={event:t,eventName:O7,renderingEngineId:kt.renderingEngineId,viewportId:kt.viewportId,camera:{},element:kt.element,startPoints:Mc(kt.startPointsList),lastPoints:Mc(r),currentPoints:Mc(e),startPointsList:El(kt.startPointsList),lastPointsList:El(r),currentPointsList:e,deltaPoints:n,deltaDistance:i};Wf(kt.element,O7,a),Cve(t,n),kt.lastPointsList=El(e)}function ZB(t){clearTimeout(kt.pressTimeout);const e=_x(t,kt.element),r=QB(kt.element,kt.lastPointsList),n=e.length===r.length?J5(e,r):J5(e,e),i=e.length===r.length?Z5(e,r):Z5(e,e),o={event:t,eventName:P7,element:kt.element,renderingEngineId:kt.renderingEngineId,viewportId:kt.viewportId,camera:{},startPointsList:El(kt.startPointsList),lastPointsList:El(r),currentPointsList:e,startPoints:Mc(kt.startPointsList),lastPoints:Mc(r),currentPoints:Mc(e),deltaPoints:n,deltaDistance:i};Wf(o.element,P7,o),xve(t),kt=JSON.parse(JSON.stringify(XB)),document.removeEventListener("touchmove",JB),document.removeEventListener("touchend",ZB)}function xve(t){const e=new Date().getTime(),r=kt.startTime.getTime();if(e-r>xi.tapToleranceMs||(xi.taps===0&&(xi.element=kt.element,xi.renderingEngineId=kt.renderingEngineId,xi.viewportId=kt.viewportId,xi.startPointsList=kt.startPointsList),xi.taps>0&&!(xi.element==kt.element&&xi.renderingEngineId==kt.renderingEngineId&&xi.viewportId==kt.viewportId)))return;const n=_x(t,xi.element);q8(n,xi.startPointsList).canvas>xi.tapMaxDistance||(clearTimeout(xi.tapTimeout),xi.taps+=1,xi.tapTimeout=setTimeout(()=>{const o={event:t,eventName:R7,element:xi.element,renderingEngineId:xi.renderingEngineId,viewportId:xi.viewportId,camera:{},currentPointsList:n,currentPoints:Mc(n),taps:xi.taps};Wf(o.element,R7,o),xi=JSON.parse(JSON.stringify(qB))},xi.tapToleranceMs))}function Cve(t,e){const r=new Date().getTime(),n=kt.startTime.getTime();if(kt.swiped||r-n>kt.swipeToleranceMs)return;const[i,o]=e.canvas,a={event:t,eventName:E3,renderingEngineId:kt.renderingEngineId,viewportId:kt.viewportId,camera:{},element:kt.element,swipe:null};Math.abs(i)>kt.swipeDistanceThreshold&&(a.swipe=i>0?kd.RIGHT:kd.LEFT,Wf(a.element,E3,a),kt.swiped=!0),Math.abs(o)>kt.swipeDistanceThreshold&&(a.swipe=o>0?kd.DOWN:kd.UP,Wf(a.element,E3,a),kt.swiped=!0)}function QB(t,e){const{viewport:r}=De(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 eG(t){HB.disable(t),t.removeEventListener("touchstart",YB)}function Sve(t){eG(t),HB.enable(t),t.addEventListener("touchstart",YB,{passive:!1})}const tG={enable:Sve,disable:eG},A7=10,L7=40,N7=800;function Tve(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*A7,i=r*A7,"deltaY"in t&&(i=t.deltaY),"deltaX"in t&&(n=t.deltaX),(n||i)&&t.deltaMode&&(t.deltaMode===1?(n*=L7,i*=L7):(n*=N7,i*=N7)),n&&!e&&(e=n<1?-1:1),i&&!r&&(r=i<1?-1:1),{spinX:e,spinY:r,pixelX:n,pixelY:i}}function nG(t){const e=t.currentTarget,r=De(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}=Tve(t),l=a<0?-1:1,f={event:t,eventName:U.MOUSE_WHEEL,renderingEngineId:n,viewportId:i,element:e,camera:{},detail:t,wheel:{spinX:o,spinY:a,pixelX:s,pixelY:c,direction:l},points:T0(t)};nt(e,U.MOUSE_WHEEL,f)}function _ve(t){rG(t),t.addEventListener("wheel",nG,{passive:!1})}function rG(t){t.removeEventListener("wheel",nG)}const iG={enable:_ve,disable:rG},Eve={renderingEngineId:void 0,viewportId:void 0,key:void 0,keyCode:void 0,element:null};let Oi={renderingEngineId:void 0,viewportId:void 0,key:void 0,keyCode:void 0,element:null};function Ex(t){Oi.element=t.currentTarget;const e=De(Oi.element),{renderingEngineId:r,viewportId:n}=e;Oi.renderingEngineId=r,Oi.viewportId=n,Oi.key=t.key,Oi.keyCode=t.keyCode,t.preventDefault();const i={renderingEngineId:Oi.renderingEngineId,viewportId:Oi.viewportId,element:Oi.element,key:Oi.key,keyCode:Oi.keyCode};nt(i.element,U.KEY_DOWN,i),document.addEventListener("keyup",oG),document.addEventListener("visibilitychange",Y8),Oi.element.removeEventListener("keydown",Ex)}function Y8(){document.removeEventListener("visibilitychange",Y8),document.visibilityState==="hidden"&&aG()}function oG(t){const e={renderingEngineId:Oi.renderingEngineId,viewportId:Oi.viewportId,element:Oi.element,key:Oi.key,keyCode:Oi.keyCode};document.removeEventListener("keyup",oG),document.removeEventListener("visibilitychange",Y8),Oi.element.addEventListener("keydown",Ex),Oi=structuredClone(Eve),nt(e.element,U.KEY_UP,e)}function bve(){return Oi.keyCode}function aG(){Oi.keyCode=void 0}function Dve(t){sG(t),t.addEventListener("keydown",Ex)}function sG(t){t.removeEventListener("keydown",Ex)}const Wg={enable:Dve,disable:sG,getModifierKey:bve},{EPSILON:B0}=Uu;function cG(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 J8(t,e,r,n){const i=r[0]/2,o=r[1]/2,a=r[2]/2,s=new Array(8);s[0]=Zr(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]=Zr(t,[n[0]+f*i,n[1]+u*o,n[2]+d*a])}return $f(s,e)}function lG(t,e){const{spacing:r}=t,n=t.voxelManager.getScalarDataLength(),i=[];let o=0;for(let a=0;a{const e=Z8.get(t);e&&(e.isDirty=!0)},Pve=t=>{const e=Z8.get(t);return e&&!e.isDirty?e.indices:null},Rve=(t,e)=>{Z8.set(t,{indices:e,isDirty:!1})};function Ro(t,e,r){const n={segmentationId:t,modifiedSlicesToUse:e,segmentIndex:r};Ove(t),nt(ze,U.SEGMENTATION_DATA_MODIFIED,n)}function us(t){const e={segmentationId:t};nt(ze,U.SEGMENTATION_MODIFIED,e)}function Q8(t){const e={segmentationId:t};nt(ze,U.SEGMENTATION_REMOVED,e)}function yl(t,e,r){const n={segmentationId:e,type:r,viewportId:t};nt(ze,U.SEGMENTATION_REPRESENTATION_MODIFIED,n)}function r_(t,e,r){const n={viewportId:t,segmentationId:e,type:r};nt(ze,U.SEGMENTATION_REPRESENTATION_REMOVED,n)}const Ave=Object.freeze(Object.defineProperty({__proto__:null,triggerSegmentationDataModified:Ro,triggerSegmentationModified:us,triggerSegmentationRemoved:Q8,triggerSegmentationRepresentationModified:yl,triggerSegmentationRepresentationRemoved:r_},Symbol.toStringTag,{value:"Module"})),Lve={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 Nve(){return Lve}const kve={renderOutline:!0,renderOutlineInactive:!0,outlineWidth:3,outlineWidthInactive:2,activeSegmentOutlineWidthDelta:0,renderFill:!0,renderFillInactive:!0,fillAlpha:.5,fillAlphaInactive:.4,outlineOpacity:1,outlineOpacityInactive:.85};function Vve(){return kve}class Fve{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===Pt.Labelmap){const i=n;i.renderOutlineInactive??(i.renderOutlineInactive=i.renderOutline),i.outlineWidthInactive??(i.outlineWidthInactive=i.outlineWidth),i.renderFillInactive??(i.renderFillInactive=i.renderFill),i.fillAlphaInactive??(i.fillAlphaInactive=i.fillAlpha),i.outlineOpacityInactive??(i.outlineOpacityInactive=i.outlineOpacity)}else if(r===Pt.Contour){const i=n;i.outlineWidthInactive??(i.outlineWidthInactive=i.outlineWidth),i.outlineOpacityInactive??(i.outlineOpacityInactive=i.outlineOpacity),i.outlineDashInactive??(i.outlineDashInactive=i.outlineDash),i.renderOutlineInactive??(i.renderOutlineInactive=i.renderOutline),i.renderFillInactive??(i.renderFillInactive=i.renderFill),i.fillAlphaInactive??(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 Pt.Labelmap:return Vve();case Pt.Contour:return Nve();case Pt.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!DU(n,i)}}const ns=new Fve;function Uve(t){const e={segmentationId:t};nt(ze,U.SEGMENTATION_ADDED,e)}const k7={colorLUT:[],segmentations:[],viewportSegRepresentations:{}};class Bve{constructor(e){this._stackLabelmapImageIdReferenceMap=new Map,this._labelmapImageIdReferenceMap=new Map,e||(e=Pn()),this.state=Object.freeze(Is(k7)),this.uid=e}getState(){return this.state}updateState(e){const r=Is(this.state);e(r),this.state=Object.freeze(r)}getColorLUT(e){return this.state.colorLUT[e]}getNextColorLUTIndex(){return this.state.colorLUT.length}resetState(){this._stackLabelmapImageIdReferenceMap.clear(),this._labelmapImageIdReferenceMap.clear(),this.state=Object.freeze(Is(k7))}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)}),us(e)}addSegmentation(e){if(this.getSegmentation(e.segmentationId))throw new Error(`Segmentation with id ${e.segmentationId} already exists`);this.updateState(r=>{const n=Is(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)}),Uve(e.segmentationId)}removeSegmentation(e){this.updateState(r=>{const n=r.segmentations.filter(i=>i.segmentationId!==e);r.segmentations.splice(0,r.segmentations.length,...n)}),Q8(e)}addSegmentationRepresentation(e,r,n,i){if(!Vn(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]=[],ns.setRenderInactiveSegmentations(e,!0)),n!==Pt.Labelmap?this.addDefaultSegmentationRepresentation(s,e,r,n,i):this.addLabelmapRepresentation(s,e,r,i)}),yl(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:(o==null?void 0:o.colorLUTIndex)||0,segments:s,config:{...V7(i),...o}}),this._setActiveSegmentation(e,r,n)}addLabelmapRepresentation(e,r,n,i=V7(Pt.Labelmap)){if(!Vn(r))return;const a=this.getSegmentation(n);if(!a)return;const{representationData:s}=a;if(!s.Labelmap)return this.addDefaultSegmentationRepresentation(e,r,n,Pt.Labelmap,i);this.processLabelmapRepresentationAddition(r,n),this.addDefaultSegmentationRepresentation(e,r,n,Pt.Labelmap,i)}async processLabelmapRepresentationAddition(e,r){const n=Vn(e);if(!n)return;const i=this.getSegmentation(r);if(!i)return;const o=n.viewport instanceof Ir,{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),this._updateLabelmapImageIdReferenceMap({segmentationId:e,referenceImageId:o,labelmapImageId: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=Vn(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=Vn(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),this._updateLabelmapImageIdReferenceMap({segmentationId:l,referenceImageId:d,labelmapImageId: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=Ue.getVolume(i).imageIds}return n}getLabelmapImageIdsForImageId(e,r){const n=this._generateMapKey({segmentationId:r,referenceImageId:e});return this._labelmapImageIdReferenceMap.get(n)}getCurrentLabelmapImageIdsForViewport(e,r){const n=Vn(e);if(!n)return;const o=n.viewport.getCurrentImageId();return this.getLabelmapImageIdsForImageId(o,r)}getCurrentLabelmapImageIdForViewport(e,r){const n=Vn(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}=Vn(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=>{r_(e,o.segmentationId,o.type)});const i=this.getSegmentationRepresentations(e);return i.length>0&&i[0].active&&yl(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})=>{r_(e,o,a)}),i}_updateLabelmapImageIdReferenceMap({segmentationId:e,referenceImageId:r,labelmapImageId:n}){const i=this._generateMapKey({segmentationId:e,referenceImageId:r});if(!this._labelmapImageIdReferenceMap.has(i)){this._labelmapImageIdReferenceMap.set(i,[n]);return}const o=this._labelmapImageIdReferenceMap.get(i),a=Array.from(new Set([...o,n]));this._labelmapImageIdReferenceMap.set(i,a)}_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})}),yl(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})})}),yl(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]=Is(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}_generateMapKey({segmentationId:e,referenceImageId:r}){return`${e}-${r}`}}async function uG({imageIds:t,options:e}){const r=t,n=(e==null?void 0:e.volumeId)||Pn();return await d8(n,r),{volumeId:n}}async function Gve({segmentationId:t,options:e}){const r=er.getSegmentation(t),n=r.representationData.Labelmap,{volumeId:i}=await uG({imageIds:n.imageIds,options:e});r.representationData.Labelmap.volumeId=i}function V7(t){const e=Mu.newInstance(),r=o0.newInstance();return r.addPoint(0,0),t===Pt.Labelmap?{cfun:e,ofun:r}:{}}const er=new Bve("DEFAULT");function Aa(t,e={}){return er.getSegmentationRepresentations(t,e)}function eb(t,e){const r=er;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 fG(t){return er.getSegmentationRepresentationsBySegmentationId(t)}function Wve(t,e){const r=De(t),{viewport:n}=r,o=n.getActors().filter(a=>a.representationUID&&typeof a.representationUID=="string"&&a.representationUID.startsWith(e));n.removeActors(o.map(a=>a.uid))}function dG(t,e,r){const n=Vn(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 $ve(t,e){const r=Vn(t);if(!r)return;const{renderingEngine:n,viewport:i}=r;if(!n||!i)return;const a=i.getActors().filter(e);return a.length>0?a:void 0}function zve(t,e){const r=bx(t,e);return r==null?void 0:r.uid}function g1(t,e){return $ve(t,r=>{var n;return(n=r.representationUID)==null?void 0:n.startsWith(`${e}-${Pt.Labelmap}`)})}function bx(t,e){return dG(t,e,r=>{var n;return(n=r.representationUID)==null?void 0:n.startsWith(`${e}-${Pt.Labelmap}`)})}function jve(t,e,r){return dG(t,e,n=>n.representationUID===hG(e,r))}function hG(t,e){return`${t}-${Pt.Surface}-${e}`}function Hve(t,e,r){const n=De(t),{viewport:i}=n,o=jve(i.id,r,e.segmentIndex),a=o==null?void 0:o.actor,s=e.visible;if(a){if(a.setVisibility(s),!s)return;const y=a.getMapper(),m=y.getInputData(),w=e.points,x=e.polys,C=m.getPoints().getData(),S=m.getPolys().getData();if(w.length===C.length&&x.length===S.length)return;const T=Dr.newInstance();T.getPoints().setData(w,3);const _=Gf.newInstance({values:Float32Array.from(x)});T.setPolys(_),y.setInputData(T),y.modified(),i.getRenderer().resetCameraClippingRange();return}const c=e.points,l=e.polys,f=e.color,u=Dr.newInstance();u.getPoints().setData(c,3);const d=Gf.newInstance({values:Float32Array.from(l)});u.setPolys(d);const h=Xo.newInstance({});let g;h.setInputData(u);const p=os.newInstance();p.setMapper(h),p.getProperty().setColor(f[0]/255,f[1]/255,f[2]/255),p.getProperty().setLineWidth(2);const v=hG(r,e.segmentIndex);i.addActor({uid:Pn(),actor:p,clippingFilter:g,representationUID:v}),i.resetCamera(),i.getRenderer().resetCameraClippingRange(),i.render()}function an(t){return er.getSegmentation(t)}function gv(t){return er.getColorLUT(t)}let ew={};function Kve(){return ew}function Xve(t){ew=t}let F7=!1;function Su(){var e;if(!((e=ew.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 t=ew.addons.polySeg;return F7||(t.init(),F7=!0),t}function tb({segmentationId:t,type:e,data:r}){const n=an(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 Pt.Labelmap:r&&(n.representationData[e]=r);break;case Pt.Contour:r&&(n.representationData[e]=r);break;case Pt.Surface:r&&(n.representationData[e]=r);break;default:throw new Error(`Invalid representation type ${e}`)}}function nb(t){const e=typeof t;return t!==null&&(e==="object"||e==="function")}function $g(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,nb(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(b){const D=n,I=i;return n=i=void 0,l=b,a=t.apply(I,D),a}function p(b,D){return h?window.requestAnimationFrame(b):setTimeout(b,D)}function v(b){if(h)return window.cancelAnimationFrame(b);clearTimeout(b)}function y(b){return l=b,s=p(x,e),f?g(b):a}function m(b){const D=b-c,I=b-l,P=e-D;return u?Math.min(P,o-I):P}function w(b){const D=b-c,I=b-l;return c===void 0||D>=e||D<0||u&&I>=o}function x(){const b=Date.now();if(w(b))return C(b);s=p(x,m(b))}function C(b){return s=void 0,d&&n?g(b):(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(...b){const D=Date.now(),I=w(D);if(n=b,i=this,c=D,I){if(s===void 0)return y(c);if(u)return s=p(x,e),g(c)}return s===void 0&&(s=p(x,e)),a}return E.cancel=S,E.flush=T,E.pending=_,E}const Dy=new Map;async function rb(t,e,r,n,i){const o=await r();tb({segmentationId:t,type:e,data:o}),i==null||i(),Dy.has(t)||Dy.set(t,[]);const a=Dy.get(t);return a.includes(e)||a.push(e),qve(n),us(t),o}function qve(t){const e=r=>{Yve(r,t)};t._debouncedUpdateFunction=e,ze.removeEventListener(U.SEGMENTATION_DATA_MODIFIED,t._debouncedUpdateFunction),ze.addEventListener(U.SEGMENTATION_DATA_MODIFIED,t._debouncedUpdateFunction)}const Yve=$g((t,e)=>{const r=t.detail.segmentationId,n=Dy.get(r);!n||!n.length||(e(r),n.length&&us(r))},300);function ib(t,e){const r=eb(t,e);return r?Object.entries(r.segments).reduce((i,[o,a])=>(a.visible||i.add(Number(o)),i),new Set):new Set}function Jve(t,e,r=!1){const n=Vn(t);if(!n)return;const{viewport:i}=n;Wve(i.element,e),r&&i.render()}async function Zve(t,e){var l;const{segmentationId:r,type:n}=e,i=an(r);if(!i)return;let o=i.representationData[Pt.Surface];if(!o&&((l=Su())!=null&&l.canComputeRequestedRepresentation(r,Pt.Surface))){const f=Su();if(o=await rb(r,Pt.Surface,()=>f.computeSurfaceData(r,{viewport:t}),()=>f.updateSurfaceData(r,{viewport:t})),!o)throw new Error(`No Surface data found for segmentationId ${r} even we tried to compute it`)}else!o&&!Su()&&console.debug(`No surface data found for segmentationId ${r} 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(!o){console.warn(`No Surface data found for segmentationId ${r}. Skipping render.`);return}const{geometryIds:a}=o;a!=null&&a.size||console.warn(`No Surfaces found for segmentationId ${r}. Skipping render.`);const{colorLUTIndex:s}=e,c=gv(s);a.forEach(f=>{const u=Ue.getGeometry(f);if(!(u!=null&&u.data)){console.warn(`No Surfaces found for geometryId ${f}. Skipping render.`);return}const{segmentIndex:d}=u.data,g=ib(t.id,{segmentationId:r,type:n}).has(d),p=u.data,v=c[d];p.color=v.slice(0,3),p.visible=!g,Hve(t.element,p,r)}),t.render()}const gG={render:Zve,removeRepresentation:Jve};function Qve(t,e,r,n){const i=t.getViewReference(),{viewPlaneNormal:o,FrameOfReferenceUID:a}=i,s={annotationUID:(n==null?void 0:n.annotationUID)||Pn(),data:{handles:{points:r}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:e,viewPlaneNormal:o,FrameOfReferenceUID:a,referencedImageId:e2e(t,r[0],o),...n}};return rn(s,t.element),s}function e2e(t,e,r){let n;if(t instanceof hr)n=ob(t,e,r);else if(t instanceof Ir){const i=t2e(t),o=Bl(i),a=Ue.getVolume(o);n=Pu(a,e,r)}else throw new Error("getReferencedImageId: viewport must be a StackViewport or BaseVolumeViewport");return n}function t2e(t){var r;const e=(r=t.getViewReferenceId)==null?void 0:r.call(t);if(e)return e;if(t instanceof Ir)return`volumeId:${n2e(t)}`;throw new Error("getTargetId: viewport must have a getTargetId method")}function n2e(t){var r;const e=t.getActors();if(e)return(r=e.find(n=>n.actor.getClassName()==="vtkVolume"))==null?void 0:r.uid}function ob(t,e,r){const n=t.getImageIds();if(!n||!n.length)return;const i=n.map(o=>{const{imagePositionPatient:a}=ut("imagePlaneModule",o),s=r2e(e,a,r);return{imageId:o,distance:s}});return i.sort((o,a)=>o.distance-a.distance),i[0].imageId}function r2e(t,e,r){const n=Ve();Sn(n,t,e);const i=pt(n,r);return Math.abs(i)}function pG(t,e){const{segmentation:r}=t.data,{segmentation:n}=e.data;return r.segmentationId===n.segmentationId&&r.segmentIndex===n.segmentIndex}class mG{constructor(e){this.getGroupKey=r=>{if(typeof r=="string")return r;const i=De(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=Pn()),this.annotations={},this.uid=e,ze.addEventListener(qe.IMAGE_VOLUME_MODIFIED,this._imageVolumeModifiedHandler)}setPreprocessingFn(e){this.preprocessingFn=e}}const i2e=new mG("DEFAULT"),Af=new Set;function vG(t,e=!0){const r=wG();t&&(e?c2e(t,Af,r):xG(t,Af,r)),CG(r,Af)}function o2e(){const t=wG();l2e(Af,t),CG(t,Af)}function a2e(){return Array.from(Af)}function ti(t){return Af.has(t)}function s2e(){return Af.size}function yG(t){const e=ti(t);return vG(t,e),e}function wG(){return Object.freeze({added:[],removed:[],locked:[]})}function c2e(t,e,r){if(!e.has(t)){e.add(t),r.added.push(t);const n=$n(t);n&&(n.isLocked=!0)}}function xG(t,e,r){if(e.delete(t)){r.removed.push(t);const n=$n(t);n&&(n.isLocked=!1)}}function l2e(t,e){t.forEach(r=>{xG(r,t,e)})}function CG(t,e){(t.added.length>0||t.removed.length>0)&&(e.forEach(r=>void t.locked.push(r)),nt(ze,U.ANNOTATION_LOCK_CHANGE,t))}const u2e=Object.freeze(Object.defineProperty({__proto__:null,checkAndSetAnnotationLocked:yG,getAnnotationsLocked:a2e,getAnnotationsLockedCount:s2e,isAnnotationLocked:ti,setAnnotationLocked:vG,unlockAllAnnotations:o2e},Symbol.toStringTag,{value:"Module"})),wl=new Set;function ha(t,e=!0,r=!1){e?f2e(t,r):ab(t)}function f2e(t,e=!1){const r=TG();if(!e){_G(wl,r);const n=$n(t);n&&(n.isSelected=!0)}if(t&&!wl.has(t)){wl.add(t),r.added.push(t);const n=$n(t);n&&(n.isSelected=!0)}EG(r,wl)}function ab(t){const e=TG();if(t){if(wl.delete(t)){e.removed.push(t);const r=$n(t);r.isSelected=!1}}else _G(wl,e);EG(e,wl)}function SG(){return Array.from(wl)}function d2e(t){return SG().filter(e=>{var n;const r=$n(e);return((n=r==null?void 0:r.metadata)==null?void 0:n.toolName)===t})}function pv(t){return wl.has(t)}function h2e(){return wl.size}function TG(){return Object.freeze({added:[],removed:[],selection:[]})}function _G(t,e){t.forEach(r=>{if(t.delete(r)){e.removed.push(r);const n=$n(r);n&&(n.isSelected=!1)}})}function EG(t,e){(t.added.length>0||t.removed.length>0)&&(e.forEach(r=>void t.selection.push(r)),nt(ze,U.ANNOTATION_SELECTION_CHANGE,t))}const g2e=Object.freeze(Object.defineProperty({__proto__:null,deselectAnnotation:ab,getAnnotationsSelected:SG,getAnnotationsSelectedByToolName:d2e,getAnnotationsSelectedCount:h2e,isAnnotationSelected:pv,setAnnotationSelected:ha},Symbol.toStringTag,{value:"Module"})),p2e=t=>(t.data||(t.data={}),t.data.handles||(t.data.handles={}),t.data.handles.textBox||(t.data.handles.textBox={}),t),m2e=t=>(t.data||(t.data={}),t.data.cachedStats||(t.data.cachedStats={}),t),l0=new Set;function bG(t,e=!0){const r=DG();t&&(e?IG(t,l0,r):y2e(t,l0,r)),MG(r)}function v2e(){const t=DG();l0.forEach(e=>{IG(e,l0,t)}),MG(t)}function ni(t){if($n(t))return!l0.has(t)}function DG(){return Object.freeze({lastVisible:[],lastHidden:[],hidden:[]})}function IG(t,e,r){if(e.delete(t)){r.lastVisible.push(t);const n=$n(t);n.isVisible=!0}}function y2e(t,e,r){if(!e.has(t)){e.add(t),pv(t)&&ab(t),r.lastHidden.push(t);const n=$n(t);n.isVisible=!1}}function MG(t){(t.lastHidden.length>0||t.lastVisible.length>0)&&(l0.forEach(e=>void t.hidden.push(e)),nt(ze,U.ANNOTATION_VISIBILITY_CHANGE,t))}function OG(t){const e=!l0.has(t);return bG(t,e),e}const w2e=Object.freeze(Object.defineProperty({__proto__:null,checkAndSetAnnotationVisibility:OG,isAnnotationVisible:ni,setAnnotationVisibility:bG,showAllAnnotations:v2e},Symbol.toStringTag,{value:"Module"})),sb=i2e,x2e=t=>{t=p2e(t),t=m2e(t);const e=t.annotationUID,r=yG(e);t.isLocked=r;const n=OG(e);return t.isVisible=n,t};sb.setPreprocessingFn(x2e);H8(sb);function C2e(){H8(sb)}function Lc(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=an(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))}function Ru(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=an(e);n.representationData.Contour||(n.representationData.Contour={annotationUIDsMap:new Map});let{annotationUIDsMap:i}=n.representationData.Contour;i||(i=new Map);let o=i==null?void 0:i.get(r);o||(o=new Set,i.set(r,o)),i.set(r,o.add(t.annotationUID))}const S2e="PlanarFreehandContourSegmentationTool";function cb(t){var o;const{polyline:e}=((o=t.data)==null?void 0:o.contour)||{};if(!e||e.length<3){console.warn("Skipping creation of new annotation due to invalid polyline:",e);return}nn(t.annotationUID),Lc(t);const r=e[0],n=e[e.length-1],i={metadata:{...t.metadata,toolName:S2e,originalToolName:t.metadata.originalToolName||t.metadata.toolName},data:{cachedStats:{},handles:{points:[r,n],textBox:t.data.handles.textBox?{...t.data.handles.textBox}:void 0},contour:{...t.data.contour},spline:t.data.spline,segmentation:{...t.data.segmentation}},annotationUID:Pn(),highlighted:!0,invalidated:!0,isLocked:!1,isVisible:void 0,interpolationUID:t.interpolationUID,interpolationCompleted:t.interpolationCompleted};return rn(i,t.metadata.FrameOfReferenceUID),Ru(i),i}function _0(t){const n=er.getState().viewportSegRepresentations;return Object.entries(n).filter(([,o])=>o.some(a=>a.segmentationId===t)).map(([o])=>o)}function lb(t){const e=_0(t);if((e==null?void 0:e.length)===0)return[];const r=[];for(const n of e){const{viewport:i}=Vn(n)||{};i&&r.push(i)}return r}function ub(t){const e=lb(t);return e.length>0?e[0]:void 0}function fb(t,e,r=.99){var o;const n=(o=e.metadata)==null?void 0:o.viewPlaneNormal;if(!n||!Array.isArray(n))return;const i=Ve();en(i,n);for(const a of t){const s=a.getCamera();if(!(s!=null&&s.viewPlaneNormal))continue;const c=Ve();en(c,s.viewPlaneNormal);const l=pt(i,c);if(Math.abs(l)>=r)return a}}function i_(t){var i;const e=an(t);if(!e)return;const r=(i=e.representationData)==null?void 0:i.Contour;if(!r)return;const{annotationUIDsMap:n}=r;if(n)return n}function PG(t,e,r){var i,o;const n={annotationUID:Pn(),data:{contour:{closed:!0,polyline:[]},segmentation:{segmentationId:e,segmentIndex:r},handles:{}},handles:{},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{...t.metadata,toolName:t.metadata.toolName}};return n.data.segmentation.segmentationId=e,n.data.segmentation.segmentIndex=r,(i=t.data.contour)!=null&&i.polyline&&(n.data.contour.polyline=[...t.data.contour.polyline]),(o=t.data.handles)!=null&&o.points&&(n.data.handles.points=t.data.handles.points.map(a=>[...a])),n}function RG(t,e,r,n){const i=i_(t),o=i_(r);if(!i||!o||!(i!=null&&i.has(e)))return;const a=i.get(e),s=ub(r);if(!s)return;const c=Mr(s.id),l=u=>{const d=PG(u,r,n);if(c){const h=c.getToolInstance(u.metadata.toolName);h&&typeof h.isSplineAnnotation=="function"&&h.isSplineAnnotation(u)&&h.createSplineObjectFromType(d,u.data.spline.type)}return rn(d,s.element),f.add(d.annotationUID),d},f=new Set;for(const u of a){const d=$n(u),h=l(d);if(d!=null&&d.childAnnotationUIDs){h.childAnnotationUIDs=[];for(const g of d.childAnnotationUIDs){const p=$n(g),v=l(p);v.parentAnnotationUID=h.annotationUID,h.childAnnotationUIDs.push(v.annotationUID)}}}o.set(n,f)}var ga;(function(t){t[t.CounterClockwise=-1]="CounterClockwise",t[t.Unknown=0]="Unknown",t[t.Clockwise=1]="Clockwise"})(ga||(ga={}));function db(t,e){return t.minX<=e.maxX&&t.maxX>=e.minX&&t.minY<=e.maxY&&t.maxY>=e.minY}function tw(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 T2e(t,e){return Math.sqrt(tw(t,e))}const _2e=Object.freeze(Object.defineProperty({__proto__:null,distanceToPoint:T2e,distanceToPointSquared:tw,intersectAABB:db},Symbol.toStringTag,{value:"Module"}));class AG{}class LG{constructor(e){this.storePointData=e.storePointData}getStatistics(){console.debug("InstanceCalculator getStatistics called")}}const{PointsManager:E2e}=Dn;function Sm(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?E2e.create3(1024):null,sumLPS:[0,0,0]}}function NG(t,e,r=null,n=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&&r&&t.pointsInShape.push(r);const i=Array.isArray(e)?e:[e];t.count+=1,r&&(t.sumLPS[0]+=r[0],t.sumLPS[1]+=r[1],t.sumLPS[2]+=r[2]),t.max.forEach((o,a)=>{const s=i[a];t.allValues[a].push(s);const c=t.count,l=s-t.runMean[a],f=l/c,u=l*f*(c-1);t.sum[a]+=s,t.runMean[a]+=f,t.m4[a]+=u*f*f*(c*c-3*c+3)+6*f*f*t.m2[a]-4*f*t.m3[a],t.m3[a]+=u*f*(c-2)-3*f*t.m2[a],t.m2[a]+=u,st.max[a]&&(t.max[a]=s,a===0&&(t.maxIJK=n?[...n]:null,t.maxLPS=r?[...r]:null))})}function b2e(t){if(t.length===0)return 0;const e=[...t].sort((n,i)=>n-i),r=Math.floor(e.length/2);return e.length%2===0?(e[r-1]+e[r])/2:e[r]}function kG(t,e){const r=t.sum.map(u=>u/t.count),n=t.m2.map(u=>Math.sqrt(u/t.count)),i=t.sumLPS.map(u=>u/t.count),o=t.m3.map((u,d)=>{const h=t.m2[d]/t.count;return h===0?0:u/(t.count*Math.pow(h,1.5))}),a=t.m4.map((u,d)=>{const h=t.m2[d]/t.count;return h===0?0:u/(t.count*h*h)-3}),s=t.allValues.map(u=>b2e(u)),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:r.length===1?r[0]:r,unit:e},stdDev:{name:"stdDev",label:"Standard Deviation",value:n.length===1?n[0]:n,unit:e},count:{name:"count",label:"Voxel Count",value:t.count,unit:null},median:{name:"median",label:"Median",value:s.length===1?s[0]:s,unit:e},skewness:{name:"skewness",label:"Skewness",value:o.length===1?o[0]:o,unit:null},kurtosis:{name:"kurtosis",label:"Kurtosis",value:a.length===1?a[0]:a,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,f=Sm(l);return t.max=f.max,t.min=f.min,t.sum=f.sum,t.count=f.count,t.maxIJK=f.maxIJK,t.maxLPS=f.maxLPS,t.minIJK=f.minIJK,t.minLPS=f.minLPS,t.runMean=f.runMean,t.m2=f.m2,t.m3=f.m3,t.m4=f.m4,t.allValues=f.allValues,t.pointsInShape=f.pointsInShape,t.sumLPS=f.sumLPS,c}const Dd=class Dd extends AG{static statsInit(e){e.storePointData||(this.state.pointsInShape=null),this.state=Sm(e.storePointData)}};Dd.state=Sm(!0),Dd.statsCallback=({value:e,pointLPS:r=null,pointIJK:n=null})=>{NG(Dd.state,e,r,n)},Dd.getStatistics=e=>kG(Dd.state,e==null?void 0:e.unit);let Al=Dd;class VG extends LG{constructor(e){super(e),this.state=Sm(e.storePointData)}statsInit(e){this.state=Sm(e.storePointData)}statsCallback(e){NG(this.state,e.value,e.pointLPS,e.pointIJK)}getStatistics(e){return kG(this.state,e==null?void 0:e.unit)}}const D2e=Object.freeze(Object.defineProperty({__proto__:null,BasicStatsCalculator:Al,Calculator:AG,InstanceBasicStatsCalculator:VG,InstanceCalculator:LG},Symbol.toStringTag,{value:"Module"}));function Au(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 Ko(t,e){return Math.sqrt(Au(t,e))}function o_(t,e){const[r,n]=t,[i,o]=e,a=2*i-r,s=2*o-n;return[a,s]}const I2e=Object.freeze(Object.defineProperty({__proto__:null,distanceToPoint:Ko,distanceToPointSquared:Au,mirror:o_},Symbol.toStringTag,{value:"Module"}));function Lf(t){const[e,r]=t;return Ko(e,r)}function Vd(t){const[e,r]=t,n=Ko(e,r),i=[e[0]-n,e[1]-n],o=[e[0]+n,e[1]+n];return[i,o]}const M2e=Object.freeze(Object.defineProperty({__proto__:null,getCanvasCircleCorners:Vd,getCanvasCircleRadius:Lf},Symbol.toStringTag,{value:"Module"}));function Dx(t,e,r={}){return r.precalculated||FG(t,r),r.precalculated(e)}const FG=(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 a_(t){const[e,r,n,i]=t,o=[n[0],r[1]],a=[i[0],e[1]];return[o,a]}const O2e=Object.freeze(Object.defineProperty({__proto__:null,getCanvasEllipseCorners:a_,pointInEllipse:Dx,precalculatePointInEllipse:FG},Symbol.toStringTag,{value:"Module"}));function nw(t,e,r){let n;const i=Au(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:Au(r,n)}}function mv(t,e,r){return nw(t,e,r).distanceSquared}function Si(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(mv(t,e,r))}function I2(t){return typeof t=="number"?t?t<0?-1:1:t===t?0:NaN:NaN}function rw(t,e,r,n,i=!1){const[o,a]=t,[s,c]=e,[l,f]=r,[u,d]=n;if(i){const I=(o-s)*(f-d)-(a-c)*(l-u);if(Math.abs(I)<1e-10)return;const P=((o-l)*(f-d)-(a-f)*(l-u))/I,M=o+P*(s-o),L=a+P*(c-a);return[M,L]}const h=c-a,g=o-s,p=s*a-o*c,v=h*l+g*f+p,y=h*u+g*d+p;if(v!==0&&y!==0&&I2(v)===I2(y))return;const m=d-f,w=l-u,x=u*f-l*d,C=m*o+w*a+x,S=m*s+w*c+x;if(C!==0&&S!==0&&I2(C)===I2(S))return;const T=h*w-m*g;let _;_=g*x-w*p;const E=_/T;_=m*p-h*x;const b=_/T;return[E,b]}const Sp=.01;function Iy(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-Sp&&r[0]<=i+Sp&&r[1]>=o-Sp&&r[1]<=a+Sp))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)<=Sp}const P2e=Object.freeze(Object.defineProperty({__proto__:null,distanceToPoint:Si,distanceToPointSquared:mv,distanceToPointSquaredInfo:nw,intersectLine:rw,isPointOnLineSegment:Iy},Symbol.toStringTag,{value:"Module"}));function Ix(t){if(t.length<3)return!1;const e=t.length,r=t[0],n=t[e-1],i=Au(r,n);return a0(0,i)}function ua(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(ua(l,e))return!1}const s=!(o===void 0?Ix(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 vv(t){const e=t.length;let r=0,n=e-1;for(let i=0;i=0?1:-1}function R2e(t){const e=Ve(),r=t[0];for(let n=0,i=t.length;nm>=-Bi&&m<=1+Bi;if(y(h)){const m=Up(bt(),t,i,h);if(di(r,m))return r}if(y(g)){const m=Up(bt(),t,i,g);if(di(n,m))return n}if(y(p)){const m=Up(bt(),r,o,p);if(di(t,m))return t}if(y(v)){const m=Up(bt(),r,o,v);if(di(e,m))return e}}return null}const l=b3(s,o)/a,f=c/a;return l>=-Bi&&l<=1+Bi&&f>=-Bi&&f<=1+Bi?[t[0]+l*i[0],t[1]+l*i[1]]:null}var fu;(function(t){t[t.Vertex=0]="Vertex",t[t.Intersection=1]="Intersection"})(fu||(fu={}));var $o;(function(t){t[t.Entering=0]="Entering",t[t.Exiting=1]="Exiting",t[t.Unknown=2]="Unknown"})($o||($o={}));function zg(t,e){if(t.length!==e.length)return!1;const r=t.length;if(r===0)return!0;let n=!0;for(let o=0;oBi&&r.reverse();const o=[];for(let f=0;f{const h=[];let g=0;for(let v=0;v(u===0?w.seg1Idx:w.seg2Idx)===v).sort((w,x)=>(u===0?w.alpha1:w.alpha2)-(u===0?x.alpha1:x.alpha2));for(const w of m){if(h.length>0&&di(h[h.length-1].coordinates,w.coord)){h[h.length-1].isIntersection||(h[h.length-1].isIntersection=!0,h[h.length-1].intersectionInfo=w,h[h.length-1].alpha=u===0?w.alpha1:w.alpha2);continue}h.push({id:`${u}_i${g++}`,coordinates:w.coord,type:fu.Intersection,originalPolyIndex:u,next:null,prev:null,isIntersection:!0,visited:!1,alpha:u===0?w.alpha1:w.alpha2,intersectionInfo:w})}}const p=[];if(h.length>0){p.push(h[0]);for(let v=1;v0)for(let v=0;v{if(f.isIntersection){const u=f.intersectionInfo,d=c.find(h=>h.isIntersection&&di(h.coordinates,f.coordinates)&&h.intersectionInfo.seg1Idx===u.seg1Idx&&h.intersectionInfo.seg2Idx===u.seg2Idx);if(d){f.partnerNode=d,d.partnerNode=f;const h=f.prev.coordinates,g=f.coordinates,p=d.next.coordinates;Wn(bt(),g,h),Wn(bt(),p,g);const v=[(f.prev.coordinates[0]+f.coordinates[0])/2,(f.prev.coordinates[1]+f.coordinates[1])/2];ua(e,v)?f.intersectionDir=$o.Exiting:f.intersectionDir=$o.Entering}else f.isIntersection=!1}}),s.forEach(f=>delete f.intersectionInfo),c.forEach(f=>delete f.intersectionInfo);const l=[];for(let f=0;fv){console.warn("Subtraction: Max iterations reached, possible infinite loop.");break}h.visited=!0,(d.length===0||!di(d[d.length-1],h.coordinates))&&d.push(h.coordinates),h.isIntersection&&(g?h.intersectionDir===$o.Entering&&h.partnerNode&&(h=h.partnerNode,g=!1):h.partnerNode?(h=h.partnerNode,g=!0):console.warn("Subtraction: Intersection on source without partner.")),h=h.next}while(h!==u||!g);d.length>=3&&(di(d[0],d[d.length-1])&&d.pop(),d.length>=3&&l.push(d))}return l}function BG(t,e){if(t.length<3||e.length<3)return[];let r=e.slice();const n=Oc(t),i=Oc(r);if(Math.abs(n)ua(o,u))?[[...t.map(u=>[...u])]]:ua(t,r[0])&&r.every(u=>ua(t,u))?[[...r.map(u=>[...u])]]:[];const s=(u,d,h)=>{const g=[];let p=0;for(let y=0;y(d===0?x.seg1Idx:x.seg2Idx)===y).sort((x,C)=>(d===0?x.alpha1:x.alpha2)-(d===0?C.alpha1:C.alpha2));for(const x of w){if(g.length>0&&di(g[g.length-1].coordinates,x.coord)){const C=g[g.length-1];C.isIntersection||(C.isIntersection=!0,C.intersectionInfo=x,C.alpha=d===0?x.alpha1:x.alpha2,C.type=fu.Intersection);continue}g.push({id:`${d}_i${p++}`,coordinates:[...x.coord],type:fu.Intersection,originalPolyIndex:d,next:null,prev:null,isIntersection:!0,visited:!1,processedInPath:!1,alpha:d===0?x.alpha1:x.alpha2,intersectionInfo:x,intersectionDir:$o.Unknown})}}const v=[];if(g.length>0){v.push(g[0]);for(let y=1;y1&&di(v[0].coordinates,v[v.length-1].coordinates)){const y=v[0],m=v.pop();m.isIntersection&&!y.isIntersection&&m.intersectionInfo&&(y.isIntersection=!0,y.intersectionInfo=m.intersectionInfo,y.alpha=m.alpha,y.type=fu.Intersection)}if(v.length>0)for(let y=0;y{if(u.isIntersection&&u.intersectionInfo){const d=u.intersectionInfo,h=l.find(g=>g.isIntersection&&g.intersectionInfo&&di(g.coordinates,u.coordinates)&&g.intersectionInfo.seg1Idx===d.seg1Idx&&g.intersectionInfo.seg2Idx===d.seg2Idx);if(h){u.partnerNode=h,h.partnerNode=u;const g=Wn(bt(),u.coordinates,u.prev.coordinates),p=Wn(bt(),h.next.coordinates,h.coordinates),v=g[0]*p[1]-g[1]*p[0];if(v>Bi)u.intersectionDir=$o.Entering,h.intersectionDir=$o.Exiting;else if(v<-Bi)u.intersectionDir=$o.Exiting,h.intersectionDir=$o.Entering;else{const y=[(u.prev.coordinates[0]+u.coordinates[0])/2,(u.prev.coordinates[1]+u.coordinates[1])/2];ua(o,y)?(u.intersectionDir=$o.Exiting,h.intersectionDir=$o.Entering):(u.intersectionDir=$o.Entering,h.intersectionDir=$o.Exiting)}}else u.isIntersection=!1,u.intersectionInfo=void 0}});const f=[];for(const u of c){if(!u.isIntersection||u.visited||u.intersectionDir!==$o.Entering)continue;let d=[],h=u,g=!0;const p=u;let v=0;const y=(c.length+l.length)*2;c.forEach(m=>m.processedInPath=!1),l.forEach(m=>m.processedInPath=!1);do{if(v++>y){console.warn("Intersection: Max iterations in path tracing.",p.id,h.id),d=[];break}if(h.processedInPath&&h!==p){console.warn("Intersection: Path processing loop detected, discarding path segment.",p.id,h.id),d=[];break}h.processedInPath=!0,h.visited=!0,(d.length===0||!di(d[d.length-1],h.coordinates))&&d.push([...h.coordinates]);let m=!1;h.isIntersection&&h.partnerNode&&(g?(h=h.partnerNode,g=!1,m=!0):(h=h.partnerNode,g=!0,m=!0)),h=h.next}while(h!==p||g&&h.originalPolyIndex!==0||!g&&h.originalPolyIndex!==1);if(v>y||d.length===0||d.length>0&&di(d[0],d[d.length-1])&&d.pop(),d.length>=3){const m=Oc(d);(n>0&&m<0||n<0&&m>0)&&d.reverse(),f.push(d.map(w=>[...w]))}}return f}function hb(t,e,r,n){let i=!1;const o=t[0]e[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 O2(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 gb(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];hb(e,r,c,f)&&i.push([s,l])}return i}function GG(t,e,r,n=!0){let i,o;n?(o=t.length-1,i=0):(o=0,i=1);for(let a=i;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])||!(Iy(t,e,r)||Iy(t,e,n)||Iy(r,n,t)))return;const m=g[0]>p[0]?g[0]:p[0],w=g[1]p[2]?g[2]:p[2],C=g[3]{const p=g[0],v=e[g[0]],y=e[g[1]],m=WG(l,d,v,y),w=Au(l,m);return{sourceLineSegmentId:p,coordinate:m,targetStartPointDistSquared:w}});h.sort((g,p)=>g.targetStartPointDistSquared-p.targetStartPointDistSquared),h.forEach(g=>{const{sourceLineSegmentId:p,coordinate:v}=g,y={type:Kd.Intersection,coordinates:v,position:Xd.Edge,direction:a,visited:!1,next:null},m={...y,direction:dh.Unknown,cloned:!0};a===dh.Entering?y.next=m:m.next=y;let w=i.get(p);w||(w=[],i.set(p,w)),r.push(y),w.push(m),a*=-1})}for(let s=0,c=e.length;s({intersectionPoint:h,lineSegStartDistSquared:Au(f,h.coordinates)})).sort((h,g)=>h.lineSegStartDistSquared-g.lineSegStartDistSquared).map(({intersectionPoint:h})=>h).forEach(h=>n.push(h))}return U7(r),U7(n),{targetPolylinePoints:r,sourcePolylinePoints:n}}function k2e(t){for(let e=0,r=t.length;e=d&&console.warn("Maximum iterations reached in mergePolylines, possible infinite loop detected"),l}const V2e=.1;function Rx(t,e=V2e){const r=t.length;if(r<3)return t;const n=e*e,i=[[0,r-1]],o=new Array(r).fill(!1);let a=2;for(o[0]=!0,o[r-1]=!0;i.length;){const[c,l]=i.pop();if(l-c===1)continue;const f=t[c],u=t[l];let d=-1/0,h=-1;for(let g=c+1;gd&&(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(dr(d,e))});const c=Math.min(...s),l=s.indexOf(c);return{segment:a[l],distance:c}}const G0=.001,U2e=(t,e)=>{let r,n,i;if(t instanceof hr){const a=t.getImageData();if(!a)return;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=Ve();mn(g,f,l);const p=Math.abs(pt(g,u)),v=Math.abs(pt(g,d)),y=Math.abs(pt(g,h));let m;if(Math.abs(1-p)D4(t,e){const{xDir:i,yDir:o,spacing:a}=n,s=De(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=Ve();pn(u,f,l);const d=Math.abs(pt(u,i)),h=Math.abs(pt(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=D4(p,r),y=bt();Wn(y,r,p),Ds(y,y[0]/v,y[1]/v);const m=v/g;for(let w=1;w<=g;w++)e.push([p[0]+m*y[0]*w,p[1]+m*y[1]*w])}else e.push(r);return g},W2e=(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!(dr(t,u)>n||dr(e,u)>dr(e,r))},$2e=1e-6;function zG(t){let e;const r=R8(t,50);for(let a=0;a<3;a++)if(r.every((s,c,l)=>Math.abs(s[a]-l[0][a])<$2e)){e=a;break}if(e===void 0)throw new Error("Cannot find a shared dimension index for polyline, probably oblique plane");const n=[],i=(e+1)%3,o=(e+2)%3;for(let a=0;a[o[0],o[1]]).sort((o,a)=>o[0]===a[0]?o[1]-a[1]:o[0]-a[0]);function r(o,a,s){return(a[0]-o[0])*(s[1]-o[1])-(a[1]-o[1])*(s[0]-o[0])}const n=[];for(const o of e){for(;n.length>=2&&r(n[n.length-2],n[n.length-1],o)<=0;)n.pop();n.push(o)}const i=[];for(let o=e.length-1;o>=0;o--){const a=e[o];for(;i.length>=2&&r(i[i.length-2],i[i.length-1],a)<=0;)i.pop();i.push(a)}return n.pop(),i.pop(),n.concat(i)}const Qf=Object.freeze(Object.defineProperty({__proto__:null,addCanvasPointsToArray:G2e,arePolylinesIdentical:zg,containsPoint:ua,containsPoints:E0,convexHull:jG,decimate:Rx,getAABB:zf,getArea:vv,getClosestLineSegmentIntersection:F2e,getFirstLineSegmentIntersectionIndexes:GG,getLineSegmentIntersectionsCoordinates:$G,getLineSegmentIntersectionsIndexes:gb,getNormal2:s_,getNormal3:A2e,getSignedArea:Oc,getSubPixelSpacingAndXYDirections:U2e,getWindingDirection:My,intersectPolyline:Ox,intersectPolylines:BG,isClosed:Ix,isPointInsidePolyline3D:pb,mergePolylines:Px,pointCanProjectOnLine:W2e,pointsAreWithinCloseContourProximity:B2e,projectTo2D:zG,subtractPolylines:Mx},Symbol.toStringTag,{value:"Module"}));function z2e(t,e,r,n){const i=[t,e],o=[t+r,e],a=[t+r,e],s=[t+r,e+n],c=[t+r,e+n],l=[t,e+n],f=[t,e+n];return{top:[i,o],right:[a,s],bottom:[c,l],left:[f,[t,e]]}}function mb(t,e){if(t.length!==4||e.length!==2)throw Error("rectangle:[left, top, width, height] or point: [x,y] not defined correctly");const[r,n,i,o]=t;let a=655535;const s=z2e(r,n,i,o);return Object.keys(s).forEach(c=>{const[l,f]=s[c],u=Si(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 B7;const u=[0,1];if(P2(r[0]-o,l,u)&&P2(o-r[2],-l,u)&&P2(r[1]-a,f,u)&&P2(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),B7}return K2e}const X2e=Object.freeze(Object.defineProperty({__proto__:null,findClosestPoint:c_,liangBarksyClip:Fd},Symbol.toStringTag,{value:"Module"}));function q2e(t,e){const[r,n]=t,[i,o]=e,a=Sn(Ve(),n,r),s=Sn(Ve(),i,o),c=pt(a,s),l=_i(a),f=_i(s),u=c/(l*f);return Math.acos(u)*180/Math.PI}function Y2e(t,e){const[r,n]=t,[i,o]=e,a=Ps(bt(),n,r),s=Ps(bt(),i,o),c=au(a,s),l=w5(a),f=w5(s),u=c/(l*f);return Math.acos(u)*(180/Math.PI)}function Hh(t,e){return t[0].length===3?q2e(t,e):Y2e(t,e)}const J2e=Object.freeze(Object.defineProperty({__proto__:null,angleBetweenLines:Hh},Symbol.toStringTag,{value:"Module"})),Z2e=Object.freeze(Object.defineProperty({__proto__:null,BasicStatsCalculator:D2e,aabb:_2e,angle:J2e,circle:M2e,ellipse:O2e,lineSegment:P2e,point:I2e,polyline:Qf,rectangle:j2e,vec2:X2e},Symbol.toStringTag,{value:"Module"}));function Uc(t,e,r,n){var g,p,v;const{canvasToWorld:i,worldToCanvas:o}=r,{data:a}=t,{targetWindingDirection:s}=e;let{points:c}=e,l=My(c);(g=n==null?void 0:n.decimate)!=null&&g.enabled&&(c=Rx(e.points,(p=n==null?void 0:n.decimate)==null?void 0:p.epsilon));let{closed:f}=e;const u=c.length,d=new Array(u);My(c);const h=IB(t);if(f===void 0){let y=!1;if(c.length>3){const m=Au(c[0],c[u-1]);y=Vt(0,m)}f=y}if((n==null?void 0:n.updateWindingDirection)!==!1){let y=h?h.data.contour.windingDirection*-1:s;y===void 0&&(y=l),y!==l&&c.reverse();const m=(((v=a.handles)==null?void 0:v.points)??[]).map(o);m.length>2&&My(m)!==y&&a.handles.points.reverse(),l=y}for(let y=0;y{je.svgNodeCache[i][a].touched=!1}),{svgLayerElement:o,svgNodeCacheForCanvas:je.svgNodeCache,getSvgNode:nye.bind(this,i),appendNode:rye.bind(this,o,i),setNodeTouched:iye.bind(this,i),clearUntouched:oye.bind(this,o,i)}}function tye(t){const e=`.${Q2e}`,r=t.querySelector(e);return r==null?void 0:r.querySelector(":scope > .svg-layer")}function nye(t,e){if(je.svgNodeCache[t]&&je.svgNodeCache[t][e])return je.svgNodeCache[t][e].domRef}function rye(t,e,r,n){if(!je.svgNodeCache[e])return null;je.svgNodeCache[e][n]={touched:!0,domRef:r},t.appendChild(r)}function iye(t,e){je.svgNodeCache[t]&&je.svgNodeCache[t][e]&&(je.svgNodeCache[t][e].touched=!0)}function oye(t,e){je.svgNodeCache[e]&&Object.keys(je.svgNodeCache[e]).forEach(r=>{const n=je.svgNodeCache[e][r];!n.touched&&n.domRef&&(t.removeChild(n.domRef),delete je.svgNodeCache[e][r])})}function HG(t,e){const r=eye(t);e(r),r.clearUntouched()}function Gl(t,e,r){return`${t}::${e}::${r}`}function as(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 Wl(t,e){Object.keys(t).forEach(r=>{const n=t[r];n!==void 0&&n!==""&&e.setAttribute(r,n)})}function Zo(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=Gl(e,"circle",r),y=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(y)as(m,y),t.setNodeTouched(v);else{const w=document.createElementNS(p,"circle");a!==""&&w.setAttribute("data-id",a),Wl(m,w),t.appendNode(w,v)}}function vb(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=Gl(e,"ellipse",r),h=t.getSvgNode(d),[g,p,v,y]=n,m=Math.hypot(v[0]-y[0],v[1]-y[1]),w=Math.hypot(p[0]-g[0],p[1]-g[1]),x=Math.atan2(v[1]-y[1],v[0]-y[0])*180/Math.PI,C=[(v[0]+y[0])/2,(p[1]+g[1])/2],S=m/2,T=w/2,_={cx:`${C[0]}`,cy:`${C[1]}`,rx:`${S}`,ry:`${T}`,stroke:a,fill:"transparent",transform:`rotate(${x} ${C[0]} ${C[1]})`,"stroke-width":f,"stroke-dasharray":l};if(h)as(_,h),t.setNodeTouched(d);else{const E=document.createElementNS(u,"ellipse");o!==""&&E.setAttribute("data-id",o),Wl(_,E),t.appendNode(E,d)}}function aye(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];vb(t,e,r,[c,s,l,f],o={},a="")}function iw(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=Gl(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 w=parseFloat(s)*1.5,x=n[0]-w*.5,C=n[1]-w*.5;v={x:`${x}`,y:`${C}`,width:`${w}`,height:`${w}`,stroke:a,fill:f,"stroke-width":h,rx:`${w*.1}`,opacity:d}}else throw new Error(`Unsupported handle type: ${u}`);const y=t.getSvgNode(p);if(y)as(v,y),t.setNodeTouched(p);else{const m=document.createElementNS(g,u);Wl(v,m),t.appendNode(m,p)}}function sr(t,e,r,n,i={}){n.forEach((o,a)=>{iw(t,e,r,o,i,a)})}function fn(t,e,r,n,i,o={},a=""){if(isNaN(n[0])||isNaN(n[1])||isNaN(i[0])||isNaN(i[1]))return;const{color:s="rgb(0, 255, 0)",width:c=10,lineWidth:l,lineDash:f,markerStartId:u=null,markerEndId:d=null,shadow:h=!1,strokeOpacity:g=1}=o,p=l||c,v="http://www.w3.org/2000/svg",y=Gl(e,"line",r),m=t.getSvgNode(y),w=t.svgLayerElement.id,x=h?`filter:url(#shadow-${w});`:"",C={x1:`${n[0]}`,y1:`${n[1]}`,x2:`${i[0]}`,y2:`${i[1]}`,stroke:s,style:x,"stroke-width":p,"stroke-dasharray":f,"marker-start":u?`url(#${u})`:"","marker-end":d?`url(#${d})`:"","stroke-opacity":g};if(m)as(C,m),t.setNodeTouched(y);else{const S=document.createElementNS(v,"line");a!==""&&S.setAttribute("data-id",a),Wl(C,S),t.appendNode(S,y)}}function KG(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};fn(t,e,"1",h.start,h.end,{color:a,width:s,lineWidth:c,lineDash:l}),fn(t,e,"2",g.start,g.end,{color:a,width:s,lineWidth:c,lineDash:l}),fn(t,e,"3",p.start,p.end,{color:a,width:s,lineWidth:c,lineDash:l})}function Rs(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,markerStartId:d=null,markerEndId:h=null}=i,g=l||a,p="http://www.w3.org/2000/svg",v=Gl(e,"polyline",r),y=t.getSvgNode(v);let m="";for(const x of n)m+=`${x[0].toFixed(1)}, ${x[1].toFixed(1)} `;if(u){const x=n[0];m+=`${x[0]}, ${x[1]}`}const w={points:m,stroke:o,fill:s,"fill-opacity":c,"stroke-width":g,"stroke-dasharray":f,"marker-start":d?`url(#${d})`:"","marker-end":h?`url(#${h})`:""};if(y)as(w,y),t.setNodeTouched(v);else{const x=document.createElementNS(p,"polyline");Wl(w,x),t.appendNode(x,v)}}function Tu(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=Gl(e,"path",r),y=t.getSvgNode(v);let m="";for(let x=0,C=a.length;xm.length){for(let C=0;C0?c_(n,i):i,c=uye(o),l=c_(c,s),f=Object.assign({color:"rgb(255, 255, 0)",lineWidth:"1",lineDash:"2,3"},a);fn(t,e,`link-${r}`,s,l,f)}function uye(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 Lo(t,e,r,n,i,o,a,s={}){const c=Object.assign({handleRadius:"6",centering:{x:!1,y:!0}},s),l=Lu(t,e,r,n,i,c);return lye(t,e,r,o,i,l,c),l}function yb(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=Gl(e,"rect",r),h=t.getSvgNode(d),[g,p,v,y]=n,m=Math.hypot(g[0]-p[0],g[1]-p[1]),w=Math.hypot(g[0]-v[0],g[1]-v[1]),x=[(y[0]+g[0])/2,(y[1]+g[1])/2],C=[(v[0]+g[0])/2,(v[1]+g[1])/2],S=Math.atan2(x[1]-C[1],x[0]-C[0])*180/Math.PI,T={x:`${x[0]-m/2}`,y:`${x[1]-w/2}`,width:`${m}`,height:`${w}`,stroke:a,fill:"transparent",transform:`rotate(${S} ${x[0]} ${x[1]})`,"stroke-width":f,"stroke-dasharray":l};if(h)as(T,h),t.setNodeTouched(d);else{const _=document.createElementNS(u,"rect");o!==""&&_.setAttribute("data-id",o),Wl(T,_),t.appendNode(_,d)}}function yv(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]];yb(t,e,r,[s,c,l,f],o,a)}const $7="http://www.w3.org/2000/svg";function ow(t,e,r,n,i,o={}){if(isNaN(n[0])||isNaN(n[1])||isNaN(i[0])||isNaN(i[1]))return;const{viaMarker:a=!1,color:s="rgb(0, 255, 0)",markerSize:c=10}=o;if(!a){fye(t,e,r,n,i,o);return}const l=t.svgLayerElement.id,u=`${`arrow-${e}`}-${l}`,d=t.svgLayerElement.querySelector("defs");let h=d.querySelector(`#${u}`);if(h){h.setAttribute("markerWidth",`${c}`),h.setAttribute("markerHeight",`${c}`);const g=h.querySelector("path");g&&g.setAttribute("fill",s)}else{h=document.createElementNS($7,"marker"),h.setAttribute("id",u),h.setAttribute("viewBox","0 0 10 10"),h.setAttribute("refX","8"),h.setAttribute("refY","5"),h.setAttribute("markerWidth",`${c}`),h.setAttribute("markerHeight",`${c}`),h.setAttribute("orient","auto");const g=document.createElementNS($7,"path");g.setAttribute("d","M 0 0 L 10 5 L 0 10 z"),g.setAttribute("fill",s),h.appendChild(g),d.appendChild(h)}o.markerEndId=u,fn(t,e,r,n,i,o)}function fye(t,e,r,n,i,o={}){const{color:a="rgb(0, 255, 0)",width:s=2,lineWidth:c,lineDash:l}=o,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};fn(t,e,r,n,i,{color:a,width:s,lineWidth:c,lineDash:l}),fn(t,e,"2",d.start,d.end,{color:a,width:s,lineWidth:c,lineDash:l}),fn(t,e,"3",h.start,h.end,{color:a,width:s,lineWidth:c,lineDash:l})}function XG(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=Gl(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]),y={x:`${g[0]}`,y:`${g[1]}`,width:`${p}`,height:`${v}`,stroke:a,fill:"black","stroke-width":f,"stroke-dasharray":l};if(h)as(y,h),t.setNodeTouched(d);else{const m=document.createElementNS(u,"rect");Wl(y,m),t.appendNode(m,d)}}const dye=Object.freeze(Object.defineProperty({__proto__:null,draw:HG,drawArrow:ow,drawCircle:Zo,drawEllipse:aye,drawEllipseByCoordinates:vb,drawFan:u_,drawHandle:iw,drawHandles:sr,drawHeight:KG,drawLine:fn,drawLinkedTextBox:Lo,drawPath:Tu,drawPolyline:Rs,drawRect:yv,drawRectByCoordinates:yb,drawRedactionRect:XG,drawTextBox:Lu,setAttributesIfNecessary:as,setNewAttributesIfValid:Wl},Symbol.toStringTag,{value:"Module"}));function qG(t,e){const r=De(t),{renderingEngineId:n,viewportId:i}=r,o=Mr(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=De(e);if(!r)return;if(!ir(r.renderingEngineId)){console.warn("rendering Engine has been destroyed");return}const i=qG(e,[hye,gye,pye]),{renderingEngineId:o,viewportId:a}=r,s={element:e,renderingEngineId:o,viewportId:a};HG(e,c=>{let l=!1;const f=u=>{if(u.renderAnnotation){const d=u.renderAnnotation(r,c);l=l||d}};i.forEach(f),l&&nt(e,U.ANNOTATION_RENDERED,{...s})})}_reset(){window.cancelAnimationFrame(this._animationFrameHandle),this._needsRender.clear(),this._animationFrameSet=!1,this._animationFrameHandle=null,this._setAllViewportsToBeRenderedNextFrame()}}const wb=new mye;function jg(t){wb.renderViewport(t)}function ke(t){t.length&&t.forEach(e=>{const r=Vn(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;jg(i)})}function YG(t,e){const r=t.length,n=[];for(let i=0;i{const i=n.getCamera();return Math.abs(pt(i.viewPlaneNormal,e.viewPlaneNormal))>r})}function St(t,e,r=!0){const n=De(t),{renderingEngine:i,FrameOfReferenceUID:o}=n;let a=i.getViewports();a=YG(a,o),a=Ax(a,e);const s=i.getViewport(n.viewportId);return r&&(a=JG(a,s.getCamera())),a.map(l=>l.id)}const Cye=Object.freeze(Object.defineProperty({__proto__:null,filterViewportsWithFrameOfReferenceUID:YG,filterViewportsWithParallelNormals:JG,filterViewportsWithToolEnabled:Ax,getViewportIdsWithToolToRender:St},Symbol.toStringTag,{value:"Module"})),z7=1e-10,aw="PlanarFreehandContourSegmentationTool";function ss(t,e){const r=t.length,n=new Array(r);for(let i=0;i{const n=r,i=ss(n.data.contour.polyline,t);return{annotation:n,polyline:i}})}function Lx(t,e,r){fv(e,r),Lc(r);const{contour:n}=r.data,i=ss(n.polyline,t);Uc(r,{points:i,closed:n.closed,targetWindingDirection:e.data.contour.windingDirection===ga.Clockwise?ga.CounterClockwise:ga.Clockwise},t),Cb(t,[e,r])}function xb(t,e,r,n,i){var h;if(!Sx(aw)){console.warn(`${aw} is not registered in cornerstone. Cannot combine polylines.`);return}const o=i[0],a=ua(r,o),s=QG(t,e),c=new Set(s),l=new Map,f=(g,p)=>{let v=l.get(g);v||(v=[],l.set(g,v)),v.push(p),c.delete(p)},u=[];if(a){const g=Px(r,i);u.push(g),Array.from(c.keys()).forEach(p=>f(g,p))}else Mx(r,i).forEach(p=>{u.push(p),Array.from(c.keys()).forEach(v=>{E0(p,v.polyline)&&f(p,v)})});Array.from(l.values()).forEach(g=>g.forEach(p=>Gg(p.annotation)));const{element:d}=t;nn(n.annotationUID),nn(e.annotationUID),Lc(n),Lc(e);for(let g=0;gfv(v,y.annotation))}Cb(t,[e,n])}function eW(t,e,r){const n=t.canvasToWorld(r[0]),i=t.canvasToWorld(r[r.length-1]),o={metadata:{...e.metadata,toolName:aw,originalToolName:e.metadata.originalToolName||e.metadata.toolName},data:{cachedStats:{},handles:{points:[n,i],textBox:e.data.handles.textBox?{...e.data.handles.textBox}:void 0},contour:{polyline:[],closed:!0},spline:e.data.spline,segmentation:{...e.data.segmentation}},annotationUID:Pn(),highlighted:!0,invalidated:!0,isLocked:!1,isVisible:void 0,interpolationUID:e.interpolationUID,interpolationCompleted:e.interpolationCompleted};return Uc(o,{points:r,closed:!0,targetWindingDirection:ga.Clockwise},t),o}function Cb(t,e){const{element:r}=t,n=new Set([aw]);e.forEach(i=>{n.add(i.metadata.toolName)});for(const i of n.values())if(Sx(i)){const o=St(r,i);ke(o)}}function Sb(t){if(!t||t.length<2)return t;const e=[t[0]];for(let r=1;rz7||a>z7)&&e.push(n)}return e}function Tb(t){const e=[],r=new Set;for(let n of t){if(!n||n.length<3||(n=Sb(n),n.length<3))continue;const o=[...n].sort((a,s)=>a[0]!==s[0]?a[0]-s[0]:a[1]-s[1]).map(a=>`${a[0].toFixed(6)},${a[1].toFixed(6)}`).join("|");r.has(o)||(r.add(o),e.push(n))}return e}const Sye="PlanarFreehandContourSegmentationTool";function Tye(t,e,r,n,i){return n.forEach(({polyline:o,viewReference:a})=>{if(o.length<3)return;const s={annotationUID:Pn(),data:{contour:{closed:!0,polyline:o},segmentation:{segmentationId:r,segmentIndex:i},handles:{}},handles:{},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:Sye,...a}};rn(s,t.element);const c=(e==null?void 0:e.get(i))||new Set;c.add(s.annotationUID),e.set(i,c)}),e}function Tm(t){const{metadata:e}=t;if(!e)return{};const{FrameOfReferenceUID:r,referencedImageId:n,referencedImageURI:i,multiSliceReference:o,cameraFocalPoint:a,viewPlaneNormal:s,viewUp:c,sliceIndex:l,volumeId:f,bounds:u}=e;return{FrameOfReferenceUID:r,referencedImageId:n,referencedImageURI:i,multiSliceReference:o,cameraFocalPoint:a,viewPlaneNormal:s,viewUp:c,sliceIndex:l,volumeId:f,bounds:u}}function Nx(t,e){if(!t||!e||t.FrameOfReferenceUID!==e.FrameOfReferenceUID||t.referencedImageId!==e.referencedImageId||!t.viewPlaneNormal||!e.viewPlaneNormal||t.viewPlaneNormal.length!==e.viewPlaneNormal.length)return!1;for(let r=0;r({polyline:ss(o.data.contour.polyline,r),viewReference:Tm(o)})),i=e.map(o=>({polyline:ss(o.data.contour.polyline,r),viewReference:Tm(o)}));return _m(n,i)}function vg(t,e){const r=[];for(let n=0;n=3&&s.push({polyline:d,viewReference:c.viewReference})}}else s.push({polyline:c.polyline,viewReference:c.viewReference})}i=s}r.push(...i)}return r}function bye(t,e){if(e.length===0)return[...t];let r=[...t];for(let n=0;n({polyline:ss(o.data.contour.polyline,r),viewReference:Tm(o)})),i=e.map(o=>({polyline:ss(o.data.contour.polyline,r),viewReference:Tm(o)}));return vg(n,i)}function tW(t,e){if(!t.length||!e.length)return[];const r=[];for(const n of t)for(const i of e){if(!Nx(n.viewReference,i.viewReference))continue;if(zg(n.polyline,i.polyline)){r.push({...n});continue}const o=wv(n.polyline,i.polyline);if(o.hasIntersection&&!o.isContourHole){const a=Tb(BG(n.polyline,i.polyline));a&&a.length>0&&a.forEach(s=>{r.push({polyline:s,viewReference:n.viewReference})})}}return r}function nW(t,e){if(!t.length&&!e.length)return[];if(!t.length)return e;if(!e.length)return t;if(t.length===e.length){let o=!0;for(let a=0;a({polyline:ss(l,t),viewReference:f})),c=a.map(({polyline:l,viewReference:f})=>({polyline:ss(l,t),viewReference:f}));return{polyLinesInfoCanvas1:s,polyLinesInfoCanvas2:c}}function Mye(t,{segmentIndex:e,label:r,color:n}){t!=null&&t.segments&&(t.segments[e]={active:!1,locked:!1,label:r,segmentIndex:e,cachedStats:{},color:n})}function rW(t){t.forEach(e=>{const r=$n(e);nn(e),Lc(r)}),t.clear()}function kx(t,e,r,n){const i=ub(t.segmentationId);if(!i)return;const{polyLinesInfoCanvas1:o,polyLinesInfoCanvas2:a}=Iye(i,t,e)||{};if(!o||!a)return;let s;switch(n){case Ec.Union:s=_m(o,a);break;case Ec.Subtract:s=vg(o,a);break;case Ec.Intersect:s=tW(o,a);break;case Ec.XOR:s=nW(o,a);break;default:s=_m(o,a);break}const c=s.map(({polyline:v,viewReference:y})=>({polyline:ZG(v,i),viewReference:y})),l=r,f=an(l.segmentationId),u=l.segmentIndex,d=l.color,h=l.label,g=f.representationData.Contour,{annotationUIDsMap:p}=g;if(p){if(t.segmentationId===l.segmentationId&&t.segmentIndex===u){const v=p.get(u);v&&rW(v)}Tye(i,p,f.segmentationId,c,u),Mye(f,{segmentIndex:u,color:d,label:h})}}function Oye(t,e,r){kx(t,e,r,Ec.Union)}function Pye(t,e,r){kx(t,e,r,Ec.Subtract)}function Rye(t,e,r){kx(t,e,r,Ec.Intersect)}function Aye(t,e,r){kx(t,e,r,Ec.XOR)}function Lye(t,e){RG(t.segmentationId,t.segmentIndex,e.segmentationId,e.segmentIndex)}function Nye(t){const e=an(t.segmentationId);if(!e){console.log("No active segmentation detected");return}if(!e.representationData.Contour){console.log("No contour representation found");return}const r=e.representationData.Contour,{annotationUIDsMap:n}=r;if(!n){console.log("No annotation map found");return}if(!n.has(t.segmentIndex)){console.log("Segmentation index has no annotations");return}const i=n.get(t.segmentIndex);rW(i)}function xv(t){var e;return!!((e=t.data)!=null&&e.segmentation)}function iW(t,e,r){const n=[],i=zf(e);for(let o=0;oa.isContourHole),o=n.filter(a=>!a.isContourHole);if(i.length>0){const a=i[0];Gye(t,a.targetAnnotation,e),aW(t,[e,a.targetAnnotation]);return}if(o.length!==0){if(!Sx(sw)){console.warn(`${sw} is not registered in cornerstone. Cannot process multiple intersections.`);return}Vye(t,e,r,o)}}function Vye(t,e,r,n){const{element:i}=t,o=[e],a=[],s=[];n.forEach(({targetAnnotation:d})=>{const h=Bye(t,d);s.push(...h),o.push(d)});const c=r[0];if(n.some(({targetPolyline:d})=>ua(d,c))){let d=r;n.forEach(({targetPolyline:h})=>{d=Px(d,h)}),a.push(d)}else n.forEach(({targetPolyline:d})=>{const h=Mx(d,r);a.push(...h)});o.forEach(d=>{nn(d.annotationUID),Lc(d)}),s.forEach(d=>Gg(d.annotation));const f=n[0].targetAnnotation,u=[];a.forEach(d=>{if(!d||d.length<3){console.warn("Skipping creation of new annotation due to invalid polyline:",d);return}const h=Fye(t,f,d);rn(h,i),Ru(h),cn(h,t.element),u.push(h)}),Uye(t,s,u),aW(t,o)}function Fye(t,e,r){const n=t.canvasToWorld(r[0]),i=t.canvasToWorld(r[r.length-1]),o={metadata:{...e.metadata,toolName:sw,originalToolName:e.metadata.originalToolName||e.metadata.toolName},data:{cachedStats:{},handles:{points:[n,i],textBox:e.data.handles.textBox?{...e.data.handles.textBox}:void 0},contour:{polyline:[],closed:!0},spline:e.data.spline,segmentation:{...e.data.segmentation}},annotationUID:Pn(),highlighted:!0,invalidated:!0,isLocked:!1,isVisible:void 0,interpolationUID:e.interpolationUID,interpolationCompleted:e.interpolationCompleted};return Uc(o,{points:r,closed:!0,targetWindingDirection:ga.Clockwise},t),o}function Uye(t,e,r){e.forEach(n=>{const i=r.find(o=>{const a=_b(o.data.contour.polyline,t);return E0(a,n.polyline)});i&&fv(i,n.annotation)})}function Bye(t,e){return dv(e).map(r=>{const n=r,i=_b(n.data.contour.polyline,t);return{annotation:n,polyline:i}})}function Gye(t,e,r){fv(e,r),Lc(r);const{contour:n}=r.data,i=_b(n.polyline,t);Uc(r,{points:i,closed:n.closed,targetWindingDirection:e.data.contour.windingDirection===ga.Clockwise?ga.CounterClockwise:ga.Clockwise},t)}function _b(t,e){const r=t.length,n=new Array(r);for(let i=0;i{n.add(i.metadata.toolName)});for(const i of n.values())if(Sx(i)){const o=St(r,i);ke(o)}}const{isEqual:H7}=Dn;function Eb(t){const{metadata:e}=t;return _U().filter(r=>{if(r.FrameOfReferenceUID===e.FrameOfReferenceUID){const n=r.viewport,{viewPlaneNormal:i,viewUp:o}=n.getCamera();return H7(i,e.viewPlaneNormal)&&(!e.viewUp||H7(o,e.viewUp))}}).map(r=>r.viewport)}async function Wye(t,e,r,n=!0){const i=typeof t=="string"?$n(t):t,o=typeof e=="string"?$n(e):e;if(!i||!o)throw new Error("Both source and target annotations must be valid");r||(r=$ye(i));const a=ss(i.data.contour.polyline,r),s=ss(o.data.contour.polyline,r),c=wv(a,s);if(!c.hasIntersection){console.warn("No intersection found between the two annotations");return}if(c.isContourHole){if(!n){console.warn("Hole processing is disabled");return}Lx(r,o,i)}else xb(r,o,s,i,a)}function $ye(t){const e=Eb(t);if(!e.length)throw new Error("No viewport found for the annotation");return e[0]}const zye=Object.freeze(Object.defineProperty({__proto__:null,get LogicalOperation(){return Ec},add:Oye,addContourSegmentationAnnotation:Ru,areSameSegment:pG,checkIntersection:wv,cleanupPolylines:Tb,combinePolylines:xb,contourSegmentationOperation:Wye,convertContourPolylineToCanvasSpace:ss,convertContourPolylineToWorld:ZG,convertContourSegmentationAnnotation:cb,copy:Lye,copyAnnotation:PG,copyContourSegment:RG,createNewAnnotationFromPolyline:eW,createPolylineHole:Lx,deleteOperation:Nye,findAllIntersectingContours:iW,getContourHolesData:QG,intersect:Rye,intersectPolylinesSets:tW,isContourSegmentationAnnotation:xv,processMultipleIntersections:oW,removeContourSegmentationAnnotation:Lc,removeDuplicatePoints:Sb,subtract:Pye,subtractAnnotationPolylines:Dye,subtractMultiplePolylineSets:bye,subtractPolylineSets:vg,unifyAnnotationPolylines:Eye,unifyMultiplePolylineSets:_ye,unifyPolylineSets:_m,updateViewportsForAnnotations:Cb,xor:Aye,xorPolylinesSets:nW},Symbol.toStringTag,{value:"Module"}));function jye(t){if(!t)throw new Error(`No contours found for geometryId ${t.id}`);const e=t.id;if(t.type!==Of.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 Hye(t,e,r,n){r.size?t.render():Kye(t,e,n)}function Kye(t,e,r){const{segmentationId:n}=r,i=new Map;e.forEach(o=>{const a=Ue.getGeometry(o);if(!a){console.warn(`No geometry found for geometryId ${o}. Skipping render.`);return}const s=a.data.segmentIndex;jye(a);const c=ns.getStyle({viewportId:t.id,segmentationId:n,type:Pt.Contour,segmentIndex:s}),l=a.data,f=t.getCamera().viewPlaneNormal;l.contours.forEach(u=>{const{points:d,color:h,id:g}=u,p=ob(t,d[0],f),v={annotationUID:Pn(),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}},y=t.element;rn(v,y),Ru(v)}),c&&i.set(s,c)}),t.render()}function Xye(t,e,r=!1){const n=an(e),{annotationUIDsMap:i}=n.representationData.Contour;i.forEach(o=>{o.forEach(a=>{nn(a)})})}function sW(t){const e=Pve(t);if(e)return e;const r=an(t);if(!r)throw new Error(`No segmentation found for segmentationId ${t}`);let n;if(r.representationData.Labelmap)n=qye(r,t);else if(r.representationData.Contour)n=Zye(r);else if(r.representationData.Surface)n=Qye(r);else throw new Error(`Unsupported segmentation type: ${r.representationData}`);return Rve(t,n),n}function qye(t,e){const r=t.representationData[Pt.Labelmap],n=new Set;return r.imageIds?Jye(n,r.imageIds):Yye(n,e),Array.from(n).map(Number).sort((i,o)=>i-o)}function Yye(t,e){Ue.getVolume(e).voxelManager.forEach(({value:n})=>{n!==0&&t.add(n)})}function Jye(t,e){e.forEach(r=>{Ue.getImage(r).voxelManager.getScalarData().forEach(o=>{o!==0&&t.add(o)})})}function Zye(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=Ue.getGeometry(i);n.add(o.data.segmentIndex)}),Array.from(n).sort((i,o)=>i-o)}function Qye(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 W0=new Map,K7=new Map;function e5e(t,e,r=!1){const n=Vn(t);if(!n)return;const{viewport:i}=n;Xye(t,e),r&&i.render()}async function t5e(t,e){var l,f;const{segmentationId:r}=e,n=an(r);if(!n)return;let i=n.representationData[Pt.Contour];const o=Su();if(!i&&((l=Su())!=null&&l.canComputeRequestedRepresentation(r,Pt.Contour))&&!W0.get(t.id)?(W0.set(t.id,!0),i=await rb(r,Pt.Contour,()=>o.computeContourData(r,{viewport:t}),()=>{}),W0.set(t.id,!1)):!i&&!Su()&&console.debug(`No contour data found for segmentationId ${r} 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.`),!i||!((f=i.geometryIds)!=null&&f.length))return;let a=!1;const s=t.getCamera().viewPlaneNormal;i.annotationUIDsMap&&(a=!r5e(i.annotationUIDsMap,s)),i.geometryIds.length>0&&(a=!n5e(i.geometryIds,s));const c=K7.get(t.id)||new Set;if(a&&!W0.get(t.id)&&!c.has(r)&&t.viewportStatus===Ea.RENDERED){W0.set(t.id,!0);const u=sW(r),h=(await o.computeSurfaceData(r,{segmentIndices:u,viewport:t})).geometryIds,g=[];for(const m of h.values()){const x=Ue.getGeometry(m).data;g.push({points:x.points,polys:x.polys,segmentIndex:x.segmentIndex,id:x.segmentIndex})}const p=await o.clipAndCacheSurfacesForViewport(g,t),v=o.extractContourData(p),y=o.createAndAddContourSegmentationsFromClippedSurfaces(v,t,r);i.annotationUIDsMap=new Map([...i.annotationUIDsMap,...y]),c.add(r),K7.set(t.id,c),W0.set(t.id,!1)}Hye(t,i.geometryIds,i.annotationUIDsMap,e)}function n5e(t,e){var u,d,h;let r=null,n=null;for(const g of t){const p=Ue.getGeometry(g);if(!p)continue;const v=p.data;if(((h=(d=(u=v.contours)==null?void 0:u[0])==null?void 0:d.points)==null?void 0:h.length)>=3){r=p,n=v;break}}if(!r||!n)return!1;const o=n.contours[0].points,a=o[0],s=o[1],c=o[2];let l=mn(Ve(),Sn(Ve(),s,a),Sn(Ve(),c,a));l=en(Ve(),l);const f=pt(l,e);return Math.abs(f)>.9}function r5e(t,e){const r=Array.from(t.values()).flat().map(i=>Array.from(i)).flat(),n=R8(r,3);for(const i of n){const o=$n(i);if(o!=null&&o.metadata){if(!o.metadata.viewPlaneNormal)continue;const a=o.metadata.viewPlaneNormal,s=Math.abs(e[0]*a[0]+e[1]*a[1]+e[2]*a[2]);if(Math.abs(s-1)>.01)return!1}}return!0}const cW={render:t5e,removeRepresentation:e5e};function ed(t,e){return Nu(t,e)[0]}function Nu(t,e){return er.getCurrentLabelmapImageIdsForViewport(t,e)}function i5e(t,e){return er.getLabelmapImageIdsForImageId(t,e)}const X7=new Map,o5e=({cfun:t,ofun:e,actor:r})=>{r.getProperty().setRGBTransferFunction(1,t),r.getProperty().setScalarOpacity(1,e)};async function a5e({viewport:t,volumeInputs:e,segmentationId:r}){var E;const n=t.getDefaultActor(),{actor:i}=n,{uid:o,callback:a}=n,s=t.getVolumeId();if((E=X7.get(o))!=null&&E.added)return{uid:o,actor:i};const c=e,l=Ue.getVolume(c[0].volumeId);if(!l)throw new Error(`imageVolume with id: ${l.volumeId} does not exist`);const{volumeId:f}=c[0],u=await f8(f);if(!u)throw new Error(`segImageVolume with id: ${u.volumeId} does not exist`);const h=u.voxelManager.getCompleteScalarDataArray(),{imageData:g}=u,p=Ue.getVolume(s),y=p.voxelManager.getCompleteScalarDataArray(),m=2,w=new Float32Array(m*p.voxelManager.getScalarDataLength()),x=g.getDimensions();for(let b=0;bue);for(const ne of X)for(let ue=0;ue{ze.removeEventListener(U.SEGMENTATION_DATA_MODIFIED,_);const D=t.getActor(o),{element:I,id:P}=t;t.removeActors([o]);const M=await L5({volumeId:o,blendMode:Mf.MAXIMUM_INTENSITY_BLEND,callback:({volumeActor:L})=>{D.callback&&D.callback({volumeActor:L,volumeId:f})}},I,P);t.addActor({actor:M,uid:o}),t.render()}),{uid:o,actor:i}}const{uuidv4:lW}=Dn;async function s5e(t,e,r,n){const i=De(t),{renderingEngine:o,viewport:a}=i,{id:s}=a,c=!0,l=!1,f=!0;if(a instanceof Ir){const d=c5e(e,r);Ue.getVolume(d)||await l5e(e);let h=(n==null?void 0:n.blendMode)??Mf.MAXIMUM_INTENSITY_BLEND,g=h===Mf.LABELMAP_EDGE_PROJECTION_BLEND;if(g){const v=a.getVolumeId(),y=Ue.getVolume(v),w=Ue.getVolume(d).dimensions,x=y.dimensions;(w[0]!==x[0]||w[1]!==x[1]||w[2]!==x[2])&&(g=!1,h=Mf.MAXIMUM_INTENSITY_BLEND,console.debug("Dimensions mismatch - falling back to regular volume addition"))}const p=[{volumeId:d,visibility:c,representationUID:`${r}-${Pt.Labelmap}`,useIndependentComponents:g,blendMode:h}];if(!p[0].useIndependentComponents)await WF(o,p,[s],l,f);else return await a5e({viewport:a,volumeInputs:p,segmentationId:r})}else{const d=Nu(a.id,r).map(h=>({imageId:h,representationUID:`${r}-${Pt.Labelmap}-${h}`}));$F(o,d,[s])}Ro(r)}function c5e(t,e){let{volumeId:r}=t;if(!r){r=lW();const n=an(e);n.representationData.Labelmap={...n.representationData.Labelmap,volumeId:r},t.volumeId=r,us(e)}return r}async function l5e(t){const e=t;if(!(e.imageIds.length>0))throw new Error("cannot create labelmap, no imageIds found for the volume labelmap");return await d8(t.volumeId||lW(),e.imageIds)}function u5e(t,e){const r=De(t),{viewport:n}=r;n.removeActors([zve(n.id,e)])}function u0(t){return er.getActiveSegmentation(t)}function f5e(t,e){er.setActiveSegmentation(t,e)}function Bu(t){return u0(t)}function d5e(t,e){f5e(t,e)}const h5e=Object.freeze(Object.defineProperty({__proto__:null,getActiveSegmentation:Bu,setActiveSegmentation:d5e},Symbol.toStringTag,{value:"Module"}));function pa(t){const e=an(t);if(e){const r=Object.keys(e.segments).find(n=>e.segments[n].active);return r?Number(r):void 0}}const D3=255,p1=new Map;let I3=!1;function g5e(t,e,r=!1){const n=Vn(t);if(p1.forEach((o,a)=>{a.includes(e)&&p1.delete(a)}),!n)return;const{viewport:i}=n;u5e(i.element,e),r&&i.render()}async function p5e(t,e){var s;const{segmentationId:r,config:n}=e,i=an(r);if(!i){console.warn("No segmentation found for segmentationId: ",r);return}let o=i.representationData[Pt.Labelmap],a=g1(t.id,r);if(!o&&((s=Su())!=null&&s.canComputeRequestedRepresentation(r,Pt.Labelmap))&&!I3){I3=!0;const c=Su();if(o=await rb(r,Pt.Labelmap,()=>c.computeLabelmapData(r,{viewport:t}),()=>null,()=>{er.processLabelmapRepresentationAddition(t.id,r),setTimeout(()=>{Ro(r)},0)}),!o)throw new Error(`No labelmap data found for segmentationId ${r}.`);I3=!1}else!o&&!Su()&&console.debug(`No labelmap data found for segmentationId ${r} 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(o){if(t instanceof lr)a!=null&&a.length||await Y7(t,o,r,n),a=g1(t.id,r);else{const c=Nu(t.id,r);if(!(c!=null&&c.length))return;a||await Y7(t,o,r,n),a=g1(t.id,r)}if(a!=null&&a.length)for(const c of a)m5e(t.id,c,e)}}function m5e(t,e,r){var C;const{segmentationId:n}=r,{cfun:i,ofun:o}=r.config,{colorLUTIndex:a}=r,s=Bu(t),c=(s==null?void 0:s.segmentationId)===n,l=ns.getStyle({viewportId:t,type:Pt.Labelmap,segmentationId:n}),f=ns.getRenderInactiveSegmentations(t),u=gv(a),d=Math.min(256,u.length),{outlineWidth:h,renderOutline:g,outlineOpacity:p,activeSegmentOutlineWidthDelta:v}=q7(l,c),y=ib(t,{segmentationId:n,type:Pt.Labelmap});for(let S=0;So.getCurrentImageId()===r),!i||!i.length)?void 0:i[0].getImageData()}else if(e.startsWith("volumeId:")){const r=Bl(e),n=tv(r);return!n||!n.length?void 0:n[0].getImageData()}else if(e.startsWith("videoId:")){const r=Qr(e),n=U5(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")}undo(){this.doneEditMemo(),$0.undo()}redo(){$0.redo()}static createZoomPanMemo(e){const r={pan:e.getPan(),zoom:e.getZoom()},n={restoreMemo:()=>{const i=e.getPan(),o=e.getZoom();e.setZoom(r.zoom),e.setPan(r.pan),e.render(),r.pan=i,r.zoom=o}};return $0.push(n),n}doneEditMemo(){var e,r;(r=(e=this.memo)==null?void 0:e.commitMemo)!=null&&r.call(e)&&$0.push(this.memo),this.memo=null}static startGroupRecording(){$0.startGroupRecording()}static endGroupRecording(){$0.endGroupRecording()}};_1.defaults={configuration:{strategies:{},defaultStrategy:void 0,activeStrategy:void 0,strategyOptions:{}}};let mi=_1;mi.toolName="BaseTool";const{isEqual:M3}=Dn,{EPSILON:y5e}=Uu,w5e=1-y5e;function bb(t,e,r){var c;const{viewPlaneNormal:n}=e,i=t.filter(l=>{const{planeRestriction:f,referencedImageId:u}=l.metadata;let{viewPlaneNormal:d}=l.metadata;if(f){const{inPlaneVector1:g,inPlaneVector2:p}=f;return!(g&&!M3(0,pt(n,g))||p&&!M3(0,pt(n,p)))}if(!l.metadata.referencedImageId&&!d&&l.metadata.FrameOfReferenceUID){for(const g of l.data.handles.points){const p=Sn(Ve(),g,e.focalPoint),v=pt(p,n);if(!M3(v,0))return!1}return l.metadata.viewPlaneNormal=n,l.metadata.cameraFocalPoint=e.focalPoint,!0}if(!d&&u){const{imageOrientationPatient:g}=ut("imagePlaneModule",u),p=Et(g[0],g[1],g[2]),v=Et(g[3],g[4],g[5]);d=Ve(),mn(d,p,v),l.metadata.viewPlaneNormal=d}const h=Math.abs(pt(n,d))>w5e;return d&&h});if(!i.length)return[];const o=r/2,{focalPoint:a}=e,s=[];for(const l of i){const f=l.data,u=f.handles.points[0]||((c=f.contour)==null?void 0:c.polyline[0]);if(!l.isVisible)continue;const d=Ve();if(!u){s.push(l);continue}Sn(d,a,u);const h=pt(d,n);Math.abs(h)n.isVisible?n.data.isCanvasAnnotation?!0:t.isReferenceViewable(n.metadata,r):!1)}function fW(t){if(t){if(t.data&&t.highlighted)return uu.Highlighted;if(pv(t.annotationUID))return uu.Selected;if(ti(t.annotationUID))return uu.Locked;if(t.data&&t.autoGenerated)return uu.AutoGenerated}return uu.Default}function x5e(t,e,r){const n=pg("textBoxFontSize",t,e,r),i=pg("textBoxFontFamily",t,e,r);return`${n}px ${i}`}const C5e=Object.freeze(Object.defineProperty({__proto__:null,getFont:x5e,getState:fW,style:z8},Symbol.toStringTag,{value:"Module"}));class td extends mi{constructor(){super(...arguments),this.onImageSpacingCalibrated=e=>{const{element:r,imageId:n}=e.detail,i=Qr(n),o=Fc();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;Qr(f.metadata.referencedImageId)===i&&(f.invalidated=!0,f.data.cachedStats={})}),jg(r))})}}filterInteractableAnnotationsForElement(e,r){if(!(r!=null&&r.length))return[];const n=De(e),{viewport:i}=n;return Cv(i,r)}createAnnotation(e){const r=e.detail,{currentPoints:n,element:i}=r,{world:o}=n,a=De(i),{viewport:s}=a,c=s.getCamera(),{viewPlaneNormal:l,viewUp:f,position:u}=c,d=this.getReferencedImageId(s,o,l,f),h=s.getViewReference({points:[o]});return{highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),...h,referencedImageId:d,viewUp:f,cameraPosition:u},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,r,n,i){const o=this.getTargetId(e);let a=o.split(/^[a-zA-Z]+:/)[1];if(e instanceof Ir){const s=Bl(o),c=Ue.getVolume(s);a=Pu(c,r,n)}return a}getStyle(e,r,n){return pg(e,r,fW(n),this.mode)}}td.toolName="AnnotationDisplayTool";const{DefaultHistoryMemo:S5e}=M8,{PointsManager:T5e}=Dn;class cr extends td{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=$i(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);rn(n,e.element),cn(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(ti(u.annotationUID)||!ni(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},this.isSuvScaled=cr.isSuvScaled,(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=De(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(dr(n,h)this.getStyle(p,n,r),{annotationUID:o}=r,a=ni(o),s=ti(o),c=i("lineWidth"),l=i("lineDash"),f=i("angleArcLineDash"),u=i("color"),d=i("markerSize"),h=i("shadow"),g=this.getLinkedTextBoxStyle(n,r);return{visibility:a,locked:s,color:u,lineWidth:c,lineDash:l,lineOpacity:1,fillColor:u,fillOpacity:0,shadow:h,textbox:g,markerSize:d,angleArcLineDash:f}}_imagePointNearToolOrHandle(e,r,n,i){if(this.getHandleNearImagePoint(e,r,n,i)||this.isPointNearTool(e,r,n,i,"mouse"))return!0}static createAnnotationState(e,r){const{data:n,annotationUID:i}=e,o={...n,cachedStats:{}};delete o.contour,delete o.spline;const a={annotationUID:i,data:structuredClone(o),deleting:r},s=n.contour;return s&&(a.data.contour={...s,polyline:null,pointsManager:T5e.create3(s.polyline.length,s.polyline)}),a}static createAnnotationMemo(e,r,n){if(!r)return;const{newAnnotation:i,deleting:o=i?!1:void 0}=n||{},{annotationUID:a}=r,s=cr.createAnnotationState(r,o),c={restoreMemo:()=>{const l=cr.createAnnotationState(r,o),{viewport:f}=De(e)||{};if(f==null||f.setViewReference(r.metadata),s.deleting===!0){if(s.deleting=!1,Object.assign(r.data,s.data),r.data.contour){const d=r.data;d.contour.polyline=s.data.contour.pointsManager.points,delete s.data.contour.pointsManager,d.segmentation&&Ru(r)}s.data=l.data,rn(r,e),ha(r.annotationUID,!0),f==null||f.render();return}if(s.deleting===!1){s.deleting=!0,s.data=l.data,ha(r.annotationUID),nn(r.annotationUID),f==null||f.render();return}const u=$n(a);if(!u){console.warn("No current annotation");return}Object.assign(u.data,s.data),u.data.contour&&(u.data.contour.polyline=s.data.contour.pointsManager.points),s.data=l.data,u.invalidated=!0,cn(u,e,Qt.History)},id:a,operationType:"annotation"};return S5e.push(c),c}createMemo(e,r,n){this.memo||(this.memo=cr.createAnnotationMemo(e,r,n))}static hydrateBase(e,r,n,i={}){if(!r)return null;const{viewport:o}=r,a=o.getFrameOfReferenceUID(),s=o.getCamera(),c=i.viewplaneNormal??s.viewPlaneNormal,l=i.viewUp??s.viewUp,f=i.toolInstance||new e;let u,d=c,h=l;if(i.referencedImageId)u=i.referencedImageId,d=void 0,h=void 0;else if(o instanceof hr){const g=O8(n[0],o);g!==void 0&&(u=o.getImageIds()[g])}else if(o instanceof Ir)u=f.getReferencedImageId(o,n[0],c,l);else throw new Error("Unsupported viewport type");return{FrameOfReferenceUID:a,referencedImageId:u,viewPlaneNormal:d,viewUp:h,instance:f,viewport:o}}}cr.toolName="AnnotationTool";const{CalibrationTypes:hd}=ka,gd="px",R2="voxels",dW=[1,2,3,4],_5e=["3,3","4,7"],E5e=["4,3","4,7"],f_={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"},b5e=.001,Tp="²",Na=(t,e)=>{const{calibration:r,hasPixelSpacing:n}=t;let i=n?"mm":gd;const o=n?"mm³":R2;let a=i+Tp,s=1,c="";if(!r||!r.type&&!r.sequenceOfUltrasoundRegions)return{unit:i,areaUnit:a,scale:s,volumeUnit:o};if(r.type===hd.UNCALIBRATED)return{unit:gd,areaUnit:gd+Tp,scale:s,volumeUnit:R2};if(r.sequenceOfUltrasoundRegions){let f,u;if(Array.isArray(e)&&e.length===2)[f,u]=e;else if(typeof e=="function"){const y=e();f=y[0],u=y[1]}let d=r.sequenceOfUltrasoundRegions.filter(y=>f[0]>=y.regionLocationMinX0&&f[0]<=y.regionLocationMaxX1&&f[1]>=y.regionLocationMinY0&&f[1]<=y.regionLocationMaxY1&&u[0]>=y.regionLocationMinX0&&u[0]<=y.regionLocationMaxX1&&u[1]>=y.regionLocationMinY0&&u[1]<=y.regionLocationMaxY1);if(!(d!=null&&d.length))return{unit:i,areaUnit:a,scale:s,volumeUnit:o};if(d=d.filter(y=>dW.includes(y.regionDataType)&&_5e.includes(`${y.physicalUnitsXDirection},${y.physicalUnitsYDirection}`)),!d.length)return{unit:gd,areaUnit:gd+Tp,scale:s,volumeUnit:R2};const h=d[0],g=Math.abs(h.physicalDeltaX),p=Math.abs(h.physicalDeltaY);if(Vt(g,p,b5e))s=1/g,c="US Region",i=f_[h.physicalUnitsXDirection]||"unknown",a=i+Tp;else return{unit:gd,areaUnit:gd+Tp,scale:s,volumeUnit:R2}}else r.scale&&(s=r.scale);return[hd.ERMF,hd.USER,hd.ERROR,hd.PROJECTION,hd.CALIBRATED,hd.UNKNOWN].includes(r==null?void 0:r.type)&&(c=r.type),{unit:i+(c?` ${c}`:""),areaUnit:a+(c?` ${c}`:""),scale:s,volumeUnit:o+(c?` ${c}`:"")}},cw=(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=>dW.includes(p.regionDataType)&&E5e.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=[f_[c.physicalUnitsXDirection],f_[c.physicalUnitsYDirection]]}return{units:i,values:o,calibrationType:a}},Db=t=>{var e;return((e=t.calibration)==null?void 0:e.aspect)||1};function Vx(t,e,r,n){const i=Ve();mn(i,e,t);const o=Et(...r),a=Et(...n),s=Ve();pn(s,o,a);const c=_i(s);if(c<1e-4)return{worldWidth:0,worldHeight:0};const l=pt(s,i)/(c*_i(i)),u=Math.sqrt(1-l*l)*c,d=l*c;return{worldWidth:u,worldHeight:d}}function Hg(t,e,r,n){const i=Ve();mn(i,e,t);const o=Et(...r),a=Et(...n),s=Ve();pn(s,o,a);const c=_i(s);if(c<1e-4)return{worldWidth:0,worldHeight:0};const l=pt(s,i)/(c*_i(i)),u=Math.sqrt(1-l*l)*c,d=l*c;return{worldWidth:u,worldHeight:d}}function Ib(t,e,r,n,i=.25){const o=Mb(t,e,{targetVolumeId:r,stepSize:i});let a;for(const s of o){const c=t.getIntensityFromWorld(s),l=n(c,s);l&&(a=l)}return a}function Mb(t,e,{targetVolumeId:r,stepSize:n}){const i=t.getCamera(),{viewPlaneNormal:o}=i,{spacingInNormalDirection:a}=kg(t,i,r),s=a*n||1,c=t.getBounds(),l=[];let f=[...e];for(;J7(f,c);)l.push([...f]),f[0]+=o[0]*s,f[1]+=o[1]*s,f[2]+=o[2]*s;for(f=[...e];J7(f,c);)l.push([...f]),f[0]-=o[0]*s,f[1]-=o[1]*s,f[2]-=o[2]*s;return l}const J7=function(t,e){const[r,n,i,o,a,s]=e,c=10;return t[0]>r+c&&t[0]i+c&&t[1]a+c&&t[2]{const c=[Et(r,n,i),Et(o,n,i),Et(r,a,i),Et(o,a,i),Et(r,n,s),Et(o,n,s),Et(r,a,s),Et(o,a,s)],l=Et(e[0],e[1],e[2]),f=Et(t[0],t[1],t[2]),u=-pt(l,f);let d=null;for(const h of c){const g=pt(l,h)+u;if(d===null)d=Math.sign(g);else if(Math.sign(g)!==d)return!0}return!1},{EPSILON:D5e}=Uu,I5e=1-D5e;function Fx(t,e){const{viewPlaneNormal:r}=e,n=t.filter(i=>{let o=i.metadata.viewPlaneNormal;if(!o){const{referencedImageId:s}=i.metadata,{imageOrientationPatient:c}=ut("imagePlaneModule",s),l=Et(c[0],c[1],c[2]),f=Et(c[3],c[4],c[5]);o=Ve(),mn(o,l,f),i.metadata.viewPlaneNormal=o}const a=Math.abs(pt(r,o))>I5e;return o&&a});return n.length?n:[]}const M5e={filterAnnotationsWithinSlice:bb,getWorldWidthAndHeightFromCorners:Vx,getWorldWidthAndHeightFromTwoPoints:Hg,filterAnnotationsForDisplay:Cv,getPointInLineOfSightWithCriteria:Ib,isPlaneIntersectingAABB:hW,filterAnnotationsWithinSamePlane:Fx,getPointsInLineOfSight:Mb},O5e=Object.freeze(Object.defineProperty({__proto__:null,default:M5e,filterAnnotationsForDisplay:Cv,filterAnnotationsWithinSamePlane:Fx,filterAnnotationsWithinSlice:bb,getPointInLineOfSightWithCriteria:Ib,getPointsInLineOfSight:Mb,getWorldWidthAndHeightFromCorners:Vx,getWorldWidthAndHeightFromTwoPoints:Hg,isPlaneIntersectingAABB:hW},Symbol.toStringTag,{value:"Module"}));function ea(t,e,r){let n=!0,i=!0;if(typeof t!="function")throw new TypeError("Expected a function");return nb(r)&&(n="leading"in r?!!r.leading:n,i="trailing"in r?!!r.trailing:i),$g(t,e,{leading:n,trailing:i,maxWait:e})}function P5e(t){var e;return((e=t[0])==null?void 0:e.length)===3}function R5e(t,e){if(!e||e.length===0||e.length===t.length)return t;const r=e[e.length-1]-e[0]+1,n=d3(e.map(o=>t[o][0])),i=d3(e.map(o=>t[o][1]));if(P5e(t)){const o=d3(e.map(a=>t[a][2]));return W9(xp(n,r),xp(i,r),xp(o,r))}else return W9(xp(n,r),xp(i,r))}function A5e(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 lw(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=A5e(a,[s,c]),d=R5e(t,u);return[...l,...d,...f]}function Ux(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 L5e(t,e){return Ko(t,e)<.001}function N5e(t,e){return Ko(t,e)===0}function k5e(t,e){for(let r=0;rL5e(c,l)===!1,[o,a]=Z7([hh(r,t.length,1),r,t],[hh(n,e.length,1),n,e],i,1),[s]=Z7([hh(o,t.length,-1),o,t],[hh(a,e.length,-1),a,e],i,-1);return[o,s]}function Bx(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?V5e(e,r):[0,e.length-1];return!e[d]||!e[h]?e:lw(e,d,h,f)}}return o}const Kg=t=>{if(t.shiftKey)return t.ctrlKey?Qi.ShiftCtrl:t.altKey?Qi.ShiftAlt:t.metaKey?Qi.ShiftMeta:Qi.Shift;if(t.ctrlKey)return t.altKey?Qi.CtrlAlt:t.metaKey?Qi.CtrlMeta:Qi.Ctrl;if(t.altKey)return t.metaKey&&Qi.AltMeta||Qi.Alt;if(t.metaKey)return Qi.Meta};function Ob(t,e){const r=t[0],n=t[t.length-1],i=bt();Ds(i,n[0]-r[0],n[1]-r[1]),ml(i,i);const o=bt(),a=bt();Ds(o,-i[1],i[0]),Ds(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 F5e(t,e){const{viewport:r}=t,n=e.data.contour.polyline.map(r.worldToCanvas);return Ob(n,r)}const{addCanvasPointsToArray:Pb,pointsAreWithinCloseContourProximity:gW,getFirstLineSegmentIntersectionIndexes:pW,getSubPixelSpacingAndXYDirections:U5e}=Qf;function B5e(t,e,r){this.isDrawing=!0;const n=t.detail,{currentPoints:i,element:o}=n,a=i.canvas,s=De(o),{viewport:c}=s,l=Kg(t.detail.event)===this.configuration.contourHoleAdditionModifierKey,{spacing:f,xDir:u,yDir:d}=U5e(c,this.configuration.subPixelResolution)||{};!f||!u||!d||(this.drawData={canvasPoints:[a],polylineIndex:0,contourHoleProcessingEnabled:l,newAnnotation:!0},this.commonData={annotation:e,viewportIdsToRender:r,spacing:f,xDir:u,yDir:d,movingTextBox:!1},je.isInteractingWithTool=!0,o.addEventListener(U.MOUSE_UP,this.mouseUpDrawCallback),o.addEventListener(U.MOUSE_DRAG,this.mouseDragDrawCallback),o.addEventListener(U.MOUSE_CLICK,this.mouseUpDrawCallback),o.addEventListener(U.TOUCH_END,this.mouseUpDrawCallback),o.addEventListener(U.TOUCH_DRAG,this.mouseDragDrawCallback),o.addEventListener(U.TOUCH_TAP,this.mouseUpDrawCallback),At(o))}function G5e(t){je.isInteractingWithTool=!1,t.removeEventListener(U.MOUSE_UP,this.mouseUpDrawCallback),t.removeEventListener(U.MOUSE_DRAG,this.mouseDragDrawCallback),t.removeEventListener(U.MOUSE_CLICK,this.mouseUpDrawCallback),t.removeEventListener(U.TOUCH_END,this.mouseUpDrawCallback),t.removeEventListener(U.TOUCH_DRAG,this.mouseDragDrawCallback),t.removeEventListener(U.TOUCH_TAP,this.mouseUpDrawCallback),Yt(t)}function W5e(t){const e=t.detail,{currentPoints:r,element:n}=e,i=r.world,o=r.canvas,a=De(n),{viewport:s}=a,{annotation:c,viewportIdsToRender:l,xDir:f,yDir:u,spacing:d,movingTextBox:h}=this.commonData,{polylineIndex:g,canvasPoints:p,newAnnotation:v}=this.drawData;this.createMemo(n,c,{newAnnotation:v});const y=p[p.length-1],m=s.canvasToWorld(y),w=Ve();pn(w,i,m);const x=Math.abs(pt(w,f)),C=Math.abs(pt(w,u));if(!(x<=d[0]&&C<=d[1])){if(h){this.isDrawing=!1;const{deltaPoints:S}=e,T=S.world,{textBox:_}=c.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=Pb(n,p,o,this.commonData);this.drawData.polylineIndex=g+T}c.invalidated=!0}ke(l),c.invalidated&&cn(c,n,Qt.HandlesUpdated)}}function $5e(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;this.doneEditMemo(),this.drawData.newAnnotation=!1,e&&!gW(i,o,this.configuration.closeContourProximity)?this.completeDrawOpenContour(s,{contourHoleProcessingEnabled:n}):this.completeDrawClosedContour(s,{contourHoleProcessingEnabled:n})}function z5e(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=bt();Wn(u,c[1],c[0]),ml(u,u);const d=6,h=[c[0][0]-u[0]*d,c[0][1]-u[1]*d],g=f0(l,h,c[0],e);if(g){const p=[h];Q5e(n,p,c[0],this.commonData),c.unshift(...p),this.removePointsUpUntilFirstCrossing(e),this.editData.editIndex=c.length-1,this.editData.startCrossingIndex=g[0]}}}function twe(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=!!f0(e,i[0],i[1],t);if(r.pop(),o)break}}function iwe(){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;a1&&this.checkForFirstCrossing(t,!0),this.editData.snapIndex=this.findSnapIndex(),this.editData.snapIndex===-1){this.finishEditAndStartNewEdit(t);return}this.editData.fusedCanvasPoints=this.fuseEditPointsWithClosedContour(t),g!==void 0&&this.checkForSecondCrossing(t,!0)&&(this.removePointsAfterSecondCrossing(!0),this.finishEditAndStartNewEdit(t)),ke(c)}function fwe(t){const e=t.detail,{element:r}=e,n=De(r),{viewport:i,renderingEngine:o}=n,{annotation:a,viewportIdsToRender:s}=this.commonData,{fusedCanvasPoints:c,editCanvasPoints:l}=this.editData;Uc(a,{points:c,closed:!0,targetWindingDirection:ga.Clockwise},i),a.autoGenerated&&(a.autoGenerated=!1),cn(a,r);const f=l.pop();this.editData={prevCanvasPoints:c,editCanvasPoints:[f],startCrossingIndex:void 0,editIndex:0,snapIndex:void 0,annotation:a},ke(s)}function dwe(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];mW(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=dr(e[c],s[0]),u=dr(e[c],s[s.length-1]),d=dr(e[l],s[0]),h=dr(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];y.push([S[0],S[1]])}const m=Q7(g),w=Q7(y);return m>w?g:y}function hwe(t){const e=t.detail,{element:r}=e;this.completeClosedContourEdit(r)}function gwe(t){var s;const e=De(t),{viewport:r}=e,{annotation:n,viewportIdsToRender:i}=this.commonData;this.doneEditMemo();const{fusedCanvasPoints:o,prevCanvasPoints:a}=this.editData;if(o){const c=Ux(this.configuration,n)?Bx(this.configuration,o,a):o,l=((s=this.configuration)==null?void 0:s.decimate)||{};Uc(n,{points:c,closed:!0,targetWindingDirection:ga.Clockwise},r,{decimate:{enabled:!!l.enabled,epsilon:l.epsilon}}),n.autoGenerated&&(n.autoGenerated=!1),cn(n,t)}this.isEditingClosed=!1,this.editData=void 0,this.commonData=void 0,ke(i),this.deactivateClosedContourEdit(t)}function pwe(t){this.completeClosedContourEdit(t)}function mwe(t){t.activateClosedContourEdit=cwe.bind(t),t.deactivateClosedContourEdit=lwe.bind(t),t.mouseDragClosedContourEditCallback=uwe.bind(t),t.mouseUpClosedContourEditCallback=hwe.bind(t),t.finishEditAndStartNewEdit=fwe.bind(t),t.fuseEditPointsWithClosedContour=dwe.bind(t),t.cancelClosedContourEdit=pwe.bind(t),t.completeClosedContourEdit=gwe.bind(t)}const{addCanvasPointsToArray:vW,getSubPixelSpacingAndXYDirections:vwe}=Qf;function ywe(t,e,r){this.isEditingOpen=!0;const n=t.detail,{currentPoints:i,element:o}=n,a=i.canvas,s=De(o),{viewport:c}=s;this.doneEditMemo();const l=e.data.contour.polyline.map(c.worldToCanvas),{spacing:f,xDir:u,yDir:d}=vwe(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},je.isInteractingWithTool=!0,o.addEventListener(U.MOUSE_UP,this.mouseUpOpenContourEditCallback),o.addEventListener(U.MOUSE_DRAG,this.mouseDragOpenContourEditCallback),o.addEventListener(U.MOUSE_CLICK,this.mouseUpOpenContourEditCallback),o.addEventListener(U.TOUCH_END,this.mouseUpOpenContourEditCallback),o.addEventListener(U.TOUCH_DRAG,this.mouseDragOpenContourEditCallback),o.addEventListener(U.TOUCH_TAP,this.mouseUpOpenContourEditCallback),At(o)}function wwe(t){je.isInteractingWithTool=!1,t.removeEventListener(U.MOUSE_UP,this.mouseUpOpenContourEditCallback),t.removeEventListener(U.MOUSE_DRAG,this.mouseDragOpenContourEditCallback),t.removeEventListener(U.MOUSE_CLICK,this.mouseUpOpenContourEditCallback),t.removeEventListener(U.TOUCH_END,this.mouseUpOpenContourEditCallback),t.removeEventListener(U.TOUCH_DRAG,this.mouseDragOpenContourEditCallback),t.removeEventListener(U.TOUCH_TAP,this.mouseUpOpenContourEditCallback),Yt(t)}function xwe(t){const e=t.detail,{currentPoints:r,element:n}=e,i=r.world,o=r.canvas,a=De(n),{viewport:s}=a,{viewportIdsToRender:c,xDir:l,yDir:f,spacing:u}=this.commonData,{editIndex:d,editCanvasPoints:h,startCrossingIndex:g}=this.editData,p=h[h.length-1],v=s.canvasToWorld(p),y=Ve();this.createMemo(n,this.commonData.annotation),pn(y,i,v);const m=Math.abs(pt(y,l)),w=Math.abs(pt(y,f));if(m<=u[0]&&w<=u[1])return;g!==void 0&&this.checkAndRemoveCrossesOnEditLine(t);const x=vW(n,h,o,this.commonData),C=d+x;this.editData.editIndex=C,g===void 0&&h.length>1&&this.checkForFirstCrossing(t,!1),this.editData.snapIndex=this.findSnapIndex(),this.editData.fusedCanvasPoints=this.fuseEditPointsWithOpenContour(t),g!==void 0&&this.checkForSecondCrossing(t,!1)?(this.removePointsAfterSecondCrossing(!1),this.finishEditOpenOnSecondCrossing(t)):this.checkIfShouldOverwriteAnEnd(t)&&this.openContourEditOverwriteEnd(t),ke(c)}function Cwe(t){const e=t.detail,{element:r}=e,n=De(r),{viewport:i}=n,{annotation:o,viewportIdsToRender:a}=this.commonData,s=this.fuseEditPointsForOpenContourEndEdit();Uc(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,cn(o,r),this.isEditingOpen=!1,this.editData=void 0,this.commonData=void 0,this.doneEditMemo(),this.deactivateOpenContourEdit(r),this.activateOpenContourEndEdit(t,o,a,null)}function Swe(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=bt(),h=bt();Ds(d,l[0]-f[0],l[1]-f[1]),Ds(h,l[0]-u[0],l[1]-u[1]);const g=au(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 _we(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];vW(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=dr(e[c],s[0]),u=dr(e[c],s[s.length-1]),d=dr(e[l],s[0]),h=dr(e[l],s[s.length-1]),g=[];for(let y=0;y=0;y--){const m=s[y];g.push([m[0],m[1]])}for(let y=l;y$n(r).data.contour.polyline)}function Sv(t,e){const r=yW(t),n=[];return r.forEach(i=>{const o=i.length,a=new Array(o);for(let s=0;sn.worldToCanvas(l)),a=Sv(r,n),s=[o,...a];Tu(e,r.annotationUID,"1",s,i)}function Fwe(t,e,r){var c;const{viewport:n}=t,i=this._getRenderingOptions(t,r),o=r.data.contour.polyline.map(l=>n.worldToCanvas(l));Rs(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(),sr(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];sr(e,r.annotationUID,l,[u],{color:i.color})}}function Uwe(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);Rs(e,r.annotationUID,"first-to-last",[a,s],{color:l.color,width:l.width,closePath:!1,lineDash:"2,2"}),Rs(e,r.annotationUID,"midpoint-to-open-contour",[c[0],c[1]],{color:l.color,width:l.width,closePath:!1,lineDash:"2,2"})}function Bwe(t,e,r){const n=this._getRenderingOptions(t,r),{allowOpenContours:i}=this.configuration,{canvasPoints:o}=this.drawData;if(n.closePath=!1,Rs(e,r.annotationUID,"1",o,n),i){const a=o[0],s=o[o.length-1];Awe(a,s,this.configuration.closeContourProximity)?Rs(e,r.annotationUID,"2",[s,a],n):sr(e,r.annotationUID,"0",[a],{color:n.color,handleRadius:2})}}function Gwe(t,e,r){const{viewport:n}=t,{fusedCanvasPoints:i}=this.editData;if(i===void 0){this.renderClosedContour(t,e,r);return}const o=Sv(r,n),a=[i,...o],s=this._getRenderingOptions(t,r),c="preview-1";r.parentAnnotationUID&&s.fillOpacity&&(s.fillOpacity=0),Tu(e,r.annotationUID,c,a,s)}function Wwe(t,e,r){const{fusedCanvasPoints:n}=this.editData;if(n===void 0){this.renderOpenContour(t,e,r);return}const i=this._getRenderingOptions(t,r);Rs(e,r.annotationUID,"preview-1",n,i)}function $we(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=Sv(r,n),s="1",c=o[0],l=6,f=100,u=[];for(let g=0;g0}else if(t instanceof hr){const{preScale:r}=t.getImageData()||{};return!!(r!=null&&r.scaled)}else return!1}function d_(t,e){let r=0;for(let n=0;nthis.moveAnnotation(i,r))}updateContourPolyline(e,r,n,i){var a;const o=((a=this.configuration)==null?void 0:a.decimate)||{};Uc(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(y=>c(y)),{lineWidth:f,lineDash:u,color:d,fillColor:h,fillOpacity:g}=n,p=Sv(o,s),v=[l,...p];return Tu(i,a,"contourPolyline",v,{color:d,lineDash:u,lineWidth:Math.max(.1,f),fillColor:h,fillOpacity:g}),!0}}class Xwe{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=$n(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};nt(ze,U.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 wr={...Hme,...Wme,resetAnnotationManager:C2e},qwe=Object.freeze(Object.defineProperty({__proto__:null,AnnotationGroup:Xwe,FrameOfReferenceSpecificAnnotationManager:mG,config:C5e,locking:u2e,selection:g2e,state:wr,visibility:w2e},Symbol.toStringTag,{value:"Module"})),eM="PlanarFreehandContourSegmentationTool";function Rb(t,e=[]){const{viewport:r,sliceData:n,annotation:i}=t,o=new Map,{toolName:a,originalToolName:s}=i.metadata,c=s||a,l=(ln(c,r.element)||[]).filter(f=>!f.metadata.originalToolName||f.metadata.originalToolName===c);if(c!==eM){const f=ln(eM,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((y,m)=>y===g.value[m]):v===g.value}));d.length&&o.set(f,d)}return o}function Ywe(t,e){const r=Rb(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 wW(t,e,r){const n=$i({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 Jwe(t,e){const r=Rb(e,[{key:"interpolationUID",value:e.interpolationUID}]),n=Zwe(r);if(!n){console.warn("No annotations found to interpolate",r);return}const i=Qwe(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:tM}=Dn;function rxe(t,e=12){const r=tM.create3(e);r.sources=[];const{sources:n}=r,{length:i,sources:o=[]}=t,a=5;if(in.push(tM.create3(e)));const c=ixe(t,a),l=oxe(c,e),f=[];if((l==null?void 0:l.length)>2){let u=-1;const d=s/3;l.forEach(p=>{const[v,,y]=p,m=Math.ceil((v+y)/2);y-u2*d?(z0(f,u,v,s,i),u=z0(f,v,m,s,i)):u=z0(f,u,m,s,i),y-u>d&&(u=z0(f,u,y,s,i)))});const h=f[0];h_(h+i-u,i)>2*d&&z0(f,u,h-d,s,i)}else{const u=Math.floor(i/e);z0(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 ixe(t,e=6){const{length:r}=t,n=Ve(),i=Ve(),o=new Float32Array(r);for(let a=0;a{try{e&&(r.isInterpolationUpdate=!0,r.autoGenerated=!1),cxe(t)}finally{e&&(r.autoGenerated=!0)}})}function cxe(t){const{annotation:e}=t;sxe(e);const{interpolationData:r,interpolationList:n}=Jwe(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 uxe(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=hxe(t,e,l,o),h=l>.5?u:f,g=rxe(d);i.has(r)?dxe(d,g,r,h,a):fxe(d,g,r,h,a)}function fxe(t,e,r,n,i){var f;const o=t.points,{viewport:a}=i,s=wW(o,e,n),c=a.getViewReference({sliceIndex:r});if(!c)throw new Error(`Can't find slice ${r}`);Object.assign(s.metadata,c),wr.addAnnotation(s,a.element),(f=n.onInterpolationComplete)==null||f.call(n,s,n);const{parentAnnotationUID:l}=n;if(l){const u=wr.getAnnotation(l),d=xW(u,r,i);Lx(a,d,s)}}function xW(t,e,r){const{viewport:n}=r,i=wr.getAnnotations(t.metadata.toolName,n.element);for(let o=0;o!f.autoGenerated)||(s=o||s===n||c.forEach(l=>{l.autoGenerated&&(wr.removeAnnotation(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};nt(t.viewport.element,U.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(!Ts.toolNames.includes(n)&&!Ts.toolNames.includes(i))return;const o=Py(r);if(!o){console.warn("Unable to find viewport for",r);return}const a=O3(o),s={viewport:o,sliceData:a,annotation:r,interpolationUID:r.interpolationUID},c=!!r.interpolationUID;if(r.autoGenerated=!1,c){uM(s),Oy(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=Ywe(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)||vxe(),s.interpolationUID=r.interpolationUID,Oy(s)},Ts.handleAnnotationUpdate=e=>{const r=e.detail.annotation,{changeType:n=Qt.HandlesUpdated}=e.detail;if(!(r!=null&&r.metadata))return;const{toolName:i,originalToolName:o}=r.metadata;if(!Ts.toolNames.includes(i)&&!Ts.toolNames.includes(o)||!yxe.includes(n))return;const a=Py(r);if(!a){console.warn("Unable to find matching viewport for annotation interpolation",r);return}r.autoGenerated&&(Ru(r),r.autoGenerated=!1);const s=O3(a),c={viewport:a,sliceData:s,annotation:r,interpolationUID:r.interpolationUID,isInterpolationUpdate:n===Qt.InterpolationUpdated};Oy(c)},Ts.handleAnnotationDelete=e=>{const r=e.detail.annotation;if(!(r!=null&&r.metadata))return;const{toolName:n}=r.metadata;if(!Ts.toolNames.includes(n)||r.autoGenerated)return;const i=Py(r);if(!i){console.warn("No viewport, can't delete interpolated results",r);return}const o=O3(i),a={viewport:i,sliceData:o,annotation:r,interpolationUID:r.interpolationUID};r.autoGenerated=!1,uM(a)};let bl=Ts;function O3(t){return{numberOfSlices:t.getNumberOfSlices(),imageIndex:t.getCurrentImageIdIndex()}}function CW(t){t.forEach(e=>{const r=kr(e);if(!r){console.warn(`ToolGroup not available for ${e}`);return}r.getViewportsInfo().forEach(i=>{const{renderingEngineId:o,viewportId:a}=i,s=ir(o);if(!s){console.warn(`RenderingEngine not available for ${o}`);return}const c=s.getViewport(a);jg(c.element)})})}function wxe(t,e){const r=an(t);if(!r)throw new Error(`No segmentation state found for ${t}`);const{segments:n}=r;return n[e].locked}function xxe(t,e,r=!0){const n=an(t);if(!n)throw new Error(`No segmentation state found for ${t}`);const{segments:i}=n;i[e].locked=r,us(t)}function b0(t){const e=an(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 Cxe=Object.freeze(Object.defineProperty({__proto__:null,getLockedSegmentIndices:b0,isSegmentIndexLocked:wxe,setSegmentIndexLocked:xxe},Symbol.toStringTag,{value:"Module"}));function SW(){return er.getNextColorLUTIndex()}const uw=[[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 m1(t,e){const r=er,n=e??SW();let i=[...t];if(Vt(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=uw.slice(i.length);i=[...i,...o]}return r.addColorLUT(i,n),n}function Sxe(t,e){if(!t)throw new Error("addColorLUT: colorLUT is required");return m1(t,e)}function Txe(t,e,r){if(!gv(r))throw new Error(`setColorLUT: could not find colorLUT with index ${r}`);const n=Aa(t,{segmentationId:e});if(!n)throw new Error(`viewport specific state for viewport ${t} does not exist`);n.forEach(i=>{i.colorLUTIndex=r}),yl(t,e)}function Ll(t,e,r){const n=Aa(t,{segmentationId:e});if(!n||n.length===0)return null;const i=n[0],{colorLUTIndex:o}=i,a=gv(o);let s=a[r];if(!s){if(typeof r!="number")return console.warn(`Can't create colour for LUT index ${r}`),null;s=a[r]=[0,0,0,0]}return s}function TW(t,e,r,n){const i=Ll(t,e,r);for(let o=0;oMr(c).id);CW(s)}return i}_getContourSegmentationStyle(e){const r=e.annotation,{segmentationId:n,segmentIndex:i}=r.data.segmentation,{viewportId:o}=e.styleSpecifier,a=Aa(o,{segmentationId:n});if(!(a!=null&&a.length))return{};a.length>1?a.find(v=>v.segmentationId===n&&v.type===Pt.Contour):a[0];const{autoGenerated:s}=r,l=b0(n).includes(i),{color:f,fillColor:u,lineWidth:d,fillOpacity:h,lineDash:g,visibility:p}=EW({segmentationId:n,segmentIndex:i,viewportId:o,autoGenerated:s});return{color:f,fillColor:u,lineWidth:d,fillOpacity:h,lineDash:g,textbox:{color:f},visibility:p,locked:l}}};CD.PreviewSegmentIndex=255;let Em=CD;function bW(t,e){const r=ut("generalSeriesModule",t);return Wu(r.modality,t,e)}function Wu(t,e,r){return t==="CT"?"HU":t==="PT"?Exe(e,r):""}function Exe(t,e){if(!e.isPreScaled)return"raw";if(e.isSuvScaled)return"SUV";const r=ut("generalSeriesModule",t);if((r==null?void 0:r.modality)==="PT"){const n=ut("petSeriesModule",t);return(n==null?void 0:n.units)||"unitless"}return"unknown"}const{pointCanProjectOnLine:fM}=Qf,{EPSILON:bxe}=Uu,Dxe=1-bxe,SD=class SD extends Em{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{storePointData:!1,shadow:!0,preventHandleOutsideImage:!1,contourHoleAdditionModifierKey:Qi.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:Ixe,statsCalculator:Al}}){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=St(o,this.getToolName());return this.activateDraw(n,a,s),n.preventDefault(),ke(s),a},this.handleSelectedCallback=(n,i,o)=>{const a=n.detail,{element:s}=a,c=St(s,this.getToolName());this.activateOpenContourEndEdit(n,i,c,o)},this.toolSelectedCallback=(n,i)=>{const o=n.detail,{element:a}=o,s=St(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=De(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 h=0;hi.worldToCanvas(I)),w={isPreScaled:Gu(i,g),isSuvScaled:this.isSuvScaled(i,g,n.metadata.referencedImageId)},x=Wu(y.Modality,n.metadata.referencedImageId,w),C=Na(p,()=>{const I=s.contour.polyline,P=I.length,M=new Array(P);for(let ue=0;ue{const{data:s}=n,c=this.getTargetId(i),l={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:o.viewport.id,annotationUID:n.annotationUID},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(x=>i.worldToCanvas(x));if(!s.handles.textBox.hasMoved){const x=Va(d);s.handles.textBox.worldPosition=i.canvasToWorld(x)}const h=i.worldToCanvas(s.handles.textBox.worldPosition),p=Lo(a,n.annotationUID??"","1",u,h,d,{},f),{x:v,y,width:m,height:w}=p;s.handles.textBox.worldBoundingBox={topLeft:i.canvasToWorld([v,y]),topRight:i.canvasToWorld([v+m,y]),bottomLeft:i.canvasToWorld([v,y+w]),bottomRight:i.canvasToWorld([v+m,y+w])}},Z5e(this),awe(this),mwe(this),Mwe(this),Rwe(this),zwe(this),this._throttledCalculateCachedStats=ea(this._calculateCachedStats,100,{trailing:!0})}filterInteractableAnnotationsForElement(e,r){if(!r||!r.length)return;const n=De(e),{viewport:i}=n;let o;if(i instanceof lr){const a=i.getCamera(),{spacingInNormalDirection:s}=kg(i,a);o=this.filterAnnotationsWithinSlice(r,a,s)}else o=Cv(i,r);return o}filterAnnotationsWithinSlice(e,r,n){const{viewPlaneNormal:i}=r,o=e.filter(l=>{let f=l.metadata.viewPlaneNormal;if(!l.metadata.referencedImageId&&!f&&l.metadata.FrameOfReferenceUID){for(const d of l.data.contour.polyline){const h=Sn(Ve(),d,r.focalPoint),g=pt(h,r.viewPlaneNormal);if(!Vt(g,0))return!1}return l.metadata.viewPlaneNormal=r.viewPlaneNormal,l.metadata.cameraFocalPoint=r.focalPoint,!0}if(!f){const{referencedImageId:d}=l.metadata,{imageOrientationPatient:h}=ut("imagePlaneModule",d),g=Et(h[0],h[1],h[2]),p=Et(h[3],h[4],h[5]);f=Ve(),mn(f,g,p),l.metadata.viewPlaneNormal=f}const u=Math.abs(pt(i,f))>Dxe;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=Ve();Sn(d,s,u);const h=pt(d,i);Math.abs(h){a.data.handles.points.length=0};return $i(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,f;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:u}=e;(f=u.cachedStats[r])!=null&&f.unit?e.invalidated&&this._throttledCalculateCachedStats(e,n,i,o):(u.cachedStats[r]={Modality:null,area:null,max:null,mean:null,stdDev:null,areaUnit:null,unit:null},this._calculateCachedStats(e,n,i,o))}}updateClosedCachedStats({viewport:e,points:r,imageData:n,metadata:i,cachedStats:o,targetId:a,modalityUnit:s,canvasCoordinates:c,calibratedScale:l,deltaInX:f,deltaInY:u}){var X,ne,ue,me;const{scale:d,areaUnit:h,unit:g}=l,{voxelManager:p}=e.getImageData(),v=Zr(n,r[0]);v[0]=Math.floor(v[0]),v[1]=Math.floor(v[1]),v[2]=Math.floor(v[2]);let y=v[0],m=v[0],w=v[1],x=v[1],C=v[2],S=v[2];for(let ge=1;ge{let Ie=!0;const Pe=e.worldToCanvas(ge);return Pe[1]!=B&&(V=0,B=Pe[1],j=$G(c,Pe,[L[0],Pe[1]]),j.sort(function(Ee){return function(H,O){return H[Ee]===O[Ee]?0:H[Ee]j[0][0]&&(j.shift(),V++),V%2===0&&(Ie=!1),Ie},boundsIJK:P,returnPoints:this.configuration.storePointData}));const G=this.configuration.statsCalculator.getStatistics();o[a]={Modality:i.Modality,area:_,perimeter:E,mean:(X=G.mean)==null?void 0:X.value,max:(ne=G.max)==null?void 0:ne.value,min:(ue=G.min)==null?void 0:ue.value,stdDev:(me=G.stdDev)==null?void 0:me.value,statsArray:G.array,pointsInShape:F,areaUnit:h,modalityUnit:s,unit:g}}updateOpenCachedStats({targetId:e,metadata:r,canvasCoordinates:n,cachedStats:i,modalityUnit:o,calibratedScale:a,deltaInX:s,deltaInY:c}){const{scale:l,unit:f}=a;let u=d_(n,closed)/l;u*=Math.sqrt(Math.pow(s,2)+Math.pow(c,2)),i[e]={Modality:r.Modality,length:u,modalityUnit:o,unit:f}}};SD.toolName="PlanarFreehandROI";let jf=SD;function Ixe(t,e){const r=t.cachedStats[e],{area:n,mean:i,stdDev:o,length:a,perimeter:s,max:c,min:l,isEmptyArea:f,unit:u,areaUnit:d,modalityUnit:h}=r||{},g=[];if($r(n)){const p=f?"Area: Oblique not supported":`Area: ${un(n)} ${d}`;g.push(p)}return $r(i)&&g.push(`Mean: ${un(i)} ${h}`),$r(c)&&g.push(`Max: ${un(c)} ${h}`),$r(l)&&g.push(`Min: ${un(l)} ${h}`),$r(o)&&g.push(`Std Dev: ${un(o)} ${h}`),$r(s)&&g.push(`Perimeter: ${un(s)} ${u}`),$r(a)&&g.push(`${un(a)} ${u}`),g}const TD=class TD extends jf{constructor(e){const r=$i({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;Ro(o)}return i}};TD.toolName="PlanarFreehandContourSegmentationTool";let Nl=TD;const Mxe={[Pt.Labelmap]:uW,[Pt.Contour]:cW,[Pt.Surface]:gG},L2=Nl.toolName;class Oxe{constructor(){this._needsRender=new Set,this._pendingRenderQueue=[],this._animationFrameSet=!1,this._animationFrameHandle=null,this._getAllViewports=()=>Yo().flatMap(r=>r.getViewports()),this._renderFlaggedSegmentations=()=>{if(this._throwIfDestroyed(),Array.from(this._needsRender).forEach(r=>{this._triggerRender(r)}),this._needsRender.clear(),this._animationFrameSet=!1,this._animationFrameHandle=null,this._pendingRenderQueue.length>0){const r=this._pendingRenderQueue.shift();r&&r.length>0&&this._setViewportsToBeRenderedNextFrame(r)}}}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=Aa(o,{segmentationId:e});(a==null?void 0:a.length)>0&&n.push(o)}else{const a=Aa(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){if(this._animationFrameSet){this._pendingRenderQueue.push(e);return}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=Aa(e);if(!(r!=null&&r.length))return;const{viewport:n}=Vn(e)||{};if(!n)return;const i=[],o=r.map(a=>{a.type===Pt.Contour&&this._addPlanarFreeHandToolIfAbsent(n);const s=Mxe[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(qe.IMAGE_RENDERED,c),s.forEach(h=>{const g={viewportId:d,segmentationId:h.segmentationId,type:h.type};nt(ze,U.SEGMENTATION_RENDERED,{...g})})}n.element.addEventListener(qe.IMAGE_RENDERED,c),n.render()})}_addPlanarFreeHandToolIfAbsent(e){L2 in je.tools||Ui(Nl);const r=Mr(e.id);r.hasTool(L2)||(r.addTool(L2),r.setToolPassive(L2))}}function Xg(t){DW.renderSegmentationsForViewport(t)}function Gx(t){DW.renderSegmentation(t)}const DW=new Oxe;function Pxe({modifiedSlicesToUse:t,representationData:e,type:r}){const n=Ue.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 Rxe({viewportIds:t,segmentationId:e}){t.forEach(r=>{let n=Aa(r,{segmentationId:e});n=n.filter(i=>i.type===Pt.Labelmap),n.forEach(i=>{if(i.segmentationId!==e)return;const o=Vn(r);if(!o)return;const{viewport:a}=o;if(a instanceof lr)return;const s=g1(r,e);s!=null&&s.length&&s.forEach((c,l)=>{const f=c.actor.getMapper().getInputData(),u=Nu(r,e),d=Ue.getImage(u[l]);f.modified(),fx(f,d)})})})}const Axe=function(t){const{segmentationId:e,modifiedSlicesToUse:r}=t.detail,{representationData:n}=an(e),i=_0(e),o=i.some(c=>{const{viewport:l}=Vn(c);return l instanceof lr}),a=i.some(c=>{const{viewport:l}=Vn(c);return l instanceof hr}),s=o&&a;i.forEach(c=>{const{viewport:l}=Vn(c);l instanceof lr&&Pxe({modifiedSlicesToUse:s?[]:r,representationData:n,type:Pt.Labelmap}),l instanceof hr&&Rxe({viewportIds:i,segmentationId:e})})},IW=function(t){const{segmentationId:e}=t.detail,{representationData:r}=an(e);r.Labelmap&&Axe(t),Gx(e)},MW=function(t){const{segmentationId:e}=t.detail;Gx(e)};function OW(t,e){return er.updateLabelmapSegmentationImageReferences(t,e)}const Lxe=function(t){if(!t)return;const e=De(t);if(!e)return;const{viewport:r}=e;r instanceof Ir||(t.addEventListener(qe.PRE_STACK_NEW_IMAGE,bm),t.addEventListener(qe.IMAGE_RENDERED,bm))},Nxe=function(t){t.removeEventListener(qe.PRE_STACK_NEW_IMAGE,bm),t.removeEventListener(qe.IMAGE_RENDERED,bm)};function bm(t){const e=t.detail,{viewportId:r,renderingEngineId:n}=e,{viewport:i}=Qn(r,n),o=Aa(r);if(!(o!=null&&o.length))return;const a=o.filter(l=>l.type===Pt.Labelmap),s=i.getActors();a.forEach(l=>{const{segmentationId:f}=l;OW(r,f)});const c=a.flatMap(l=>g1(r,l.segmentationId)).filter(l=>l!==void 0);c.length&&(c.forEach(l=>{a.find(u=>{const d=Nu(r,u.segmentationId);return d==null?void 0:d.includes(l.referencedId)})||i.removeActors([l.uid])}),a.forEach(l=>{const{segmentationId:f}=l,u=i.getCurrentImageId(),d=Nu(r,f);if(!d)return;let h=!1;const g=p=>{const v=Ue.getImage(p);if(!v){console.warn("No derived image found in the cache for segmentation representation",l);return}const y=s.find(m=>m.referencedId===p);if(y){const m=y.actor.getMapper().getInputData();m.setDerivedImage?m.setDerivedImage(v):fx(m,v)}else{const{dimensions:m,spacing:w,direction:x}=i.getImageDataMetadata(v),C=Ue.getImage(u)||{imageId:u},{origin:S}=i.getImageDataMetadata(C),T=S,_=v.voxelManager.getConstructor(),E=v.voxelManager.getScalarData(),b=Nt.newInstance({name:"Pixels",numberOfComponents:1,values:new _(E)}),D=Qm.newInstance();D.setDimensions(m[0],m[1],1),D.setSpacing(w),D.setDirection(x),D.setOrigin(T),D.getPointData().setScalars(b),D.modified(),i.addImages([{imageId:p,representationUID:`${f}-${Pt.Labelmap}-${v.imageId}`,callback:({imageActor:I})=>{I.getMapper().setInputData(D)}}]),h=!0;return}};d.forEach(g),h&&Xg(r),i.render(),t.type===qe.IMAGE_RENDERED&&i.element.removeEventListener(qe.IMAGE_RENDERED,bm)}))}const PW={enable:Lxe,disable:Nxe};async function kxe(t){const e=t.detail.annotation;if(!xv(e))return;const r=Fxe(e),n=Uxe(r,e);if(!n.length){nt(ze,U.ANNOTATION_CUT_MERGE_PROCESS_COMPLETED,{element:r.element,sourceAnnotation:e});return}const i=ss(e.data.contour.polyline,r),o=iW(r,i,n);if(!o.length){nt(ze,U.ANNOTATION_CUT_MERGE_PROCESS_COMPLETED,{element:r.element,sourceAnnotation:e});return}if(o.length>1){oW(r,e,i,o);return}const{targetAnnotation:a,targetPolyline:s,isContourHole:c}=o[0];if(c){const{contourHoleProcessingEnabled:l=!1}=t.detail;if(!l)return;Lx(r,a,e)}else xb(r,a,s,e,i)}function Vxe(t,e=!1){const r="PlanarFreehandContourSegmentationTool",n=Mr(t.id,t.renderingEngineId);let i;return n?n.hasTool(r)?n.getToolOptions(r)||(i=`Tool ${r} must be in active/passive state in ${n.id} toolGroup`):i=`Tool ${r} not added to ${n.id} toolGroup`:i=`ToolGroup not found for viewport ${t.id}`,i&&!e&&console.warn(i),!i}function Fxe(t){const e=Eb(t);return e.find(n=>Vxe(n,!0))??e[0]}function Uxe(t,e){const{annotationUID:r}=e;return uv().filter(i=>i.annotationUID&&i.annotationUID!==r&&xv(i)&&pG(i,e)&&t.isReferenceViewable(i.metadata))}function Bxe(t){const e=t.detail.annotation;Lc(e)}function RW(t){const e=t.detail.annotation;xv(e)&&kxe(t)}function fw(t){if(!t.detail.removed.length)return;Yo().forEach(n=>{const o=n.getViewports().map(a=>a.id);ke(o)})}function AW(t){const{viewportId:e}=t.detail;ke([e])}function Gxe(t){const e=t.detail.annotation;xv(e)&&Bxe(t)}const LW=function(t){jg(t.detail.element)},Wxe=function(t){t.addEventListener(qe.IMAGE_RENDERED,LW)},$xe=function(t){t.removeEventListener(qe.IMAGE_RENDERED,LW)},NW={enable:Wxe,disable:$xe},{Active:zxe}=Fn;function qg(t,e,r){if(je.isInteractingWithTool)return!1;const{renderingEngineId:n,viewportId:i}=r.detail,o=Mr(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 Tv(t,e){const r=[];for(let n=0;n0&&r.push({tool:i,annotations:o}))}return r}function Ab(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:jxe}=Fn;function Wx(t){const{renderingEngineId:e,viewportId:r,event:n}=t.detail,i=Kg(n)||Wg.getModifierKey(),o=Mr(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===jxe&&d)return o.getToolInstance(f)}}function yg(t,e,r){const{renderingEngineId:n,viewportId:i}=t.detail,o=Mr(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 Hxe(t,e){var u;const r=new Map,{renderingEngineId:n,viewportId:i}=t.detail,o=Mr(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=Kg(c)||Wg.getModifierKey();for(let d=0;d{var w;return((w=m.bindings)==null?void 0:w.length)&&m.bindings.some(x=>x.mouseButton===l&&x.modifierKey===f)});y&&r.set(g,y)}return r}const{Active:Kxe,Passive:Xxe}=Fn;function qxe(t){if(je.isInteractingWithTool)return!1;const e=t.detail,{element:r}=e,n=De(r),{canvas:i}=e.currentPoints;if(!n)return!1;const o=Hxe(t,[Kxe,Xxe]),a=Array.from(o.keys()),s=Tv(r,a),c=Ab(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:Yxe,Passive:Jxe}=Fn;function UW(t){if(je.isInteractingWithTool)return;const e=Wx(t);if(e&&typeof e.preMouseDownCallback=="function"&&e.preMouseDownCallback(t))return;const r=t.detail.event.buttons===1,n=yg(t,[Yxe],t.detail.event.buttons),i=r?yg(t,[Jxe]):void 0,o=[...n||[],...i||[]];if(qxe(t))return;const s=t.detail,{element:c}=s,l=Tv(c,o),f=s.currentPoints.canvas,u=FW(c,l,f,"mouse"),d=!!t.detail.event.shiftKey;if(u.length>0){const{tool:g,annotation:p,handle:v}=dM(u);hM(p.annotationUID,d),g.handleSelectedCallback(t,p,v,"Mouse");return}const h=Ab(c,l,f,"mouse");if(h.length>0){const{tool:g,annotation:p}=dM(h);hM(p.annotationUID,d),g.toolSelectedCallback(t,p,"Mouse",f);return}e&&typeof e.postMouseDownCallback=="function"&&e.postMouseDownCallback(t)}function dM(t){if(t.length>1){const e=t.find(r=>{const n=!ti(r.annotation.annotationUID),i=ni(r.annotation.annotationUID);return n&&i});if(e)return e}return t[0]}function hM(t,e=!1){e?pv(t)?ha(t,!1):ha(t,!0,!0):ha(t,!0,!1)}function BW(t){if(je.isInteractingWithTool)return;const e=Wx(t);if(e&&!je.isMultiPartToolActive&&e.addNewAnnotation){const r=e.addNewAnnotation(t,"mouse");ha(r.annotationUID)}}function GW(t){if(je.isInteractingWithTool)return;const e=Wx(t);!e||typeof e.mouseDragCallback!="function"||e.mouseDragCallback(t)}const{Active:Zxe,Passive:Qxe}=Fn;function WW(t){if(je.isInteractingWithTool||je.isMultiPartToolActive)return;const e=yg(t,[Zxe,Qxe]),r=t.detail,{element:n}=r,i=Tv(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&&jg(n)}const $W=qg.bind(null,"Mouse","mouseUpCallback");function zW(t){if(je.isInteractingWithTool)return;t.detail.buttons=Rl.Wheel|(t.detail.event.buttons||0);const e=Wx(t);if(e)return e.mouseWheelCallback(t)}const eCe=function(t){t.addEventListener(U.MOUSE_CLICK,kW),t.addEventListener(U.MOUSE_DOWN,UW),t.addEventListener(U.MOUSE_DOWN_ACTIVATE,BW),t.addEventListener(U.MOUSE_DOUBLE_CLICK,VW),t.addEventListener(U.MOUSE_DRAG,GW),t.addEventListener(U.MOUSE_MOVE,WW),t.addEventListener(U.MOUSE_UP,$W),t.addEventListener(U.MOUSE_WHEEL,zW)},tCe=function(t){t.removeEventListener(U.MOUSE_CLICK,kW),t.removeEventListener(U.MOUSE_DOWN,UW),t.removeEventListener(U.MOUSE_DOWN_ACTIVATE,BW),t.removeEventListener(U.MOUSE_DOUBLE_CLICK,VW),t.removeEventListener(U.MOUSE_DRAG,GW),t.removeEventListener(U.MOUSE_MOVE,WW),t.removeEventListener(U.MOUSE_UP,$W),t.removeEventListener(U.MOUSE_WHEEL,zW)},jW={enable:eCe,disable:tCe},{Active:nCe}=Fn;function HW(t){const{renderingEngineId:e,viewportId:r}=t.detail,n=sve(),i=Wg.getModifierKey(),o=Mr(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 rCe(t,e){var c;const r=new Map,{renderingEngineId:n,viewportId:i}=t.detail,o=Mr(i,n);if(!o)return r;const a=Object.keys(o.toolOptions),s=t.detail.key;for(let l=0;l{var v;return(v=p.bindings)==null?void 0:v.some(y=>y.key===s)});g&&r.set(u,g)}return r}function KW(t){const e=HW(t);if(e){const{renderingEngineId:n,viewportId:i}=t.detail,o=Mr(i,n),a=e.getToolName();Object.keys(o.toolOptions).includes(a)&&o.setViewportsCursorByToolName(a)}const r=rCe(t,[Fn.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 XW(t){const e=HW(t);if(!e)return;const{renderingEngineId:r,viewportId:n}=t.detail,i=Mr(n,r);aG();const o=e.getToolName();Object.keys(i.toolOptions).includes(o)&&i.setViewportsCursorByToolName(o)}const iCe=function(t){t.addEventListener(U.KEY_DOWN,KW),t.addEventListener(U.KEY_UP,XW)},oCe=function(t){t.removeEventListener(U.KEY_DOWN,KW),t.removeEventListener(U.KEY_UP,XW)},qW={enable:iCe,disable:oCe},{Active:aCe,Passive:sCe,Enabled:cCe}=Fn,YW=function(t){yg(t,[aCe,sCe,cCe]).forEach(r=>{r.onCameraModified&&r.onCameraModified(t)})},lCe=function(t){t.addEventListener(qe.CAMERA_MODIFIED,YW)},uCe=function(t){t.removeEventListener(qe.CAMERA_MODIFIED,YW)},JW={enable:lCe,disable:uCe},{Active:fCe,Passive:dCe,Enabled:hCe}=Fn,ZW=function(t){yg(t,[fCe,dCe,hCe]).forEach(r=>{r.onImageSpacingCalibrated&&r.onImageSpacingCalibrated(t)})},gCe=function(t){t.addEventListener(qe.IMAGE_SPACING_CALIBRATED,ZW)},pCe=function(t){t.removeEventListener(qe.IMAGE_SPACING_CALIBRATED,ZW)},QW={enable:gCe,disable:pCe},{Active:mCe}=Fn;function Lb(t){const{renderingEngineId:e,viewportId:r}=t.detail,n=t.detail.event,i=Mr(r,e);if(!i)return null;const o=Object.keys(i.toolOptions),a=Object.keys(n.touches).length,s=Kg(n)||Wg.getModifierKey(),c=i.getDefaultMousePrimary();for(let l=0;l(h.numTouchPoints===a||a===1&&h.mouseButton===c)&&h.modifierKey===s);if(u.mode===mCe&&d)return i.getToolInstance(f)}}function gM(t,e,r){const{renderingEngineId:n,viewportId:i}=t.detail,o=Mr(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:vCe,Passive:yCe}=Fn;function e$(t){if(je.isInteractingWithTool)return;const e=Lb(t);if(e&&typeof e.preTouchStartCallback=="function"&&e.preTouchStartCallback(t))return;const r=Object.keys(t.detail.event.touches).length===1,n=gM(t,[vCe],Object.keys(t.detail.event.touches).length),i=r?gM(t,[yCe]):void 0,o=[...n||[],...i||[],e],a=t.detail,{element:s}=a,c=Tv(s,o),l=a.currentPoints.canvas,f=FW(s,c,l,"touch"),u=!1;if(f.length>0){const{tool:h,annotation:g,handle:p}=pM(f);mM(g.annotationUID,u),h.handleSelectedCallback(t,g,p,"Touch");return}const d=Ab(s,c,l,"touch");if(d.length>0){const{tool:h,annotation:g}=pM(d);mM(g.annotationUID,u),h.toolSelectedCallback(t,g,"Touch",l);return}e&&typeof e.postTouchStartCallback=="function"&&e.postTouchStartCallback(t)}function pM(t){return t.length>1&&t.find(e=>!ti(e.annotation.annotationUID)&&ni(e.annotation.annotationUID))||t[0]}function mM(t,e=!1){e?pv(t)?ha(t,!1):ha(t,!0,!0):ha(t,!0,!1)}function t$(t){if(je.isInteractingWithTool)return;const e=Lb(t);if(e&&!je.isMultiPartToolActive&&e.addNewAnnotation){const r=e.addNewAnnotation(t,"touch");ha(r.annotationUID)}}function n$(t){if(je.isInteractingWithTool)return;const e=Lb(t);!e||typeof e.touchDragCallback!="function"||e.touchDragCallback(t)}const r$=qg.bind(null,"Touch","touchEndCallback"),wCe=qg.bind(null,"Touch","touchTapCallback"),i$=qg.bind(null,"Touch","touchPressCallback"),xCe=function(t){t.addEventListener(U.TOUCH_START,e$),t.addEventListener(U.TOUCH_START_ACTIVATE,t$),t.addEventListener(U.TOUCH_DRAG,n$),t.addEventListener(U.TOUCH_END,r$),t.addEventListener(U.TOUCH_TAP,wCe),t.addEventListener(U.TOUCH_PRESS,i$)},CCe=function(t){t.removeEventListener(U.TOUCH_START,e$),t.removeEventListener(U.TOUCH_START_ACTIVATE,t$),t.removeEventListener(U.TOUCH_DRAG,n$),t.removeEventListener(U.TOUCH_END,r$),t.removeEventListener(U.TOUCH_PRESS,i$)},o$={enable:xCe,disable:CCe},SCe=function(){ze.addEventListener(U.ANNOTATION_COMPLETED,bl.handleAnnotationCompleted),ze.addEventListener(U.ANNOTATION_MODIFIED,bl.handleAnnotationUpdate),ze.addEventListener(U.ANNOTATION_REMOVED,bl.handleAnnotationDelete)},TCe=function(){ze.removeEventListener(U.ANNOTATION_COMPLETED,bl.handleAnnotationCompleted),ze.removeEventListener(U.ANNOTATION_MODIFIED,bl.handleAnnotationUpdate),ze.removeEventListener(U.ANNOTATION_REMOVED,bl.handleAnnotationDelete)},a$={enable:SCe,disable:TCe},{Active:_Ce,Passive:ECe,Enabled:bCe}=Fn,s$=function(t){yg(t,[_Ce,ECe,bCe]).forEach(r=>{r.onResetCamera&&r.onResetCamera(t)})},DCe=function(t){t.addEventListener(qe.CAMERA_RESET,s$)},ICe=function(t){t.removeEventListener(qe.CAMERA_RESET,s$)},c$={enable:DCe,disable:ICe};function Nb(t){const{element:e,viewportId:r}=t.detail,n=MCe(r);OCe(e),PCe(n,e),wb.addViewportElement(r,e),UB.enable(e),iG.enable(e),tG.enable(e),Wg.enable(e),PW.enable(e),NW.enable(e),JW.enable(e),QW.enable(e),c$.enable(e),jW.enable(e),qW.enable(e),o$.enable(e),je.enabledElements.push(e)}function MCe(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 OCe(t){const{viewportUid:e,renderingEngineUid:r}=t.dataset,n=`${e}:${r}`;je.svgNodeCache[n]={}}function PCe(t,e){e.querySelector("div.viewport-element").appendChild(t)}function l$(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=De(t);if(!e)return;l$(e.viewportId,e.renderingEngineId).forEach(n=>{n.remove(e)})},LCe=t=>{const e=De(t);if(!e)return;const{renderingEngineId:r,viewportId:n}=e,i=Mr(n,r);i&&i.removeViewports(r,n)};function NCe(t){const{viewportUid:e,renderingEngineUid:r}=t.dataset,n=`${e}:${r}`;delete je.svgNodeCache[n]}function kCe(t){const e=t.querySelector(`div.${RCe}`),r=e.querySelector("svg");r&&e.removeChild(r)}const VCe=function(t){const e=je.enabledElements.findIndex(r=>r===t);e>-1&&je.enabledElements.splice(e,1)};function u$(t){const e=qG(t,[Fn.Active,Fn.Passive]),r=Tv(t,e);for(const{tool:n}of r){const i=n.cancel(t);if(i)return i}}class Vb{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"?De(o.currentTarget):Vn((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(N2(this._sourceViewports,e))return;const{renderingEngineId:r,viewportId:n}=e,i=ir(r).getViewport(n);if(!i){console.warn(`Synchronizer.addSource: No viewport for ${r} ${n}`);return}(this._eventSource==="element"?i.element:ze).addEventListener(this._eventName,this._onEvent.bind(this)),this._auxiliaryEvents.forEach(({name:a,source:s})=>{(s==="element"?i.element:ze).addEventListener(a,this._onEvent.bind(this))}),this._updateDisableHandlers(),this._sourceViewports.push(e)}addTarget(e){N2(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=vM(this._sourceViewports,e);if(r===-1)return;const n=this._eventSource==="element"?this.getViewportElement(e):ze;this._sourceViewports.splice(r,1),n.removeEventListener(this._eventName,this._eventHandler),this._auxiliaryEvents.forEach(({name:i,source:o})=>{(o==="element"?this.getViewportElement(e):ze).removeEventListener(i,this._eventHandler)}),this._updateDisableHandlers()}removeTarget(e){const r=vM(this._targetViewports,e);r!==-1&&(this._targetViewports.splice(r,1),this._updateDisableHandlers())}hasSourceViewport(e,r){return N2(this._sourceViewports,{renderingEngineId:e,viewportId:r})}hasTargetViewport(e,r){return N2(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=FCe(this._sourceViewports,this._targetViewports),r=this.remove.bind(this),n=i=>{r(i.detail.element)};e.forEach(i=>{const o=this.getEventSource(i);o&&(o.removeEventListener(qe.ELEMENT_DISABLED,n),o.addEventListener(qe.ELEMENT_DISABLED,n))})}getEventSource(e){return this._eventSource==="element"?this.getViewportElement(e):ze}getViewportElement(e){const{renderingEngineId:r,viewportId:n}=e,i=ir(r);if(!i)return null;const o=i.getViewport(n);return o?o.element:null}}function FCe(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 vM(t,e){return t.findIndex(r=>e.renderingEngineId===r.renderingEngineId&&e.viewportId===r.viewportId)}function N2(t,e){return t.some(r=>r.renderingEngineId===e.renderingEngineId&&r.viewportId===e.viewportId)}function D0(t,e,r,n){if(je.synchronizers.some(a=>a.id===t))throw new Error(`Synchronizer with id '${t}' already exists.`);const o=new Vb(t,e,r,n);return je.synchronizers.push(o),o}function UCe(){for(;je.synchronizers.length>0;)je.synchronizers.pop().destroy()}function BCe(t){return je.synchronizers.find(e=>e.id===t)}function GCe(){return je.synchronizers}function WCe(t){const e=je.synchronizers.findIndex(r=>r.id===t);e>-1&&(je.synchronizers[e].destroy(),je.synchronizers.splice(e,1))}const f$=Object.freeze(Object.defineProperty({__proto__:null,createSynchronizer:D0,destroy:UCe,destroySynchronizer:WCe,getAllSynchronizers:GCe,getSynchronizer:BCe,getSynchronizersForViewport:l$},Symbol.toStringTag,{value:"Module"})),$Ce=Object.freeze(Object.defineProperty({__proto__:null,Synchronizer:Vb,SynchronizerManager:f$,ToolGroupManager:TB,addEnabledElement:Nb,addTool:Ui,cancelActiveManipulations:u$,hasTool:Kme,removeEnabledElement:kb,removeTool:MB,get state(){return je},svgNodeCache:mx},Symbol.toStringTag,{value:"Module"})),dw=function(t){const{viewportId:e}=t.detail;Xg(e)};let g_=!1;function d$(t={}){g_||(Xve(t),jCe(),HCe(),g_=!0)}function zCe(){h$(),g$(),CB(),x1e();const t=Fc(),e=er;t.restoreAnnotations({}),e.resetState(),g_=!1}function jCe(){h$();const t=qe.ELEMENT_ENABLED,e=qe.ELEMENT_DISABLED;ze.addEventListener(t,Nb),ze.addEventListener(e,kb),a$.enable()}function h$(){const t=qe.ELEMENT_ENABLED,e=qe.ELEMENT_DISABLED;ze.removeEventListener(t,Nb),ze.removeEventListener(e,kb),a$.disable()}function HCe(){g$(),ze.addEventListener(U.ANNOTATION_COMPLETED,RW),ze.addEventListener(U.ANNOTATION_MODIFIED,AW),ze.addEventListener(U.ANNOTATION_SELECTION_CHANGE,fw),ze.addEventListener(U.ANNOTATION_SELECTION_CHANGE,fw),ze.addEventListener(U.ANNOTATION_REMOVED,Gxe),ze.addEventListener(U.SEGMENTATION_MODIFIED,MW),ze.addEventListener(U.SEGMENTATION_DATA_MODIFIED,IW),ze.addEventListener(U.SEGMENTATION_REPRESENTATION_MODIFIED,dw),ze.addEventListener(U.SEGMENTATION_REPRESENTATION_ADDED,dw)}function g$(){ze.removeEventListener(U.ANNOTATION_COMPLETED,RW),ze.removeEventListener(U.ANNOTATION_MODIFIED,AW),ze.removeEventListener(U.ANNOTATION_SELECTION_CHANGE,fw),ze.removeEventListener(U.ANNOTATION_SELECTION_CHANGE,fw),ze.removeEventListener(U.SEGMENTATION_MODIFIED,MW),ze.removeEventListener(U.SEGMENTATION_DATA_MODIFIED,IW),ze.removeEventListener(U.SEGMENTATION_REPRESENTATION_MODIFIED,dw),ze.removeEventListener(U.SEGMENTATION_REPRESENTATION_ADDED,dw)}const KCe=Object.freeze(Object.defineProperty({__proto__:null,COLOR_LUT:uw},Symbol.toStringTag,{value:"Module"})),XCe="3.33.5";function qCe(t,e,r,n){const{camera:i}=n.detail,o=ir(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:YCe}=qe;function JCe(t){return D0(t,YCe,qCe)}function ZCe(t,e,r,n,i){const o=ir(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:QCe}=qe;function e3e(t,e){return D0(t,QCe,ZCe,{viewPresentation:e})}function t3e(t,e,r,n,i){const o=n.detail,{volumeId:a,range:s,invertStateChanged:c,invert:l,colormap:f}=o,u=ir(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 Ir)d._actors&&d._actors.size>1?d.setProperties(h,a):d.setProperties(h);else if(d instanceof hr)d.setProperties(h);else throw new Error("Viewport type not supported.");d.render()}function n3e(t,e){return e=Object.assign({syncInvertState:!0,syncColormap:!0},e),D0(t,qe.VOI_MODIFIED,t3e,{auxiliaryEvents:[{name:qe.COLORMAP_MODIFIED}],...e})}function r3e(t,e,r){const n=ir(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:i3e}=qe;function o3e(t){return D0(t,i3e,r3e)}function a3e(t,e){const{viewPlaneNormal:r}=t.getCamera(),{viewPlaneNormal:n}=e.getCamera(),i=pt(r,n);return Math.abs(i)>.9}const yM=(t,e)=>hm.get("spatialRegistrationModule",t,e);async function s3e(t,e,r){const n=ir(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=ut("imagePlaneModule",s).imagePositionPatient,f=a.getImageIds();if(!a3e(i,a))return;let u=yM(r.viewportId,e.viewportId);if(!u){const p=i.getFrameOfReferenceUID(),v=a.getFrameOfReferenceUID();if(p===v&&(o==null?void 0:o.useInitialPosition)!==!1?u=Lt(La()):(TU(i,a),u=yM(r.viewportId,e.viewportId)),!u)return}const d=Gt(Ve(),l,u),h=c3e(d,f);let g=h.index;a instanceof lr&&(g=f.length-h.index-1),h.index!==-1&&a.getCurrentImageIdIndex()!==h.index&&await Wo(a.element,{imageIndex:g})}function c3e(t,e){return e.reduce((r,n,i)=>{const{imagePositionPatient:o}=ut("imagePlaneModule",n),a=Po(o,t);return a{i.getImageIds().includes(t)&&i.calibrateSpacing(t)})}function v$(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 w3e=Object.freeze(Object.defineProperty({__proto__:null,extend2DBoundingBoxInViewAxis:v$,getBoundingBoxAroundShape:$f,getBoundingBoxAroundShapeIJK:$f,getBoundingBoxAroundShapeWorld:Ive},Symbol.toStringTag,{value:"Module"})),{transformWorldToIndex:P3}=Dn;function y$(t,e,r){const[n,i]=t,o=Et((n[0]+i[0])/2,(n[1]+i[1])/2,(n[2]+i[2])/2),a=Po(n,i)/2,{boundsIJK:s,topLeftWorld:c,bottomRightWorld:l}=C3e(e,r,t,o,a);return{boundsIJK:s,centerWorld:o,radiusWorld:a,topLeftWorld:c,bottomRightWorld:l}}function w$(t,e){const r=e.getDirection(),n=Et(r[0],r[1],r[2]),i=Et(r[3],r[4],r[5]),o=Et(r[6],r[7],r[8]),a=Ic(Ve(),o);return y$(t,e,{row:n,column:i,normal:a})}function x3e(t,e,r){if(!r)throw new Error("viewport is required in order to calculate the sphere bounds");const n=r.getCamera(),i=Et(n.viewUp[0],n.viewUp[1],n.viewUp[2]),o=Et(n.viewPlaneNormal[0],n.viewPlaneNormal[1],n.viewPlaneNormal[2]),a=Ve();mn(a,i,o);const s={row:a,normal:o,column:Ic(Ve(),i)};return y$(t,e,s)}function C3e(t,e,r,n,i){const o=t.getDimensions(),{row:a,column:s,normal:c}=e,l=Ve(),f=Ve();bn(l,n,c,i),bn(f,n,c,-i),bn(l,l,s,-i),bn(f,f,s,i),bn(l,l,a,-i),bn(f,f,a,i);const u=P3(t,l),d=P3(t,f),h=r.map(p=>P3(t,p));return{boundsIJK:$f([u,d,...h],o),topLeftWorld:l,bottomRightWorld:f}}function x$(t,e=5){return parseFloat(t[0]).toFixed(e)+","+parseFloat(t[1]).toFixed(e)+","+parseFloat(t[2]).toFixed(e)+","}class S3e{static setStartRange(e,r,n=e.getCurrentImageIdIndex()){this.setRange(e,r,n)}static setEndRange(e,r,n=e.getCurrentImageIdIndex()){this.setRange(e,r,void 0,n)}static setRange(e,r,n,i){var c;const{metadata:o}=r;n===void 0&&(n=o.sliceIndex=n?a:e.getNumberOfSlices()-1),i=Math.max(n,i),o.sliceIndex=Math.min(n,i),o.referencedImageId=e.getCurrentImageId(o.sliceIndex),o.referencedImageURI=void 0,i===o.sliceIndex?o.multiSliceReference=void 0:i!==((c=o.multiSliceReference)==null?void 0:c.sliceIndex)&&(o.multiSliceReference={referencedImageId:e.getCurrentImageId(i),sliceIndex:i});const s={viewportId:e.id,renderingEngineId:e.renderingEngineId,changeType:Qt.MetadataReferenceModified,annotation:r};nt(ze,U.ANNOTATION_MODIFIED,s),this.setViewportFrameRange(e,o)}static setSingle(e,r,n=e.getCurrentImageIdIndex()){this.setRange(e,r,n,n)}static getFrameRange(e){const{metadata:r}=e,{sliceIndex:n,multiSliceReference:i}=r,o=i==null?void 0:i.sliceIndex;return o?[n+1,o+1]:n+1}static getFrameRangeStr(e){const r=this.getFrameRange(e);return Array.isArray(r)?`${r[0]}-${r[1]}`:String(r)}static setViewportFrameRange(e,r){var n;e.setFrameRange&&((n=r.multiSliceReference)!=null&&n.sliceIndex)&&e.setFrameRange(r.sliceIndex+1,r.multiSliceReference.sliceIndex+1)}}function T3e(t,e){const{viewPlaneNormal:r}=t.metadata,{viewPlaneNormal:n}=e.metadata,i=pt(r,n);if(!a0(1,Math.abs(i)))return!1;const{polyline:a}=t.data.contour,{polyline:s}=e.data.contour,c=pt(r,a[0]),l=pt(r,s[0]);return a0(c,l)}function C$(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"}:C$(i,e,r)}return{remainingLines:e,contourPoints:r,type:"OPEN_PLANAR"}}function Fb(t){if(t.length==0)return[];const e=[],r=t.shift();e.push(r.a),e.push(r.b);const n=C$(r,t,e);if(n.remainingLines.length==0)return[{type:n.type,contourPoints:n.contourPoints}];{const i=Fb(n.remainingLines);return i.push({type:n.type,contourPoints:n.contourPoints}),i}}function _3e(t){return Fb(t)}const E3e={findContours:Fb,findContoursFromReducedSet:_3e};function b3e(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 D3e=(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 I3e(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=>{D3e([r[o][0],r[o][1]],n)||i++}),i===0}function M3e(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&&I3e(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 O3e={processContourHoles:M3e};function P3e(t,e){return E0(e,t)}function Ub(t){const e=[],r=[];t.forEach((n,i)=>{Ix(n)&&r.push({polyline:n,originalIndex:i})});for(let n=0;n0&&e.push({contourIndex:i.originalIndex,holeIndexes:a.sort((s,c)=>s-c)})}return e.sort((n,i)=>n.contourIndex-i.contourIndex)}let wM=!1;function $x(){if(wM)return;wM=!0;const t=()=>new Worker(new URL("/static/dv3d/assets/computeWorker-CMKsptct.js",import.meta.url),{name:"compute",type:"module"}),e=Fl(),n=Kve().computeWorker,i={maxWorkerInstances:1,autoTerminateOnIdle:(n==null?void 0:n.autoTerminateOnIdle)??{enabled:!0,idleTimeThreshold:2e3}};e.registerWorker("compute",t,i)}function zx(){return er.getState().segmentations}function R3e(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===Pt.Contour&&A3e(a);const s=L3e(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 A3e(t){t.geometryIds=t.geometryIds??[],t.annotationUIDsMap=t.annotationUIDsMap??new Map}function L3e(t,e,r){const n={};return t?Object.entries(t).forEach(([i,o])=>{const{label:a,locked:s,cachedStats:c,active:l,...f}=o,u={segmentIndex:Number(i),label:a??`Segment ${i}`,locked:s??!1,cachedStats:c??{},active:l??!1,...f};n[i]=u}):e===Pt.Contour?N3e(n,r):e===Pt.Surface?k3e(n,r):n[1]=V3e(),n}function N3e(t,e){const{geometryIds:r}=e;r==null||r.forEach(n=>{const i=Ue.getGeometry(n);if(i!=null&&i.data){const{segmentIndex:o}=i.data;t[o]={segmentIndex:o}}})}function k3e(t,e){const{geometryIds:r}=e;r==null||r.forEach(n=>{const i=Ue.getGeometry(n);if(i!=null&&i.data){const{segmentIndex:o}=i.data;t[o]={segmentIndex:o}}})}function V3e(){return{segmentIndex:1,label:"Segment 1",locked:!1,cachedStats:{},active:!0}}function S$(t,e){const r=er;t.forEach(n=>{const i=R3e(n);r.addSegmentation(i),e||us(i.segmentationId)})}function Yg(t,e,r){return _$(t,e,r)}function T$(t,e,r){return _$(t,e,r)}function _$(t,e,r){const{segmentationId:n,type:i}=e;return F3e(t,n,i,r),er.removeSegmentationRepresentations(t,{segmentationId:n,type:i})}function E$(){er.getAllViewportSegmentationRepresentations().forEach(({viewportId:e,representations:r})=>{r.forEach(({segmentationId:n,type:i})=>{Yg(e,{segmentationId:n,type:i})})}),er.resetState()}function b$(t,e,r){Yg(t,{segmentationId:e,type:Pt.Labelmap},r)}function D$(t,e,r){Yg(t,{segmentationId:e,type:Pt.Contour},r)}function I$(t,e,r){Yg(t,{segmentationId:e,type:Pt.Surface},r)}function F3e(t,e,r,n){Aa(t,{segmentationId:e,type:r}).forEach(a=>{a.type===Pt.Labelmap?uW.removeRepresentation(t,a.segmentationId,n):a.type===Pt.Contour?cW.removeRepresentation(t,a.segmentationId,n):a.type===Pt.Surface&&gG.removeRepresentation(t,a.segmentationId,n)});const{viewport:o}=Vn(t)||{};o&&o.render()}function Bb(t){const e=er;e.getAllViewportSegmentationRepresentations().filter(({representations:n})=>n.some(i=>i.segmentationId===t)).map(({viewportId:n})=>n).forEach(n=>{T$(n,{segmentationId:t})}),e.removeSegmentation(t),Q8(t)}function M$(){const t=er;t.getState().segmentations.map(n=>n.segmentationId).forEach(n=>{Bb(n)}),t.resetState()}function U3e(t){er.removeColorLUT(t)}function O$(t,e){return P$(t).map(o=>(e&&o.type===e,an(o.segmentationId))).filter(o=>o!==void 0)}function P$(t){return er.getState().viewportSegRepresentations[t]}function B3e(t,e){return er.getStackSegmentationImageIdsForViewport(t,e)}function G3e(){er.resetState()}const W3e=Object.freeze(Object.defineProperty({__proto__:null,addColorLUT:m1,addSegmentations:S$,destroy:G3e,getColorLUT:gv,getCurrentLabelmapImageIdForViewport:ed,getCurrentLabelmapImageIdsForViewport:Nu,getNextColorLUTIndex:SW,getSegmentation:an,getSegmentationRepresentation:eb,getSegmentationRepresentations:Aa,getSegmentationRepresentationsBySegmentationId:fG,getSegmentations:zx,getStackSegmentationImageIdsForViewport:B3e,getViewportIdsWithSegmentation:_0,getViewportSegmentationRepresentations:P$,getViewportSegmentations:O$,removeAllSegmentationRepresentations:E$,removeAllSegmentations:M$,removeColorLUT:U3e,removeContourRepresentation:D$,removeLabelmapRepresentation:b$,removeSegmentation:Bb,removeSegmentationRepresentation:Yg,removeSurfaceRepresentation:I$,updateLabelmapSegmentationImageReferences:OW},Symbol.toStringTag,{value:"Module"}));function R$(t){if("volumeId"in t){if(t=t,!Ue.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 $3e(t){if(!t.representation.data)throw new Error("The segmentationInput.representationData.data is undefined, please provide a valid representationData.data");const e=t.representation.data;R$(e)}function z3e(t){R$(t)}const j3e=Object.freeze(Object.defineProperty({__proto__:null,validate:z3e,validatePublic:$3e},Symbol.toStringTag,{value:"Module"}));function A$(t){const e=Ue.getVolume(t);if(!e)return null;const r=e.referencedVolumeId;let n;if(r)n=Ue.getVolume(r);else{const i=e.imageIds,a=Ue.getImage(i[0]).referencedImageId,s=Ue.getVolumeContainingImageId(a);n=s==null?void 0:s.volume}return n}function H3e({operationData:t}){const{volumeId:e}=t;if(!e){const c=new CustomEvent(qe.ERROR_EVENT,{detail:{type:"Segmentation",message:"No volume id found for the segmentation"},cancelable:!0});return ze.dispatchEvent(c),null}const r=Ue.getVolume(e),n=A$(e);if(!r||!n)return null;const{imageData:i}=r,{voxelManager:o}=r,{voxelManager:a,imageData:s}=n;return{segmentationImageData:i,segmentationVoxelManager:o,segmentationScalarData:null,imageScalarData:null,imageVoxelManager:a,imageData:s}}function K3e({operationData:t,viewport:e,strategy:r}){var f;const{segmentationId:n}=t;let i,o,a,s,c,l;if(r.ensureSegmentationVolumeFor3DManipulation)r.ensureSegmentationVolumeFor3DManipulation({operationData:t,viewport:e}),o=t.segmentationVoxelManager,i=t.segmentationImageData,a=null;else{const u=ed(e.id,n);if(!u)return null;const d=bx(e.id,n);if(!d)return null;const h=Ue.getImage(u);i=d.actor.getMapper().getInputData(),o=h.voxelManager;const g=t.imageId,p=Ue.getImage(g);if(!p)return null;a=(f=p.getPixelData)==null?void 0:f.call(p)}if(r.ensureImageVolumeFor3DManipulation)r.ensureImageVolumeFor3DManipulation({operationData:t,viewport:e}),c=t.imageVoxelManager,s=t.imageScalarData,l=t.imageData;else{const u=e.getCurrentImageId();if(!u)return null;const d=Ue.getImage(u);l=d?null:e.getImageData(),s=(d==null?void 0:d.getPixelData())||l.getScalarData(),c=d==null?void 0:d.voxelManager}return{segmentationImageData:i,segmentationScalarData:a,imageScalarData:s,segmentationVoxelManager:o,imageVoxelManager:c,imageData:l}}function Gb({operationData:t,viewport:e,strategy:r}){return t?"volumeId"in t&&t.volumeId!=null||"referencedVolumeId"in t&&t.referencedVolumeId!=null?H3e({operationData:t}):K3e({operationData:t,viewport:e,strategy:r}):null}function Jg(t){const{representationData:e}=an(t);let{volumeId:r}=e.Labelmap,n;if(r&&(n=Ue.getVolume(r),n))return n;const{imageIds:i}=e.Labelmap;if(r=Ue.generateVolumeId(i),!(!i||i.length===1||!Zf(i)))return n=nv(r,i),n}const L$={[_t.EnsureSegmentationVolumeFor3DManipulation]:t=>{const{operationData:e,viewport:r}=t,{segmentationId:n,imageIds:i}=e,o=r?r.getImageIds():i.map(c=>Ue.getImage(c).referencedImageId);if(!Zf(o))throw new Error("Volume is not reconstructable for sphere manipulation");const s=Jg(n);s&&(e.segmentationVoxelManager=s.voxelManager,e.segmentationImageData=s.imageData)}};function jx(t){if(!t||t.length<=1||!Zf(t))return;const r=Ue.generateVolumeId(t);let n=Ue.getVolume(r);return n||(n=nv(r,t),n)}const N$={[_t.EnsureImageVolumeFor3DManipulation]:t=>{const{operationData:e,viewport:r}=t;let n;if(r){if(n=r.getImageIds(),!Zf(n))throw new Error("Volume is not reconstructable for sphere manipulation")}else n=an(e.segmentationId).representationData.Labelmap.imageIds.map(s=>Ue.getImage(s).referencedImageId);const i=jx(n);if(!i)throw new Error("Failed to create or get image volume");e.imageVoxelManager=i.voxelManager,e.imageData=i.imageData}},kl=(t,e)=>{nt(ze,qe.WEB_WORKER_PROGRESS,{progress:e,type:t})},k$=(t,e)=>{const r=an(t),{representationData:n}=r,{Labelmap:i}=n;if(!i)return console.debug("No labelmap found for segmentation",t),null;const o=i.volumeId,a=i.imageIds,s={segmentationId:t,volumeId:o,imageIds:a};let c=!1;if(a){const f=a.map(u=>Ue.getImage(u).referencedImageId);c=Zf(f)}let l=e;return l?Array.isArray(l)||(l=[l,255]):l=[pa(t)],{operationData:s,segVolumeId:o,segImageIds:a,reconstructableVolume:c,indices:l}},V$=t=>Gb({operationData:t,strategy:{ensureSegmentationVolumeFor3DManipulation:L$.ensureSegmentationVolumeFor3DManipulation,ensureImageVolumeFor3DManipulation:N$.ensureImageVolumeFor3DManipulation}}),F$=t=>{const e=[],r=[];for(const n of t){const i=Ue.getImage(n),o=i.getPixelData(),{origin:a,direction:s,spacing:c,dimensions:l}=lx(i);e.push({scalarData:o,dimensions:l,spacing:c,origin:a,direction:s});const f=i.referencedImageId;if(f){const u=Ue.getImage(f);if(!u)continue;const d=u.getPixelData(),h=u.voxelManager,g=[u.rowPixelSpacing,u.columnPixelSpacing];r.push({scalarData:d,dimensions:h?h.dimensions:[u.columns,u.rows,1],spacing:g})}}return{segmentationInfo:e,imageInfo:r}},X3e=(t,e)=>{var a;let r;if(t){const c=Ue.getVolume(t).imageIds,l=Ue.getImage(c[0]);l&&(r=l.referencedImageId)}else e!=null&&e.length&&(r=Ue.getImage(e[0]).referencedImageId);const n=Ue.getImage(r),i=ut("scalingModule",r),o={isPreScaled:!!((a=n==null?void 0:n.preScale)!=null&&a.scaled),isSuvScaled:typeof(i==null?void 0:i.suvbw)=="number"};return{refImageId:r,modalityUnitOptions:o}},{Labelmap:q3e}=Pt;async function U$({segmentations:t}){$x(),kl(Ac.GENERATE_CONTOUR_SETS,0);const{representationData:e,segments:r=[0,1],segmentationId:n}=t;let{volumeId:i}=e[q3e];if(!i){const g=Jg(n);g&&(i=g.volumeId)}const o=Ue.getVolume(i);if(!o){console.warn(`No volume found for ${i}`);return}const c={scalarData:o.voxelManager.getCompleteScalarDataArray(),dimensions:o.dimensions,spacing:o.imageData.getSpacing(),origin:o.imageData.getOrigin(),direction:o.imageData.getDirection()},l=Array.isArray(r)?r.filter(g=>g!==null).map(g=>g.segmentIndex||g):Object.values(r).filter(g=>g!==null).map(g=>g.segmentIndex||g),f=await Fl().executeTask("compute","generateContourSetsFromLabelmapVolume",{segmentation:c,indices:l,mode:"individual"}),u=o.imageIds.map(g=>{var v;const p=(v=Ue.getImage(g))==null?void 0:v.referencedImageId;return p?Ue.getImage(p):void 0}),d=u.map(g=>lx(g)),h=f.map(g=>{const p=r[g.segment.segmentIndex]||{};if(!g.sliceContours.length)return null;const v=g.sliceContours[0].polyData.points[0];let y;if(v){const m=d.findIndex(w=>{const{scanAxisNormal:x,origin:C}=w,S=Tl(x,C);return pF(v,S)});m!==-1&&(y=u[m].imageId)}return{label:p.label,color:p.color,metadata:{FrameOfReferenceUID:o.metadata.FrameOfReferenceUID,referencedImageId:y},sliceContours:g.sliceContours.map(m=>({contours:m.contours,polyData:m.polyData,FrameNumber:m.sliceIndex+1,sliceIndex:m.sliceIndex,FrameOfReferenceUID:o.metadata.FrameOfReferenceUID,referencedImageId:y}))}}).filter(g=>g!==null);return kl(Ac.GENERATE_CONTOUR_SETS,100),h}class B${constructor(){}static getContourSequence(e,r){const{data:n}=e,{projectionPoints:i,projectionPointsImageIds:o}=n.cachedStats;return i.map((a,s)=>{const c=Y3e(a),l=J3e(o[s],r);return{NumberOfContourPoints:c.length/3,ContourImageSequence:l,ContourGeometricType:"CLOSED_PLANAR",ContourData:c}})}}B$.toolName="RectangleROIStartEndThreshold";function Y3e(t){return[...t[0],...t[1],...t[3],...t[2]].flat().map(i=>i.toFixed(2))}function J3e(t,e){const r=e.get("sopCommonModule",t);return{ReferencedSOPClassUID:r.sopClassUID,ReferencedSOPInstanceUID:r.sopInstanceUID}}function Z3e(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 E1=class E1{constructor(){}static convert(e,r,n){Z3e(e);const{toolName:i}=e.metadata,o=E1.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){E1.TOOL_NAMES[e.toolName]=e}};E1.TOOL_NAMES={};let hw=E1;hw.register(B$);function Q3e(t,e){bl.acceptAutoGenerated(t,e)}const{isEqual:eSe}=Dn;function p_(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=>eSe(o,c));if(a!==-1)return a;let s=1/0;return r.reduce((c,l,f)=>{const u=_L(l,o);return u{const S=({value:M})=>{h=h+1,M>=g.lower&&M<=g.upper&&(d=d+1)},{imageData:T,dimensions:_,lower:E,upper:b}=w,D=J8(T,_,x,C);h=0,d=0,g={lower:E,upper:b};let I=!1;const{voxelManager:P}=T.get("voxelManager");return P.forEach(S,{imageData:T,boundsIJK:D}),s===0?I=d>0:s==1&&(I=d===h),I},v=(w,x)=>{const{imageData:C,lower:S,upper:T}=w,_=C.get("voxelManager").voxelManager,E=_.toIndex(x),b=_.getAtIndex(E);return!(b<=S||b>=T)},y=({index:w,pointIJK:x,pointLPS:C})=>{let S=u.length>0;for(let T=0;T{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=De(a),{viewport:l}=c;this.isDrawing=!0;const f=this.constructor.createAnnotationForViewport(l,{data:{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]}}},cachedStats:{}}});rn(f,a);const u=St(a,this.getToolName());return this.editData={annotation:f,viewportIdsToRender:u,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),At(a),n.preventDefault(),ke(u),f},this.isPointNearTool=(n,i,o,a)=>{const s=De(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:y,height:m}=h;return mb([p,v,y,m],g)<=a},this.toolSelectedCallback=(n,i)=>{const o=n.detail,{element:a}=o;i.highlighted=!0;const s=St(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},this._activateModify(a),At(a),De(a),ke(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=St(s,this.getToolName());this.editData={annotation:i,viewportIdsToRender:u,handleIndex:f,movingTextBox:l},this._activateModify(s),At(s),De(s),ke(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),Yt(o),this.doneEditMemo(),this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&nn(a.annotationUID),ke(s),c&&Un(a))},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,handleIndex:c,movingTextBox:l,newAnnotation:f}=this.editData;this.createMemo(o,a,{newAnnotation:f});const{data:u}=a;if(l){const{deltaPoints:d}=i,h=d.world,{textBox:g}=u.handles,{worldPosition:p}=g;p[0]+=h[0],p[1]+=h[1],p[2]+=h[2],g.hasMoved=!0}else if(c===void 0){const{deltaPoints:d}=i,h=d.world,{points:g}=u.handles;g.forEach(p=>{p[0]+=h[0],p[1]+=h[1],p[2]+=h[2]}),a.invalidated=!0}else{const{currentPoints:d}=i,h=De(o),{worldToCanvas:g,canvasToWorld:p}=h.viewport,v=d.world,{points:y}=u.handles;y[c]=[...v];let m,w,x,C,S,T,_,E;switch(c){case 0:case 3:m=g(y[0]),C=g(y[3]),w=[C[0],m[1]],x=[m[0],C[1]],T=p(w),_=p(x),y[1]=T,y[2]=_;break;case 1:case 2:w=g(y[1]),x=g(y[2]),m=[x[0],w[1]],C=[w[0],x[1]],S=p(m),E=p(C),y[0]=S,y[3]=E;break}a.invalidated=!0}this.editData.hasMoved=!0,De(o),ke(s),a.invalidated&&cn(a,o,Qt.HandlesUpdated)},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),Yt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,ke(o),a&&Un(i),this.editData=null,i.annotationUID}},this._activateDraw=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragCallback),n.addEventListener(U.MOUSE_MOVE,this._dragCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback)},this._deactivateDraw=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_MOVE,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback)},this._activateModify=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=ln(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(G));u.annotationUID=g;const{color:w,lineWidth:x,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 lr)){const{referencedImageId:G}=h.metadata;for(const X in p.cachedStats)X.startsWith("imageId")&&f.getStackViewports().find(me=>{const ge=Qr(G),ye=me.hasImageURI(ge),Ie=Qr(me.getCurrentImageId());return ye&&Ie!==ge})&&delete p.cachedStats[X]}if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;let _;if(!ni(g))continue;!ti(g)&&!this.editData&&y!==null&&y!==void 0&&(_=[m[y]]),_&&sr(i,g,"0",_,{color:w});const E=`${g}-rect`;yb(i,g,"0",m,{color:w,lineDash:C,lineWidth:x},E),o=!0;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 I=this.configuration.getTextLines(p,l);if(!I||I.length===0)continue;if(!p.handles.textBox.hasMoved){const G=Va(m);p.handles.textBox.worldPosition=a.canvasToWorld(G)}const P=a.worldToCanvas(p.handles.textBox.worldPosition),L=Lo(i,g,"1",I,P,m,{},D),{x:B,y:j,width:V,height:F}=L;p.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([B,j]),topRight:a.canvasToWorld([B+V,j]),bottomLeft:a.canvasToWorld([B,j+F]),bottomRight:a.canvasToWorld([B+V,j+F])}}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 v,y,m,w;if(!this.configuration.calculateStats)return;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 x=0;xvr(n,o)&&vr(i,o),this._throttledCalculateCachedStats=ea(this._calculateCachedStats,100,{trailing:!0})}};wh.toolName="RectangleROI",wh.hydrate=(e,r,n)=>{const i=Vn(e);if(!i)return;const{FrameOfReferenceUID:o,referencedImageId:a,viewPlaneNormal:s,instance:c,viewport:l}=wh.hydrateBase(wh,i,r,n),{toolInstance:f,...u}=n||{},d={annotationUID:(n==null?void 0:n.annotationUID)||Pn(),data:{handles:{points:r,activeHandleIndex:null},label:"",cachedStats:{}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:c.getToolName(),viewPlaneNormal:s,FrameOfReferenceUID:o,referencedImageId:a,...u}};rn(d,l.element),ke([l.id])};let ku=wh;function nSe(t,e){const r=t.cachedStats[e],{area:n,mean:i,max:o,stdDev:a,areaUnit:s,modalityUnit:c,min:l}=r;if(i==null)return;const f=[];return $r(n)&&f.push(`Area: ${un(n)} ${s}`),$r(i)&&f.push(`Mean: ${un(i)} ${c}`),$r(o)&&f.push(`Max: ${un(o)} ${c}`),$r(l)&&f.push(`Max: ${un(l)} ${c}`),$r(a)&&f.push(`Std Dev: ${un(a)} ${c}`),f}const{transformWorldToIndex:Ep}=Dn;class Wb extends ku{constructor(e={},r={configuration:{storePointData:!1,numSlicesToPropagate:10,calculatePointsInsideVolume:!0,getTextLines:rSe,statsCalculator:Al,showTextBox:!1,throttleTimeout:100}}){super(e,r),this.addNewAnnotation=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=De(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 hr)throw new Error("Stack Viewport Not implemented");{const T=this.getTargetId(l);v=Bl(T),p=Ue.getVolume(v),g=Pu(p,s,d)}const y=Jf(p,d),m=this._getStartCoordinate(s,d),w=this._getEndCoordinate(s,y,d),x=l.getFrameOfReferenceUID(),C={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:[...d],enabledElement:c,viewUp:[...h],FrameOfReferenceUID:x,referencedImageId:g,toolName:this.getToolName(),volumeId:v,spacingInNormal:y},data:{label:"",startCoordinate:m,endCoordinate:w,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),rn(C,a);const S=St(a,this.getToolName());return this.editData={annotation:C,viewportIdsToRender:S,handleIndex:3,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),At(a),n.preventDefault(),ke(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),Yt(o);const{metadata:u}=a,{enabledElement:d}=u;this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&nn(a.annotationUID);const h=this.getTargetId(d.viewport),g=Ue.getVolume(h.split(/volumeId:|\?/)[1]);this._computePointsInsideVolume(a,h,g,d),ke(s),c?Un(a):cn(a,o)},this.renderAnnotation=(n,i)=>{var l;let o=!1;const{viewport:a}=n;let s=ln(this.getToolName(),a.element);if(!(s!=null&&s.length))return o;s=Fx(s,a.getCamera());const c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id};for(let f=0;fa.worldToCanvas(X));c.annotationUID=d;const C=this.getStyle("lineWidth",c,u),S=this.getStyle("lineDash",c,u),T=this.getStyle("color",c,u),_=a.getCamera().focalPoint,E=a.getCamera().viewPlaneNormal;let b=p,D=v;if(Array.isArray(p)){b=this._getCoordinateForViewplaneNormal(b,E);const X=this._getIndexOfCoordinatesForViewplaneNormal(E);h.handles.points.forEach(ne=>{ne[X]=b}),h.startCoordinate=b}Array.isArray(v)&&(D=this._getCoordinateForViewplaneNormal(D,E),h.endCoordinate=D,h.endCoordinate=D);const I=xf(b),P=xf(D),M=this._getCoordinateForViewplaneNormal(_,E),L=xf(M);if(LMath.max(I,P))continue;const B=(l=w.viewport)==null?void 0:l.volumeIds.values();for(const X of B)u.invalidated&&u.metadata.volumeId===X&&this._throttledCalculateCachedStats(u,w);let j=!1;if((L===I||L===P)&&(j=!0),!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;let V;if(!ni(d))continue;!ti(d)&&!this.editData&&m!==null&&j&&(V=[x[m]]),V&&sr(i,d,"0",V,{color:T});let F=S;if(j||(F=2),yv(i,d,"0",x[0],x[3],{color:T,lineDash:F,lineWidth:C}),o=!0,this.configuration.showTextBox){const X=this.getLinkedTextBoxStyle(c,u);if(!X.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}const ne=this.configuration.getTextLines(h,{metadata:g});if(!ne||ne.length===0)continue;if(!h.handles.textBox.hasMoved){const H=Va(x);h.handles.textBox.worldPosition=a.canvasToWorld(H)}const ue=a.worldToCanvas(h.handles.textBox.worldPosition),ge=Lo(i,d,"1",ne,ue,x,{},X),{x:ye,y:Ie,width:Pe,height:Ee}=ge;h.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([ye,Ie]),topRight:a.canvasToWorld([ye+Pe,Ie]),bottomLeft:a.canvasToWorld([ye,Ie+Ee]),bottomRight:a.canvasToWorld([ye+Pe,Ie+Ee])}}}return o},this.configuration.calculatePointsInsideVolume?this._throttledCalculateCachedStats=ea(this._calculateCachedStatsTool,this.configuration.throttleTimeout,{trailing:!0}):this._throttledCalculateCachedStats=$g(this._calculateCachedStatsTool,this.configuration.throttleTimeout)}_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=Ep(s,f[0]),d=Ep(s,f[0]),h=Ve();s.indexToWorldVec3(u,h);const g=Ve();s.indexToWorldVec3(d,g);const p=this._getIndexOfCoordinatesForViewplaneNormal(o);p==2?(h[2]=c,g[2]=l):p==0?(h[0]=c,g[0]=l):p==1&&(h[1]=c,g[1]=l);const v=Ve();pn(v,g,h);const y=_i(v);en(v,v);const m=[];for(let w=0;w{const C=Ve();return bn(C,x,v,w),Array.from(C)}));n.cachedStats.projectionPoints=m}_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}=Vx(s,c,h,g),y=Na(d,o.habdles),m=Math.abs(p*v)/(y.scale*y.scale),w={isPreScaled:Gu(l,r),isSuvScaled:this.isSuvScaled(l,r,e.metadata.referencedImageId)},x=Wu(a.Modality,e.metadata.referencedImageId,w);for(let E=0;E{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=De(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 hr)p=g.split("imageId:")[1];else{v=Bl(g);const x=Ue.getVolume(v);p=Pu(x,s,d)}const y=l.getFrameOfReferenceUID(),m={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:[...d],enabledElement:c,viewUp:[...h],FrameOfReferenceUID:y,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}};rn(m,a);const w=St(a,this.getToolName());return this.editData={annotation:m,viewportIdsToRender:w,handleIndex:3,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),At(a),n.preventDefault(),ke(w),m},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=ln(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 y=this.getStyle("lineWidth",l,u),m=this.getStyle("lineDash",l,u),w=this.getStyle("color",l,u);if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;cn(u,s);let x;if(!ni(d))continue;!ti(d)&&!this.editData&&p!==null&&(x=[v[p]]),x&&sr(i,d,"0",x,{color:w}),yv(i,d,"0",v[0],v[3],{color:w,lineDash:m,lineWidth:y}),o=!0}return o}}}$b.toolName="RectangleROIThreshold";function $$(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=>Zr(c,p));let d=$f(u,l);r.numSlicesToProject&&!((g=a.cachedStats)!=null&&g.projectionPoints)&&(d=v$(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 iSe(t,e,r,n){const i=t.map(s=>wr.getAnnotation(s));oSe(i);let o;for(let s=0;s{if(!Vt(f,t[0].dimensions)||!Vt(l,t[0].direction)||!Vt(d,t[0].spacing)||!Vt(u,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(l=>{const f=l.voxelManager,u=f.getScalarDataLength();for(let d=0;d0;)g(f.pop());return{flooded:u};function g(_){const E=_.currentArgs,b=_.previousArgs;p(E)||(v(E),y(E)?(m(E),x(E)):w(b))}function p(_){const[E,b,D=0]=_,I=E+32768+65536*(b+32768+65536*(D+32768));return d.has(I)}function v(_){const[E,b,D=0]=_,I=E+32768+65536*(b+32768+65536*(D+32768));d.add(I)}function y(_){const E=C(_);return o?o(E,c):E===c}function m(_){u.push(_),n&&n(..._)}function w(_){const[E,b,D=0]=_,I=E+32768+65536*(b+32768+65536*(D+32768));h==null||h.set(I,_),i&&i(..._)}function x(_){for(let E=0;E{const{segmentIndex:e,previewSegmentIndex:r,segmentationVoxelManager:n,centerIJK:i,viewPlaneNormal:o,segmentationImageData:a,configuration:s}=t;if(!(s!=null&&s.useCenterSegmentIndex))return;let c=!1,l=!1;const f=[...n.getBoundsIJK()];Math.abs(o[0])>.8?f[0]=[i[0],i[0]]:Math.abs(o[1])>.8?f[1]=[i[1],i[1]]:Math.abs(o[2])>.8&&(f[2]=[i[2],i[2]]);const u=({value:h})=>{c||(c=h===e),l||(l=h===r)};if(n.forEach(u,{imageData:a,isInObject:t.isInObject,boundsIJK:f}),!c&&!l){t.centerSegmentIndexInfo.segmentIndex=null;return}const d=n.getAtIJKPoint(i);t.centerSegmentIndexInfo.segmentIndex=d,t.centerSegmentIndexInfo.hasSegmentIndex=c,t.centerSegmentIndexInfo.hasPreviewIndex=l}},uSe={[_t.Initialize]:t=>{var y;const{operationName:e,centerIJK:r,segmentationVoxelManager:n,imageVoxelManager:i,configuration:o,segmentIndex:a,viewport:s}=t;if(!((y=o==null?void 0:o.threshold)!=null&&y.isDynamic)||!r||!a||e===_t.RejectPreview||e===_t.OnInteractionEnd)return;const c=n.getBoundsIJK(),{range:l,dynamicRadius:f=0}=o.threshold,u=l?0:f,{viewPlaneNormal:d}=s.getCamera(),h=c.map((m,w)=>{const[x,C]=m;return[Math.max(x,r[w]-u),Math.min(C,r[w]+u)]});Math.abs(d[0])>.8?h[0]=[r[0],r[0]]:Math.abs(d[1])>.8?h[1]=[r[1],r[1]]:Math.abs(d[2])>.8&&(h[2]=[r[2],r[2]]);const g=l||[1/0,-1/0],p=u*u,v=({value:m,pointIJK:w})=>{if(_T(r,w)>p)return;const C=Array.isArray(m)?sg(m):m;g[0]=Math.min(C,g[0]),g[1]=Math.max(C,g[1])};i.forEach(v,{boundsIJK:h}),o.threshold.range=g},[_t.OnInteractionStart]:t=>{var r;const{configuration:e}=t;(r=e==null?void 0:e.threshold)!=null&&r.isDynamic&&(e.threshold.range=null)},[_t.ComputeInnerCircleRadius]:t=>{const{configuration:e,viewport:r}=t,{dynamicRadius:n=0,isDynamic:i}=e.threshold;if(!i){e.threshold.dynamicRadiusInCanvas=0;return}if(n===0)return;const o=r.getImageData();if(!o)return;const{spacing:a}=o,s=[r.element.clientWidth/2,r.element.clientHeight/2],c=n*a[0],f=r.canvasToWorld(s).map(h=>h+c),u=r.worldToCanvas(f),d=Math.abs(s[0]-u[0]);e.threshold.dynamicRadiusInCanvas||(e.threshold.dynamicRadiusInCanvas=0),e.threshold.dynamicRadiusInCanvas=3+d}},fSe={[_t.Initialize]:t=>{t.segmentIndex=0}},{isEqual:R3}=Dn,CM={toIJK:t=>t,fromIJK:t=>t,type:"acquistion"},dSe={toIJK:([t,e,r])=>[r,t,e],fromIJK:([t,e,r])=>[e,r,t],type:"jk"},hSe={toIJK:([t,e,r])=>[t,r,e],fromIJK:([t,e,r])=>[t,r,e],type:"ik"};function j$(t,e){if(!(t instanceof Ir))return{...CM,boundsIJKPrime:e};const{viewPlaneNormal:r}=t.getCamera(),n=R3(Math.abs(r[0]),1)&&dSe||R3(Math.abs(r[1]),1)&&hSe||R3(Math.abs(r[2]),1)&&CM;return n?{...n,boundsIJKPrime:n.fromIJK(e)}:{toIJK:null,boundsIJKPrime:null,fromIJK:null,error:`Only mappings orthogonal to acquisition plane are permitted, but requested ${r}`}}const{RLEVoxelMap:gSe,VoxelManager:pSe}=Dn,mSe=65535;var _o;(function(t){t[t.SEGMENT=-1]="SEGMENT",t[t.ISLAND=-2]="ISLAND",t[t.INTERIOR=-3]="INTERIOR",t[t.EXTERIOR=-4]="EXTERIOR",t[t.INTERIOR_SMALL=-5]="INTERIOR_SMALL",t[t.INTERIOR_TEST=-6]="INTERIOR_TEST"})(_o||(_o={}));class d0{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,r,n){const i=!!r.sourceVoxelManager,o=i?r.sourceVoxelManager:r,a=i?r:pSe.createRLEHistoryVoxelManager(o),{segmentIndex:s=1,previewSegmentIndex:c=1}=n,l=n.points||o.getPoints();if(!(l!=null&&l.length))return;const f=o.getBoundsIJK().map((x,C)=>[Math.min(x[0],...l.map(S=>S[C])),Math.max(x[1],...l.map(S=>S[C]))]);if(f.find(x=>x[0]<0||x[1]>mSe))return;const{toIJK:u,fromIJK:d,boundsIJKPrime:h,error:g}=j$(e,f);if(g){console.warn("Not performing island removal for planes not orthogonal to acquisition plane",g);return}const[p,v,y]=d(o.dimensions),m=new gSe(p,v,y),w=(x,C,S)=>{const T=o.toIndex(u([x,C,S])),_=o.getAtIndex(T);if(_===c||_===s)return _o.SEGMENT};return m.fillFrom(w,h),m.normalizer={toIJK:u,fromIJK:d,boundsIJKPrime:h},this.segmentSet=m,this.previewVoxelManager=a,this.segmentIndex=s,this.previewSegmentIndex=c??s,this.selectedPoints=l,!0}floodFillSegmentIsland(){const{selectedPoints:e,segmentSet:r}=this;let n=0;const{fromIJK:i}=r.normalizer;return e.forEach(o=>{const a=i(o),s=r.toIndex(a),[c,l,f]=a;r.get(s)===_o.SEGMENT&&(n+=r.floodFill(c,l,f,_o.ISLAND))}),n}removeExternalIslands(){const{previewVoxelManager:e,segmentSet:r}=this,{toIJK:n}=r.normalizer,i=(o,a)=>{const[,s,c]=r.toIJK(o);if(a.value!==_o.ISLAND)for(let l=a.start;l{let f;for(const u of[...l])if(u.value===_o.ISLAND){if(!f){if(this.fillInternalEdge&&u.start>0)for(let d=0;d{if(l.value!==_o.INTERIOR)return;const[,f,u]=e.toIJK(c),d=f>0?e.getRun(f-1,u):null,h=f+12&&(!v||!y)&&e.floodFill(l.start,f,u,_o.EXTERIOR,{singlePlane:!0})}),e.forEach((c,l)=>{if(l.value!==_o.INTERIOR)return;const[,f,u]=e.toIJK(c),g=e.floodFill(l.start,f,u,_o.INTERIOR_TEST)>this.maxInternalRemove?_o.EXTERIOR:_o.INTERIOR_SMALL;e.floodFill(l.start,f,u,g)}),e.forEach((c,l)=>{if(l.value===_o.INTERIOR_SMALL)for(let f=l.start;f=o.start&&n=i))return!0;return!1}}const vSe={[_t.OnInteractionEnd]:t=>{const{previewSegmentIndex:e,segmentIndex:r,viewport:n,segmentationVoxelManager:i,activeStrategy:o,memo:a}=t;if(o!=="THRESHOLD_INSIDE_SPHERE_WITH_ISLAND_REMOVAL"||r===null)return;const s=new d0,c=(a==null?void 0:a.voxelManager)||i;if(!s.initialize(n,c,{previewSegmentIndex:e,segmentIndex:r}))return;s.floodFillSegmentIsland(),s.removeExternalIslands(),s.removeInternalIslands();const l=c.getArrayOfModifiedSlices();l&&Ro(t.segmentationId,l,e)}},ySe={[_t.Preview]:function(t){var o,a;const{previewSegmentIndex:e,configuration:r,enabledElement:n}=t;if(!e||!r)return;(o=this.onInteractionStart)==null||o.call(this,n,t);const i=this.fill(n,t);return i&&((a=this.onInteractionEnd)==null||a.call(this,n,t)),i},[_t.Initialize]:t=>{const{segmentIndex:e,previewColor:r,previewSegmentIndex:n}=t;if(t.modified=!1,n==null||e==null)return;const i=_0(t.segmentationId);i==null||i.forEach(o=>{TW(o,t.segmentationId,n,r)}),t.modified=!0},[_t.AcceptPreview]:t=>{const{previewSegmentIndex:e,segmentationVoxelManager:r,memo:n,segmentIndex:i,centerSegmentIndexInfo:o}=t||{},{changedIndices:a}=o||{},s=n,c=({index:l})=>{const f=r.getAtIndex(l);(a==null?void 0:a.length)>0?a.includes(l)&&s.voxelManager.setAtIndex(l,0):f===e&&s.voxelManager.setAtIndex(l,i)};r.forEach(c),Ro(t.segmentationId,r.getArrayOfModifiedSlices(),i),t.centerSegmentIndexInfo.changedIndices=[]},[_t.RejectPreview]:t=>{t&&CU.undoIf(e=>{const r=e;if(!(r!=null&&r.voxelManager))return!1;const{segmentationVoxelManager:n}=r;let i=!1;const o=({value:a})=>{a===t.previewSegmentIndex&&(i=!0)};return n.forEach(o),i})}},wSe={[_t.Fill]:t=>{var l;const{segmentsLocked:e,segmentationImageData:r,segmentationVoxelManager:n,brushStrategy:i,centerIJK:o}=t,a=(l=i.createIsInThreshold)==null?void 0:l.call(i,t),{setValue:s}=i,c=a?f=>{const{value:u,index:d}=f;e.includes(u)||!a(d)||s(t,f)}:f=>s(t,f);n.forEach(c,{imageData:r,isInObject:t.isInObject,boundsIJK:t.isInObjectBoundsIJK}),n.addPoint(o)}};function xSe({operationData:t,existingValue:e,index:r}){const{previewSegmentIndex:n,memo:i,centerSegmentIndexInfo:o,previewOnHover:a,segmentIndex:s}=t,{hasPreviewIndex:c,hasSegmentIndex:l,segmentIndex:f}=o;if(f===0&&l&&c){if(e===s||a)return;if(e===n){i.voxelManager.setAtIndex(r,0);return}return}if(f===0&&l&&!c){if(e===0||e!==s)return;i.voxelManager.setAtIndex(r,n),o.changedIndices.push(r);return}if(f===0&&!l&&c){if(e===s||a)return;if(e===n){i.voxelManager.setAtIndex(r,0);return}return}if(f===0&&!l&&!c){if(e===s)return;if(e===n){i.voxelManager.setAtIndex(r,n);return}return}if(f===n&&l&&c){if(e===s)return;i.voxelManager.setAtIndex(r,n);return}if(f===n&&!l&&c){if(e===s)return;i.voxelManager.setAtIndex(r,n);return}if(f===s&&l&&c){if(e===s)return;i.voxelManager.setAtIndex(r,n);return}if(f===s&&l&&!c){if(e===s)return;i.voxelManager.setAtIndex(r,n);return}}const CSe={[_t.INTERNAL_setValue]:(t,{value:e,index:r})=>{const{segmentsLocked:n,previewSegmentIndex:i,memo:o,segmentationVoxelManager:a,centerSegmentIndexInfo:s,segmentIndex:c}=t,l=a.getAtIndex(r);if(!n.includes(e)&&!(!s&&l===c)&&!((s==null?void 0:s.segmentIndex)!==0&&l===c)){if((s==null?void 0:s.segmentIndex)===null){o.voxelManager.setAtIndex(r,i??c);return}if(!i){let f=c;s&&(f=s.segmentIndex),o.voxelManager.setAtIndex(r,f);return}xSe({operationData:t,existingValue:l,index:r})}}},SSe={[_t.CreateIsInThreshold]:t=>{const{imageVoxelManager:e,segmentIndex:r,configuration:n}=t;if(!(!n||!r))return i=>{var c;const o=e.getAtIndex(i),a=Array.isArray(o)?_i(o):o,{threshold:s}=n||{};return(c=s==null?void 0:s.range)!=null&&c.length?s.range[0]<=a&&a<=s.range[1]:!0}}},SM=10;function gw(){return{maxIJKs:[]}}function H$(t,e){const{value:r}=e,{maxIJKs:n}=t,i=n.length;if(typeof r!="number"||i>=SM&&r=n[i-1].value)n.push(o);else for(let a=0;a=SM&&n.splice(0,1)}function K$(t,e,r){const{spacing:n,calibration:i}=r,{volumeUnit:o}=Na({calibration:i,hasPixelSpacing:!0},[]),a=n?n[0]*n[1]*n[2]:1;return e.volume={value:Array.isArray(e.count.value)?e.count.value.map(s=>s*a):e.count.value*a,unit:o,name:"volume",label:"Volume"},e.maxIJKs=t.maxIJKs.filter(s=>s.pointIJK!==void 0),e.array.push(e.volume),t.maxIJKs=[],e}const _D=class _D extends Al{static statsInit(e){super.statsInit(e),this.volumetricState=gw()}static statsCallback(e){super.statsCallback(e),H$(this.volumetricState,e)}static getStatistics(e){const r={...e,unit:(e==null?void 0:e.unit)||"none",calibration:e==null?void 0:e.calibration,hasPixelSpacing:e==null?void 0:e.hasPixelSpacing},n=super.getStatistics(r);return K$(this.volumetricState,n,r)}};_D.volumetricState=gw();let qd=_D;class TM extends VG{constructor(e){super(e),this.volumetricState=gw()}statsInit(e){super.statsInit(e),this.volumetricState=gw()}statsCallback(e){super.statsCallback(e),H$(this.volumetricState,e)}getStatistics(e){const r={...e,unit:(e==null?void 0:e.unit)||"none",calibration:e==null?void 0:e.calibration,hasPixelSpacing:e==null?void 0:e.hasPixelSpacing},n=super.getStatistics(r);return K$(this.volumetricState,n,r)}}const TSe=Math.pow(3*1e3/(4*Math.PI),1/3);async function X$({segmentationId:t,segmentIndices:e,mode:r="collective"}){$x(),kl(Ac.COMPUTE_STATISTICS,0);const n=k$(t,e);if(!n)return;const{operationData:i,segVolumeId:o,segImageIds:a,reconstructableVolume:s,indices:c}=n,{refImageId:l,modalityUnitOptions:f}=X3e(o,a),u=bW(l,f);return s?await _Se({operationData:i,indices:c,unit:u,mode:r}):await ESe({segImageIds:a,indices:c,unit:u,mode:r})}async function _Se({operationData:t,indices:e,unit:r,mode:n}){var p;const i=V$(t),{segmentationVoxelManager:o,imageVoxelManager:a,segmentationImageData:s,imageData:c}=i;if(!o||!s)return;const l=s.getSpacing(),{boundsIJK:f}=o;if(!f)return qd.getStatistics({spacing:l});const d={scalarData:o.getCompleteScalarDataArray(),dimensions:s.getDimensions(),spacing:s.getSpacing(),origin:s.getOrigin(),direction:s.getDirection()},h={scalarData:a.getCompleteScalarDataArray(),dimensions:c.getDimensions(),spacing:c.getSpacing(),origin:c.getOrigin(),direction:c.getDirection()};if(!((p=h.scalarData)!=null&&p.length))return;const g=await Fl().executeTask("compute","calculateSegmentsStatisticsVolume",{segmentationInfo:d,imageInfo:h,indices:e,unit:r,mode:n});if(kl(Ac.COMPUTE_STATISTICS,100),n==="collective")return pw({stats:g,unit:r,spacing:l,segmentationImageData:s,imageVoxelManager:a});{const v={};return Object.entries(g).forEach(([y,m])=>{v[y]=pw({stats:m,unit:r,spacing:l,segmentationImageData:s,imageVoxelManager:a})}),v}}const A3=(t,e)=>{if(!t.array)return;const r=t.array.findIndex(n=>n.name===e.name);r!==-1?t.array[r]=e:t.array.push(e)},pw=({stats:t,unit:e,spacing:r,segmentationImageData:n,imageVoxelManager:i})=>{if(t.mean.unit=e,t.max.unit=e,t.min.unit=e,e!=="SUV")return t;const o=r.map(a=>Math.max(1,Math.round(1.1*TSe/a)));for(const a of t.maxIJKs){const s=bSe(a,o,n,i,r);if(!s)continue;const{mean:c}=s;(!t.peakValue||t.peakValue.value<=c.value)&&(t.peakValue={name:"peakValue",label:"Peak Value",value:c.value,unit:e},t.peakPoint={name:"peakLPS",label:"Peak SUV Point",value:a.pointLPS?[...a.pointLPS]:null,unit:null},A3(t,t.peakValue),A3(t,t.peakPoint))}if(t.volume&&t.mean){const a=t.volume.value,s=t.mean.value;t.lesionGlycolysis={name:"lesionGlycolysis",label:"Lesion Glycolysis",value:a*s,unit:`${t.volume.unit}·${e}`},A3(t,t.lesionGlycolysis)}return t};async function ESe({segImageIds:t,indices:e,unit:r,mode:n}){kl(Ac.COMPUTE_STATISTICS,0);const{segmentationInfo:i,imageInfo:o}=F$(t),a=await Fl().executeTask("compute","calculateSegmentsStatisticsStack",{segmentationInfo:i,imageInfo:o,indices:e,mode:n});kl(Ac.COMPUTE_STATISTICS,100);const s=i[0].spacing,c=i[0],l=o[0].voxelManager;if(n==="collective")return pw({stats:a,unit:r,spacing:s,segmentationImageData:c,imageVoxelManager:l});{const f={};return Object.entries(a).forEach(([u,d])=>{f[u]=pw({stats:d,unit:r,spacing:s,segmentationImageData:c,imageVoxelManager:l})}),f}}function bSe(t,e,r,n,i){const{pointIJK:o,pointLPS:a}=t;if(!o)return;const s=o.map((f,u)=>[f-e[u],f+e[u]]),c=(f,u)=>{const d=(u[0]-o[0])/e[0],h=(u[1]-o[1])/e[1],g=(u[2]-o[2])/e[2];return d*d+h*h+g*g<=1},l=({pointIJK:f,pointLPS:u})=>{const d=n.getAtIJKPoint(f);d!==void 0&&qd.statsCallback({value:d,pointLPS:u,pointIJK:f})};return qd.statsInit({storePointData:!1}),Y4(r,{pointInShapeFn:c,callback:l,boundsIJK:s}),qd.getStatistics({spacing:i})}const DSe={[_t.GetStatistics]:function(t,e,r){const{indices:n}=r,{segmentationId:i,viewport:o}=e;X$({segmentationId:i,segmentIndices:n})}},Cn={determineSegmentIndex:lSe,dynamicThreshold:uSe,erase:fSe,islandRemoval:vSe,preview:ySe,regionFill:wSe,setValue:CSe,threshold:SSe,labelmapStatistics:DSe,ensureSegmentationVolumeFor3DManipulation:L$,ensureImageVolumeFor3DManipulation:N$},Id=class Id{constructor(e,...r){this._initialize=[],this._fill=[],this._onInteractionStart=[],this.fill=(n,i)=>{const o=this.initialize(n,i,_t.Fill);if(!o)return;this._fill.forEach(c=>c(o));const{segmentationVoxelManager:a,segmentIndex:s}=o;return Ro(o.segmentationId,a.getArrayOfModifiedSlices(),s),o},this.onInteractionStart=(n,i)=>{const o=this.initialize(n,i);o&&this._onInteractionStart.forEach(a=>a.call(this,o))},this.addPreview=(n,i)=>{const o=this.initialize(n,i,_t.AddPreview);if(o)return o},this.configurationName=e,this.compositions=r,r.forEach(n=>{const i=typeof n=="function"?n():n;if(i)for(const o in i){if(!Id.childFunctions[o])throw new Error(`Didn't find ${o} as a brush strategy`);Id.childFunctions[o](this,i[o])}}),this.strategyFunction=(n,i)=>this.fill(n,i);for(const n of Object.keys(Id.childFunctions))this.strategyFunction[n]=this[n]}initialize(e,r,n){const{viewport:i}=e,o=Gb({operationData:r,viewport:i,strategy:this});if(!o)return null;const{imageVoxelManager:a,segmentationVoxelManager:s,segmentationImageData:c}=o,l=r.createMemo(r.segmentationId,s),f={operationName:n,...r,segmentIndex:r.segmentIndex,enabledElement:e,imageVoxelManager:a,segmentationVoxelManager:s,segmentationImageData:c,viewport:i,centerWorld:null,isInObject:null,isInObjectBoundsIJK:null,brushStrategy:this,memo:l};return this._initialize.forEach(u=>u(f)),f}};Id.COMPOSITIONS=Cn,Id.childFunctions={[_t.OnInteractionStart]:sc(_t.OnInteractionStart,_t.Initialize),[_t.OnInteractionEnd]:sc(_t.OnInteractionEnd,_t.Initialize),[_t.Fill]:sc(_t.Fill),[_t.Initialize]:sc(_t.Initialize),[_t.CreateIsInThreshold]:k2(_t.CreateIsInThreshold),[_t.Interpolate]:sc(_t.Interpolate,_t.Initialize),[_t.AcceptPreview]:sc(_t.AcceptPreview,_t.Initialize),[_t.RejectPreview]:sc(_t.RejectPreview,_t.Initialize),[_t.INTERNAL_setValue]:k2(_t.INTERNAL_setValue),[_t.Preview]:k2(_t.Preview,!1),[_t.ComputeInnerCircleRadius]:sc(_t.ComputeInnerCircleRadius),[_t.EnsureSegmentationVolumeFor3DManipulation]:sc(_t.EnsureSegmentationVolumeFor3DManipulation),[_t.EnsureImageVolumeFor3DManipulation]:sc(_t.EnsureImageVolumeFor3DManipulation),[_t.AddPreview]:sc(_t.AddPreview),[_t.GetStatistics]:k2(_t.GetStatistics),compositions:null};let Nc=Id;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,...s)=>{const c=n[e](o,a,t);let l;return n[r].forEach(f=>{const u=f.call(n,c,...s);l||(l=u)}),l}:(o,...a)=>{n[r].forEach(s=>s.call(n,o,...a))})}}function k2(t,e=!0){return(r,n)=>{if(r[t])throw new Error(`The singleton method ${t} already exists`);r[t]=e?n:(i,o,...a)=>(o.enabledElement=i,n.call(r,o,...a))}}function q$(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:_M,isEqual:ISe}=Dn;function Y$(t){const[e,r,n,i]=t,o=[n[0],r[1]],a=[i[0],e[1]],s=[n[0],e[1]],c=[i[0],r[1]];return[o,a,s,c]}const J$={[_t.Initialize]:t=>{const{points:e,viewport:r,segmentationImageData:n}=t;if(!e)return;const i=Ve();e.length>=2?(Kr(i,e[0],e[1]),Er(i,i,.5)):E4(i,e[0]),t.centerWorld=i,t.centerIJK=_M(n,i);const o=e.map(f=>r.worldToCanvas(f)),s=Y$(o).map(f=>r.canvasToWorld(f)),c=e.map(f=>_M(n,f)),l=$f(c,n.getDimensions());t.isInObject=Z$(s),t.isInObjectBoundsIJK=l}};function Z$(t=[]){if(!t||t.length!==4)throw new Error("createPointInEllipse: cornersInWorld must have 4 points");const[e,r,n,i]=t,o=Ve();Kr(o,e,r),Er(o,o,.5);const a=Ve();pn(a,i,e);const s=_i(a)/2;en(a,a);const c=Ve();pn(c,n,e);const l=_i(c)/2;en(c,c);const f=Ve();if(mn(f,a,c),en(f,f),ISe(s,l)){const u=s,d={center:o,radius:u,radius2:u*u};return h=>q$(d,h)}return u=>{const d=Ve();pn(d,u,o);const h=pt(d,f),g=Ve();bn(g,d,f,-h);const p=Ve(),v=Ve();pn(v,o,e),pn(p,g,v);const y=pt(p,a),m=pt(p,c);return y*y/(s*s)+m*m/(l*l)<=1}}const Q$=new Nc("Circle",Cn.regionFill,Cn.setValue,J$,Cn.determineSegmentIndex,Cn.preview,Cn.labelmapStatistics),MSe=new Nc("CircleThreshold",Cn.regionFill,Cn.setValue,J$,Cn.determineSegmentIndex,Cn.dynamicThreshold,Cn.threshold,Cn.preview,Cn.islandRemoval,Cn.labelmapStatistics),Hx=Q$.strategyFunction,OSe=MSe.strategyFunction;function PSe(){throw new Error("Not yet implemented")}const{transformWorldToIndex:RSe}=Dn,ASe={[_t.Initialize]:t=>{const{points:e,viewport:r,segmentationImageData:n}=t;if(!e)return;const i=Ve();e.length>=2?(Kr(i,e[0],e[1]),Er(i,i,.5)):E4(i,e[0]),t.centerWorld=i,t.centerIJK=RSe(n,i);const{boundsIJK:o}=x3e(e.slice(0,2),n,r),a=e.map(l=>r.worldToCanvas(l)),c=Y$(a).map(l=>r.canvasToWorld(l));t.isInObjectBoundsIJK=o,t.isInObject=Z$(c)}},Kx=new Nc("Sphere",Cn.regionFill,Cn.setValue,ASe,Cn.determineSegmentIndex,Cn.preview,Cn.labelmapStatistics,Cn.ensureSegmentationVolumeFor3DManipulation),ez=Kx.strategyFunction,LSe=new Nc("SphereThreshold",...Kx.compositions,Cn.dynamicThreshold,Cn.threshold,Cn.ensureSegmentationVolumeFor3DManipulation,Cn.ensureImageVolumeFor3DManipulation),NSe=new Nc("SphereThreshold",...Kx.compositions,Cn.dynamicThreshold,Cn.threshold,Cn.islandRemoval,Cn.ensureSegmentationVolumeFor3DManipulation,Cn.ensureImageVolumeFor3DManipulation),kSe=LSe.strategyFunction,VSe=NSe.strategyFunction,FSe=new Nc("EraseSphere",Cn.erase,...Kx.compositions),tz=FSe.strategyFunction,USe=new Nc("EraseCircle",Cn.erase,...Q$.compositions),nz=USe.strategyFunction,{VoxelManager:m_,RLEVoxelMap:BSe}=Dn;function v_(t,e){return iz(t,e)}function rz(t){const{segmentationVoxelManager:e,undoVoxelManager:r,redoVoxelManager:n}=this,i=t===!1?n:r;i.forEach(({value:a,pointIJK:s})=>{e.setAtIJKPoint(s,a)});const o=i.getArrayOfModifiedSlices();Ro(this.segmentationId,o)}function iz(t,e){const r=m_.createRLEHistoryVoxelManager(e);return{segmentationId:t,restoreMemo:rz,commitMemo:GSe,segmentationVoxelManager:e,voxelManager:r,id:Pn(),operationType:"labelmap"}}function GSe(){if(this.redoVoxelManager)return!0;if(!this.voxelManager.modifiedSlices.size)return!1;const{segmentationVoxelManager:t}=this,e=m_.createRLEHistoryVoxelManager(t);BSe.copyMap(e.map,this.voxelManager.map);for(const n of this.voxelManager.modifiedSlices.keys())e.modifiedSlices.add(n);this.undoVoxelManager=e;const r=m_.createRLEVolumeVoxelManager({dimensions:this.segmentationVoxelManager.dimensions});return this.redoVoxelManager=r,e.forEach(({index:n,pointIJK:i,value:o})=>{const a=t.getAtIJKPoint(i);a!==o&&r.setAtIndex(n,a)}),!0}const WSe=Object.freeze(Object.defineProperty({__proto__:null,createLabelmapMemo:v_,createRleMemo:iz,restoreMemo:rz},Symbol.toStringTag,{value:"Module"})),{transformWorldToIndex:oz}=Dn,az={[_t.Initialize]:t=>{const{points:e,viewport:r,segmentationImageData:n}=t;if(!e)return;const i=Et(0,0,0);e.forEach(s=>{Kr(i,i,s)}),Er(i,i,1/e.length),t.centerWorld=i,t.centerIJK=oz(n,i);const{boundsIJK:o,pointInShapeFn:a}=$Se(r,e,n);t.isInObject=a,t.isInObjectBoundsIJK=o}};function $Se(t,e,r){let n=e.map(w=>oz(r,w));n=n.map(w=>w.map(x=>Math.round(x)));const i=$f(n,r.getDimensions()),[o,a,s,c]=e,l=Ve(),f=Ve();pn(l,a,o),pn(f,c,o);const u=_i(l),d=_i(f);en(l,l),en(f,f);const h=Ve();mn(h,l,f),en(h,h);const g=r.getDirection(),p=r.getSpacing(),{viewPlaneNormal:v}=t.getCamera(),y=Jf({direction:g,spacing:p},v);return{boundsIJK:i,pointInShapeFn:w=>{const x=Ve();pn(x,w,o);const C=pt(x,l),S=pt(x,f),T=Math.abs(pt(x,h));return C>=-y&&C<=u+y&&S>=-y&&S<=d+y&&T<=y}}}const zSe=new Nc("Rectangle",Cn.regionFill,Cn.setValue,az,Cn.determineSegmentIndex,Cn.preview,Cn.labelmapStatistics),jSe=new Nc("RectangleThreshold",Cn.regionFill,Cn.setValue,az,Cn.determineSegmentIndex,Cn.dynamicThreshold,Cn.threshold,Cn.preview,Cn.islandRemoval,Cn.labelmapStatistics),jb=zSe.strategyFunction,HSe=jSe.strategyFunction,KSe=Object.freeze(Object.defineProperty({__proto__:null,fillInsideCircle:Hx,fillInsideRectangle:jb,fillOutsideCircle:PSe,thresholdInsideRectangle:HSe},Symbol.toStringTag,{value:"Module"})),b1=class b1 extends mi{constructor(e,r){super(e,r),this.memoMap=new Map,this.acceptedMemoIds=new Map,this.centerSegmentIndexInfo={segmentIndex:null,hasSegmentIndex:!1,hasPreviewIndex:!1,changedIndices:[]}}_historyRedoHandler(e){const{id:r,operationType:n}=e.detail;if(n==="labelmap"){if(this.acceptedMemoIds.has(r)){this._hoverData=null;const i=this.acceptedMemoIds.get(r),o=i==null?void 0:i.element,a=this.getOperationData(o);a.segmentIndex=i==null?void 0:i.segmentIndex,o&&this.applyActiveStrategyCallback(De(o),a,_t.AcceptPreview)}this._previewData.isDrag=!0}}get _previewData(){return b1.previewData}hasPreviewData(){return!!this._previewData.preview}shouldResolvePreviewRequests(){return(this.mode==="Active"||this.mode==="Enabled")&&this.hasPreviewData()}createMemo(e,r){const n=r.id;if(this.memo&&this.memo.segmentationVoxelManager===r)return this.memo;let i=this.memoMap.get(n);return i?i.redoVoxelManager&&(i=v_(e,r),this.memoMap.set(n,i)):(i=v_(e,r),this.memoMap.set(n,i)),this.memo=i,i}createEditData(e){const r=De(e),{viewport:n}=r,i=u0(n.id);if(!i){const l=new CustomEvent(qe.ERROR_EVENT,{detail:{type:"Segmentation",message:"No active segmentation detected, create a segmentation representation before using the brush tool"},cancelable:!0});return ze.dispatchEvent(l),null}const{segmentationId:o}=i,a=b0(o),{representationData:s}=an(o);return this.getEditData({viewport:n,representationData:s,segmentsLocked:a,segmentationId:o})}getEditData({viewport:e,representationData:r,segmentsLocked:n,segmentationId:i}){var o,a,s;if(e instanceof Ir){const{volumeId:c}=r[Pt.Labelmap],l=e.getActors();if(e instanceof hr){const g=new CustomEvent(qe.ERROR_EVENT,{detail:{type:"Segmentation",message:"Cannot perform brush operation on the selected viewport"},cancelable:!0});return ze.dispatchEvent(g),null}const u=l.map(g=>Ue.getVolume(g.referencedId)),d=Ue.getVolume(c),h=((o=u.find(g=>Vt(g.dimensions,d.dimensions)))==null?void 0:o.volumeId)||((a=u[0])==null?void 0:a.volumeId);return{volumeId:c,referencedVolumeId:((s=this.configuration.threshold)==null?void 0:s.volumeId)??h,segmentsLocked:n}}else{const c=ed(e.id,i);return c?{imageId:c,segmentsLocked:n}:void 0}}createHoverData(e,r){const n=De(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=u0(r);if(!n)return;const{segmentationId:i}=n,o=pa(i);if(!o)return;const a=Ll(r,i,o);return{segmentIndex:o,segmentationId:i,segmentColor:a}}getOperationData(e){var v,y,m,w;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,f=(y=(v=this.configuration.preview)==null?void 0:v.previewColors)==null?void 0:y[n],{viewport:u}=De(e),d=Ll(u.id,i,n);if(!f&&!d)return;let h=null,g=null;return(m=this.configuration.preview)!=null&&m.enabled&&(h=f||XSe(...d),g=255),{...r,points:(w=a==null?void 0:a.handles)==null?void 0:w.points,segmentIndex:n,viewPlaneNormal:c,previewOnHover:!this._previewData.isDrag,toolGroupId:this.toolGroupId,segmentationId:i,viewUp:l,centerSegmentIndexInfo:this.centerSegmentIndexInfo,activeStrategy:this.configuration.activeStrategy,configuration:this.configuration,previewColor:h,previewSegmentIndex:g,createMemo:this.createMemo.bind(this)}}addPreview(e=this._previewData.element,r){const{_previewData:n}=this,i=r==null?void 0:r.acceptReject;i===!0?this.acceptPreview(e):i===!1&&this.rejectPreview(e);const o=De(e),a=this.applyActiveStrategyCallback(o,this.getOperationData(e),_t.AddPreview);return n.isDrag=!0,a!=null&&a.modified&&(n.preview=a,n.element=e),a}rejectPreview(e=this._previewData.element){if(!e)return;this.doneEditMemo();const r=De(e);this.applyActiveStrategyCallback(r,this.getOperationData(e),_t.RejectPreview),this._previewData.preview=null,this._previewData.isDrag=!1}acceptPreview(e=this._previewData.element){if(!e)return;const r=this.getOperationData(e);this.memo&&this.memo.id&&this.acceptedMemoIds.set(this.memo.id,{element:e,segmentIndex:r.segmentIndex});const n=De(e);this.applyActiveStrategyCallback(n,r,_t.AcceptPreview),this.doneEditMemo(),this._previewData.preview=null,this._previewData.isDrag=!1}static viewportContoursToLabelmap(e,r){var v;const n=(r==null?void 0:r.removeContours)??!0,i=uv(),o=Cv(e,i);if(!(o!=null&&o.length))return;const a=o.filter(y=>{var m,w;return(w=(m=y.data.contour)==null?void 0:m.polyline)==null?void 0:w.length});if(!a.length)return;const c=new b1({},{configuration:{strategies:{FILL_INSIDE_CIRCLE:Hx},activeStrategy:"FILL_INSIDE_CIRCLE"}}).addPreview(e.element),{memo:l,segmentationId:f}=c,u=l==null?void 0:l.voxelManager,d=u.sourceVoxelManager||u,{dimensions:h}=u,g=e.getDefaultActor().actor.getMapper().getInputData();for(const y of a){const m=[[1/0,-1/0],[1/0,-1/0],[1/0,-1/0]],{polyline:w}=y.data.contour;for(const I of w)g.worldToIndex(I).forEach((M,L)=>{m[L][0]=Math.min(m[L][0],M),m[L][1]=Math.max(m[L][1],M)});m.forEach((I,P)=>{I[0]=Math.round(Math.max(0,I[0])),I[1]=Math.round(Math.min(h[P]-1,I[1]))});const x=pa(f),C=((v=y.data.handles)==null?void 0:v[0])||w[0],S=g.worldToIndex(C).map(Math.round),T=d.getAtIJKPoint(S)||0;let _=!1,E=!1;for(const I of w){const P=g.worldToIndex(I).map(Math.round),M=d.getAtIJKPoint(P);M===T?_=!0:M>=0&&(E=!0)}const D=_&&E?T:T===0?x:0;for(let I=m[0][0];I<=m[0][1];I++)for(let P=m[1][0];P<=m[1][1];P++)for(let M=m[2][0];M<=m[2][1];M++){const L=g.indexToWorld([I,P,M]);pb(L,w)&&u.setAtIJK(I,P,M,D)}n&&nn(y.annotationUID)}const p=u.getArrayOfModifiedSlices();Ro(f,p)}};b1.previewData={preview:null,element:null,timerStart:0,timer:null,startPoint:[NaN,NaN],isDrag:!1};let h0=b1;function XSe(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]}class Xx extends h0{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE_CIRCLE:Hx,ERASE_INSIDE_CIRCLE:nz,FILL_INSIDE_SPHERE:ez,ERASE_INSIDE_SPHERE:tz,THRESHOLD_INSIDE_CIRCLE:OSe,THRESHOLD_INSIDE_SPHERE:kSe,THRESHOLD_INSIDE_SPHERE_WITH_ISLAND_REMOVAL:VSe},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:{[_t.AcceptPreview]:{method:_t.AcceptPreview,bindings:[{key:"Enter"}]},[_t.RejectPreview]:{method:_t.RejectPreview,bindings:[{key:"Escape"}]},[_t.Interpolate]:{method:_t.Interpolate,bindings:[{key:"i"}],configuration:{useBallStructuringElement:!0,noUseDistanceTransform:!0,noUseExtrapolation:!0}},interpolateExtrapolation:{method:_t.Interpolate,bindings:[{key:"e"}],configuration:{}}}}}){super(e,r),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=De(o);this._editData=this.createEditData(o),this._activateDraw(o),At(o),n.preventDefault(),this._previewData.isDrag=!1,this._previewData.timerStart=Date.now();const s=this._hoverData||this.createHoverData(o);ke(s.viewportIdsToRender);const c=this.getOperationData(o);return this.applyActiveStrategyCallback(a,c,_t.OnInteractionStart),!0},this.mouseMoveCallback=n=>{if(this.mode===Fn.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,{startPoint:f,timer:u,timerStart:d,isDrag:h}=this._previewData;if(h)return;const g=dr(l,f),p=Date.now()-d;if((g>o||p>i&&g>a)&&(u&&(window.clearTimeout(u),this._previewData.timer=null),h||this.rejectPreview(c)),!this._previewData.timer){const v=window.setTimeout(this.previewCallback,250);Object.assign(this._previewData,{timerStart:Date.now(),timer:v,startPoint:l,element:c})}}},this.previewCallback=()=>{if(this._previewData.isDrag){this._previewData.timer=null;return}this._previewData.timer=null;const n=this.getOperationData(this._previewData.element),i=De(this._previewData.element);if(!i)return;const{viewport:o}=i,a=this.configuration.activeStrategy,s=Gb({operationData:n,viewport:o,strategy:a});if(!n)return;const c=this.createMemo(n.segmentationId,s.segmentationVoxelManager);this._previewData.preview=this.applyActiveStrategyCallback(De(this._previewData.element),{...n,...s,memo:c},_t.Preview)},this._dragCallback=n=>{const i=n.detail,{element:o,currentPoints:a}=i,s=De(o);this.updateCursor(n);const{viewportIdsToRender:c}=this._hoverData;ke(c);const l=dr(a.canvas,this._previewData.startPoint),{dragTimeMs:f,dragMoveDistance:u}=this.configuration.preview;!this._previewData.isDrag&&Date.now()-this._previewData.timerStart{const i=n.detail,{element:o}=i,a=De(o),s=this.getOperationData(o);!this._previewData.preview&&!this._previewData.isDrag&&this.applyActiveStrategy(a,s),this.doneEditMemo(),this._deactivateDraw(o),Yt(o),this.updateCursor(n),this._editData=null,this.applyActiveStrategyCallback(a,s,_t.OnInteractionEnd),this._previewData.isDrag||this.acceptPreview(o)},this._activateDraw=n=>{n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback)},this._deactivateDraw=n=>{n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback)}}disableCursor(){this._hoverData=void 0,this.rejectPreview()}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&&ke(this._hoverData.viewportIdsToRender)}_calculateCursor(e,r){const n=De(e),{viewport:i}=n,{canvasToWorld:o}=i,a=i.getCamera(),{brushSize:s}=this.configuration,c=Et(a.viewUp[0],a.viewUp[1],a.viewUp[2]),l=Et(a.viewPlaneNormal[0],a.viewPlaneNormal[1],a.viewPlaneNormal[2]),f=Ve();mn(f,c,l);const u=o([r[0],r[1]]),d=Ve(),h=Ve(),g=Ve(),p=Ve();for(let x=0;x<=2;x++)d[x]=u[x]-c[x]*s,h[x]=u[x]+c[x]*s,g[x]=u[x]-f[x]*s,p[x]=u[x]+f[x]*s;if(!this._hoverData)return;const{brushCursor:v}=this._hoverData,{data:y}=v;y.handles===void 0&&(y.handles={}),y.handles.points=[d,h,g,p];const m=this.configuration.activeStrategy,w=this.configuration.strategies[m];typeof(w==null?void 0:w.computeInnerCircleRadius)=="function"&&w.computeInnerCircleRadius({configuration:this.configuration,viewport:i}),y.invalidated=!1}getStatistics(e,r){if(!e)return;const n=De(e);return this.applyActiveStrategyCallback(n,this.getOperationData(e),_t.GetStatistics,r)}rejectPreview(e=this._previewData.element){if(!e)return;this.doneEditMemo();const r=De(e);r&&(this.applyActiveStrategyCallback(r,this.getOperationData(e),_t.RejectPreview),this._previewData.preview=null,this._previewData.isDrag=!1)}acceptPreview(e=this._previewData.element){e&&super.acceptPreview(e)}interpolate(e,r){if(!e)return;const n=De(e);this._previewData.preview=this.applyActiveStrategyCallback(n,this.getOperationData(e),_t.Interpolate,r.configuration),this._previewData.isDrag=!0}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 m,w;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:x}=this._hoverData,{element:C}=n;this._calculateCursor(C,x)}const a=o.metadata;if(!a)return;const s=a.brushCursorUID,c=o.data,{points:l}=c.handles,f=l.map(x=>n.worldToCanvas(x)),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(${((m=a.segmentColor)==null?void 0:m.slice(0,3))||[0,0,0]})`;if(!n.getRenderingEngine()){console.warn("Rendering Engine has been destroyed");return}Zo(r,s,"0",h,g,{color:p,lineDash:this.centerSegmentIndexInfo.segmentIndex===0?[1,2]:null});const{dynamicRadiusInCanvas:y}=((w=this.configuration)==null?void 0:w.threshold)||{dynamicRadiusInCanvas:0};y&&Zo(r,s,"1",h,y,{color:p})}}Xx.toolName="Brush";function Zg(t,e){const r=kr(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 Xx):[]}function qSe(t,e,r){const n=kr(t);if(n===void 0)return;Zg(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();ir(s),ke(c)}function YSe(t,e){const r=kr(t);if(r===void 0)return;const n=r._toolInstances;if(!Object.keys(n).length)return;const o=Zg(t,e)[0];if(o)return o.configuration.brushSize}function JSe(t,e){const r=kr(t);if(r===void 0||(Zg(t).forEach(a=>{a.configuration.activeStrategy.toLowerCase().includes("threshold")&&(a.configuration={...a.configuration,threshold:{...a.configuration.threshold,...e}})}),!r.getViewportsInfo().length))return;const o=r.getViewportIds();ke(o)}function ZSe(t){const e=kr(t);if(e===void 0)return;const r=e._toolInstances;if(!Object.keys(r).length)return;const i=Zg(t)[0];if(i)return i.configuration.threshold.range}const D1=class D1{static statsInit(e){const{storePointData:r,indices:n,mode:i}=e;this.mode=i,this.indices=n,this.calculators.clear(),this.mode==="individual"?n.forEach(o=>{this.calculators.set(o,new TM({storePointData:r}))}):this.calculators.set(n,new TM({storePointData:r}))}static statsCallback(e){const{segmentIndex:r,...n}=e;if(!r)throw new Error("Segment index is required for stats calculation");const i=this.mode==="individual"?this.calculators.get(r):this.calculators.get(this.indices);if(!i)throw new Error(`No calculator found for segment ${r}`);i.statsCallback(n)}static getStatistics(e){if(this.mode==="individual"){const n={};return this.calculators.forEach((i,o)=>{n[o]=i.getStatistics(e)}),n}return this.calculators.get(this.indices).getStatistics(e)}};D1.calculators=new Map,D1.indices=[],D1.mode="collective";let y_=D1;function QSe(t,e,r,n,i){if(!i)throw new Error("Segmentation ID is required to be passed inside thresholdSegmentationByRange");const{baseVolumeIdx:o,volumeInfoList:a}=lG(t,r),{voxelManager:s}=a[o],c=s,l=t.voxelManager.getScalarDataLength(),f=t.voxelManager;return a.forEach(u=>{const{volumeSize:d}=u;d===l?tTe(f,c,e,u):eTe(f,c,e,u,a,o,n)}),Ro(i),t}function eTe(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,w>=h.lower&&w<=h.upper&&(d=d+1)};u=0,d=0,h={lower:c,upper:l};let m=!1;t.forEach(y,{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 tTe(t,e,r,n){const{lower:i,upper:o}=n,a=t.getScalarDataLength();for(let s=0;s=i&&c<=o?r:0)}}function EM(t,e,r){const n=r.toIJK(t),i=r.toIJK(e),o=Ve(),{testIJK:a}=r,s=Sn(Ve(),n,i),c=Math.round(Math.max(...s.map(Math.abs)));if(c<2)return!0;const l=Er(Ve(),s,1/c);for(let f=1;f{const l=Kr(Ve(),s,c).map(v=>v/2),f=e.worldToIndex(l).map(Math.round),[u,d,h]=f,g=u+d*o+h*a,p=r.getAtIndex(g);return p===n||(i==null?void 0:i.has(p))},toIJK:s=>e.worldToIndex(s),testIJK:s=>{const[c,l,f]=s,u=Math.round(c)+Math.round(l)*o+Math.round(f)*a,d=r.getAtIndex(u);return d===n||(i==null?void 0:i.has(d))}}}function rTe(t,e,r){const n=Ue.getVolume(t);if(!n){console.warn(`No volume found for ${t}`);return}return nTe({dimensions:n.dimensions,imageData:n.imageData,voxelManager:n.voxelManager,segmentIndex:e,containedSegmentIndices:r})}const bp=.01;function iTe(t,e,r){const{sliceContours:n}=t,{segmentIndex:i,containedSegmentIndices:o}=r;let a;const s=rTe(e,i,o);for(const c of n){const l=oTe(c,s,a);l&&(a=l)}return a&&Object.assign(a,r),a}function oTe(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;vbp||e.testCenter(m,w)&&EM(m,w,e)&&(s=x,d=[v,y])}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}}async function sz(t){const e=await U$({segmentations:t});if(!(e!=null&&e.length)||!e[0].sliceContours.length)return;const{segments:r=[null,{label:"Unspecified",color:null,containedSegmentIndices:null}]}=t,n=Jg(t.segmentationId);if(!n)return;const i=r.findIndex(o=>!!o);if(i!==-1)return r[i].segmentIndex=i,iTe(e[0],n.volumeId,r[i])}function cz(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:V2}=Dn,xh=class xh extends cr{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,getTextLines:aTe}}){super(e,r),this.isPointNearTool=(n,i,o,a)=>{const s=De(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=Si([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=Si([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=St(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},this._activateModify(a),De(a),ke(s),At(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=St(s,this.getToolName());At(s),this.editData={annotation:i,viewportIdsToRender:u,handleIndex:f,movingTextBox:l},this._activateModify(s),De(s),ke(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(this.doneEditMemo(),f.handles.activeHandleIndex=null,this._deactivateModify(o),this._deactivateDraw(o),Yt(o),De(o),this.editData.handleIndex!==void 0){const{points:u}=f.handles,d=Po(u[0],u[1]);if(Po(u[2],u[3])>d){const g=[[...u[2]],[...u[3]]],p=[...u[0]],v=[...u[1]],y=bt();Ds(y,g[1][0]-g[0][0],g[1][1]-g[1][0]);const m=bt();Ds(m,-y[1],y[0]);const w=bt();Ds(w,v[0]-p[0],v[1]-p[0]);let x;au(w,m)>0?x=[p,v]:x=[v,p],f.handles.points=[g[0],g[1],x[0],x[1]]}}this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&nn(a.annotationUID),ke(s),c&&Un(a),this.editData=null,this.isDrawing=!1}},this._dragDrawCallback=n=>{this.isDrawing=!0;const i=n.detail,{currentPoints:o,element:a}=i,s=De(a),{viewport:c}=s,{worldToCanvas:l}=c,{annotation:f,viewportIdsToRender:u,handleIndex:d,newAnnotation:h}=this.editData;this.createMemo(a,f,{newAnnotation:h});const{data:g}=f,p=o.world;g.handles.points[d]=[...p];const v=g.handles.points.map(l),y={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]}}},w=dr(v[0],v[1])/3,x=y.longLineSegment.start.x-y.longLineSegment.end.x,C=y.longLineSegment.start.y-y.longLineSegment.end.y,S=Math.sqrt(x*x+C*C),T=x/S,_=C/S,E=(y.longLineSegment.start.x+y.longLineSegment.end.x)/2,b=(y.longLineSegment.start.y+y.longLineSegment.end.y)/2,D=E+w*_,I=b-w*T,P=E-w*_,M=b+w*T;g.handles.points[2]=c.canvasToWorld([D,I]),g.handles.points[3]=c.canvasToWorld([P,M]),f.invalidated=!0,ke(u),cn(f,a,Qt.HandlesUpdated),this.editData.hasMoved=!0},this._dragModifyCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,handleIndex:c,movingTextBox:l,newAnnotation:f}=this.editData;this.createMemo(o,a,{newAnnotation:f});const{data:u}=a;if(l){const{deltaPoints:d}=i,h=d.world,{textBox:g}=u.handles,{worldPosition:p}=g;p[0]+=h[0],p[1]+=h[1],p[2]+=h[2],g.hasMoved=!0}else if(c===void 0){const{deltaPoints:d}=i,h=d.world;u.handles.points.forEach(p=>{p[0]+=h[0],p[1]+=h[1],p[2]+=h[2]}),a.invalidated=!0}else this._dragModifyHandle(n),a.invalidated=!0;ke(s),a.invalidated&&cn(a,o,Qt.HandlesUpdated)},this._dragModifyHandle=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=De(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],y=c.worldToCanvas(v);if(f===0||f===1){const w=h[f===0?1:0],x=Ds(bt(),y[0]-w[0],y[1]-w[1]),C=Ds(bt(),h[f][0]-w[0],h[f][1]-w[1]);ml(x,x),ml(C,C);const S={start:{x:w[0],y:w[1]},end:{x:y[0],y:y[1]}};if(this._movingLongAxisWouldPutItThroughShortAxis(S,p))return;const T=w,_=this._getSignedAngle(C,x);let E=h[2][0],b=h[2][1],D=h[3][0],I=h[3][1];E-=T[0],b-=T[1],D-=T[0],I-=T[1];const P=E*Math.cos(_)-b*Math.sin(_),M=E*Math.sin(_)+b*Math.cos(_),L=D*Math.cos(_)-I*Math.sin(_),B=D*Math.sin(_)+I*Math.cos(_);E=P+T[0],b=M+T[1],D=L+T[0],I=B+T[1];const j=c.canvasToWorld([E,b]),V=c.canvasToWorld([D,I]);u.handles.points[f]=v,u.handles.points[2]=j,u.handles.points[3]=V}else{const m=f===2?3:2,w={longLineSegment:{start:g.start,end:g.end},shortLineSegment:{start:p.start,end:p.end}},x=Wn(bt(),[w.longLineSegment.end.x,w.longLineSegment.end.y],[w.longLineSegment.start.x,w.longLineSegment.start.y]),C=ml(bt(),x),S=Wn(bt(),[y[0],y[1]],[h[f][0],h[f][1]]),T=w5(S),_=this._getSignedAngle(C,S),E=Math.cos(_)*T,b=Up(bt(),[h[m][0],h[m][1]],C,E);if(this._movingLongAxisWouldPutItThroughShortAxis({start:{x:y[0],y:y[1]},end:{x:b[0],y:b[1]}},{start:{x:w.longLineSegment.start.x,y:w.longLineSegment.start.y},end:{x:w.longLineSegment.end.x,y:w.longLineSegment.end.y}})||!rw([y[0],y[1]],[b[0],b[1]],[g.start.x,g.start.y],[g.end.x,g.end.y]))return;u.handles.points[m]=c.canvasToWorld(b),u.handles.points[f]=v}},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),Yt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,ke(o),a&&Un(i),this.editData=null,i.annotationUID}},this._activateDraw=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragDrawCallback),n.addEventListener(U.MOUSE_MOVE,this._dragDrawCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragDrawCallback)},this._deactivateDraw=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragDrawCallback),n.removeEventListener(U.MOUSE_MOVE,this._dragDrawCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragDrawCallback)},this._activateModify=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragModifyCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragModifyCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragModifyCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragModifyCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!0;const{viewport:a}=n,{element:s}=a;let c=ln(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));u.annotationUID=g;const{color:w,lineWidth:x,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(!ni(g))continue;!ti(g)&&!this.editData&&y!==null&&(T=[m[y]]),T&&sr(i,g,"0",T,{color:w});const _=`${g}-line-1`,E=`${g}-line-2`;fn(i,g,"0",m[0],m[1],{color:w,lineDash:C,lineWidth:x,shadow:S},_),fn(i,g,"1",m[2],m[3],{color:w,lineDash:C,lineWidth:x,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 P=this.configuration.getTextLines(p,l);if(!P||P.length===0)continue;let M;p.handles.textBox.hasMoved||(M=Va(m),p.handles.textBox.worldPosition=a.canvasToWorld(M));const L=a.worldToCanvas(p.handles.textBox.worldPosition),j=Lo(i,g,"1",P,L,m,{},I),{x:V,y:F,width:G,height:X}=j;p.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([V,F]),topRight:a.canvasToWorld([V+G,F]),bottomLeft:a.canvasToWorld([V,F+X]),bottomRight:a.canvasToWorld([V+G,F+X])}}return o},this._movingLongAxisWouldPutItThroughShortAxis=(n,i)=>{const o=bt();Ds(o,i.end.x-i.start.x,i.end.y-i.start.y),ml(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!rw([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 p=0;pL?M:L,j=M>L?L:M,V=M>L?D:P,F=M>L?P:D;this._isInsideVolume(x,C,S,T,w)?this.isHandleOutsideImage=!1:this.isHandleOutsideImage=!0,d[v]={length:B,width:j,unit:V,widthUnit:F}}const g=n.invalidated;return n.invalidated=!1,g&&cn(n,s,Qt.StatsUpdated),d},this._isInsideVolume=(n,i,o,a,s)=>vr(n,s)&&vr(i,s)&&vr(o,s)&&vr(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=ea(this._calculateCachedStats,100,{trailing:!0})}addNewAnnotation(e){const r=e.detail,{currentPoints:n,element:i}=r,o=n.world,a=De(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:{}}};rn(g,i);const p=St(i,this.getToolName());return this.editData={annotation:g,viewportIdsToRender:p,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(i),At(i),e.preventDefault(),ke(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)}};xh.toolName="Bidirectional",xh.hydrate=(e,r,n)=>{const i=Vn(e);if(!i)return;const{FrameOfReferenceUID:o,referencedImageId:a,viewPlaneNormal:s,instance:c,viewport:l}=xh.hydrateBase(xh,i,r[0],n),[f,u]=r,[d,h]=f,[g,p]=u,v=[d,h,g,p],{toolInstance:y,...m}=n||{},w={annotationUID:(n==null?void 0:n.annotationUID)||Pn(),data:{handles:{points: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]}}},cachedStats:{}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:c.getToolName(),viewPlaneNormal:s,FrameOfReferenceUID:o,referencedImageId:a,...m}};return rn(w,l.element),ke([l.id]),w};let Dm=xh;function aTe(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: ${un(i)} ${a||a}`,`W: ${un(o)} ${a}`),s}async function sTe(t,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:r}=e,n=De(t),i=(r.getSegment||cTe)(n,r);if(!i)return;const o=n.viewport.getFrameOfReferenceUID(),a=zx(),{segmentIndex:s,segmentationId:c}=i,l=wr.getAnnotations(this.toolName||Dm.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(async h=>{const g=[],p=h.data.segment,{segmentIndex:v,segmentationId:y}=p;g[v]=p,wr.removeAnnotation(h.annotationUID);const m=await sz({...a.find(C=>C.segmentationId===y),segments:g});if(!m)return;const w=cz(m,n.viewport);w.annotationUID=h.annotationUID,w.data.segment=p;const x=wr.addAnnotation(w,o);if(p.segmentIndex===i.segmentIndex&&p.segmentationId===i.segmentationId){d=m;const{style:C}=i;C&&z8.setAnnotationStyles(x,C)}}),d){const{sliceIndex:h}=d,g=n.viewport.getImageIds();Wo(t,{imageIndex:g.length-1-h}),n.viewport.render()}else console.warn("No bidirectional found");return d}function cTe(t,e){var a;const r=zx();if(!r.length)return;const n=e.segmentationId||r[0].segmentationId,i=e.segmentIndex??pa(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 lz(t){const e=kr(t);if(e===void 0)return;Zg(t).forEach(a=>{a.invalidateBrushCursor()});const n=e.getViewportsInfo();if(!Object.keys(n).map(a=>n[a]).length)return;const o=e.getViewportIds();ke(o)}function Hb(t,e,r={}){const n=an(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 Pt.Labelmap:return lTe(n,e,r);case Pt.Contour:return uTe(n,e,r);default:return}}function lTe(t,e,{viewport:r}){const n=t.representationData.Labelmap;if(r instanceof Ir){const{volumeId:h}=n,g=Ue.getVolume(h);return g?g.imageData.getScalarValueFromWorld(e):void 0}const i=Nu(r.id,t.segmentationId);if(i.length>1){console.warn("Segment selection for labelmaps with multiple imageIds in stack viewports is not supported yet.");return}const o=i[0];if(!Ue.getImage(o))return;const s=bx(r.id,t.segmentationId),c=s==null?void 0:s.actor.getMapper().getInputData(),l=Zr(c,e),f=c.getDimensions();return(c.voxelManager||Rc.createScalarVolumeVoxelManager({dimensions:f,scalarData:c.getPointData().getScalars().getData()})).getAtIJKPoint(l)}function uTe(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=$n(c);if(!l)continue;const{polyline:f}=l.data.contour;if(Vt(o,l.metadata.viewPlaneNormal)&&pb(e,f))return Number(a)}}}function uz(t,e,{viewport:r,searchRadius:n}){const o=an(t).representationData.Labelmap;if(r instanceof Ir){const{volumeId:p}=o,v=Ue.getVolume(p);if(!v)return;const y=v.voxelManager,m=v.imageData,w=Zr(m,e),x=y.getAtIJK(w[0],w[1],w[2]),C=r.worldToCanvas(e);return dTe(C,x,r,m,n)?x:void 0}const a=ed(r.id,t);if(!Ue.getImage(a))return;const c=bx(r.id,t),l=c==null?void 0:c.actor.getMapper().getInputData(),f=Zr(l,e),u=l.getDimensions(),d=l.voxelManager||Rc.createScalarVolumeVoxelManager({dimensions:u,scalarData:l.getPointData().getScalars().getData()}),h=d.getAtIJKPoint(f);return fTe(f,u,d,h)?h:void 0}function fz(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 fTe(t,e,r,n,i){return fz((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 dTe(t,e,r,n,i){return fz((a,s)=>{const c=[t[0]+a,t[1]+s],l=r.canvasToWorld(c),f=n.get("voxelManager").voxelManager,u=Zr(n,l);return f.getAtIJK(u[0],u[1],u[2])},e,i)}function dz(t){const e=an(t),{annotationUIDsMap:r}=e.representationData.Contour;for(const[n,i]of r.entries())if(Array.from(i).find(a=>$n(a).highlighted))return n}const hTe=` + `;return TF(c,e)}const oI=Symbol("ElementCursorsMap");function _F(t,e){km(t)[0]=e,_1(t,e)}function _1(t,e){const r=km(t);r[1]=r[0],r[0]=e,t.style.cursor=(e instanceof ko?e:ko.getDefinedCursor("auto")).getStyleProperty()}function jt(t){_1(t,km(t)[1])}function Mt(t){_1(t,ko.getDefinedCursor("none"))}function km(t){let e=km[oI];e instanceof WeakMap||(e=new WeakMap,Object.defineProperty(km,oI,{value:e}));let r=e.get(t);return r||(r=[null,null],e.set(t,r)),r}const hpe=Object.freeze(Object.defineProperty({__proto__:null,hideElementCursor:Mt,initElementCursor:_F,resetElementCursor:jt,setElementCursor:_1},Symbol.toStringTag,{value:"Module"}));function gpe(t,e){let r=fh.getDefinedCursor(e,!0);r||(r=ko.getDefinedCursor(e)),r||(console.log(`Cursor ${e} is not defined either as SVG or as a standard cursor.`),r=ko.getDefinedCursor(e)),_1(t,r)}const ppe=[...tpe,...Jge],mpe=Object.freeze(Object.defineProperty({__proto__:null,CursorNames:ppe,CursorSVG:Lw,ImageMouseCursor:Nm,MouseCursor:ko,SVGMouseCursor:fh,elementCursor:hpe,registerCursor:Qge,setCursorForElement:gpe},Symbol.toStringTag,{value:"Module"}));function ti(t){return ze.toolGroups.find(e=>e.id===t)}const{Active:Fg,Passive:DC,Enabled:IC,Disabled:OC}=Nn,vpe=[{mouseButton:gl.Primary}];class kE{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=ze.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=ze.tools[e])==null?void 0:o.toolClass;if(!i){const a=ze.tools[r].toolClass;class s extends a{}s.toolName=e,i=s,ze.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();yr.getRuntimeSettings().get("useCursors")&&this.setViewportsCursorByToolName(i);const a={toolGroupId:this.id,viewportId:e,renderingEngineId:n};nt(He,B.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};nt(He,B.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===Nn.Active){this.setToolActive(e,n||this.restoreToolOptions[e]);return}if(r===Nn.Passive){this.setToolPassive(e);return}if(r===Nn.Enabled){this.setToolEnabled(e);return}if(r===Nn.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=>MC(p,d))&&(h||g)&&u.push(d),u},[]),mode:Fg};this.toolOptions[e]=s,this._toolInstances[e].mode=Fg;const l=yr.getRuntimeSettings().get("useCursors");if(this._hasMousePrimaryButtonBinding(r)&&l)this.setViewportsCursorByToolName(e);else if(!this.getActivePrimaryMouseButtonTool()&&l){const d=ko.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};nt(He,B.TOOL_ACTIVATED,f),this._triggerToolModeChangedEvent(e,Fg,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:DC}),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=>MC(c,l)));let s=DC;o.bindings.length!==0&&(s=Fg,o.mode=s),this.toolOptions[e]=o,n.mode=s,typeof n.onSetToolPassive=="function"&&n.onSetToolPassive(),this._renderViewports(),this._triggerToolModeChangedEvent(e,DC)}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:IC};this.toolOptions[e]=n,r.mode=IC,typeof r.onSetToolEnabled=="function"&&r.onSetToolEnabled(),this._renderViewports(),this._triggerToolModeChangedEvent(e,IC)}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:OC};this.restoreToolOptions[e]=this.toolOptions[e],this.toolOptions[e]=n,r.mode=OC,typeof r.onSetToolDisabled=="function"&&r.onSetToolDisabled(),this._renderViewports(),this._triggerToolModeChangedEvent(e,OC)}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===Fg&&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=fh.getDefinedCursor(n,!0),i)||(n=`${e}`,i=fh.getDefinedCursor(n,!0),i)||(n=e,i=fh.getDefinedCursor(n,!0),i)?i:ko.getDefinedCursor("default")}_setCursorForViewports(e){this.viewportsInfo.forEach(({renderingEngineId:r,viewportId:n})=>{const i=Ci(n,r);if(!i)return;const{viewport:o}=i;_F(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 gl.Primary}getDefaultPrimaryBindings(){return vpe}getToolConfiguration(e,r){if(this._toolInstances[e]===void 0){console.warn(`Tool ${e} not present, can't set tool configuration.`);return}const n=Yge(this._toolInstances[e].configuration,r)||this._toolInstances[e].configuration;return xs(n)}getPrevActivePrimaryToolName(){return this.prevActivePrimaryToolName}setActivePrimaryTool(e){const r=this.getCurrentActivePrimaryToolName();this.setToolDisabled(r),this.setToolActive(e,{bindings:[{mouseButton:gl.Primary}]})}getCurrentActivePrimaryToolName(){return this.currentActivePrimaryToolName}clone(e,r=null){let n=ti(e);return n?(console.debug(`ToolGroup ${e} already exists`),n):(n=new kE(e),ze.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=>MC(i,o)))}_renderViewports(){this.viewportsInfo.forEach(({renderingEngineId:e,viewportId:r})=>{jr(e).renderViewport(r)})}_triggerToolModeChangedEvent(e,r,n){const i={toolGroupId:this.id,toolName:e,mode:r,toolBindingsOptions:n};nt(He,B.TOOL_MODE_CHANGED,i)}_findRenderingEngine(e,r){const n=Go();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 MC(t,e){return t.mouseButton!==e.mouseButton||t.numTouchPoints!==e.numTouchPoints?!1:t.modifierKey===e.modifierKey}function EF(t){if(ze.toolGroups.some(n=>n.id===t)){console.warn(`'${t}' already exists.`);return}const r=new kE(t);return ze.toolGroups.push(r),r}function bF(t){const e=ze.toolGroups.findIndex(r=>r.id===t);e>-1&&ze.toolGroups.splice(e,1)}function DF(){const t=[...ze.toolGroups];for(const e of t)bF(e.id);ze.toolGroups=[]}function Dr(t,e){var n;e||(e=(n=Go().find(i=>i.getViewports().find(o=>o.id===t)))==null?void 0:n.id);const r=ze.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 ype(){return ze.toolGroups}const wpe=[Nn.Active,Nn.Passive,Nn.Enabled];function IF(t){return ze.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}=Ci(l,c);t.metadata.FrameOfReferenceUID===f&&n.push(s)})});const i=B.ANNOTATION_ADDED,o={annotation:t};if(!n.length){nt(He,i,o);return}n.forEach(({renderingEngineId:a,viewportId:s})=>{o.viewportId=s,o.renderingEngineId=a,nt(He,i,o)})}function Aw(t){const e=B.ANNOTATION_REMOVED;nt(He,e,t)}function rn(t,e,r=Xt.HandlesUpdated){const n=e&&Ee(e),{viewportId:i,renderingEngineId:o}=n||{},a=B.ANNOTATION_MODIFIED;nt(He,a,{annotation:t,viewportId:i,renderingEngineId:o,changeType:r})}function kn(t){RF({annotation:t})}function Nw(t,e=!1){RF({annotation:t,contourHoleProcessingEnabled:e})}function RF(t){const e=B.ANNOTATION_COMPLETED;nt(He,e,t)}const xpe=Object.freeze(Object.defineProperty({__proto__:null,triggerAnnotationAddedForElement:MF,triggerAnnotationAddedForFOR:PF,triggerAnnotationCompleted:kn,triggerAnnotationModified:rn,triggerAnnotationRemoved:Aw,triggerContourAnnotationCompleted:Nw},Symbol.toStringTag,{value:"Module"}));let LF;function _c(){return LF}function VE(t){LF=t}function cn(t,e){const r=_c(),n=r.getGroupKey(e);return r.getAnnotations(n,t)}function Hr(t){return _c().getAnnotation(t)}function E1(){return _c().getAllAnnotations()}function kw(t){const{annotationUID:e,parentAnnotationUID:r}=t;if(!r)return;const n=Hr(r),i=n.childAnnotationUIDs.indexOf(e);n.childAnnotationUIDs.splice(i,1),t.parentAnnotationUID=void 0}function b1(t,e){const{annotationUID:r}=t,{annotationUID:n}=e;kw(e),t.childAnnotationUIDs||(t.childAnnotationUIDs=[]),!t.childAnnotationUIDs.includes(n)&&(t.childAnnotationUIDs.push(n),e.parentAnnotationUID=r)}function AF(t){return t.parentAnnotationUID?Hr(t.parentAnnotationUID):void 0}function D1(t){var e;return((e=t.childAnnotationUIDs)==null?void 0:e.map(r=>Hr(r)))??[]}function on(t,e){t.annotationUID||(t.annotationUID=Tn());const r=_c();if(e instanceof HTMLDivElement){const n=r.getGroupKey(e);r.addAnnotation(t,n),MF(t,e)}else r.addAnnotation(t,void 0),PF(t);return t.annotationUID}function Cpe(t,e){const r=_c(),n=r.getGroupKey(e);return r.getNumberOfAnnotations(n,t)}function fn(t){var n;if(!t)return;const e=_c(),r=e.getAnnotation(t);r&&((n=r.childAnnotationUIDs)==null||n.forEach(i=>fn(i)),e.removeAnnotation(t),Aw({annotation:r,annotationManagerUID:e.uid}))}function Spe(){const t=_c(),e=t.removeAllAnnotations();for(const r of e)Aw({annotation:r,annotationManagerUID:t.uid})}function Tpe(t,e){const r=_c(),n=r.getGroupKey(e),i=r.removeAnnotations(n,t);for(const o of i)Aw({annotation:o,annotationManagerUID:r.uid})}function NF(t){let e=t;for(;e;)e.invalidated=!0,e=e.parentAnnotationUID?Hr(e.parentAnnotationUID):void 0}const _pe=Object.freeze(Object.defineProperty({__proto__:null,addAnnotation:on,addChildAnnotation:b1,clearParentAnnotation:kw,getAllAnnotations:E1,getAnnotation:Hr,getAnnotationManager:_c,getAnnotations:cn,getChildAnnotations:D1,getNumberOfAnnotations:Cpe,getParentAnnotation:AF,invalidateAnnotation:NF,removeAllAnnotations:Spe,removeAnnotation:fn,removeAnnotations:Tpe,setAnnotationManager:VE},Symbol.toStringTag,{value:"Module"}));function Mi(t){const e=t.toolName;if(!e)throw new Error(`No Tool Found for the ToolClass ${t.name}`);ze.tools[e]||(ze.tools[e]={toolClass:t})}function Epe(t){const e=t.toolName;return!!(e&&ze.tools[e])}function Vw(t){return!!(t&&ze.tools[t])}function kF(t){const e=t.toolName;if(!e)throw new Error(`No tool found for: ${t.name}`);if(!ze.tools[e]!==void 0)delete ze.tools[e];else throw new Error(`${e} cannot be removed because it has not been added`)}function Jd(t,e){const r=e||t.currentTarget,{viewport:n}=Ee(r)||{};if(!n)return;const i=Ipe(t),o=Dpe(t),a=bpe(r,o),s=n.canvasToWorld(a);return{page:o,client:i,canvas:a,world:s}}function bpe(t,e){const r=t.getBoundingClientRect();return[e[0]-r.left-window.pageXOffset,e[1]-r.top-window.pageYOffset]}function Dpe(t){return[t.pageX,t.pageY]}function Ipe(t){return[t.clientX,t.clientY]}function VF(t){const e=t.currentTarget,{viewportId:r,renderingEngineId:n}=Ee(e),i=Jd(t,e),o={page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]},a={event:t,eventName:B.MOUSE_DOUBLE_CLICK,viewportId:r,renderingEngineId:n,camera:{},element:e,startPoints:i,lastPoints:i,currentPoints:i,deltaPoints:o};!nt(e,B.MOUSE_DOUBLE_CLICK,a)&&(t.stopImmediatePropagation(),t.preventDefault())}const aI=B.MOUSE_MOVE;function I1(t){const e=t.currentTarget,r=Ee(e);if(!r)return;const{renderingEngineId:n,viewportId:i}=r,o=Jd(t);!nt(e,aI,{renderingEngineId:n,viewportId:i,camera:{},element:e,currentPoints:o,eventName:aI,event:t})&&(t.stopImmediatePropagation(),t.preventDefault())}const{MOUSE_DOWN:sI,MOUSE_DOWN_ACTIVATE:Ope,MOUSE_CLICK:Mpe,MOUSE_UP:Ppe,MOUSE_DRAG:cI}=B,Rpe=400,Lpe=150,Ape=3,Npe={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 en={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 Pi={doubleClickTimeout:null,mouseDownEvent:null,mouseUpEvent:null,ignoreDoubleClick:!1};function FF(t){if(Pi.doubleClickTimeout){if(t.buttons===Pi.mouseDownEvent.buttons)return;Pi.mouseDownEvent=t,c5();return}Pi.doubleClickTimeout=setTimeout(c5,t.buttons===1?Rpe:Lpe),Pi.mouseDownEvent=t,Pi.ignoreDoubleClick=!1,en.element=t.currentTarget,en.mouseButton=t.buttons;const e=Ee(en.element),{renderingEngineId:r,viewportId:n}=e;en.renderingEngineId=r,en.viewportId=n,en.preventClickTimeout=setTimeout(Vpe,en.clickDelay),en.element.removeEventListener("mousemove",I1);const i=Jd(t,en.element);en.startPoints=sf(i),en.lastPoints=sf(i),document.addEventListener("mouseup",FE),document.addEventListener("mousemove",UF)}function kpe(t){const e=Fw(en.startPoints,en.startPoints),r={event:t,eventName:sI,element:en.element,mouseButton:en.mouseButton,renderingEngineId:en.renderingEngineId,viewportId:en.viewportId,camera:{},startPoints:en.startPoints,lastPoints:en.startPoints,currentPoints:en.startPoints,deltaPoints:e};en.lastPoints=sf(r.lastPoints),nt(r.element,sI,r)&&nt(r.element,Ope,r)}function UF(t){const e=Ee(en.element);if(!(e!=null&&e.viewport))return;const r=Jd(t,en.element),n=zF(en.element,en.lastPoints),i=Fw(r,n);if(Pi.doubleClickTimeout)if(GF(i.canvas))c5();else return;const o={event:t,eventName:cI,mouseButton:en.mouseButton,renderingEngineId:en.renderingEngineId,viewportId:en.viewportId,camera:{},element:en.element,startPoints:sf(en.startPoints),lastPoints:sf(n),currentPoints:r,deltaPoints:i};!nt(en.element,cI,o)&&(t.stopImmediatePropagation(),t.preventDefault()),en.lastPoints=sf(r)}function FE(t){if(clearTimeout(en.preventClickTimeout),Pi.doubleClickTimeout)Pi.mouseUpEvent?KS():(Pi.mouseUpEvent=t,en.element.addEventListener("mousemove",BF));else{const e=en.isClickEvent?Mpe:Ppe,r=Jd(t,en.element),n=Fw(r,en.lastPoints),i={event:t,eventName:e,mouseButton:en.mouseButton,element:en.element,renderingEngineId:en.renderingEngineId,viewportId:en.viewportId,camera:{},startPoints:sf(en.startPoints),lastPoints:sf(en.lastPoints),currentPoints:r,deltaPoints:n};nt(i.element,e,i),KS()}document.removeEventListener("mousemove",UF)}function BF(t){const e=Jd(t,en.element),r=zF(en.element,en.lastPoints),n=Fw(e,r);GF(n.canvas)&&(c5(),I1(t))}function GF(t){return Math.abs(t[0])+Math.abs(t[1])>Ape}function Vpe(){en.isClickEvent=!1}function c5(){Pi.ignoreDoubleClick=!0;const t=Pi.mouseDownEvent,e=Pi.mouseUpEvent;WF(),kpe(t),e&&FE(e)}function WF(){Pi.doubleClickTimeout&&(clearTimeout(Pi.doubleClickTimeout),Pi.doubleClickTimeout=null),Pi.mouseDownEvent=null,Pi.mouseUpEvent=null}function KS(){var t,e;document.removeEventListener("mouseup",FE),(t=en.element)==null||t.removeEventListener("mousemove",BF),(e=en.element)==null||e.addEventListener("mousemove",I1),WF(),en=JSON.parse(JSON.stringify(Npe))}function sf(t){return JSON.parse(JSON.stringify(t))}function zF(t,e){const{viewport:r}=Ee(t)||{};if(!r)return e;const n=r.canvasToWorld(e.canvas);return{page:e.page,client:e.client,canvas:e.canvas,world:n}}function Fw(t,e){return!t||!e?{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]}:{page:PC(t.page,e.page),client:PC(t.client,e.client),canvas:PC(t.canvas,e.canvas),world:Fpe(t.world,e.world)}}function PC(t,e){return[t[0]-e[0],t[1]-e[1]]}function Fpe(t,e){return[t[0]-e[0],t[1]-e[1],t[2]-e[2]]}function Upe(){return en.mouseButton}function $F(t){Pi.ignoreDoubleClick?(Pi.ignoreDoubleClick=!1,t.stopImmediatePropagation(),t.preventDefault()):KS()}function jF(t){t.removeEventListener("dblclick",VF),t.removeEventListener("mousedown",FF),t.removeEventListener("mousemove",I1),t.removeEventListener("dblclick",$F,{capture:!0})}function Bpe(t){jF(t),t.addEventListener("dblclick",VF),t.addEventListener("mousedown",FF),t.addEventListener("mousemove",I1),t.addEventListener("dblclick",$F,{capture:!0})}const HF={enable:Bpe,disable:jF},Gpe=2e3,Vh={mouse:0,touch:1};let lI,uI;function KF(t,e){const r=Date.now();if(t!==lI){if(r-uI<=Gpe)return e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),!1;lI=t}uI=r}const qF=KF.bind(null,Vh.mouse),XF=KF.bind(null,Vh.touch);function fI(t,e,r){const n=r?qF:XF;e.forEach(function(i){t.addEventListener(i,n,{passive:!1})})}function dI(t,e,r){const n=r?qF:XF;e.forEach(function(i){t.removeEventListener(i,n)})}const YF=["mousedown","mouseup","mousemove"],JF=["touchstart","touchend"];function ZF(t){dI(t,YF,Vh.mouse),dI(t,JF,Vh.touch)}function Wpe(t){ZF(t),fI(t,YF,Vh.mouse),fI(t,JF,Vh.touch)}const QF={enable:Wpe,disable:ZF};function Uw(t,e){const r=e||t.currentTarget,n=t.type==="touchend"?t.changedTouches:t.touches;return Object.keys(n).map(i=>{const o=jpe(n[i]),a=$pe(n[i]),s=zpe(r,a),{viewport:c}=Ee(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 zpe(t,e){const r=t.getBoundingClientRect();return[e[0]-r.left-window.pageXOffset,e[1]-r.top-window.pageYOffset]}function $pe(t){return[t.pageX,t.pageY]}function jpe(t){return[t.clientX,t.clientY]}function l5(t,e){const r=Vm(t),n=Vm(e);return{page:RC(r.page,n.page),client:RC(r.client,n.client),canvas:RC(r.canvas,n.canvas),world:Kpe(r.world,n.world)}}function UE(t,e){const r=Vm(t),n=Vm(e);return{page:dh(r.page,n.page),client:dh(r.client,n.client),canvas:dh(r.canvas,n.canvas),world:eU(r.world,n.world)}}function Hpe(t,e){}function u5(t,e){const r=hI(t),n=hI(e);return{page:r.page-n.page,client:r.client-n.client,canvas:r.canvas-n.canvas,world:r.world-n.world}}function sl(t){return JSON.parse(JSON.stringify(t))}function qS(t){return JSON.parse(JSON.stringify(t))}function Vm(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 mc(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 RC(t,e){return[t[0]-e[0],t[1]-e[1]]}function Kpe(t,e){return[t[0]-e[0],t[1]-e[1],t[2]-e[2]]}function hI(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 dh(t,e){return Math.sqrt(Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2))}function eU(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 qpe=Object.freeze(Object.defineProperty({__proto__:null,copyPoints:qS,copyPointsList:sl,getDeltaDistance:UE,getDeltaDistanceBetweenIPoints:u5,getDeltaPoints:l5,getDeltaRotation:Hpe,getMeanPoints:Vm,getMeanTouchPoints:mc},Symbol.toStringTag,{value:"Module"}));yr.getRuntimeSettings();const{TOUCH_START:gI,TOUCH_START_ACTIVATE:Xpe,TOUCH_PRESS:pI,TOUCH_DRAG:mI,TOUCH_END:vI,TOUCH_TAP:yI,TOUCH_SWIPE:LC}=B,Fm={page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]},f5={page:0,client:0,canvas:0,world:0},tU={renderingEngineId:void 0,viewportId:void 0,element:null,startPointsList:[{...Fm,touch:null}],lastPointsList:[{...Fm,touch:null}],isTouchStart:!1,startTime:null,pressTimeout:null,pressDelay:700,pressMaxDistance:5,accumulatedDistance:f5,swipeDistanceThreshold:48,swiped:!1,swipeToleranceMs:300},nU={renderingEngineId:void 0,viewportId:void 0,element:null,startPointsList:[{...Fm,touch:null}],taps:0,tapTimeout:null,tapMaxDistance:24,tapToleranceMs:300};let It=JSON.parse(JSON.stringify(tU)),ui=JSON.parse(JSON.stringify(nU));function vf(t,e,r){return nt(t,e,r)}function rU(t){It.element=t.currentTarget;const e=Ee(It.element),{renderingEngineId:r,viewportId:n}=e;It.renderingEngineId=r,It.viewportId=n,!It.isTouchStart&&(clearTimeout(It.pressTimeout),It.pressTimeout=setTimeout(()=>Ype(t),It.pressDelay),Jpe(t),document.addEventListener("touchmove",iU),document.addEventListener("touchend",oU))}function Ype(t){if(It.accumulatedDistance.canvas>It.pressMaxDistance)return;const r={event:t,eventName:pI,renderingEngineId:It.renderingEngineId,viewportId:It.viewportId,camera:{},element:It.element,startPointsList:sl(It.startPointsList),lastPointsList:sl(It.lastPointsList),startPoints:qS(mc(It.startPointsList)),lastPoints:qS(mc(It.lastPointsList))};vf(r.element,pI,r)}function Jpe(t){It.isTouchStart=!0,It.startTime=new Date;const e=Uw(t,It.element),r=mc(e),n=Fm,i=f5,o={event:t,eventName:gI,element:It.element,renderingEngineId:It.renderingEngineId,viewportId:It.viewportId,camera:{},startPointsList:e,lastPointsList:e,currentPointsList:e,startPoints:r,lastPoints:r,currentPoints:r,deltaPoints:n,deltaDistance:i};It.startPointsList=sl(o.startPointsList),It.lastPointsList=sl(o.lastPointsList),vf(o.element,gI,o)&&vf(o.element,Xpe,o)}function iU(t){const e=Uw(t,It.element),r=aU(It.element,It.lastPointsList),n=e.length===r.length?l5(e,r):Fm,i=e.length===r.length?u5(e,r):f5,o=e.length===r.length?UE(e,It.lastPointsList):f5;It.accumulatedDistance={page:It.accumulatedDistance.page+o.page,client:It.accumulatedDistance.client+o.client,canvas:It.accumulatedDistance.canvas+o.canvas,world:It.accumulatedDistance.world+o.world};const a={event:t,eventName:mI,renderingEngineId:It.renderingEngineId,viewportId:It.viewportId,camera:{},element:It.element,startPoints:mc(It.startPointsList),lastPoints:mc(r),currentPoints:mc(e),startPointsList:sl(It.startPointsList),lastPointsList:sl(r),currentPointsList:e,deltaPoints:n,deltaDistance:i};vf(It.element,mI,a),Qpe(t,n),It.lastPointsList=sl(e)}function oU(t){clearTimeout(It.pressTimeout);const e=Uw(t,It.element),r=aU(It.element,It.lastPointsList),n=e.length===r.length?l5(e,r):l5(e,e),i=e.length===r.length?u5(e,r):u5(e,e),o={event:t,eventName:vI,element:It.element,renderingEngineId:It.renderingEngineId,viewportId:It.viewportId,camera:{},startPointsList:sl(It.startPointsList),lastPointsList:sl(r),currentPointsList:e,startPoints:mc(It.startPointsList),lastPoints:mc(r),currentPoints:mc(e),deltaPoints:n,deltaDistance:i};vf(o.element,vI,o),Zpe(t),It=JSON.parse(JSON.stringify(tU)),document.removeEventListener("touchmove",iU),document.removeEventListener("touchend",oU)}function Zpe(t){const e=new Date().getTime(),r=It.startTime.getTime();if(e-r>ui.tapToleranceMs||(ui.taps===0&&(ui.element=It.element,ui.renderingEngineId=It.renderingEngineId,ui.viewportId=It.viewportId,ui.startPointsList=It.startPointsList),ui.taps>0&&!(ui.element==It.element&&ui.renderingEngineId==It.renderingEngineId&&ui.viewportId==It.viewportId)))return;const n=Uw(t,ui.element);UE(n,ui.startPointsList).canvas>ui.tapMaxDistance||(clearTimeout(ui.tapTimeout),ui.taps+=1,ui.tapTimeout=setTimeout(()=>{const o={event:t,eventName:yI,element:ui.element,renderingEngineId:ui.renderingEngineId,viewportId:ui.viewportId,camera:{},currentPointsList:n,currentPoints:mc(n),taps:ui.taps};vf(o.element,yI,o),ui=JSON.parse(JSON.stringify(nU))},ui.tapToleranceMs))}function Qpe(t,e){const r=new Date().getTime(),n=It.startTime.getTime();if(It.swiped||r-n>It.swipeToleranceMs)return;const[i,o]=e.canvas,a={event:t,eventName:LC,renderingEngineId:It.renderingEngineId,viewportId:It.viewportId,camera:{},element:It.element,swipe:null};Math.abs(i)>It.swipeDistanceThreshold&&(a.swipe=i>0?gd.RIGHT:gd.LEFT,vf(a.element,LC,a),It.swiped=!0),Math.abs(o)>It.swipeDistanceThreshold&&(a.swipe=o>0?gd.DOWN:gd.UP,vf(a.element,LC,a),It.swiped=!0)}function aU(t,e){const{viewport:r}=Ee(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 sU(t){QF.disable(t),t.removeEventListener("touchstart",rU)}function eme(t){sU(t),QF.enable(t),t.addEventListener("touchstart",rU,{passive:!1})}const cU={enable:eme,disable:sU},wI=10,xI=40,CI=800;function tme(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*wI,i=r*wI,"deltaY"in t&&(i=t.deltaY),"deltaX"in t&&(n=t.deltaX),(n||i)&&t.deltaMode&&(t.deltaMode===1?(n*=xI,i*=xI):(n*=CI,i*=CI)),n&&!e&&(e=n<1?-1:1),i&&!r&&(r=i<1?-1:1),{spinX:e,spinY:r,pixelX:n,pixelY:i}}function lU(t){const e=t.currentTarget,r=Ee(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}=tme(t),l=a<0?-1:1,f={event:t,eventName:B.MOUSE_WHEEL,renderingEngineId:n,viewportId:i,element:e,camera:{},detail:t,wheel:{spinX:o,spinY:a,pixelX:s,pixelY:c,direction:l},points:Jd(t)};nt(e,B.MOUSE_WHEEL,f)}function nme(t){uU(t),t.addEventListener("wheel",lU,{passive:!1})}function uU(t){t.removeEventListener("wheel",lU)}const fU={enable:nme,disable:uU},rme={renderingEngineId:void 0,viewportId:void 0,key:void 0,keyCode:void 0,element:null};let yi={renderingEngineId:void 0,viewportId:void 0,key:void 0,keyCode:void 0,element:null};function Bw(t){yi.element=t.currentTarget;const e=Ee(yi.element),{renderingEngineId:r,viewportId:n}=e;yi.renderingEngineId=r,yi.viewportId=n,yi.key=t.key,yi.keyCode=t.keyCode,t.preventDefault();const i={renderingEngineId:yi.renderingEngineId,viewportId:yi.viewportId,element:yi.element,key:yi.key,keyCode:yi.keyCode};nt(i.element,B.KEY_DOWN,i),document.addEventListener("keyup",dU),document.addEventListener("visibilitychange",BE),yi.element.removeEventListener("keydown",Bw)}function BE(){document.removeEventListener("visibilitychange",BE),document.visibilityState==="hidden"&&hU()}function dU(t){const e={renderingEngineId:yi.renderingEngineId,viewportId:yi.viewportId,element:yi.element,key:yi.key,keyCode:yi.keyCode};document.removeEventListener("keyup",dU),document.removeEventListener("visibilitychange",BE),yi.element.addEventListener("keydown",Bw),yi=structuredClone(rme),nt(e.element,B.KEY_UP,e)}function ime(){return yi.keyCode}function hU(){yi.keyCode=void 0}function ome(t){gU(t),t.addEventListener("keydown",Bw)}function gU(t){t.removeEventListener("keydown",Bw)}const og={enable:ome,disable:gU,getModifierKey:ime},{EPSILON:f0}=Of;function pU(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 GE(t,e,r,n){const i=r[0]/2,o=r[1]/2,a=r[2]/2,s=new Array(8);s[0]=zr(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]=zr(t,[n[0]+f*i,n[1]+u*o,n[2]+d*a])}return yf(s,e)}function vU(t,e){const{spacing:r}=t,n=t.voxelManager.getScalarDataLength(),i=[];let o=0;for(let a=0;a{const e=WE.get(t);e&&(e.isDirty=!0)},cme=t=>{const e=WE.get(t);return e&&!e.isDirty?e.indices:null},lme=(t,e)=>{WE.set(t,{indices:e,isDirty:!1})};function wo(t,e,r){const n={segmentationId:t,modifiedSlicesToUse:e,segmentIndex:r};sme(t),nt(He,B.SEGMENTATION_DATA_MODIFIED,n)}function ns(t){const e={segmentationId:t};nt(He,B.SEGMENTATION_MODIFIED,e)}function zE(t){const e={segmentationId:t};nt(He,B.SEGMENTATION_REMOVED,e)}function Jc(t,e,r){const n={segmentationId:e,type:r,viewportId:t};nt(He,B.SEGMENTATION_REPRESENTATION_MODIFIED,n)}function XS(t,e,r){const n={viewportId:t,segmentationId:e,type:r};nt(He,B.SEGMENTATION_REPRESENTATION_REMOVED,n)}const ume=Object.freeze(Object.defineProperty({__proto__:null,triggerSegmentationDataModified:wo,triggerSegmentationModified:ns,triggerSegmentationRemoved:zE,triggerSegmentationRepresentationModified:Jc,triggerSegmentationRepresentationRemoved:XS},Symbol.toStringTag,{value:"Module"})),fme={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 dme(){return fme}const hme={renderOutline:!0,renderOutlineInactive:!0,outlineWidth:3,outlineWidthInactive:2,activeSegmentOutlineWidthDelta:0,renderFill:!0,renderFillInactive:!0,fillAlpha:.5,fillAlphaInactive:.4,outlineOpacity:1,outlineOpacityInactive:.85};function gme(){return hme}class pme{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===Et.Labelmap){const i=n;i.renderOutlineInactive??(i.renderOutlineInactive=i.renderOutline),i.outlineWidthInactive??(i.outlineWidthInactive=i.outlineWidth),i.renderFillInactive??(i.renderFillInactive=i.renderFill),i.fillAlphaInactive??(i.fillAlphaInactive=i.fillAlpha),i.outlineOpacityInactive??(i.outlineOpacityInactive=i.outlineOpacity)}else if(r===Et.Contour){const i=n;i.outlineWidthInactive??(i.outlineWidthInactive=i.outlineWidth),i.outlineOpacityInactive??(i.outlineOpacityInactive=i.outlineOpacity),i.outlineDashInactive??(i.outlineDashInactive=i.outlineDash),i.renderOutlineInactive??(i.renderOutlineInactive=i.renderOutline),i.renderFillInactive??(i.renderFillInactive=i.renderFill),i.fillAlphaInactive??(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 Et.Labelmap:return gme();case Et.Contour:return dme();case Et.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!kV(n,i)}}const qa=new pme;function mme(t){const e={segmentationId:t};nt(He,B.SEGMENTATION_ADDED,e)}const SI={colorLUT:[],segmentations:[],viewportSegRepresentations:{}};class vme{constructor(e){this._stackLabelmapImageIdReferenceMap=new Map,this._labelmapImageIdReferenceMap=new Map,e||(e=Tn()),this.state=Object.freeze(xs(SI)),this.uid=e}getState(){return this.state}updateState(e){const r=xs(this.state);e(r),this.state=Object.freeze(r)}getColorLUT(e){return this.state.colorLUT[e]}getNextColorLUTIndex(){return this.state.colorLUT.length}resetState(){this._stackLabelmapImageIdReferenceMap.clear(),this._labelmapImageIdReferenceMap.clear(),this.state=Object.freeze(xs(SI))}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)}),ns(e)}addSegmentation(e){if(this.getSegmentation(e.segmentationId))throw new Error(`Segmentation with id ${e.segmentationId} already exists`);this.updateState(r=>{const n=xs(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)}),mme(e.segmentationId)}removeSegmentation(e){this.updateState(r=>{const n=r.segmentations.filter(i=>i.segmentationId!==e);r.segmentations.splice(0,r.segmentations.length,...n)}),zE(e)}addSegmentationRepresentation(e,r,n,i){if(!Bn(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]=[],qa.setRenderInactiveSegmentations(e,!0)),n!==Et.Labelmap?this.addDefaultSegmentationRepresentation(s,e,r,n,i):this.addLabelmapRepresentation(s,e,r,i)}),Jc(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:(o==null?void 0:o.colorLUTIndex)||0,segments:s,config:{...TI(i),...o}}),this._setActiveSegmentation(e,r,n)}addLabelmapRepresentation(e,r,n,i=TI(Et.Labelmap)){if(!Bn(r))return;const a=this.getSegmentation(n);if(!a)return;const{representationData:s}=a;if(!s.Labelmap)return this.addDefaultSegmentationRepresentation(e,r,n,Et.Labelmap,i);this.processLabelmapRepresentationAddition(r,n),this.addDefaultSegmentationRepresentation(e,r,n,Et.Labelmap,i)}async processLabelmapRepresentationAddition(e,r){const n=Bn(e);if(!n)return;const i=this.getSegmentation(r);if(!i)return;const o=n.viewport instanceof Cr,{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),this._updateLabelmapImageIdReferenceMap({segmentationId:e,referenceImageId:o,labelmapImageId: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=Bn(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=Bn(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),this._updateLabelmapImageIdReferenceMap({segmentationId:l,referenceImageId:d,labelmapImageId: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=ke.getVolume(i).imageIds}return n}getLabelmapImageIdsForImageId(e,r){const n=this._generateMapKey({segmentationId:r,referenceImageId:e});return this._labelmapImageIdReferenceMap.get(n)}getCurrentLabelmapImageIdsForViewport(e,r){const n=Bn(e);if(!n)return;const o=n.viewport.getCurrentImageId();return this.getLabelmapImageIdsForImageId(o,r)}getCurrentLabelmapImageIdForViewport(e,r){const n=Bn(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}=Bn(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=>{XS(e,o.segmentationId,o.type)});const i=this.getSegmentationRepresentations(e);return i.length>0&&i[0].active&&Jc(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})=>{XS(e,o,a)}),i}_updateLabelmapImageIdReferenceMap({segmentationId:e,referenceImageId:r,labelmapImageId:n}){const i=this._generateMapKey({segmentationId:e,referenceImageId:r});if(!this._labelmapImageIdReferenceMap.has(i)){this._labelmapImageIdReferenceMap.set(i,[n]);return}const o=this._labelmapImageIdReferenceMap.get(i),a=Array.from(new Set([...o,n]));this._labelmapImageIdReferenceMap.set(i,a)}_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})}),Jc(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})})}),Jc(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]=xs(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}_generateMapKey({segmentationId:e,referenceImageId:r}){return`${e}-${r}`}}async function yU({imageIds:t,options:e}){const r=t,n=(e==null?void 0:e.volumeId)||Tn();return await oE(n,r),{volumeId:n}}async function yme({segmentationId:t,options:e}){const r=er.getSegmentation(t),n=r.representationData.Labelmap,{volumeId:i}=await yU({imageIds:n.imageIds,options:e});r.representationData.Labelmap.volumeId=i}function TI(t){const e=lu.newInstance(),r=Ad.newInstance();return r.addPoint(0,0),t===Et.Labelmap?{cfun:e,ofun:r}:{}}const er=new vme("DEFAULT");function _a(t,e={}){return er.getSegmentationRepresentations(t,e)}function $E(t,e){const r=er;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 wU(t){return er.getSegmentationRepresentationsBySegmentationId(t)}function wme(t,e){const r=Ee(t),{viewport:n}=r,o=n.getActors().filter(a=>a.representationUID&&typeof a.representationUID=="string"&&a.representationUID.startsWith(e));n.removeActors(o.map(a=>a.uid))}function xU(t,e,r){const n=Bn(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 xme(t,e){const r=Bn(t);if(!r)return;const{renderingEngine:n,viewport:i}=r;if(!n||!i)return;const a=i.getActors().filter(e);return a.length>0?a:void 0}function Cme(t,e){const r=Gw(t,e);return r==null?void 0:r.uid}function Pp(t,e){return xme(t,r=>{var n;return(n=r.representationUID)==null?void 0:n.startsWith(`${e}-${Et.Labelmap}`)})}function Gw(t,e){return xU(t,e,r=>{var n;return(n=r.representationUID)==null?void 0:n.startsWith(`${e}-${Et.Labelmap}`)})}function Sme(t,e,r){return xU(t,e,n=>n.representationUID===CU(e,r))}function CU(t,e){return`${t}-${Et.Surface}-${e}`}function Tme(t,e,r){const n=Ee(t),{viewport:i}=n,o=Sme(i.id,r,e.segmentIndex),a=o==null?void 0:o.actor,s=e.visible;if(a){if(a.setVisibility(s),!s)return;const y=a.getMapper(),m=y.getInputData(),w=e.points,x=e.polys,C=m.getPoints().getData(),S=m.getPolys().getData();if(w.length===C.length&&x.length===S.length)return;const T=Nr.newInstance();T.getPoints().setData(w,3);const _=Ld.newInstance({values:Float32Array.from(x)});T.setPolys(_),y.setInputData(T),y.modified(),i.getRenderer().resetCameraClippingRange();return}const c=e.points,l=e.polys,f=e.color,u=Nr.newInstance();u.getPoints().setData(c,3);const d=Ld.newInstance({values:Float32Array.from(l)});u.setPolys(d);const h=ya.newInstance({});let g;h.setInputData(u);const p=yc.newInstance();p.setMapper(h),p.getProperty().setColor(f[0]/255,f[1]/255,f[2]/255),p.getProperty().setLineWidth(2);const v=CU(r,e.segmentIndex);i.addActor({uid:Tn(),actor:p,clippingFilter:g,representationUID:v}),i.resetCamera(),i.getRenderer().resetCameraClippingRange(),i.render()}function An(t){return er.getSegmentation(t)}function O1(t){return er.getColorLUT(t)}let d5={};function _me(){return d5}function Eme(t){d5=t}let _I=!1;function tu(){var e;if(!((e=d5.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 t=d5.addons.polySeg;return _I||(t.init(),_I=!0),t}function jE({segmentationId:t,type:e,data:r}){const n=An(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 Et.Labelmap:r&&(n.representationData[e]=r);break;case Et.Contour:r&&(n.representationData[e]=r);break;case Et.Surface:r&&(n.representationData[e]=r);break;default:throw new Error(`Invalid representation type ${e}`)}}function HE(t){const e=typeof t;return t!==null&&(e==="object"||e==="function")}function ag(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,HE(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(b){const D=n,O=i;return n=i=void 0,l=b,a=t.apply(O,D),a}function p(b,D){return h?window.requestAnimationFrame(b):setTimeout(b,D)}function v(b){if(h)return window.cancelAnimationFrame(b);clearTimeout(b)}function y(b){return l=b,s=p(x,e),f?g(b):a}function m(b){const D=b-c,O=b-l,L=e-D;return u?Math.min(L,o-O):L}function w(b){const D=b-c,O=b-l;return c===void 0||D>=e||D<0||u&&O>=o}function x(){const b=Date.now();if(w(b))return C(b);s=p(x,m(b))}function C(b){return s=void 0,d&&n?g(b):(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(...b){const D=Date.now(),O=w(D);if(n=b,i=this,c=D,O){if(s===void 0)return y(c);if(u)return s=p(x,e),g(c)}return s===void 0&&(s=p(x,e)),a}return E.cancel=S,E.flush=T,E.pending=_,E}const Wv=new Map;async function KE(t,e,r,n,i){const o=await r();jE({segmentationId:t,type:e,data:o}),i==null||i(),Wv.has(t)||Wv.set(t,[]);const a=Wv.get(t);return a.includes(e)||a.push(e),bme(n),ns(t),o}function bme(t){const e=r=>{Dme(r,t)};t._debouncedUpdateFunction=e,He.removeEventListener(B.SEGMENTATION_DATA_MODIFIED,t._debouncedUpdateFunction),He.addEventListener(B.SEGMENTATION_DATA_MODIFIED,t._debouncedUpdateFunction)}const Dme=ag((t,e)=>{const r=t.detail.segmentationId,n=Wv.get(r);!n||!n.length||(e(r),n.length&&ns(r))},300);function qE(t,e){const r=$E(t,e);return r?Object.entries(r.segments).reduce((i,[o,a])=>(a.visible||i.add(Number(o)),i),new Set):new Set}function Ime(t,e,r=!1){const n=Bn(t);if(!n)return;const{viewport:i}=n;wme(i.element,e),r&&i.render()}async function Ome(t,e){var l;const{segmentationId:r,type:n}=e,i=An(r);if(!i)return;let o=i.representationData[Et.Surface];if(!o&&((l=tu())!=null&&l.canComputeRequestedRepresentation(r,Et.Surface))){const f=tu();if(o=await KE(r,Et.Surface,()=>f.computeSurfaceData(r,{viewport:t}),()=>f.updateSurfaceData(r,{viewport:t})),!o)throw new Error(`No Surface data found for segmentationId ${r} even we tried to compute it`)}else!o&&!tu()&&console.debug(`No surface data found for segmentationId ${r} 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(!o){console.warn(`No Surface data found for segmentationId ${r}. Skipping render.`);return}const{geometryIds:a}=o;a!=null&&a.size||console.warn(`No Surfaces found for segmentationId ${r}. Skipping render.`);const{colorLUTIndex:s}=e,c=O1(s);a.forEach(f=>{const u=ke.getGeometry(f);if(!(u!=null&&u.data)){console.warn(`No Surfaces found for geometryId ${f}. Skipping render.`);return}const{segmentIndex:d}=u.data,g=qE(t.id,{segmentationId:r,type:n}).has(d),p=u.data,v=c[d];p.color=v.slice(0,3),p.visible=!g,Tme(t.element,p,r)}),t.render()}const SU={render:Ome,removeRepresentation:Ime};function Mme(t,e,r,n){const i=t.getViewReference(),{viewPlaneNormal:o,FrameOfReferenceUID:a}=i,s={annotationUID:(n==null?void 0:n.annotationUID)||Tn(),data:{handles:{points:r}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:e,viewPlaneNormal:o,FrameOfReferenceUID:a,referencedImageId:Pme(t,r[0],o),...n}};return on(s,t.element),s}function Pme(t,e,r){let n;if(t instanceof ar)n=XE(t,e,r);else if(t instanceof Cr){const i=Rme(t),o=Cl(i),a=ke.getVolume(o);n=cu(a,e,r)}else throw new Error("getReferencedImageId: viewport must be a StackViewport or BaseVolumeViewport");return n}function Rme(t){var r;const e=(r=t.getViewReferenceId)==null?void 0:r.call(t);if(e)return e;if(t instanceof Cr)return`volumeId:${Lme(t)}`;throw new Error("getTargetId: viewport must have a getTargetId method")}function Lme(t){var r;const e=t.getActors();if(e)return(r=e.find(n=>n.actor.getClassName()==="vtkVolume"))==null?void 0:r.uid}function XE(t,e,r){const n=t.getImageIds();if(!n||!n.length)return;const i=n.map(o=>{const{imagePositionPatient:a}=lt("imagePlaneModule",o),s=Ame(e,a,r);return{imageId:o,distance:s}});return i.sort((o,a)=>o.distance-a.distance),i[0].imageId}function Ame(t,e,r){const n=Be();Sn(n,t,e);const i=St(n,r);return Math.abs(i)}function TU(t,e){const{segmentation:r}=t.data,{segmentation:n}=e.data;return r.segmentationId===n.segmentationId&&r.segmentIndex===n.segmentIndex}class _U{constructor(e){this.getGroupKey=r=>{if(typeof r=="string")return r;const i=Ee(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=Tn()),this.annotations={},this.uid=e,He.addEventListener(Xe.IMAGE_VOLUME_MODIFIED,this._imageVolumeModifiedHandler)}setPreprocessingFn(e){this.preprocessingFn=e}}const Nme=new _U("DEFAULT"),cf=new Set;function EU(t,e=!0){const r=DU();t&&(e?Ume(t,cf,r):IU(t,cf,r)),OU(r,cf)}function kme(){const t=DU();Bme(cf,t),OU(t,cf)}function Vme(){return Array.from(cf)}function ai(t){return cf.has(t)}function Fme(){return cf.size}function bU(t){const e=ai(t);return EU(t,e),e}function DU(){return Object.freeze({added:[],removed:[],locked:[]})}function Ume(t,e,r){if(!e.has(t)){e.add(t),r.added.push(t);const n=Hr(t);n&&(n.isLocked=!0)}}function IU(t,e,r){if(e.delete(t)){r.removed.push(t);const n=Hr(t);n&&(n.isLocked=!1)}}function Bme(t,e){t.forEach(r=>{IU(r,t,e)})}function OU(t,e){(t.added.length>0||t.removed.length>0)&&(e.forEach(r=>void t.locked.push(r)),nt(He,B.ANNOTATION_LOCK_CHANGE,t))}const Gme=Object.freeze(Object.defineProperty({__proto__:null,checkAndSetAnnotationLocked:bU,getAnnotationsLocked:Vme,getAnnotationsLockedCount:Fme,isAnnotationLocked:ai,setAnnotationLocked:EU,unlockAllAnnotations:kme},Symbol.toStringTag,{value:"Module"})),Zc=new Set;function ia(t,e=!0,r=!1){e?Wme(t,r):YE(t)}function Wme(t,e=!1){const r=PU();if(!e){RU(Zc,r);const n=Hr(t);n&&(n.isSelected=!0)}if(t&&!Zc.has(t)){Zc.add(t),r.added.push(t);const n=Hr(t);n&&(n.isSelected=!0)}LU(r,Zc)}function YE(t){const e=PU();if(t){if(Zc.delete(t)){e.removed.push(t);const r=Hr(t);r.isSelected=!1}}else RU(Zc,e);LU(e,Zc)}function MU(){return Array.from(Zc)}function zme(t){return MU().filter(e=>{var n;const r=Hr(e);return((n=r==null?void 0:r.metadata)==null?void 0:n.toolName)===t})}function M1(t){return Zc.has(t)}function $me(){return Zc.size}function PU(){return Object.freeze({added:[],removed:[],selection:[]})}function RU(t,e){t.forEach(r=>{if(t.delete(r)){e.removed.push(r);const n=Hr(r);n&&(n.isSelected=!1)}})}function LU(t,e){(t.added.length>0||t.removed.length>0)&&(e.forEach(r=>void t.selection.push(r)),nt(He,B.ANNOTATION_SELECTION_CHANGE,t))}const jme=Object.freeze(Object.defineProperty({__proto__:null,deselectAnnotation:YE,getAnnotationsSelected:MU,getAnnotationsSelectedByToolName:zme,getAnnotationsSelectedCount:$me,isAnnotationSelected:M1,setAnnotationSelected:ia},Symbol.toStringTag,{value:"Module"})),Hme=t=>(t.data||(t.data={}),t.data.handles||(t.data.handles={}),t.data.handles.textBox||(t.data.handles.textBox={}),t),Kme=t=>(t.data||(t.data={}),t.data.cachedStats||(t.data.cachedStats={}),t),Vd=new Set;function AU(t,e=!0){const r=NU();t&&(e?kU(t,Vd,r):Xme(t,Vd,r)),VU(r)}function qme(){const t=NU();Vd.forEach(e=>{kU(e,Vd,t)}),VU(t)}function Kr(t){if(Hr(t))return!Vd.has(t)}function NU(){return Object.freeze({lastVisible:[],lastHidden:[],hidden:[]})}function kU(t,e,r){if(e.delete(t)){r.lastVisible.push(t);const n=Hr(t);n.isVisible=!0}}function Xme(t,e,r){e.has(t)||(e.add(t),M1(t)&&YE(t),r.lastHidden.push(t))}function VU(t){(t.lastHidden.length>0||t.lastVisible.length>0)&&(Vd.forEach(e=>void t.hidden.push(e)),nt(He,B.ANNOTATION_VISIBILITY_CHANGE,t))}function FU(t){const e=!Vd.has(t);return AU(t,e),e}const Yme=Object.freeze(Object.defineProperty({__proto__:null,checkAndSetAnnotationVisibility:FU,isAnnotationVisible:Kr,setAnnotationVisibility:AU,showAllAnnotations:qme},Symbol.toStringTag,{value:"Module"})),JE=Nme,Jme=t=>{t=Hme(t),t=Kme(t);const e=t.annotationUID,r=bU(e);t.isLocked=r;const n=FU(e);return t.isVisible=n,t};JE.setPreprocessingFn(Jme);VE(JE);function Zme(){VE(JE)}function uu(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=An(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))}function fu(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=An(e);n.representationData.Contour||(n.representationData.Contour={annotationUIDsMap:new Map});let{annotationUIDsMap:i}=n.representationData.Contour;i||(i=new Map);let o=i==null?void 0:i.get(r);o||(o=new Set,i.set(r,o)),i.set(r,o.add(t.annotationUID))}const Qme="PlanarFreehandContourSegmentationTool";function ZE(t){var o;const{polyline:e}=((o=t.data)==null?void 0:o.contour)||{};if(!e||e.length<3){console.warn("Skipping creation of new annotation due to invalid polyline:",e);return}fn(t.annotationUID),uu(t);const r=e[0],n=e[e.length-1],i={metadata:{...t.metadata,toolName:Qme,originalToolName:t.metadata.originalToolName||t.metadata.toolName},data:{cachedStats:{},handles:{points:[r,n],textBox:t.data.handles.textBox?{...t.data.handles.textBox}:void 0},contour:{...t.data.contour},spline:t.data.spline,segmentation:{...t.data.segmentation}},annotationUID:Tn(),highlighted:!0,invalidated:!0,isLocked:!1,isVisible:void 0,interpolationUID:t.interpolationUID,interpolationCompleted:t.interpolationCompleted};return on(i,t.metadata.FrameOfReferenceUID),fu(i),i}var oa;(function(t){t[t.CounterClockwise=-1]="CounterClockwise",t[t.Unknown=0]="Unknown",t[t.Clockwise=1]="Clockwise"})(oa||(oa={}));function QE(t,e){return t.minX<=e.maxX&&t.maxX>=e.minX&&t.minY<=e.maxY&&t.maxY>=e.minY}function h5(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 e1e(t,e){return Math.sqrt(h5(t,e))}const t1e=Object.freeze(Object.defineProperty({__proto__:null,distanceToPoint:e1e,distanceToPointSquared:h5,intersectAABB:QE},Symbol.toStringTag,{value:"Module"}));class UU{}class BU{constructor(e){this.storePointData=e.storePointData}getStatistics(){console.debug("InstanceCalculator getStatistics called")}}const{PointsManager:n1e}=_n;function Um(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?n1e.create3(1024):null,sumLPS:[0,0,0]}}function GU(t,e,r=null,n=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&&r&&t.pointsInShape.push(r);const i=Array.isArray(e)?e:[e];t.count+=1,r&&(t.sumLPS[0]+=r[0],t.sumLPS[1]+=r[1],t.sumLPS[2]+=r[2]),t.max.forEach((o,a)=>{const s=i[a];t.allValues[a].push(s);const c=t.count,l=s-t.runMean[a],f=l/c,u=l*f*(c-1);t.sum[a]+=s,t.runMean[a]+=f,t.m4[a]+=u*f*f*(c*c-3*c+3)+6*f*f*t.m2[a]-4*f*t.m3[a],t.m3[a]+=u*f*(c-2)-3*f*t.m2[a],t.m2[a]+=u,st.max[a]&&(t.max[a]=s,a===0&&(t.maxIJK=n?[...n]:null,t.maxLPS=r?[...r]:null))})}function r1e(t){if(t.length===0)return 0;const e=[...t].sort((n,i)=>n-i),r=Math.floor(e.length/2);return e.length%2===0?(e[r-1]+e[r])/2:e[r]}function WU(t,e){const r=t.sum.map(u=>u/t.count),n=t.m2.map(u=>Math.sqrt(u/t.count)),i=t.sumLPS.map(u=>u/t.count),o=t.m3.map((u,d)=>{const h=t.m2[d]/t.count;return h===0?0:u/(t.count*Math.pow(h,1.5))}),a=t.m4.map((u,d)=>{const h=t.m2[d]/t.count;return h===0?0:u/(t.count*h*h)-3}),s=t.allValues.map(u=>r1e(u)),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:r.length===1?r[0]:r,unit:e},stdDev:{name:"stdDev",label:"Standard Deviation",value:n.length===1?n[0]:n,unit:e},count:{name:"count",label:"Voxel Count",value:t.count,unit:null},median:{name:"median",label:"Median",value:s.length===1?s[0]:s,unit:e},skewness:{name:"skewness",label:"Skewness",value:o.length===1?o[0]:o,unit:null},kurtosis:{name:"kurtosis",label:"Kurtosis",value:a.length===1?a[0]:a,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,f=Um(l);return t.max=f.max,t.min=f.min,t.sum=f.sum,t.count=f.count,t.maxIJK=f.maxIJK,t.maxLPS=f.maxLPS,t.minIJK=f.minIJK,t.minLPS=f.minLPS,t.runMean=f.runMean,t.m2=f.m2,t.m3=f.m3,t.m4=f.m4,t.allValues=f.allValues,t.pointsInShape=f.pointsInShape,t.sumLPS=f.sumLPS,c}const ad=class ad extends UU{static statsInit(e){e.storePointData||(this.state.pointsInShape=null),this.state=Um(e.storePointData)}};ad.state=Um(!0),ad.statsCallback=({value:e,pointLPS:r=null,pointIJK:n=null})=>{GU(ad.state,e,r,n)},ad.getStatistics=e=>WU(ad.state,e==null?void 0:e.unit);let pl=ad;class zU extends BU{constructor(e){super(e),this.state=Um(e.storePointData)}statsInit(e){this.state=Um(e.storePointData)}statsCallback(e){GU(this.state,e.value,e.pointLPS,e.pointIJK)}getStatistics(e){return WU(this.state,e==null?void 0:e.unit)}}const i1e=Object.freeze(Object.defineProperty({__proto__:null,BasicStatsCalculator:pl,Calculator:UU,InstanceBasicStatsCalculator:zU,InstanceCalculator:BU},Symbol.toStringTag,{value:"Module"}));function du(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 Vo(t,e){return Math.sqrt(du(t,e))}function YS(t,e){const[r,n]=t,[i,o]=e,a=2*i-r,s=2*o-n;return[a,s]}const o1e=Object.freeze(Object.defineProperty({__proto__:null,distanceToPoint:Vo,distanceToPointSquared:du,mirror:YS},Symbol.toStringTag,{value:"Module"}));function lf(t){const[e,r]=t;return Vo(e,r)}function hh(t){const[e,r]=t,n=Vo(e,r),i=[e[0]-n,e[1]-n],o=[e[0]+n,e[1]+n];return[i,o]}const a1e=Object.freeze(Object.defineProperty({__proto__:null,getCanvasCircleCorners:hh,getCanvasCircleRadius:lf},Symbol.toStringTag,{value:"Module"}));function Ww(t,e,r={}){return r.precalculated||e8(t,r),r.precalculated(e)}const e8=(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 g5(t){const[e,r,n,i]=t,o=[n[0],r[1]],a=[i[0],e[1]];return[o,a]}const s1e=Object.freeze(Object.defineProperty({__proto__:null,getCanvasEllipseCorners:g5,pointInEllipse:Ww,precalculatePointInEllipse:e8},Symbol.toStringTag,{value:"Module"}));function p5(t,e,r){let n;const i=du(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:du(r,n)}}function P1(t,e,r){return p5(t,e,r).distanceSquared}function xi(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(P1(t,e,r))}function W2(t){return typeof t=="number"?t?t<0?-1:1:t===t?0:NaN:NaN}function m5(t,e,r,n,i=!1){const[o,a]=t,[s,c]=e,[l,f]=r,[u,d]=n;if(i){const O=(o-s)*(f-d)-(a-c)*(l-u);if(Math.abs(O)<1e-10)return;const L=((o-l)*(f-d)-(a-f)*(l-u))/O,P=o+L*(s-o),k=a+L*(c-a);return[P,k]}const h=c-a,g=o-s,p=s*a-o*c,v=h*l+g*f+p,y=h*u+g*d+p;if(v!==0&&y!==0&&W2(v)===W2(y))return;const m=d-f,w=l-u,x=u*f-l*d,C=m*o+w*a+x,S=m*s+w*c+x;if(C!==0&&S!==0&&W2(C)===W2(S))return;const T=h*w-m*g;let _;_=g*x-w*p;const E=_/T;_=m*p-h*x;const b=_/T;return[E,b]}const Ug=.01;function zv(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-Ug&&r[0]<=i+Ug&&r[1]>=o-Ug&&r[1]<=a+Ug))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)<=Ug}const c1e=Object.freeze(Object.defineProperty({__proto__:null,distanceToPoint:xi,distanceToPointSquared:P1,distanceToPointSquaredInfo:p5,intersectLine:m5,isPointOnLineSegment:zv},Symbol.toStringTag,{value:"Module"}));function $U(t){if(t.length<3)return!1;const e=t.length,r=t[0],n=t[e-1],i=du(r,n);return pf(0,i)}function wf(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(wf(l,e))return!1}const s=!(o===void 0?$U(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 L1(t){const e=t.length;let r=0,n=e-1;for(let i=0;i=0?1:-1}function l1e(t){const e=Be(),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 $2(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 r8(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];n8(e,r,c,f)&&i.push([s,l])}return i}const f1e=.01;function jU(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])||!(zv(t,e,r)||zv(t,e,n)||zv(r,n,t)))return;const m=g[0]>p[0]?g[0]:p[0],w=g[1]p[2]?g[2]:p[2],C=g[3]{const p=g[0],v=e[g[0]],y=e[g[1]],m=jU(l,d,v,y),w=du(l,m);return{sourceLineSegmentId:p,coordinate:m,targetStartPointDistSquared:w}});h.sort((g,p)=>g.targetStartPointDistSquared-p.targetStartPointDistSquared),h.forEach(g=>{const{sourceLineSegmentId:p,coordinate:v}=g,y={type:Cd.Intersection,coordinates:v,position:gh.Edge,direction:a,visited:!1,next:null},m={...y,direction:N0.Unknown,cloned:!0};a===N0.Entering?y.next=m:m.next=y;let w=i.get(p);w||(w=[],i.set(p,w)),r.push(y),w.push(m),a*=-1})}for(let s=0,c=e.length;s({intersectionPoint:h,lineSegStartDistSquared:du(f,h.coordinates)})).sort((h,g)=>h.lineSegStartDistSquared-g.lineSegStartDistSquared).map(({intersectionPoint:h})=>h).forEach(h=>n.push(h))}return EI(r),EI(n),{targetPolylinePoints:r,sourcePolylinePoints:n}}function KU(t){for(let e=0,r=t.length;e=f&&console.warn("Maximum iterations reached in mergePolylines, possible infinite loop detected"),s}function $w(t,e){const r=Bm(t),n=Bm(e),i=St(n,r);pf(-1,i)||(e=e.slice().reverse());const{targetPolylinePoints:o}=HU(t,e);let a=null;const s=[];let c=0;const l=t.length*2;for(;(a=KU(o))&&c=h&&console.warn("Maximum inner iterations reached in subtractPolylines, possible infinite loop detected"),s.push(f)}return c>=l&&console.warn("Maximum outer iterations reached in subtractPolylines, possible infinite loop detected"),s}function qU(t,e,r,n=!0){let i,o;n?(o=t.length-1,i=0):(o=0,i=1);for(let a=i;ad&&(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(xr(d,e))});const c=Math.min(...s),l=s.indexOf(c);return{segment:a[l],distance:c}}const d0=.001,g1e=(t,e)=>{let r,n,i;if(t instanceof ar){const a=t.getImageData();if(!a)return;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=Be();Ln(g,f,l);const p=Math.abs(St(g,u)),v=Math.abs(St(g,d)),y=Math.abs(St(g,h));let m;if(Math.abs(1-p)m4(t,e){const{xDir:i,yDir:o,spacing:a}=n,s=Ee(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=Be();jn(u,f,l);const d=Math.abs(St(u,i)),h=Math.abs(St(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=m4(p,r),y=Jt();Yr(y,r,p),ws(y,y[0]/v,y[1]/v);const m=v/g;for(let w=1;w<=g;w++)e.push([p[0]+m*y[0]*w,p[1]+m*y[1]*w])}else e.push(r);return g},v1e=(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!(xr(t,u)>n||xr(e,u)>xr(e,r))},y1e=1e-6;function YU(t){let e;const r=TE(t,50);for(let a=0;a<3;a++)if(r.every((s,c,l)=>Math.abs(s[a]-l[0][a])[o[0],o[1]]).sort((o,a)=>o[0]===a[0]?o[1]-a[1]:o[0]-a[0]);function r(o,a,s){return(a[0]-o[0])*(s[1]-o[1])-(a[1]-o[1])*(s[0]-o[0])}const n=[];for(const o of e){for(;n.length>=2&&r(n[n.length-2],n[n.length-1],o)<=0;)n.pop();n.push(o)}const i=[];for(let o=e.length-1;o>=0;o--){const a=e[o];for(;i.length>=2&&r(i[i.length-2],i[i.length-1],a)<=0;)i.pop();i.push(a)}return n.pop(),i.pop(),n.concat(i)}const Rf=Object.freeze(Object.defineProperty({__proto__:null,addCanvasPointsToArray:m1e,containsPoint:wf,containsPoints:R1,convexHull:JU,decimate:o8,getAABB:xf,getArea:L1,getClosestLineSegmentIntersection:h1e,getFirstLineSegmentIntersectionIndexes:qU,getLineSegmentIntersectionsCoordinates:XU,getLineSegmentIntersectionsIndexes:r8,getNormal2:Bm,getNormal3:u1e,getSignedArea:t8,getSubPixelSpacingAndXYDirections:g1e,getWindingDirection:$v,intersectPolyline:i8,isClosed:$U,isPointInsidePolyline3D:a8,mergePolylines:zw,pointCanProjectOnLine:v1e,pointsAreWithinCloseContourProximity:p1e,projectTo2D:YU,subtractPolylines:$w},Symbol.toStringTag,{value:"Module"}));function w1e(t,e,r,n){const i=[t,e],o=[t+r,e],a=[t+r,e],s=[t+r,e+n],c=[t+r,e+n],l=[t,e+n],f=[t,e+n];return{top:[i,o],right:[a,s],bottom:[c,l],left:[f,[t,e]]}}function s8(t,e){if(t.length!==4||e.length!==2)throw Error("rectangle:[left, top, width, height] or point: [x,y] not defined correctly");const[r,n,i,o]=t;let a=655535;const s=w1e(r,n,i,o);return Object.keys(s).forEach(c=>{const[l,f]=s[c],u=xi(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 bI;const u=[0,1];if(j2(r[0]-o,l,u)&&j2(o-r[2],-l,u)&&j2(r[1]-a,f,u)&&j2(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),bI}return S1e}const T1e=Object.freeze(Object.defineProperty({__proto__:null,findClosestPoint:JS,liangBarksyClip:lp},Symbol.toStringTag,{value:"Module"}));function _1e(t,e){const[r,n]=t,[i,o]=e,a=Sn(Be(),n,r),s=Sn(Be(),i,o),c=St(a,s),l=ra(a),f=ra(s),u=c/(l*f);return Math.acos(u)*180/Math.PI}function E1e(t,e){const[r,n]=t,[i,o]=e,a=Ts(Jt(),n,r),s=Ts(Jt(),i,o),c=p4(a,s),l=Oy(a),f=Oy(s),u=c/(l*f);return Math.acos(u)*(180/Math.PI)}function ph(t,e){return t[0].length===3?_1e(t,e):E1e(t,e)}const b1e=Object.freeze(Object.defineProperty({__proto__:null,angleBetweenLines:ph},Symbol.toStringTag,{value:"Module"})),D1e=Object.freeze(Object.defineProperty({__proto__:null,BasicStatsCalculator:i1e,aabb:t1e,angle:b1e,circle:a1e,ellipse:s1e,lineSegment:c1e,point:o1e,polyline:Rf,rectangle:x1e,vec2:T1e},Symbol.toStringTag,{value:"Module"}));function Ec(t,e,r,n){var g,p,v;const{canvasToWorld:i,worldToCanvas:o}=r,{data:a}=t,{targetWindingDirection:s}=e;let{points:c}=e,l=$v(c);(g=n==null?void 0:n.decimate)!=null&&g.enabled&&(c=o8(e.points,(p=n==null?void 0:n.decimate)==null?void 0:p.epsilon));let{closed:f}=e;const u=c.length,d=new Array(u);$v(c);const h=AF(t);if(f===void 0){let y=!1;if(c.length>3){const m=du(c[0],c[u-1]);y=Kt(0,m)}f=y}if((n==null?void 0:n.updateWindingDirection)!==!1){let y=h?h.data.contour.windingDirection*-1:s;y===void 0&&(y=l),y!==l&&c.reverse();const m=(((v=a.handles)==null?void 0:v.points)??[]).map(o);m.length>2&&$v(m)!==y&&a.handles.points.reverse(),l=y}for(let y=0;y{ze.svgNodeCache[i][a].touched=!1}),{svgLayerElement:o,svgNodeCacheForCanvas:ze.svgNodeCache,getSvgNode:P1e.bind(this,i),appendNode:R1e.bind(this,o,i),setNodeTouched:L1e.bind(this,i),clearUntouched:A1e.bind(this,o,i)}}function M1e(t){const e=`.${I1e}`,r=t.querySelector(e);return r==null?void 0:r.querySelector(":scope > .svg-layer")}function P1e(t,e){if(ze.svgNodeCache[t]&&ze.svgNodeCache[t][e])return ze.svgNodeCache[t][e].domRef}function R1e(t,e,r,n){if(!ze.svgNodeCache[e])return null;ze.svgNodeCache[e][n]={touched:!0,domRef:r},t.appendChild(r)}function L1e(t,e){ze.svgNodeCache[t]&&ze.svgNodeCache[t][e]&&(ze.svgNodeCache[t][e].touched=!0)}function A1e(t,e){ze.svgNodeCache[e]&&Object.keys(ze.svgNodeCache[e]).forEach(r=>{const n=ze.svgNodeCache[e][r];!n.touched&&n.domRef&&(t.removeChild(n.domRef),delete ze.svgNodeCache[e][r])})}function ZU(t,e){const r=O1e(t);e(r),r.clearUntouched()}function Sl(t,e,r){return`${t}::${e}::${r}`}function Za(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 Tl(t,e){Object.keys(t).forEach(r=>{const n=t[r];n!==void 0&&n!==""&&e.setAttribute(r,n)})}function aa(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=Sl(e,"circle",r),y=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(y)Za(m,y),t.setNodeTouched(v);else{const w=document.createElementNS(p,"circle");a!==""&&w.setAttribute("data-id",a),Tl(m,w),t.appendNode(w,v)}}function c8(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=Sl(e,"ellipse",r),h=t.getSvgNode(d),[g,p,v,y]=n,m=Math.hypot(v[0]-y[0],v[1]-y[1]),w=Math.hypot(p[0]-g[0],p[1]-g[1]),x=Math.atan2(v[1]-y[1],v[0]-y[0])*180/Math.PI,C=[(v[0]+y[0])/2,(p[1]+g[1])/2],S=m/2,T=w/2,_={cx:`${C[0]}`,cy:`${C[1]}`,rx:`${S}`,ry:`${T}`,stroke:a,fill:"transparent",transform:`rotate(${x} ${C[0]} ${C[1]})`,"stroke-width":f,"stroke-dasharray":l};if(h)Za(_,h),t.setNodeTouched(d);else{const E=document.createElementNS(u,"ellipse");o!==""&&E.setAttribute("data-id",o),Tl(_,E),t.appendNode(E,d)}}function N1e(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];c8(t,e,r,[c,s,l,f],o={},a="")}function v5(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=Sl(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 w=parseFloat(s)*1.5,x=n[0]-w*.5,C=n[1]-w*.5;v={x:`${x}`,y:`${C}`,width:`${w}`,height:`${w}`,stroke:a,fill:f,"stroke-width":h,rx:`${w*.1}`,opacity:d}}else throw new Error(`Unsupported handle type: ${u}`);const y=t.getSvgNode(p);if(y)Za(v,y),t.setNodeTouched(p);else{const m=document.createElementNS(g,u);Tl(v,m),t.appendNode(m,p)}}function nr(t,e,r,n,i={}){n.forEach((o,a)=>{v5(t,e,r,o,i,a)})}function mn(t,e,r,n,i,o={},a=""){if(isNaN(n[0])||isNaN(n[1])||isNaN(i[0])||isNaN(i[1]))return;const{color:s="rgb(0, 255, 0)",width:c=10,lineWidth:l,lineDash:f,markerStartId:u=null,markerEndId:d=null,shadow:h=!1,strokeOpacity:g=1}=o,p=l||c,v="http://www.w3.org/2000/svg",y=Sl(e,"line",r),m=t.getSvgNode(y),w=t.svgLayerElement.id,x=h?`filter:url(#shadow-${w});`:"",C={x1:`${n[0]}`,y1:`${n[1]}`,x2:`${i[0]}`,y2:`${i[1]}`,stroke:s,style:x,"stroke-width":p,"stroke-dasharray":f,"marker-start":u?`url(#${u})`:"","marker-end":d?`url(#${d})`:"","stroke-opacity":g};if(m)Za(C,m),t.setNodeTouched(y);else{const S=document.createElementNS(v,"line");a!==""&&S.setAttribute("data-id",a),Tl(C,S),t.appendNode(S,y)}}function QU(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};mn(t,e,"1",h.start,h.end,{color:a,width:s,lineWidth:c,lineDash:l}),mn(t,e,"2",g.start,g.end,{color:a,width:s,lineWidth:c,lineDash:l}),mn(t,e,"3",p.start,p.end,{color:a,width:s,lineWidth:c,lineDash:l})}function xc(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,markerStartId:d=null,markerEndId:h=null}=i,g=l||a,p="http://www.w3.org/2000/svg",v=Sl(e,"polyline",r),y=t.getSvgNode(v);let m="";for(const x of n)m+=`${x[0].toFixed(1)}, ${x[1].toFixed(1)} `;if(u){const x=n[0];m+=`${x[0]}, ${x[1]}`}const w={points:m,stroke:o,fill:s,"fill-opacity":c,"stroke-width":g,"stroke-dasharray":f,"marker-start":d?`url(#${d})`:"","marker-end":h?`url(#${h})`:""};if(y)Za(w,y),t.setNodeTouched(v);else{const x=document.createElementNS(p,"polyline");Tl(w,x),t.appendNode(x,v)}}function nu(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=Sl(e,"path",r),y=t.getSvgNode(v);let m="";for(let x=0,C=a.length;xm.length){for(let C=0;C0?JS(n,i):i,c=U1e(o),l=JS(c,s),f=Object.assign({color:"rgb(255, 255, 0)",lineWidth:"1",lineDash:"2,3"},a);mn(t,e,`link-${r}`,s,l,f)}function U1e(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 ao(t,e,r,n,i,o,a,s={}){const c=Object.assign({handleRadius:"6",centering:{x:!1,y:!0}},s),l=Cf(t,e,r,n,i,c);return F1e(t,e,r,o,i,l,c),l}function l8(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=Sl(e,"rect",r),h=t.getSvgNode(d),[g,p,v,y]=n,m=Math.hypot(g[0]-p[0],g[1]-p[1]),w=Math.hypot(g[0]-v[0],g[1]-v[1]),x=[(y[0]+g[0])/2,(y[1]+g[1])/2],C=[(v[0]+g[0])/2,(v[1]+g[1])/2],S=Math.atan2(x[1]-C[1],x[0]-C[0])*180/Math.PI,T={x:`${x[0]-m/2}`,y:`${x[1]-w/2}`,width:`${m}`,height:`${w}`,stroke:a,fill:"transparent",transform:`rotate(${S} ${x[0]} ${x[1]})`,"stroke-width":f,"stroke-dasharray":l};if(h)Za(T,h),t.setNodeTouched(d);else{const _=document.createElementNS(u,"rect");o!==""&&_.setAttribute("data-id",o),Tl(T,_),t.appendNode(_,d)}}function A1(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]];l8(t,e,r,[s,c,l,f],o,a)}const OI="http://www.w3.org/2000/svg";function y5(t,e,r,n,i,o={}){if(isNaN(n[0])||isNaN(n[1])||isNaN(i[0])||isNaN(i[1]))return;const{viaMarker:a=!1,color:s="rgb(0, 255, 0)",markerSize:c=10}=o;if(!a){B1e(t,e,r,n,i,o);return}const l=t.svgLayerElement.id,u=`${`arrow-${e}`}-${l}`,d=t.svgLayerElement.querySelector("defs");let h=d.querySelector(`#${u}`);if(h){h.setAttribute("markerWidth",`${c}`),h.setAttribute("markerHeight",`${c}`);const g=h.querySelector("path");g&&g.setAttribute("fill",s)}else{h=document.createElementNS(OI,"marker"),h.setAttribute("id",u),h.setAttribute("viewBox","0 0 10 10"),h.setAttribute("refX","8"),h.setAttribute("refY","5"),h.setAttribute("markerWidth",`${c}`),h.setAttribute("markerHeight",`${c}`),h.setAttribute("orient","auto");const g=document.createElementNS(OI,"path");g.setAttribute("d","M 0 0 L 10 5 L 0 10 z"),g.setAttribute("fill",s),h.appendChild(g),d.appendChild(h)}o.markerEndId=u,mn(t,e,r,n,i,o)}function B1e(t,e,r,n,i,o={}){const{color:a="rgb(0, 255, 0)",width:s=2,lineWidth:c,lineDash:l}=o,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};mn(t,e,r,n,i,{color:a,width:s,lineWidth:c,lineDash:l}),mn(t,e,"2",d.start,d.end,{color:a,width:s,lineWidth:c,lineDash:l}),mn(t,e,"3",h.start,h.end,{color:a,width:s,lineWidth:c,lineDash:l})}function eB(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=Sl(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]),y={x:`${g[0]}`,y:`${g[1]}`,width:`${p}`,height:`${v}`,stroke:a,fill:"black","stroke-width":f,"stroke-dasharray":l};if(h)Za(y,h),t.setNodeTouched(d);else{const m=document.createElementNS(u,"rect");Tl(y,m),t.appendNode(m,d)}}const G1e=Object.freeze(Object.defineProperty({__proto__:null,draw:ZU,drawArrow:y5,drawCircle:aa,drawEllipse:N1e,drawEllipseByCoordinates:c8,drawFan:QS,drawHandle:v5,drawHandles:nr,drawHeight:QU,drawLine:mn,drawLinkedTextBox:ao,drawPath:nu,drawPolyline:xc,drawRect:A1,drawRectByCoordinates:l8,drawRedactionRect:eB,drawTextBox:Cf,setAttributesIfNecessary:Za,setNewAttributesIfValid:Tl},Symbol.toStringTag,{value:"Module"}));function tB(t,e){const r=Ee(t),{renderingEngineId:n,viewportId:i}=r,o=Dr(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=Ee(e);if(!r)return;if(!jr(r.renderingEngineId)){console.warn("rendering Engine has been destroyed");return}const i=tB(e,[W1e,z1e,$1e]),{renderingEngineId:o,viewportId:a}=r,s={element:e,renderingEngineId:o,viewportId:a};ZU(e,c=>{let l=!1;const f=u=>{if(u.renderAnnotation){const d=u.renderAnnotation(r,c);l=l||d}};i.forEach(f),l&&nt(e,B.ANNOTATION_RENDERED,{...s})})}_reset(){window.cancelAnimationFrame(this._animationFrameHandle),this._needsRender.clear(),this._animationFrameSet=!1,this._animationFrameHandle=null,this._setAllViewportsToBeRenderedNextFrame()}}const u8=new j1e;function sg(t){u8.renderViewport(t)}function Ne(t){t.length&&t.forEach(e=>{const r=Bn(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;sg(i)})}function nB(t,e){const r=t.length,n=[];for(let i=0;i{const i=n.getCamera();return Math.abs(St(i.viewPlaneNormal,e.viewPlaneNormal))>r})}function Ct(t,e,r=!0){const n=Ee(t),{renderingEngine:i,FrameOfReferenceUID:o}=n;let a=i.getViewports();a=nB(a,o),a=jw(a,e);const s=i.getViewport(n.viewportId);return r&&(a=rB(a,s.getCamera())),a.map(l=>l.id)}const Y1e=Object.freeze(Object.defineProperty({__proto__:null,filterViewportsWithFrameOfReferenceUID:nB,filterViewportsWithParallelNormals:rB,filterViewportsWithToolEnabled:jw,getViewportIdsWithToolToRender:Ct},Symbol.toStringTag,{value:"Module"})),w5="PlanarFreehandContourSegmentationTool";function Sf(t,e){const r=t.length,n=new Array(r);for(let i=0;i{const n=r,i=Sf(n.data.contour.polyline,t);return{annotation:n,polyline:i}})}function Kw(t,e,r){b1(e,r),uu(r);const{contour:n}=r.data,i=Sf(n.polyline,t);Ec(r,{points:i,closed:n.closed,targetWindingDirection:e.data.contour.windingDirection===oa.Clockwise?oa.CounterClockwise:oa.Clockwise},t);const{element:o}=t;h8(t,[e,r])}function d8(t,e,r,n,i){var m;if(!Vw(w5)){console.warn(`${w5} is not registered in cornerstone. Cannot combine polylines.`);return}const o=i[0],a=wf(r,o),s=iB(t,e),c=new Set(s),l=new Map,f=(w,x)=>{let C=l.get(w);C||(C=[],l.set(w,C)),C.push(x),c.delete(x)},u=[];if(a){const w=zw(r,i);u.push(w),Array.from(c.keys()).forEach(x=>f(w,x))}else $w(r,i).forEach(x=>{u.push(x),Array.from(c.keys()).forEach(C=>{R1(x,C.polyline)&&f(x,C)})});Array.from(l.values()).forEach(w=>w.forEach(x=>kw(x.annotation)));const{element:d}=t,{metadata:h,data:g}=e,{handles:p,segmentation:v}=g,{textBox:y}=p;fn(n.annotationUID),fn(e.annotationUID),uu(n),uu(e);for(let w=0;wb1(C,S.annotation))}h8(t,[e,n])}function oB(t,e,r){const n=t.canvasToWorld(r[0]),i=t.canvasToWorld(r[r.length-1]),o={metadata:{...e.metadata,toolName:w5,originalToolName:e.metadata.originalToolName||e.metadata.toolName},data:{cachedStats:{},handles:{points:[n,i],textBox:e.data.handles.textBox?{...e.data.handles.textBox}:void 0},contour:{polyline:[],closed:!0},spline:e.data.spline,segmentation:{...e.data.segmentation}},annotationUID:Tn(),highlighted:!0,invalidated:!0,isLocked:!1,isVisible:void 0,interpolationUID:e.interpolationUID,interpolationCompleted:e.interpolationCompleted};return Ec(o,{points:r,closed:!0,targetWindingDirection:oa.Clockwise},t),o}function h8(t,e){const{element:r}=t,n=new Set([w5]);e.forEach(i=>{n.add(i.metadata.toolName)});for(const i of n.values())if(Vw(i)){const o=Ct(r,i);Ne(o)}}function qw(t,e){const r=[],n=new Set,i=new Set;for(let o=0;o[...r]);let e=t[0].map(r=>[...r]);for(let r=1;rx5(o.data.contour.polyline,r)),i=e.map(o=>x5(o.data.contour.polyline,r));return qw(n,i)}function x5(t,e){const r=t.length,n=new Array(r);for(let i=0;i[...n]);let r=t.map(n=>[...n]);for(let n=0;nx5(o.data.contour.polyline,r)),i=e.map(o=>x5(o.data.contour.polyline,r));return Xw(n,i)}const t2e="PlanarFreehandContourSegmentationTool";function aB(t,e,r,n){const i=new Map;return r.forEach(o=>{if(o.length<3)return;const a={annotationUID:Tn(),data:{contour:{closed:!0,polyline:o},segmentation:{segmentationId:e,segmentIndex:n},handles:{}},handles:{},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:t2e,...t.getViewReference()}};on(a,t.element);const s=(i==null?void 0:i.get(n))||new Set;s.add(a.annotationUID),i.set(n,s)}),i}function MI(t,e){const r=[],{annotationUIDsMap:n}=t,i=n.get(e);for(const o of i){const a=Hr(o),{polyline:s}=a.data.contour;r.push(s)}return r}function sB(t,e,r,n){if(!e||!e.representationData.Contour)return;const i=e.representationData.Contour,{annotationUIDsMap:o}=i;if(!o||!o.get(r)||!o.get(n))return;const a=MI(i,r),s=MI(i,n),c=a.map(f=>Sf(f,t)),l=s.map(f=>Sf(f,t));return{polyLinesCanvas1:c,polyLinesCanvas2:l}}function n2e(t,e,r,n,{name:i,segmentIndex:o,color:a}){const{polyLinesCanvas1:s,polyLinesCanvas2:c}=sB(t,e,r,n)||{};if(!s||c)return;const f=qw(s,c).map(g=>f8(g,t)),u=aB(t,e.segmentationId,f,o),d=e.representationData.Contour,{annotationUIDsMap:h}=d;h&&h.set(o,u.get(o))}function r2e(t,e,r,n,{name:i,segmentIndex:o,color:a}){const{polyLinesCanvas1:s,polyLinesCanvas2:c}=sB(t,e,r,n)||{};if(!s||c)return;const f=Xw(s,c).map(g=>f8(g,t)),u=aB(t,e.segmentationId,f,o),d=e.representationData.Contour,{annotationUIDsMap:h}=d;h&&h.set(o,u.get(o))}function N1(t){var e;return!!((e=t.data)!=null&&e.segmentation)}function cB(t,e,r){const n=[],i=xf(e);for(let o=0;oa.isContourHole),o=n.filter(a=>!a.isContourHole);if(i.length>0){const a=i[0];l2e(t,a.targetAnnotation,e),uB(t,[e,a.targetAnnotation]);return}if(o.length!==0){if(!Vw(C5)){console.warn(`${C5} is not registered in cornerstone. Cannot process multiple intersections.`);return}o2e(t,e,r,o)}}function o2e(t,e,r,n){const{element:i}=t,o=[e],a=[],s=[];n.forEach(({targetAnnotation:d})=>{const h=c2e(t,d);s.push(...h),o.push(d)});const c=r[0];if(n.some(({targetPolyline:d})=>wf(d,c))){let d=r;n.forEach(({targetPolyline:h})=>{d=zw(d,h)}),a.push(d)}else n.forEach(({targetPolyline:d})=>{const h=$w(d,r);a.push(...h)});o.forEach(d=>{fn(d.annotationUID),uu(d)}),s.forEach(d=>kw(d.annotation));const f=n[0].targetAnnotation,u=[];a.forEach(d=>{if(!d||d.length<3){console.warn("Skipping creation of new annotation due to invalid polyline:",d);return}const h=a2e(t,f,d);on(h,i),fu(h),rn(h,t.element),u.push(h)}),s2e(t,s,u),uB(t,o)}function a2e(t,e,r){const n=t.canvasToWorld(r[0]),i=t.canvasToWorld(r[r.length-1]),o={metadata:{...e.metadata,toolName:C5,originalToolName:e.metadata.originalToolName||e.metadata.toolName},data:{cachedStats:{},handles:{points:[n,i],textBox:e.data.handles.textBox?{...e.data.handles.textBox}:void 0},contour:{polyline:[],closed:!0},spline:e.data.spline,segmentation:{...e.data.segmentation}},annotationUID:Tn(),highlighted:!0,invalidated:!0,isLocked:!1,isVisible:void 0,interpolationUID:e.interpolationUID,interpolationCompleted:e.interpolationCompleted};return Ec(o,{points:r,closed:!0,targetWindingDirection:oa.Clockwise},t),o}function s2e(t,e,r){e.forEach(n=>{const i=r.find(o=>{const a=g8(o.data.contour.polyline,t);return R1(a,n.polyline)});i&&b1(i,n.annotation)})}function c2e(t,e){return D1(e).map(r=>{const n=r,i=g8(n.data.contour.polyline,t);return{annotation:n,polyline:i}})}function l2e(t,e,r){b1(e,r),uu(r);const{contour:n}=r.data,i=g8(n.polyline,t);Ec(r,{points:i,closed:n.closed,targetWindingDirection:e.data.contour.windingDirection===oa.Clockwise?oa.CounterClockwise:oa.Clockwise},t)}function g8(t,e){const r=t.length,n=new Array(r);for(let i=0;i{n.add(i.metadata.toolName)});for(const i of n.values())if(Vw(i)){const o=Ct(r,i);Ne(o)}}const{isEqual:PI}=_n;function p8(t){const{metadata:e}=t;return LV().filter(r=>{if(r.FrameOfReferenceUID===e.FrameOfReferenceUID){const n=r.viewport,{viewPlaneNormal:i,viewUp:o}=n.getCamera();return PI(i,e.viewPlaneNormal)&&(!e.viewUp||PI(o,e.viewUp))}}).map(r=>r.viewport)}async function u2e(t,e,r,n=!0){const i=typeof t=="string"?Hr(t):t,o=typeof e=="string"?Hr(e):e;if(!i||!o)throw new Error("Both source and target annotations must be valid");r||(r=f2e(i));const a=Sf(i.data.contour.polyline,r),s=Sf(o.data.contour.polyline,r),c=Hw(a,s);if(!c.hasIntersection){console.warn("No intersection found between the two annotations");return}if(c.isContourHole){if(!n){console.warn("Hole processing is disabled");return}Kw(r,o,i)}else d8(r,o,s,i,a)}function f2e(t){const e=p8(t);if(!e.length)throw new Error("No viewport found for the annotation");return e[0]}const d2e=Object.freeze(Object.defineProperty({__proto__:null,addContourSegmentationAnnotation:fu,addition:n2e,areSameSegment:TU,checkIntersection:Hw,combinePolylines:d8,contourSegmentationOperation:u2e,convertContourPolylineToCanvasSpace:Sf,convertContourPolylineToWorld:f8,convertContourSegmentationAnnotation:ZE,createNewAnnotationFromPolyline:oB,createPolylineHole:Kw,findAllIntersectingContours:cB,getContourHolesData:iB,isContourSegmentationAnnotation:N1,processMultipleIntersections:lB,removeContourSegmentationAnnotation:uu,subtractAnnotationPolylines:e2e,subtractMultiplePolylineSets:Q1e,subtractPolylineSets:Xw,subtraction:r2e,unifyAnnotationPolylines:Z1e,unifyMultiplePolylineSets:J1e,unifyPolylineSets:qw,updateViewportsForAnnotations:h8},Symbol.toStringTag,{value:"Module"}));function h2e(t){if(!t)throw new Error(`No contours found for geometryId ${t.id}`);const e=t.id;if(t.type!==nl.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 g2e(t,e,r,n){r.size?t.render():p2e(t,e,n)}function p2e(t,e,r){const{segmentationId:n}=r,i=new Map;e.forEach(o=>{const a=ke.getGeometry(o);if(!a){console.warn(`No geometry found for geometryId ${o}. Skipping render.`);return}const s=a.data.segmentIndex;h2e(a);const c=qa.getStyle({viewportId:t.id,segmentationId:n,type:Et.Contour,segmentIndex:s}),l=a.data,f=t.getCamera().viewPlaneNormal;l.contours.forEach(u=>{const{points:d,color:h,id:g}=u,p=XE(t,d[0],f),v={annotationUID:Tn(),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}},y=t.element;on(v,y),fu(v)}),c&&i.set(s,c)}),t.render()}function m2e(t,e,r=!1){const n=An(e),{annotationUIDsMap:i}=n.representationData.Contour;i.forEach(o=>{o.forEach(a=>{fn(a)})})}function fB(t){const e=cme(t);if(e)return e;const r=An(t);if(!r)throw new Error(`No segmentation found for segmentationId ${t}`);let n;if(r.representationData.Labelmap)n=v2e(r,t);else if(r.representationData.Contour)n=x2e(r);else if(r.representationData.Surface)n=C2e(r);else throw new Error(`Unsupported segmentation type: ${r.representationData}`);return lme(t,n),n}function v2e(t,e){const r=t.representationData[Et.Labelmap],n=new Set;return r.imageIds?w2e(n,r.imageIds):y2e(n,e),Array.from(n).map(Number).sort((i,o)=>i-o)}function y2e(t,e){ke.getVolume(e).voxelManager.forEach(({value:n})=>{n!==0&&t.add(n)})}function w2e(t,e){e.forEach(r=>{ke.getImage(r).voxelManager.getScalarData().forEach(o=>{o!==0&&t.add(o)})})}function x2e(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=ke.getGeometry(i);n.add(o.data.segmentIndex)}),Array.from(n).sort((i,o)=>i-o)}function C2e(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 h0=new Map,RI=new Map;function S2e(t,e,r=!1){const n=Bn(t);if(!n)return;const{viewport:i}=n;m2e(t,e),r&&i.render()}async function T2e(t,e){var l,f;const{segmentationId:r}=e,n=An(r);if(!n)return;let i=n.representationData[Et.Contour];const o=tu();if(!i&&((l=tu())!=null&&l.canComputeRequestedRepresentation(r,Et.Contour))&&!h0.get(t.id)?(h0.set(t.id,!0),i=await KE(r,Et.Contour,()=>o.computeContourData(r,{viewport:t}),()=>{}),h0.set(t.id,!1)):!i&&!tu()&&console.debug(`No contour data found for segmentationId ${r} 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.`),!i||!((f=i.geometryIds)!=null&&f.length))return;let a=!1;const s=t.getCamera().viewPlaneNormal;i.annotationUIDsMap&&(a=!E2e(i.annotationUIDsMap,s)),i.geometryIds.length>0&&(a=!_2e(i.geometryIds,s));const c=RI.get(t.id)||new Set;if(a&&!h0.get(t.id)&&!c.has(r)&&t.viewportStatus===Ao.RENDERED){h0.set(t.id,!0);const u=fB(r),h=(await o.computeSurfaceData(r,{segmentIndices:u,viewport:t})).geometryIds,g=[];for(const m of h.values()){const x=ke.getGeometry(m).data;g.push({points:x.points,polys:x.polys,segmentIndex:x.segmentIndex,id:x.segmentIndex})}const p=await o.clipAndCacheSurfacesForViewport(g,t),v=o.extractContourData(p),y=o.createAndAddContourSegmentationsFromClippedSurfaces(v,t,r);i.annotationUIDsMap=new Map([...i.annotationUIDsMap,...y]),c.add(r),RI.set(t.id,c),h0.set(t.id,!1)}g2e(t,i.geometryIds,i.annotationUIDsMap,e)}function _2e(t,e){var u,d,h;let r=null,n=null;for(const g of t){const p=ke.getGeometry(g);if(!p)continue;const v=p.data;if(((h=(d=(u=v.contours)==null?void 0:u[0])==null?void 0:d.points)==null?void 0:h.length)>=3){r=p,n=v;break}}if(!r||!n)return!1;const o=n.contours[0].points,a=o[0],s=o[1],c=o[2];let l=Ln(Be(),Sn(Be(),s,a),Sn(Be(),c,a));l=Yn(Be(),l);const f=St(l,e);return Math.abs(f)>.9}function E2e(t,e){const r=Array.from(t.values()).flat().map(i=>Array.from(i)).flat(),n=TE(r,3);for(const i of n){const o=Hr(i);if(o!=null&&o.metadata){if(!o.metadata.viewPlaneNormal)continue;const a=o.metadata.viewPlaneNormal,s=Math.abs(e[0]*a[0]+e[1]*a[1]+e[2]*a[2]);if(Math.abs(s-1)>.01)return!1}}return!0}const dB={render:T2e,removeRepresentation:S2e};function Lf(t,e){return hu(t,e)[0]}function hu(t,e){return er.getCurrentLabelmapImageIdsForViewport(t,e)}function b2e(t,e){return er.getLabelmapImageIdsForImageId(t,e)}const LI=new Map,D2e=({cfun:t,ofun:e,actor:r})=>{r.getProperty().setRGBTransferFunction(1,t),r.getProperty().setScalarOpacity(1,e)};async function I2e({viewport:t,volumeInputs:e,segmentationId:r}){var E;const n=t.getDefaultActor(),{actor:i}=n,{uid:o,callback:a}=n,s=t.getVolumeId();if((E=LI.get(o))!=null&&E.added)return{uid:o,actor:i};const c=e,l=ke.getVolume(c[0].volumeId);if(!l)throw new Error(`imageVolume with id: ${l.volumeId} does not exist`);const{volumeId:f}=c[0],u=await iE(f);if(!u)throw new Error(`segImageVolume with id: ${u.volumeId} does not exist`);const h=u.voxelManager.getCompleteScalarDataArray(),{imageData:g}=u,p=ke.getVolume(s),y=p.voxelManager.getCompleteScalarDataArray(),m=2,w=new Float32Array(m*p.voxelManager.getScalarDataLength()),x=g.getDimensions();for(let b=0;ble);for(const te of J)for(let le=0;le{He.removeEventListener(B.SEGMENTATION_DATA_MODIFIED,_);const D=t.getActor(o),{element:O,id:L}=t;t.removeActors([o]);const P=await Ky({volumeId:o,blendMode:tl.MAXIMUM_INTENSITY_BLEND,callback:({volumeActor:k})=>{D.callback&&D.callback({volumeActor:k,volumeId:f})}},O,L);t.addActor({actor:P,uid:o}),t.render()}),{uid:o,actor:i}}const{uuidv4:hB}=_n;async function O2e(t,e,r,n){const i=Ee(t),{renderingEngine:o,viewport:a}=i,{id:s}=a,c=!0,l=!1,f=!0;if(a instanceof Cr){const d=M2e(e,r);ke.getVolume(d)||await P2e(e);let h=(n==null?void 0:n.blendMode)??tl.MAXIMUM_INTENSITY_BLEND,g=h===tl.LABELMAP_EDGE_PROJECTION_BLEND;if(g){const v=a.getVolumeId(),y=ke.getVolume(v),w=ke.getVolume(d).dimensions,x=y.dimensions;(w[0]!==x[0]||w[1]!==x[1]||w[2]!==x[2])&&(g=!1,h=tl.MAXIMUM_INTENSITY_BLEND,console.debug("Dimensions mismatch - falling back to regular volume addition"))}const p=[{volumeId:d,visibility:c,representationUID:`${r}-${Et.Labelmap}`,useIndependentComponents:g,blendMode:h}];if(!p[0].useIndependentComponents)await Zk(o,p,[s],l,f);else return await I2e({viewport:a,volumeInputs:p,segmentationId:r})}else{const d=hu(a.id,r).map(h=>({imageId:h,representationUID:`${r}-${Et.Labelmap}-${h}`}));Qk(o,d,[s])}wo(r)}function M2e(t,e){let{volumeId:r}=t;if(!r){r=hB();const n=An(e);n.representationData.Labelmap={...n.representationData.Labelmap,volumeId:r},t.volumeId=r,ns(e)}return r}async function P2e(t){const e=t;if(!(e.imageIds.length>0))throw new Error("cannot create labelmap, no imageIds found for the volume labelmap");return await oE(t.volumeId||hB(),e.imageIds)}function R2e(t,e){const r=Ee(t),{viewport:n}=r;n.removeActors([Cme(n.id,e)])}function Fd(t){return er.getActiveSegmentation(t)}function L2e(t,e){er.setActiveSegmentation(t,e)}function yu(t){return Fd(t)}function A2e(t,e){L2e(t,e)}const N2e=Object.freeze(Object.defineProperty({__proto__:null,getActiveSegmentation:yu,setActiveSegmentation:A2e},Symbol.toStringTag,{value:"Module"}));function ba(t){const e=An(t);if(e){const r=Object.keys(e.segments).find(n=>e.segments[n].active);return r?Number(r):void 0}}const AC=255,Rp=new Map;let NC=!1;function k2e(t,e,r=!1){const n=Bn(t);if(Rp.forEach((o,a)=>{a.includes(e)&&Rp.delete(a)}),!n)return;const{viewport:i}=n;R2e(i.element,e),r&&i.render()}async function V2e(t,e){var s;const{segmentationId:r,config:n}=e,i=An(r);if(!i){console.warn("No segmentation found for segmentationId: ",r);return}let o=i.representationData[Et.Labelmap],a=Pp(t.id,r);if(!o&&((s=tu())!=null&&s.canComputeRequestedRepresentation(r,Et.Labelmap))&&!NC){NC=!0;const c=tu();if(o=await KE(r,Et.Labelmap,()=>c.computeLabelmapData(r,{viewport:t}),()=>null,()=>{er.processLabelmapRepresentationAddition(t.id,r),setTimeout(()=>{wo(r)},0)}),!o)throw new Error(`No labelmap data found for segmentationId ${r}.`);NC=!1}else!o&&!tu()&&console.debug(`No labelmap data found for segmentationId ${r} 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(o){if(t instanceof sr)a!=null&&a.length||await NI(t,o,r,n),a=Pp(t.id,r);else{const c=hu(t.id,r);if(!(c!=null&&c.length))return;a||await NI(t,o,r,n),a=Pp(t.id,r)}if(a!=null&&a.length)for(const c of a)F2e(t.id,c,e)}}function F2e(t,e,r){var C;const{segmentationId:n}=r,{cfun:i,ofun:o}=r.config,{colorLUTIndex:a}=r,s=yu(t),c=(s==null?void 0:s.segmentationId)===n,l=qa.getStyle({viewportId:t,type:Et.Labelmap,segmentationId:n}),f=qa.getRenderInactiveSegmentations(t),u=O1(a),d=Math.min(256,u.length),{outlineWidth:h,renderOutline:g,outlineOpacity:p,activeSegmentOutlineWidthDelta:v}=AI(l,c),y=qE(t,{segmentationId:n,type:Et.Labelmap});for(let S=0;So.getCurrentImageId()===r),!i||!i.length)?void 0:i[0].getImageData()}else if(e.startsWith("volumeId:")){const r=Cl(e),n=m1(r);return!n||!n.length?void 0:n[0].getImageData()}else if(e.startsWith("videoId:")){const r=Ar(e),n=Jy(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")}undo(){this.doneEditMemo(),H2.undo()}redo(){H2.redo()}static createZoomPanMemo(e){const r={pan:e.getPan(),zoom:e.getZoom()},n={restoreMemo:()=>{const i=e.getPan(),o=e.getZoom();e.setZoom(r.zoom),e.setPan(r.pan),e.render(),r.pan=i,r.zoom=o}};return H2.push(n),n}doneEditMemo(){var e,r;(r=(e=this.memo)==null?void 0:e.commitMemo)!=null&&r.call(e)&&H2.push(this.memo),this.memo=null}};Gp.defaults={configuration:{strategies:{},defaultStrategy:void 0,activeStrategy:void 0,strategyOptions:{}}};let hi=Gp;hi.toolName="BaseTool";const{isEqual:B2e}=_n,{EPSILON:G2e}=Of,W2e=1-G2e;function m8(t,e,r){var c;const{viewPlaneNormal:n}=e,i=t.filter(l=>{let f=l.metadata.viewPlaneNormal;if(!l.metadata.referencedImageId&&!f&&l.metadata.FrameOfReferenceUID){for(const d of l.data.handles.points){const h=Sn(Be(),d,e.focalPoint),g=St(h,e.viewPlaneNormal);if(!B2e(g,0))return!1}return l.metadata.viewPlaneNormal=e.viewPlaneNormal,l.metadata.cameraFocalPoint=e.focalPoint,!0}if(!f){const{referencedImageId:d}=l.metadata,{imageOrientationPatient:h}=lt("imagePlaneModule",d),g=bt(h[0],h[1],h[2]),p=bt(h[3],h[4],h[5]);f=Be(),Ln(f,g,p),l.metadata.viewPlaneNormal=f}const u=Math.abs(St(n,f))>W2e;return f&&u});if(!i.length)return[];const o=r/2,{focalPoint:a}=e,s=[];for(const l of i){const f=l.data,u=f.handles.points[0]||((c=f.contour)==null?void 0:c.polyline[0]);if(!l.isVisible)continue;const d=Be();if(!u){s.push(l);continue}Sn(d,a,u);const h=St(d,n);Math.abs(h)n.isVisible?n.data.isCanvasAnnotation?!0:t.isReferenceViewable(n.metadata,r):!1)}function pB(t){if(t){if(t.data&&t.highlighted)return lc.Highlighted;if(M1(t.annotationUID))return lc.Selected;if(ai(t.annotationUID))return lc.Locked;if(t.data&&t.autoGenerated)return lc.AutoGenerated}return lc.Default}function z2e(t,e,r){const n=kh("textBoxFontSize",t,e,r),i=kh("textBoxFontFamily",t,e,r);return`${n}px ${i}`}const $2e=Object.freeze(Object.defineProperty({__proto__:null,getFont:z2e,getState:pB,style:NE},Symbol.toStringTag,{value:"Module"}));class Af extends hi{constructor(){super(...arguments),this.onImageSpacingCalibrated=e=>{const{element:r,imageId:n}=e.detail,i=Ar(n),o=_c();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;Ar(f.metadata.referencedImageId)===i&&(f.invalidated=!0,f.data.cachedStats={})}),sg(r))})}}filterInteractableAnnotationsForElement(e,r){if(!(r!=null&&r.length))return[];const n=Ee(e),{viewport:i}=n;return k1(i,r)}createAnnotation(e){const r=e.detail,{currentPoints:n,element:i}=r,{world:o}=n,a=Ee(i),{viewport:s}=a,c=s.getCamera(),{viewPlaneNormal:l,viewUp:f,position:u}=c,d=this.getReferencedImageId(s,o,l,f),h=s.getViewReference({points:[o]});return{highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),...h,referencedImageId:d,viewUp:f,cameraPosition:u},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,r,n,i){const o=this.getTargetId(e);let a=o.split(/^[a-zA-Z]+:/)[1];if(e instanceof Cr){const s=Cl(o),c=ke.getVolume(s);a=cu(c,r,n)}return a}getStyle(e,r,n){return kh(e,r,pB(n),this.mode)}}Af.toolName="AnnotationDisplayTool";const{DefaultHistoryMemo:j2e}=xE,{PointsManager:H2e}=_n;class or extends Af{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=Li(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);on(n,e.element),rn(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(ai(u.annotationUID)||!Kr(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},this.isSuvScaled=or.isSuvScaled,(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=Ee(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(xr(n,h)this.getStyle(p,n,r),{annotationUID:o}=r,a=Kr(o),s=ai(o),c=i("lineWidth"),l=i("lineDash"),f=i("angleArcLineDash"),u=i("color"),d=i("markerSize"),h=i("shadow"),g=this.getLinkedTextBoxStyle(n,r);return{visibility:a,locked:s,color:u,lineWidth:c,lineDash:l,lineOpacity:1,fillColor:u,fillOpacity:0,shadow:h,textbox:g,markerSize:d,angleArcLineDash:f}}_imagePointNearToolOrHandle(e,r,n,i){if(this.getHandleNearImagePoint(e,r,n,i)||this.isPointNearTool(e,r,n,i,"mouse"))return!0}static createAnnotationState(e,r){const{data:n,annotationUID:i}=e,o={...n,cachedStats:{}};delete o.contour,delete o.spline;const a={annotationUID:i,data:structuredClone(o),deleting:r},s=n.contour;return s&&(a.data.contour={...s,polyline:null,pointsManager:H2e.create3(s.polyline.length,s.polyline)}),a}static createAnnotationMemo(e,r,n){if(!r)return;const{newAnnotation:i,deleting:o=i?!1:void 0}=n||{},{annotationUID:a}=r,s=or.createAnnotationState(r,o),c={restoreMemo:()=>{const l=or.createAnnotationState(r,o),{viewport:f}=Ee(e)||{};if(f==null||f.setViewReference(r.metadata),s.deleting===!0){if(s.deleting=!1,Object.assign(r.data,s.data),r.data.contour){const d=r.data;d.contour.polyline=s.data.contour.pointsManager.points,delete s.data.contour.pointsManager,d.segmentation&&fu(r)}s.data=l.data,on(r,e),ia(r.annotationUID,!0),f==null||f.render();return}if(s.deleting===!1){s.deleting=!0,s.data=l.data,ia(r.annotationUID),fn(r.annotationUID),f==null||f.render();return}const u=Hr(a);if(!u){console.warn("No current annotation");return}Object.assign(u.data,s.data),u.data.contour&&(u.data.contour.polyline=s.data.contour.pointsManager.points),s.data=l.data,u.invalidated=!0,rn(u,e,Xt.History)},id:a,operationType:"annotation"};return j2e.push(c),c}createMemo(e,r,n){this.memo||(this.memo=or.createAnnotationMemo(e,r,n))}static hydrateBase(e,r,n,i={}){if(!r)return null;const{viewport:o}=r,a=o.getFrameOfReferenceUID(),s=o.getCamera(),c=i.viewplaneNormal??s.viewPlaneNormal,l=i.viewUp??s.viewUp,f=i.toolInstance||new e;let u,d=c,h=l;if(i.referencedImageId)u=i.referencedImageId,d=void 0,h=void 0;else if(o instanceof ar){const g=CE(n[0],o);g!==void 0&&(u=o.getImageIds()[g])}else if(o instanceof Cr)u=f.getReferencedImageId(o,n[0],c,l);else throw new Error("Unsupported viewport type");return{FrameOfReferenceUID:a,referencedImageId:u,viewPlaneNormal:d,viewUp:h,instance:f,viewport:o}}}or.toolName="AnnotationTool";const{CalibrationTypes:Hf}=ts,Kf="px",K2="voxels",mB=[1,2,3,4],K2e=["3,3","4,7"],q2e=["4,3","4,7"],eT={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"},X2e=.001,Bg="²",Da=(t,e)=>{const{calibration:r,hasPixelSpacing:n}=t;let i=n?"mm":Kf;const o=n?"mm³":K2;let a=i+Bg,s=1,c="";if(!r||!r.type&&!r.sequenceOfUltrasoundRegions)return{unit:i,areaUnit:a,scale:s,volumeUnit:o};if(r.type===Hf.UNCALIBRATED)return{unit:Kf,areaUnit:Kf+Bg,scale:s,volumeUnit:K2};if(r.sequenceOfUltrasoundRegions){let f,u;if(Array.isArray(e)&&e.length===2)[f,u]=e;else if(typeof e=="function"){const y=e();f=y[0],u=y[1]}let d=r.sequenceOfUltrasoundRegions.filter(y=>f[0]>=y.regionLocationMinX0&&f[0]<=y.regionLocationMaxX1&&f[1]>=y.regionLocationMinY0&&f[1]<=y.regionLocationMaxY1&&u[0]>=y.regionLocationMinX0&&u[0]<=y.regionLocationMaxX1&&u[1]>=y.regionLocationMinY0&&u[1]<=y.regionLocationMaxY1);if(!(d!=null&&d.length))return{unit:i,areaUnit:a,scale:s,volumeUnit:o};if(d=d.filter(y=>mB.includes(y.regionDataType)&&K2e.includes(`${y.physicalUnitsXDirection},${y.physicalUnitsYDirection}`)),!d.length)return{unit:Kf,areaUnit:Kf+Bg,scale:s,volumeUnit:K2};const h=d[0],g=Math.abs(h.physicalDeltaX),p=Math.abs(h.physicalDeltaY);if(Kt(g,p,X2e))s=1/g,c="US Region",i=eT[h.physicalUnitsXDirection]||"unknown",a=i+Bg;else return{unit:Kf,areaUnit:Kf+Bg,scale:s,volumeUnit:K2}}else r.scale&&(s=r.scale);return[Hf.ERMF,Hf.USER,Hf.ERROR,Hf.PROJECTION,Hf.CALIBRATED,Hf.UNKNOWN].includes(r==null?void 0:r.type)&&(c=r.type),{unit:i+(c?` ${c}`:""),areaUnit:a+(c?` ${c}`:""),scale:s,volumeUnit:o+(c?` ${c}`:"")}},S5=(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=>mB.includes(p.regionDataType)&&q2e.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=[eT[c.physicalUnitsXDirection],eT[c.physicalUnitsYDirection]]}return{units:i,values:o,calibrationType:a}},v8=t=>{var e;return((e=t.calibration)==null?void 0:e.aspect)||1};function Yw(t,e,r,n){const i=Be();Ln(i,e,t);const o=bt(...r),a=bt(...n),s=Be();jn(s,o,a);const c=ra(s);if(c<1e-4)return{worldWidth:0,worldHeight:0};const l=St(s,i)/(c*ra(i)),u=Math.sqrt(1-l*l)*c,d=l*c;return{worldWidth:u,worldHeight:d}}function cg(t,e,r,n){const i=Be();Ln(i,e,t);const o=bt(...r),a=bt(...n),s=Be();jn(s,o,a);const c=ra(s);if(c<1e-4)return{worldWidth:0,worldHeight:0};const l=St(s,i)/(c*ra(i)),u=Math.sqrt(1-l*l)*c,d=l*c;return{worldWidth:u,worldHeight:d}}function y8(t,e,r,n,i=.25){const o=w8(t,e,{targetVolumeId:r,stepSize:i});let a;for(const s of o){const c=t.getIntensityFromWorld(s),l=n(c,s);l&&(a=l)}return a}function w8(t,e,{targetVolumeId:r,stepSize:n}){const i=t.getCamera(),{viewPlaneNormal:o}=i,{spacingInNormalDirection:a}=tg(t,i,r),s=a*n||1,c=t.getBounds(),l=[];let f=[...e];for(;kI(f,c);)l.push([...f]),f[0]+=o[0]*s,f[1]+=o[1]*s,f[2]+=o[2]*s;for(f=[...e];kI(f,c);)l.push([...f]),f[0]-=o[0]*s,f[1]-=o[1]*s,f[2]-=o[2]*s;return l}const kI=function(t,e){const[r,n,i,o,a,s]=e,c=10;return t[0]>r+c&&t[0]i+c&&t[1]a+c&&t[2]{const c=[bt(r,n,i),bt(o,n,i),bt(r,a,i),bt(o,a,i),bt(r,n,s),bt(o,n,s),bt(r,a,s),bt(o,a,s)],l=bt(e[0],e[1],e[2]),f=bt(t[0],t[1],t[2]),u=-St(l,f);let d=null;for(const h of c){const g=St(l,h)+u;if(d===null)d=Math.sign(g);else if(Math.sign(g)!==d)return!0}return!1},{EPSILON:Y2e}=Of,J2e=1-Y2e;function Jw(t,e){const{viewPlaneNormal:r}=e,n=t.filter(i=>{let o=i.metadata.viewPlaneNormal;if(!o){const{referencedImageId:s}=i.metadata,{imageOrientationPatient:c}=lt("imagePlaneModule",s),l=bt(c[0],c[1],c[2]),f=bt(c[3],c[4],c[5]);o=Be(),Ln(o,l,f),i.metadata.viewPlaneNormal=o}const a=Math.abs(St(r,o))>J2e;return o&&a});return n.length?n:[]}const Z2e={filterAnnotationsWithinSlice:m8,getWorldWidthAndHeightFromCorners:Yw,getWorldWidthAndHeightFromTwoPoints:cg,filterAnnotationsForDisplay:k1,getPointInLineOfSightWithCriteria:y8,isPlaneIntersectingAABB:vB,filterAnnotationsWithinSamePlane:Jw,getPointsInLineOfSight:w8},Q2e=Object.freeze(Object.defineProperty({__proto__:null,default:Z2e,filterAnnotationsForDisplay:k1,filterAnnotationsWithinSamePlane:Jw,filterAnnotationsWithinSlice:m8,getPointInLineOfSightWithCriteria:y8,getPointsInLineOfSight:w8,getWorldWidthAndHeightFromCorners:Yw,getWorldWidthAndHeightFromTwoPoints:cg,isPlaneIntersectingAABB:vB},Symbol.toStringTag,{value:"Module"}));function zo(t,e,r){let n=!0,i=!0;if(typeof t!="function")throw new TypeError("Expected a function");return HE(r)&&(n="leading"in r?!!r.leading:n,i="trailing"in r?!!r.trailing:i),ag(t,e,{leading:n,trailing:i,maxWait:e})}function eve(t){var e;return((e=t[0])==null?void 0:e.length)===3}function tve(t,e){if(!e||e.length===0||e.length===t.length)return t;const r=e[e.length-1]-e[0]+1,n=xC(e.map(o=>t[o][0])),i=xC(e.map(o=>t[o][1]));if(eve(t)){const o=xC(e.map(a=>t[a][2]));return I9(Vg(n,r),Vg(i,r),Vg(o,r))}else return I9(Vg(n,r),Vg(i,r))}function nve(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 tT(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=nve(a,[s,c]),d=tve(t,u);return[...l,...d,...f]}function Zw(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 rve(t,e){return Vo(t,e)<.001}function ive(t,e){return Vo(t,e)===0}function ove(t,e){for(let r=0;rrve(c,l)===!1,[o,a]=VI([k0(r,t.length,1),r,t],[k0(n,e.length,1),n,e],i,1),[s]=VI([k0(o,t.length,-1),o,t],[k0(a,e.length,-1),a,e],i,-1);return[o,s]}function Qw(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?ave(e,r):[0,e.length-1];return!e[d]||!e[h]?e:tT(e,d,h,f)}}return o}const lg=t=>{if(t.shiftKey)return t.ctrlKey?Gi.ShiftCtrl:t.altKey?Gi.ShiftAlt:t.metaKey?Gi.ShiftMeta:Gi.Shift;if(t.ctrlKey)return t.altKey?Gi.CtrlAlt:t.metaKey?Gi.CtrlMeta:Gi.Ctrl;if(t.altKey)return t.metaKey&&Gi.AltMeta||Gi.Alt;if(t.metaKey)return Gi.Meta};function x8(t,e){const r=t[0],n=t[t.length-1],i=Jt();ws(i,n[0]-r[0],n[1]-r[1]),ql(i,i);const o=Jt(),a=Jt();ws(o,-i[1],i[0]),ws(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 sve(t,e){const{viewport:r}=t,n=e.data.contour.polyline.map(r.worldToCanvas);return x8(n,r)}const{addCanvasPointsToArray:C8,pointsAreWithinCloseContourProximity:yB,getFirstLineSegmentIntersectionIndexes:wB,getSubPixelSpacingAndXYDirections:cve}=Rf;function lve(t,e,r){this.isDrawing=!0;const n=t.detail,{currentPoints:i,element:o}=n,a=i.canvas,s=Ee(o),{viewport:c}=s,l=lg(t.detail.event)===this.configuration.contourHoleAdditionModifierKey,{spacing:f,xDir:u,yDir:d}=cve(c,this.configuration.subPixelResolution)||{};!f||!u||!d||(this.drawData={canvasPoints:[a],polylineIndex:0,contourHoleProcessingEnabled:l,newAnnotation:!0},this.commonData={annotation:e,viewportIdsToRender:r,spacing:f,xDir:u,yDir:d,movingTextBox:!1},ze.isInteractingWithTool=!0,o.addEventListener(B.MOUSE_UP,this.mouseUpDrawCallback),o.addEventListener(B.MOUSE_DRAG,this.mouseDragDrawCallback),o.addEventListener(B.MOUSE_CLICK,this.mouseUpDrawCallback),o.addEventListener(B.TOUCH_END,this.mouseUpDrawCallback),o.addEventListener(B.TOUCH_DRAG,this.mouseDragDrawCallback),o.addEventListener(B.TOUCH_TAP,this.mouseUpDrawCallback),Mt(o))}function uve(t){ze.isInteractingWithTool=!1,t.removeEventListener(B.MOUSE_UP,this.mouseUpDrawCallback),t.removeEventListener(B.MOUSE_DRAG,this.mouseDragDrawCallback),t.removeEventListener(B.MOUSE_CLICK,this.mouseUpDrawCallback),t.removeEventListener(B.TOUCH_END,this.mouseUpDrawCallback),t.removeEventListener(B.TOUCH_DRAG,this.mouseDragDrawCallback),t.removeEventListener(B.TOUCH_TAP,this.mouseUpDrawCallback),jt(t)}function fve(t){const e=t.detail,{currentPoints:r,element:n}=e,i=r.world,o=r.canvas,a=Ee(n),{viewport:s}=a,{annotation:c,viewportIdsToRender:l,xDir:f,yDir:u,spacing:d,movingTextBox:h}=this.commonData,{polylineIndex:g,canvasPoints:p,newAnnotation:v}=this.drawData;this.createMemo(n,c,{newAnnotation:v});const y=p[p.length-1],m=s.canvasToWorld(y),w=Be();jn(w,i,m);const x=Math.abs(St(w,f)),C=Math.abs(St(w,u));if(!(x<=d[0]&&C<=d[1])){if(h){this.isDrawing=!1;const{deltaPoints:S}=e,T=S.world,{textBox:_}=c.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=C8(n,p,o,this.commonData);this.drawData.polylineIndex=g+T}c.invalidated=!0}Ne(l),c.invalidated&&rn(c,n,Xt.HandlesUpdated)}}function dve(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;this.doneEditMemo(),this.drawData.newAnnotation=!1,e&&!yB(i,o,this.configuration.closeContourProximity)?this.completeDrawOpenContour(s,{contourHoleProcessingEnabled:n}):this.completeDrawClosedContour(s,{contourHoleProcessingEnabled:n})}function hve(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=Jt();Yr(u,c[1],c[0]),ql(u,u);const d=6,h=[c[0][0]-u[0]*d,c[0][1]-u[1]*d],g=Ud(l,h,c[0],e);if(g){const p=[h];Sve(n,p,c[0],this.commonData),c.unshift(...p),this.removePointsUpUntilFirstCrossing(e),this.editData.editIndex=c.length-1,this.editData.startCrossingIndex=g[0]}}}function _ve(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=!!Ud(e,i[0],i[1],t);if(r.pop(),o)break}}function Dve(){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;a1&&this.checkForFirstCrossing(t,!0),this.editData.snapIndex=this.findSnapIndex(),this.editData.snapIndex===-1){this.finishEditAndStartNewEdit(t);return}this.editData.fusedCanvasPoints=this.fuseEditPointsWithClosedContour(t),g!==void 0&&this.checkForSecondCrossing(t,!0)&&(this.removePointsAfterSecondCrossing(!0),this.finishEditAndStartNewEdit(t)),Ne(c)}function Ave(t){const e=t.detail,{element:r}=e,n=Ee(r),{viewport:i,renderingEngine:o}=n,{annotation:a,viewportIdsToRender:s}=this.commonData,{fusedCanvasPoints:c,editCanvasPoints:l}=this.editData;Ec(a,{points:c,closed:!0,targetWindingDirection:oa.Clockwise},i),a.autoGenerated&&(a.autoGenerated=!1),rn(a,r);const f=l.pop();this.editData={prevCanvasPoints:c,editCanvasPoints:[f],startCrossingIndex:void 0,editIndex:0,snapIndex:void 0,annotation:a},Ne(s)}function Nve(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];xB(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=xr(e[c],s[0]),u=xr(e[c],s[s.length-1]),d=xr(e[l],s[0]),h=xr(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];y.push([S[0],S[1]])}const m=FI(g),w=FI(y);return m>w?g:y}function kve(t){const e=t.detail,{element:r}=e;this.completeClosedContourEdit(r)}function Vve(t){var s;const e=Ee(t),{viewport:r}=e,{annotation:n,viewportIdsToRender:i}=this.commonData;this.doneEditMemo();const{fusedCanvasPoints:o,prevCanvasPoints:a}=this.editData;if(o){const c=Zw(this.configuration,n)?Qw(this.configuration,o,a):o,l=((s=this.configuration)==null?void 0:s.decimate)||{};Ec(n,{points:c,closed:!0,targetWindingDirection:oa.Clockwise},r,{decimate:{enabled:!!l.enabled,epsilon:l.epsilon}}),n.autoGenerated&&(n.autoGenerated=!1),rn(n,t)}this.isEditingClosed=!1,this.editData=void 0,this.commonData=void 0,Ne(i),this.deactivateClosedContourEdit(t)}function Fve(t){this.completeClosedContourEdit(t)}function Uve(t){t.activateClosedContourEdit=Pve.bind(t),t.deactivateClosedContourEdit=Rve.bind(t),t.mouseDragClosedContourEditCallback=Lve.bind(t),t.mouseUpClosedContourEditCallback=kve.bind(t),t.finishEditAndStartNewEdit=Ave.bind(t),t.fuseEditPointsWithClosedContour=Nve.bind(t),t.cancelClosedContourEdit=Fve.bind(t),t.completeClosedContourEdit=Vve.bind(t)}const{addCanvasPointsToArray:CB,getSubPixelSpacingAndXYDirections:Bve}=Rf;function Gve(t,e,r){this.isEditingOpen=!0;const n=t.detail,{currentPoints:i,element:o}=n,a=i.canvas,s=Ee(o),{viewport:c}=s;this.doneEditMemo();const l=e.data.contour.polyline.map(c.worldToCanvas),{spacing:f,xDir:u,yDir:d}=Bve(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},ze.isInteractingWithTool=!0,o.addEventListener(B.MOUSE_UP,this.mouseUpOpenContourEditCallback),o.addEventListener(B.MOUSE_DRAG,this.mouseDragOpenContourEditCallback),o.addEventListener(B.MOUSE_CLICK,this.mouseUpOpenContourEditCallback),o.addEventListener(B.TOUCH_END,this.mouseUpOpenContourEditCallback),o.addEventListener(B.TOUCH_DRAG,this.mouseDragOpenContourEditCallback),o.addEventListener(B.TOUCH_TAP,this.mouseUpOpenContourEditCallback),Mt(o)}function Wve(t){ze.isInteractingWithTool=!1,t.removeEventListener(B.MOUSE_UP,this.mouseUpOpenContourEditCallback),t.removeEventListener(B.MOUSE_DRAG,this.mouseDragOpenContourEditCallback),t.removeEventListener(B.MOUSE_CLICK,this.mouseUpOpenContourEditCallback),t.removeEventListener(B.TOUCH_END,this.mouseUpOpenContourEditCallback),t.removeEventListener(B.TOUCH_DRAG,this.mouseDragOpenContourEditCallback),t.removeEventListener(B.TOUCH_TAP,this.mouseUpOpenContourEditCallback),jt(t)}function zve(t){const e=t.detail,{currentPoints:r,element:n}=e,i=r.world,o=r.canvas,a=Ee(n),{viewport:s}=a,{viewportIdsToRender:c,xDir:l,yDir:f,spacing:u}=this.commonData,{editIndex:d,editCanvasPoints:h,startCrossingIndex:g}=this.editData,p=h[h.length-1],v=s.canvasToWorld(p),y=Be();this.createMemo(n,this.commonData.annotation),jn(y,i,v);const m=Math.abs(St(y,l)),w=Math.abs(St(y,f));if(m<=u[0]&&w<=u[1])return;g!==void 0&&this.checkAndRemoveCrossesOnEditLine(t);const x=CB(n,h,o,this.commonData),C=d+x;this.editData.editIndex=C,g===void 0&&h.length>1&&this.checkForFirstCrossing(t,!1),this.editData.snapIndex=this.findSnapIndex(),this.editData.fusedCanvasPoints=this.fuseEditPointsWithOpenContour(t),g!==void 0&&this.checkForSecondCrossing(t,!1)?(this.removePointsAfterSecondCrossing(!1),this.finishEditOpenOnSecondCrossing(t)):this.checkIfShouldOverwriteAnEnd(t)&&this.openContourEditOverwriteEnd(t),Ne(c)}function $ve(t){const e=t.detail,{element:r}=e,n=Ee(r),{viewport:i}=n,{annotation:o,viewportIdsToRender:a}=this.commonData,s=this.fuseEditPointsForOpenContourEndEdit();Ec(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,rn(o,r),this.isEditingOpen=!1,this.editData=void 0,this.commonData=void 0,this.doneEditMemo(),this.deactivateOpenContourEdit(r),this.activateOpenContourEndEdit(t,o,a,null)}function jve(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=Jt(),h=Jt();ws(d,l[0]-f[0],l[1]-f[1]),ws(h,l[0]-u[0],l[1]-u[1]);const g=p4(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 Kve(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];CB(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=xr(e[c],s[0]),u=xr(e[c],s[s.length-1]),d=xr(e[l],s[0]),h=xr(e[l],s[s.length-1]),g=[];for(let y=0;y=0;y--){const m=s[y];g.push([m[0],m[1]])}for(let y=l;yHr(r).data.contour.polyline)}function V1(t,e){const r=SB(t),n=[];return r.forEach(i=>{const o=i.length,a=new Array(o);for(let s=0;sn.worldToCanvas(l)),a=V1(r,n),s=[o,...a];nu(e,r.annotationUID,"1",s,i)}function sye(t,e,r){var c;const{viewport:n}=t,i=this._getRenderingOptions(t,r),o=r.data.contour.polyline.map(l=>n.worldToCanvas(l));xc(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(),nr(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];nr(e,r.annotationUID,l,[u],{color:i.color})}}function cye(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);xc(e,r.annotationUID,"first-to-last",[a,s],{color:l.color,width:l.width,closePath:!1,lineDash:"2,2"}),xc(e,r.annotationUID,"midpoint-to-open-contour",[c[0],c[1]],{color:l.color,width:l.width,closePath:!1,lineDash:"2,2"})}function lye(t,e,r){const n=this._getRenderingOptions(t,r),{allowOpenContours:i}=this.configuration,{canvasPoints:o}=this.drawData;if(n.closePath=!1,xc(e,r.annotationUID,"1",o,n),i){const a=o[0],s=o[o.length-1];nye(a,s,this.configuration.closeContourProximity)?xc(e,r.annotationUID,"2",[s,a],n):nr(e,r.annotationUID,"0",[a],{color:n.color,handleRadius:2})}}function uye(t,e,r){const{viewport:n}=t,{fusedCanvasPoints:i}=this.editData;if(i===void 0){this.renderClosedContour(t,e,r);return}const o=V1(r,n),a=[i,...o],s=this._getRenderingOptions(t,r),c="preview-1";r.parentAnnotationUID&&s.fillOpacity&&(s.fillOpacity=0),nu(e,r.annotationUID,c,a,s)}function fye(t,e,r){const{fusedCanvasPoints:n}=this.editData;if(n===void 0){this.renderOpenContour(t,e,r);return}const i=this._getRenderingOptions(t,r);xc(e,r.annotationUID,"preview-1",n,i)}function dye(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=V1(r,n),s="1",c=o[0],l=6,f=100,u=[];for(let g=0;g0}else if(t instanceof ar){const{preScale:r}=t.getImageData()||{};return!!(r!=null&&r.scaled)}else return!1}function nT(t,e){let r=0;for(let n=0;nthis.moveAnnotation(i,r))}updateContourPolyline(e,r,n,i){var a;const o=((a=this.configuration)==null?void 0:a.decimate)||{};Ec(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(y=>c(y)),{lineWidth:f,lineDash:u,color:d,fillColor:h,fillOpacity:g}=n,p=V1(o,s),v=[l,...p];return nu(i,a,"contourPolyline",v,{color:d,lineDash:u,lineWidth:Math.max(.1,f),fillColor:h,fillOpacity:g}),!0}}class vye{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=Hr(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};nt(He,B.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 hr={..._pe,...xpe,resetAnnotationManager:Zme},yye=Object.freeze(Object.defineProperty({__proto__:null,AnnotationGroup:vye,FrameOfReferenceSpecificAnnotationManager:_U,config:$2e,locking:Gme,selection:jme,state:hr,visibility:Yme},Symbol.toStringTag,{value:"Module"})),UI="PlanarFreehandContourSegmentationTool";function S8(t,e=[]){const{viewport:r,sliceData:n,annotation:i}=t,o=new Map,{toolName:a,originalToolName:s}=i.metadata,c=s||a,l=(cn(c,r.element)||[]).filter(f=>!f.metadata.originalToolName||f.metadata.originalToolName===c);if(c!==UI){const f=cn(UI,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((y,m)=>y===g.value[m]):v===g.value}));d.length&&o.set(f,d)}return o}function wye(t,e){const r=S8(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 TB(t,e,r){const n=Li({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 xye(t,e){const r=S8(e,[{key:"interpolationUID",value:e.interpolationUID}]),n=Cye(r);if(!n){console.warn("No annotations found to interpolate",r);return}const i=Sye(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:BI}=_n;function bye(t,e=12){const r=BI.create3(e);r.sources=[];const{sources:n}=r,{length:i,sources:o=[]}=t,a=5;if(in.push(BI.create3(e)));const c=Dye(t,a),l=Iye(c,e),f=[];if((l==null?void 0:l.length)>2){let u=-1;const d=s/3;l.forEach(p=>{const[v,,y]=p,m=Math.ceil((v+y)/2);y-u2*d?(g0(f,u,v,s,i),u=g0(f,v,m,s,i)):u=g0(f,u,m,s,i),y-u>d&&(u=g0(f,u,y,s,i)))});const h=f[0];rT(h+i-u,i)>2*d&&g0(f,u,h-d,s,i)}else{const u=Math.floor(i/e);g0(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 Dye(t,e=6){const{length:r}=t,n=Be(),i=Be(),o=new Float32Array(r);for(let a=0;a{try{e&&(r.isInterpolationUpdate=!0,r.autoGenerated=!1),Pye(t)}finally{e&&(r.autoGenerated=!0)}})}function Pye(t){const{annotation:e}=t;Mye(e);const{interpolationData:r,interpolationList:n}=xye(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 Lye(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=kye(t,e,l,o),h=l>.5?u:f,g=bye(d);i.has(r)?Nye(d,g,r,h,a):Aye(d,g,r,h,a)}function Aye(t,e,r,n,i){var f;const o=t.points,{viewport:a}=i,s=TB(o,e,n),c=a.getViewReference({sliceIndex:r});if(!c)throw new Error(`Can't find slice ${r}`);Object.assign(s.metadata,c),hr.addAnnotation(s,a.element),(f=n.onInterpolationComplete)==null||f.call(n,s,n);const{parentAnnotationUID:l}=n;if(l){const u=hr.getAnnotation(l),d=_B(u,r,i);Kw(a,d,s)}}function _B(t,e,r){const{viewport:n}=r,i=hr.getAnnotations(t.metadata.toolName,n.element);for(let o=0;o!f.autoGenerated)||(s=o||s===n||c.forEach(l=>{l.autoGenerated&&(hr.removeAnnotation(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};nt(t.viewport.element,B.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(!ps.toolNames.includes(n)&&!ps.toolNames.includes(i))return;const o=Hv(r);if(!o){console.warn("Unable to find viewport for",r);return}const a=kC(o),s={viewport:o,sliceData:a,annotation:r,interpolationUID:r.interpolationUID},c=!!r.interpolationUID;if(r.autoGenerated=!1,c){XI(s),jv(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=wye(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)||Bye(),s.interpolationUID=r.interpolationUID,jv(s)},ps.handleAnnotationUpdate=e=>{const r=e.detail.annotation,{changeType:n=Xt.HandlesUpdated}=e.detail;if(!(r!=null&&r.metadata))return;const{toolName:i,originalToolName:o}=r.metadata;if(!ps.toolNames.includes(i)&&!ps.toolNames.includes(o)||!Gye.includes(n))return;const a=Hv(r);if(!a){console.warn("Unable to find matching viewport for annotation interpolation",r);return}r.autoGenerated&&(fu(r),r.autoGenerated=!1);const s=kC(a),c={viewport:a,sliceData:s,annotation:r,interpolationUID:r.interpolationUID,isInterpolationUpdate:n===Xt.InterpolationUpdated};jv(c)},ps.handleAnnotationDelete=e=>{const r=e.detail.annotation;if(!(r!=null&&r.metadata))return;const{toolName:n}=r.metadata;if(!ps.toolNames.includes(n)||r.autoGenerated)return;const i=Hv(r);if(!i){console.warn("No viewport, can't delete interpolated results",r);return}const o=kC(i),a={viewport:i,sliceData:o,annotation:r,interpolationUID:r.interpolationUID};r.autoGenerated=!1,XI(a)};let cl=ps;function kC(t){return{numberOfSlices:t.getNumberOfSlices(),imageIndex:t.getCurrentImageIdIndex()}}function EB(t){t.forEach(e=>{const r=ti(e);if(!r){console.warn(`ToolGroup not available for ${e}`);return}r.getViewportsInfo().forEach(i=>{const{renderingEngineId:o,viewportId:a}=i,s=jr(o);if(!s){console.warn(`RenderingEngine not available for ${o}`);return}const c=s.getViewport(a);sg(c.element)})})}function ug(t){const n=er.getState().viewportSegRepresentations;return Object.entries(n).filter(([,o])=>o.some(a=>a.segmentationId===t)).map(([o])=>o)}function Wye(t,e){const r=An(t);if(!r)throw new Error(`No segmentation state found for ${t}`);const{segments:n}=r;return n[e].locked}function zye(t,e,r=!0){const n=An(t);if(!n)throw new Error(`No segmentation state found for ${t}`);const{segments:i}=n;i[e].locked=r,ns(t)}function Zd(t){const e=An(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 $ye=Object.freeze(Object.defineProperty({__proto__:null,getLockedSegmentIndices:Zd,isSegmentIndexLocked:Wye,setSegmentIndexLocked:zye},Symbol.toStringTag,{value:"Module"}));function bB(){return er.getNextColorLUTIndex()}const T5=[[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 Lp(t,e){const r=er,n=e??bB();let i=[...t];if(Kt(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=T5.slice(i.length);i=[...i,...o]}return r.addColorLUT(i,n),n}function jye(t,e){if(!t)throw new Error("addColorLUT: colorLUT is required");return Lp(t,e)}function Hye(t,e,r){if(!O1(r))throw new Error(`setColorLUT: could not find colorLUT with index ${r}`);const n=_a(t,{segmentationId:e});if(!n)throw new Error(`viewport specific state for viewport ${t} does not exist`);n.forEach(i=>{i.colorLUTIndex=r}),Jc(t,e)}function gu(t,e,r){const n=_a(t,{segmentationId:e});if(!n||n.length===0)return null;const i=n[0],{colorLUTIndex:o}=i,a=O1(o);let s=a[r];if(!s){if(typeof r!="number")return console.warn(`Can't create colour for LUT index ${r}`),null;s=a[r]=[0,0,0,0]}return s}function DB(t,e,r,n){const i=gu(t,e,r);for(let o=0;oDr(c).id);EB(s)}return i}_getContourSegmentationStyle(e){const r=e.annotation,{segmentationId:n,segmentIndex:i}=r.data.segmentation,{viewportId:o}=e.styleSpecifier,a=_a(o,{segmentationId:n});if(!(a!=null&&a.length))return{};a.length>1?a.find(v=>v.segmentationId===n&&v.type===Et.Contour):a[0];const{autoGenerated:s}=r,l=Zd(n).includes(i),{color:f,fillColor:u,lineWidth:d,fillOpacity:h,lineDash:g,visibility:p}=OB({segmentationId:n,segmentIndex:i,viewportId:o,autoGenerated:s});return{color:f,fillColor:u,lineWidth:d,fillOpacity:h,lineDash:g,textbox:{color:f},visibility:p,locked:l}}};lb.PreviewSegmentIndex=255;let Gm=lb;function MB(t,e){const r=lt("generalSeriesModule",t);return xu(r.modality,t,e)}function xu(t,e,r){return t==="CT"?"HU":t==="PT"?qye(e,r):""}function qye(t,e){if(!e.isPreScaled)return"raw";if(e.isSuvScaled)return"SUV";const r=lt("generalSeriesModule",t);if((r==null?void 0:r.modality)==="PT"){const n=lt("petSeriesModule",t);return(n==null?void 0:n.units)||"unitless"}return"unknown"}const{pointCanProjectOnLine:YI}=Rf,{EPSILON:Xye}=Of,Yye=1-Xye,ub=class ub extends Gm{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{storePointData:!1,shadow:!0,preventHandleOutsideImage:!1,contourHoleAdditionModifierKey:Gi.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:Jye,statsCalculator:pl}}){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=Ct(o,this.getToolName());return this.activateDraw(n,a,s),n.preventDefault(),Ne(s),a},this.handleSelectedCallback=(n,i,o)=>{const a=n.detail,{element:s}=a,c=Ct(s,this.getToolName());this.activateOpenContourEndEdit(n,i,c,o)},this.toolSelectedCallback=(n,i)=>{const o=n.detail,{element:a}=o,s=Ct(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=Ee(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 h=0;hi.worldToCanvas(O)),w={isPreScaled:wu(i,g),isSuvScaled:this.isSuvScaled(i,g,n.metadata.referencedImageId)},x=xu(y.Modality,n.metadata.referencedImageId,w),C=Da(p,()=>{const O=s.contour.polyline,L=O.length,P=new Array(L);for(let le=0;le{const{data:s}=n,c=this.getTargetId(i),l={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:o.viewport.id,annotationUID:n.annotationUID},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(x=>i.worldToCanvas(x));if(!s.handles.textBox.hasMoved){const x=Ia(d);s.handles.textBox.worldPosition=i.canvasToWorld(x)}const h=i.worldToCanvas(s.handles.textBox.worldPosition),p=ao(a,n.annotationUID??"","1",u,h,d,{},f),{x:v,y,width:m,height:w}=p;s.handles.textBox.worldBoundingBox={topLeft:i.canvasToWorld([v,y]),topRight:i.canvasToWorld([v+m,y]),bottomLeft:i.canvasToWorld([v,y+w]),bottomRight:i.canvasToWorld([v+m,y+w])}},Cve(this),Ove(this),Uve(this),Zve(this),tye(this),hye(this),this._throttledCalculateCachedStats=zo(this._calculateCachedStats,100,{trailing:!0})}filterInteractableAnnotationsForElement(e,r){if(!r||!r.length)return;const n=Ee(e),{viewport:i}=n;let o;if(i instanceof sr){const a=i.getCamera(),{spacingInNormalDirection:s}=tg(i,a);o=this.filterAnnotationsWithinSlice(r,a,s)}else o=k1(i,r);return o}filterAnnotationsWithinSlice(e,r,n){const{viewPlaneNormal:i}=r,o=e.filter(l=>{let f=l.metadata.viewPlaneNormal;if(!l.metadata.referencedImageId&&!f&&l.metadata.FrameOfReferenceUID){for(const d of l.data.contour.polyline){const h=Sn(Be(),d,r.focalPoint),g=St(h,r.viewPlaneNormal);if(!Kt(g,0))return!1}return l.metadata.viewPlaneNormal=r.viewPlaneNormal,l.metadata.cameraFocalPoint=r.focalPoint,!0}if(!f){const{referencedImageId:d}=l.metadata,{imageOrientationPatient:h}=lt("imagePlaneModule",d),g=bt(h[0],h[1],h[2]),p=bt(h[3],h[4],h[5]);f=Be(),Ln(f,g,p),l.metadata.viewPlaneNormal=f}const u=Math.abs(St(i,f))>Yye;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=Be();Sn(d,s,u);const h=St(d,i);Math.abs(h){a.data.handles.points.length=0};return Li(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,f;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:u}=e;(f=u.cachedStats[r])!=null&&f.unit?e.invalidated&&this._throttledCalculateCachedStats(e,n,i,o):(u.cachedStats[r]={Modality:null,area:null,max:null,mean:null,stdDev:null,areaUnit:null,unit:null},this._calculateCachedStats(e,n,i,o))}}updateClosedCachedStats({viewport:e,points:r,imageData:n,metadata:i,cachedStats:o,targetId:a,modalityUnit:s,canvasCoordinates:c,calibratedScale:l,deltaInX:f,deltaInY:u}){var J,te,le,ve;const{scale:d,areaUnit:h,unit:g}=l,{voxelManager:p}=e.getImageData(),v=zr(n,r[0]);v[0]=Math.floor(v[0]),v[1]=Math.floor(v[1]),v[2]=Math.floor(v[2]);let y=v[0],m=v[0],w=v[1],x=v[1],C=v[2],S=v[2];for(let pe=1;pe{let Ie=!0;const Le=e.worldToCanvas(pe);return Le[1]!=G&&(F=0,G=Le[1],j=XU(c,Le,[k[0],Le[1]]),j.sort(function(be){return function($,R){return $[be]===R[be]?0:$[be]j[0][0]&&(j.shift(),F++),F%2===0&&(Ie=!1),Ie},boundsIJK:L,returnPoints:this.configuration.storePointData}));const W=this.configuration.statsCalculator.getStatistics();o[a]={Modality:i.Modality,area:_,perimeter:E,mean:(J=W.mean)==null?void 0:J.value,max:(te=W.max)==null?void 0:te.value,min:(le=W.min)==null?void 0:le.value,stdDev:(ve=W.stdDev)==null?void 0:ve.value,statsArray:W.array,pointsInShape:U,areaUnit:h,modalityUnit:s,unit:g}}updateOpenCachedStats({targetId:e,metadata:r,canvasCoordinates:n,cachedStats:i,modalityUnit:o,calibratedScale:a,deltaInX:s,deltaInY:c}){const{scale:l,unit:f}=a;let u=nT(n,closed)/l;u*=Math.sqrt(Math.pow(s,2)+Math.pow(c,2)),i[e]={Modality:r.Modality,length:u,modalityUnit:o,unit:f}}};ub.toolName="PlanarFreehandROI";let Tf=ub;function Jye(t,e){const r=t.cachedStats[e],{area:n,mean:i,stdDev:o,length:a,perimeter:s,max:c,min:l,isEmptyArea:f,unit:u,areaUnit:d,modalityUnit:h}=r||{},g=[];if(Mr(n)){const p=f?"Area: Oblique not supported":`Area: ${an(n)} ${d}`;g.push(p)}return Mr(i)&&g.push(`Mean: ${an(i)} ${h}`),Mr(c)&&g.push(`Max: ${an(c)} ${h}`),Mr(l)&&g.push(`Min: ${an(l)} ${h}`),Mr(o)&&g.push(`Std Dev: ${an(o)} ${h}`),Mr(s)&&g.push(`Perimeter: ${an(s)} ${u}`),Mr(a)&&g.push(`${an(a)} ${u}`),g}const fb=class fb extends Tf{constructor(e){const r=Li({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;wo(o)}return i}};fb.toolName="PlanarFreehandContourSegmentationTool";let ml=fb;const Zye={[Et.Labelmap]:gB,[Et.Contour]:dB,[Et.Surface]:SU},X2=ml.toolName;class Qye{constructor(){this._needsRender=new Set,this._animationFrameSet=!1,this._animationFrameHandle=null,this._getAllViewports=()=>Go().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=_a(o,{segmentationId:e});(a==null?void 0:a.length)>0&&n.push(o)}else{const a=_a(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=_a(e);if(!(r!=null&&r.length))return;const{viewport:n}=Bn(e)||{};if(!n)return;const i=[],o=r.map(a=>{a.type===Et.Contour&&this._addPlanarFreeHandToolIfAbsent(n);const s=Zye[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(Xe.IMAGE_RENDERED,c),s.forEach(h=>{const g={viewportId:d,segmentationId:h.segmentationId,type:h.type};nt(He,B.SEGMENTATION_RENDERED,{...g})})}n.element.addEventListener(Xe.IMAGE_RENDERED,c),n.render()})}_addPlanarFreeHandToolIfAbsent(e){X2 in ze.tools||Mi(ml);const r=Dr(e.id);r.hasTool(X2)||(r.addTool(X2),r.setToolPassive(X2))}}function fg(t){PB.renderSegmentationsForViewport(t)}function ex(t){PB.renderSegmentation(t)}const PB=new Qye;function e5e({modifiedSlicesToUse:t,representationData:e,type:r}){const n=ke.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 t5e({viewportIds:t,segmentationId:e}){t.forEach(r=>{let n=_a(r,{segmentationId:e});n=n.filter(i=>i.type===Et.Labelmap),n.forEach(i=>{if(i.segmentationId!==e)return;const o=Bn(r);if(!o)return;const{viewport:a}=o;if(a instanceof sr)return;const s=Pp(r,e);s!=null&&s.length&&s.forEach((c,l)=>{const f=c.actor.getMapper().getInputData(),u=hu(r,e),d=ke.getImage(u[l]);f.modified(),bw(f,d)})})})}const n5e=function(t){const{segmentationId:e,modifiedSlicesToUse:r}=t.detail,{representationData:n}=An(e),i=ug(e),o=i.some(c=>{const{viewport:l}=Bn(c);return l instanceof sr}),a=i.some(c=>{const{viewport:l}=Bn(c);return l instanceof ar}),s=o&&a;i.forEach(c=>{const{viewport:l}=Bn(c);l instanceof sr&&e5e({modifiedSlicesToUse:s?[]:r,representationData:n,type:Et.Labelmap}),l instanceof ar&&t5e({viewportIds:i,segmentationId:e})})},RB=function(t){const{segmentationId:e}=t.detail,{representationData:r}=An(e);r.Labelmap&&n5e(t),ex(e)},LB=function(t){const{segmentationId:e}=t.detail;ex(e)};function AB(t,e){return er.updateLabelmapSegmentationImageReferences(t,e)}const r5e=function(t){if(!t)return;const e=Ee(t);if(!e)return;const{viewport:r}=e;r instanceof Cr||(t.addEventListener(Xe.STACK_NEW_IMAGE,Wm),t.addEventListener(Xe.IMAGE_RENDERED,Wm))},i5e=function(t){t.removeEventListener(Xe.STACK_NEW_IMAGE,Wm),t.removeEventListener(Xe.IMAGE_RENDERED,Wm)};function Wm(t){const e=t.detail,{viewportId:r,renderingEngineId:n}=e,{viewport:i}=Ci(r,n),o=_a(r);if(!(o!=null&&o.length))return;const a=o.filter(l=>l.type===Et.Labelmap),s=i.getActors();a.forEach(l=>{const{segmentationId:f}=l;AB(r,f)});const c=a.flatMap(l=>Pp(r,l.segmentationId)).filter(l=>l!==void 0);c.length&&(c.forEach(l=>{a.find(u=>{const d=hu(r,u.segmentationId);return d==null?void 0:d.includes(l.referencedId)})||i.removeActors([l.uid])}),a.forEach(l=>{const{segmentationId:f}=l,u=i.getCurrentImageId(),d=hu(r,f);if(!d)return;const h=g=>{const p=ke.getImage(g);if(!p){console.warn("No derived image found in the cache for segmentation representation",l);return}const v=s.find(y=>y.referencedId===g);if(v){const y=v.actor.getMapper().getInputData();y.setDerivedImage?y.setDerivedImage(p):bw(y,p)}else{const{dimensions:y,spacing:m,direction:w}=i.getImageDataMetadata(p),x=ke.getImage(u)||{imageId:u},{origin:C}=i.getImageDataMetadata(x),S=C,T=p.voxelManager.getConstructor(),_=p.voxelManager.getScalarData(),E=Ot.newInstance({name:"Pixels",numberOfComponents:1,values:new T(_)}),b=u1.newInstance();b.setDimensions(y[0],y[1],1),b.setSpacing(m),b.setDirection(w),b.setOrigin(S),b.getPointData().setScalars(E),b.modified(),i.addImages([{imageId:g,representationUID:`${f}-${Et.Labelmap}-${p.imageId}`,callback:({imageActor:D})=>{D.getMapper().setInputData(b)}}]),fg(r);return}};d.forEach(h),i.render(),t.type===Xe.IMAGE_RENDERED&&i.element.removeEventListener(Xe.IMAGE_RENDERED,Wm)}))}const NB={enable:r5e,disable:i5e};async function o5e(t){const e=t.detail.annotation;if(!N1(e))return;const r=s5e(e),n=c5e(r,e);if(!n.length){nt(He,B.ANNOTATION_CUT_MERGE_PROCESS_COMPLETED,{element:r.element,sourceAnnotation:e});return}const i=Sf(e.data.contour.polyline,r),o=cB(r,i,n);if(!o.length){nt(He,B.ANNOTATION_CUT_MERGE_PROCESS_COMPLETED,{element:r.element,sourceAnnotation:e});return}if(o.length>1){lB(r,e,i,o);return}const{targetAnnotation:a,targetPolyline:s,isContourHole:c}=o[0];if(c){const{contourHoleProcessingEnabled:l=!1}=t.detail;if(!l)return;Kw(r,a,e)}else d8(r,a,s,e,i)}function a5e(t,e=!1){const r="PlanarFreehandContourSegmentationTool",n=Dr(t.id,t.renderingEngineId);let i;return n?n.hasTool(r)?n.getToolOptions(r)||(i=`Tool ${r} must be in active/passive state in ${n.id} toolGroup`):i=`Tool ${r} not added to ${n.id} toolGroup`:i=`ToolGroup not found for viewport ${t.id}`,i&&!e&&console.warn(i),!i}function s5e(t){const e=p8(t);return e.find(n=>a5e(n,!0))??e[0]}function c5e(t,e){const{annotationUID:r}=e;return E1().filter(i=>i.annotationUID&&i.annotationUID!==r&&N1(i)&&TU(i,e)&&t.isReferenceViewable(i.metadata))}function l5e(t){const e=t.detail.annotation;uu(e)}function kB(t){const e=t.detail.annotation;N1(e)&&o5e(t)}function _5(t){if(!t.detail.removed.length)return;Go().forEach(n=>{const o=n.getViewports().map(a=>a.id);Ne(o)})}function VB(t){const{viewportId:e}=t.detail;Ne([e])}function u5e(t){const e=t.detail.annotation;N1(e)&&l5e(t)}const FB=function(t){sg(t.detail.element)},f5e=function(t){t.addEventListener(Xe.IMAGE_RENDERED,FB)},d5e=function(t){t.removeEventListener(Xe.IMAGE_RENDERED,FB)},UB={enable:f5e,disable:d5e},{Active:h5e}=Nn;function dg(t,e,r){if(ze.isInteractingWithTool)return!1;const{renderingEngineId:n,viewportId:i}=r.detail,o=Dr(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 F1(t,e){const r=[];for(let n=0;n0&&r.push({tool:i,annotations:o}))}return r}function T8(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:g5e}=Nn;function tx(t){const{renderingEngineId:e,viewportId:r,event:n}=t.detail,i=lg(n)||og.getModifierKey(),o=Dr(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===g5e&&d)return o.getToolInstance(f)}}function Fh(t,e,r){const{renderingEngineId:n,viewportId:i}=t.detail,o=Dr(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 p5e(t,e){var u;const r=new Map,{renderingEngineId:n,viewportId:i}=t.detail,o=Dr(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=lg(c)||og.getModifierKey();for(let d=0;d{var w;return((w=m.bindings)==null?void 0:w.length)&&m.bindings.some(x=>x.mouseButton===l&&x.modifierKey===f)});y&&r.set(g,y)}return r}const{Active:m5e,Passive:v5e}=Nn;function y5e(t){if(ze.isInteractingWithTool)return!1;const e=t.detail,{element:r}=e,n=Ee(r),{canvas:i}=e.currentPoints;if(!n)return!1;const o=p5e(t,[m5e,v5e]),a=Array.from(o.keys()),s=F1(r,a),c=T8(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:w5e,Passive:x5e}=Nn;function zB(t){if(ze.isInteractingWithTool)return;const e=tx(t);if(e&&typeof e.preMouseDownCallback=="function"&&e.preMouseDownCallback(t))return;const r=t.detail.event.buttons===1,n=Fh(t,[w5e],t.detail.event.buttons),i=r?Fh(t,[x5e]):void 0,o=[...n||[],...i||[]];if(y5e(t))return;const s=t.detail,{element:c}=s,l=F1(c,o),f=s.currentPoints.canvas,u=WB(c,l,f,"mouse"),d=!!t.detail.event.shiftKey;if(u.length>0){const{tool:g,annotation:p,handle:v}=JI(u);ZI(p.annotationUID,d),g.handleSelectedCallback(t,p,v,"Mouse");return}const h=T8(c,l,f,"mouse");if(h.length>0){const{tool:g,annotation:p}=JI(h);ZI(p.annotationUID,d),g.toolSelectedCallback(t,p,"Mouse",f);return}e&&typeof e.postMouseDownCallback=="function"&&e.postMouseDownCallback(t)}function JI(t){if(t.length>1){const e=t.find(r=>{const n=!ai(r.annotation.annotationUID),i=Kr(r.annotation.annotationUID);return n&&i});if(e)return e}return t[0]}function ZI(t,e=!1){e?M1(t)?ia(t,!1):ia(t,!0,!0):ia(t,!0,!1)}function $B(t){if(ze.isInteractingWithTool)return;const e=tx(t);if(e&&!ze.isMultiPartToolActive&&e.addNewAnnotation){const r=e.addNewAnnotation(t,"mouse");ia(r.annotationUID)}}function jB(t){if(ze.isInteractingWithTool)return;const e=tx(t);!e||typeof e.mouseDragCallback!="function"||e.mouseDragCallback(t)}const{Active:C5e,Passive:S5e}=Nn;function HB(t){if(ze.isInteractingWithTool||ze.isMultiPartToolActive)return;const e=Fh(t,[C5e,S5e]),r=t.detail,{element:n}=r,i=F1(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&&sg(n)}const KB=dg.bind(null,"Mouse","mouseUpCallback");function qB(t){if(ze.isInteractingWithTool)return;t.detail.buttons=gl.Wheel|(t.detail.event.buttons||0);const e=tx(t);if(e)return e.mouseWheelCallback(t)}const T5e=function(t){t.addEventListener(B.MOUSE_CLICK,BB),t.addEventListener(B.MOUSE_DOWN,zB),t.addEventListener(B.MOUSE_DOWN_ACTIVATE,$B),t.addEventListener(B.MOUSE_DOUBLE_CLICK,GB),t.addEventListener(B.MOUSE_DRAG,jB),t.addEventListener(B.MOUSE_MOVE,HB),t.addEventListener(B.MOUSE_UP,KB),t.addEventListener(B.MOUSE_WHEEL,qB)},_5e=function(t){t.removeEventListener(B.MOUSE_CLICK,BB),t.removeEventListener(B.MOUSE_DOWN,zB),t.removeEventListener(B.MOUSE_DOWN_ACTIVATE,$B),t.removeEventListener(B.MOUSE_DOUBLE_CLICK,GB),t.removeEventListener(B.MOUSE_DRAG,jB),t.removeEventListener(B.MOUSE_MOVE,HB),t.removeEventListener(B.MOUSE_UP,KB),t.removeEventListener(B.MOUSE_WHEEL,qB)},XB={enable:T5e,disable:_5e},{Active:E5e}=Nn;function YB(t){const{renderingEngineId:e,viewportId:r}=t.detail,n=Upe(),i=og.getModifierKey(),o=Dr(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 b5e(t,e){var c;const r=new Map,{renderingEngineId:n,viewportId:i}=t.detail,o=Dr(i,n);if(!o)return r;const a=Object.keys(o.toolOptions),s=t.detail.key;for(let l=0;l{var v;return(v=p.bindings)==null?void 0:v.some(y=>y.key===s)});g&&r.set(u,g)}return r}function JB(t){const e=YB(t);if(e){const{renderingEngineId:n,viewportId:i}=t.detail,o=Dr(i,n),a=e.getToolName();Object.keys(o.toolOptions).includes(a)&&o.setViewportsCursorByToolName(a)}const r=b5e(t,[Nn.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 ZB(t){const e=YB(t);if(!e)return;const{renderingEngineId:r,viewportId:n}=t.detail,i=Dr(n,r);hU();const o=e.getToolName();Object.keys(i.toolOptions).includes(o)&&i.setViewportsCursorByToolName(o)}const D5e=function(t){t.addEventListener(B.KEY_DOWN,JB),t.addEventListener(B.KEY_UP,ZB)},I5e=function(t){t.removeEventListener(B.KEY_DOWN,JB),t.removeEventListener(B.KEY_UP,ZB)},QB={enable:D5e,disable:I5e},{Active:O5e,Passive:M5e,Enabled:P5e}=Nn,eG=function(t){Fh(t,[O5e,M5e,P5e]).forEach(r=>{r.onCameraModified&&r.onCameraModified(t)})},R5e=function(t){t.addEventListener(Xe.CAMERA_MODIFIED,eG)},L5e=function(t){t.removeEventListener(Xe.CAMERA_MODIFIED,eG)},tG={enable:R5e,disable:L5e},{Active:A5e,Passive:N5e,Enabled:k5e}=Nn,nG=function(t){Fh(t,[A5e,N5e,k5e]).forEach(r=>{r.onImageSpacingCalibrated&&r.onImageSpacingCalibrated(t)})},V5e=function(t){t.addEventListener(Xe.IMAGE_SPACING_CALIBRATED,nG)},F5e=function(t){t.removeEventListener(Xe.IMAGE_SPACING_CALIBRATED,nG)},rG={enable:V5e,disable:F5e},{Active:U5e}=Nn;function _8(t){const{renderingEngineId:e,viewportId:r}=t.detail,n=t.detail.event,i=Dr(r,e);if(!i)return null;const o=Object.keys(i.toolOptions),a=Object.keys(n.touches).length,s=lg(n)||og.getModifierKey(),c=i.getDefaultMousePrimary();for(let l=0;l(h.numTouchPoints===a||a===1&&h.mouseButton===c)&&h.modifierKey===s);if(u.mode===U5e&&d)return i.getToolInstance(f)}}function QI(t,e,r){const{renderingEngineId:n,viewportId:i}=t.detail,o=Dr(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:B5e,Passive:G5e}=Nn;function iG(t){if(ze.isInteractingWithTool)return;const e=_8(t);if(e&&typeof e.preTouchStartCallback=="function"&&e.preTouchStartCallback(t))return;const r=Object.keys(t.detail.event.touches).length===1,n=QI(t,[B5e],Object.keys(t.detail.event.touches).length),i=r?QI(t,[G5e]):void 0,o=[...n||[],...i||[],e],a=t.detail,{element:s}=a,c=F1(s,o),l=a.currentPoints.canvas,f=WB(s,c,l,"touch"),u=!1;if(f.length>0){const{tool:h,annotation:g,handle:p}=e7(f);t7(g.annotationUID,u),h.handleSelectedCallback(t,g,p,"Touch");return}const d=T8(s,c,l,"touch");if(d.length>0){const{tool:h,annotation:g}=e7(d);t7(g.annotationUID,u),h.toolSelectedCallback(t,g,"Touch",l);return}e&&typeof e.postTouchStartCallback=="function"&&e.postTouchStartCallback(t)}function e7(t){return t.length>1&&t.find(e=>!ai(e.annotation.annotationUID)&&Kr(e.annotation.annotationUID))||t[0]}function t7(t,e=!1){e?M1(t)?ia(t,!1):ia(t,!0,!0):ia(t,!0,!1)}function oG(t){if(ze.isInteractingWithTool)return;const e=_8(t);if(e&&!ze.isMultiPartToolActive&&e.addNewAnnotation){const r=e.addNewAnnotation(t,"touch");ia(r.annotationUID)}}function aG(t){if(ze.isInteractingWithTool)return;const e=_8(t);!e||typeof e.touchDragCallback!="function"||e.touchDragCallback(t)}const sG=dg.bind(null,"Touch","touchEndCallback"),W5e=dg.bind(null,"Touch","touchTapCallback"),cG=dg.bind(null,"Touch","touchPressCallback"),z5e=function(t){t.addEventListener(B.TOUCH_START,iG),t.addEventListener(B.TOUCH_START_ACTIVATE,oG),t.addEventListener(B.TOUCH_DRAG,aG),t.addEventListener(B.TOUCH_END,sG),t.addEventListener(B.TOUCH_TAP,W5e),t.addEventListener(B.TOUCH_PRESS,cG)},$5e=function(t){t.removeEventListener(B.TOUCH_START,iG),t.removeEventListener(B.TOUCH_START_ACTIVATE,oG),t.removeEventListener(B.TOUCH_DRAG,aG),t.removeEventListener(B.TOUCH_END,sG),t.removeEventListener(B.TOUCH_PRESS,cG)},lG={enable:z5e,disable:$5e},j5e=function(){He.addEventListener(B.ANNOTATION_COMPLETED,cl.handleAnnotationCompleted),He.addEventListener(B.ANNOTATION_MODIFIED,cl.handleAnnotationUpdate),He.addEventListener(B.ANNOTATION_REMOVED,cl.handleAnnotationDelete)},H5e=function(){He.removeEventListener(B.ANNOTATION_COMPLETED,cl.handleAnnotationCompleted),He.removeEventListener(B.ANNOTATION_MODIFIED,cl.handleAnnotationUpdate),He.removeEventListener(B.ANNOTATION_REMOVED,cl.handleAnnotationDelete)},uG={enable:j5e,disable:H5e},{Active:K5e,Passive:q5e,Enabled:X5e}=Nn,fG=function(t){Fh(t,[K5e,q5e,X5e]).forEach(r=>{r.onResetCamera&&r.onResetCamera(t)})},Y5e=function(t){t.addEventListener(Xe.CAMERA_RESET,fG)},J5e=function(t){t.removeEventListener(Xe.CAMERA_RESET,fG)},dG={enable:Y5e,disable:J5e};function E8(t){const{element:e,viewportId:r}=t.detail,n=Z5e(r);Q5e(e),ewe(n,e),u8.addViewportElement(r,e),HF.enable(e),fU.enable(e),cU.enable(e),og.enable(e),NB.enable(e),UB.enable(e),tG.enable(e),rG.enable(e),dG.enable(e),XB.enable(e),QB.enable(e),lG.enable(e),ze.enabledElements.push(e)}function Z5e(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 Q5e(t){const{viewportUid:e,renderingEngineUid:r}=t.dataset,n=`${e}:${r}`;ze.svgNodeCache[n]={}}function ewe(t,e){e.querySelector("div.viewport-element").appendChild(t)}function hG(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=Ee(t);if(!e)return;hG(e.viewportId,e.renderingEngineId).forEach(n=>{n.remove(e)})},rwe=t=>{const e=Ee(t);if(!e)return;const{renderingEngineId:r,viewportId:n}=e,i=Dr(n,r);i&&i.removeViewports(r,n)};function iwe(t){const{viewportUid:e,renderingEngineUid:r}=t.dataset,n=`${e}:${r}`;delete ze.svgNodeCache[n]}function owe(t){const e=t.querySelector(`div.${twe}`),r=e.querySelector("svg");r&&e.removeChild(r)}const awe=function(t){const e=ze.enabledElements.findIndex(r=>r===t);e>-1&&ze.enabledElements.splice(e,1)};function gG(t){const e=tB(t,[Nn.Active,Nn.Passive]),r=F1(t,e);for(const{tool:n}of r){const i=n.cancel(t);if(i)return i}}class D8{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"?Ee(o.currentTarget):Bn((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(Y2(this._sourceViewports,e))return;const{renderingEngineId:r,viewportId:n}=e,i=jr(r).getViewport(n);if(!i){console.warn(`Synchronizer.addSource: No viewport for ${r} ${n}`);return}(this._eventSource==="element"?i.element:He).addEventListener(this._eventName,this._onEvent.bind(this)),this._auxiliaryEvents.forEach(({name:a,source:s})=>{(s==="element"?i.element:He).addEventListener(a,this._onEvent.bind(this))}),this._updateDisableHandlers(),this._sourceViewports.push(e)}addTarget(e){Y2(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=n7(this._sourceViewports,e);if(r===-1)return;const n=this._eventSource==="element"?this.getViewportElement(e):He;this._sourceViewports.splice(r,1),n.removeEventListener(this._eventName,this._eventHandler),this._auxiliaryEvents.forEach(({name:i,source:o})=>{(o==="element"?this.getViewportElement(e):He).removeEventListener(i,this._eventHandler)}),this._updateDisableHandlers()}removeTarget(e){const r=n7(this._targetViewports,e);r!==-1&&(this._targetViewports.splice(r,1),this._updateDisableHandlers())}hasSourceViewport(e,r){return Y2(this._sourceViewports,{renderingEngineId:e,viewportId:r})}hasTargetViewport(e,r){return Y2(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=swe(this._sourceViewports,this._targetViewports),r=this.remove.bind(this),n=i=>{r(i.detail.element)};e.forEach(i=>{const o=this.getEventSource(i);o&&(o.removeEventListener(Xe.ELEMENT_DISABLED,n),o.addEventListener(Xe.ELEMENT_DISABLED,n))})}getEventSource(e){return this._eventSource==="element"?this.getViewportElement(e):He}getViewportElement(e){const{renderingEngineId:r,viewportId:n}=e,i=jr(r);if(!i)return null;const o=i.getViewport(n);return o?o.element:null}}function swe(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 n7(t,e){return t.findIndex(r=>e.renderingEngineId===r.renderingEngineId&&e.viewportId===r.viewportId)}function Y2(t,e){return t.some(r=>r.renderingEngineId===e.renderingEngineId&&r.viewportId===e.viewportId)}function Qd(t,e,r,n){if(ze.synchronizers.some(a=>a.id===t))throw new Error(`Synchronizer with id '${t}' already exists.`);const o=new D8(t,e,r,n);return ze.synchronizers.push(o),o}function cwe(){for(;ze.synchronizers.length>0;)ze.synchronizers.pop().destroy()}function lwe(t){return ze.synchronizers.find(e=>e.id===t)}function uwe(){return ze.synchronizers}function fwe(t){const e=ze.synchronizers.findIndex(r=>r.id===t);e>-1&&(ze.synchronizers[e].destroy(),ze.synchronizers.splice(e,1))}const pG=Object.freeze(Object.defineProperty({__proto__:null,createSynchronizer:Qd,destroy:cwe,destroySynchronizer:fwe,getAllSynchronizers:uwe,getSynchronizer:lwe,getSynchronizersForViewport:hG},Symbol.toStringTag,{value:"Module"})),dwe=Object.freeze(Object.defineProperty({__proto__:null,Synchronizer:D8,SynchronizerManager:pG,ToolGroupManager:OF,addEnabledElement:E8,addTool:Mi,cancelActiveManipulations:gG,hasTool:Epe,removeEnabledElement:b8,removeTool:kF,get state(){return ze},svgNodeCache:Mw},Symbol.toStringTag,{value:"Module"})),E5=function(t){const{viewportId:e}=t.detail;fg(e)};let iT=!1;function mG(t={}){iT||(Eme(t),gwe(),pwe(),iT=!0)}function hwe(){vG(),yG(),DF(),Zhe();const t=_c(),e=er;t.restoreAnnotations({}),e.resetState(),iT=!1}function gwe(){vG();const t=Xe.ELEMENT_ENABLED,e=Xe.ELEMENT_DISABLED;He.addEventListener(t,E8),He.addEventListener(e,b8),uG.enable()}function vG(){const t=Xe.ELEMENT_ENABLED,e=Xe.ELEMENT_DISABLED;He.removeEventListener(t,E8),He.removeEventListener(e,b8),uG.disable()}function pwe(){yG(),He.addEventListener(B.ANNOTATION_COMPLETED,kB),He.addEventListener(B.ANNOTATION_MODIFIED,VB),He.addEventListener(B.ANNOTATION_SELECTION_CHANGE,_5),He.addEventListener(B.ANNOTATION_SELECTION_CHANGE,_5),He.addEventListener(B.ANNOTATION_REMOVED,u5e),He.addEventListener(B.SEGMENTATION_MODIFIED,LB),He.addEventListener(B.SEGMENTATION_DATA_MODIFIED,RB),He.addEventListener(B.SEGMENTATION_REPRESENTATION_MODIFIED,E5),He.addEventListener(B.SEGMENTATION_REPRESENTATION_ADDED,E5)}function yG(){He.removeEventListener(B.ANNOTATION_COMPLETED,kB),He.removeEventListener(B.ANNOTATION_MODIFIED,VB),He.removeEventListener(B.ANNOTATION_SELECTION_CHANGE,_5),He.removeEventListener(B.ANNOTATION_SELECTION_CHANGE,_5),He.removeEventListener(B.SEGMENTATION_MODIFIED,LB),He.removeEventListener(B.SEGMENTATION_DATA_MODIFIED,RB),He.removeEventListener(B.SEGMENTATION_REPRESENTATION_MODIFIED,E5),He.removeEventListener(B.SEGMENTATION_REPRESENTATION_ADDED,E5)}const mwe=Object.freeze(Object.defineProperty({__proto__:null,COLOR_LUT:T5},Symbol.toStringTag,{value:"Module"})),vwe="3.20.0";function ywe(t,e,r,n){const{camera:i}=n.detail,o=jr(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:wwe}=Xe;function xwe(t){return Qd(t,wwe,ywe)}function Cwe(t,e,r,n,i){const o=jr(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:Swe}=Xe;function Twe(t,e){return Qd(t,Swe,Cwe,{viewPresentation:e})}function _we(t,e,r,n,i){const o=n.detail,{volumeId:a,range:s,invertStateChanged:c,invert:l,colormap:f}=o,u=jr(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 Cr)d._actors&&d._actors.size>1?d.setProperties(h,a):d.setProperties(h);else if(d instanceof ar)d.setProperties(h);else throw new Error("Viewport type not supported.");d.render()}function Ewe(t,e){return e=Object.assign({syncInvertState:!0,syncColormap:!0},e),Qd(t,Xe.VOI_MODIFIED,_we,{auxiliaryEvents:[{name:Xe.COLORMAP_MODIFIED}],...e})}function bwe(t,e,r){const n=jr(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:Dwe}=Xe;function Iwe(t){return Qd(t,Dwe,bwe)}function Owe(t,e){const{viewPlaneNormal:r}=t.getCamera(),{viewPlaneNormal:n}=e.getCamera(),i=St(r,n);return Math.abs(i)>.9}const r7=(t,e)=>Mm.get("spatialRegistrationModule",t,e);async function Mwe(t,e,r){const n=jr(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=lt("imagePlaneModule",s).imagePositionPatient,f=a.getImageIds();if(!Owe(i,a))return;let u=r7(r.viewportId,e.viewportId);if(!u){const p=i.getFrameOfReferenceUID(),v=a.getFrameOfReferenceUID();if(p===v&&(o==null?void 0:o.useInitialPosition)!==!1?u=Pt(Ea()):(RV(i,a),u=r7(r.viewportId,e.viewportId)),!u)return}const d=Wt(Be(),l,u),h=Pwe(d,f);let g=h.index;a instanceof sr&&(g=f.length-h.index-1),h.index!==-1&&a.getCurrentImageIdIndex()!==h.index&&await Po(a.element,{imageIndex:g})}function Pwe(t,e){return e.reduce((r,n,i)=>{const{imagePositionPatient:o}=lt("imagePlaneModule",n),a=Ki(o,t);return a{i.getImageIds().includes(t)&&i.calibrateSpacing(t)})}function CG(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 Wwe=Object.freeze(Object.defineProperty({__proto__:null,extend2DBoundingBoxInViewAxis:CG,getBoundingBoxAroundShape:yf,getBoundingBoxAroundShapeIJK:yf,getBoundingBoxAroundShapeWorld:mU},Symbol.toStringTag,{value:"Module"})),{transformWorldToIndex:VC}=_n;function SG(t,e,r){const[n,i]=t,o=bt((n[0]+i[0])/2,(n[1]+i[1])/2,(n[2]+i[2])/2),a=Ki(n,i)/2,{boundsIJK:s,topLeftWorld:c,bottomRightWorld:l}=$we(e,r,t,o,a);return{boundsIJK:s,centerWorld:o,radiusWorld:a,topLeftWorld:c,bottomRightWorld:l}}function TG(t,e){const r=e.getDirection(),n=bt(r[0],r[1],r[2]),i=bt(r[3],r[4],r[5]),o=bt(r[6],r[7],r[8]),a=rl(Be(),o);return SG(t,e,{row:n,column:i,normal:a})}function zwe(t,e,r){if(!r)throw new Error("viewport is required in order to calculate the sphere bounds");const n=r.getCamera(),i=bt(n.viewUp[0],n.viewUp[1],n.viewUp[2]),o=bt(n.viewPlaneNormal[0],n.viewPlaneNormal[1],n.viewPlaneNormal[2]),a=Be();Ln(a,i,o);const s={row:a,normal:o,column:rl(Be(),i)};return SG(t,e,s)}function $we(t,e,r,n,i){const o=t.getDimensions(),{row:a,column:s,normal:c}=e,l=Be(),f=Be();Cn(l,n,c,i),Cn(f,n,c,-i),Cn(l,l,s,-i),Cn(f,f,s,i),Cn(l,l,a,-i),Cn(f,f,a,i);const u=VC(t,l),d=VC(t,f),h=r.map(p=>VC(t,p));return{boundsIJK:yf([u,d,...h],o),topLeftWorld:l,bottomRightWorld:f}}function _G(t,e=5){return parseFloat(t[0]).toFixed(e)+","+parseFloat(t[1]).toFixed(e)+","+parseFloat(t[2]).toFixed(e)+","}class jwe{static setStartRange(e,r,n=e.getCurrentImageIdIndex()){this.setRange(e,r,n)}static setEndRange(e,r,n=e.getCurrentImageIdIndex()){this.setRange(e,r,void 0,n)}static setRange(e,r,n,i){var c;const{metadata:o}=r;n===void 0&&(n=o.sliceIndex=n?a:e.getNumberOfSlices()-1),i=Math.max(n,i),o.sliceIndex=Math.min(n,i),o.referencedImageId=e.getCurrentImageId(o.sliceIndex),o.referencedImageURI=void 0,i===o.sliceIndex?o.multiSliceReference=void 0:i!==((c=o.multiSliceReference)==null?void 0:c.sliceIndex)&&(o.multiSliceReference={referencedImageId:e.getCurrentImageId(i),sliceIndex:i});const s={viewportId:e.id,renderingEngineId:e.renderingEngineId,changeType:Xt.MetadataReferenceModified,annotation:r};nt(He,B.ANNOTATION_MODIFIED,s),this.setViewportFrameRange(e,o)}static setSingle(e,r,n=e.getCurrentImageIdIndex()){this.setRange(e,r,n,n)}static getFrameRange(e){const{metadata:r}=e,{sliceIndex:n,multiSliceReference:i}=r,o=i==null?void 0:i.sliceIndex;return o?[n+1,o+1]:n+1}static getFrameRangeStr(e){const r=this.getFrameRange(e);return Array.isArray(r)?`${r[0]}-${r[1]}`:String(r)}static setViewportFrameRange(e,r){var n;e.setFrameRange&&((n=r.multiSliceReference)!=null&&n.sliceIndex)&&e.setFrameRange(r.sliceIndex+1,r.multiSliceReference.sliceIndex+1)}}function Hwe(t,e){const{viewPlaneNormal:r}=t.metadata,{viewPlaneNormal:n}=e.metadata,i=St(r,n);if(!pf(1,Math.abs(i)))return!1;const{polyline:a}=t.data.contour,{polyline:s}=e.data.contour,c=St(r,a[0]),l=St(r,s[0]);return pf(c,l)}function EG(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"}:EG(i,e,r)}return{remainingLines:e,contourPoints:r,type:"OPEN_PLANAR"}}function I8(t){if(t.length==0)return[];const e=[],r=t.shift();e.push(r.a),e.push(r.b);const n=EG(r,t,e);if(n.remainingLines.length==0)return[{type:n.type,contourPoints:n.contourPoints}];{const i=I8(n.remainingLines);return i.push({type:n.type,contourPoints:n.contourPoints}),i}}function Kwe(t){return I8(t)}const qwe={findContours:I8,findContoursFromReducedSet:Kwe};function Xwe(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 Ywe=(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 Jwe(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=>{Ywe([r[o][0],r[o][1]],n)||i++}),i===0}function Zwe(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&&Jwe(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 Qwe={processContourHoles:Zwe};let i7=!1;function nx(){if(i7)return;i7=!0;const t=()=>new Worker(new URL("/static/dv3d/assets/computeWorker-FOqOvCDJ.js",import.meta.url),{name:"compute",type:"module"}),e=xl(),n=_me().computeWorker,i={maxWorkerInstances:1,autoTerminateOnIdle:(n==null?void 0:n.autoTerminateOnIdle)??{enabled:!0,idleTimeThreshold:2e3}};e.registerWorker("compute",t,i)}function rx(){return er.getState().segmentations}function exe(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===Et.Contour&&txe(a);const s=nxe(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 txe(t){t.geometryIds=t.geometryIds??[],t.annotationUIDsMap=t.annotationUIDsMap??new Map}function nxe(t,e,r){const n={};return t?Object.entries(t).forEach(([i,o])=>{const{label:a,locked:s,cachedStats:c,active:l,...f}=o,u={segmentIndex:Number(i),label:a??`Segment ${i}`,locked:s??!1,cachedStats:c??{},active:l??!1,...f};n[i]=u}):e===Et.Surface?rxe(n,r):n[1]=ixe(),n}function rxe(t,e){const{geometryIds:r}=e;r==null||r.forEach(n=>{const i=ke.getGeometry(n);if(i!=null&&i.data){const{segmentIndex:o}=i.data;t[o]={segmentIndex:o}}})}function ixe(){return{segmentIndex:1,label:"Segment 1",locked:!1,cachedStats:{},active:!0}}function bG(t,e){const r=er;t.forEach(n=>{const i=exe(n);r.addSegmentation(i),e||ns(i.segmentationId)})}function hg(t,e,r){return IG(t,e,r)}function DG(t,e,r){return IG(t,e,r)}function IG(t,e,r){const{segmentationId:n,type:i}=e;return oxe(t,n,i,r),er.removeSegmentationRepresentations(t,{segmentationId:n,type:i})}function OG(){er.getAllViewportSegmentationRepresentations().forEach(({viewportId:e,representations:r})=>{r.forEach(({segmentationId:n,type:i})=>{hg(e,{segmentationId:n,type:i})})}),er.resetState()}function MG(t,e,r){hg(t,{segmentationId:e,type:Et.Labelmap},r)}function PG(t,e,r){hg(t,{segmentationId:e,type:Et.Contour},r)}function RG(t,e,r){hg(t,{segmentationId:e,type:Et.Surface},r)}function oxe(t,e,r,n){_a(t,{segmentationId:e,type:r}).forEach(a=>{a.type===Et.Labelmap?gB.removeRepresentation(t,a.segmentationId,n):a.type===Et.Contour?dB.removeRepresentation(t,a.segmentationId,n):a.type===Et.Surface&&SU.removeRepresentation(t,a.segmentationId,n)});const{viewport:o}=Bn(t)||{};o&&o.render()}function O8(t){const e=er;e.getAllViewportSegmentationRepresentations().filter(({representations:n})=>n.some(i=>i.segmentationId===t)).map(({viewportId:n})=>n).forEach(n=>{DG(n,{segmentationId:t})}),e.removeSegmentation(t),zE(t)}function LG(){const t=er;t.getState().segmentations.map(n=>n.segmentationId).forEach(n=>{O8(n)}),t.resetState()}function axe(t){er.removeColorLUT(t)}function AG(t,e){return NG(t).map(o=>(e&&o.type===e,An(o.segmentationId))).filter(o=>o!==void 0)}function NG(t){return er.getState().viewportSegRepresentations[t]}function sxe(t,e){return er.getStackSegmentationImageIdsForViewport(t,e)}function cxe(){er.resetState()}const lxe=Object.freeze(Object.defineProperty({__proto__:null,addColorLUT:Lp,addSegmentations:bG,destroy:cxe,getColorLUT:O1,getCurrentLabelmapImageIdForViewport:Lf,getCurrentLabelmapImageIdsForViewport:hu,getNextColorLUTIndex:bB,getSegmentation:An,getSegmentationRepresentation:$E,getSegmentationRepresentations:_a,getSegmentationRepresentationsBySegmentationId:wU,getSegmentations:rx,getStackSegmentationImageIdsForViewport:sxe,getViewportIdsWithSegmentation:ug,getViewportSegmentationRepresentations:NG,getViewportSegmentations:AG,removeAllSegmentationRepresentations:OG,removeAllSegmentations:LG,removeColorLUT:axe,removeContourRepresentation:PG,removeLabelmapRepresentation:MG,removeSegmentation:O8,removeSegmentationRepresentation:hg,removeSurfaceRepresentation:RG,updateLabelmapSegmentationImageReferences:AB},Symbol.toStringTag,{value:"Module"}));function kG(t){if("volumeId"in t){if(t=t,!ke.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 uxe(t){if(!t.representation.data)throw new Error("The segmentationInput.representationData.data is undefined, please provide a valid representationData.data");const e=t.representation.data;kG(e)}function fxe(t){kG(t)}const dxe=Object.freeze(Object.defineProperty({__proto__:null,validate:fxe,validatePublic:uxe},Symbol.toStringTag,{value:"Module"}));function VG(t){const e=ke.getVolume(t);if(!e)return null;const r=e.referencedVolumeId;let n;if(r)n=ke.getVolume(r);else{const i=e.imageIds,a=ke.getImage(i[0]).referencedImageId,s=ke.getVolumeContainingImageId(a);n=s==null?void 0:s.volume}return n}function hxe({operationData:t}){const{volumeId:e}=t;if(!e){const c=new CustomEvent(Xe.ERROR_EVENT,{detail:{type:"Segmentation",message:"No volume id found for the segmentation"},cancelable:!0});return He.dispatchEvent(c),null}const r=ke.getVolume(e),n=VG(e);if(!r||!n)return null;const{imageData:i}=r,{voxelManager:o}=r,{voxelManager:a,imageData:s}=n;return{segmentationImageData:i,segmentationVoxelManager:o,segmentationScalarData:null,imageScalarData:null,imageVoxelManager:a,imageData:s}}function gxe({operationData:t,viewport:e,strategy:r}){var f;const{segmentationId:n}=t;let i,o,a,s,c,l;if(r.ensureSegmentationVolumeFor3DManipulation)r.ensureSegmentationVolumeFor3DManipulation({operationData:t,viewport:e}),o=t.segmentationVoxelManager,i=t.segmentationImageData,a=null;else{const u=Lf(e.id,n);if(!u)return null;const d=Gw(e.id,n);if(!d)return null;const h=ke.getImage(u);i=d.actor.getMapper().getInputData(),o=h.voxelManager;const g=t.imageId,p=ke.getImage(g);if(!p)return null;a=(f=p.getPixelData)==null?void 0:f.call(p)}if(r.ensureImageVolumeFor3DManipulation)r.ensureImageVolumeFor3DManipulation({operationData:t,viewport:e}),c=t.imageVoxelManager,s=t.imageScalarData,l=t.imageData;else{const u=e.getCurrentImageId();if(!u)return null;const d=ke.getImage(u);l=d?null:e.getImageData(),s=(d==null?void 0:d.getPixelData())||l.getScalarData(),c=d==null?void 0:d.voxelManager}return{segmentationImageData:i,segmentationScalarData:a,imageScalarData:s,segmentationVoxelManager:o,imageVoxelManager:c,imageData:l}}function M8({operationData:t,viewport:e,strategy:r}){return t?"volumeId"in t&&t.volumeId!=null||"referencedVolumeId"in t&&t.referencedVolumeId!=null?hxe({operationData:t}):gxe({operationData:t,viewport:e,strategy:r}):null}function gg(t){const{representationData:e}=An(t);let{volumeId:r}=e.Labelmap,n;if(r&&(n=ke.getVolume(r),n))return n;const{imageIds:i}=e.Labelmap;if(r=ke.generateVolumeId(i),!(!i||i.length===1||!Pf(i)))return n=v1(r,i),n}const FG={[xt.EnsureSegmentationVolumeFor3DManipulation]:t=>{const{operationData:e,viewport:r}=t,{segmentationId:n,imageIds:i}=e,o=r?r.getImageIds():i.map(c=>ke.getImage(c).referencedImageId);if(!Pf(o))throw new Error("Volume is not reconstructable for sphere manipulation");const s=gg(n);s&&(e.segmentationVoxelManager=s.voxelManager,e.segmentationImageData=s.imageData)}};function ix(t){if(!t||t.length<=1||!Pf(t))return;const r=ke.generateVolumeId(t);let n=ke.getVolume(r);return n||(n=v1(r,t),n)}const UG={[xt.EnsureImageVolumeFor3DManipulation]:t=>{const{operationData:e,viewport:r}=t;let n;if(r){if(n=r.getImageIds(),!Pf(n))throw new Error("Volume is not reconstructable for sphere manipulation")}else n=An(e.segmentationId).representationData.Labelmap.imageIds.map(s=>ke.getImage(s).referencedImageId);const i=ix(n);if(!i)throw new Error("Failed to create or get image volume");e.imageVoxelManager=i.voxelManager,e.imageData=i.imageData}},vl=(t,e)=>{nt(He,Xe.WEB_WORKER_PROGRESS,{progress:e,type:t})},BG=(t,e)=>{const r=An(t),{representationData:n}=r,{Labelmap:i}=n;if(!i)return console.debug("No labelmap found for segmentation",t),null;const o=i.volumeId,a=i.imageIds,s={segmentationId:t,volumeId:o,imageIds:a};let c=!1;if(a){const f=a.map(u=>ke.getImage(u).referencedImageId);c=Pf(f)}let l=e;return l?Array.isArray(l)||(l=[l,255]):l=[ba(t)],{operationData:s,segVolumeId:o,segImageIds:a,reconstructableVolume:c,indices:l}},GG=t=>M8({operationData:t,strategy:{ensureSegmentationVolumeFor3DManipulation:FG.ensureSegmentationVolumeFor3DManipulation,ensureImageVolumeFor3DManipulation:UG.ensureImageVolumeFor3DManipulation}}),WG=t=>{const e=[],r=[];for(const n of t){const i=ke.getImage(n),o=i.getPixelData(),{origin:a,direction:s,spacing:c,dimensions:l}=Ew(i);e.push({scalarData:o,dimensions:l,spacing:c,origin:a,direction:s});const f=i.referencedImageId;if(f){const u=ke.getImage(f);if(!u)continue;const d=u.getPixelData(),h=u.voxelManager,g=[u.rowPixelSpacing,u.columnPixelSpacing];r.push({scalarData:d,dimensions:h?h.dimensions:[u.columns,u.rows,1],spacing:g})}}return{segmentationInfo:e,imageInfo:r}},pxe=(t,e)=>{var a;let r;if(t){const c=ke.getVolume(t).imageIds,l=ke.getImage(c[0]);l&&(r=l.referencedImageId)}else e!=null&&e.length&&(r=ke.getImage(e[0]).referencedImageId);const n=ke.getImage(r),i=lt("scalingModule",r),o={isPreScaled:!!((a=n==null?void 0:n.preScale)!=null&&a.scaled),isSuvScaled:typeof(i==null?void 0:i.suvbw)=="number"};return{refImageId:r,modalityUnitOptions:o}},{Labelmap:mxe}=Et;async function zG({segmentations:t}){nx(),vl(Ja.GENERATE_CONTOUR_SETS,0);const{representationData:e,segments:r=[0,1],segmentationId:n}=t;let{volumeId:i}=e[mxe];if(!i){const g=gg(n);g&&(i=g.volumeId)}const o=ke.getVolume(i);if(!o){console.warn(`No volume found for ${i}`);return}const c={scalarData:o.voxelManager.getCompleteScalarDataArray(),dimensions:o.dimensions,spacing:o.imageData.getSpacing(),origin:o.imageData.getOrigin(),direction:o.imageData.getDirection()},l=Array.isArray(r)?r.filter(g=>g!==null).map(g=>g.segmentIndex||g):Object.values(r).filter(g=>g!==null).map(g=>g.segmentIndex||g),f=await xl().executeTask("compute","generateContourSetsFromLabelmapVolume",{segmentation:c,indices:l,mode:"individual"}),u=o.imageIds.map(g=>{var v;const p=(v=ke.getImage(g))==null?void 0:v.referencedImageId;return p?ke.getImage(p):void 0}),d=u.map(g=>Ew(g)),h=f.map(g=>{const p=r[g.segment.segmentIndex]||{};if(!g.sliceContours.length)return null;const v=g.sliceContours[0].polyData.points[0];let y;if(v){const m=d.findIndex(w=>{const{scanAxisNormal:x,origin:C}=w,S=ol(x,C);return Rk(v,S)});m!==-1&&(y=u[m].imageId)}return{label:p.label,color:p.color,metadata:{FrameOfReferenceUID:o.metadata.FrameOfReferenceUID,referencedImageId:y},sliceContours:g.sliceContours.map(m=>({contours:m.contours,polyData:m.polyData,FrameNumber:m.sliceIndex+1,sliceIndex:m.sliceIndex,FrameOfReferenceUID:o.metadata.FrameOfReferenceUID,referencedImageId:y}))}}).filter(g=>g!==null);return vl(Ja.GENERATE_CONTOUR_SETS,100),h}class $G{constructor(){}static getContourSequence(e,r){const{data:n}=e,{projectionPoints:i,projectionPointsImageIds:o}=n.cachedStats;return i.map((a,s)=>{const c=vxe(a),l=yxe(o[s],r);return{NumberOfContourPoints:c.length/3,ContourImageSequence:l,ContourGeometricType:"CLOSED_PLANAR",ContourData:c}})}}$G.toolName="RectangleROIStartEndThreshold";function vxe(t){return[...t[0],...t[1],...t[3],...t[2]].flat().map(i=>i.toFixed(2))}function yxe(t,e){const r=e.get("sopCommonModule",t);return{ReferencedSOPClassUID:r.sopClassUID,ReferencedSOPInstanceUID:r.sopInstanceUID}}function wxe(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 Wp=class Wp{constructor(){}static convert(e,r,n){wxe(e);const{toolName:i}=e.metadata,o=Wp.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){Wp.TOOL_NAMES[e.toolName]=e}};Wp.TOOL_NAMES={};let b5=Wp;b5.register($G);function xxe(t,e){cl.acceptAutoGenerated(t,e)}const{isEqual:Cxe}=_n;function oT(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=>Cxe(o,c));if(a!==-1)return a;let s=1/0;return r.reduce((c,l,f)=>{const u=JR(l,o);return u{const S=({value:P})=>{h=h+1,P>=g.lower&&P<=g.upper&&(d=d+1)},{imageData:T,dimensions:_,lower:E,upper:b}=w,D=GE(T,_,x,C);h=0,d=0,g={lower:E,upper:b};let O=!1;const{voxelManager:L}=T.get("voxelManager");return L.forEach(S,{imageData:T,boundsIJK:D}),s===0?O=d>0:s==1&&(O=d===h),O},v=(w,x)=>{const{imageData:C,lower:S,upper:T}=w,_=C.get("voxelManager").voxelManager,E=_.toIndex(x),b=_.getAtIndex(E);return!(b<=S||b>=T)},y=({index:w,pointIJK:x,pointLPS:C})=>{let S=u.length>0;for(let T=0;T{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=Ee(a),{viewport:l}=c;this.isDrawing=!0;const f=this.constructor.createAnnotationForViewport(l,{data:{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]}}},cachedStats:{}}});on(f,a);const u=Ct(a,this.getToolName());return this.editData={annotation:f,viewportIdsToRender:u,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),Mt(a),n.preventDefault(),Ne(u),f},this.isPointNearTool=(n,i,o,a)=>{const s=Ee(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:y,height:m}=h;return s8([p,v,y,m],g)<=a},this.toolSelectedCallback=(n,i)=>{const o=n.detail,{element:a}=o;i.highlighted=!0;const s=Ct(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},this._activateModify(a),Mt(a);const c=Ee(a),{renderingEngine:l}=c;Ne(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(g=>g===o);const u=Ct(s,this.getToolName());this.editData={annotation:i,viewportIdsToRender:u,handleIndex:f,movingTextBox:l},this._activateModify(s),Mt(s);const d=Ee(s),{renderingEngine:h}=d;Ne(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),jt(o),this.doneEditMemo(),this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&fn(a.annotationUID),Ne(s),c&&kn(a))},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,handleIndex:c,movingTextBox:l,newAnnotation:f}=this.editData;this.createMemo(o,a,{newAnnotation:f});const{data:u}=a;if(l){const{deltaPoints:d}=i,h=d.world,{textBox:g}=u.handles,{worldPosition:p}=g;p[0]+=h[0],p[1]+=h[1],p[2]+=h[2],g.hasMoved=!0}else if(c===void 0){const{deltaPoints:d}=i,h=d.world,{points:g}=u.handles;g.forEach(p=>{p[0]+=h[0],p[1]+=h[1],p[2]+=h[2]}),a.invalidated=!0}else{const{currentPoints:d}=i,h=Ee(o),{worldToCanvas:g,canvasToWorld:p}=h.viewport,v=d.world,{points:y}=u.handles;y[c]=[...v];let m,w,x,C,S,T,_,E;switch(c){case 0:case 3:m=g(y[0]),C=g(y[3]),w=[C[0],m[1]],x=[m[0],C[1]],T=p(w),_=p(x),y[1]=T,y[2]=_;break;case 1:case 2:w=g(y[1]),x=g(y[2]),m=[x[0],w[1]],C=[w[0],x[1]],S=p(m),E=p(C),y[0]=S,y[3]=E;break}a.invalidated=!0}this.editData.hasMoved=!0,Ee(o),Ne(s),a.invalidated&&rn(a,o,Xt.HandlesUpdated)},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),jt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,Ne(o),a&&kn(i),this.editData=null,i.annotationUID}},this._activateDraw=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragCallback),n.addEventListener(B.MOUSE_MOVE,this._dragCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback)},this._deactivateDraw=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_MOVE,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback)},this._activateModify=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=cn(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(W));u.annotationUID=g;const{color:w,lineWidth:x,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 sr)){const{referencedImageId:W}=h.metadata;for(const J in p.cachedStats)J.startsWith("imageId")&&f.getStackViewports().find(ve=>{const pe=Ar(W),ye=ve.hasImageURI(pe),Ie=Ar(ve.getCurrentImageId());return ye&&Ie!==pe})&&delete p.cachedStats[J]}if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;let _;if(!Kr(g))continue;!ai(g)&&!this.editData&&y!==null&&(_=[m[y]]),_&&nr(i,g,"0",_,{color:w});const E=`${g}-rect`;l8(i,g,"0",m,{color:w,lineDash:C,lineWidth:x},E),o=!0;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 O=this.configuration.getTextLines(p,l);if(!O||O.length===0)continue;if(!p.handles.textBox.hasMoved){const W=Ia(m);p.handles.textBox.worldPosition=a.canvasToWorld(W)}const L=a.worldToCanvas(p.handles.textBox.worldPosition),k=ao(i,g,"1",O,L,m,{},D),{x:G,y:j,width:F,height:U}=k;p.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([G,j]),topRight:a.canvasToWorld([G+F,j]),bottomLeft:a.canvasToWorld([G,j+U]),bottomRight:a.canvasToWorld([G+F,j+U])}}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 v,y,m,w;if(!this.configuration.calculateStats)return;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 x=0;xfr(n,o)&&fr(i,o),this._throttledCalculateCachedStats=zo(this._calculateCachedStats,100,{trailing:!0})}};W0.toolName="RectangleROI",W0.hydrate=(e,r,n)=>{const i=Bn(e);if(!i)return;const{FrameOfReferenceUID:o,referencedImageId:a,viewPlaneNormal:s,instance:c,viewport:l}=W0.hydrateBase(W0,i,r,n),{toolInstance:f,...u}=n||{},d={annotationUID:(n==null?void 0:n.annotationUID)||Tn(),data:{handles:{points:r,activeHandleIndex:null},label:"",cachedStats:{}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:c.getToolName(),viewPlaneNormal:s,FrameOfReferenceUID:o,referencedImageId:a,...u}};on(d,l.element),Ne([l.id])};let pu=W0;function Txe(t,e){const r=t.cachedStats[e],{area:n,mean:i,max:o,stdDev:a,areaUnit:s,modalityUnit:c,min:l}=r;if(i==null)return;const f=[];return Mr(n)&&f.push(`Area: ${an(n)} ${s}`),Mr(i)&&f.push(`Mean: ${an(i)} ${c}`),Mr(o)&&f.push(`Max: ${an(o)} ${c}`),Mr(l)&&f.push(`Max: ${an(l)} ${c}`),Mr(a)&&f.push(`Std Dev: ${an(a)} ${c}`),f}const{transformWorldToIndex:Wg}=_n;class P8 extends pu{constructor(e={},r={configuration:{storePointData:!1,numSlicesToPropagate:10,calculatePointsInsideVolume:!0,getTextLines:_xe,statsCalculator:pl,showTextBox:!1,throttleTimeout:100}}){super(e,r),this.addNewAnnotation=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=Ee(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 ar)throw new Error("Stack Viewport Not implemented");{const T=this.getTargetId(l);v=Cl(T),p=ke.getVolume(v),g=cu(p,s,d)}const y=Mf(p,d),m=this._getStartCoordinate(s,d),w=this._getEndCoordinate(s,y,d),x=l.getFrameOfReferenceUID(),C={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:[...d],enabledElement:c,viewUp:[...h],FrameOfReferenceUID:x,referencedImageId:g,toolName:this.getToolName(),volumeId:v,spacingInNormal:y},data:{label:"",startCoordinate:m,endCoordinate:w,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),on(C,a);const S=Ct(a,this.getToolName());return this.editData={annotation:C,viewportIdsToRender:S,handleIndex:3,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),Mt(a),n.preventDefault(),Ne(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),jt(o);const u=Ee(o);this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&fn(a.annotationUID);const d=this.getTargetId(u.viewport),h=ke.getVolume(d.split(/volumeId:|\?/)[1]);this._computePointsInsideVolume(a,d,h,u),Ne(s),c?kn(a):rn(a,o)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n;let s=cn(this.getToolName(),a.element);if(!(s!=null&&s.length))return o;s=Jw(s,a.getCamera());const c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id};for(let l=0;la.worldToCanvas(F));c.annotationUID=u;const w=this.getStyle("lineWidth",c,f),x=this.getStyle("lineDash",c,f),C=this.getStyle("color",c,f),S=a.getCamera().focalPoint,T=a.getCamera().viewPlaneNormal;let _=g,E=p;if(Array.isArray(g)){_=this._getCoordinateForViewplaneNormal(_,T);const F=this._getIndexOfCoordinatesForViewplaneNormal(T);d.handles.points.forEach(U=>{U[F]=_}),d.startCoordinate=_}Array.isArray(p)&&(E=this._getCoordinateForViewplaneNormal(E,T),d.endCoordinate=E,d.endCoordinate=E);const b=Yu(_),D=Yu(E),O=this._getCoordinateForViewplaneNormal(S,T),L=Yu(O);if(LMath.max(b,D))continue;f.invalidated&&this._throttledCalculateCachedStats(f,n);let P=!1;if((L===b||L===D)&&(P=!0),!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;let k;if(!Kr(u))continue;!ai(u)&&!this.editData&&y!==null&&P&&(k=[m[y]]),k&&nr(i,u,"0",k,{color:C});let G=x;if(P||(G=2),A1(i,u,"0",m[0],m[3],{color:C,lineDash:G,lineWidth:w}),o=!0,this.configuration.showTextBox){const F=this.getLinkedTextBoxStyle(c,f);if(!F.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 U=this.configuration.getTextLines(d,{metadata:h});if(!U||U.length===0)continue;if(!d.handles.textBox.hasMoved){const Ie=Ia(m);d.handles.textBox.worldPosition=a.canvasToWorld(Ie)}const W=a.worldToCanvas(d.handles.textBox.worldPosition),te=ao(i,u,"1",U,W,m,{},F),{x:le,y:ve,width:pe,height:ye}=te;d.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([le,ve]),topRight:a.canvasToWorld([le+pe,ve]),bottomLeft:a.canvasToWorld([le,ve+ye]),bottomRight:a.canvasToWorld([le+pe,ve+ye])}}}return o},this.configuration.calculatePointsInsideVolume?this._throttledCalculateCachedStats=zo(this._calculateCachedStatsTool,this.configuration.throttleTimeout,{trailing:!0}):this._throttledCalculateCachedStats=ag(this._calculateCachedStatsTool,this.configuration.throttleTimeout)}_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=Wg(s,f[0]),d=Wg(s,f[0]),h=Be();s.indexToWorldVec3(u,h);const g=Be();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=Ki(h,g),v=[];for(let y=0;y{const w=Be();return Cn(w,m,o,y),Array.from(w)}));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}=Yw(s,c,h,g),y=Da(d,o.habdles),m=Math.abs(p*v)/(y.scale*y.scale),w={isPreScaled:wu(l,r),isSuvScaled:this.isSuvScaled(l,r,e.metadata.referencedImageId)},x=xu(a.Modality,e.metadata.referencedImageId,w);for(let E=0;E{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=Ee(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 ar)p=g.split("imageId:")[1];else{v=Cl(g);const x=ke.getVolume(v);p=cu(x,s,d)}const y=l.getFrameOfReferenceUID(),m={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:[...d],enabledElement:c,viewUp:[...h],FrameOfReferenceUID:y,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}};on(m,a);const w=Ct(a,this.getToolName());return this.editData={annotation:m,viewportIdsToRender:w,handleIndex:3,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),Mt(a),n.preventDefault(),Ne(w),m},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=cn(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 y=this.getStyle("lineWidth",l,u),m=this.getStyle("lineDash",l,u),w=this.getStyle("color",l,u);if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;rn(u,s);let x;if(!Kr(d))continue;!ai(d)&&!this.editData&&p!==null&&(x=[v[p]]),x&&nr(i,d,"0",x,{color:w}),A1(i,d,"0",v[0],v[3],{color:w,lineDash:m,lineWidth:y}),o=!0}return o}}}R8.toolName="RectangleROIThreshold";function HG(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=>zr(c,p));let d=yf(u,l);r.numSlicesToProject&&!((g=a.cachedStats)!=null&&g.projectionPoints)&&(d=CG(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 Exe(t,e,r,n){const i=t.map(s=>hr.getAnnotation(s));bxe(i);let o;for(let s=0;s{if(!Kt(f,t[0].dimensions)||!Kt(l,t[0].direction)||!Kt(d,t[0].spacing)||!Kt(u,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(l=>{const f=l.voxelManager,u=f.getScalarDataLength();for(let d=0;d0;)g(f.pop());return{flooded:u};function g(_){const E=_.currentArgs,b=_.previousArgs;p(E)||(v(E),y(E)?(m(E),x(E)):w(b))}function p(_){const[E,b,D=0]=_,O=E+32768+65536*(b+32768+65536*(D+32768));return d.has(O)}function v(_){const[E,b,D=0]=_,O=E+32768+65536*(b+32768+65536*(D+32768));d.add(O)}function y(_){const E=C(_);return o?o(E,c):E===c}function m(_){u.push(_),n&&n(..._)}function w(_){const[E,b,D=0]=_,O=E+32768+65536*(b+32768+65536*(D+32768));h==null||h.set(O,_),i&&i(..._)}function x(_){for(let E=0;E{const{segmentIndex:e,previewSegmentIndex:r,segmentationVoxelManager:n,centerIJK:i,viewPlaneNormal:o,segmentationImageData:a,configuration:s}=t;if(!(s!=null&&s.useCenterSegmentIndex))return;let c=!1,l=!1;const f=[...n.getBoundsIJK()];Math.abs(o[0])>.8?f[0]=[i[0],i[0]]:Math.abs(o[1])>.8?f[1]=[i[1],i[1]]:Math.abs(o[2])>.8&&(f[2]=[i[2],i[2]]);const u=({value:h})=>{c||(c=h===e),l||(l=h===r)};if(n.forEach(u,{imageData:a,isInObject:t.isInObject,boundsIJK:f}),!c&&!l){t.centerSegmentIndexInfo.segmentIndex=null;return}const d=n.getAtIJKPoint(i);t.centerSegmentIndexInfo.segmentIndex=d,t.centerSegmentIndexInfo.hasSegmentIndex=c,t.centerSegmentIndexInfo.hasPreviewIndex=l}},Pxe={[xt.Initialize]:t=>{var y;const{operationName:e,centerIJK:r,segmentationVoxelManager:n,imageVoxelManager:i,configuration:o,segmentIndex:a,viewport:s}=t;if(!((y=o==null?void 0:o.threshold)!=null&&y.isDynamic)||!r||!a||e===xt.RejectPreview||e===xt.OnInteractionEnd)return;const c=n.getBoundsIJK(),{range:l,dynamicRadius:f=0}=o.threshold,u=l?0:f,{viewPlaneNormal:d}=s.getCamera(),h=c.map((m,w)=>{const[x,C]=m;return[Math.max(x,r[w]-u),Math.min(C,r[w]+u)]});Math.abs(d[0])>.8?h[0]=[r[0],r[0]]:Math.abs(d[1])>.8?h[1]=[r[1],r[1]]:Math.abs(d[2])>.8&&(h[2]=[r[2],r[2]]);const g=l||[1/0,-1/0],p=u*u,v=({value:m,pointIJK:w})=>{if(mS(r,w)>p)return;const C=Array.isArray(m)?Ih(m):m;g[0]=Math.min(C,g[0]),g[1]=Math.max(C,g[1])};i.forEach(v,{boundsIJK:h}),o.threshold.range=g},[xt.OnInteractionStart]:t=>{var r;const{configuration:e}=t;(r=e==null?void 0:e.threshold)!=null&&r.isDynamic&&(e.threshold.range=null)},[xt.ComputeInnerCircleRadius]:t=>{const{configuration:e,viewport:r}=t,{dynamicRadius:n=0,isDynamic:i}=e.threshold;if(!i){e.threshold.dynamicRadiusInCanvas=0;return}if(n===0)return;const o=r.getImageData();if(!o)return;const{spacing:a}=o,s=[r.element.clientWidth/2,r.element.clientHeight/2],c=n*a[0],f=r.canvasToWorld(s).map(h=>h+c),u=r.worldToCanvas(f),d=Math.abs(s[0]-u[0]);e.threshold.dynamicRadiusInCanvas||(e.threshold.dynamicRadiusInCanvas=0),e.threshold.dynamicRadiusInCanvas=3+d}},Rxe={[xt.Initialize]:t=>{t.segmentIndex=0}},{isEqual:FC}=_n,a7={toIJK:t=>t,fromIJK:t=>t,type:"acquistion"},Lxe={toIJK:([t,e,r])=>[r,t,e],fromIJK:([t,e,r])=>[e,r,t],type:"jk"},Axe={toIJK:([t,e,r])=>[t,r,e],fromIJK:([t,e,r])=>[t,r,e],type:"ik"};function qG(t,e){if(!(t instanceof Cr))return{...a7,boundsIJKPrime:e};const{viewPlaneNormal:r}=t.getCamera(),n=FC(Math.abs(r[0]),1)&&Lxe||FC(Math.abs(r[1]),1)&&Axe||FC(Math.abs(r[2]),1)&&a7;return n?{...n,boundsIJKPrime:n.fromIJK(e)}:{toIJK:null,boundsIJKPrime:null,fromIJK:null,error:`Only mappings orthogonal to acquisition plane are permitted, but requested ${r}`}}const{RLEVoxelMap:Nxe,VoxelManager:kxe}=_n,Vxe=65535;var uo;(function(t){t[t.SEGMENT=-1]="SEGMENT",t[t.ISLAND=-2]="ISLAND",t[t.INTERIOR=-3]="INTERIOR",t[t.EXTERIOR=-4]="EXTERIOR",t[t.INTERIOR_SMALL=-5]="INTERIOR_SMALL",t[t.INTERIOR_TEST=-6]="INTERIOR_TEST"})(uo||(uo={}));class Bd{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,r,n){const i=!!r.sourceVoxelManager,o=i?r.sourceVoxelManager:r,a=i?r:kxe.createRLEHistoryVoxelManager(o),{segmentIndex:s=1,previewSegmentIndex:c=1}=n,l=n.points||o.getPoints();if(!(l!=null&&l.length))return;const f=o.getBoundsIJK().map((x,C)=>[Math.min(x[0],...l.map(S=>S[C])),Math.max(x[1],...l.map(S=>S[C]))]);if(f.find(x=>x[0]<0||x[1]>Vxe))return;const{toIJK:u,fromIJK:d,boundsIJKPrime:h,error:g}=qG(e,f);if(g){console.warn("Not performing island removal for planes not orthogonal to acquisition plane",g);return}const[p,v,y]=d(o.dimensions),m=new Nxe(p,v,y),w=(x,C,S)=>{const T=o.toIndex(u([x,C,S])),_=o.getAtIndex(T);if(_===c||_===s)return uo.SEGMENT};return m.fillFrom(w,h),m.normalizer={toIJK:u,fromIJK:d,boundsIJKPrime:h},this.segmentSet=m,this.previewVoxelManager=a,this.segmentIndex=s,this.previewSegmentIndex=c??s,this.selectedPoints=l,!0}floodFillSegmentIsland(){const{selectedPoints:e,segmentSet:r}=this;let n=0;const{fromIJK:i}=r.normalizer;return e.forEach(o=>{const a=i(o),s=r.toIndex(a),[c,l,f]=a;r.get(s)===uo.SEGMENT&&(n+=r.floodFill(c,l,f,uo.ISLAND))}),n}removeExternalIslands(){const{previewVoxelManager:e,segmentSet:r}=this,{toIJK:n}=r.normalizer,i=(o,a)=>{const[,s,c]=r.toIJK(o);if(a.value!==uo.ISLAND)for(let l=a.start;l{let f;for(const u of[...l])if(u.value===uo.ISLAND){if(!f){if(this.fillInternalEdge&&u.start>0)for(let d=0;d{if(l.value!==uo.INTERIOR)return;const[,f,u]=e.toIJK(c),d=f>0?e.getRun(f-1,u):null,h=f+12&&(!v||!y)&&e.floodFill(l.start,f,u,uo.EXTERIOR,{singlePlane:!0})}),e.forEach((c,l)=>{if(l.value!==uo.INTERIOR)return;const[,f,u]=e.toIJK(c),g=e.floodFill(l.start,f,u,uo.INTERIOR_TEST)>this.maxInternalRemove?uo.EXTERIOR:uo.INTERIOR_SMALL;e.floodFill(l.start,f,u,g)}),e.forEach((c,l)=>{if(l.value===uo.INTERIOR_SMALL)for(let f=l.start;f=o.start&&n=i))return!0;return!1}}const Fxe={[xt.OnInteractionEnd]:t=>{const{previewSegmentIndex:e,segmentIndex:r,viewport:n,segmentationVoxelManager:i,activeStrategy:o,memo:a}=t;if(o!=="THRESHOLD_INSIDE_SPHERE_WITH_ISLAND_REMOVAL"||r===null)return;const s=new Bd,c=(a==null?void 0:a.voxelManager)||i;if(!s.initialize(n,c,{previewSegmentIndex:e,segmentIndex:r}))return;s.floodFillSegmentIsland(),s.removeExternalIslands(),s.removeInternalIslands();const l=c.getArrayOfModifiedSlices();l&&wo(t.segmentationId,l,e)}},Uxe={[xt.Preview]:function(t){var o,a;const{previewSegmentIndex:e,configuration:r,enabledElement:n}=t;if(!e||!r)return;(o=this.onInteractionStart)==null||o.call(this,n,t);const i=this.fill(n,t);return i&&((a=this.onInteractionEnd)==null||a.call(this,n,t)),i},[xt.Initialize]:t=>{const{segmentIndex:e,previewColor:r,previewSegmentIndex:n}=t;if(n==null||e==null)return;const i=ug(t.segmentationId);i==null||i.forEach(o=>{DB(o,t.segmentationId,n,r)})},[xt.AcceptPreview]:t=>{const{previewSegmentIndex:e,segmentationVoxelManager:r,memo:n,segmentIndex:i,centerSegmentIndexInfo:o}=t||{},{changedIndices:a}=o||{},s=n,c=({index:l})=>{const f=r.getAtIndex(l);(a==null?void 0:a.length)>0?a.includes(l)&&s.voxelManager.setAtIndex(l,0):f===e&&s.voxelManager.setAtIndex(l,i)};r.forEach(c),wo(t.segmentationId,r.getArrayOfModifiedSlices(),i),t.centerSegmentIndexInfo.changedIndices=[]},[xt.RejectPreview]:t=>{t&&MV.undoIf(e=>{const r=e;if(!(r!=null&&r.voxelManager))return!1;const{segmentationVoxelManager:n}=r;let i=!1;const o=({value:a})=>{a===t.previewSegmentIndex&&(i=!0)};return n.forEach(o),i})}},Bxe={[xt.Fill]:t=>{var l;const{segmentsLocked:e,segmentationImageData:r,segmentationVoxelManager:n,brushStrategy:i,centerIJK:o}=t,a=(l=i.createIsInThreshold)==null?void 0:l.call(i,t),{setValue:s}=i,c=a?f=>{const{value:u,index:d}=f;e.includes(u)||!a(d)||s(t,f)}:f=>s(t,f);n.forEach(c,{imageData:r,isInObject:t.isInObject,boundsIJK:t.isInObjectBoundsIJK}),n.addPoint(o)}};function Gxe({operationData:t,existingValue:e,index:r}){const{previewSegmentIndex:n,memo:i,centerSegmentIndexInfo:o,previewOnHover:a,segmentIndex:s}=t,{hasPreviewIndex:c,hasSegmentIndex:l,segmentIndex:f}=o;if(f===0&&l&&c){if(e===s||a)return;if(e===n){i.voxelManager.setAtIndex(r,0);return}return}if(f===0&&l&&!c){if(e===0||e!==s)return;i.voxelManager.setAtIndex(r,n),o.changedIndices.push(r);return}if(f===0&&!l&&c){if(e===s||a)return;if(e===n){i.voxelManager.setAtIndex(r,0);return}return}if(f===0&&!l&&!c){if(e===s)return;if(e===n){i.voxelManager.setAtIndex(r,n);return}return}if(f===n&&l&&c){if(e===s)return;i.voxelManager.setAtIndex(r,n);return}if(f===n&&!l&&c){if(e===s)return;i.voxelManager.setAtIndex(r,n);return}if(f===s&&l&&c){if(e===s)return;i.voxelManager.setAtIndex(r,n);return}if(f===s&&l&&!c){if(e===s)return;i.voxelManager.setAtIndex(r,n);return}}const Wxe={[xt.INTERNAL_setValue]:(t,{value:e,index:r})=>{const{segmentsLocked:n,previewSegmentIndex:i,memo:o,segmentationVoxelManager:a,centerSegmentIndexInfo:s,segmentIndex:c}=t,l=a.getAtIndex(r);if(!n.includes(e)&&!(!s&&l===c)&&!((s==null?void 0:s.segmentIndex)!==0&&l===c)){if((s==null?void 0:s.segmentIndex)===null){o.voxelManager.setAtIndex(r,i??c);return}if(!i){let f=c;s&&(f=s.segmentIndex),o.voxelManager.setAtIndex(r,f);return}Gxe({operationData:t,existingValue:l,index:r})}}},zxe={[xt.CreateIsInThreshold]:t=>{const{imageVoxelManager:e,segmentIndex:r,configuration:n}=t;if(!(!n||!r))return i=>{var c;const o=e.getAtIndex(i),a=Array.isArray(o)?ra(o):o,{threshold:s}=n||{};return(c=s==null?void 0:s.range)!=null&&c.length?s.range[0]<=a&&a<=s.range[1]:!0}}},s7=10;function D5(){return{maxIJKs:[]}}function XG(t,e){const{value:r}=e,{maxIJKs:n}=t,i=n.length;if(typeof r!="number"||i>=s7&&r=n[i-1].value)n.push(o);else for(let a=0;a=s7&&n.splice(0,1)}function YG(t,e,r){const{spacing:n,calibration:i}=r,{volumeUnit:o}=Da({calibration:i,hasPixelSpacing:!0},[]),a=n?n[0]*n[1]*n[2]:1;return e.volume={value:Array.isArray(e.count.value)?e.count.value.map(s=>s*a):e.count.value*a,unit:o,name:"volume",label:"Volume"},e.maxIJKs=t.maxIJKs.filter(s=>s.pointIJK!==void 0),e.array.push(e.volume),t.maxIJKs=[],e}const db=class db extends pl{static statsInit(e){super.statsInit(e),this.volumetricState=D5()}static statsCallback(e){super.statsCallback(e),XG(this.volumetricState,e)}static getStatistics(e){const r={...e,unit:(e==null?void 0:e.unit)||"none",calibration:e==null?void 0:e.calibration,hasPixelSpacing:e==null?void 0:e.hasPixelSpacing},n=super.getStatistics(r);return YG(this.volumetricState,n,r)}};db.volumetricState=D5();let Sd=db;class c7 extends zU{constructor(e){super(e),this.volumetricState=D5()}statsInit(e){super.statsInit(e),this.volumetricState=D5()}statsCallback(e){super.statsCallback(e),XG(this.volumetricState,e)}getStatistics(e){const r={...e,unit:(e==null?void 0:e.unit)||"none",calibration:e==null?void 0:e.calibration,hasPixelSpacing:e==null?void 0:e.hasPixelSpacing},n=super.getStatistics(r);return YG(this.volumetricState,n,r)}}const $xe=Math.pow(3*1e3/(4*Math.PI),1/3);async function JG({segmentationId:t,segmentIndices:e,mode:r="collective"}){nx(),vl(Ja.COMPUTE_STATISTICS,0);const n=BG(t,e);if(!n)return;const{operationData:i,segVolumeId:o,segImageIds:a,reconstructableVolume:s,indices:c}=n,{refImageId:l,modalityUnitOptions:f}=pxe(o,a),u=MB(l,f);return s?await jxe({operationData:i,indices:c,unit:u,mode:r}):await Hxe({segImageIds:a,indices:c,unit:u,mode:r})}async function jxe({operationData:t,indices:e,unit:r,mode:n}){var p;const i=GG(t),{segmentationVoxelManager:o,imageVoxelManager:a,segmentationImageData:s,imageData:c}=i;if(!o||!s)return;const l=s.getSpacing(),{boundsIJK:f}=o;if(!f)return Sd.getStatistics({spacing:l});const d={scalarData:o.getCompleteScalarDataArray(),dimensions:s.getDimensions(),spacing:s.getSpacing(),origin:s.getOrigin(),direction:s.getDirection()},h={scalarData:a.getCompleteScalarDataArray(),dimensions:c.getDimensions(),spacing:c.getSpacing(),origin:c.getOrigin(),direction:c.getDirection()};if(!((p=h.scalarData)!=null&&p.length))return;const g=await xl().executeTask("compute","calculateSegmentsStatisticsVolume",{segmentationInfo:d,imageInfo:h,indices:e,unit:r,mode:n});if(vl(Ja.COMPUTE_STATISTICS,100),n==="collective")return I5({stats:g,unit:r,spacing:l,segmentationImageData:s,imageVoxelManager:a});{const v={};return Object.entries(g).forEach(([y,m])=>{v[y]=I5({stats:m,unit:r,spacing:l,segmentationImageData:s,imageVoxelManager:a})}),v}}const UC=(t,e)=>{if(!t.array)return;const r=t.array.findIndex(n=>n.name===e.name);r!==-1?t.array[r]=e:t.array.push(e)},I5=({stats:t,unit:e,spacing:r,segmentationImageData:n,imageVoxelManager:i})=>{if(t.mean.unit=e,t.max.unit=e,t.min.unit=e,e!=="SUV")return t;const o=r.map(a=>Math.max(1,Math.round(1.1*$xe/a)));for(const a of t.maxIJKs){const s=Kxe(a,o,n,i,r);if(!s)continue;const{mean:c}=s;(!t.peakValue||t.peakValue.value<=c.value)&&(t.peakValue={name:"peakValue",label:"Peak Value",value:c.value,unit:e},t.peakPoint={name:"peakLPS",label:"Peak SUV Point",value:a.pointLPS?[...a.pointLPS]:null,unit:null},UC(t,t.peakValue),UC(t,t.peakPoint))}if(t.volume&&t.mean){const a=t.volume.value,s=t.mean.value;t.lesionGlycolysis={name:"lesionGlycolysis",label:"Lesion Glycolysis",value:a*s,unit:`${t.volume.unit}·${e}`},UC(t,t.lesionGlycolysis)}return t};async function Hxe({segImageIds:t,indices:e,unit:r,mode:n}){vl(Ja.COMPUTE_STATISTICS,0);const{segmentationInfo:i,imageInfo:o}=WG(t),a=await xl().executeTask("compute","calculateSegmentsStatisticsStack",{segmentationInfo:i,imageInfo:o,indices:e,mode:n});vl(Ja.COMPUTE_STATISTICS,100);const s=i[0].spacing,c=i[0],l=o[0].voxelManager;if(n==="collective")return I5({stats:a,unit:r,spacing:s,segmentationImageData:c,imageVoxelManager:l});{const f={};return Object.entries(a).forEach(([u,d])=>{f[u]=I5({stats:d,unit:r,spacing:s,segmentationImageData:c,imageVoxelManager:l})}),f}}function Kxe(t,e,r,n,i){const{pointIJK:o,pointLPS:a}=t;if(!o)return;const s=o.map((f,u)=>[f-e[u],f+e[u]]),c=(f,u)=>{const d=(u[0]-o[0])/e[0],h=(u[1]-o[1])/e[1],g=(u[2]-o[2])/e[2];return d*d+h*h+g*g<=1},l=({pointIJK:f,pointLPS:u})=>{const d=n.getAtIJKPoint(f);d!==void 0&&Sd.statsCallback({value:d,pointLPS:u,pointIJK:f})};return Sd.statsInit({storePointData:!1}),Z4(r,{pointInShapeFn:c,callback:l,boundsIJK:s}),Sd.getStatistics({spacing:i})}const qxe={[xt.GetStatistics]:function(t,e,r){const{indices:n}=r,{segmentationId:i,viewport:o}=e;JG({segmentationId:i,segmentIndices:n})}},pn={determineSegmentIndex:Mxe,dynamicThreshold:Pxe,erase:Rxe,islandRemoval:Fxe,preview:Uxe,regionFill:Bxe,setValue:Wxe,threshold:zxe,labelmapStatistics:qxe,ensureSegmentationVolumeFor3DManipulation:FG,ensureImageVolumeFor3DManipulation:UG},sd=class sd{constructor(e,...r){this._initialize=[],this._fill=[],this._onInteractionStart=[],this.fill=(n,i)=>{const o=this.initialize(n,i,xt.Fill);if(!o)return;this._fill.forEach(c=>c(o));const{segmentationVoxelManager:a,segmentIndex:s}=o;return wo(o.segmentationId,a.getArrayOfModifiedSlices(),s),o},this.onInteractionStart=(n,i)=>{const o=this.initialize(n,i);o&&this._onInteractionStart.forEach(a=>a.call(this,o))},this.addPreview=(n,i)=>{const o=this.initialize(n,i,xt.AddPreview);if(o)return o},this.configurationName=e,this.compositions=r,r.forEach(n=>{const i=typeof n=="function"?n():n;if(i)for(const o in i){if(!sd.childFunctions[o])throw new Error(`Didn't find ${o} as a brush strategy`);sd.childFunctions[o](this,i[o])}}),this.strategyFunction=(n,i)=>this.fill(n,i);for(const n of Object.keys(sd.childFunctions))this.strategyFunction[n]=this[n]}initialize(e,r,n){const{viewport:i}=e,o=M8({operationData:r,viewport:i,strategy:this});if(!o)return null;const{imageVoxelManager:a,segmentationVoxelManager:s,segmentationImageData:c}=o,l=r.createMemo(r.segmentationId,s),f={operationName:n,...r,segmentIndex:r.segmentIndex,enabledElement:e,imageVoxelManager:a,segmentationVoxelManager:s,segmentationImageData:c,viewport:i,centerWorld:null,isInObject:null,isInObjectBoundsIJK:null,brushStrategy:this,memo:l};return this._initialize.forEach(u=>u(f)),f}};sd.COMPOSITIONS=pn,sd.childFunctions={[xt.OnInteractionStart]:Xs(xt.OnInteractionStart,xt.Initialize),[xt.OnInteractionEnd]:Xs(xt.OnInteractionEnd,xt.Initialize),[xt.Fill]:Xs(xt.Fill),[xt.Initialize]:Xs(xt.Initialize),[xt.CreateIsInThreshold]:J2(xt.CreateIsInThreshold),[xt.Interpolate]:Xs(xt.Interpolate,xt.Initialize),[xt.AcceptPreview]:Xs(xt.AcceptPreview,xt.Initialize),[xt.RejectPreview]:Xs(xt.RejectPreview,xt.Initialize),[xt.INTERNAL_setValue]:J2(xt.INTERNAL_setValue),[xt.Preview]:J2(xt.Preview,!1),[xt.ComputeInnerCircleRadius]:Xs(xt.ComputeInnerCircleRadius),[xt.EnsureSegmentationVolumeFor3DManipulation]:Xs(xt.EnsureSegmentationVolumeFor3DManipulation),[xt.EnsureImageVolumeFor3DManipulation]:Xs(xt.EnsureImageVolumeFor3DManipulation),[xt.AddPreview]:Xs(xt.AddPreview),[xt.GetStatistics]:J2(xt.GetStatistics),compositions:null};let Cc=sd;function Xs(t,e){const r=`_${t}`;return(n,i)=>{n[r]||(n[r]=[]),n[r].push(i),n[t]||(n[t]=e?(o,a,...s)=>{const c=n[e](o,a,t);let l;return n[r].forEach(f=>{const u=f.call(n,c,...s);l||(l=u)}),l}:(o,...a)=>{n[r].forEach(s=>s.call(n,o,...a))})}}function J2(t,e=!0){return(r,n)=>{if(r[t])throw new Error(`The singleton method ${t} already exists`);r[t]=e?n:(i,o,...a)=>(o.enabledElement=i,n.call(r,o,...a))}}function ZG(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:l7,isEqual:BC}=_n,QG={[xt.Initialize]:t=>{const{points:e,viewport:r,segmentationImageData:n}=t;if(!e)return;const i=bt(0,0,0);e.forEach(d=>{ni(i,i,d)}),_r(i,i,1/e.length),t.centerWorld=i,t.centerIJK=l7(n,i);const o=e.map(d=>r.worldToCanvas(d)),[a,s]=g5(o),c=r.canvasToWorld(a),l=r.canvasToWorld(s),f=e.map(d=>l7(n,d)),u=yf(f,n.getDimensions());t.isInObject=eW({topLeftWorld:c,bottomRightWorld:l,center:i}),t.isInObjectBoundsIJK=u}};function eW(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(BC(i,s)&&BC(o,s)&&BC(a,s)){const f={center:n,radius:s,radius2:s*s};return u=>ZG(f,u)}const c={center:n,xRadius:i,yRadius:o,zRadius:a},{precalculated:l}=e8(c,{});return l}const tW=new Cc("Circle",pn.regionFill,pn.setValue,QG,pn.determineSegmentIndex,pn.preview,pn.labelmapStatistics),Xxe=new Cc("CircleThreshold",pn.regionFill,pn.setValue,QG,pn.determineSegmentIndex,pn.dynamicThreshold,pn.threshold,pn.preview,pn.islandRemoval,pn.labelmapStatistics),ox=tW.strategyFunction,Yxe=Xxe.strategyFunction;function Jxe(){throw new Error("Not yet implemented")}const{transformWorldToIndex:Zxe}=_n,Qxe={[xt.Initialize]:t=>{const{points:e,viewport:r,segmentationImageData:n}=t;if(!e)return;const i=bt(0,0,0);e.forEach(c=>{ni(i,i,c)}),_r(i,i,1/e.length),t.centerWorld=i,t.centerIJK=Zxe(n,i);const{boundsIJK:o,topLeftWorld:a,bottomRightWorld:s}=zwe(e.slice(0,2),n,r);t.isInObjectBoundsIJK=o,t.isInObject=eW({topLeftWorld:a,bottomRightWorld:s,center:i})}},ax=new Cc("Sphere",pn.regionFill,pn.setValue,Qxe,pn.determineSegmentIndex,pn.preview,pn.labelmapStatistics,pn.ensureSegmentationVolumeFor3DManipulation),nW=ax.strategyFunction,eCe=new Cc("SphereThreshold",...ax.compositions,pn.dynamicThreshold,pn.threshold,pn.ensureSegmentationVolumeFor3DManipulation,pn.ensureImageVolumeFor3DManipulation),tCe=new Cc("SphereThreshold",...ax.compositions,pn.dynamicThreshold,pn.threshold,pn.islandRemoval,pn.ensureSegmentationVolumeFor3DManipulation,pn.ensureImageVolumeFor3DManipulation),nCe=eCe.strategyFunction,rCe=tCe.strategyFunction,iCe=new Cc("EraseSphere",pn.erase,...ax.compositions),rW=iCe.strategyFunction,oCe=new Cc("EraseCircle",pn.erase,...tW.compositions),iW=oCe.strategyFunction,{VoxelManager:aT,RLEVoxelMap:aCe}=_n;function sT(t,e){return aW(t,e)}function oW(t){const{segmentationVoxelManager:e,undoVoxelManager:r,redoVoxelManager:n}=this,i=t===!1?n:r;i.forEach(({value:a,pointIJK:s})=>{e.setAtIJKPoint(s,a)});const o=i.getArrayOfModifiedSlices();wo(this.segmentationId,o)}function aW(t,e){const r=aT.createRLEHistoryVoxelManager(e);return{segmentationId:t,restoreMemo:oW,commitMemo:sCe,segmentationVoxelManager:e,voxelManager:r,id:Tn(),operationType:"labelmap"}}function sCe(){if(this.redoVoxelManager)return!0;if(!this.voxelManager.modifiedSlices.size)return!1;const{segmentationVoxelManager:t}=this,e=aT.createRLEHistoryVoxelManager(t);aCe.copyMap(e.map,this.voxelManager.map);for(const n of this.voxelManager.modifiedSlices.keys())e.modifiedSlices.add(n);this.undoVoxelManager=e;const r=aT.createRLEVolumeVoxelManager({dimensions:this.segmentationVoxelManager.dimensions});return this.redoVoxelManager=r,e.forEach(({index:n,pointIJK:i,value:o})=>{const a=t.getAtIJKPoint(i);a!==o&&r.setAtIndex(n,a)}),!0}const cCe=Object.freeze(Object.defineProperty({__proto__:null,createLabelmapMemo:sT,createRleMemo:aW,restoreMemo:oW},Symbol.toStringTag,{value:"Module"})),{isEqual:Z2}=_n,lCe=bt(1,0,0),uCe=bt(0,1,0),fCe=bt(0,0,1),u7=[lCe,uCe,fCe];function sW(t){const e=jn(Be(),t[0],t[1]),r=jn(Be(),t[0],t[2]),n=f7(e,u7),i=f7(r,u7);return[...n,...i].every(a=>Z2(a,0)||Z2(a,90)||Z2(a,180)||Z2(a,270))}function f7(t,e){return e.map(r=>g4(t,r)*180/Math.PI)}const{transformWorldToIndex:cW}=_n,lW={[xt.Initialize]:t=>{const{points:e,imageVoxelManager:r,viewport:n,segmentationImageData:i,segmentationVoxelManager:o}=t;if(!e)return;const a=bt(0,0,0);e.forEach(l=>{ni(a,a,l)}),_r(a,a,1/e.length),t.centerWorld=a,t.centerIJK=cW(i,a);const{boundsIJK:s,pointInShapeFn:c}=dCe(n,e,i);t.isInObject=c,t.isInObjectBoundsIJK=s}};function dCe(t,e,r){let n=e.map(w=>cW(r,w));n=n.map(w=>w.map(x=>Math.round(x)));const i=yf(n,r.getDimensions()),a=t instanceof ar||sW(n),s=r.getDirection(),c=r.getSpacing(),{viewPlaneNormal:l}=t.getCamera(),f=Mf({direction:s,spacing:c},l),u=mU(e);let[[d,h],[g,p],[v,y]]=u;return d-=f,h+=f,g-=f,p+=f,v-=f,y+=f,{boundsIJK:i,pointInShapeFn:a?()=>!0:w=>{const[x,C,S]=w,T=x>=d&&x<=h,_=C>=g&&C<=p,E=S>=v&&S<=y;return T&&_&&E}}}const hCe=new Cc("Rectangle",pn.regionFill,pn.setValue,lW,pn.determineSegmentIndex,pn.preview,pn.labelmapStatistics),gCe=new Cc("RectangleThreshold",pn.regionFill,pn.setValue,lW,pn.determineSegmentIndex,pn.dynamicThreshold,pn.threshold,pn.preview,pn.islandRemoval,pn.labelmapStatistics),A8=hCe.strategyFunction,pCe=gCe.strategyFunction,mCe=Object.freeze(Object.defineProperty({__proto__:null,fillInsideCircle:ox,fillInsideRectangle:A8,fillOutsideCircle:Jxe,thresholdInsideRectangle:pCe},Symbol.toStringTag,{value:"Module"})),zp=class zp extends hi{constructor(e,r){super(e,r),this.memoMap=new Map,this.acceptedMemoIds=new Map,this.centerSegmentIndexInfo={segmentIndex:null,hasSegmentIndex:!1,hasPreviewIndex:!1,changedIndices:[]}}_historyRedoHandler(e){const{id:r,operationType:n}=e.detail;if(n==="labelmap"){if(this.acceptedMemoIds.has(r)){this._hoverData=null;const i=this.acceptedMemoIds.get(r),o=i==null?void 0:i.element,a=this.getOperationData(o);a.segmentIndex=i==null?void 0:i.segmentIndex,o&&this.applyActiveStrategyCallback(Ee(o),a,xt.AcceptPreview)}this._previewData.isDrag=!0}}get _previewData(){return zp.previewData}createMemo(e,r){const n=r.id;if(this.memo&&this.memo.segmentationVoxelManager===r)return this.memo;let i=this.memoMap.get(n);return i?i.redoVoxelManager&&(i=sT(e,r),this.memoMap.set(n,i)):(i=sT(e,r),this.memoMap.set(n,i)),this.memo=i,i}createEditData(e){const r=Ee(e),{viewport:n}=r,i=Fd(n.id);if(!i){const l=new CustomEvent(Xe.ERROR_EVENT,{detail:{type:"Segmentation",message:"No active segmentation detected, create a segmentation representation before using the brush tool"},cancelable:!0});return He.dispatchEvent(l),null}const{segmentationId:o}=i,a=Zd(o),{representationData:s}=An(o);return this.getEditData({viewport:n,representationData:s,segmentsLocked:a,segmentationId:o})}getEditData({viewport:e,representationData:r,segmentsLocked:n,segmentationId:i}){var o,a,s;if(e instanceof Cr){const{volumeId:c}=r[Et.Labelmap],l=e.getActors();if(e instanceof ar){const g=new CustomEvent(Xe.ERROR_EVENT,{detail:{type:"Segmentation",message:"Cannot perform brush operation on the selected viewport"},cancelable:!0});return He.dispatchEvent(g),null}const u=l.map(g=>ke.getVolume(g.referencedId)),d=ke.getVolume(c),h=((o=u.find(g=>Kt(g.dimensions,d.dimensions)))==null?void 0:o.volumeId)||((a=u[0])==null?void 0:a.volumeId);return{volumeId:c,referencedVolumeId:((s=this.configuration.threshold)==null?void 0:s.volumeId)??h,segmentsLocked:n}}else{const c=Lf(e.id,i);return c?{imageId:c,segmentsLocked:n}:void 0}}createHoverData(e,r){const n=Ee(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=Fd(r);if(!n)return;const{segmentationId:i}=n,o=ba(i);if(!o)return;const a=gu(r,i,o);return{segmentIndex:o,segmentationId:i,segmentColor:a}}getOperationData(e){var v,y,m,w;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,f=(y=(v=this.configuration.preview)==null?void 0:v.previewColors)==null?void 0:y[n],{viewport:u}=Ee(e),d=gu(u.id,i,n);if(!f&&!d)return;let h=null,g=null;return(m=this.configuration.preview)!=null&&m.enabled&&(h=f||vCe(...d),g=255),{...r,points:(w=a==null?void 0:a.handles)==null?void 0:w.points,segmentIndex:n,viewPlaneNormal:c,previewOnHover:!this._previewData.isDrag,toolGroupId:this.toolGroupId,segmentationId:i,viewUp:l,centerSegmentIndexInfo:this.centerSegmentIndexInfo,activeStrategy:this.configuration.activeStrategy,configuration:this.configuration,previewColor:h,previewSegmentIndex:g,createMemo:this.createMemo.bind(this)}}addPreview(e=this._previewData.element,r){const{_previewData:n}=this,i=r==null?void 0:r.acceptReject;i===!0?this.acceptPreview(e):i===!1&&this.rejectPreview(e);const o=Ee(e),a=this.applyActiveStrategyCallback(o,this.getOperationData(e),xt.AddPreview);return n.isDrag=!0,a}rejectPreview(e=this._previewData.element){if(!e)return;this.doneEditMemo();const r=Ee(e);this.applyActiveStrategyCallback(r,this.getOperationData(e),xt.RejectPreview),this._previewData.preview=null,this._previewData.isDrag=!1}acceptPreview(e=this._previewData.element){if(!e)return;const r=this.getOperationData(e);this.memo&&this.memo.id&&this.acceptedMemoIds.set(this.memo.id,{element:e,segmentIndex:r.segmentIndex});const n=Ee(e);this.applyActiveStrategyCallback(n,r,xt.AcceptPreview),this.doneEditMemo(),this._previewData.preview=null,this._previewData.isDrag=!1}static viewportContoursToLabelmap(e,r){var v;const n=(r==null?void 0:r.removeContours)??!0,i=E1(),o=k1(e,i);if(!(o!=null&&o.length))return;const a=o.filter(y=>{var m,w;return(w=(m=y.data.contour)==null?void 0:m.polyline)==null?void 0:w.length});if(!a.length)return;const c=new zp({},{configuration:{strategies:{FILL_INSIDE_CIRCLE:ox},activeStrategy:"FILL_INSIDE_CIRCLE"}}).addPreview(e.element),{memo:l,segmentationId:f}=c,u=l==null?void 0:l.voxelManager,d=u.sourceVoxelManager||u,{dimensions:h}=u,g=e.getDefaultActor().actor.getMapper().getInputData();for(const y of a){const m=[[1/0,-1/0],[1/0,-1/0],[1/0,-1/0]],{polyline:w}=y.data.contour;for(const O of w)g.worldToIndex(O).forEach((P,k)=>{m[k][0]=Math.min(m[k][0],P),m[k][1]=Math.max(m[k][1],P)});m.forEach((O,L)=>{O[0]=Math.round(Math.max(0,O[0])),O[1]=Math.round(Math.min(h[L]-1,O[1]))});const x=ba(f),C=((v=y.data.handles)==null?void 0:v[0])||w[0],S=g.worldToIndex(C).map(Math.round),T=d.getAtIJKPoint(S)||0;let _=!1,E=!1;for(const O of w){const L=g.worldToIndex(O).map(Math.round),P=d.getAtIJKPoint(L);P===T?_=!0:P>=0&&(E=!0)}const D=_&&E?T:T===0?x:0;for(let O=m[0][0];O<=m[0][1];O++)for(let L=m[1][0];L<=m[1][1];L++)for(let P=m[2][0];P<=m[2][1];P++){const k=g.indexToWorld([O,L,P]);a8(k,w)&&u.setAtIJK(O,L,P,D)}n&&fn(y.annotationUID)}const p=u.getArrayOfModifiedSlices();wo(f,p)}};zp.previewData={preview:null,element:null,timerStart:0,timer:null,startPoint:[NaN,NaN],isDrag:!1};let Gd=zp;function vCe(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]}class sx extends Gd{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE_CIRCLE:ox,ERASE_INSIDE_CIRCLE:iW,FILL_INSIDE_SPHERE:nW,ERASE_INSIDE_SPHERE:rW,THRESHOLD_INSIDE_CIRCLE:Yxe,THRESHOLD_INSIDE_SPHERE:nCe,THRESHOLD_INSIDE_SPHERE_WITH_ISLAND_REMOVAL:rCe},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:{[xt.AcceptPreview]:{method:xt.AcceptPreview,bindings:[{key:"Enter"}]},[xt.RejectPreview]:{method:xt.RejectPreview,bindings:[{key:"Escape"}]},[xt.Interpolate]:{method:xt.Interpolate,bindings:[{key:"i"}],configuration:{useBallStructuringElement:!0,noUseDistanceTransform:!0,noUseExtrapolation:!0}},interpolateExtrapolation:{method:xt.Interpolate,bindings:[{key:"e"}],configuration:{}}}}}){super(e,r),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=Ee(o);this._editData=this.createEditData(o),this._activateDraw(o),Mt(o),n.preventDefault(),this._previewData.isDrag=!1,this._previewData.timerStart=Date.now();const s=this._hoverData||this.createHoverData(o);Ne(s.viewportIdsToRender);const c=this.getOperationData(o);return this.applyActiveStrategyCallback(a,c,xt.OnInteractionStart),!0},this.mouseMoveCallback=n=>{if(this.mode===Nn.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,{startPoint:f,timer:u,timerStart:d,isDrag:h}=this._previewData;if(h)return;const g=xr(l,f),p=Date.now()-d;if((g>o||p>i&&g>a)&&(u&&(window.clearTimeout(u),this._previewData.timer=null),h||this.rejectPreview(c)),!this._previewData.timer){const v=window.setTimeout(this.previewCallback,250);Object.assign(this._previewData,{timerStart:Date.now(),timer:v,startPoint:l,element:c})}}},this.previewCallback=()=>{if(this._previewData.isDrag){this._previewData.timer=null;return}this._previewData.timer=null;const n=this.getOperationData(this._previewData.element),i=Ee(this._previewData.element);if(!i)return;const{viewport:o}=i,a=this.configuration.activeStrategy,s=M8({operationData:n,viewport:o,strategy:a});if(!n)return;const c=this.createMemo(n.segmentationId,s.segmentationVoxelManager);this._previewData.preview=this.applyActiveStrategyCallback(Ee(this._previewData.element),{...n,...s,memo:c},xt.Preview)},this._dragCallback=n=>{const i=n.detail,{element:o,currentPoints:a}=i,s=Ee(o);this.updateCursor(n);const{viewportIdsToRender:c}=this._hoverData;Ne(c);const l=xr(a.canvas,this._previewData.startPoint),{dragTimeMs:f,dragMoveDistance:u}=this.configuration.preview;!this._previewData.isDrag&&Date.now()-this._previewData.timerStart{const i=n.detail,{element:o}=i,a=Ee(o),s=this.getOperationData(o);!this._previewData.preview&&!this._previewData.isDrag&&this.applyActiveStrategy(a,s),this.doneEditMemo(),this._deactivateDraw(o),jt(o),this.updateCursor(n),this._editData=null,this.applyActiveStrategyCallback(a,s,xt.OnInteractionEnd),this._previewData.isDrag||this.acceptPreview(o)},this._activateDraw=n=>{n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback)},this._deactivateDraw=n=>{n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback)}}disableCursor(){this._hoverData=void 0,this.rejectPreview()}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&&Ne(this._hoverData.viewportIdsToRender)}_calculateCursor(e,r){const n=Ee(e),{viewport:i}=n,{canvasToWorld:o}=i,a=i.getCamera(),{brushSize:s}=this.configuration,c=bt(a.viewUp[0],a.viewUp[1],a.viewUp[2]),l=bt(a.viewPlaneNormal[0],a.viewPlaneNormal[1],a.viewPlaneNormal[2]),f=Be();Ln(f,c,l);const u=o([r[0],r[1]]),d=Be(),h=Be(),g=Be(),p=Be();for(let x=0;x<=2;x++)d[x]=u[x]-c[x]*s,h[x]=u[x]+c[x]*s,g[x]=u[x]-f[x]*s,p[x]=u[x]+f[x]*s;if(!this._hoverData)return;const{brushCursor:v}=this._hoverData,{data:y}=v;y.handles===void 0&&(y.handles={}),y.handles.points=[d,h,g,p];const m=this.configuration.activeStrategy,w=this.configuration.strategies[m];typeof(w==null?void 0:w.computeInnerCircleRadius)=="function"&&w.computeInnerCircleRadius({configuration:this.configuration,viewport:i}),y.invalidated=!1}getStatistics(e,r){if(!e)return;const n=Ee(e);return this.applyActiveStrategyCallback(n,this.getOperationData(e),xt.GetStatistics,r)}rejectPreview(e=this._previewData.element){if(!e)return;this.doneEditMemo();const r=Ee(e);r&&(this.applyActiveStrategyCallback(r,this.getOperationData(e),xt.RejectPreview),this._previewData.preview=null,this._previewData.isDrag=!1)}acceptPreview(e=this._previewData.element){e&&super.acceptPreview(e)}interpolate(e,r){if(!e)return;const n=Ee(e);this._previewData.preview=this.applyActiveStrategyCallback(n,this.getOperationData(e),xt.Interpolate,r.configuration),this._previewData.isDrag=!0}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 m,w;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:x}=this._hoverData,{element:C}=n;this._calculateCursor(C,x)}const a=o.metadata;if(!a)return;const s=a.brushCursorUID,c=o.data,{points:l}=c.handles,f=l.map(x=>n.worldToCanvas(x)),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(${((m=a.segmentColor)==null?void 0:m.slice(0,3))||[0,0,0]})`;if(!n.getRenderingEngine()){console.warn("Rendering Engine has been destroyed");return}aa(r,s,"0",h,g,{color:p,lineDash:this.centerSegmentIndexInfo.segmentIndex===0?[1,2]:null});const{dynamicRadiusInCanvas:y}=((w=this.configuration)==null?void 0:w.threshold)||{dynamicRadiusInCanvas:0};y&&aa(r,s,"1",h,y,{color:p})}}sx.toolName="Brush";function pg(t,e){const r=ti(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 sx):void 0}function yCe(t,e,r){const n=ti(t);if(n===void 0)return;pg(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();jr(s),Ne(c)}function wCe(t,e){const r=ti(t);if(r===void 0)return;const n=r._toolInstances;if(!Object.keys(n).length)return;const o=pg(t,e)[0];if(o)return o.configuration.brushSize}function xCe(t,e){const r=ti(t);if(r===void 0||(pg(t).forEach(a=>{a.configuration.activeStrategy.toLowerCase().includes("threshold")&&(a.configuration={...a.configuration,threshold:{...a.configuration.threshold,...e}})}),!r.getViewportsInfo().length))return;const o=r.getViewportIds();Ne(o)}function CCe(t){const e=ti(t);if(e===void 0)return;const r=e._toolInstances;if(!Object.keys(r).length)return;const i=pg(t)[0];if(i)return i.configuration.threshold.range}const $p=class $p{static statsInit(e){const{storePointData:r,indices:n,mode:i}=e;this.mode=i,this.indices=n,this.calculators.clear(),this.mode==="individual"?n.forEach(o=>{this.calculators.set(o,new c7({storePointData:r}))}):this.calculators.set(n,new c7({storePointData:r}))}static statsCallback(e){const{segmentIndex:r,...n}=e;if(!r)throw new Error("Segment index is required for stats calculation");const i=this.mode==="individual"?this.calculators.get(r):this.calculators.get(this.indices);if(!i)throw new Error(`No calculator found for segment ${r}`);i.statsCallback(n)}static getStatistics(e){if(this.mode==="individual"){const n={};return this.calculators.forEach((i,o)=>{n[o]=i.getStatistics(e)}),n}return this.calculators.get(this.indices).getStatistics(e)}};$p.calculators=new Map,$p.indices=[],$p.mode="collective";let cT=$p;function SCe(t,e,r,n,i){if(!i)throw new Error("Segmentation ID is required to be passed inside thresholdSegmentationByRange");const{baseVolumeIdx:o,volumeInfoList:a}=vU(t,r),{voxelManager:s}=a[o],c=s,l=t.voxelManager.getScalarDataLength(),f=t.voxelManager;return a.forEach(u=>{const{volumeSize:d}=u;d===l?_Ce(f,c,e,u):TCe(f,c,e,u,a,o,n)}),wo(i),t}function TCe(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,w>=h.lower&&w<=h.upper&&(d=d+1)};u=0,d=0,h={lower:c,upper:l};let m=!1;t.forEach(y,{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 _Ce(t,e,r,n){const{lower:i,upper:o}=n,a=t.getScalarDataLength();for(let s=0;s=i&&c<=o?r:0)}}function d7(t,e,r){const n=r.toIJK(t),i=r.toIJK(e),o=Be(),{testIJK:a}=r,s=Sn(Be(),n,i),c=Math.round(Math.max(...s.map(Math.abs)));if(c<2)return!0;const l=_r(Be(),s,1/c);for(let f=1;f{const l=ni(Be(),s,c).map(v=>v/2),f=e.worldToIndex(l).map(Math.round),[u,d,h]=f,g=u+d*o+h*a,p=r.getAtIndex(g);return p===n||(i==null?void 0:i.has(p))},toIJK:s=>e.worldToIndex(s),testIJK:s=>{const[c,l,f]=s,u=Math.round(c)+Math.round(l)*o+Math.round(f)*a,d=r.getAtIndex(u);return d===n||(i==null?void 0:i.has(d))}}}function bCe(t,e,r){const n=ke.getVolume(t);if(!n){console.warn(`No volume found for ${t}`);return}return ECe({dimensions:n.dimensions,imageData:n.imageData,voxelManager:n.voxelManager,segmentIndex:e,containedSegmentIndices:r})}const zg=.01;function DCe(t,e,r){const{sliceContours:n}=t,{segmentIndex:i,containedSegmentIndices:o}=r;let a;const s=bCe(e,i,o);for(const c of n){const l=ICe(c,s,a);l&&(a=l)}return a&&Object.assign(a,r),a}function ICe(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;vzg||e.testCenter(m,w)&&d7(m,w,e)&&(s=x,d=[v,y])}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}}async function uW(t){const e=await zG({segmentations:t});if(!(e!=null&&e.length)||!e[0].sliceContours.length)return;const{segments:r=[null,{label:"Unspecified",color:null,containedSegmentIndices:null}]}=t,n=gg(t.segmentationId);if(!n)return;const i=r.findIndex(o=>!!o);if(i!==-1)return r[i].segmentIndex=i,DCe(e[0],n.volumeId,r[i])}function fW(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:Q2}=_n,z0=class z0 extends or{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,getTextLines:OCe}}){super(e,r),this.isPointNearTool=(n,i,o,a)=>{const s=Ee(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=xi([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=xi([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=Ct(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},this._activateModify(a);const c=Ee(a),{renderingEngine:l}=c;Ne(s),Mt(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(g=>g===o);const u=Ct(s,this.getToolName());Mt(s),this.editData={annotation:i,viewportIdsToRender:u,handleIndex:f,movingTextBox:l},this._activateModify(s);const d=Ee(s),{renderingEngine:h}=d;Ne(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)return;this.doneEditMemo(),f.handles.activeHandleIndex=null,this._deactivateModify(o),this._deactivateDraw(o),jt(o);const{renderingEngine:u}=Ee(o);if(this.editData.handleIndex!==void 0){const{points:d}=f.handles,h=Ki(d[0],d[1]);if(Ki(d[2],d[3])>h){const p=[[...d[2]],[...d[3]]],v=[...d[0]],y=[...d[1]],m=Jt();ws(m,p[1][0]-p[0][0],p[1][1]-p[1][0]);const w=Jt();ws(w,-m[1],m[0]);const x=Jt();ws(x,y[0]-v[0],y[1]-v[0]);let C;p4(x,w)>0?C=[v,y]:C=[y,v],f.handles.points=[p[0],p[1],C[0],C[1]]}}this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&fn(a.annotationUID),Ne(s),c&&kn(a),this.editData=null,this.isDrawing=!1},this._dragDrawCallback=n=>{this.isDrawing=!0;const i=n.detail,{currentPoints:o,element:a}=i,s=Ee(a),{viewport:c}=s,{worldToCanvas:l}=c,{annotation:f,viewportIdsToRender:u,handleIndex:d,newAnnotation:h}=this.editData;this.createMemo(a,f,{newAnnotation:h});const{data:g}=f,p=o.world;g.handles.points[d]=[...p];const v=g.handles.points.map(l),y={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]}}},w=xr(v[0],v[1])/3,x=y.longLineSegment.start.x-y.longLineSegment.end.x,C=y.longLineSegment.start.y-y.longLineSegment.end.y,S=Math.sqrt(x*x+C*C),T=x/S,_=C/S,E=(y.longLineSegment.start.x+y.longLineSegment.end.x)/2,b=(y.longLineSegment.start.y+y.longLineSegment.end.y)/2,D=E+w*_,O=b-w*T,L=E-w*_,P=b+w*T;g.handles.points[2]=c.canvasToWorld([D,O]),g.handles.points[3]=c.canvasToWorld([L,P]),f.invalidated=!0,Ne(u),rn(f,a,Xt.HandlesUpdated),this.editData.hasMoved=!0},this._dragModifyCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,handleIndex:c,movingTextBox:l,newAnnotation:f}=this.editData;this.createMemo(o,a,{newAnnotation:f});const{data:u}=a;if(l){const{deltaPoints:d}=i,h=d.world,{textBox:g}=u.handles,{worldPosition:p}=g;p[0]+=h[0],p[1]+=h[1],p[2]+=h[2],g.hasMoved=!0}else if(c===void 0){const{deltaPoints:d}=i,h=d.world;u.handles.points.forEach(p=>{p[0]+=h[0],p[1]+=h[1],p[2]+=h[2]}),a.invalidated=!0}else this._dragModifyHandle(n),a.invalidated=!0;Ne(s),a.invalidated&&rn(a,o,Xt.HandlesUpdated)},this._dragModifyHandle=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=Ee(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],y=c.worldToCanvas(v);if(f===0||f===1){const w=h[f===0?1:0],x=ws(Jt(),y[0]-w[0],y[1]-w[1]),C=ws(Jt(),h[f][0]-w[0],h[f][1]-w[1]);ql(x,x),ql(C,C);const S={start:{x:w[0],y:w[1]},end:{x:y[0],y:y[1]}};if(this._movingLongAxisWouldPutItThroughShortAxis(S,p))return;const T=w,_=this._getSignedAngle(C,x);let E=h[2][0],b=h[2][1],D=h[3][0],O=h[3][1];E-=T[0],b-=T[1],D-=T[0],O-=T[1];const L=E*Math.cos(_)-b*Math.sin(_),P=E*Math.sin(_)+b*Math.cos(_),k=D*Math.cos(_)-O*Math.sin(_),G=D*Math.sin(_)+O*Math.cos(_);E=L+T[0],b=P+T[1],D=k+T[0],O=G+T[1];const j=c.canvasToWorld([E,b]),F=c.canvasToWorld([D,O]);u.handles.points[f]=v,u.handles.points[2]=j,u.handles.points[3]=F}else{const m=f===2?3:2,w={longLineSegment:{start:g.start,end:g.end},shortLineSegment:{start:p.start,end:p.end}},x=Yr(Jt(),[w.longLineSegment.end.x,w.longLineSegment.end.y],[w.longLineSegment.start.x,w.longLineSegment.start.y]),C=ql(Jt(),x),S=Yr(Jt(),[y[0],y[1]],[h[f][0],h[f][1]]),T=Oy(S),_=this._getSignedAngle(C,S),E=Math.cos(_)*T,b=eJ(Jt(),[h[m][0],h[m][1]],C,E);if(this._movingLongAxisWouldPutItThroughShortAxis({start:{x:y[0],y:y[1]},end:{x:b[0],y:b[1]}},{start:{x:w.longLineSegment.start.x,y:w.longLineSegment.start.y},end:{x:w.longLineSegment.end.x,y:w.longLineSegment.end.y}})||!m5([y[0],y[1]],[b[0],b[1]],[g.start.x,g.start.y],[g.end.x,g.end.y]))return;u.handles.points[m]=c.canvasToWorld(b),u.handles.points[f]=v}},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),jt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,Ne(o),a&&kn(i),this.editData=null,i.annotationUID}},this._activateDraw=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragDrawCallback),n.addEventListener(B.MOUSE_MOVE,this._dragDrawCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragDrawCallback)},this._deactivateDraw=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragDrawCallback),n.removeEventListener(B.MOUSE_MOVE,this._dragDrawCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragDrawCallback)},this._activateModify=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragModifyCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragModifyCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragModifyCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragModifyCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!0;const{viewport:a}=n,{element:s}=a;let c=cn(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(te));u.annotationUID=g;const{color:w,lineWidth:x,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(!Kr(g))continue;!ai(g)&&!this.editData&&y!==null&&(T=[m[y]]),T&&nr(i,g,"0",T,{color:w});const _=`${g}-line-1`,E=`${g}-line-2`;mn(i,g,"0",m[0],m[1],{color:w,lineDash:C,lineWidth:x,shadow:S},_),mn(i,g,"1",m[2],m[3],{color:w,lineDash:C,lineWidth:x,shadow:S},E),o=!0;const O=this.getLinkedTextBoxStyle(u,h);if(!O.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 P;p.handles.textBox.hasMoved||(P=Ia(m),p.handles.textBox.worldPosition=a.canvasToWorld(P));const k=a.worldToCanvas(p.handles.textBox.worldPosition),j=ao(i,g,"1",L,k,m,{},O),{x:F,y:U,width:W,height:J}=j;p.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([F,U]),topRight:a.canvasToWorld([F+W,U]),bottomLeft:a.canvasToWorld([F,U+J]),bottomRight:a.canvasToWorld([F+W,U+J])}}return o},this._movingLongAxisWouldPutItThroughShortAxis=(n,i)=>{const o=Jt();ws(o,i.end.x-i.start.x,i.end.y-i.start.y),ql(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!m5([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 p=0;pk?P:k,j=P>k?k:P,F=P>k?D:L,U=P>k?L:D;this._isInsideVolume(x,C,S,T,w)?this.isHandleOutsideImage=!1:this.isHandleOutsideImage=!0,d[v]={length:G,width:j,unit:F,widthUnit:U}}const g=n.invalidated;return n.invalidated=!1,g&&rn(n,s,Xt.StatsUpdated),d},this._isInsideVolume=(n,i,o,a,s)=>fr(n,s)&&fr(i,s)&&fr(o,s)&&fr(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=zo(this._calculateCachedStats,100,{trailing:!0})}addNewAnnotation(e){const r=e.detail,{currentPoints:n,element:i}=r,o=n.world,a=Ee(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:{}}};on(g,i);const p=Ct(i,this.getToolName());return this.editData={annotation:g,viewportIdsToRender:p,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(i),Mt(i),e.preventDefault(),Ne(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)}};z0.toolName="Bidirectional",z0.hydrate=(e,r,n)=>{const i=Bn(e);if(!i)return;const{FrameOfReferenceUID:o,referencedImageId:a,viewPlaneNormal:s,instance:c,viewport:l}=z0.hydrateBase(z0,i,r[0],n),[f,u]=r,[d,h]=f,[g,p]=u,v=[d,h,g,p],{toolInstance:y,...m}=n||{},w={annotationUID:(n==null?void 0:n.annotationUID)||Tn(),data:{handles:{points: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]}}},cachedStats:{}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:c.getToolName(),viewPlaneNormal:s,FrameOfReferenceUID:o,referencedImageId:a,...m}};return on(w,l.element),Ne([l.id]),w};let zm=z0;function OCe(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: ${an(i)} ${a||a}`,`W: ${an(o)} ${a}`),s}async function MCe(t,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:r}=e,n=Ee(t),i=(r.getSegment||PCe)(n,r);if(!i)return;const o=n.viewport.getFrameOfReferenceUID(),a=rx(),{segmentIndex:s,segmentationId:c}=i,l=hr.getAnnotations(this.toolName||zm.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(async h=>{const g=[],p=h.data.segment,{segmentIndex:v,segmentationId:y}=p;g[v]=p,hr.removeAnnotation(h.annotationUID);const m=await uW({...a.find(C=>C.segmentationId===y),segments:g});if(!m)return;const w=fW(m,n.viewport);w.annotationUID=h.annotationUID,w.data.segment=p;const x=hr.addAnnotation(w,o);if(p.segmentIndex===i.segmentIndex&&p.segmentationId===i.segmentationId){d=m;const{style:C}=i;C&&NE.setAnnotationStyles(x,C)}}),d){const{sliceIndex:h}=d,g=n.viewport.getImageIds();Po(t,{imageIndex:g.length-1-h}),n.viewport.render()}else console.warn("No bidirectional found");return d}function PCe(t,e){var a;const r=rx();if(!r.length)return;const n=e.segmentationId||r[0].segmentationId,i=e.segmentIndex??ba(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 dW(t){const e=ti(t);if(e===void 0)return;pg(t).forEach(a=>{a.invalidateBrushCursor()});const n=e.getViewportsInfo();if(!Object.keys(n).map(a=>n[a]).length)return;const o=e.getViewportIds();Ne(o)}function N8(t,e,r={}){const n=An(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 Et.Labelmap:return RCe(n,e,r);case Et.Contour:return LCe(n,e,r);default:return}}function RCe(t,e,{viewport:r}){const n=t.representationData.Labelmap;if(r instanceof Cr){const{volumeId:h}=n,g=ke.getVolume(h);return g?g.imageData.getScalarValueFromWorld(e):void 0}const i=hu(r.id,t.segmentationId);if(i.length>1){console.warn("Segment selection for labelmaps with multiple imageIds in stack viewports is not supported yet.");return}const o=i[0];if(!ke.getImage(o))return;const s=Gw(r.id,t.segmentationId),c=s==null?void 0:s.actor.getMapper().getInputData(),l=zr(c,e),f=c.getDimensions();return(c.voxelManager||wc.createScalarVolumeVoxelManager({dimensions:f,scalarData:c.getPointData().getScalars().getData()})).getAtIJKPoint(l)}function LCe(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=Hr(c);if(!l)continue;const{polyline:f}=l.data.contour;if(Kt(o,l.metadata.viewPlaneNormal)&&a8(e,f))return Number(a)}}}function hW(t,e,{viewport:r,searchRadius:n}){const o=An(t).representationData.Labelmap;if(r instanceof Cr){const{volumeId:p}=o,v=ke.getVolume(p);if(!v)return;const y=v.voxelManager,m=v.imageData,w=zr(m,e),x=y.getAtIJK(w[0],w[1],w[2]),C=r.worldToCanvas(e);return NCe(C,x,r,m,n)?x:void 0}const a=Lf(r.id,t);if(!ke.getImage(a))return;const c=Gw(r.id,t),l=c==null?void 0:c.actor.getMapper().getInputData(),f=zr(l,e),u=l.getDimensions(),d=l.voxelManager||wc.createScalarVolumeVoxelManager({dimensions:u,scalarData:l.getPointData().getScalars().getData()}),h=d.getAtIJKPoint(f);return ACe(f,u,d,h)?h:void 0}function gW(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 ACe(t,e,r,n,i){return gW((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 NCe(t,e,r,n,i){return gW((a,s)=>{const c=[t[0]+a,t[1]+s],l=r.canvasToWorld(c),f=n.get("voxelManager").voxelManager,u=zr(n,l);return f.getAtIJK(u[0],u[1],u[2])},e,i)}function pW(t){const e=An(t),{annotationUIDsMap:r}=e.representationData.Contour;for(const[n,i]of r.entries())if(Array.from(i).find(a=>Hr(a).highlighted))return n}const kCe=` const MAX_STRENGTH = 65535f; // Workgroup size - X*Y*Z must be multiple of 32 for better performance @@ -4185,103 +4185,103 @@ fn main( labelmap[currentPixelIndex] = newLabel; strengthData[currentPixelIndex] = newStrength; } -`,gTe=1024*1024*1024,bM=1.99*gTe,L3={windowSize:3,maxProcessingTime:3e4,inspection:{numCyclesInterval:5,numCyclesBelowThreshold:3,threshold:1e-4}};async function qx(t,e,r=L3){var _e;const n=[8,8,4],{windowSize:i,maxProcessingTime:o}=Object.assign({},L3,r),a=Object.assign({},L3.inspection,r.inspection),s=Ue.getVolume(t),c=Ue.getVolume(e),[l,f,u]=s.dimensions;if(c.dimensions[0]!==l||c.dimensions[1]!==f||c.dimensions[2]!==u)throw new Error("Volume and labelmap must have the same size");let d=Math.floor(Math.sqrt(f**2+l**2+u**2)/2);d=Math.min(d,500);const h=c.voxelManager.getCompleteScalarDataArray();let g=s.voxelManager.getCompleteScalarDataArray();g instanceof Float32Array||(g=new Float32Array(g));const p={maxStorageBufferBindingSize:bM,maxBufferSize:bM},y=await(await((_e=navigator.gpu)==null?void 0:_e.requestAdapter())).requestDevice({requiredLimits:p}),m=g.byteLength,w=d*Uint32Array.BYTES_PER_ELEMENT,x=6*Int32Array.BYTES_PER_ELEMENT,C=y.createShaderModule({code:hTe}),S=3,T=new Uint32Array([l,f,u,0]),_=y.createBuffer({size:T.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),E=y.createBuffer({size:m,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST});y.queue.writeBuffer(E,0,g);const b=[0,1].map(()=>y.createBuffer({size:m,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST}));y.queue.writeBuffer(b[0],0,new Uint32Array(h));const D=[0,1].map(()=>y.createBuffer({size:m,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST})),I=y.createBuffer({size:w,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST}),P=y.createBuffer({size:x,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST}),M=new Int32Array([l,f,u,-1,-1,-1]);y.queue.writeBuffer(P,0,M);const L=y.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"}}]}),B=[0,1].map(Oe=>{const Ge=b[Oe],$e=D[Oe],le=b[(Oe+1)%2],de=D[(Oe+1)%2];return y.createBindGroup({layout:L,entries:[{binding:0,resource:{buffer:_}},{binding:1,resource:{buffer:E}},{binding:2,resource:{buffer:Ge}},{binding:3,resource:{buffer:$e}},{binding:4,resource:{buffer:le}},{binding:5,resource:{buffer:de}},{binding:6,resource:{buffer:I}},{binding:7,resource:{buffer:P}}]})}),j=y.createComputePipeline({layout:y.createPipelineLayout({bindGroupLayouts:[L]}),compute:{module:C,entryPoint:"main",constants:{workGroupSizeX:n[0],workGroupSizeY:n[1],workGroupSizeZ:n[2],windowSize:i}}}),V=[Math.ceil(l/n[0]),Math.ceil(f/n[1]),Math.ceil(u/n[2])],F=y.createBuffer({size:w,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),G=o?performance.now()+o:0;let X=a.numCyclesInterval,ne=0;for(let Oe=0;Oe0&&!(Oe%X)){await F.mapAsync(GPUMapMode.READ,0,w);const de=F.getMappedRange(0,w),pe=new Uint32Array(de.slice(0))[Oe]/g.length;if(F.unmap(),Oe>=1&&peG){console.warn(`Exceeded processing time limit (${o})ms`);break}}const ue=y.createCommandEncoder(),me=(d+1)%2,ge=y.createBuffer({size:m,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),ye=y.createBuffer({size:x,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST});ue.copyBufferToBuffer(b[me],0,ge,0,m),ue.copyBufferToBuffer(P,0,ye,0,x),y.queue.submit([ue.finish()]),await ge.mapAsync(GPUMapMode.READ,0,m);const Ie=ge.getMappedRange(0,m),Pe=new Uint32Array(Ie);h.set(Pe),ge.unmap(),await ye.mapAsync(GPUMapMode.READ,0,x);const Ee=ye.getMappedRange(0,x),H=new Int32Array(Ee.slice(0));ye.unmap();const O=H[0],Y=H[1],K=H[2],Z=H[3],ae=H[4],oe=H[5];c.voxelManager.setCompleteScalarDataArray(h),c.voxelManager.clearBounds(),c.voxelManager.setBounds([[O,Z],[Y,ae],[K,oe]])}const{transformWorldToIndex:Im}=Dn,pTe=254,mTe=255,vTe=.1,yTe=.8;function wTe(t,e){const{topLeftWorld:r,bottomRightWorld:n}=e,i=Im(t.imageData,r),o=Im(t.imageData,n);return{...e,topLeftIJK:i,bottomRightIJK:o}}function xTe(t,e){const r=t.imageData.getDirection(),n=Et(r[3],r[4],r[5]),{center:i,radius:o}=e,a=t.imageData,s=bn(Ve(),i,n,-o),c=bn(Ve(),i,n,o),l=w$([c,s],a);return wTe(t,l)}function CTe(t,e,r){const n=t.imageData,i=r.getCamera(),{ijkVecRowDir:o,ijkVecColDir:a}=px(n,i);if([o,a].some(f=>!Vt(Math.abs(f[0]),1)&&!Vt(Math.abs(f[1]),1)&&!Vt(Math.abs(f[2]),1))){console.warn("Oblique view is not supported!");return}const{boundsIJK:c}=xTe(t,e),l={minX:c[0][0],maxX:c[0][1]+1,minY:c[1][0],maxY:c[1][1]+1,minZ:c[2][0],maxZ:c[2][1]+1};return L8(t.volumeId,l,{targetBuffer:{type:"Float32Array"}})}function STe(t,e,r,n){const i=t.voxelManager.getCompleteScalarDataArray(),o=r.center,[a,s,c]=t.dimensions,l=a*s,f=Im(t.imageData,o),u=i[f[2]*l+f[1]*a+f[0]],d=n.positiveSeedValue??pTe,h=n.positiveSeedVariance??vTe,g=Math.abs(u*h),p=u-g,v=u+g,y=[[-1,0,0],[1,0,0],[0,-1,0],[0,1,0],[0,0,-1],[0,0,1]],m=f[2]*l+f[1]*a+f[0];e.voxelManager.setAtIndex(m,d);const w=[f];for(;w.length;){const x=w.shift(),[C,S,T]=x;for(let _=0,E=y.length;_=a||I<0||I>=s||P<0||P>=c)continue;const M=P*l+I*a+D,L=i[M];e.voxelManager.getAtIndex(M)===d||Lv||(e.voxelManager.setAtIndex(M,d),w.push([D,I,P]))}}}function TTe(t,e,r,n,i){const o=t.voxelManager.getCompleteScalarDataArray(),[a,s,c]=e.dimensions,l=a*s,{worldVecRowDir:f,worldVecSliceDir:u}=px(e.imageData,n.getCamera()),d=Im(t.imageData,r.center),h=o[d[2]*a*s+d[1]*a+d[0]],g=i.negativeSeedVariance??yTe,p=(i==null?void 0:i.negativeSeedValue)??mTe,v=Math.abs(h*g),y=h-v,m=h+v,w=360,x=2*Math.PI/w,C=Zw(Bf(),u,x),S=Vh(f);for(let T=0;T=a||D<0||D>=s||I<0||I>=c)continue;const P=b+D*a+I*l,M=o[P];(Mm)&&e.voxelManager.setAtIndex(P,p)}}async function _Te(t,e,r,n){const i=await iv(t.volumeId);return STe(t,i,e,n),TTe(t,i,e,r,n),i}async function hz(t,e,r,n){const i=Ue.getVolume(t),o=CTe(i,e,r),a=await _Te(o,e,r,n);return await qx(o.volumeId,a.volumeId),a}const ETe=254,bTe=255,DTe=[-1/0,-995],ITe=[0,1900];function MTe(t,e,r){const{negativeSeedValue:n=bTe,negativePixelRange:i=DTe}=r,o=t.voxelManager.getCompleteScalarDataArray(),[a,s,c]=e.dimensions,l=Math.floor(c/2),f=new Array(a*s).fill(!1),u=l*a*s,d=(g,p)=>{const v=[[g,p]];for(;v.length;){const[y,m]=v.shift(),w=m*a+y;if(y<0||y>=a||m<0||m>=s||f[w])continue;f[w]=!0;const x=u+w,C=o[x];Ci[1]||(e.voxelManager.setAtIndex(x,n),v.push([y-1,m]),v.push([y+1,m]),v.push([y,m-1]),v.push([y,m+1]))}},h=(g,p,v,y)=>{for(let m=g;m!==p;m+=v){const w=y*a+m,x=u+w,C=o[x];if(Ci[1])break;f[w]||d(m,y)}};for(let g=0;g=i[0]&&w<=i[1]&&e.voxelManager.setAtIndex(m,n)}}}}async function PTe(t,e){const r=iv(t.volumeId);return OTe(t,r,e),MTe(t,r,e),r}async function gz(t,e,r){const{boundingBox:n}=e,{ijkTopLeft:i,ijkBottomRight:o}=n,a={minX:i[0],maxX:o[0],minY:i[1],maxY:o[1],minZ:i[2],maxZ:o[2]},s=L8(t,a,{targetBuffer:{type:"Float32Array"}}),c=await PTe(s,r);return await qx(s.volumeId,c.volumeId),c}const RTe=254,ATe=255,LTe=1,pz=1.8,NTe=3.2,w_=30,kTe=70,VTe=50,{transformWorldToIndex:FTe}=Dn,Hp=1e5;function mz(t,e,r){const{dimensions:n,imageData:i}=t,[o,a,s]=n,c=t.voxelManager,l=c.getCompleteScalarDataArray(),f=o*a,u=(r==null?void 0:r.initialNeighborhoodRadius)??LTe,d=(r==null?void 0:r.positiveStdDevMultiplier)??pz,h=(r==null?void 0:r.negativeStdDevMultiplier)??NTe,g=(r==null?void 0:r.negativeSeedMargin)??w_,p=(r==null?void 0:r.negativeSeedsTargetPatches)??kTe,v=FTe(i,e).map(Math.round),y=c.toIndex(v);if(v[0]<0||v[0]>=o||v[1]<0||v[1]>=a||v[2]<0||v[2]>=s)return console.warn("Click position is outside volume bounds."),null;const m=IU(l,n,v,u);m.count===0&&(m.mean=l[y],m.stdDev=0);const w=m.mean-d*m.stdDev,x=m.mean+d*m.stdDev,C=[[-1,0,0],[1,0,0],[0,-1,0],[0,1,0],[0,0,-1],[0,0,1]];let S=1/0,T=1/0,_=1/0,E=-1/0,b=-1/0,D=-1/0;const I=new Set,P=[],M=l[y];if(M>=w&&M<=x)I.add(y),P.push(v),S=E=v[0],T=b=v[1],_=D=v[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 L=0;for(;L=o||le<0||le>=a||de<0||de>=s)continue;const be=de*f+le*o+$e;if(I.has(be))continue;const pe=l[be];pe>=w&&pe<=x&&(I.add(be),I.size=Hp&&console.debug(`Reached maximum number of positive seeds (${Hp}). Stopping BFS.`),I.size===0)return console.warn("No positive seeds found after BFS."),{positiveSeedIndices:new Set,negativeSeedIndices:new Set};let B=0,j=0;I.forEach(K=>{const Z=l[K];B+=Z,j+=Z*Z});const V=I.size,F=B/V,G=j/V-F*F,X=Math.sqrt(Math.max(0,G)),ne=h*X,ue=Math.max(0,S-g),me=Math.max(0,T-g),ge=Math.max(0,_-g),ye=Math.min(o-1,E+g),Ie=Math.min(a-1,b+g),Pe=Math.min(s-1,D+g),Ee=new Set;let H=0,O=0;const Y=p*VTe;for(;One){let Oe=!1;for(let Ge=-1;Ge<=1;Ge++){const $e=Z+Ge;if(!($e<0||$e>=a))for(let le=-1;le<=1;le++){const de=K+le;if(de<0||de>=o)continue;const be=ae*f+$e*o+de;I.has(be)||Ee.has(be)||(Ee.add(be),Oe=!0)}}Oe&&O++}}return Ee.size===0&&console.warn("Could not find any negative seeds. GrowCut might fail or produce poor results."),console.debug("positiveSeedIndices",I.size),console.debug("negativeSeedIndices",Ee.size),{positiveSeedIndices:I,negativeSeedIndices:Ee}}async function vz({referencedVolumeId:t,worldPosition:e,options:r}){const n=Ue.getVolume(t),i=iv(t);i.voxelManager.forEach(({index:f,value:u})=>{u!==0&&i.voxelManager.setAtIndex(f,0)});const o=r.seeds??mz(n,e,r),a=(r==null?void 0:r.positiveSeedValue)??RTe,s=(r==null?void 0:r.negativeSeedValue)??ATe;if(!o)return null;const{positiveSeedIndices:c,negativeSeedIndices:l}=o;return c.size<10||c.size>Hp||l.size<10?(console.warn("Not enough seeds found. GrowCut might fail or produce poor results."),i):(c.forEach(f=>{i.voxelManager.setAtIndex(f,a)}),l.forEach(f=>{i.voxelManager.setAtIndex(f,s)}),await qx(t,i.volumeId,r),i)}const UTe=Object.freeze(Object.defineProperty({__proto__:null,run:qx,runGrowCutForBoundingBox:gz,runGrowCutForSphere:hz,runOneClickGrowCut:vz},Symbol.toStringTag,{value:"Module"}));function Mm(t,e){const r=an(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,us(t));const n=_0(t);n.forEach(i=>{Aa(i,{segmentationId:t}).forEach(a=>{a.segments[e]||(a.segments[e]={visible:!0})})}),n.forEach(i=>{const o=Mr(i);lz(o.id)})}const BTe=Object.freeze(Object.defineProperty({__proto__:null,getActiveSegmentIndex:pa,setActiveSegmentIndex:Mm},Symbol.toStringTag,{value:"Module"}));function GTe(t,e){const{segmentationId:r,config:n}=e,i={colorLUTIndex:WTe(n),...n};if(er.addSegmentationRepresentation(t,r,e.type,i),!pa(r)){const o=er.getSegmentation(r);if(o){const a=Object.keys(o.segments);if(a.length>0){const s=a.map(c=>Number(c)).sort()[0];Mm(r,s)}}}e.type===Pt.Contour&&ke([t]),us(r)}function WTe(t){const{colorLUTOrIndex:e}=t||{};return e===void 0?m1(JSON.parse(JSON.stringify(uw))):typeof e=="number"?e:Array.isArray(e)&&e.every(n=>Array.isArray(n)&&n.length===4)?m1(e):m1(JSON.parse(JSON.stringify(uw)))}function Qg(t,e){e.map(r=>GTe(t,r))}function Kb(t,e){return Qg(t,e.map(r=>({...r,type:Pt.Contour})))}function $Te(t){const e={};for(const[r,n]of Object.entries(t))e[r]=Kb(r,n);return e}function yz(t,e){return Qg(t,e.map(r=>({...r,type:Pt.Labelmap})))}function zTe(t){for(const[e,r]of Object.entries(t))yz(e,r.map(n=>({...n,type:Pt.Labelmap})))}function wz(t,e){return Qg(t,e.map(r=>({...r,type:Pt.Surface})))}function jTe(t){const e={};for(const[r,n]of Object.entries(t))e[r]=wz(r,n);return e}async function HTe({segmentationId:t,viewportId:e,imageIds:r,options:n}){const i=an(t);if(n!=null&&n.removeOriginal){const o=i.representationData.Labelmap;Ue.getVolume(o.volumeId)&&Ue.removeVolumeLoadObject(o.volumeId),i.representationData.Labelmap={imageIds:r}}else i.representationData.Labelmap={...i.representationData.Labelmap,imageIds:r};await Qg(e,[{segmentationId:t,type:Pt.Labelmap}]),ze.addEventListenerOnce(U.SEGMENTATION_RENDERED,()=>Ro(t))}async function KTe({volumeId:t}){return{imageIds:Ue.getVolume(t).imageIds}}function XTe({segmentationId:t,options:e}){const r=an(t);if(!r)return;const{volumeId:n}=r.representationData.Labelmap,i=Ue.getVolume(n);return HTe({segmentationId:t,viewportId:e.viewportId,imageIds:i.imageIds,options:e})}async function xz(t){return uG(t)}async function qTe({segmentationId:t,segmentIndices:e,mode:r="individual"}){$x(),kl(Ac.COMPUTE_LARGEST_BIDIRECTIONAL,0);const n=k$(t,e);if(!n)return;const{operationData:i,segImageIds:o,reconstructableVolume:a,indices:s}=n,c=a?await YTe({operationData:i,indices:s,mode:r}):await JTe({segImageIds:o,indices:s,mode:r});return kl(Ac.COMPUTE_LARGEST_BIDIRECTIONAL,100),c}async function YTe({operationData:t,indices:e,mode:r}){const n=V$(t),{segmentationVoxelManager:i,segmentationImageData:o}=n,s={scalarData:i.getCompleteScalarDataArray(),dimensions:o.getDimensions(),spacing:o.getSpacing(),origin:o.getOrigin(),direction:o.getDirection()};return await Fl().executeTask("compute","getSegmentLargestBidirectionalInternal",{segmentationInfo:s,indices:e,mode:r})}async function JTe({segImageIds:t,indices:e,mode:r}){const{segmentationInfo:n}=F$(t);return await Fl().executeTask("compute","getSegmentLargestBidirectionalInternal",{segmentationInfo:n,indices:e,mode:r,isStack:!0})}function ZTe(t){const e=an(t);if(!e)return null;let r;const n=e.representationData.Labelmap;if("imageIds"in n){const{imageIds:i}=n,o=Ue.getImage(i[0]),a=Ue.getVolumeContainingImageId(o.referencedImageId);if(a!=null&&a.volume)return a.volume;r=i.map(s=>Ue.getImage(s).referencedImageId)}else if("volumeId"in n){const{volumeId:i,referencedVolumeId:o}=n;if(o){const s=Ue.getVolume(o);if(s)return s}const a=Ue.getVolume(i);a&&(r=a.imageIds.map(s=>Ue.getImage(s).referencedImageId))}return jx(r)}async function QTe({segmentationIds:t,segmentIndex:e}){$x(),kl(Ac.COMPUTE_STATISTICS,0);const r=an(t[0]),{imageIds:n}=r.representationData.Labelmap;if(!Zf(n))throw new Error("Invalid volume - TMTV cannot be calculated");return await e_e({segmentationIds:t,segmentIndex:e})}async function e_e({segmentationIds:t,segmentIndex:e}){const r=t.map(p=>Jg(p)),n=z$(r,e);if(!n)throw new Error("Invalid volume - TMTV cannot be calculated");const{imageData:i,dimensions:o,direction:a,origin:s,voxelManager:c}=n,l=i.getSpacing(),u={scalarData:c.getCompleteScalarDataArray(),dimensions:o,spacing:l,origin:s,direction:a},d=ZTe(t[0]),h={dimensions:d.dimensions,spacing:d.spacing,origin:d.origin,direction:d.direction,scalarData:d.voxelManager.getCompleteScalarDataArray()};if(h.scalarData.length===0||u.scalarData.length===0)return{[e]:{name:"TMTV",value:0}};const g=await Fl().executeTask("compute","computeMetabolicStats",{segmentationInfo:u,imageInfo:h});return kl(Ac.COMPUTE_STATISTICS,100),g}const t_e=Object.freeze(Object.defineProperty({__proto__:null,IslandRemoval:d0,LabelmapMemo:WSe,SegmentStatsCalculator:y_,VolumetricCalculator:qd,computeMetabolicStats:QTe,computeStackLabelmapFromVolume:KTe,computeVolumeLabelmapFromStack:xz,contourAndFindLargestBidirectional:sz,createBidirectionalToolData:cz,createLabelmapVolumeForViewport:aSe,createMergedLabelmapForIndex:z$,floodFill:zb,getBrushSizeForToolGroup:YSe,getBrushThresholdForToolGroup:ZSe,getBrushToolInstances:Zg,getHoveredContourSegmentationAnnotation:dz,getOrCreateImageVolume:jx,getOrCreateSegmentationVolume:Jg,getReferenceVolumeForSegmentationVolume:A$,getSegmentIndexAtLabelmapBorder:uz,getSegmentIndexAtWorldPoint:Hb,getSegmentLargestBidirectional:qTe,getStatistics:X$,getUniqueSegmentIndices:sW,growCut:UTe,invalidateBrushCursor:lz,rectangleROIThresholdVolumeByRange:iSe,segmentContourAction:sTe,setBrushSizeForToolGroup:qSe,setBrushThresholdForToolGroup:JSe,thresholdSegmentationByRange:QSe,thresholdVolumeByRange:W$,triggerSegmentationRender:Xg,triggerSegmentationRenderBySegmentationId:Gx,validateLabelmap:j3e},Symbol.toStringTag,{value:"Module"}));function n_e(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 r_e(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 i_e=Object.freeze(Object.defineProperty({__proto__:null,getOrientationStringLPS:n_e,invertOrientationStringLPS:r_e},Symbol.toStringTag,{value:"Module"}));var x_;(function(t){t.CLIP_STOPPED="CORNERSTONE_CINE_TOOL_STOPPED",t.CLIP_STARTED="CORNERSTONE_CINE_TOOL_STARTED"})(x_||(x_={}));const Ry=x_,Xb={};function Cz(t,e){const r=De(t),{viewportId:n}=r;Xb[n]=e}function qb(t){const e=De(t),{viewportId:r}=e;return Xb[r]}function o_e(t){return Xb[t]}const{ViewportStatus:Sz}=ka,{triggerEvent:N3}=Dn,Tz=!0,C_=new Map;function a_e(t,e){let r,n;if(t===void 0)throw new Error("playClip: element must not be undefined");const i=De(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=d_e(o,e);let s=qb(t);const c=e.dynamicCineEnabled;if(c&&Ez(t),s?S_(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,bounce:e.bounce??!1},Cz(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}=s_e(s.frameTimeVector,s.speed);r=u,n=d}e.bounce!==void 0&&(s.bounce=e.bounce);const l=()=>{const{numScrollSteps:u,currentStepIndex:d}=a;let h=d+(s.reverse?-1:1);if(h<0||h>=u)if(s.bounce)s.reverse=!s.reverse,h=d+(s.reverse?-1:1),h=Math.max(0,Math.min(u-1,h));else if(s.loop)h=s.reverse?u-1:0;else{S_(t,{stopDynamicCine:!c,viewportId:o.id}),N3(t,Ry.CLIP_STOPPED,{element:t});return}const p=h-d;if(p)try{a.scroll(p)}catch(v){console.warn("Play clip not scrolling",v),bz(s),N3(t,Ry.CLIP_STOPPED,{element:t})}};if(c){const u=Yb(o);u&&C_.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};N3(t,Ry.CLIP_STARTED,f)}function _z(t,e={}){S_(t,{stopDynamicCine:!0,...e})}function S_(t,e={stopDynamicCine:!0,viewportId:void 0}){const{stopDynamicCine:r,viewportId:n}=e,i=De(t);let o;const a=i==null?void 0:i.viewport;if(i){const{viewport:s}=i;o=qb(s.element)}else if(n)o=o_e(n);else return;o&&bz(o),a instanceof dg?a.pause():r&&a instanceof Ir&&Ez(t)}function Ez(t){const{viewport:e}=De(t);if(e instanceof lr){const r=Yb(e);if(r!=null&&r.isDynamicVolume()){const n=C_.get(r.volumeId);C_.delete(r.volumeId),n&&n!==t&&_z(n)}}}function s_e(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 bz(t){const e=t.intervalId;typeof e<"u"&&(t.intervalId=void 0,t.usingFrameTimeVector?clearTimeout(e):clearInterval(e))}function Yb(t){if(!(t instanceof lr))return;const e=t.getAllVolumeIds();if(!(e!=null&&e.length))return;const n=e.find(i=>{var o;return(o=Ue.getVolume(i))==null?void 0:o.isDynamicVolume()})??e[0];return Ue.getVolume(n)}function c_e(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!==Sz.RENDERED){this.waitForRenderedCount++;return}this.waitForRenderedCount=0,_c(t,{delta:n,debounceLoading:Tz})}}}function l_e(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!==Sz.RENDERED){this.waitForRenderedCount++;return}this.waitForRenderedCount=0,_c(t,{delta:r,debounceLoading:Tz})},play(r){return r&&t.setPlaybackRate(r/24),t.play(),t.getFrameRate()}}}function u_e(t,e){const{volumeId:r}=e,n={viewPlaneNormal:Ve(),scrollInfo:null},i=()=>{const o=t.getCamera();if(!n.scrollInfo||!TT(o.viewPlaneNormal,n.viewPlaneNormal)){const s=jd(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=pt(a,o.viewPlaneNormal);return a0(s,1)},scroll(o){i().currentStepIndex+=o,_c(t,{delta:o})}}}function f_e(t){return{get numScrollSteps(){return t.numDimensionGroups},get currentStepIndex(){return t.dimensionGroupNumber-1},get frameTimeVectorEnabled(){return!1},scroll(e){t.scroll(e)}}}function d_e(t,e){if(t instanceof hr)return c_e(t,e.waitForRendered??30);if(t instanceof lr){const r=Yb(t);return e.dynamicCineEnabled&&(r!=null&&r.isDynamicVolume())?f_e(r):u_e(t,r)}if(t instanceof dg)return l_e(t,e.waitForRendered??30);throw new Error("Unknown viewport type")}const h_e=Object.freeze(Object.defineProperty({__proto__:null,Events:Ry,addToolState:Cz,getToolState:qb,playClip:a_e,stopClip:_z},Symbol.toStringTag,{value:"Module"}));function g_e(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 p_e(t,e){const r=La(),n=Kr(Ve(),e,t),i=Math.abs(t[0])>.1?Et(-t[1],t[0],0):Et(0,-t[2],t[1]);return _4(r,e,n,i),r}function F2(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=Gt(Ve(),f,o);return[u[0],u[1]]});let s=n?F2(a):0,c=lw(a,0,a.length-1,(e==null?void 0:e.knotsRatioPercentage)||30);if(c===a)return!1;F2(c,-s);for(let f=1;f<(e==null?void 0:e.loop);f++)s=n?F2(c):0,c=lw(c,0,c.length-1,(e==null?void 0:e.knotsRatioPercentage)||30),F2(c,-s);const l=ei(La(),o);return t.data.contour.polyline=c.map(f=>Gt([0,0,0],[...f,0],l)),!0}const m_e={smoothAnnotation:Dz},v_e=Object.freeze(Object.defineProperty({__proto__:null,default:m_e,smoothAnnotation:Dz},Symbol.toStringTag,{value:"Module"})),{isEqual:U2}=Dn,y_e=Et(1,0,0),w_e=Et(0,1,0),x_e=Et(0,0,1),DM=[y_e,w_e,x_e];function C_e(t){const e=pn(Ve(),t[0],t[1]),r=pn(Ve(),t[0],t[2]),n=IM(e,DM),i=IM(r,DM);return[...n,...i].every(a=>U2(a,0)||U2(a,90)||U2(a,180)||U2(a,270))}function IM(t,e){return e.map(r=>b4(t,r)*180/Math.PI)}const S_e=Object.freeze(Object.defineProperty({__proto__:null,getBoundsIJKFromRectangleAnnotations:$$,isAxisAlignedRectangle:C_e},Symbol.toStringTag,{value:"Module"})),Iz={};function Mz(t,e){const r=De(t),{viewportId:n}=r;Iz[n]=e}function ep(t){const e=De(t),{viewportId:r}=e;return Iz[r]}const Yd=gn.Prefetch,T_e=0;function __e(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 E_e(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 tp(t){const e=De(t);if(!e)return null;const{viewport:r}=e;return r instanceof hr?{currentImageIdIndex:r.getCurrentImageIdIndex(),imageIds:r.getImageIds()}:null}function Yx(t){return function(e){const r=e.detail;let n;try{n=tp(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=ep(t);!a||!a.indicesToRequest||!a.indicesToRequest.length||a.indicesToRequest.push(o)}}const b_e=t=>{const e=new Set(t.imageIds);return r=>r.type!==Yd||!e.has(r.additionalDetails.imageId)},{imageRetrieveMetadataProvider:D_e}=Dn;let v1={maxImagesToPrefetch:1/0,preserveExistingPool:!0},T_;const I_e=10;function Oz(t){var p,v;const e=ep(t);if(!e)return;const r=e||{},n=tp(t);if(!((p=n==null?void 0:n.imageIds)!=null&&p.length)){console.warn("CornerstoneTools.stackPrefetch: No images in stack.");return}const{currentImageIdIndex:i}=n;if(r.enabled=r.enabled&&(((v=r.indicesToRequest)==null?void 0:v.length)??0)>0,r.enabled===!1)return;function o(y){const m=r.indicesToRequest.indexOf(y);m>-1&&r.indicesToRequest.splice(m,1)}if(e.indicesToRequest.sort((y,m)=>y-m),r.indicesToRequest.slice().forEach(function(y){const m=n.imageIds[y];if(!m)return;(Math.abs(i-y)<6?Ue.getImageLoadObject(m):Ue.isLoaded(m))&&o(y)}),!r.indicesToRequest.length)return;v1.preserveExistingPool||zi.clearRequestStack(Yd);const s=E_e(r.indicesToRequest,n.currentImageIdIndex);let c,l;function f(y){console.log("prefetch done: %s",y.imageId);const m=n.imageIds.indexOf(y.imageId);o(m)}let u=s.low,d=s.high;const h=[];for(;u>=0||dv1.maxImagesToPrefetch,w=r.indicesToRequest[d]-y>v1.maxImagesToPrefetch,x=!m&&u>=0,C=!w&&d{var x;const{retrieveOptions:w={}}=ut(D_e.IMAGE_RETRIEVE_CONFIGURATION,y,"stack")||{};return m.retrieveOptions={...m.retrieveOptions,...w.default||((x=Object.values(w))==null?void 0:x[0])||{}},ks(y,m).then(()=>f(y))};h.forEach(y=>{const m={requestType:Yd};zi.addRequest(g.bind(null,y,m),Yd,{imageId:y},T_e)})}function __(t){clearTimeout(T_),T_=setTimeout(function(){const e=t.target;try{Oz(e)}catch{return}},I_e)}function M_e(t){const e=tp(t);if(!e||!e.imageIds||e.imageIds.length===0){console.warn("CornerstoneTools.stackPrefetch: No images in stack.");return}const r={indicesToRequest:__e(0,e.imageIds.length-1),enabled:!0,direction:1},n=r.indicesToRequest.indexOf(e.currentImageIdIndex);r.indicesToRequest.splice(n,1),Mz(t,r),Oz(t),t.removeEventListener(qe.STACK_NEW_IMAGE,__),t.addEventListener(qe.STACK_NEW_IMAGE,__);const i=Yx(t);ze.removeEventListener(qe.IMAGE_CACHE_IMAGE_REMOVED,i),ze.addEventListener(qe.IMAGE_CACHE_IMAGE_REMOVED,i)}function O_e(t){clearTimeout(T_),t.removeEventListener(qe.STACK_NEW_IMAGE,__);const e=Yx(t);ze.removeEventListener(qe.IMAGE_CACHE_IMAGE_REMOVED,e);const r=ep(t);r&&r.indicesToRequest.length&&(r.enabled=!1,zi.clearRequestStack(Yd))}function P_e(){return v1}function R_e(t){v1=t}const A_e={enable:M_e,disable:O_e,getConfiguration:P_e,setConfiguration:R_e},{imageRetrieveMetadataProvider:L_e}=Dn;let Om={maxImagesToPrefetch:1/0,minBefore:2,maxAfter:2,directionExtraImages:10,preserveExistingPool:!1},E_;const N_e=5,Pz={},k_e=(t,e=0)=>{var i;const r=tp(t);if(!r)return;if(!((i=r.imageIds)!=null&&i.length)){console.warn("CornerstoneTools.stackPrefetch: No images in stack.");return}Zb(t),Pz[t]=e,Jb(t,e),t.removeEventListener(qe.STACK_NEW_IMAGE,b_),t.addEventListener(qe.STACK_NEW_IMAGE,b_);const n=Yx(t);ze.removeEventListener(qe.IMAGE_CACHE_IMAGE_REMOVED,n),ze.addEventListener(qe.IMAGE_CACHE_IMAGE_REMOVED,n)};function Jb(t,e=0){var f,u;const r=tp(t);if(!r)return;if(!((f=r==null?void 0:r.imageIds)!=null&&f.length)){console.warn("CornerstoneTools.stackPrefetch: No images in stack.");return}const n=ep(t);if(!n)return;const i=n||{};if(i.enabled=i.enabled&&(((u=i.indicesToRequest)==null?void 0:u.length)??0)>0,i.enabled===!1)return;function o(d){const h=i.indicesToRequest.indexOf(d);h>-1&&i.indicesToRequest.splice(h,1)}const a=i.indicesToRequest.slice(),{currentImageIdIndex:s}=r;if(a.forEach(d=>{const h=r.imageIds[d];if(!h)return;(Math.abs(s-d)<6?Ue.getImageLoadObject(h):Ue.isLoaded(h))&&o(d)}),!i.indicesToRequest.length)return;Om.preserveExistingPool||zi.filterRequests(b_e(r));function c(d){var y,m;const h=r.imageIds.indexOf(d);o(h);const g=Ue.getCachedImageBasedOnImageURI(d),{stats:p}=i,v=((y=g==null?void 0:g.image)==null?void 0:y.decodeTimeInMS)||0;if(v){p.imageIds.set(d,v),p.decodeTimeInMS+=v;const w=((m=g==null?void 0:g.image)==null?void 0:m.loadTimeInMS)||0;p.loadTimeInMS+=w}if(!i.indicesToRequest.length&&g!=null&&g.sizeInBytes){const{sizeInBytes:w}=g,x=Ue.getMaxCacheSize()/4/w;if(!i.cacheFill)p.initialTime=Date.now()-p.start,p.initialSize=p.imageIds.size,Zb(t,x),Jb(t,e);else if(p.imageIds.size){p.fillTime=Date.now()-p.start;const{size:C}=p.imageIds;p.fillSize=C}}}const l=(d,h)=>{var p;const{retrieveOptions:g={}}=ut(L_e.IMAGE_RETRIEVE_CONFIGURATION,d,"stack")||{};return h.retrieveOptions={...h.retrieveOptions,...g.default||((p=Object.values(g))==null?void 0:p[0])||{}},ks(d,h).then(()=>c(d))};i.indicesToRequest.forEach(d=>{const h=r.imageIds[d],g={requestType:Yd};zi.addRequest(l.bind(null,h,g),Yd,{imageId:h},e)})}function b_(t){clearTimeout(E_),E_=setTimeout(function(){const e=t.target;try{Zb(e),Jb(e,Pz[e])}catch{return}},N_e)}const V_e=t=>t<0?-1:1,Zb=(t,e)=>{var d;const r=tp(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}=Om;const{directionExtraImages:a=10}=Om,s=ep(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=V_e(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,Mz(t,s)};function F_e(t){clearTimeout(E_),t.removeEventListener(qe.STACK_NEW_IMAGE,b_);const e=Yx(t);ze.removeEventListener(qe.IMAGE_CACHE_IMAGE_REMOVED,e);const r=ep(t);r&&(r.enabled=!1)}function U_e(){return Om}function B_e(t){Om=t}const G_e={enable:k_e,disable:F_e,getConfiguration:U_e,setConfiguration:B_e},W_e=Object.freeze(Object.defineProperty({__proto__:null,isViewportPreScaled:Gu},Symbol.toStringTag,{value:"Module"}));function $_e(t,e){let r;const n=e.dimensionGroupNumbers||e.frameNumbers||Array.from({length:t.numDimensionGroups},(i,o)=>o+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 i=Ue.getVolume(e.maskVolumeId);if(!i)throw new Error("Segmentation volume not found");const[o,a]=j_e(n,t,i);return[o,a]}return e.worldCoordinate?z_e(n,e.worldCoordinate,t):r}function z_e(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]),!vr(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.getAtIndexAndDimensionGroup(f,l))}),c}function j_e(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=J8(e.imageData,e.dimensions,e.spacing,d);let v=0;const y=new Map;t.forEach(x=>y.set(x,0));const m=({index:x})=>{for(let C=0;C{w.push(x/v)}),f.push(g),c.push(w)};return r.voxelManager.forEach(u,{imageData:n}),[c,f]}function Rz(t,e){const r=t.getScalarDataLength(),n=new Float32Array(r);for(const i of e){const o=t.getDimensionGroupScalarData(i);for(let a=0;a{const n=Rz(t,e);for(let i=0;i{const n=H_e(t,e);for(let i=0;i{if(e.length!==2)throw new Error("Please provide only 2 dimension groups for subtraction.");const n=t.getScalarDataLength(),i=t.getDimensionGroupScalarData(e[0]),o=t.getDimensionGroupScalarData(e[1]);for(let a=0;au+1);if(o.length<=1)throw new Error("Please provide two or more dimension groups");const a=t.voxelManager,s=a.getScalarDataLength(),c=Az[e];if(!c)throw new Error(`Unsupported operation: ${e}`);const l=new Float32Array(s);return c(a,o,(f,u)=>{l[f]=u}),l}function X_e(t,e,r){const{dimensionGroupNumbers:n,frameNumbers:i,targetVolume:o}=r;if(!o)throw new Error("A target volume must be provided");i&&console.warn("Warning: frameNumbers parameter is deprecated. Please use dimensionGroupNumbers instead.");const a=n||i||Array.from({length:t.numDimensionGroups},(f,u)=>u+1);if(a.length<=1)throw new Error("Please provide two or more dimension groups");const s=t.voxelManager,c=o.voxelManager,l=Az[e];if(!l)throw new Error(`Unsupported operation: ${e}`);l(s,a,(f,u)=>{c.setAtIndex(f,u)}),c.resetModifiedSlices();for(let f=0;f{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 kz(t){const e=Nz(t);if(!e)return;const r=t.getPoints().getData();return e.map(n=>n.map(i=>Lz(r,i)))}const Y_e=Object.freeze(Object.defineProperty({__proto__:null,getPoint:Lz,getPolyDataPointIndexes:Nz,getPolyDataPoints:kz},Symbol.toStringTag,{value:"Module"}));var Qa;(function(t){t.Top="top",t.Left="left",t.Bottom="bottom",t.Right="right"})(Qa||(Qa={}));const J_e=Object.freeze(Object.defineProperty({__proto__:null,get ColorbarRangeTextPosition(){return Qa}},Symbol.toStringTag,{value:"Module"})),mu=t=>t&&t.upper>t.lower,mw=t=>!!t&&t.width>0&&t.height>0,Pm=(t,e)=>!!t&&!!e&&t.lower===e.lower&&t.upper===e.upper,Vz=(t,e)=>!!t&&!!e&&t.width===e.width&&t.height===e.height,Z_e=(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:Q_e}=Dn;class Qb{constructor(e){Qb.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;!mw(e)||Vz(r,e)||(this._setCanvasSize(r,e),this.render())}get imageRange(){return{...this._imageRange}}set imageRange(e){!mu(e)||Pm(e,this._imageRange)||(this._imageRange=e,this.render())}get voiRange(){return{...this._voiRange}}set voiRange(e){!mu(e)||Pm(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&&!mw(r))throw new Error('Invalid "size"');if(n&&!mu(n))throw new Error('Invalid "imageRange"');if(i&&!mu(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=v=>{const y=4*v;if(!(v<0||v>=n))return{index:v,position:r[y],color:[r[y+1],r[y+2],r[y+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};let d,h=i(0);const g=(u.upper-u.lower)/(l-1);let p=u.lower;for(let v=0;vQ_e(Math.round(x*255),0,255));s.fillStyle=`rgb(${w[0]}, ${w[1]}, ${w[2]})`,c?s.fillRect(v,0,1,a):s.fillRect(0,a-v-1,o,1),p+=g}}}const pd={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 eD{constructor(e){eD.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)??pd.FONT,this._color=(f==null?void 0:f.color)??pd.COLOR,this._tickSize=(f==null?void 0:f.tickSize)??pd.TICK_SIZE,this._tickWidth=(f==null?void 0:f.tickWidth)??pd.TICK_WIDTH,this._labelMargin=(f==null?void 0:f.labelMargin)??pd.TICK_LABEL_MARGIN,this._maxNumTicks=(f==null?void 0:f.maxNumTicks)??pd.MAX_NUM_TICKS,this._rangeTextPosition=u??Qa.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;!mw(e)||Vz(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){!mu(e)||Pm(e,this._imageRange)||(this._imageRange=e,this.render())}get voiRange(){return{...this._voiRange}}set voiRange(e){!mu(e)||Pm(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&&!mw(r))throw new Error('Invalid "size"');if(n&&!mu(n))throw new Error('Invalid "imageRange"');if(i&&!mu(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=pd.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=i?"top":"middle",a.textAlign=i?"center":"left",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===Qa.Top?p=this._getTopTickInfo({position:d,labelMeasure:g}):p=this._getBottomTickInfo({position:d,labelMeasure:g}):this._rangeTextPosition===Qa.Left?p=this._getLeftTickInfo({position:d,labelMeasure:g}):p=this._getRightTickInfo({position:d});const{labelPoint:v,tickPoints:y}=p,{start:m,end:w}=y;return a.beginPath(),a.moveTo(m[0],m[1]),a.lineTo(w[0],w[1]),a.fillText(h,v[0],v[1]),a.stroke(),d})}}function eEe(t,e,r){return(t>=e?[Qa.Top,Qa.Bottom]:[Qa.Left,Qa.Right]).includes(r)}class tEe{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 Dp={MULTIPLIER:1,RANGE_TEXT_POSITION:Qa.Right,TICKS_BAR_SIZE:50};class Rm extends tEe{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=Ps(bt(),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}=Rg(d,h);g=Math.max(g+f,1),p+=u;const v=Pf(g,p);this.voiRange=v,n.stopPropagation(),n.preventDefault()},this._mouseUpCallback=n=>{this._isInteracting=!1,this.hideTicks(),this._removeVOIEventListeners(),n.stopPropagation()},this._eventListenersManager=new pU,this._colormaps=Rm.getColormapsMap(e),this._activeColormapName=Rm.getInitialColormapName(e),this._canvas=this._createCanvas(e),this._ticksBar=this._createTicksBar(e),this._rangeTextPosition=((r=e.ticks)==null?void 0:r.position)??Dp.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;!mu(e)||Pm(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[Dp.MULTIPLIER,Dp.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 Qb({colormap:o,imageRange:r,voiRange:n,showFullPixelValueRange:i})}_createTicksBar(e){const r=e.ticks;return new eD({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:Dp.TICKS_BAR_SIZE,s=o?Dp.TICKS_BAR_SIZE:r;if(!eEe(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===Qa.Top?-s:r):(c=0,l=i===Qa.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 k3=4;function nEe(t,e,r){if(MU(t,e)==="PT"){const{clientWidth:i,clientHeight:o}=t.element,a=5/Math.max(i,o),s=Gu(t,e),{fixedPTWindowWidth:c=!0}={},l=c?0:a;return s?[l,a]:[l,k3]}return[k3,k3]}const{Events:Yu}=ka,B2={lower:-1e3,upper:1e3};class gh extends Rm{constructor(e){const{element:r,volumeId:n}=e,i=gh._getImageRange(r,n),o=gh._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=gh._getImageRange(this._element)},this._imageVolumeModifiedCallback=a=>{const{volumeId:s}=a.detail;if(s!==this._volumeId)return;const{_element:c}=this;this.imageRange=gh._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 De(this._element)}getVOIMultipliers(){const{viewport:e}=this.enabledElement;return nEe(e,this._volumeId)}onVoiChange(e){super.onVoiChange(e);const{viewport:r}=this.enabledElement;if(r instanceof hr)r.setProperties({voiRange:e}),r.render();else if(r instanceof lr){const{_volumeId:n}=this,i=tv(n);r.setProperties({voiRange:e},n),i.forEach(o=>o.render())}}static _getImageRange(e,r){const n=De(e),{viewport:i}=n,o=i.getImageActor(r);if(!o)return B2;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=Ue.getVolume(r),[f,u]=l.voxelManager.getRange();c=[f,u]}return c[0]===0&&c[1]===0?B2:{lower:c[0],upper:c[1]}}static _getVOIRange(e,r){const n=De(e),{viewport:i}=n,o=i.getImageActor(r);if(!o)return B2;const a=o.getProperty().getRGBTransferFunction(0).getRange();return a[0]===0&&a[1]===0?B2:{lower:a[0],upper:a[1]}}showAndAutoHideTicks(e=1e3){this._hideTicksTime=Date.now()+e,this.showTicks(),this.autoHideTicks()}_addCornerstoneEventListener(){const{_element:e}=this;ze.addEventListener(Yu.IMAGE_VOLUME_MODIFIED,this._imageVolumeModifiedCallback),e.addEventListener(Yu.STACK_NEW_IMAGE,this._stackNewImageCallback),e.addEventListener(Yu.VOI_MODIFIED,this._viewportVOIModifiedCallback),e.addEventListener(Yu.COLORMAP_MODIFIED,this._viewportColormapModifiedCallback)}destroy(){super.destroy();const{_element:e}=this;ze.removeEventListener(Yu.IMAGE_VOLUME_MODIFIED,this._imageVolumeModifiedCallback),e.removeEventListener(Yu.STACK_NEW_IMAGE,this._stackNewImageCallback),e.removeEventListener(Yu.VOI_MODIFIED,this._viewportVOIModifiedCallback),e.removeEventListener(Yu.COLORMAP_MODIFIED,this._viewportColormapModifiedCallback)}}const rEe=Object.freeze(Object.defineProperty({__proto__:null,Colorbar:Rm,Enums:J_e,ViewportColorbar:gh},Symbol.toStringTag,{value:"Module"}));function Fz(t,e,r,n,i){const o=[];let a=0;const s=t.scalarData;let c,l,f;if(t.color)for(l=0;lq$(s,f),imageData:t})}function lEe(t,e,r){const[n,i]=t,o=Et((n[0]+i[0])/2,(n[1]+i[1])/2,(n[2]+i[2])/2),a=Po(n,i)/2;let s;if(!r){const c=D_(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=uEe(e,r,t,o,a),{boundsIJK:s,centerWorld:o,radiusWorld:a}}function uEe(t,e,r,n,i){const[o,a]=r,s=t.getDimensions(),c=e.getCamera(),l=Et(c.viewUp[0],c.viewUp[1],c.viewUp[2]),f=Et(c.viewPlaneNormal[0],c.viewPlaneNormal[1],c.viewPlaneNormal[2]),u=Ve();mn(u,l,f);const d=Ve(),h=Ve();bn(d,a,f,i),bn(h,o,f,-i),bn(d,d,u,-i),bn(h,h,u,i);const g=[D_(t,d),D_(t,h)];return $f(g,s)}function Gz(t){if(!Array.isArray(t)||t.length!==9)throw new Error("Matrix must be an array of 9 numbers");if(!t.every(e=>typeof e=="number"&&!isNaN(e)))throw new Error("Matrix must contain only valid numbers")}function Wz(t){Gz(t);const e=[[t[0],t[1],t[2]],[t[3],t[4],t[5]],[t[6],t[7],t[8]]],r=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(r)<1e-10)throw new Error("Matrix is not invertible (determinant is zero)");const n=[[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]]],i=[];for(let o=0;o<3;o++)for(let a=0;a<3;a++)i.push(n[o][a]/r);return i}function V3(t){const e=Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);return t.map(r=>r/e)}function fEe(t){Gz(t);const e=t.slice(0,3),r=t.slice(3,6),n=t.slice(6,9),i=V3(e),o=V3(r),a=V3(n),s={x:[1,0,0],y:[0,1,0],z:[0,0,1]},c=1e-10,l=i.every((u,d)=>Math.abs(u-s.x[d])Math.abs(u-s.y[d])Math.abs(u-s.z[d]){Kr(s,s,Er(Ve(),[-o[0],-o[1],-o[2]],a))}),e instanceof hr&&(t.metadata.referencedImageId=e.getCurrentImageId()),t}function mEe(t,e,r){const n=e*r,i=t.length/n;if(![1,3,4].includes(i))throw new Error("Buffer must be 1, 3, or 4 channels per pixel");const o=Array.from({length:r},()=>new Array(e).fill(!1));for(let v=0;v0){x=!0;break}o[v][y]=x}const a=Array.from({length:r},()=>new Array(e).fill(0));let s=0;const c={};for(let v=0;vC<0||C>=e||S<0||S>=r?!1:o[S][C]&&a[S][C]===0;let w=0;zb(m,[y,v],{onFlood:(C,S)=>{a[S][C]=s,w++},diagonals:!1}),c[s]=w}if(s===0)return[];const l=Object.keys(c).reduce((v,y)=>c[v]>c[y]?v:y);function f(v,y){if(a[y][v]!==+l)return!1;for(const[m,w]of[[1,0],[-1,0],[0,1],[0,-1]]){const x=v+m,C=y+w;if(x<0||x>=e||C<0||C>=r||a[C][x]!==+l)return!0}return!1}let u=null;e:for(let v=0;vx[0]===v&&x[1]===y);m<0&&(m=0);let w=null;for(let x=1;x<=8;x++){const[C,S]=d[(m+x)%8],T=g[0]+C,_=g[1]+S;if(T>=0&&T=0&&_(y+1)%r,i=(y,m)=>{const w=[];for(let x=y;w.push(x),x!==m;x=n(x));return w};let o=0,a=0;for(let y=1;yt[a][0]&&(a=y);const s=t[o],c=t[a],l=i(o,a),f=i(a,o),u=Math.min(...t.map(y=>y[1])),d=l.some(y=>t[y][1]===u)?l:f,h=Math.min(...d.map(y=>t[y][1]));let g=d.map(y=>t[y]).filter(y=>Math.abs(y[1]-h)<=e);g.length<2&&(g=d.map(y=>t[y]).sort((y,m)=>y[1]-m[1]).slice(0,2));const p=g.reduce((y,m)=>m[0]m[0]>y[0]?m:y,g[0]);return{P1:p,P2:s,P3:c,P4:v}}function wEe(t,e,r,n,i,o={}){const{maxDist:a=15,slack:s=2}=o,c={P1:{dx:-1,dy:-1},P2:{dx:-1,dy:1},P3:{dx:1,dy:1},P4:{dx:1,dy:-1}};function l(f,{dx:u,dy:d},h=5){const g=u<0?f[0]-a:f[0]-s,p=u<0?f[0]+s:f[0]+a,v=d<0?f[1]-a:f[1]-s,y=d<0?f[1]+s:f[1]+a;let m=f;for(const[w,x]of i){if(wp||xy)continue;const C=Math.round(w),S=Math.round(x);if(C<0||C>=e||S<0||S>=r)continue;const T=(C-m[0])*u,_=(S-m[0])*d;t[S*e+C]>h&&(T>0||_>0)&&(m=[w,x])}return m}return{P1:l(n.P1,c.P1),P2:l(n.P2,c.P2),P3:l(n.P3,c.P3),P4:l(n.P4,c.P4)}}function xEe(t,e,r,n,i){const o=yEe(n);return wEe(t,e,r,o,i,{maxDist:20,step:.5})}function MM(t,e){return Math.atan2(e[1]-t[1],e[0]-t[0])}function CEe(t){const{P1:e,P2:r,P3:n,P4:i}=t,o=rw(e,r,i,n,!0);if(!o)throw new Error("Fan edges appear parallel — no apex found");const a=o;let s=MM(a,e)*(180/Math.PI),c=MM(a,i)*(180/Math.PI);if(c<=s){const p=s;s=c,c=p}const l=Math.hypot(e[0]-a[0],e[1]-a[1]),f=Math.hypot(i[0]-a[0],i[1]-a[1]),u=Math.hypot(r[0]-a[0],r[1]-a[1]),d=Math.hypot(n[0]-a[0],n[1]-a[1]),h=Math.min(l,f),g=Math.max(u,d);return{center:a,startAngle:s,endAngle:c,innerRadius:h,outerRadius:g}}function Kp(t,e,r,n,i={}){const{strokeStyle:o="#f00",lineWidth:a=2,quality:s=.92}=i,c=document.createElement("canvas");c.width=e,c.height=r;const l=c.getContext("2d"),f=e*r,u=t.length/f,d=l.createImageData(e,r),h=d.data;for(let g=0;g0){l.strokeStyle=o,l.lineWidth=a,l.beginPath(),l.moveTo(n[0][0]+.5,n[0][1]+.5);for(let g=1;g=h;C-=.01){const S=o[0]+l*Math.cos(C),T=o[1]+l*Math.sin(C);v.lineTo(S,T)}return v.closePath(),v.strokeStyle=f,v.lineWidth=u,v.stroke(),p.toDataURL("image/jpeg",d)}function TEe(t,e=5){const{contour:r,simplified:n,hull:i,refined:o,fanGeometry:a}=nD(t),{pixelData:s,width:c,height:l}=tD(t)||{};if(!s)return;let f;e===1?f=Kp(s,c,l,r):e===2?f=Kp(s,c,l,n):e===3?f=Kp(s,c,l,i):e===4?f=Kp(s,c,l,[o.P1,o.P2,o.P3,o.P4]):f=SEe(s,c,l,a,{strokeStyle:"#f00",lineWidth:3,quality:.95}),zz(f,"contour.jpg")}function nD(t){const{pixelData:e,width:r,height:n}=tD(t)||{};if(!e)return;const i=mEe(e,r,n),{simplified:o,hull:a}=vEe(i),s=xEe(e,r,n,a,o),c=CEe({P1:s.P1,P2:s.P2,P3:s.P3,P4:s.P4});return{contour:i,simplified:o,hull:a,refined:s,fanGeometry:c}}const _Ee=Object.freeze(Object.defineProperty({__proto__:null,calculateFanGeometry:nD,default:zz,downloadFanJpeg:TEe,exportContourJpeg:Kp,getPixelData:tD},Symbol.toStringTag,{value:"Module"})),EEe=un,bEe=Object.freeze(Object.defineProperty({__proto__:null,AnnotationMultiSlice:S3e,IslandRemoval:d0,annotationHydration:Qve,boundingBox:w3e,calibrateImageSpacing:y3e,cine:h_e,contourSegmentation:zye,contours:tSe,debounce:$g,drawing:Hwe,dynamicVolume:q_e,geometricSurfaceUtils:gEe,getAnnotationNearPoint:p3e,getAnnotationNearPointOnEnabledElement:m$,getCalibratedAspect:Db,getCalibratedLengthUnitsAndScale:Na,getCalibratedProbeUnitsAndValue:cw,getClosestImageIdForStackViewport:ob,getOrCreateImageVolume:jx,getPixelValueUnits:Wu,getPixelValueUnitsImageId:bW,getSphereBoundsInfo:w$,getViewportForAnnotation:Py,isObject:nb,math:Z2e,moveAnnotationToViewPlane:pEe,normalizeViewportPlane:j$,orientation:i_e,planar:O5e,planarFreehandROITool:v_e,pointInSurroundingSphereCallback:cEe,pointToString:x$,polyDataUtils:Y_e,rectangleROITool:S_e,roundNumber:EEe,segmentation:t_e,setAnnotationLabel:$z,stackContextPrefetch:G_e,stackPrefetch:A_e,throttle:ea,touch:mve,triggerAnnotationRender:jg,triggerAnnotationRenderForToolGroupIds:CW,triggerAnnotationRenderForViewportIds:ke,triggerEvent:nt,usFanExtraction:_Ee,viewport:W_e,viewportFilters:Cye,voi:sEe},Symbol.toStringTag,{value:"Module"})),DEe=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));function jz(t,e){const r=er;t.forEach(n=>{r.updateSegmentation(n.segmentationId,n.payload),e||us(n.segmentationId)})}function IEe(t,e,r){er.setSegmentationRepresentationVisibility(t,e,r)}function MEe(t,e,r){const n=Aa(t,e);n&&n.forEach(i=>{IEe(t,{segmentationId:i.segmentationId,type:i.type},r)})}function OEe(t,e){return _W(t,e)}function PEe(t,e,r,n){const i=Aa(t,e);i&&(i.forEach(o=>{!o.segments||!o.segments[r]||(o.segments[r].visible=n)}),Gx(e.segmentationId),yl(t,e.segmentationId))}function REe(t,e,r){return!Hz(t,e).has(r)}function Hz(t,e){const r=eb(t,e);return r?Object.entries(r.segments).reduce((i,[o,a])=>(a.visible||i.add(Number(o)),i),new Set):new Set}const AEe=Object.freeze(Object.defineProperty({__proto__:null,getHiddenSegmentIndices:Hz,getSegmentIndexVisibility:REe,getSegmentationRepresentationVisibility:OEe,setSegmentIndexVisibility:PEe,setSegmentationRepresentationVisibility:MEe},Symbol.toStringTag,{value:"Module"}));function LEe(t){return ns.getStyle(t)}function NEe(t,e){ns.setStyle(t,e),!t.viewportId&&!t.segmentationId&&zx().forEach(n=>{Xg(n.segmentationId)}),yl(t.viewportId,t.segmentationId,t.type)}function kEe(t,e){ns.setRenderInactiveSegmentations(t,e),Xg(t),O$(t).forEach(n=>{yl(t,n.segmentationId)})}function VEe(t){return ns.getRenderInactiveSegmentations(t)}function FEe(){ns.resetToGlobalStyle(),Xg()}function UEe(t){return ns.hasCustomStyle(t)}const BEe=Object.freeze(Object.defineProperty({__proto__:null,getRenderInactiveSegmentations:VEe,getStyle:LEe,hasCustomStyle:UEe,resetToGlobalStyle:FEe,setRenderInactiveSegmentations:kEe,setStyle:NEe},Symbol.toStringTag,{value:"Module"})),GEe=Object.freeze(Object.defineProperty({__proto__:null,color:_xe,style:BEe,visibility:AEe},Symbol.toStringTag,{value:"Module"}));function Kz(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=>!$n(f).parentAnnotationUID);const l=c.map(f=>{var v;const u=$n(f),d=(v=u.childAnnotationUIDs)==null?void 0:v.length,h=d&&u.childAnnotationUIDs.map(y=>{const m=$n(y);return{polyline:m.data.contour.polyline,isClosed:m.data.contour.closed}}),g=d&&h.map(y=>y.isClosed),p=d&&h.map(y=>y.polyline);return{polyline:u.data.contour.polyline,isClosed:u.data.contour.closed,annotationUID:u.annotationUID,referencedImageId:u.metadata.referencedImageId,holesPolyline:p,holesUIDs:u.childAnnotationUIDs,holesClosed:g}});i.set(a,l)}),{segmentIndices:n,annotationUIDsInSegmentMap:i}}function OM(t,e){if(!t||t.length===0)return[];if(!e)return[...t];const r=t[0],n=t[t.length-1];return r[0]===n[0]&&r[1]===n[1]&&r[2]===n[2]?[...t]:[...t,r]}function WEe(t,e){var o;const{annotationUIDsInSegmentMap:r}=Kz(t);if(!r.has(e)){console.warn(`No contour information found for segmentIndex ${e}`);return}const n=new Map,i=r.get(e);for(const a of i){n.set(a.annotationUID,OM(a.polyline,a.isClosed));for(let s=0;s<((o=a.holesUIDs)==null?void 0:o.length);s++)n.set(a.holesUIDs[s],OM(a.holesPolyline[s],a.holesClosed[s]))}return n}function _v(t,e){const r=lb(t),n=an(t);if(!n||!n.representationData.Contour)return;const i=n.representationData.Contour,{annotationUIDsMap:o}=i;if(!o||!o.get(e))return;const a=WEe(i,e);if(!a)return;const s=Array.from(a==null?void 0:a.keys()),c=new Map;for(const l of s){const f=$n(l),u=fb(r,f);c.set(l,ss(a.get(l),u))}return c}function $Ee(t,e,r={epsilon:.1}){const n=an(t);if(!n){console.warn(`Invalid segmentation given ${t}`);return}if(!n.representationData.Contour){console.warn(`No contour representation found for segmentation ${t}`);return}const i=lb(t);if(!i){console.warn("No viewport associated to the segmentation found");return}const o=_v(t,e);if(!o){console.warn(`Error extracting contour data from segment ${e} in segmentation ${t}`);return}const a=Array.from(o==null?void 0:o.keys());for(const s of a){const c=$n(s);if(!c)continue;const l=o.get(s),f=Rx(l,r.epsilon),u=fb(i,c);u&&(c.data.contour.polyline=f.map(d=>u.canvasToWorld(d)),K8(c))}}function rD(t){t&&(t.parentAnnotationUID&&Gg(t),nn(t.annotationUID),Lc(t))}function zEe(t,e){const r=an(t);if(!r){console.warn(`Invalid segmentation given ${t}`);return}if(!r.representationData.Contour){console.warn(`No contour representation found for segmentation ${t}`);return}const n=_v(t,e);if(!n){console.warn(`Error extracting contour data from segment ${e} in segmentation ${t}`);return}const i=Array.from(n==null?void 0:n.keys()),o=i.map(s=>n.get(s)),a=Ub(o);(a==null?void 0:a.length)>0&&a.forEach(s=>{s.holeIndexes.forEach(c=>{const l=$n(i[c]);rD(l)})})}function jEe(t,e,r={threshold:3}){const n=an(t);if(!n){console.warn(`Invalid segmentation given ${t}`);return}if(!n.representationData.Contour){console.warn(`No contour representation found for segmentation ${t}`);return}const i=_v(t,e);if(!i){console.warn(`Error extracting contour data from segment ${e} in segmentation ${t}`);return}const o=Array.from(i==null?void 0:i.keys()),a=o.map(c=>i.get(c)),s=G$(a,r.threshold);(s==null?void 0:s.length)>0&&s.forEach(c=>{const l=$n(o[c]);rD(l)})}function HEe(t,e,r={knotsRatioPercentage:30}){const n=an(t);if(!n){console.warn(`Invalid segmentation given ${t}`);return}if(!n.representationData.Contour){console.warn(`No contour representation found for segmentation ${t}`);return}const i=n.representationData.Contour,{annotationUIDsMap:o}=i;if(!o){console.warn(`No contours found for segmentation ${t}`);return}if(!o.has(e)){console.warn(`Error extracting contour data from segment ${e} in segmentation ${t}`);return}o.get(e).forEach(s=>{const c=$n(s);if(!c)return;const l=c.data.contour.polyline;if(!l||l.length<3)return;const f=lw(l,0,l.length-1,r.knotsRatioPercentage);c.data.contour.polyline=f})}function KEe(t,e,r,n){const i=an(t);if(!i){console.warn(`Invalid segmentation given ${t}`);return}if(!i.representationData.Contour){console.warn(`No contour representation found for segmentation ${t}`);return}const{annotationUIDsMap:o}=(i==null?void 0:i.representationData.Contour)||{};if(!o){console.warn(`No annotation map found for segmentation ${t}`);return}const a=o==null?void 0:o.get(e);if(!a){console.warn(`Segmentation index ${e} has no annotations in segmentation ${t}`);return}let s;if(r&&typeof n=="number"){const d=an(r);if(!d){console.warn(`Target segmentation ${r} does not exist.`);return}if(!d.representationData.Contour){console.warn(`No contour representation found for target segmentation ${r}`);return}s=d.representationData.Contour.annotationUIDsMap.get(n),s||(s=new Set,d.representationData.Contour.annotationUIDsMap.set(n,s))}const c=_v(t,e);if(!c){console.warn(`Error extracting contour data from segment ${e} in segmentation ${t}`);return}const l=Array.from(c==null?void 0:c.keys()),f=l.map(d=>c.get(d)),u=Ub(f);(u==null?void 0:u.length)>0&&u.forEach(d=>{d.holeIndexes.forEach(h=>{const g=$n(l[h]);Gg(g),r&&typeof n=="number"?s.add(g.annotationUID):a.add(g.annotationUID)})})}const XEe=Object.freeze(Object.defineProperty({__proto__:null,convertContourHoles:KEe,decimateContours:$Ee,extractSegmentPolylines:_v,getAnnotationMapFromSegmentation:Kz,getAnnotationsUIDMapFromSegmentation:i_,getViewportAssociatedToSegmentation:ub,getViewportWithMatchingViewPlaneNormal:fb,removeCompleteContourAnnotation:rD,removeContourHoles:zEe,removeContourIslands:jEe,smoothContours:HEe},Symbol.toStringTag,{value:"Module"}));async function qEe(t){const e=Gve(t);return us(t.segmentationId),e}function Xz(t,e){const r=an(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=>Ue.getImage(a)):[Ue.getVolume(i.volumeId)]).forEach(a=>{if(!a)return;const{voxelManager:s}=a;s.forEach(({value:c,index:l})=>{c===e&&s.setAtIndex(l,0)})}),Ro(t)}else throw new Error("Invalid segmentation type, only labelmap is supported right now")}function YEe(t,e,r={setNextSegmentAsActive:!0}){Xz(t,e);const n=pa(t)===e,i=an(t),{segments:o}=i;delete o[e];const a={...o};if(jz([{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?Mm(t,f):u!==void 0&&Mm(t,u)}_0(t).forEach(c=>{Aa(c,{segmentationId:t}).forEach(f=>{delete f.segments[e]})})}function JEe(t){const e=er,r=an(t);return e.getLabelmapImageIds(r.representationData)}const ZEe={clearSegmentValue:Xz,convertStackToVolumeLabelmap:qEe,computeVolumeLabelmapFromStack:xz,convertVolumeToStackLabelmap:XTe},QEe=Object.freeze(Object.defineProperty({__proto__:null,activeSegmentation:h5e,addContourRepresentationToViewport:Kb,addContourRepresentationToViewportMap:$Te,addLabelmapRepresentationToViewport:yz,addLabelmapRepresentationToViewportMap:zTe,addRepresentationData:tb,addSegmentationRepresentations:Qg,addSegmentations:S$,addSurfaceRepresentationToViewport:wz,addSurfaceRepresentationToViewportMap:jTe,config:GEe,defaultSegmentationStateManager:er,getActiveSegmentation:u0,getCurrentLabelmapImageIdsForViewport:Nu,getLabelmapImageIds:JEe,getLabelmapImageIdsForImageId:i5e,helpers:ZEe,removeAllSegmentationRepresentations:E$,removeAllSegmentations:M$,removeContourRepresentation:D$,removeLabelmapRepresentation:b$,removeSegment:YEe,removeSegmentation:Bb,removeSegmentationRepresentation:Yg,removeSegmentationRepresentations:T$,removeSurfaceRepresentation:I$,segmentIndex:BTe,segmentLocking:Cxe,segmentationStyle:ns,state:W3e,strategies:KSe,triggerSegmentationEvents:Ave,updateSegmentations:jz,utilities:XEe},Symbol.toStringTag,{value:"Module"}));class iD{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(r=>this.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 e4e=1e-8;class oD extends iD{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=gy(1,c,g,p),y=pf(bL(),v,r);return[T6(y,gy(f[0],u[0],d[0],h[0])),T6(y,gy(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]:o_(f,l),cl?l:p;const v=this._getPoint(p,r,n,i);if(!g){u=v;continue}d=v;const y=d[0]-u[0],m=d[1]-u[1],w=Math.sqrt(y**2+m**2),x={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:x,length:w,previousLineSegmentsLength:h}),u=d,h+=w}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}}}const t4e=TL(La(),v4(1,4,1,0,-3,0,3,0,3,-6,3,0,-1,3,-3,1),1/6);class qz extends oD{getTransformMatrix(){return t4e}}class Am extends oD{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 Yz extends Am{constructor(){super({scale:.5,fixedScale:!0})}}class Jz extends Am{constructor(){super({resolution:0,fixedResolution:!0,scale:0,fixedScale:!0})}}class Zz extends iD{getSplineCurves(){return[]}getLineSegments(){return[]}getPreviewCurveSegments(e,r){return[]}}const n4e=[1,0,0,-2,2,0,1,-2,1];class r4e extends Zz{hasTangentPoints(){return!0}getTransformMatrix(){return n4e}}const i4e=Object.freeze(Object.defineProperty({__proto__:null,BSpline:qz,CardinalSpline:Am,CatmullRomSpline:Yz,CubicSpline:oD,LinearSpline:Jz,QuadraticBezier:r4e,QuadraticSpline:Zz,Spline:iD},Symbol.toStringTag,{value:"Module"}));class Nf extends mi{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=De(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()}}Nf.toolName="Pan";class Qz extends mi{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{rotateIncrementDegrees:2,rotateSampleDistanceFactor:2}}){super(e,r),this._resizeObservers=new Map,this._hasResolutionChanged=!1,this.preMouseDownCallback=n=>{const i=n.detail,{element:o}=i,a=De(o),{viewport:s}=a,f=s.getDefaultActor().actor.getMapper();if(!("getSampleDistance"in f||"getCurrentSampleDistance"in f))return!0;const d=f.getSampleDistance();if(!this._hasResolutionChanged){const{rotateSampleDistanceFactor:h}=this.configuration;f.setSampleDistance(d*h),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})}return!0},this._getViewportsInfo=()=>kr(this.toolGroupId).viewportsInfo,this.onSetToolActive=()=>{const n=()=>{this._getViewportsInfo().forEach(({viewportId:o,renderingEngineId:a})=>{if(!this._resizeObservers.has(o)){const{viewport:s}=Qn(o,a)||{viewport:null};if(!s)return;const{element:c}=s,l=new ResizeObserver(()=>{const f=Qn(o,a);if(!f)return;const{viewport:u}=f,d=u.getViewPresentation();u.resetCamera(),u.setViewPresentation(d),u.render()});l.observe(c),this._resizeObservers.set(o,l)}})};n(),this._viewportAddedListener=i=>{i.detail.toolGroupId===this.toolGroupId&&n()},ze.addEventListener(U.TOOLGROUP_VIEWPORT_ADDED,this._viewportAddedListener)},this.onSetToolDisabled=()=>{this._resizeObservers.forEach((n,i)=>{n.disconnect(),this._resizeObservers.delete(i)}),this._viewportAddedListener&&(ze.removeEventListener(U.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=Lt(new Float32Array(16));or(g,g,i),po(g,g,a,o),or(g,g,[-i[0],-i[1],-i[2]]),Gt(u,f,g),Gt(d,l,g),Lt(g),po(g,g,a,o),Gt(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=De(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,w=[g[0],0,0],x=[h[0],0,0],C=w[0]**2,S=x[0]**2,T=C>m?0:Math.sqrt(m-C),_=S>m?0:Math.sqrt(m-S),E=[w[0],0,T];Dt.normalize(E);const b=[x[0],0,_];Dt.normalize(b);const D=Dt.dot(E,b);if(Math.abs(D)>1e-4){const I=-2*Math.acos(Dt.clampValue(D,-1,1))*Math.sign(h[0]-g[0])*s,P=f.viewUp,M=f.viewPlaneNormal,L=[0,0,0],B=[0,0,0];Dt.cross(P,M,L),Dt.normalize(L),Dt.cross(M,L,B),Dt.normalize(B),Dt.normalize(P),this.rotateCamera(l,v,B,I);const j=(g[1]-h[1])*s;this.rotateCamera(l,v,L,j),l.render()}}}Qz.toolName="TrackballRotate";function o4e(t,e){e.classHierarchy.push("vtkSphereSource"),t.requestData=(r,n)=>{if(e.deleted)return;let i=n[0];const o=i?i.getPoints().getDataType():e.pointType;i=Dr.newInstance();let a=0,{thetaResolution:s}=e,c=e.startThetae.startTheta?e.endTheta:e.startTheta;l*=Math.PI/180;let f=e.startPhie.startPhi?e.endPhi:e.startPhi;u*=Math.PI/180,Math.abs(c-l)<2*Math.PI&&++s;const d=(l-c)/e.thetaResolution,h=e.startPhi<=0?1:0,g=e.phiResolution+(e.endPhi>=180?-1:0),p=e.phiResolution*s+2,v=e.phiResolution*2*e.thetaResolution;let y=0,m=Q.newTypedArray(o,p*3),w=new Float32Array(p*3),x=0,C=new Uint32Array(v*5);e.startPhi<=0&&(m[y*3+0]=e.center[0],m[y*3+1]=e.center[1],m[y*3+2]=e.center[2]+e.radius,w[y*3+0]=0,w[y*3+1]=0,w[y*3+2]=1,y++,a++),e.endPhi>=180&&(m[y*3+0]=e.center[0],m[y*3+1]=e.center[1],m[y*3+2]=e.center[2]-e.radius,w[y*3+0]=0,w[y*3+1]=0,w[y*3+2]=-1,y++,a++);const S=e.phiResolution-a,T=(u-f)/(e.phiResolution-1);for(let b=0;b=180){const b=S-1+a;for(let D=0;D2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,a4e,r),Q.obj(t,e),Q.setGet(t,e,["radius","latLongTessellation","thetaResolution","startTheta","endTheta","phiResolution","startPhi","endPhi"]),Q.setGetArray(t,e,["center"],3),Q.algo(t,e,0,1),o4e(t,e)}const s4e=Q.newInstance(ej,"vtkSphereSource");var c4e={newInstance:s4e,extend:ej};const xs={XMIN:0,XMAX:1,YMIN:2,YMAX:3,ZMIN:4,ZMAX:5},Zt={XMIN:0,XMAX:1,YMIN:2,YMAX:3,ZMIN:4,ZMAX:5,XMIN_YMIN_ZMIN:6,XMIN_YMIN_ZMAX:7,XMIN_YMAX_ZMIN:8,XMIN_YMAX_ZMAX:9,XMAX_YMIN_ZMIN:10,XMAX_YMIN_ZMAX:11,XMAX_YMAX_ZMIN:12,XMAX_YMAX_ZMAX:13};class tj extends mi{constructor(e={},r={configuration:{showCornerSpheres:!0,showHandles:!0,showClippingPlanes:!0,mobile:{enabled:!1,opacity:.8},initialCropFactor:.08,sphereColors:{SAGITTAL:[1,1,0],CORONAL:[0,1,0],AXIAL:[1,0,0],CORNERS:[0,0,1]},sphereRadius:8,grabSpherePixelDistance:20,rotateIncrementDegrees:2,rotateSampleDistanceFactor:2}}){super(e,r),this._resizeObservers=new Map,this._hasResolutionChanged=!1,this.originalClippingPlanes=[],this.draggingSphereIndex=null,this.toolCenter=[0,0,0],this.cornerDragOffset=null,this.faceDragOffset=null,this.sphereStates=[],this.edgeLines={},this.onSetToolConfiguration=()=>{console.debug("Setting tool settoolconfiguration : volumeCropping")},this.onSetToolEnabled=()=>{console.debug("Setting tool enabled: volumeCropping")},this.onCameraModified=n=>{const{element:i}=n.currentTarget?{element:n.currentTarget}:n.detail,o=De(i);this._updateClippingPlanes(o.viewport),o.viewport.render()},this.preMouseDownCallback=n=>{const i=n.detail,{element:o}=i,a=De(o),{viewport:s}=a,f=s.getDefaultActor().actor.getMapper(),u=[n.detail.currentPoints.canvas[0],n.detail.currentPoints.canvas[1]];this.draggingSphereIndex=null,this.cornerDragOffset=null,this.faceDragOffset=null;for(let g=0;g{if(f.setSampleDistance(h),n.target.style.cursor="",this.draggingSphereIndex!==null){const p=this.sphereStates[this.draggingSphereIndex],[v]=this._getViewportsInfo(),m=ir(v.renderingEngineId).getViewport(v.viewportId);p.isCorner&&(this._updateCornerSpheres(),this._updateFaceSpheresFromCorners(),this._updateClippingPlanesFromFaceSpheres(m))}this.draggingSphereIndex=null,this.cornerDragOffset=null,this.faceDragOffset=null,s.render(),this._hasResolutionChanged=!1},document.addEventListener("mouseup",this.cleanUp,{once:!0})}return!0},this._onMouseMoveSphere=n=>{if(this.draggingSphereIndex===null)return!1;const i=this.sphereStates[this.draggingSphereIndex];if(!i)return!1;const{viewport:o,world:a}=this._getViewportAndWorldCoords(n);if(!o||!a)return!1;if(i.isCorner){const s=this._calculateNewCornerPosition(a);this._updateSpherePosition(i,s);const c=this._parseCornerKey(i.uid);this._updateRelatedCorners(i,s,c),this._updateFaceSpheresFromCorners(),this._updateCornerSpheres()}else{const s={x:0,y:1,z:2}[i.axis];let c=a[s];this.faceDragOffset!==null&&(c+=this.faceDragOffset),i.point[s]=c,i.sphereSource.setCenter(...i.point),i.sphereSource.modified(),this._updateCornerSpheresFromFaces(),this._updateFaceSpheresFromCorners(),this._updateCornerSpheres()}return this._updateClippingPlanesFromFaceSpheres(o),o.render(),this._triggerToolChangedEvent(i),!0},this._onControlToolChange=n=>{var o;const i=this._getViewport();if(!n.detail.toolCenter)nt(ze,U.VOLUMECROPPING_TOOL_CHANGED,{originalClippingPlanes:this.originalClippingPlanes,viewportId:i.id,renderingEngineId:i.renderingEngineId,seriesInstanceUID:this.seriesInstanceUID});else{if(n.detail.seriesInstanceUID!==this.seriesInstanceUID)return;const a=n.detail.handleType==="min",s=a?n.detail.toolCenterMin:n.detail.toolCenterMax,c=a?[[1,0,0],[0,1,0],[0,0,1]]:[[-1,0,0],[0,-1,0],[0,0,-1]],l=a?[xs.XMIN,xs.YMIN,xs.ZMIN]:[xs.XMAX,xs.YMAX,xs.ZMAX],f=a?[Zt.XMIN,Zt.YMIN,Zt.ZMIN]:[Zt.XMAX,Zt.YMAX,Zt.ZMAX],u=["x","y","z"],d=[wu.SAGITTAL,wu.CORONAL,wu.AXIAL];for(let h=0;h<3;++h){const g=[0,0,0];g[h]=s[h];const p=Wr.newInstance({origin:g,normal:c[h]});this.originalClippingPlanes[l[h]].origin=p.getOrigin(),this.sphereStates[f[h]].point[h]=p.getOrigin()[h],this.sphereStates[f[h]].sphereSource.setCenter(...this.sphereStates[f[h]].point),this.sphereStates[f[h]].sphereSource.modified();const y=(this.sphereStates.find((w,x)=>w.axis===u[h]&&x!==f[h]).point[h]+p.getOrigin()[h])/2;this.sphereStates.forEach(w=>{!w.isCorner&&w.axis!==u[h]&&!n.detail.viewportOrientation.includes(d[h])&&(w.point[h]=y,w.sphereSource.setCenter(w.point),w.sphereActor.getProperty().setColor(w.color),w.sphereSource.modified())});const m=(o=i.getDefaultActor())==null?void 0:o.actor;if(m){const x=m.getMapper().getClippingPlanes();x&&x[l[h]].setOrigin(p.getOrigin())}}this._updateCornerSpheres(),i.render()}},this._getViewportsInfo=()=>kr(this.toolGroupId).viewportsInfo,this._initialize3DViewports=n=>{if(!n||!n.length||!n[0]){console.warn("VolumeCroppingTool: No viewportsInfo available for initialization of volumecroppingtool.");return}const i=this._getViewport(),o=i.getActors();if(!o||o.length===0){console.warn("VolumeCroppingTool: No volume actors found in the viewport.");return}const a=o[0].actor.getMapper().getInputData();if(!a){console.warn("VolumeCroppingTool: No image data found for volume actor.");return}this.seriesInstanceUID=a.seriesInstanceUID||"unknown";const s=a.getBounds(),c=this.configuration.initialCropFactor||.1,l=s[1]-s[0],f=s[3]-s[2],u=s[5]-s[4],d=s[0]+c*l,h=s[1]-c*l,g=s[2]+c*f,p=s[3]-c*f,v=s[4]+c*u,y=s[5]-c*u,m=[],w=Wr.newInstance({origin:[d,0,0],normal:[1,0,0]}),x=Wr.newInstance({origin:[h,0,0],normal:[-1,0,0]}),C=Wr.newInstance({origin:[0,g,0],normal:[0,1,0]}),S=Wr.newInstance({origin:[0,p,0],normal:[0,-1,0]}),T=Wr.newInstance({origin:[0,0,v],normal:[0,0,1]}),_=Wr.newInstance({origin:[0,0,y],normal:[0,0,-1]}),E=i.getDefaultActor().actor.getMapper();m.push(w),m.push(x),m.push(C),m.push(S),m.push(T),m.push(_);const b=m.map(X=>({origin:[...X.getOrigin()],normal:[...X.getNormal()]}));this.originalClippingPlanes=b;const D=[d,(p+g)/2,(y+v)/2],I=[h,(p+g)/2,(y+v)/2],P=[(h+d)/2,g,(y+v)/2],M=[(h+d)/2,p,(y+v)/2],L=[(h+d)/2,(p+g)/2,v],B=[(h+d)/2,(p+g)/2,y],j=this._calculateAdaptiveSphereRadius(Math.sqrt(l*l+f*f+u*u));this._addSphere(i,D,"x","min",null,j),this._addSphere(i,I,"x","max",null,j),this._addSphere(i,P,"y","min",null,j),this._addSphere(i,M,"y","max",null,j),this._addSphere(i,L,"z","min",null,j),this._addSphere(i,B,"z","max",null,j);const V=[[d,g,v],[d,g,y],[d,p,v],[d,p,y],[h,g,v],[h,g,y],[h,p,v],[h,p,y]],F=["XMIN_YMIN_ZMIN","XMIN_YMIN_ZMAX","XMIN_YMAX_ZMIN","XMIN_YMAX_ZMAX","XMAX_YMIN_ZMIN","XMAX_YMIN_ZMAX","XMAX_YMAX_ZMIN","XMAX_YMAX_ZMAX"];for(let X=0;X{const me=this.sphereStates.find(ye=>ye.uid===`corner_${X}`),ge=this.sphereStates.find(ye=>ye.uid===`corner_${ne}`);if(me&&ge){const ye=`edge_${X}_${ne}`,{actor:Ie,source:Pe}=this._addLine3DBetweenPoints(i,me.point,ge.point,[.7,.7,.7],ye);this.edgeLines[ye]={actor:Ie,source:Pe,key1:X,key2:ne}}}),E.addClippingPlane(w),E.addClippingPlane(x),E.addClippingPlane(C),E.addClippingPlane(S),E.addClippingPlane(T),E.addClippingPlane(_),ze.addEventListener(U.VOLUMECROPPINGCONTROL_TOOL_CHANGED,X=>{this._onControlToolChange(X)}),i.render()},this._getViewportAndWorldCoords=n=>{const i=this._getViewport(),o=n.detail.currentPoints.canvas[0],a=n.detail.currentPoints.canvas[1],s=i.canvasToWorld([o,a]);return{viewport:i,world:s}},this._getViewport=()=>{const[n]=this._getViewportsInfo();return ir(n.renderingEngineId).getViewport(n.viewportId)},this._handleCornerSphereMovement=(n,i,o)=>{const a=this._calculateNewCornerPosition(i);this._updateSpherePosition(n,a);const s=this._parseCornerKey(n.uid);this._updateRelatedCorners(n,a,s),this._updateAfterCornerMovement(o)},this._handleFaceSphereMovement=(n,i,o)=>{const a={x:0,y:1,z:2}[n.axis];let s=i[a];this.faceDragOffset!==null&&(s+=this.faceDragOffset),n.point[a]=s,n.sphereSource.setCenter(...n.point),n.sphereSource.modified(),this._updateAfterFaceMovement(o)},this._calculateNewCornerPosition=n=>{let i=[n[0],n[1],n[2]];return this.cornerDragOffset&&(i=[n[0]+this.cornerDragOffset[0],n[1]+this.cornerDragOffset[1],n[2]+this.cornerDragOffset[2]]),i},this._parseCornerKey=n=>{const i=n.replace("corner_","");return{isXMin:i.includes("XMIN"),isXMax:i.includes("XMAX"),isYMin:i.includes("YMIN"),isYMax:i.includes("YMAX"),isZMin:i.includes("ZMIN"),isZMax:i.includes("ZMAX")}},this._updateSpherePosition=(n,i)=>{n.point=i,n.sphereSource.setCenter(...i),n.sphereSource.modified()},this._updateRelatedCorners=(n,i,o)=>{this.sphereStates.forEach(a=>{if(!a.isCorner||a===n)return;const s=a.uid.replace("corner_","");this._shouldUpdateCorner(s,o)&&this._updateCornerCoordinates(a,i,s,o)})},this._shouldUpdateCorner=(n,i)=>i.isXMin&&n.includes("XMIN")||i.isXMax&&n.includes("XMAX")||i.isYMin&&n.includes("YMIN")||i.isYMax&&n.includes("YMAX")||i.isZMin&&n.includes("ZMIN")||i.isZMax&&n.includes("ZMAX"),this._updateCornerCoordinates=(n,i,o,a)=>{(a.isXMin&&o.includes("XMIN")||a.isXMax&&o.includes("XMAX"))&&(n.point[0]=i[0]),(a.isYMin&&o.includes("YMIN")||a.isYMax&&o.includes("YMAX"))&&(n.point[1]=i[1]),(a.isZMin&&o.includes("ZMIN")||a.isZMax&&o.includes("ZMAX"))&&(n.point[2]=i[2]),n.sphereSource.setCenter(...n.point),n.sphereSource.modified()},this._updateAfterCornerMovement=n=>{this._updateFaceSpheresFromCorners(),this._updateCornerSpheres(),this._updateClippingPlanesFromFaceSpheres(n)},this._updateAfterFaceMovement=n=>{this._updateCornerSpheresFromFaces(),this._updateClippingPlanesFromFaceSpheres(n)},this._triggerToolChangedEvent=n=>{nt(ze,U.VOLUMECROPPING_TOOL_CHANGED,{toolCenter:n.point,axis:n.isCorner?"corner":n.axis,draggingSphereIndex:this.draggingSphereIndex,seriesInstanceUID:this.seriesInstanceUID})},this._onNewVolume=()=>{const n=this._getViewportsInfo();this.originalClippingPlanes=[],this.sphereStates=[],this.edgeLines={},this._initialize3DViewports(n)},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=Lt(new Float32Array(16));or(g,g,i),po(g,g,a,o),or(g,g,[-i[0],-i[1],-i[2]]),Gt(u,f,g),Gt(d,l,g),Lt(g),po(g,g,a,o),Gt(h,c,g),n.setCamera({position:u,viewUp:h,focalPoint:d})},this.touchDragCallback=this._dragCallback.bind(this),this.mouseDragCallback=this._dragCallback.bind(this)}onSetToolActive(){if(this.sphereStates&&this.sphereStates.length>0)this.configuration.showHandles?(this.setHandlesVisible(!1),this.setClippingPlanesVisible(!1)):(this.setHandlesVisible(!0),this.setClippingPlanesVisible(!0));else{const e=this._getViewportsInfo(),r=()=>{e.forEach(({viewportId:n,renderingEngineId:i})=>{if(!this._resizeObservers.has(n)){const{viewport:o}=Qn(n,i)||{viewport:null};if(!o)return;const{element:a}=o,s=new ResizeObserver(()=>{const c=Qn(n,i);if(!c)return;const{viewport:l}=c,f=l.getViewPresentation();l.resetCamera(),l.setViewPresentation(f),l.render()});s.observe(a),this._resizeObservers.set(n,s)}})};r(),this._viewportAddedListener=n=>{n.detail.toolGroupId===this.toolGroupId&&r()},ze.addEventListener(U.TOOLGROUP_VIEWPORT_ADDED,this._viewportAddedListener),this._unsubscribeToViewportNewVolumeSet(e),this._subscribeToViewportNewVolumeSet(e),this._initialize3DViewports(e),this.sphereStates&&this.sphereStates.length>0?this.setHandlesVisible(!0):(this.originalClippingPlanes=[],this._initialize3DViewports(e))}}onSetToolDisabled(){this._resizeObservers.forEach((r,n)=>{r.disconnect(),this._resizeObservers.delete(n)}),this._viewportAddedListener&&(ze.removeEventListener(U.TOOLGROUP_VIEWPORT_ADDED,this._viewportAddedListener),this._viewportAddedListener=null);const e=this._getViewportsInfo();this._unsubscribeToViewportNewVolumeSet(e)}setHandlesVisible(e){this.configuration.showHandles=e,e&&(this.sphereStates[Zt.XMIN].point[0]=this.originalClippingPlanes[xs.XMIN].origin[0],this.sphereStates[Zt.XMAX].point[0]=this.originalClippingPlanes[xs.XMAX].origin[0],this.sphereStates[Zt.YMIN].point[1]=this.originalClippingPlanes[xs.YMIN].origin[1],this.sphereStates[Zt.YMAX].point[1]=this.originalClippingPlanes[xs.YMAX].origin[1],this.sphereStates[Zt.ZMIN].point[2]=this.originalClippingPlanes[xs.ZMIN].origin[2],this.sphereStates[Zt.ZMAX].point[2]=this.originalClippingPlanes[xs.ZMAX].origin[2],[Zt.XMIN,Zt.XMAX,Zt.YMIN,Zt.YMAX,Zt.ZMIN,Zt.ZMAX].forEach(a=>{const s=this.sphereStates[a];s.sphereSource.setCenter(...s.point),s.sphereSource.modified()}),this._updateCornerSpheres()),this._updateHandlesVisibility();const r=this._getViewportsInfo(),[n]=r;ir(n.renderingEngineId).getViewport(n.viewportId).render()}getHandlesVisible(){return this.configuration.showHandles}getClippingPlanesVisible(){return this.configuration.showClippingPlanes}setClippingPlanesVisible(e){this.configuration.showClippingPlanes=e;const r=this._getViewport();this._updateClippingPlanes(r),r.render()}_dragCallback(e){const{element:r,currentPoints:n,lastPoints:i}=e.detail;if(this.draggingSphereIndex!==null)this._onMouseMoveSphere(e);else{const o=n.canvas,a=i.canvas,{rotateIncrementDegrees:s}=this.configuration,c=De(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,w=[g[0],0,0],x=[h[0],0,0],C=w[0]**2,S=x[0]**2,T=C>m?0:Math.sqrt(m-C),_=S>m?0:Math.sqrt(m-S),E=[w[0],0,T];Dt.normalize(E);const b=[x[0],0,_];Dt.normalize(b);const D=Dt.dot(E,b);if(Math.abs(D)>1e-4){const I=-2*Math.acos(Dt.clampValue(D,-1,1))*Math.sign(h[0]-g[0])*s,P=f.viewUp,M=f.viewPlaneNormal,L=[0,0,0],B=[0,0,0];Dt.cross(P,M,L),Dt.normalize(L),Dt.cross(M,L,B),Dt.normalize(B),Dt.normalize(P),this._rotateCamera(l,v,B,I);const j=(g[1]-h[1])*s;this._rotateCamera(l,v,L,j)}l.render()}}_updateClippingPlanes(e){const r=e.getDefaultActor();if(!r||!r.actor){e._missingActorWarned||(console.warn("VolumeCroppingTool._updateClippingPlanes: No default actor found in viewport."),e._missingActorWarned=!0);return}const n=r.actor,i=n.getMapper(),o=n.getMatrix();if(!this.configuration.showClippingPlanes){i.removeAllClippingPlanes();return}const a=em();Xm(a,o);const s=em();Pg(s,a),Jw(s,s);const c=this.originalClippingPlanes;if(!c||!c.length)return;i.removeAllClippingPlanes();const l=[],f=[];for(let u=0;u{e.sphereActor&&e.sphereActor.setVisibility(this.configuration.showHandles)}),Object.values(this.edgeLines).forEach(({actor:e})=>{e&&e.setVisibility(this.configuration.showHandles)})}_addLine3DBetweenPoints(e,r,n,i=[.7,.7,.7],o=""){if(r[0]===n[0]&&r[1]===n[1]&&r[2]===n[2])return{actor:null,source:null};const a=cg.newInstance();a.setNumberOfPoints(2),a.setPoint(0,r[0],r[1],r[2]),a.setPoint(1,n[0],n[1],n[2]);const s=Gf.newInstance({values:[2,0,1]}),c=Dr.newInstance();c.setPoints(a),c.setLines(s);const l=Xo.newInstance();l.setInputData(c);const f=os.newInstance();return f.setMapper(l),f.getProperty().setColor(...i),f.getProperty().setLineWidth(.5),f.getProperty().setOpacity(1),f.getProperty().setInterpolationToFlat(),f.getProperty().setAmbient(1),f.getProperty().setDiffuse(0),f.getProperty().setSpecular(0),f.setVisibility(this.configuration.showHandles),e.addActor({actor:f,uid:o}),{actor:f,source:c}}_addSphere(e,r,n,i,o=null,a){const s=o?`corner_${o}`:`${n}_${i}`;if(this.sphereStates.find(y=>y.uid===s))return;const l=c4e.newInstance();l.setCenter(r),l.setRadius(a);const f=Xo.newInstance();f.setInputConnection(l.getOutputPort());const u=os.newInstance();u.setMapper(f);let d=[0,1,0];const h=this.configuration.sphereColors||{};o?d=h.CORNERS||[0,0,1]:n==="z"?d=h.AXIAL||[1,0,0]:n==="x"?d=h.SAGITTAL||[1,1,0]:n==="y"&&(d=h.CORONAL||[0,1,0]);const g=this.sphereStates.findIndex(y=>y.uid===s);g===-1?this.sphereStates.push({point:r.slice(),axis:n,uid:s,sphereSource:l,sphereActor:u,isCorner:!!o,color:d}):(this.sphereStates[g].point=r.slice(),this.sphereStates[g].sphereSource=l),!e.getActors().find(y=>y.uid===s)&&(u.getProperty().setColor(d),u.setVisibility(this.configuration.showHandles),e.addActor({actor:u,uid:s}))}_calculateAdaptiveSphereRadius(e){this.configuration.sphereRadius!==void 0&&this.configuration.sphereRadius;const r=this.configuration.sphereRadiusScale||.01,n=e*r,i=this.configuration.minSphereRadius||2,o=this.configuration.maxSphereRadius||50;return Math.max(i,Math.min(o,n))}_updateClippingPlanesFromFaceSpheres(e){const r=e.getDefaultActor().actor.getMapper();this.originalClippingPlanes[0].origin=[...this.sphereStates[Zt.XMIN].point],this.originalClippingPlanes[1].origin=[...this.sphereStates[Zt.XMAX].point],this.originalClippingPlanes[2].origin=[...this.sphereStates[Zt.YMIN].point],this.originalClippingPlanes[3].origin=[...this.sphereStates[Zt.YMAX].point],this.originalClippingPlanes[4].origin=[...this.sphereStates[Zt.ZMIN].point],this.originalClippingPlanes[5].origin=[...this.sphereStates[Zt.ZMAX].point],r.removeAllClippingPlanes();for(let n=0;n<6;++n){const i=this.originalClippingPlanes[n].origin,o=this.originalClippingPlanes[n].normal,a=Wr.newInstance({origin:i,normal:o});r.addClippingPlane(a)}}_updateCornerSpheresFromFaces(){const e=this.sphereStates[Zt.XMIN].point[0],r=this.sphereStates[Zt.XMAX].point[0],n=this.sphereStates[Zt.YMIN].point[1],i=this.sphereStates[Zt.YMAX].point[1],o=this.sphereStates[Zt.ZMIN].point[2],a=this.sphereStates[Zt.ZMAX].point[2],s=[{key:"XMIN_YMIN_ZMIN",pos:[e,n,o]},{key:"XMIN_YMIN_ZMAX",pos:[e,n,a]},{key:"XMIN_YMAX_ZMIN",pos:[e,i,o]},{key:"XMIN_YMAX_ZMAX",pos:[e,i,a]},{key:"XMAX_YMIN_ZMIN",pos:[r,n,o]},{key:"XMAX_YMIN_ZMAX",pos:[r,n,a]},{key:"XMAX_YMAX_ZMIN",pos:[r,i,o]},{key:"XMAX_YMAX_ZMAX",pos:[r,i,a]}];for(const c of s){const l=this.sphereStates.find(f=>f.uid===`corner_${c.key}`);l&&(l.point[0]=c.pos[0],l.point[1]=c.pos[1],l.point[2]=c.pos[2],l.sphereSource.setCenter(...l.point),l.sphereSource.modified())}}_updateFaceSpheresFromCorners(){const e=[this.sphereStates[Zt.XMIN_YMIN_ZMIN].point,this.sphereStates[Zt.XMIN_YMIN_ZMAX].point,this.sphereStates[Zt.XMIN_YMAX_ZMIN].point,this.sphereStates[Zt.XMIN_YMAX_ZMAX].point,this.sphereStates[Zt.XMAX_YMIN_ZMIN].point,this.sphereStates[Zt.XMAX_YMIN_ZMAX].point,this.sphereStates[Zt.XMAX_YMAX_ZMIN].point,this.sphereStates[Zt.XMAX_YMAX_ZMAX].point],r=e.map(u=>u[0]),n=e.map(u=>u[1]),i=e.map(u=>u[2]),o=Math.min(...r),a=Math.max(...r),s=Math.min(...n),c=Math.max(...n),l=Math.min(...i),f=Math.max(...i);this.sphereStates[Zt.XMIN].point=[o,(s+c)/2,(l+f)/2],this.sphereStates[Zt.XMAX].point=[a,(s+c)/2,(l+f)/2],this.sphereStates[Zt.YMIN].point=[(o+a)/2,s,(l+f)/2],this.sphereStates[Zt.YMAX].point=[(o+a)/2,c,(l+f)/2],this.sphereStates[Zt.ZMIN].point=[(o+a)/2,(s+c)/2,l],this.sphereStates[Zt.ZMAX].point=[(o+a)/2,(s+c)/2,f],[Zt.XMIN,Zt.XMAX,Zt.YMIN,Zt.YMAX,Zt.ZMIN,Zt.ZMAX].forEach(u=>{const d=this.sphereStates[u];d.sphereSource.setCenter(...d.point),d.sphereSource.modified()})}_updateCornerSpheres(){const e=this.sphereStates[Zt.XMIN].point[0],r=this.sphereStates[Zt.XMAX].point[0],n=this.sphereStates[Zt.YMIN].point[1],i=this.sphereStates[Zt.YMAX].point[1],o=this.sphereStates[Zt.ZMIN].point[2],a=this.sphereStates[Zt.ZMAX].point[2],s=[{key:"XMIN_YMIN_ZMIN",pos:[e,n,o]},{key:"XMIN_YMIN_ZMAX",pos:[e,n,a]},{key:"XMIN_YMAX_ZMIN",pos:[e,i,o]},{key:"XMIN_YMAX_ZMAX",pos:[e,i,a]},{key:"XMAX_YMIN_ZMIN",pos:[r,n,o]},{key:"XMAX_YMIN_ZMAX",pos:[r,n,a]},{key:"XMAX_YMAX_ZMIN",pos:[r,i,o]},{key:"XMAX_YMAX_ZMAX",pos:[r,i,a]}];for(const c of s){const l=this.sphereStates.find(f=>f.uid===`corner_${c.key}`);l&&(l.point[0]=c.pos[0],l.point[1]=c.pos[1],l.point[2]=c.pos[2],l.sphereSource.setCenter(...l.point),l.sphereSource.modified())}Object.values(this.edgeLines).forEach(({source:c,key1:l,key2:f})=>{const u=this.sphereStates.find(h=>h.uid===`corner_${l}`),d=this.sphereStates.find(h=>h.uid===`corner_${f}`);if(u&&d){const h=c.getPoints();h.setPoint(0,u.point[0],u.point[1],u.point[2]),h.setPoint(1,d.point[0],d.point[1],d.point[2]),h.modified(),c.modified()}})}_unsubscribeToViewportNewVolumeSet(e){e.forEach(({viewportId:r,renderingEngineId:n})=>{const{viewport:i}=Qn(r,n),{element:o}=i;o.removeEventListener(qe.VOLUME_VIEWPORT_NEW_VOLUME,this._onNewVolume)})}_subscribeToViewportNewVolumeSet(e){e.forEach(({viewportId:r,renderingEngineId:n})=>{const{viewport:i}=Qn(r,n),{element:o}=i;o.addEventListener(qe.VOLUME_VIEWPORT_NEW_VOLUME,this._onNewVolume)})}}tj.toolName="VolumeCropping";function l4e(){return"rgb(0, 200, 0)"}function u4e(){return!0}const F3={DRAG:1,ROTATE:2,SLAB:3};class nj extends cr{constructor(e={},r={supportedInteractionTypes:["Mouse"],configuration:{viewportIndicators:!1,viewportIndicatorsConfig:{radius:5,x:null,y:null},extendReferenceLines:!0,initialCropFactor:.2,mobile:{enabled:!1,opacity:.8},lineColors:{AXIAL:[1,0,0],CORONAL:[0,1,0],SAGITTAL:[1,1,0],UNKNOWN:[0,0,1]},lineWidth:1.5,lineWidthActive:2.5}}){var i,o,a;super(e,r),this._virtualAnnotations=[],this.sphereStates=[],this.draggingSphereIndex=null,this.toolCenter=[0,0,0],this.toolCenterMin=[0,0,0],this.toolCenterMax=[0,0,0],this.initializeViewport=({renderingEngineId:s,viewportId:c})=>{if(!s||!c){console.warn("VolumeCroppingControlTool: Missing renderingEngineId or viewportId");return}const l=Qn(c,s);if(!l)return;const{viewport:f}=l;this._updateToolCentersFromViewport(f);const{element:u}=f,{position:d,focalPoint:h,viewPlaneNormal:g}=f.getCamera();let p=this._getAnnotations(l);p=this.filterInteractableAnnotationsForElement(u,p),p!=null&&p.length&&nn(p[0].annotationUID);const v=this._getOrientationFromNormal(f.getCamera().viewPlaneNormal),y={highlighted:!1,metadata:{cameraPosition:[...d],cameraFocalPoint:[...h],toolName:this.getToolName()},data:{handles:{toolCenter:this.toolCenter,toolCenterMin:this.toolCenterMin,toolCenterMax:this.toolCenterMax},activeOperation:null,activeViewportIds:[],viewportId:c,referenceLines:[],orientation:v}};return rn(y,u),{normal:g,point:f.canvasToWorld([100,100])}},this._getViewportsInfo=()=>kr(this.toolGroupId).viewportsInfo,this.resetCroppingSpheres=()=>{const s=this._getViewportsInfo();for(const c of s){const{viewportId:l,renderingEngineId:f}=c,u=Qn(l,f),d=u.viewport;d.resetCamera({resetPan:!0,resetZoom:!0,resetToCenter:!0,resetRotation:!0,suppressEvents:!0}),d.resetSlabThickness();const{element:m}=d;let w=this._getAnnotations(u);w=this.filterInteractableAnnotationsForElement(m,w),w.length&&nn(w[0].annotationUID),d.render()}this._computeToolCenter(s)},this.computeToolCenter=()=>{this._getViewportsInfo()},this._computeToolCenter=s=>{if(!s||!s[0]){console.warn(" _computeToolCenter : No valid viewportsInfo for computeToolCenter.");return}const c=["AXIAL","CORONAL","SAGITTAL"],l=s.map(g=>{if(g.renderingEngineId){const v=ir(g.renderingEngineId).getViewport(g.viewportId);if(v&&v.getCamera){const y=this._getOrientationFromNormal(v.getCamera().viewPlaneNormal);if(y)return y}}return null}).filter(Boolean),f=c.find(g=>!l.includes(g)),u=[],d=[],h=s.filter(g=>{let p=null;if(g.renderingEngineId){const y=ir(g.renderingEngineId).getViewport(g.viewportId);y&&y.getCamera&&(p=this._getOrientationFromNormal(y.getCamera().viewPlaneNormal))}return p&&c.includes(p)});if(h.forEach(g=>{const{normal:p,point:v}=this.initializeViewport(g);u.push(p),d.push(v)}),h.length===2&&f){const g=[0,0,0];mn(g,u[0],u[1]),en(g,g);const p=[(d[0][0]+d[1][0])/2,(d[0][1]+d[1][1])/2,(d[0][2]+d[1][2])/2],y={highlighted:!1,metadata:{cameraPosition:[...p],cameraFocalPoint:[...p],toolName:this.getToolName()},data:{handles:{activeOperation:null,toolCenter:this.toolCenter,toolCenterMin:this.toolCenterMin,toolCenterMax:this.toolCenterMax},activeViewportIds:[],viewportId:f,referenceLines:[],orientation:null},isVirtual:!0,virtualNormal:g};this._virtualAnnotations=[y]}else if(h.length===1){let g=null;const p=h[0];if(p.renderingEngineId){const C=ir(p.renderingEngineId).getViewport(p.viewportId);C&&C.getCamera&&(g=this._getOrientationFromNormal(C.getCamera().viewPlaneNormal))}const v=d[0],y={AXIAL:[0,0,1],CORONAL:[0,1,0],SAGITTAL:[1,0,0]},w=c.filter(x=>x!==g).map(x=>{const C=y[x];return{highlighted:!1,metadata:{cameraPosition:[...v],cameraFocalPoint:[...v],toolName:this.getToolName()},data:{handles:{activeOperation:null,toolCenter:this.toolCenter,toolCenterMin:this.toolCenterMin,toolCenterMax:this.toolCenterMax},activeViewportIds:[],viewportId:x,referenceLines:[],orientation:x},isVirtual:!0,virtualNormal:C}});this._virtualAnnotations=w}s&&s.length&&ke(s.map(({viewportId:g})=>g))},this.cancel=()=>{console.log("Not implemented yet")},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),At(u),s.preventDefault()},this.onResetCamera=s=>{this.resetCroppingSpheres()},this.mouseMoveCallback=(s,c)=>{if(!c)return;const{element:l,currentPoints:f}=s.detail,u=f.canvas;let d=!1;for(let h=0;h0&&[...p.activeViewportIds],p.activeViewportIds=[];let y=!1;y=this._pointNearTool(l,g,u,6),(y&&!v||!y&&v)&&(g.highlighted=!v,d=!0)}return d},this.filterInteractableAnnotationsForElement=(s,c)=>{if(!c||!c.length)return[];const l=De(s);let f=null;return l.viewport&&l.viewport.getCamera&&(f=this._getOrientationFromNormal(l.viewport.getCamera().viewPlaneNormal)),c.filter(d=>!!(d.isVirtual||d.data.orientation&&f&&d.data.orientation===f))},this.renderAnnotation=(s,c)=>{function l(L,B,j,V){const F=B[0]-L[0],G=B[1]-L[1],X=V[0]-j[0],ne=V[1]-j[1],ue=-X*G+F*ne;if(Math.abs(ue)<1e-8)return null;const me=(-G*(L[0]-j[0])+F*(L[1]-j[1]))/ue,ge=(X*(L[1]-j[1])-ne*(L[0]-j[0]))/ue;return me>=0&&me<=1&&ge>=0&&ge<=1?[L[0]+ge*F,L[1]+ge*G]:null}const f=this._getViewportsInfo();if(!f||f.length===0)return!1;let u=!1;const{viewport:d,renderingEngine:h}=s,{element:g}=d;let p=this._getAnnotations(s);this._virtualAnnotations&&this._virtualAnnotations.length&&(p=p.concat(this._virtualAnnotations));const v=d.getCamera(),m=this.filterInteractableAnnotationsForElement(g,p)[0];if(!m||!m.data)return u;const w=m.annotationUID,{clientWidth:x,clientHeight:C}=d.canvas,S=Math.sqrt(x*x+C*C),T=m.data,_=p,E=d.worldToCanvas(this.toolCenterMin),b=d.worldToCanvas(this.toolCenterMax),D=[],I=[0,0,x,C];_.forEach(L=>{const B=L.data,j="isVirtual"in L&&L.isVirtual===!0;B.handles.toolCenter=this.toolCenter;let V,F,G,X,ne,ue,me;if(j){const Ge=f.filter($e=>$e.viewportId!==B.viewportId);if(Ge.length===2){const $e=h.getViewport(Ge[0].viewportId),le=h.getViewport(Ge[1].viewportId),de=$e.getCamera().viewPlaneNormal,be=le.getCamera().viewPlaneNormal,pe=Ve();mn(pe,de,be),en(pe,pe),F={viewPlaneNormal:pe,position:B.handles.toolCenter,focalPoint:B.handles.toolCenter,viewUp:[0,1,0]},G=d.canvas.clientWidth,X=d.canvas.clientHeight,ne=Math.sqrt(G*G+X*X),ue=[G*.5,X*.5],me=B.handles.toolCenter,V={id:B.viewportId,canvas:d.canvas,canvasToWorld:()=>B.handles.toolCenter}}else F={viewPlaneNormal:L.virtualNormal??[0,0,1],position:B.handles.toolCenter,focalPoint:B.handles.toolCenter,viewUp:[0,1,0]},G=d.canvas.clientWidth,X=d.canvas.clientHeight,ne=Math.sqrt(G*G+X*X),ue=[G*.5,X*.5],me=B.handles.toolCenter,V={id:B.viewportId,canvas:d.canvas,canvasToWorld:()=>B.handles.toolCenter}}else V=h.getViewport(B.viewportId),F=V.getCamera(),G=V.canvas.clientWidth,X=V.canvas.clientHeight,ne=Math.sqrt(G*G+X*X),ue=[G*.5,X*.5],me=V.canvasToWorld(ue);const ge=this._getReferenceLineControllable(V.id),ye=[0,0,0];Dt.cross(v.viewPlaneNormal,F.viewPlaneNormal,ye),Dt.normalize(ye),Dt.multiplyScalar(ye,ne);const Ie=[0,0,0];Dt.add(me,ye,Ie);const Pe=[0,0,0];Dt.subtract(me,ye,Pe);const Ee=d.worldToCanvas(Ie),H=d.worldToCanvas([me[0]??0,me[1]??0,me[2]??0]),O=bt();Wn(O,Ee,H),ml(O,O);const Y=bt();hl(Y,O,S*100);const K=mf(ge?E:H),Z=bt(),ae=bt();Zi(Z,K,Y),Wn(ae,K,Y),Fd(Z,ae,I),D.push([V,Z,ae,"min"]);const oe=mf(ge?b:H),_e=bt(),Oe=bt();Zi(_e,oe,Y),Wn(Oe,oe,Y),Fd(_e,Oe,I),D.push([V,_e,Oe,"max"])}),T.referenceLines=D;const P=this._getReferenceLineColor(d.id),M=P!==void 0?P:"rgb(200, 200, 200)";if(D.forEach((L,B)=>{const j=[];for(let Pe=0;PeEe.data.viewportId===V.id);if(Pe&&Pe.data.orientation)F=String(Pe.data.orientation).toUpperCase();else{const Ee=V.id.toUpperCase();Ee.includes("AXIAL")?F="AXIAL":Ee.includes("CORONAL")?F="CORONAL":Ee.includes("SAGITTAL")&&(F="SAGITTAL")}}const G=this.configuration.lineColors||{},X=G[F]||G.unknown||[1,0,0],ne=Array.isArray(X)?`rgb(${X.map(Pe=>Math.round(Pe*255)).join(",")})`:X,ue=this._getReferenceLineControllable(V.id),me=T.activeViewportIds.find(Pe=>Pe===V.id);let ge=this.configuration.lineWidth??1.5;T.handles.activeOperation!==null&&T.handles.activeOperation===F3.DRAG&&me&&(ge=this.configuration.activeLineWidth??2.5);const Ie=`${B}`;if(ue&&(j.length===2&&fn(c,w,Ie,j[0].point,j[1].point,{color:ne,lineWidth:ge}),this.configuration.extendReferenceLines&&j.length===2&&this.configuration.extendReferenceLines&&j.length===2)){const Pe=j.map(Ee=>({...Ee,distance:dr(L[1],Ee.point)})).sort((Ee,H)=>Ee.distance-H.distance);fn(c,w,Ie+"_dashed_before",L[1],Pe[0].point,{color:ne,lineWidth:ge,lineDash:[4,4]}),fn(c,w,Ie+"_dashed_after",Pe[1].point,L[2],{color:ne,lineWidth:ge,lineDash:[4,4]})}}),u=!0,this.configuration.viewportIndicators){const{viewportIndicatorsConfig:L}=this.configuration,B=(L==null?void 0:L.xOffset)||.95,j=(L==null?void 0:L.yOffset)||.05,V=[x*B,C*j],F=(L==null?void 0:L.circleRadius)||S*.01;Zo(c,w,"0",V,F,{color:M,fill:M})}return u},this._getAnnotations=s=>{const{viewport:c}=s,l=ln(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._onSphereMoved=s=>{if(s.detail.originalClippingPlanes)this._syncWithVolumeCroppingTool(s.detail.originalClippingPlanes);else{if(s.detail.seriesInstanceUID!==this.seriesInstanceUID)return;const{draggingSphereIndex:c,toolCenter:l}=s.detail,f=[...this.toolCenterMin],u=[...this.toolCenterMax];if(c>=0&&c<=5){const d=Math.floor(c/2),h=c%2===0;(h?f:u)[d]=l[d],this.setToolCenter(f,"min"),this.setToolCenter(u,"max");return}if(c>=6&&c<=13){const d=c;d<10?f[0]=l[0]:u[0]=l[0],[6,7,10,11].includes(d)?f[1]=l[1]:u[1]=l[1],d%2===0?f[2]=l[2]:u[2]=l[2],this.setToolCenter(f,"min"),this.setToolCenter(u,"max")}}},this._onNewVolume=()=>{const s=this._getViewportsInfo();if(s&&s.length>0){const{viewportId:c,renderingEngineId:l}=s[0],u=ir(l).getViewport(c),d=u.getActors();if(d.length>0){const h=d[0].actor.getMapper().getInputData();h&&(this.seriesInstanceUID=h.seriesInstanceUID,this._updateToolCentersFromViewport(u),(ln(this.getToolName(),c)||[]).forEach(p=>{p.data&&p.data.handles&&(p.data.handles.toolCenter=[...this.toolCenter])}))}}this._computeToolCenter(s),nt(ze,U.VOLUMECROPPINGCONTROL_TOOL_CHANGED,{toolGroupId:this.toolGroupId,viewportsInfo:s,seriesInstanceUID:this.seriesInstanceUID})},this._getAnnotationsForViewportsWithDifferentCameras=(s,c)=>{const{viewportId:l,renderingEngine:f,viewport:u}=s,d=c.filter(y=>y.data.viewportId!==l);if(!d||!d.length)return[];const h=u.getCamera(),{viewPlaneNormal:g,position:p}=h;return d.filter(y=>{const{viewportId:m}=y.data,x=f.getViewport(m).getCamera();return!(Vt(x.viewPlaneNormal,g,.01)&&Vt(x.position,p,1))})},this._filterViewportWithSameOrientation=(s,c,l)=>{const{renderingEngine:f}=s,{data:u}=c,d=f.getViewport(u.viewportId),h=l.filter(y=>{const{data:m}=y,w=f.getViewport(m.viewportId);return this._getReferenceLineControllable(w.id)===!0});if(!h||!h.length)return[];const g=d.getCamera(),p=g.viewPlaneNormal;return Dt.normalize(p),h.filter(y=>{const{viewportId:m}=y.data,x=f.getViewport(m).getCamera(),C=x.viewPlaneNormal;return Dt.normalize(C),Vt(p,C,.01)&&Vt(g.viewUp,x.viewUp,.01)})},this._activateModify=s=>{var c;je.isInteractingWithTool=!((c=this.configuration.mobile)!=null&&c.enabled),s.addEventListener(U.MOUSE_UP,this._endCallback),s.addEventListener(U.MOUSE_DRAG,this._dragCallback),s.addEventListener(U.MOUSE_CLICK,this._endCallback),s.addEventListener(U.TOUCH_END,this._endCallback),s.addEventListener(U.TOUCH_DRAG,this._dragCallback),s.addEventListener(U.TOUCH_TAP,this._endCallback)},this._deactivateModify=s=>{je.isInteractingWithTool=!1,s.removeEventListener(U.MOUSE_UP,this._endCallback),s.removeEventListener(U.MOUSE_DRAG,this._dragCallback),s.removeEventListener(U.MOUSE_CLICK,this._endCallback),s.removeEventListener(U.TOUCH_END,this._endCallback),s.removeEventListener(U.TOUCH_DRAG,this._dragCallback),s.removeEventListener(U.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),Yt(l),this.editData=null;const u=St(l,this.getToolName(),!1);ke(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=De(f),{viewport:d}=u;if(d.type===Jn.VOLUME_3D)return;const h=this._getAnnotations(u),p=this.filterInteractableAnnotationsForElement(f,h)[0];if(!p)return;const{handles:v}=p.data;if(v.activeOperation===F3.DRAG){v.activeType==="min"?(this.toolCenterMin[0]+=l[0],this.toolCenterMin[1]+=l[1],this.toolCenterMin[2]+=l[2]):v.activeType==="max"?(this.toolCenterMax[0]+=l[0],this.toolCenterMax[1]+=l[1],this.toolCenterMax[2]+=l[2]):(this.toolCenter[0]+=l[0],this.toolCenter[1]+=l[1],this.toolCenter[2]+=l[2]);const y=this._getViewportsInfo();ke(y.map(({viewportId:m})=>m)),nt(ze,U.VOLUMECROPPINGCONTROL_TOOL_CHANGED,{toolGroupId:this.toolGroupId,toolCenter:this.toolCenter,toolCenterMin:this.toolCenterMin,toolCenterMax:this.toolCenterMax,handleType:v.activeType,viewportOrientation:[],seriesInstanceUID:this.seriesInstanceUID})}},this._getReferenceLineColor=((i=e.configuration)==null?void 0:i.getReferenceLineColor)||l4e,this._getReferenceLineControllable=((o=e.configuration)==null?void 0:o.getReferenceLineControllable)||u4e;const n=(a=kr(this.toolGroupId))==null?void 0:a.viewportsInfo;if(ze.addEventListener(U.VOLUMECROPPING_TOOL_CHANGED,this._onSphereMoved),n&&n.length>0){const{viewportId:s,renderingEngineId:c}=n[0];Qn(s,c);const u=ir(c).getViewport(s).getActors();if(!u||!u.length){console.warn(`VolumeCroppingControlTool: No volume actors found in viewport ${s}.`);return}const d=u[0].actor.getMapper().getInputData();if(d){const h=d.getDimensions(),g=d.getSpacing(),p=d.getOrigin();this.seriesInstanceUID=d.seriesInstanceUID||"unknown";const v=this.configuration.initialCropFactor??.2;this.toolCenter=[p[0]+v*(h[0]-1)*g[0],p[1]+v*(h[1]-1)*g[1],p[2]+v*(h[2]-1)*g[2]];const y=1-v;this.toolCenterMin=[p[0]+v*(h[0]-1)*g[0],p[1]+v*(h[1]-1)*g[1],p[2]+v*(h[2]-1)*g[2]],this.toolCenterMax=[p[0]+y*(h[0]-1)*g[0],p[1]+y*(h[1]-1)*g[1],p[2]+y*(h[2]-1)*g[2]]}}}_updateToolCentersFromViewport(e){const r=e.getActors();if(!r||!r.length)return;const n=r[0].actor.getMapper().getInputData();if(!n)return;this.seriesInstanceUID=n.seriesInstanceUID||"unknown";const i=n.getDimensions(),o=n.getSpacing(),a=n.getOrigin(),s=this.configuration.initialCropFactor??.2,c=s/2,l=1-s/2;this.toolCenter=[a[0]+(c+l)/2*(i[0]-1)*o[0],a[1]+(c+l)/2*(i[1]-1)*o[1],a[2]+(c+l)/2*(i[2]-1)*o[2]],this.toolCenterMin=[a[0]+c*(i[0]-1)*o[0],a[1]+c*(i[1]-1)*o[1],a[2]+c*(i[2]-1)*o[2]],this.toolCenterMax=[a[0]+l*(i[0]-1)*o[0],a[1]+l*(i[1]-1)*o[1],a[2]+l*(i[2]-1)*o[2]]}onSetToolInactive(){console.debug(`VolumeCroppingControlTool: onSetToolInactive called for tool ${this.getToolName()}`)}onSetToolActive(){const e=this._getViewportsInfo();let r=!1;for(const n of e){const i=Qn(n.viewportId,n.renderingEngineId),o=this._getAnnotations(i);if(o&&o.length>0){r=!0;break}}if(!r)this._unsubscribeToViewportNewVolumeSet(e),this._subscribeToViewportNewVolumeSet(e),this._computeToolCenter(e),nt(ze,U.VOLUMECROPPINGCONTROL_TOOL_CHANGED,{toolGroupId:this.toolGroupId,viewportsInfo:e,seriesInstanceUID:this.seriesInstanceUID});else for(const n of e){const i=Qn(n.viewportId,n.renderingEngineId);if(!i)continue;const o=this._getAnnotations(i);o&&o.length>0&&o.forEach(a=>{nn(a.annotationUID)}),i.viewport.render()}}onSetToolEnabled(){console.debug(`VolumeCroppingControlTool: onSetToolEnabled called for tool ${this.getToolName()}`),this._getViewportsInfo()}onSetToolDisabled(){console.debug(`VolumeCroppingControlTool: onSetToolDisabled called for tool ${this.getToolName()}`);const e=this._getViewportsInfo();this._unsubscribeToViewportNewVolumeSet(e),e.forEach(({renderingEngineId:r,viewportId:n})=>{const i=Qn(n,r);if(!i)return;const o=this._getAnnotations(i);o!=null&&o.length&&o.forEach(a=>{nn(a.annotationUID)})})}_getOrientationFromNormal(e){if(!e)return null;const r={AXIAL:[0,0,1],CORONAL:[0,1,0],SAGITTAL:[1,0,0]},n=.01;for(const[i,o]of Object.entries(r))if(Math.abs(e[0]-o[0])=6){this.toolCenterMin=[r[0].origin[0],r[2].origin[1],r[4].origin[2]],this.toolCenterMax=[r[1].origin[0],r[3].origin[1],r[5].origin[2]],this.toolCenter=[(this.toolCenterMin[0]+this.toolCenterMax[0])/2,(this.toolCenterMin[1]+this.toolCenterMax[1])/2,(this.toolCenterMin[2]+this.toolCenterMax[2])/2];const n=this._getViewportsInfo();n.forEach(({viewportId:i,renderingEngineId:o})=>{const a=Qn(i,o);a&&this._getAnnotations(a).forEach(c=>{if(c.data&&c.data.handles&&c.data.orientation){const l=c.data.orientation;l==="AXIAL"?(c.data.handles.toolCenterMin=[r[0].origin[0],r[2].origin[1],c.data.handles.toolCenterMin[2]],c.data.handles.toolCenterMax=[r[1].origin[0],r[3].origin[1],c.data.handles.toolCenterMax[2]]):l==="CORONAL"?(c.data.handles.toolCenterMin=[r[0].origin[0],c.data.handles.toolCenterMin[1],r[4].origin[2]],c.data.handles.toolCenterMax=[r[1].origin[0],c.data.handles.toolCenterMax[1],r[5].origin[2]]):l==="SAGITTAL"&&(c.data.handles.toolCenterMin=[c.data.handles.toolCenterMin[0],r[2].origin[1],r[4].origin[2]],c.data.handles.toolCenterMax=[c.data.handles.toolCenterMax[0],r[3].origin[1],r[5].origin[2]]),c.data.handles.toolCenter=[(c.data.handles.toolCenterMin[0]+c.data.handles.toolCenterMax[0])/2,(c.data.handles.toolCenterMin[1]+c.data.handles.toolCenterMax[1])/2,(c.data.handles.toolCenterMin[2]+c.data.handles.toolCenterMax[2])/2]}})}),this._virtualAnnotations&&this._virtualAnnotations.length>0&&this._virtualAnnotations.forEach(i=>{if(i.data&&i.data.handles&&i.data.orientation){const o=i.data.orientation.toUpperCase();o==="AXIAL"?(i.data.handles.toolCenterMin=[r[0].origin[0],r[2].origin[1],i.data.handles.toolCenterMin[2]],i.data.handles.toolCenterMax=[r[1].origin[0],r[3].origin[1],i.data.handles.toolCenterMax[2]]):o==="CORONAL"?(i.data.handles.toolCenterMin=[r[0].origin[0],i.data.handles.toolCenterMin[1],r[4].origin[2]],i.data.handles.toolCenterMax=[r[1].origin[0],i.data.handles.toolCenterMax[1],r[5].origin[2]]):o==="SAGITTAL"&&(i.data.handles.toolCenterMin=[i.data.handles.toolCenterMin[0],r[2].origin[1],r[4].origin[2]],i.data.handles.toolCenterMax=[i.data.handles.toolCenterMax[0],r[3].origin[1],r[5].origin[2]]),i.data.handles.toolCenter=[(i.data.handles.toolCenterMin[0]+i.data.handles.toolCenterMax[0])/2,(i.data.handles.toolCenterMin[1]+i.data.handles.toolCenterMax[1])/2,(i.data.handles.toolCenterMin[2]+i.data.handles.toolCenterMax[2])/2]}}),ke(n.map(({viewportId:i})=>i))}}setToolCenter(e,r){r==="min"?this.toolCenterMin=[...e]:r==="max"&&(this.toolCenterMax=[...e]);const n=this._getViewportsInfo();ke(n.map(({viewportId:i})=>i))}addNewAnnotation(e){const r=e.detail,{element:n}=r,i=De(n),{viewport:o}=i,a=this._getAnnotations(i),s=this.filterInteractableAnnotationsForElement(o.element,a);if(!s||s.length===0||!s[0])return null;const{data:c}=s[0],l=[],f=c.referenceLines||[];for(let u=0;u{const{viewport:i}=Qn(r,n),{element:o}=i;o.removeEventListener(qe.VOLUME_VIEWPORT_NEW_VOLUME,this._onNewVolume)})}_subscribeToViewportNewVolumeSet(e){e.forEach(({viewportId:r,renderingEngineId:n})=>{const{viewport:i}=Qn(r,n),{element:o}=i;o.addEventListener(qe.VOLUME_VIEWPORT_NEW_VOLUME,this._onNewVolume)})}_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=Dt.dot(n,s),l=[...s];if(Dt.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];Dt.add(a.focalPoint,l,f),Dt.add(a.position,l,u),o.setCamera({focalPoint:f,position:u}),o.render()}}_pointNearTool(e,r,n,i){const{data:o}=r,a=o.referenceLines,s=[];if(a)for(let c=0;c{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=De(r),{viewport:o}=i;let a,s,c,l,f,u,d=!1;const h=o.getProperties();if(o instanceof lr){a=o.getVolumeId(),u=tv(a),{lower:s,upper:c}=h.voiRange;const v=Ue.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===d4e&&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 lr)){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=U3;s?c=5/i:c=this._getMultiplierFromDynamicRange(o,a)||U3;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)||U3,s=r[0]*a,c=r[1]*a;let{windowWidth:l,windowCenter:f}=Rg(i,o);l+=s,f+=c,l=Math.max(l,1);const u=e.getProperties().VOILUTFunction;return Pf(l,f,u)}_getMultiplierFromDynamicRange(e,r){var o;let n;if(r){const a=Ue.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[1]-l[0],u)}else n=this._getImageDynamicRangeFromViewport(e);const i=n/f4e;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}}}wg.toolName="WindowLevel";class rj extends cr{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=De(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:{}}};rn(p,a);const v=St(a,this.getToolName());return this.editData={annotation:p,viewportIdsToRender:v},this._activateDraw(a),At(a),n.preventDefault(),ke(v),p},this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s}=this.editData;this._deactivateDraw(o),Yt(o),this.editData=null,this.isDrawing=!1,nn(a.annotationUID),ke(s),Un(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=De(o),{worldToCanvas:u,canvasToWorld:d}=f.viewport,h=l.world,{points:g}=c.handles,p=3;g[p]=[...h];const v=u(g[0]),y=u(g[3]),m=[y[0],v[1]],w=[v[0],y[1]],x=d(m),C=d(w);g[1]=x,g[2]=C,a.invalidated=!0,ke(s)},this._activateDraw=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragCallback),n.addEventListener(U.MOUSE_MOVE,this._dragCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback)},this._deactivateDraw=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_MOVE,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=ln(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:y,lineDash:m}=this.getAnnotationStyle({annotation:u,styleSpecifier:l});if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;const w=`${d}-rect`;yv(i,d,"0",p[0],p[3],{color:v,lineDash:m,lineWidth:y},w),o=!0}return o},this.applyWindowLevelRegion=(n,i)=>{const o=De(i),{viewport:a}=o,s=Bz(a),{data:c}=n,{points:l}=c.handles,f=l.map(T=>a.worldToCanvas(T)),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=G5(h,0,s.width),g=G5(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 y=Fz(s,Math.round(h),Math.round(g),p,v),m=Uz(y,s.minPixelValue,s.maxPixelValue);this.configuration.minWindowWidth===void 0&&(this.configuration.minWindowWidth=10);const w=Math.max(Math.abs(m.max-m.min),this.configuration.minWindowWidth),x=m.mean,C=a.getProperties().VOILUTFunction,S=Pf(w,x,C);a.setProperties({voiRange:S}),a.render()},this.cancel=()=>null,this.isPointNearTool=()=>null,this.toolSelectedCallback=()=>null,this.handleSelectedCallback=()=>null,this._activateModify=()=>null,this._deactivateModify=()=>null}}rj.toolName="WindowLevelRegion";class g0 extends mi{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}=Qn(n,i),{debounceIfNotLoaded:a,invert:s,loop:c}=this.configuration,l=r.canvas[1];let f;o instanceof lr&&(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);_c(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}=De(n),s=i*(o?-1:1);_c(a,{delta:s,debounceLoading:this.configuration.debounceIfNotLoaded,loop:this.configuration.loop,volumeId:a instanceof Ir?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))}}g0.toolName="StackScroll";class xg extends mi{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"]}){super(e,r),this.mouseWheelCallback=n=>{const{element:i,wheel:o}=n.detail,a=De(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=De(r),{viewport:c}=s,l=c.getCamera(),f=r.clientWidth,u=r.clientHeight,d=[f*.5,u*.5],h=c.canvasToWorld(d);let g=Hh([a,h],[h,o]);const{viewPlaneNormal:p}=l,v=Sn(Ve(),h,a),y=Sn(Ve(),h,o),m=mn(Ve(),v,y);pt(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 Ir){const o=(r+360)%360*Math.PI/180,a=Lt(new Float32Array(16));po(a,a,o,n);const s=Gt(Ve(),i,a);e.setCamera({viewUp:s})}else{const{rotation:o}=e.getViewPresentation();e.setViewPresentation({rotation:(o+r+360)%360})}e.render()}}xg.toolName="PlanarRotate";class vu extends mi{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=De(o).viewport.getCamera(),{focalPoint:f}=l;this.initialMousePosWorld=s;let u=Et(f[0]-s[0],f[1]-s[1],f[2]-s[2]);return u=en(Ve(),u),this.dirVec=u,!1},this.preTouchStartCallback=n=>{if(!this.configuration.pinchToZoom)return this.preMouseDownCallback(n)},this._dragParallelProjection=(n,i,o,a=!1)=>{var T,_,E;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 y=d,m=h;if(!this.configuration.zoomToCenter){const b=Po(d,this.initialMousePosWorld);m=bn(Ve(),h,this.dirVec,-b*p),y=bn(Ve(),d,this.dirVec,-b*p)}const w=i.getImageData();let x=[1,1,1],C=v,S=!1;if(w){x=w.spacing;const{dimensions:b}=w,D=b[0]*x[0],I=b[1]*x[1],P=f[0]/f[1],M=(T=i.options)==null?void 0:T.displayArea,L=((_=M==null?void 0:M.imageArea)==null?void 0:_[0])??1.1,B=((E=M==null?void 0:M.imageArea)==null?void 0:E[1])??1.1,j=D*L,V=I*B,F=j/V;let G;F>P?G=j/P*.5:G=V*.5;const{minZoomScale:X,maxZoomScale:ne}=this.configuration,ue=G/ne,me=G/X;vme&&(C=me,S=!0)}i.setCamera({parallelScale:C,focalPoint:S?d:y,position:S?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=Dt.distance2BetweenPoints(u,d),p=Math.sqrt(g)/f[1],v=[-h[0],-h[1],-h[2]],y=this.configuration.invert?l/p:l*p;let m=y*v[0];u[0]+=m,d[0]+=m,m=y*v[1],u[1]+=m,d[1]+=m,m=y*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)}mouseWheelCallback(e){this._zoom(e)}_pinchCallback(e){if(e.detail.currentPointsList.length>1){const{element:n,currentPoints:i}=e.detail,o=De(n),{viewport:a}=o,s=a.getCamera(),c=i.world,{focalPoint:l}=s;this.initialMousePosWorld=c;let f=Et(l[0]-c[0],l[1]-c[1],l[2]-c[2]);f=en(Ve(),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=De(r),{viewport:i}=n,o=i.getCamera();o.parallelProjection?this._dragParallelProjection(e,i,o):this._dragPerspectiveProjection(e,i,o),i.render()}_zoom(e){const{element:r,points:n}=e.detail,i=De(r),{viewport:o}=i;o.getCamera();const s=e.detail.wheel.direction,c={detail:{element:r,eventName:U.MOUSE_WHEEL,renderingEngineId:i.renderingEngineId,viewportId:o.id,camera:{},deltaPoints:{page:n.page,client:n.client,world:n.world,canvas:[0,-s*5]},startPoints:n,lastPoints:n,currentPoints:n}};o.type===Jn.STACK&&this.preMouseDownCallback(c),this._dragCallback(c)}_panCallback(e){const{element:r,deltaPoints:n}=e.detail,i=De(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()}}vu.toolName="Zoom";class ij extends mi{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{targetViewportIds:[]}}){super(e,r)}mouseClickCallback(e){const{element:r,currentPoints:n}=e.detail,i=De(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=Ib(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=Mr(g.id,a.id);return!!(d&&d===(p==null?void 0:p.id))}).forEach(g=>{g instanceof lr?g.jumpToWorld(f):console.warn("Cannot jump to specified world coordinates for a viewport that is not a VolumeViewport")})}}ij.toolName="MIPJumpToClickTool";const{RENDERING_DEFAULTS:B3}=Uu;function h4e(){return"rgb(0, 200, 0)"}function g4e(){return!0}function p4e(){return!0}function m4e(){return!0}const cc={DRAG:1,ROTATE:2,SLAB:3};class dl extends cr{constructor(e={},r={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,referenceLinesCenterGapRatio:null,filterActorUIDsToSetSlabThickness:[],slabThicknessBlendMode:Mf.MAXIMUM_INTENSITY_BLEND,mobile:{enabled:!1,opacity:.8,handleRadius:9,referenceLinesCenterGapRatio:.05}}}){var n,i,o,a;super(e,r),this.toolCenter=[0,0,0],this.initializeViewport=({renderingEngineId:s,viewportId:c})=>{const l=Qn(c,s);if(!l)return;const{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!=null&&v.length&&nn(v[0].annotationUID);const y={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 rn(y,d),{normal:p,point:u.canvasToWorld([u.canvas.clientWidth/2,u.canvas.clientHeight/2])}},this._getViewportsInfo=()=>kr(this.toolGroupId).viewportsInfo,this.resetCrosshairs=()=>{const s=this._getViewportsInfo();for(const c of s){const{viewportId:l,renderingEngineId:f}=c,u=Qn(l,f),d=u.viewport;d.resetCamera({resetPan:!0,resetZoom:!0,resetToCenter:!0,resetRotation:!0,suppressEvents:!0}),d.resetSlabThickness();const{element:m}=d;let w=this._getAnnotations(u);w=this.filterInteractableAnnotationsForElement(m,w),w.length&&nn(w[0].annotationUID),d.render()}this._computeToolCenter(s)},this.computeToolCenter=()=>{const s=this._getViewportsInfo();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=Ve();f?{normal:p,point:v}=this.initializeViewport(f):(Kr(v,d,g),Er(v,v,.5),mn(p,u,h));const y=Tl(u,d),m=Tl(h,g),w=Tl(p,v),x=gF(y,m,w);this.setToolCenter(x)},this.addNewAnnotation=s=>{const c=s.detail,{element:l}=c,{currentPoints:f}=c,u=f.world,d=De(l),{viewport:h}=d;this._jump(d,u);const g=this._getAnnotations(d),p=this.filterInteractableAnnotationsForElement(h.element,g),{data:v}=p[0],{rotationPoints:y}=v.handles,m=[];for(let w=0;w{console.log("Not implemented yet")},this.handleSelectedCallback=(s,c)=>{const l=s.detail,{element:f}=l;c.highlighted=!0,this._activateModify(f),At(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),At(u),s.preventDefault()},this.onCameraModified=s=>{var E;const c=s.detail,{element:l}=c,f=De(l),{renderingEngine:u}=f,d=f.viewport,h=this._getAnnotations(f),p=this.filterInteractableAnnotationsForElement(l,h)[0];if(!p)return;const v=d.getCamera(),y=p.metadata.cameraPosition,m=[0,0,0];Dt.subtract(v.position,y,m);const w=p.metadata.cameraFocalPoint,x=[0,0,0];Dt.subtract(v.focalPoint,w,x),p.metadata.cameraPosition=[...v.position],p.metadata.cameraFocalPoint=[...v.focalPoint];const C=this._getReferenceLineControllable(d.id),S=this._getReferenceLineDraggableRotatable(d.id);if(!Vt(v.position,y,.001)&&C&&S){let b=!1;Vt(m,x,.001)||(b=!0);const I=Math.abs(Dt.dot(m,v.viewPlaneNormal))<.01;!b&&!I&&(this.toolCenter[0]+=m[0],this.toolCenter[1]+=m[1],this.toolCenter[2]+=m[2],nt(ze,U.CROSSHAIR_TOOL_CENTER_CHANGED,{toolGroupId:this.toolGroupId,toolCenter:this.toolCenter}))}(E=this.configuration.autoPan)!=null&&E.enabled&&Mr(d.id,u.id).getViewportIds().filter(I=>I!==d.id).forEach(I=>{this._autoPanViewportIfNecessary(I,u)});const _=St(l,this.getToolName(),!1);ke(_)},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 w=this.getHandleNearImagePoint(l,g,u,6);let x=!1;w?x=!0:x=this._pointNearTool(l,g,u,6),x&&!v||!x&&v?(g.highlighted=!v,d=!0):(p.handles.activeOperation!==y||!this._areViewportIdArraysEqual(p.activeViewportIds,m))&&(d=!0)}return d},this.filterInteractableAnnotationsForElement=(s,c)=>{if(!c||!c.length)return[];const l=De(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 y=v.annotationUID,{clientWidth:m,clientHeight:w}=f.canvas,x=Math.sqrt(m*m+w*w),C=Math.min(m,w),S=v.data,T=f.worldToCanvas(this.toolCenter),_=this._filterAnnotationsByUniqueViewportOrientations(s,h),E=[],b=[0,0,m,w];_.forEach(L=>{const{data:B}=L;B.handles.toolCenter=this.toolCenter;const j=u.getViewport(B.viewportId),V=j.getCamera(),F=this._getReferenceLineControllable(j.id),G=this._getReferenceLineDraggableRotatable(j.id),X=this._getReferenceLineSlabThicknessControlsOn(j.id),{clientWidth:ne,clientHeight:ue}=j.canvas,me=Math.sqrt(ne*ne+ue*ue),ge=[ne*.5,ue*.5],ye=j.canvasToWorld(ge),Ie=[0,0,0];Dt.cross(g.viewPlaneNormal,V.viewPlaneNormal,Ie),Dt.normalize(Ie),Dt.multiplyScalar(Ie,me);const Pe=[0,0,0];Dt.add(ye,Ie,Pe);const Ee=[0,0,0];Dt.subtract(ye,Ie,Ee);const H=f.worldToCanvas(Pe),O=f.worldToCanvas(ye),Y=bt();Wn(Y,H,O),ml(Y,Y);const K=bt();hl(K,Y,x*100);const Z=bt();hl(Z,Y,C*.4);const ae=bt();hl(ae,Y,C*.2);const oe=bt(),_e=this.configuration.mobile,{referenceLinesCenterGapRatio:Oe}=_e!=null&&_e.enabled?_e:this.configuration,Ge=Oe>0?C*Oe:this.configuration.referenceLinesCenterGapRadius;hl(oe,Y,_.length===2?Ge:0);const $e=bt(),le=bt(),de=bt(),be=bt();let pe=mf(T);(!G||!F)&&(pe=mf(O)),Zi($e,pe,oe),Zi(le,pe,K),Wn(de,pe,oe),Wn(be,pe,K),Fd($e,le,b),Fd(de,be,b);const Te=bt();Wn(Te,T,Z);const Ye=bt();Zi(Ye,T,Z);let fe=mf(T);!G&&X&&(fe=mf(O));let ft=[...this.toolCenter];!G&&X&&(ft=[...ye]);const gt=[0,0,0];Dt.subtract(Pe,Ee,gt),Dt.normalize(gt);const{viewPlaneNormal:mt}=g,{matrix:Re}=no.buildFromDegree().rotate(90,mt),Je=[0,0,0];Gt(Je,gt,Re);const at=j.getSlabThickness(),tt=[...Je];Dt.multiplyScalar(tt,at);const wt=[0,0,0];Dt.add(ft,tt,wt);const Bt=f.worldToCanvas(wt),Ct=bt();Wn(Ct,fe,Bt);const Ht=bt();Wn(Ht,fe,K),Zi(Ht,Ht,Ct);const $t=bt();Zi($t,fe,K),Zi($t,$t,Ct),Fd(Ht,$t,b);const dn=bt();Zi(dn,fe,K),Wn(dn,dn,Ct);const Nn=bt();Wn(Nn,fe,K),Wn(Nn,Nn,Ct),Fd(dn,Nn,b);const Kt=bt(),qn=bt(),Cr=bt(),pr=bt();Wn(Kt,fe,ae),Zi(Kt,Kt,Ct),Zi(qn,fe,ae),Zi(qn,qn,Ct),Wn(Cr,fe,ae),Wn(Cr,Cr,Ct),Zi(pr,fe,ae),Wn(pr,pr,Ct),E.push([j,$e,le,de,be,Ht,$t,dn,Nn,Te,Ye,Kt,qn,Cr,pr])});const D=[],I=[],P=this._getReferenceLineColor(f.id),M=P!==void 0?P:"rgb(200, 200, 200)";if(E.forEach((L,B)=>{var Ie,Pe,Ee,H;const j=L[0],V=this._getReferenceLineColor(j.id),F=this._getReferenceLineControllable(j.id),G=this._getReferenceLineDraggableRotatable(j.id)||((Ie=this.configuration.mobile)==null?void 0:Ie.enabled),X=this._getReferenceLineSlabThicknessControlsOn(j.id)||((Pe=this.configuration.mobile)==null?void 0:Pe.enabled),ne=S.activeViewportIds.find(O=>O===j.id);let ue=V!==void 0?V:"rgb(200, 200, 200)",me=1;const ge=S.handles.activeOperation!==null&&S.handles.activeOperation===cc.DRAG&≠ge&&(me=2.5);let ye=`${B}`;if(F&&G?(ye=`${B}One`,fn(c,y,ye,L[1],L[2],{color:ue,lineWidth:me}),ye=`${B}Two`,fn(c,y,ye,L[3],L[4],{color:ue,lineWidth:me})):fn(c,y,ye,L[2],L[4],{color:ue,lineWidth:me}),F){ue=V!==void 0?V:"rgb(200, 200, 200)";const O=S.handles.activeOperation===cc.ROTATE,Y=[L[9],L[10]],K=[f.canvasToWorld(L[9]),j,L[1],L[2]],Z=[f.canvasToWorld(L[10]),j,L[3],L[4]];D.push(K,Z);const ae=S.handles.activeOperation===cc.SLAB,oe=[L[11],L[12],L[13],L[14]],_e=[f.canvasToWorld(L[11]),j,L[5],L[6]],Oe=[f.canvasToWorld(L[12]),j,L[5],L[6]],Ge=[f.canvasToWorld(L[13]),j,L[7],L[8]],$e=[f.canvasToWorld(L[14]),j,L[7],L[8]];I.push(_e,Oe,Ge,$e);let le=this.configuration.handleRadius*(this.configuration.enableHDPIHandles?window.devicePixelRatio:1),de=1;if((Ee=this.configuration.mobile)!=null&&Ee.enabled&&(le=this.configuration.mobile.handleRadius,de=this.configuration.mobile.opacity),(ge||(H=this.configuration.mobile)!=null&&H.enabled)&&!O&&!ae&&G&&X){let pe=`${B}One`;sr(c,y,pe,Y,{color:ue,handleRadius:le,opacity:de,type:"circle"}),pe=`${B}Two`,sr(c,y,pe,oe,{color:ue,handleRadius:le,opacity:de,type:"rect"})}else if(ge&&!O&&!ae&&G){const pe=`${B}`;sr(c,y,pe,Y,{color:ue,handleRadius:le,opacity:de,type:"circle"})}else if(ne&&!O&&!ae&&X){const pe=`${B}`;sr(c,y,pe,oe,{color:ue,handleRadius:le,opacity:de,type:"rect"})}else if(O&&G){const pe=`${B}`,Te=this.configuration.handleRadius*(this.configuration.enableHDPIHandles?window.devicePixelRatio:1);sr(c,y,pe,Y,{color:ue,handleRadius:Te,fill:ue,type:"circle"})}else if(ae&&ne&&X){const pe=this.configuration.handleRadius*(this.configuration.enableHDPIHandles?window.devicePixelRatio:1);sr(c,y,ye,oe,{color:ue,handleRadius:pe,fill:ue,type:"rect"})}j.getSlabThickness()>.5&&X&&(ye=`${B}STOne`,fn(c,y,ye,L[5],L[6],{color:ue,width:1,lineDash:[2,3]}),ye=`${B}STTwo`,fn(c,y,ye,L[7],L[8],{color:ue,width:L,lineDash:[2,3]}))}}),l=!0,S.handles.rotationPoints=D,S.handles.slabThicknessPoints=I,this.configuration.viewportIndicators){const{viewportIndicatorsConfig:L}=this.configuration,B=(L==null?void 0:L.xOffset)||.95,j=(L==null?void 0:L.yOffset)||.05,V=[m*B,w*j],F=(L==null?void 0:L.circleRadius)||x*.01;Zo(c,y,"0",V,F,{color:M,fill:M})}return l},this._getAnnotations=s=>{const{viewport:c}=s,l=ln(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(y=>y.data.viewportId!==l);if(!d||!d.length)return[];const h=u.getCamera(),{viewPlaneNormal:g,position:p}=h;return d.filter(y=>{const{viewportId:m}=y.data,x=f.getViewport(m).getCamera();return!(Vt(x.viewPlaneNormal,g,.01)&&Vt(x.position,p,1))})},this._filterViewportWithSameOrientation=(s,c,l)=>{const{renderingEngine:f}=s,{data:u}=c,d=f.getViewport(u.viewportId),h=l.filter(y=>{const{data:m}=y,w=f.getViewport(m.viewportId);return this._getReferenceLineControllable(w.id)===!0});if(!h||!h.length)return[];const g=d.getCamera(),p=g.viewPlaneNormal;return Dt.normalize(p),h.filter(y=>{const{viewportId:m}=y.data,x=f.getViewport(m).getCamera(),C=x.viewPlaneNormal;return Dt.normalize(C),Vt(p,C,.01)&&Vt(g.viewUp,x.viewUp,.01)})},this._filterAnnotationsByUniqueViewportOrientations=(s,c)=>{const{renderingEngine:l,viewport:f}=s,d=f.getCamera().viewPlaneNormal;Dt.normalize(d);const h=c.filter(y=>{const{data:m}=y,w=l.getViewport(m.viewportId),x=this._getReferenceLineControllable(w.id);return f!==w&&x===!0}),g=[];for(let y=0;y{const{data:m}=y,w=l.getViewport(m.viewportId),x=this._getReferenceLineControllable(w.id);return f!==w&&x!==!0});for(let y=0;y_===m))continue;const{viewportId:w}=m.data,C=l.getViewport(w).getCamera(),S=C.viewPlaneNormal;if(Dt.normalize(S),Vt(d,S,.01)||jp(d,S,.01))continue;let T=!1;for(let _=0;_{const l=s.getAllVolumeIds(),f=c.getAllVolumeIds();return l.length===f.length&&l.every(u=>f.includes(u))},this._jump=(s,c)=>{je.isInteractingWithTool=!0;const{viewport:l,renderingEngine:f}=s,u=this._getAnnotations(s),d=[0,0,0];Dt.subtract(c,this.toolCenter,d);const g=this._getAnnotationsForViewportsWithDifferentCameras(s,u).filter(p=>{const{data:v}=p,y=f.getViewport(v.viewportId),m=this._checkIfViewportsRenderingSameScene(l,y);return this._getReferenceLineControllable(y.id)&&this._getReferenceLineDraggableRotatable(y.id)&&m});return g.length===0?(je.isInteractingWithTool=!1,!1):(this._applyDeltaShiftToSelectedViewportCameras(f,g,d),je.isInteractingWithTool=!1,!0)},this._activateModify=s=>{var c;je.isInteractingWithTool=!((c=this.configuration.mobile)!=null&&c.enabled),s.addEventListener(U.MOUSE_UP,this._endCallback),s.addEventListener(U.MOUSE_DRAG,this._dragCallback),s.addEventListener(U.MOUSE_CLICK,this._endCallback),s.addEventListener(U.TOUCH_END,this._endCallback),s.addEventListener(U.TOUCH_DRAG,this._dragCallback),s.addEventListener(U.TOUCH_TAP,this._endCallback)},this._deactivateModify=s=>{je.isInteractingWithTool=!1,s.removeEventListener(U.MOUSE_UP,this._endCallback),s.removeEventListener(U.MOUSE_DRAG,this._dragCallback),s.removeEventListener(U.MOUSE_CLICK,this._endCallback),s.removeEventListener(U.TOUCH_END,this._endCallback),s.removeEventListener(U.TOUCH_DRAG,this._dragCallback),s.removeEventListener(U.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),Yt(l),this.editData=null;const u=St(l,this.getToolName(),!1);ke(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=De(f),{renderingEngine:d,viewport:h}=u,g=this._getAnnotations(u),v=this.filterInteractableAnnotationsForElement(f,g)[0];if(!v)return;const{handles:y}=v.data,{currentPoints:m}=s.detail,w=m.canvas;if(y.activeOperation===cc.DRAG){const C=this._getAnnotationsForViewportsWithDifferentCameras(u,g).filter(S=>{const{data:T}=S,_=d.getViewport(T.viewportId),E=this._getReferenceLineControllable(_.id),b=this._getReferenceLineDraggableRotatable(_.id);return E===!0&&b===!0&&v.data.activeViewportIds.find(D=>D===_.id)});this._applyDeltaShiftToSelectedViewportCameras(d,C,l)}else if(y.activeOperation===cc.ROTATE){const C=this._getAnnotationsForViewportsWithDifferentCameras(u,g).filter(B=>{const{data:j}=B,V=d.getViewport(j.viewportId),F=this._getReferenceLineControllable(V.id),G=this._getReferenceLineDraggableRotatable(V.id);return F===!0&&G===!0}),S=bt(),T=bt(),_=[this.toolCenter[0],this.toolCenter[1],this.toolCenter[2]],E=h.worldToCanvas(_),b=c.currentPoints.canvas,D=bt();Ps(D,b,c.deltaPoints.canvas),Ps(S,D,E),Ps(T,b,E);let I=eee(S,T);this._isClockWise(E,D,b)&&(I*=-1),I=Math.round(I*100)/100;const P=h.getCamera().viewPlaneNormal,{matrix:M}=no.buildFromRadian().translate(_[0],_[1],_[2]).rotate(I,P).translate(-_[0],-_[1],-_[2]),L=[];C.forEach(B=>{const{data:j}=B;j.handles.toolCenter=_;const V=d.getViewport(j.viewportId),F=V.getCamera(),{viewUp:G,position:X,focalPoint:ne}=F;G[0]+=X[0],G[1]+=X[1],G[2]+=X[2],Gt(ne,ne,M),Gt(X,X,M),Gt(G,G,M),G[0]-=X[0],G[1]-=X[1],G[2]-=X[2],V.setCamera({position:X,viewUp:G,focalPoint:ne}),L.push(V.id)}),d.renderViewports(L)}else if(y.activeOperation===cc.SLAB){const C=this._getAnnotationsForViewportsWithDifferentCameras(u,g).filter(_=>{const{data:E}=_,b=d.getViewport(E.viewportId),D=this._getReferenceLineControllable(b.id),I=this._getReferenceLineSlabThicknessControlsOn(b.id);return D===!0&&I===!0&&v.data.activeViewportIds.find(P=>P===b.id)});if(C.length===0)return;const S=this._filterViewportWithSameOrientation(u,C[0],g),T=[];T.push(h.id),S.forEach(_=>{const{data:E}=_,b=d.getViewport(E.viewportId),I=b.getCamera().viewPlaneNormal,P=Dt.dot(l,I),M=[...I];if(Dt.multiplyScalar(M,P),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]),B=c.lastPoints.world,j=[0,0,0],V=[this.toolCenter[0],this.toolCenter[1],this.toolCenter[2]];if(!this._getReferenceLineDraggableRotatable(b.id)){const{rotationPoints:Pe}=this.editData.annotation.data.handles,Ee=Pe.filter(H=>H[1].uid===b.id);if(Ee.length===2){const H=h.canvasToWorld(Ee[0][3]),O=h.canvasToWorld(Ee[1][3]);Dt.add(H,O,V),Dt.multiplyScalar(V,.5)}}Dt.subtract(B,V,j);const G=Dt.dot(j,I),X=[...I];Dt.multiplyScalar(X,G);const ne=[X[0],X[1],X[2]];en(ne,ne);const ue=[M[0],M[1],M[2]];en(ue,ue);let me=b.getSlabThickness();jp(ne,ue,.001)?me-=L:me+=L,me=Math.abs(me),me=Math.max(B3.MINIMUM_SLAB_THICKNESS,me),this._pointNearReferenceLine(v,w,6,b)&&(me=B3.MINIMUM_SLAB_THICKNESS),Mr(b.id,d.id).getToolInstance(this.getToolName()).setSlabThickness(b,me),T.push(b.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=Qn(n,r);if(!i)return;const o=this._getAnnotations(i);o!=null&&o.length&&o.forEach(a=>{nn(a.annotationUID)})})}setToolCenter(e,r=!1){this.toolCenter=e;const n=this._getViewportsInfo();ke(n.map(({viewportId:i})=>i)),r||nt(ze,U.CROSSHAIR_TOOL_CENTER_CHANGED,{toolGroupId:this.toolGroupId,toolCenter:this.toolCenter})}getHandleNearImagePoint(e,r,n,i){const o=De(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}=Qn(r,n),{element:o}=i;o.removeEventListener(qe.VOLUME_VIEWPORT_NEW_VOLUME,this._onNewVolume)})}_subscribeToViewportNewVolumeSet(e){e.forEach(({viewportId:r,renderingEngineId:n})=>{const{viewport:i}=Qn(r,n),{element:o}=i;o.addEventListener(qe.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===B3.MINIMUM_SLAB_THICKNESS&&(o=Mf.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=Dt.dot(n,s),l=[...s];if(Dt.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];Dt.add(a.focalPoint,l,f),Dt.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;sP===p.id))continue;const v=this._getReferenceLineControllable(p.id),y=this._getReferenceLineSlabThicknessControlsOn(p.id);if(!v||!y)continue;const m=d[g][2],w=d[g][3],x=bt();Zi(x,m,w),hl(x,x,.5);const C=bt();Wn(C,m,x),ml(C,C);const S=bt();hl(S,C,l*.05);const T=bt(),_=bt();Zi(T,x,S),Wn(_,x,S);const E={start:{x:T[0],y:T[1]},end:{x:m[0],y:m[1]}},b=Si([E.start.x,E.start.y],[E.end.x,E.end.y],[n[0],n[1]]),D={start:{x:_[0],y:_[1]},end:{x:w[0],y:w[1]}},I=Si([D.start.x,D.start.y],[D.end.x,D.end.y],[n[0],n[1]]);(b<=i||I<=i)&&(h.push(p.id),f.handles.activeOperation=null),g++}return f.activeViewportIds=[...h],this.editData={annotation:r},f.handles.activeOperation===cc.DRAG}}dl.toolName="Crosshairs";const G2="magnify-viewport";class oj extends mi{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=De(o),{viewport:c,renderingEngine:l}=s;if(!(c instanceof hr))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=St(o,this.getToolName());return this.editData={referencedImageId:f,viewportIdsToRender:u,enabledElement:s,renderingEngine:l,currentPoints:a},this._createMagnificationViewport(),this._activateDraw(o),At(o),n.preventDefault(),ke(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(),{rotation:u}=c.getViewPresentation(),{canvas:d,world:h}=s;let g;if(g=l.querySelector(".magnifyTool"),g===null){const v=document.createElement("div");v.classList.add("magnifyTool"),v.style.display="block",v.style.width=`${this.configuration.magnifyWidth}px`,v.style.height=`${this.configuration.magnifyHeight}px`,v.style.position="absolute",g=v,l.querySelector(".viewport-element").appendChild(v);const m={viewportId:G2,type:Jn.STACK,element:g};a.enableElement(m)}g.style.top=`${d[1]-this.configuration.magnifyHeight/2}px`,g.style.left=`${d[0]-this.configuration.magnifyWidth/2}px`;const p=a.getViewport(G2);p.setStack([i]).then(()=>{if(this._hasBeenRemoved)return;p.setProperties(f),p.setViewPresentation({rotation:u});const{parallelScale:v}=c.getCamera(),{focalPoint:y,position:m,viewPlaneNormal:w}=p.getCamera(),x=Math.sqrt(Math.pow(y[0]-m[0],2)+Math.pow(y[1]-m[1],2)+Math.pow(y[2]-m[2],2)),C=[h[0],h[1],h[2]],S=[C[0]+x*w[0],C[1]+x*w[1],C[2]+x*w[2]];p.setCamera({parallelScale:v*(1/this.configuration.magnifySize),focalPoint:C,position:S}),p.render()}),g.style.display="block",ke(o)},this._dragCallback=n=>{const i=n.detail,{deltaPoints:o,element:a,currentPoints:s}=i,c=o.world,l=s.canvas,f=De(a),{renderingEngine:u}=f,d=u.getViewport(G2),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]],y=[g[0]+c[0],g[1]+c[1],g[2]+c[2]];d.setCamera({focalPoint:y,position:v}),d.render()},this._dragEndCallback=n=>{const{element:i}=n.detail,o=De(i),{renderingEngine:a}=o;a.disableElement(G2);const s=i.querySelector(".viewport-element"),c=s.querySelector(".magnifyTool");s.removeChild(c),this._deactivateDraw(i),Yt(i),this._hasBeenRemoved=!0},this._activateDraw=n=>{je.isInteractingWithTool=!0,this._hasBeenRemoved=!1,n.addEventListener(U.MOUSE_UP,this._dragEndCallback),n.addEventListener(U.MOUSE_DRAG,this._dragCallback),n.addEventListener(U.MOUSE_CLICK,this._dragEndCallback),n.addEventListener(U.TOUCH_END,this._dragEndCallback),n.addEventListener(U.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._dragEndCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._dragEndCallback),n.removeEventListener(U.TOUCH_END,this._dragEndCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragCallback)}}_getReferencedImageId(e){const r=this.getTargetId(e);let n;return e instanceof hr&&(n=r.split("imageId:")[1]),n}}oj.toolName="Magnify";const v4e="advancedMagnifyTool",y4e=125,{Events:Ju}=ka,PM=t=>t.uid!==t.referencedId;var I_;(function(t){t.ShowZoomFactorsList="showZoomFactorsList"})(I_||(I_={}));const w4e="AdvancedMagnify",x4e=1-is,ED=class ED extends cr{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:Rl.Secondary,modifierKey:Qi.Shift}]}}}}){super(e,r),this.addNewAnnotation=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=De(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),y=c.getCamera(),{viewPlaneNormal:m,viewUp:w}=y,x=this.getReferencedImageId(c,f,m,w),C=Pn(),S=Pn(),T=c.getFrameOfReferenceUID(),_={annotationUID:C,highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...m],viewUp:[...w],FrameOfReferenceUID:T,referencedImageId:x},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:b=>{const D=_.data.handles.points,{canvas:I}=b.delta;for(let P=0,M=D.length;P{this.magnifyViewportManager.dispose(),uv().forEach(i=>{i.metadata.toolName===this.getToolName()&&nn(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=Lf([g,o]);return Math.abs(p-h){const o=n.detail,{element:a}=o;i.highlighted=!0;const s=St(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s},At(a),this._activateModify(a),ke(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=St(s,this.getToolName());this.editData={annotation:i,viewportIdsToRender:u,handleIndex:f},this._activateModify(s),At(s),ke(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),Yt(o),this.editData=null,this.isDrawing=!1,ke(s),c&&Un(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,ke(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;ke(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=Lf([h,p]),y=this._getCanvasHandlePoints(h,v);s[0]=y[0],s[1]=y[1],s[2]=y[2],s[3]=y[3]},this.cancel=n=>{if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateModify(n),Yt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,ke(o),a&&Un(i),this.editData=null,i.annotationUID},this._activateModify=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragModifyCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragModifyCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragModifyCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragModifyCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=ln(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=ph.getInstance()}showZoomFactorsList(e,r){const{element:n,currentPoints:i}=e.detail,o=De(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}};ED.Actions=I_;let Lm=ED;class ph{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 C4e({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===w4e&&this.destroyViewport(r.data.magnifyViewportId)},this._newStackImageCallback=e=>{const{viewportId:r,imageId:n}=e.detail,i=this._getMagnifyViewportsMapEntriesBySourceViewportId(r),{viewport:o}=Vn(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=ir(r).getViewport(n),{viewPlaneNormal:a}=o.getCamera();this._getMagnifyViewportsMapEntriesBySourceViewportId(n).forEach(({annotation:c})=>{const{viewPlaneNormal:l}=c.metadata;if(!(Math.abs(pt(l,a))>x4e))return;const{handles:u}=c.data,d=o.canvasToWorld([0,0]),h=Sn(Ve(),d,u.points[0]),g=pt(h,a),p=Er(Ve(),a,g);for(let v=0,y=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=Vn(e);this.createViewport(i,{...o,sourceEnabledElement:{...a}})})}_addEventListeners(){ze.addEventListener(U.ANNOTATION_REMOVED,this._annotationRemovedCallback)}_removeEventListeners(){ze.removeEventListener(U.ANNOTATION_REMOVED,this._annotationRemovedCallback)}_addSourceElementEventListener(e){e.addEventListener(Ju.STACK_NEW_IMAGE,this._newStackImageCallback);const r=i=>{const{viewportId:o}=i.detail;this._reset(o)};e.addEventListener(Ju.VIEWPORT_NEW_IMAGE_SET,r);const n=i=>{const{viewportId:o}=i.detail;this._reset(o)};e.addEventListener(Ju.VOLUME_VIEWPORT_NEW_VOLUME,n),e.addEventListener(Ju.VOLUME_NEW_IMAGE,this._newVolumeImageCallback),e.newStackHandler=r,e.newVolumeHandler=n}_removeSourceElementEventListener(e){e.removeEventListener(Ju.STACK_NEW_IMAGE,this._newStackImageCallback),e.removeEventListener(Ju.VOLUME_NEW_IMAGE,this._newVolumeImageCallback),e.removeEventListener(Ju.VIEWPORT_NEW_IMAGE_SET,e.newStackHandler),e.removeEventListener(Ju.VOLUME_VIEWPORT_NEW_VOLUME,e.newVolumeHandler),delete e.newStackHandler,delete e.newVolumeHandler}_initialize(){this._addEventListeners()}}class C4e{constructor({magnifyViewportId:e,sourceEnabledElement:r,radius:n=y4e,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??Pn(),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=$g(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 Fn.Active:r.setToolActive(i,a);break;case Fn.Passive:r.setToolPassive(i);break;case Fn.Enabled:r.setToolEnabled(i);break;case Fn.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(v4e),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=Mr(e.id,e.renderingEngineId),a=o.clone(i,s=>{const c=o.getToolInstance(s);return c instanceof cr&&!(c instanceof Lm)});return a.addViewport(r.id,r.renderingEngineId),n.filter(PM).forEach(s=>{Qg(this.viewportId,[{segmentationId:s.referencedId,type:Pt.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=>!PM(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(!je.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=Ko(c,a),f=s-r.padding;if(l<=f)return;const u=l-f,d=Ps(bt(),a,c);ml(d,d),hl(d,d,u);const h=Zi(bt(),this.position,d),g=o(this.position),p=o(h),v=Sn(Ve(),p,g),y={points:{currentPosition:{canvas:this.position,world:g},newPosition:{canvas:h,world:p}},delta:{canvas:d,world:v}};r.callback(y)}_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){ze.addEventListener(U.TOOL_MODE_CHANGED,this._handleToolModeChanged),e.addEventListener(U.MOUSE_MOVE,this._mouseDragCallback),e.addEventListener(U.MOUSE_DRAG,this._mouseDragCallback),this._addBrowserEventListeners(e)}_removeEventListeners(e){ze.removeEventListener(U.TOOL_MODE_CHANGED,this._handleToolModeChanged),e.addEventListener(U.MOUSE_MOVE,this._mouseDragCallback),e.addEventListener(U.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=De(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()}}Lm.toolName="AdvancedMagnify";const{EPSILON:G3}=Uu;class Jd extends td{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{sourceViewportId:"",enforceSameFrameOfReference:!0,showFullDimension:!1}}){super(e,r),this.editData=null,this._init=()=>{var h;const i=Yo()[0];if(!i)return;let o=i.getViewports();o=Ax(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=B5(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}}};rn(g,s),u=g}this.editData={sourceViewportId:a.id,renderingEngine:i,annotation:u},ke(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 G,X;const{viewport:o}=n;if(!this.editData)return!1;const{annotation:a,sourceViewportId:s}=this.editData;let c=!1;const{viewport:l}=Vn(s)||{};if(!l||l.id===o.id||!a||!((X=(G=a==null?void 0:a.data)==null?void 0:G.handles)!=null&&X.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:y}=o.getCamera(),{viewPlaneNormal:m}=l.getCamera();if(this.isParallel(v,m))return c;const w=Tl(v,p),x=[u,h,d,g],C=[u,d,h,g];let S=x,T=pn(Ve(),x[0],x[1]);T=en(Ve(),T);let _=pn(Ve(),x[2],x[0]);_=en(Ve(),_);const E=mn(Ve(),T,_);if(this.isParallel(E,v))return c;this.isPerpendicular(T,v)&&(S=C);const b=ug(S[0],S[1],w),D=ug(S[2],S[3],w),{annotationUID:I}=a;f.annotationUID=I;const P=this.getStyle("lineWidth",f,a),M=this.getStyle("lineDash",f,a),L=this.getStyle("color",f,a),B=this.getStyle("shadow",f,a);let j=[b,D].map(ne=>o.worldToCanvas(ne));if(this.configuration.showFullDimension&&(j=this.handleFullDimension(o,b,v,y,D,j)),j.length<2)return c;const V=`${I}-line`;return fn(i,I,"1",j[0],j[1],{color:L,width:P,lineDash:M,shadow:B},V),c=!0,c},this.isPerpendicular=(n,i)=>{const o=pt(n,i);return Math.abs(o)KT(l,m)),[v,y]=[r,o].map(m=>KT(l,m));a=[[d,h],[h,g],[p,g],[d,p]].map(([m,w])=>this.intersectInfiniteLines(m,w,v,y)).filter(m=>m&&this.isInBound(m,u)).map(m=>{const w=SU(l,m);return e.worldToCanvas(w)})}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,y=l-u,m=u*f-l*d;if(Math.abs(h*y-v*g)1-G3}isInBound(e,r){return e[0]>=0&&e[0]<=r[0]&&e[1]>=0&&e[1]<=r[1]}}Jd.toolName="ReferenceLines";const{EPSILON:RM}=Uu;class aj extends td{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=ut("imagePlaneModule",n[0]);if(!i){console.warn("OverlayGridTool: No imagePlaneModule found for sourceImageIds");return}const{frameOfReferenceUID:o}=i,a=kr(this.toolGroupId).viewportsInfo;if(!(a!=null&&a.length)){console.warn("OverlayGridTool: No viewports found");return}const s=ln(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}};rn(l,o)}ke(a.map(({viewportId:c})=>c))},this.calculateImageIdPointSets=n=>{const{imagePositionPatient:i,rows:o,columns:a,rowCosines:s,columnCosines:c,rowPixelSpacing:l,columnPixelSpacing:f}=ut("imagePlaneModule",n),u=[...i],d=[...i],h=[...i],g=[...i];return bn(d,i,c,a*f),bn(h,i,s,o*l),bn(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=ln(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 y=Tl(g,h),m=u.data.pointSets,w=u.data.viewportData;for(let x=0;xs.worldToCanvas(j)),L=`${d}-line`,B=`${x}`;fn(i,d,B,M[0],M[1],{color:I,width:b,lineDash:D,shadow:P},L)}return a=!0,a},this.initializeViewportData=(n,i)=>(n.set(i,{pointSetsToUse:[],lineStartsWorld:[],lineEndsWorld:[]}),n.get(i)),this.isPerpendicular=(n,i)=>{const o=pt(n,i);return Math.abs(o)1-RM}getImageIdNormal(e){const{imageOrientationPatient:r}=ut("imagePlaneModule",e),n=Et(r[0],r[1],r[2]),i=Et(r[3],r[4],r[5]);return mn(Ve(),n,i)}}aj.toolName="OverlayGrid";class sj extends td{constructor(e={},r={configuration:{opacity:.5}}){super(e,r),this._init=()=>{var s;const n=kr(this.toolGroupId).viewportsInfo;if(!(n!=null&&n.length)){console.warn(this.getToolName()+"Tool: No viewports found");return}const i=(s=ir(n[0].renderingEngineId))==null?void 0:s.getViewport(n[0].viewportId);if(!i)return;const o=i.getFrameOfReferenceUID(),a=ln(this.getToolName(),o);if(!(a!=null&&a.length)){const c=new Map;S4e(c,n);const l={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),FrameOfReferenceUID:o,referencedImageId:null},data:{actorsWorldPointsMap:c}};rn(l,o)}ke(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=ln(this.getToolName(),a);if(!(c!=null&&c.length))return s;const l=c[0],{annotationUID:f}=l,u=l.data.actorsWorldPointsMap;cj(u,o);const d=o.getActors(),h=lj(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:y,color:m}=p.get(h);for(let w=0;wo.worldToCanvas(_)),S={color:m,fillColor:m,fillOpacity:this.configuration.opacity,closePath:!0,lineWidth:2},T=g.uid+"#"+v;Tu(i,f,T,C,S),v++}}),s=!0,s}}}function S4e(t,e){e.forEach(({viewportId:r,renderingEngineId:n})=>{var o;const i=(o=ir(n))==null?void 0:o.getViewport(r);cj(t,i)})}function cj(t,e){const r=e.getActors(),n=lj(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=kz(a);if(!s)return;const c=i.actor.getProperty().getColor(),l=T4e(c);o.set(n,{worldPointsSet:s,color:l})}})}function lj(t){const{viewPlaneNormal:e}=t.getCamera(),r=t.getCurrentImageIdIndex();return`${t.id}-${x$(e)}-${r}`}function T4e(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])}sj.toolName="SegmentationIntersection";class Xa extends td{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=De(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(ln(this.getToolName(),i).length>0)return null;if(rn(h,i)===null)return;const v=St(i,this.getToolName(),!1);ke(v)},this.onCameraModified=n=>{const i=n.detail,{element:o,previousCamera:a,camera:s}=i,l=De(o).viewport;if(o!==this._elementWithCursor)return;const f=a.focalPoint,u=s.viewPlaneNormal,d=s.focalPoint,h=[0,0,0];if(Dt.subtract(d,f,h),h.reduce((v,y)=>v+y,0)===0)return;const g=Dt.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=ln(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=y.map(I=>a.worldToCanvas(I));if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;if(!ni(g))continue;const T={upper:"upper",right:"right",lower:"lower",left:"left"},[_,E]=S[0],b=c?20:7,D=c?5:7;fn(i,g,T.upper,[_,E-(b/2+D)],[_,E-b/2],{color:C,lineDash:x,lineWidth:w}),fn(i,g,T.lower,[_,E+(b/2+D)],[_,E+b/2],{color:C,lineDash:x,lineWidth:w}),fn(i,g,T.right,[_+(b/2+D),E],[_+b/2,E],{color:C,lineDash:x,lineWidth:w}),fn(i,g,T.left,[_-(b/2+D),E],[_-b/2,E],{color:C,lineDash:x,lineWidth:w}),o=!0}return o},this._disableCursorEnabled=this.configuration.disableCursor}onSetToolActive(){if(this._disableCursorEnabled=this.configuration.disableCursor,!this._disableCursorEnabled)return;const e=kr(this.toolGroupId).viewportsInfo;if(!e)return;e.map(n=>Qn(n.viewportId,n.renderingEngineId)).forEach(n=>{n&&At(n.viewport.element)})}onSetToolDisabled(){if(!this._disableCursorEnabled)return;const e=kr(this.toolGroupId).viewportsInfo;if(!e)return;e.map(n=>Qn(n.viewportId,n.renderingEngineId)).forEach(n=>{n&&Yt(n.viewport.element)})}getActiveAnnotation(e){const r=ln(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=St(e,this.getToolName(),!1);De(e)&&ke(i)}filterInteractableAnnotationsForElement(e,r){var d,h,g;if(!(r instanceof Array)||r.length===0)return[];const n=r[0],i=(d=De(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=Tl(a,s);return sm(f,l)isNaN(n)))){if(e instanceof hr){const n=O8(r,e);if(n===null)return;n!==e.getCurrentImageIdIndex()&&e.setImageIdIndex(n)}else if(e instanceof lr){const{focalPoint:n,viewPlaneNormal:i}=e.getCamera();if(!n||!i)return;const o=Tl(i,n),a=sm(o,r,!0);if(Math.abs(a)<.5)return;const s=en(Ve(),Et(...i)),c=Er(Ve(),s,a),l=Kr(Ve(),Et(...n),c);{e.setCamera({focalPoint:l});const f=e.getRenderingEngine();f&&f.renderViewport(e.id)}}}}}Xa.toolName="ReferenceCursors";const AM=[];class uj extends td{constructor(e={},r={configuration:{viewportId:"",scaleLocation:"bottom"}}){super(e,r),this.editData=null,this._init=()=>{var g,p;const i=Yo()[0];if(!i)return;const o=kr(this.toolGroupId).viewportsInfo;if(!o)return;const a=o.map(v=>Qn(v.viewportId,v.renderingEngineId));let{viewport:s}=a[0];const{FrameOfReferenceUID:c}=a[0];if(this.configuration.viewportId&&a.forEach(v=>{v.viewport.id==this.configuration.viewportId&&(s=v.viewport)}),!s)return;const{viewUp:l,viewPlaneNormal:f}=s.getCamera(),u=B5(s);let d=(g=this.editData)==null?void 0:g.annotation;const h=ln(this.getToolName(),s.element);h.length&&(d=h.filter(v=>v.data.viewportId==s.id)[0]),a.forEach(v=>{const{viewport:y}=v;if(!AM.includes(y.id)){const m={metadata:{toolName:this.getToolName(),viewPlaneNormal:[...f],viewUp:[...l],FrameOfReferenceUID:c,referencedImageId:null},data:{handles:{points:B5(y)},viewportId:y.id}};AM.push(y.id),rn(m,y.element),d=m}}),(p=this.editData)!=null&&p.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=pn(Ve(),o[0],o[1]);s=en(Ve(),s);let c=pn(Ve(),o[2],o[0]);c=en(Ve(),c);const l={bottom:[o[1],o[2]],top:[o[0],o[3]],right:[o[2],o[3]],left:[o[0],o[1]]},f=Kr(Ve(),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=[pn(Ve(),f,c.map(d=>d*u)),Kr(Ve(),f,c.map(d=>d*u))]:(i=="left"||i=="right")&&(a=[Kr(Ve(),f,s.map(d=>d*u)),pn(Ve(),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||!this.editData.viewport)return;const n=this.configuration.scaleLocation,{viewport:i}=e,a=ln(this.getToolName(),i.element).filter(ye=>ye.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=Po(h,g),y=Po(u,h),m=this.computeScaleBounds(f,.05,.05,n),w=this.computeScaleBounds(f,.05,.05,n),x=this.computeScaleSize(v,y,n),C=this.computeWorldScaleCoordinates(x,n,p).map(ye=>i.worldToCanvas(ye)),S=this.computeCanvasScaleCoordinates(f,C,w,m,n),T=this.computeEndScaleTicks(S,n),{annotationUID:_}=a;l.annotationUID=_;const E=this.getStyle("lineWidth",l,a),b=this.getStyle("lineDash",l,a),D=this.getStyle("color",l,a),I=this.getStyle("shadow",l,a),P=`${_}-scaleline`;fn(r,_,"1",S[0],S[1],{color:D,width:E,lineDash:b,shadow:I},P);const L=`${_}-left`;fn(r,_,"2",T.endTick1[0],T.endTick1[1],{color:D,width:E,lineDash:b,shadow:I},L);const j=`${_}-right`;fn(r,_,"3",T.endTick2[0],T.endTick2[1],{color:D,width:E,lineDash:b,shadow:I},j);const F={bottom:[-10,-42],top:[-12,-35],left:[-40,-20],right:[-50,-20]},G=[S[0][0]+F[n][0],S[0][1]+F[n][1]],X=this._getTextLines(x),{tickIds:ne,tickUIDs:ue,tickCoordinates:me}=this.computeInnerScaleTicks(x,n,_,T.endTick1,T.endTick2);for(let ye=0;ye=50?(r=e/10,n=" cm"):(r=e,n=" mm"),[r.toString().concat(n)]}}uj.toolName="ScaleOverlay";const fj=(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(s,a,r),o.first===void 0&&(o.first=s),o.last=s)}if(o.first!==void 0&&o.last!==void 0)for(let s=0;s0&&(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=De(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=Ko(s,h);if(g=0;l--){if(l>=s-1||l<0)continue;const f=l+1,u=Ko(n[l],n[f]);if(u>c){const d=this.directionalVector(n[l],n[f]),g=(u-e.meanDistance)/e.meanDistance*e.meanDistance*ll.CHAIN_PULL_STRENGTH_FACTOR;n[l][0]+=d[0]*g,n[l][1]+=d[1]*g,n[l][2]+=d[2]*g}}for(let l=a+1;l=s||l<=0)continue;const f=l-1,u=Ko(n[l],n[f]);if(u>c){const d=this.directionalVector(n[l],n[f]),g=(u-e.meanDistance)/e.meanDistance*e.meanDistance*ll.CHAIN_PULL_STRENGTH_FACTOR;n[l][0]+=d[0]*g,n[l][1]+=d[1]*g,n[l][2]+=d[2]*g}}}};ll.shapeName="Circle",ll.CHAIN_MAINTENANCE_ITERATIONS=3,ll.CHAIN_PULL_STRENGTH_FACTOR=.3,ll.MAX_INTER_DISTANCE_FACTOR=1.2;let y1=ll;class Cg extends mi{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{minSpacing:1,referencedToolNames:["PlanarFreehandROI","PlanarFreehandContourSegmentationTool"],toolShape:"circle",referencedToolName:"PlanarFreehandROI",updateCursorSize:"dynamic"}}){super(e,r),this.registeredShapes=new Map,this.isActive=!1,this.commonData={activeAnnotationUID:null,viewportIdsToRender:[],isEditingOpenContour:!1,canvasLocation:void 0},this.preMouseDownCallback=n=>{const i=n.detail,o=i.element;if(this.configureToolSize(n),this.selectFreehandTool(i),this.commonData.activeAnnotationUID!==null)return this.isActive=!0,At(o),this.activateModify(o),!0},this.mouseMoveCallback=n=>{this.mode===Fn.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=De(o);this.isActive=!1,this.deactivateModify(o),Yt(o);const{renderingEngineId:c,viewportId:l}=s,u=Mr(l,c).getToolInstance(a.referencedToolName),h=this.filterSculptableAnnotationsForElement(o).find(g=>g.annotationUID===this.commonData.activeAnnotationUID);u.configuration.calculateStats&&(h.invalidated=!0),cn(h,o,Qt.HandlesUpdated)},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(y1.shapeName,y1),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=De(i),{viewport:a}=o,s=this.registeredShapes.get(this.selectedShape);this.sculptData={mousePoint:e.currentPoints.world,mouseCanvasPoint:e.currentPoints.canvas,deltaWorld:e.deltaPoints.world,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=De(o),{viewport:s}=a,c=LM(e+1,r.length),l=s.worldToCanvas(r[e]),f=s.worldToCanvas(r[c]);Ko(l,f)>i&&n.push(e)}updateCursor(e){const r=e.detail,n=r.element,i=De(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;this.configuration.updateCursorSize==="dynamic"&&l.updateToolSize(f,a,c)}ke(this.commonData.viewportIdsToRender)}filterSculptableAnnotationsForElement(e){const r=this.configuration,n=De(e),{renderingEngineId:i,viewportId:o}=n,a=[],c=Mr(o,i).getToolInstance(r.referencedToolName);return r.referencedToolNames.forEach(l=>{const f=ln(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=LM(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=De(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=fj(i,a[l],s);f!==-1&&f(t+e)%e;Cg.toolName="SculptorTool";const _4e={X:[1,0,0],Y:[0,1,0],Z:[0,0,1],CUSTOM:[]};class dj extends mi{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{direction:_4e.Z,rotateIncrementDegrees:30}}){super(e,r)}mouseWheelCallback(e){const{element:r,wheel:n}=e.detail,i=De(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,y,m]=a,w=d*(s*Math.PI)/180,x=[0,0,0],C=[0,0,0],S=[0,0,0],T=Lt(new Float32Array(16));or(T,T,[h,g,p]),po(T,T,w,[v,y,m]),or(T,T,[-h,-g,-p]),Gt(x,f,T),Gt(C,u,T),Lt(T),po(T,T,w,[v,y,m]),Gt(S,l,T),o.setCamera({position:x,viewUp:S,focalPoint:C}),o.render()}}dj.toolName="VolumeRotateMouseWheel";const I1=class I1 extends cr{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,getTextCallback:E4e,changeTextCallback:b4e,preventHandleOutsideImage:!1}}){super(e,r),this.isPointNearTool=(n,i,o,a)=>{const s=De(n),{viewport:c}=s,{annotationUID:l}=i,f=i.data.handles.points[0],u=c.worldToCanvas(f);if(dr(o,u)=x&&o[0]<=x+v.width&&o[1]>=C&&o[1]<=C+v.height},this.addNewAnnotation=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=De(a),{viewport:l}=c;At(a),this.isDrawing=!0;const f=l.getCamera(),{viewPlaneNormal:u,viewUp:d}=f,h=this.getReferencedImageId(l,s,u,d),g=l.getFrameOfReferenceUID(),p={annotationUID:null,highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...u],viewUp:[...d],FrameOfReferenceUID:g,referencedImageId:h,...l.getViewReference({points:[s]})},data:{text:"",handles:{points:[[...s],[...s]]},label:""}};rn(p,a);const v=St(a,this.getToolName());return this.editData={annotation:p,newAnnotation:!0,viewportIdsToRender:v,offset:[0,0,0]},n.preventDefault(),ke(v),this.configuration.getTextCallback(y=>{if(!y){nn(p.annotationUID),ke(v),this.isDrawing=!1;return}Yt(a),p.data.text=y,Un(p),ke(v)}),this.createMemo(a,p,{newAnnotation:!0}),p},this.toolSelectedCallback=(n,i)=>{const o=n.detail,{element:a,currentPoints:s}=o;i.highlighted=!0;const c=St(a,this.getToolName());let l=[0,0,0];if(s&&s.world){const f=s.world,u=i.data.handles.points[0];l=[u[0]-f[0],u[1]-f[1],u[2]-f[2]]}this.editData={annotation:i,viewportIdsToRender:c,offset:l},this._activateModify(a),At(a),ke(c),n.preventDefault()},this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,newAnnotation:c}=this.editData;this._deactivateDraw(o),this._deactivateModify(o),Yt(o),c&&this.createMemo(o,a,{newAnnotation:c}),this.editData=null,this.isDrawing=!1,this.doneEditMemo(),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&nn(a.annotationUID),ke(s),c&&Un(a)},this._dragCallback=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,{annotation:c,viewportIdsToRender:l,offset:f}=this.editData;f?c.data.handles.points[0]=[s[0]+f[0],s[1]+f[1],s[2]+f[2]]:c.data.handles.points[0]=[...s],c.invalidated=!0,ke(l),cn(c,a,Qt.LabelChange)},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateModify(n),Yt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,ke(o),a&&Un(i),this.editData=null,i.annotationUID}},this._activateModify=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragCallback)},this._deactivateModify=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragCallback),n.removeEventListener(U.TOUCH_END,this._endCallback)},this._activateDraw=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragCallback),n.addEventListener(U.MOUSE_MOVE,this._dragCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_MOVE,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=ln(this.getToolName(),s);if(!(c!=null&&c.length))return o;c=this.filterInteractableAnnotationsForElement(s,c);const l={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id};for(let f=0;f{const o=Vn(e);if(!o)return;const{viewport:a}=o,s=a.getFrameOfReferenceUID(),{viewPlaneNormal:c,viewUp:l}=a.getCamera(),f=new I1,u=f.getReferencedImageId(a,r,c,l),d={annotationUID:(i==null?void 0:i.annotationUID)||Pn(),data:{text:n,handles:{points:[r]}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:f.getToolName(),viewPlaneNormal:c,FrameOfReferenceUID:s,referencedImageId:u,...i}};rn(d,a.element),ke([a.id])};let vw=I1;function E4e(t){return t(prompt("Enter your annotation:"))}function b4e(t,e,r){return r(prompt("Enter your annotation:"))}vw.toolName="Label";const{transformWorldToIndex:NM}=Dn,Ch=class Ch extends cr{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,getTextLines:D4e,actions:{undo:{method:"undo",bindings:[{key:"z"}]},redo:{method:"redo",bindings:[{key:"y"}]}}}}){super(e,r),this.addNewAnnotation=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=De(a),{viewport:l}=c;At(a),this.isDrawing=!0;const{viewPlaneNormal:f,viewUp:u,position:d}=l.getCamera(),h=this.getReferencedImageId(l,s,f,u),g={highlighted:!0,invalidated:!0,metadata:{...l.getViewReference({points:[s]}),toolName:this.getToolName(),referencedImageId:h,viewUp:u,cameraPosition:d},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:{}}};rn(g,a);const p=St(a,this.getToolName());return this.editData={annotation:g,viewportIdsToRender:p,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),n.preventDefault(),ke(p),g},this.isPointNearTool=(n,i,o,a)=>{const s=De(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 Si([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=St(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},this._activateModify(a),At(a),ke(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),Yt(o),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&nn(a.annotationUID),ke(s),this.doneEditMemo(),c&&Un(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,newAnnotation:f}=this.editData,{data:u}=a;if(this.createMemo(o,a,{newAnnotation:f}),l){const{deltaPoints:d}=i,h=d.world,{textBox:g}=u.handles,{worldPosition:p}=g;p[0]+=h[0],p[1]+=h[1],p[2]+=h[2],g.hasMoved=!0}else if(c===void 0){const{deltaPoints:d}=i,h=d.world;u.handles.points.forEach(p=>{p[0]+=h[0],p[1]+=h[1],p[2]+=h[2]}),a.invalidated=!0}else{const{currentPoints:d}=i,h=d.world;u.handles.points[c]=[...h],a.invalidated=!0}this.editData.hasMoved=!0,ke(s),a.invalidated&&cn(a,o,Qt.HandlesUpdated)},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),Yt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,ke(o),a&&Un(i),this.editData=null,i.annotationUID}},this._activateModify=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback)},this._activateDraw=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragCallback),n.addEventListener(U.MOUSE_MOVE,this._dragCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback)},this._deactivateDraw=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_MOVE,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=ln(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(F));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(!ni(g))continue;!ti(g)&&!this.editData&&y!==null&&(T=[S[y]]),T&&sr(i,g,"0",S,{color:m,lineDash:x,lineWidth:w});const _=`${g}-line`;if(fn(i,g,"1",S[0],S[1],{color:m,width:w,lineDash:x,shadow:C},_),o=!0,!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;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 D=this.configuration.getTextLines(p,l);if(!p.handles.textBox.hasMoved){const F=Va(S);p.handles.textBox.worldPosition=a.canvasToWorld(F)}const I=a.worldToCanvas(p.handles.textBox.worldPosition),M=Lo(i,g,"1",D,I,S,{},b),{x:L,y:B,width:j,height:V}=M;p.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([L,B]),topRight:a.canvasToWorld([L+j,B]),bottomLeft:a.canvasToWorld([L,B+V]),bottomRight:a.canvasToWorld([L+j,B+V])}}return o},this._throttledCalculateCachedStats=ea(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=St(o,this.getToolName());this.editData={annotation:r,viewportIdsToRender:l,handleIndex:c,movingTextBox:s},this._activateModify(o),At(o),ke(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 u=0;u{const i=Vn(e);if(!i)return;const{FrameOfReferenceUID:o,referencedImageId:a,viewPlaneNormal:s,instance:c,viewport:l}=Ch.hydrateBase(Ch,i,r,n),{toolInstance:f,...u}=n||{},d={annotationUID:(n==null?void 0:n.annotationUID)||Pn(),data:{handles:{points:r}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:c.getToolName(),viewPlaneNormal:s,FrameOfReferenceUID:o,referencedImageId:a,...u}};rn(d,l.element),ke([l.id])};let Hf=Ch;function D4e(t,e){const r=t.cachedStats[e],{length:n,unit:i}=r;return n==null||isNaN(n)?void 0:[`${un(n)} ${i}`]}const{transformWorldToIndex:kM}=Dn,bD=class bD extends cr{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,getTextLines:I4e}}){super(e,r),this.addNewAnnotation=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=De(a),{viewport:l,renderingEngine:f}=c;At(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:{}}};rn(p,a);const v=St(a,this.getToolName());return this.editData={annotation:p,viewportIdsToRender:v,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),n.preventDefault(),ke(v),p},this.isPointNearTool=(n,i,o,a)=>{const s=De(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 Si([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=St(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},this._activateModify(a),At(a),De(a),ke(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),Yt(o),De(o),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&nn(a.annotationUID),ke(s),c&&Un(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,De(o),ke(s)},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),Yt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,De(n),ke(o),a&&Un(i),this.editData=null,i.annotationUID}},this._activateModify=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback)},this._activateDraw=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragCallback),n.addEventListener(U.MOUSE_MOVE,this._dragCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback)},this._deactivateDraw=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_MOVE,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=ln(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));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),!ni(g))continue;if(!ti(g)&&!this.editData&&y!==null&&(T=[S[y]]),T&&sr(i,g,"0",S,{color:m,lineDash:x,lineWidth:w}),KG(i,g,"0",S[0],S[1],{color:m,width:w,lineDash:x}),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 b=this.configuration.getTextLines(p,l);if(!p.handles.textBox.hasMoved){const V=Va(S);p.handles.textBox.worldPosition=a.canvasToWorld(V)}const D=a.worldToCanvas(p.handles.textBox.worldPosition),P=Lo(i,g,"1",b,D,S,{},E),{x:M,y:L,width:B,height:j}=P;p.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([M,L]),topRight:a.canvasToWorld([M+B,L]),bottomLeft:a.canvasToWorld([M,L+j]),bottomRight:a.canvasToWorld([M+B,L+j])}}return o},this._throttledCalculateCachedStats=ea(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=St(o,this.getToolName());this.editData={annotation:r,viewportIdsToRender:l,handleIndex:c,movingTextBox:s},this._activateModify(o),At(o),De(o),ke(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 u=0;u{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=De(a),{viewport:l}=c;this.isDrawing=!0;const f=this.constructor.createAnnotationForViewport(l,{data:{handles:{points:[[...s]]}}});rn(f,a);const u=St(a,this.getToolName());return this.editData={annotation:f,newAnnotation:!0,viewportIdsToRender:u},this._activateModify(a),At(a),n.preventDefault(),ke(u),f},this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,newAnnotation:c}=this.editData,{viewportId:l,renderingEngine:f}=De(o);this.eventDispatchDetail={viewportId:l,renderingEngineId:f.id},this._deactivateModify(o),Yt(o),c&&this.createMemo(o,a,{newAnnotation:c}),this.editData=null,this.isDrawing=!1,this.doneEditMemo(),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&nn(a.annotationUID),ke(s),c&&Un(a)},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,{annotation:c,viewportIdsToRender:l,newAnnotation:f}=this.editData,{data:u}=c;this.createMemo(a,c,{newAnnotation:f}),u.handles.points[0]=[...s],c.invalidated=!0,ke(l)},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateModify(n),Yt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,ke(o),a&&Un(i),this.editData=null,i.annotationUID}},this._activateModify=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=ln(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 I=Qr(T),P=D.hasImageURI(I),M=Qr(D.getCurrentImageId());return P&&M!==I})&&delete p.cachedStats[_]}if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;if(!ni(g))continue;sr(i,g,"0",[y],{color:m,lineWidth:w,handleRadius:this.configuration.handleRadius}),o=!0;const C=this.getLinkedTextBoxStyle(u,h);if(!C.visibility)continue;const S=this.configuration.getTextLines(p,l);if(S){const T=[y[0]+this.configuration.textCanvasOffset.x,y[1]+this.configuration.textCanvasOffset.y];Lu(i,g,"0",S,[T[0],T[1]],C)}}return o}}isPointNearTool(e,r,n,i){const o=De(e),{viewport:a}=o,{data:s}=r,c=s.handles.points[0],l=a.worldToCanvas(c);return dr(n,l)D!==null);T=b?E.values:T,_=b?E.units:"raw"}else _=Wu(C,e.metadata.referencedImageId,p);f[g]={index:S,value:T,Modality:C,modalityUnit:_},e.invalidated=!0}else this.isHandleOutsideImage=!0,f[g]={index:S,Modality:C}}const d=e.invalidated;return e.invalidated=!1,d&&cn(e,c,i),f}};of.toolName="Probe",of.probeDefaults={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:O4e,handleRadius:"6",textCanvasOffset:{x:6,y:-6}}},of.hydrate=(e,r,n)=>{const i=Vn(e);if(!i)return;const{FrameOfReferenceUID:o,referencedImageId:a,viewPlaneNormal:s,viewUp:c,instance:l,viewport:f}=of.hydrateBase(of,i,r,n),{toolInstance:u,...d}=n||{},h={annotationUID:(n==null?void 0:n.annotationUID)||Pn(),data:{handles:{points:r}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:l.getToolName(),viewPlaneNormal:s,FrameOfReferenceUID:o,referencedImageId:a,...d}};rn(h,f.element),ke([f.id])};let Vu=of;function O4e(t,e){const r=t.cachedStats[e],{index:n,value:i,modalityUnit:o}=r;if(i===void 0||!n)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=De(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=St(a,this.getToolName());return this.editData={annotation:p,newAnnotation:!0,viewportIdsToRender:v},this._activateModify(a),At(a),n.preventDefault(),ke(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;sr(i,d,"0",[p],{color:v}),o=!0;const m=this.configuration.getTextLines(h,c);if(m){const w=[p[0]+6,p[1]-6];Lu(i,d,"0",m,[w[0],w[1]],this.getLinkedTextBoxStyle(f,u))}return o}}};DD.toolName="DragProbe";let O_=DD;function P4e(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}const{transformWorldToIndex:VM}=Dn,Sh=class Sh extends cr{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,storePointData:!1,centerPointRadius:0,calculateStats:!0,getTextLines:R4e,statsCalculator:Al}}){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=De(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()}};rn(v,a);const y=St(a,this.getToolName());return this.editData={annotation:v,viewportIdsToRender:y,centerWorld:s,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),At(a),n.preventDefault(),ke(y),v},this.isPointNearTool=(n,i,o,a)=>{const s=De(n),{viewport:c}=s,{data:l}=i,{points:f}=l.handles,u=f.map(_=>c.worldToCanvas(_)),[d,h,g,p]=u,v=Math.hypot(g[0]-p[0],g[1]-p[1]),y=Math.hypot(h[0]-d[0],h[1]-d[1]),m=Math.atan2(g[1]-p[1],g[0]-p[0]),w=[(g[0]+p[0])/2,(h[1]+d[1])/2],x={center:w,xRadius:(v-a)/2,yRadius:(y-a)/2,angle:m},C={center:w,xRadius:(v+a)/2,yRadius:(y+a)/2,angle:m},S=this._pointInEllipseCanvas(x,o);return!!(this._pointInEllipseCanvas(C,o)&&!S)},this.toolSelectedCallback=(n,i)=>{const o=n.detail,{element:a}=o;i.highlighted=!0;const s=St(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},At(a),this._activateModify(a),De(a),ke(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:y}=c.handles,{viewport:m}=De(s),{worldToCanvas:w,canvasToWorld:x}=m;f=y.findIndex(S=>S===o);const C=y.map(w);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=x(u)}const v=St(s,this.getToolName());this.editData={annotation:i,viewportIdsToRender:v,handleIndex:f,canvasWidth:h,canvasHeight:g,centerWorld:d,originalHandleCanvas:p,movingTextBox:l},this._activateModify(s),At(s),ke(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||(this.doneEditMemo(),a.highlighted=!1,f.handles.activeHandleIndex=null,this._deactivateModify(o),this._deactivateDraw(o),Yt(o),this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&nn(a.annotationUID),ke(s),c&&Un(a))},this._dragDrawCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{currentPoints:a}=i,s=a.canvas,c=De(o),{viewport:l}=c,{canvasToWorld:f}=l,{annotation:u,viewportIdsToRender:d,centerWorld:h,newAnnotation:g}=this.editData;this.createMemo(o,u,{newAnnotation:g});const p=l.worldToCanvas(h),{data:v}=u,y=Math.abs(s[0]-p[0]),m=Math.abs(s[1]-p[1]),w=[p[0],p[1]-m],x=[p[0],p[1]+m],C=[p[0]-y,p[1]],S=[p[0]+y,p[1]];v.handles.points=[f(w),f(x),f(C),f(S)],u.invalidated=!0,this.editData.hasMoved=!0,ke(d),cn(u,o,Qt.HandlesUpdated)},this._dragModifyCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,handleIndex:c,movingTextBox:l,newAnnotation:f}=this.editData;this.createMemo(o,a,{newAnnotation:f});const{data:u}=a;if(l){const{deltaPoints:d}=i,h=d.world,{textBox:g}=u.handles,{worldPosition:p}=g;p[0]+=h[0],p[1]+=h[1],p[2]+=h[2],g.hasMoved=!0}else if(c===void 0){const{deltaPoints:d}=i,h=d.world;u.handles.points.forEach(p=>{p[0]+=h[0],p[1]+=h[1],p[2]+=h[2]}),a.invalidated=!0}else this._dragHandle(n),a.invalidated=!0;De(o),ke(s),a.invalidated&&cn(a,o,Qt.HandlesUpdated)},this._dragHandle=n=>{const i=n.detail,{element:o}=i,{viewport:a}=De(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:y}=v.handles,{currentPoints:m}=i,w=m.canvas;if(d===0||d===1){const x=Math.abs(w[1]-p[1]),C=[p[0],p[1]-x],S=[p[0],p[1]+x];y[0]=s(C),y[1]=s(S);const T=w[0]-g[0],_=f/2+T,E=[p[0]-_,p[1]],b=[p[0]+_,p[1]];y[2]=s(E),y[3]=s(b)}else{const x=Math.abs(w[0]-p[0]),C=[p[0]-x,p[1]],S=[p[0]+x,p[1]];y[2]=s(C),y[3]=s(S);const T=w[1]-g[1],_=u/2+T,E=[p[0],p[1]-_],b=[p[0],p[1]+_];y[0]=s(E),y[1]=s(b)}},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),Yt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,ke(o),a&&Un(i),this.editData=null,i.annotationUID}},this._activateModify=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragModifyCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragModifyCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragModifyCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragModifyCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback)},this._activateDraw=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragDrawCallback),n.addEventListener(U.MOUSE_MOVE,this._dragDrawCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragDrawCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback)},this._deactivateDraw=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragDrawCallback),n.removeEventListener(U.MOUSE_MOVE,this._dragDrawCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragDrawCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=ln(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=a_(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 lr)){const{referencedImageId:ne}=h.metadata;for(const ue in p.cachedStats)ue.startsWith("imageId")&&f.getStackViewports().find(ye=>{const Ie=Qr(ne),Pe=ye.hasImageURI(Ie),Ee=Qr(ye.getCurrentImageId());return Pe&&Ee!==Ie})&&delete p.cachedStats[ue]}if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;let E;if(!ni(g))continue;!ti(g)&&!this.editData&&m!==null&&(E=[S[m]]),E&&sr(i,g,"0",E,{color:w});const b=`${g}-ellipse`,D="0";if(vb(i,g,D,S,{color:w,lineDash:C,lineWidth:x},b),_>0&&Math.min(Math.abs(T[0][0]-T[1][0])/2,Math.abs(T[0][1]-T[1][1])/2)>3*_){const ue=this._getCanvasEllipseCenter(S);Zo(i,g,`${D}-center`,ue,_,{color:w,lineDash:C,lineWidth:x})}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 P=this.configuration.getTextLines(p,l);if(!P||P.length===0)continue;let M;p.handles.textBox.hasMoved||(M=Va(T),p.handles.textBox.worldPosition=a.canvasToWorld(M));const L=a.worldToCanvas(p.handles.textBox.worldPosition),j=Lo(i,g,"1",P,L,S,{},I),{x:V,y:F,width:G,height:X}=j;p.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([V,F]),topRight:a.canvasToWorld([V+G,F]),bottomLeft:a.canvasToWorld([V,F+X]),bottomRight:a.canvasToWorld([V+G,F+X])}}return o},this._calculateCachedStats=(n,i,o)=>{var C,S,T,_;if(!this.configuration.calculateStats)return;const a=n.data,{element:s}=i,{points:c}=a.handles,l=c.map(E=>i.worldToCanvas(E)),{viewPlaneNormal:f,viewUp:u}=i.getCamera(),[d,h]=a_(l),g=i.canvasToWorld(d),p=i.canvasToWorld(h),{cachedStats:v}=a,y=Object.keys(v),m=g,w=p;for(let E=0;EDx(ye,Oe,{fast:!0}),returnPoints:this.configuration.storePointData});const _e=this.configuration.statsCalculator.getStatistics();v[b]={Modality:M.Modality,area:K,mean:(C=_e.mean)==null?void 0:C.value,max:(S=_e.max)==null?void 0:S.value,min:(T=_e.min)==null?void 0:T.value,stdDev:(_=_e.stdDev)==null?void 0:_.value,statsArray:_e.array,pointsInShape:oe,isEmptyArea:Ee,areaUnit:Y,modalityUnit:ae}}const x=n.invalidated;return n.invalidated=!1,x&&cn(n,s,Qt.StatsUpdated),v},this._isInsideVolume=(n,i,o)=>vr(n,o)&&vr(i,o),this._throttledCalculateCachedStats=ea(this._calculateCachedStats,100,{trailing:!0})}_pointInEllipseCanvas(e,r){const{xRadius:n,yRadius:i,center:o,angle:a}=e,s=QQ(bt(),r,o,-a);if(n<=0||i<=0)return!1;const c=[s[0]-o[0],s[1]-o[1]];return c[0]*c[0]/(n*n)+c[1]*c[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]}};Sh.toolName="EllipticalROI",Sh.hydrate=(e,r,n)=>{const i=Vn(e);if(!i)return;const{FrameOfReferenceUID:o,referencedImageId:a,viewPlaneNormal:s,instance:c,viewport:l}=Sh.hydrateBase(Sh,i,r,n),{toolInstance:f,...u}=n||{},d={annotationUID:(n==null?void 0:n.annotationUID)||Pn(),data:{handles:{points:r,activeHandleIndex:null},label:"",cachedStats:{}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:c.getToolName(),viewPlaneNormal:s,FrameOfReferenceUID:o,referencedImageId:a,...u}};rn(d,l.element),ke([l.id])};let p0=Sh;function R4e(t,e){const r=t.cachedStats[e],{area:n,mean:i,stdDev:o,max:a,isEmptyArea:s,areaUnit:c,modalityUnit:l,min:f}=r,u=[];if($r(n)){const d=s?"Area: Oblique not supported":`Area: ${un(n)} ${c}`;u.push(d)}return $r(i)&&u.push(`Mean: ${un(i)} ${l}`),$r(a)&&u.push(`Max: ${un(a)} ${l}`),$r(f)&&u.push(`Min: ${un(f)} ${l}`),$r(o)&&u.push(`Std Dev: ${un(o)} ${l}`),u}const{transformWorldToIndex:FM}=Dn,Th=class Th extends cr{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,storePointData:!1,centerPointRadius:0,calculateStats:!0,getTextLines:A4e,statsCalculator:Al,simplified:!0}}){super(e,r),this.isHandleOutsideImage=!1,this.addNewAnnotation=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=De(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();let p;this.configuration.simplified?p=[[...s],[...s]]:p=[[...s],[...s],[...s],[...s],[...s]];const v={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...u],viewUp:[...d],FrameOfReferenceUID:g,referencedImageId:h,...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:p,activeHandleIndex:null},cachedStats:{}}};rn(v,a);const y=St(a,this.getToolName());return this.editData={annotation:v,viewportIdsToRender:y,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),At(a),n.preventDefault(),ke(y),v},this.isPointNearTool=(n,i,o,a)=>{const s=De(n),{viewport:c}=s,{points:l}=i.data.handles,f=l.map(g=>c.worldToCanvas(g)),u=f[0],d=Lf([u,f[1]]),h=Lf([u,o]);return Math.abs(h-d){const o=n.detail,{element:a}=o;i.highlighted=!0;const s=St(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},At(a),this._activateModify(a),ke(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=St(s,this.getToolName());this.editData={annotation:i,viewportIdsToRender:u,handleIndex:f,movingTextBox:l},this._activateModify(s),At(s),ke(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||(this.doneEditMemo(),a.highlighted=!1,f.handles.activeHandleIndex=null,this._deactivateModify(o),this._deactivateDraw(o),Yt(o),this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&nn(a.annotationUID),ke(s),c&&Un(a))},this._dragDrawCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o,currentPoints:a}=i,{world:s,canvas:c}=a,l=De(o),{viewport:f}=l,{canvasToWorld:u}=f,{annotation:d,viewportIdsToRender:h,newAnnotation:g}=this.editData;this.createMemo(o,d,{newAnnotation:g});const{data:p}=d,v=p.handles.points[0],y=f.worldToCanvas(v);if(this.configuration.simplified)p.handles.points[1]=s;else{const m=dr(y,c);p.handles.points[0]=[...v],p.handles.points[1]=u([y[0],y[1]-m]),p.handles.points[2]=u([y[0],y[1]+m]),p.handles.points[3]=u([y[0]-m,y[1]]),p.handles.points[4]=u([y[0]+m,y[1]])}d.invalidated=!0,this.editData.hasMoved=!0,ke(h),cn(d,o,Qt.HandlesUpdated)},this._dragModifyCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,handleIndex:c,movingTextBox:l,newAnnotation:f}=this.editData;this.createMemo(o,a,{newAnnotation:f});const{data:u}=a;if(l){const{deltaPoints:d}=i,h=d.world,{textBox:g}=u.handles,{worldPosition:p}=g;p[0]+=h[0],p[1]+=h[1],p[2]+=h[2],g.hasMoved=!0}else if(c===void 0){const{deltaPoints:d}=i,h=d.world;u.handles.points.forEach(p=>{p[0]+=h[0],p[1]+=h[1],p[2]+=h[2]}),a.invalidated=!0}else this._dragHandle(n),a.invalidated=!0;ke(s),a.invalidated&&cn(a,o,Qt.HandlesUpdated)},this._dragHandle=n=>{const i=n.detail,{element:o}=i,a=De(o),{canvasToWorld:s,worldToCanvas:c}=a.viewport,{annotation:l,handleIndex:f}=this.editData,{data:u}=l,{points:d}=u.handles,{currentPoints:h,deltaPoints:g}=i;if(f===0){const p=g.world;d.forEach(v=>{Kr(v,v,p)})}else{const p=d[0],v=c(p),y=h.canvas,m=dr(v,y);d[1]=s([v[0],v[1]-m]),d[2]=s([v[0],v[1]+m]),d[3]=s([v[0]-m,v[1]]),d[4]=s([v[0]+m,v[1]])}l.invalidated=!0},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),Yt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData;return i.highlighted=!1,i.data.handles.activeHandleIndex=null,ke(o),a&&Un(i),this.editData=null,i.annotationUID}},this._activateModify=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragModifyCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragModifyCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragModifyCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragModifyCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback)},this._activateDraw=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragDrawCallback),n.addEventListener(U.MOUSE_MOVE,this._dragDrawCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragDrawCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback)},this._deactivateDraw=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragDrawCallback),n.removeEventListener(U.MOUSE_MOVE,this._dragDrawCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragDrawCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=ln(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)),T=S[0],_=Lf([T,S[1]]),E=Vd([T,S[1]]),{centerPointRadius:b}=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 lr)){const{referencedImageId:M}=h.metadata;for(const L in p.cachedStats)L.startsWith("imageId")&&f.getStackViewports().find(V=>{const F=Qr(M),G=V.hasImageURI(F),X=Qr(V.getCurrentImageId());return G&&X!==F})&&delete p.cachedStats[L]}if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;let D;if(!ni(g))continue;!ti(g)&&!this.editData&&m!==null&&(this.configuration.simplified?D=[S[m]]:D=S),D&&sr(i,g,"0",D,{color:w});const I=`${g}-circle`,P="0";if(Zo(i,g,P,T,_,{color:w,lineDash:C,lineWidth:x},I),b>0&&_>3*b&&Zo(i,g,`${P}-center`,T,b,{color:w,lineDash:C,lineWidth:x}),o=!0,this.configuration.calculateStats){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 B;p.handles.textBox.hasMoved||(B=Va(E),p.handles.textBox.worldPosition=a.canvasToWorld(B));const j=a.worldToCanvas(p.handles.textBox.worldPosition),F=Lo(i,g,"1",L,j,[T,S[1]],{},M),{x:G,y:X,width:ne,height:ue}=F;p.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([G,X]),topRight:a.canvasToWorld([G+ne,X]),bottomLeft:a.canvasToWorld([G,X+ue]),bottomRight:a.canvasToWorld([G+ne,X+ue])}}}return o},this._calculateCachedStats=(n,i,o,a)=>{var _,E,b,D;if(!this.configuration.calculateStats)return;const s=n.data,{element:c}=i,l=n.invalidated,{points:f}=s.handles,u=f.map(I=>i.worldToCanvas(I)),d=u[0],h=u[1],{viewPlaneNormal:g,viewUp:p}=i.getCamera(),[v,y]=Vd([d,h]),m=i.canvasToWorld(v),w=i.canvasToWorld(y),{cachedStats:x}=s,C=Object.keys(x),S=m,T=w;for(let I=0;IDx(Y,Ye,{fast:!0}),boundsIJK:Ie,imageData:B,returnPoints:this.configuration.storePointData}));const Te=this.configuration.statsCalculator.getStatistics();x[P]={Modality:j.Modality,area:le,mean:(_=Te.mean)==null?void 0:_.value,max:(E=Te.max)==null?void 0:E.value,min:(b=Te.min)==null?void 0:b.value,pointsInShape:pe,stdDev:(D=Te.stdDev)==null?void 0:D.value,statsArray:Te.array,isEmptyArea:ae,areaUnit:Ge,radius:K/2/_e,radiusUnit:Oe,perimeter:2*Math.PI*(K/2)/_e,modalityUnit:be}}else this.isHandleOutsideImage=!0,x[P]={Modality:j.Modality}}return n.invalidated=!1,l&&cn(n,c,Qt.StatsUpdated),x},this._isInsideVolume=(n,i,o)=>vr(n,o)&&vr(i,o),this._throttledCalculateCachedStats=ea(this._calculateCachedStats,100,{trailing:!0})}};Th.toolName="CircleROI",Th.hydrate=(e,r,n)=>{const i=Vn(e);if(!i)return;const{FrameOfReferenceUID:o,referencedImageId:a,viewPlaneNormal:s,instance:c,viewport:l}=Th.hydrateBase(Th,i,r,n),{toolInstance:f,...u}=n||{},d={annotationUID:(n==null?void 0:n.annotationUID)||Pn(),data:{handles:{points:r,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:c.getToolName(),viewPlaneNormal:s,FrameOfReferenceUID:o,referencedImageId:a,...u}};rn(d,l.element),ke([l.id])};let yw=Th;function A4e(t,e){const r=t.cachedStats[e],{radius:n,radiusUnit:i,area:o,mean:a,stdDev:s,max:c,min:l,isEmptyArea:f,areaUnit:u,modalityUnit:d}=r,h=[];if($r(n)){const g=f?"Radius: Oblique not supported":`Radius: ${un(n)} ${i}`;h.push(g)}if($r(o)){const g=f?"Area: Oblique not supported":`Area: ${un(o)} ${u}`;h.push(g)}return $r(a)&&h.push(`Mean: ${un(a)} ${d}`),$r(c)&&h.push(`Max: ${un(c)} ${d}`),$r(l)&&h.push(`Min: ${un(l)} ${d}`),$r(s)&&h.push(`Std Dev: ${un(s)} ${d}`),h}const W2=5,ID=class ID extends cr{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=De(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]]}}};rn(v,a);const y=St(a,this.getToolName());return this.editData={annotation:v,viewportIdsToRender:y,newAnnotation:!0},this._activateDraw(a),At(a),n.preventDefault(),ke(y),v},this.isPointNearTool=(n,i,o,a)=>{const s=De(n),{viewport:c}=s,{data:l}=i,{points:f}=l.handles,u=c.worldToCanvas(f[0]),d=Lf([u,o]);return Math.abs(d){const o=n.detail,{element:a}=o;i.highlighted=!0;const s=St(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s},At(a),this._activateModify(a),De(a),ke(s),n.preventDefault()},this.handleSelectedCallback=(n,i)=>{const o=n.detail,{element:a}=o;i.highlighted=!0;const s=St(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s},this._activateModify(a),At(a),De(a),ke(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),Yt(o),De(o),this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&nn(a.annotationUID),ke(s),c&&Un(a))},this._dragDrawCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{currentPoints:a}=i,s=a.canvas,c=De(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,ke(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,De(o),ke(s)},this._dragHandle=n=>{const i=n.detail,{element:o}=i,a=De(o),{canvasToWorld:s,worldToCanvas:c}=a.viewport,{annotation:l}=this.editData,{data:f}=l,{points:u}=f.handles,d=u.map(w=>c(w)),{currentPoints:h}=i,g=h.canvas,p=g[0]-d[0][0],v=g[1]-d[0][1],y=g,m=[d[1][0]+p,d[1][1]+v];u[0]=s(y),u[1]=s(m)},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),Yt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,De(n),ke(o),a&&Un(i),this.editData=null,i.annotationUID}},this._activateModify=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragModifyCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragModifyCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragModifyCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragModifyCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback)},this._activateDraw=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragDrawCallback),n.addEventListener(U.MOUSE_MOVE,this._dragDrawCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragDrawCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback)},this._deactivateDraw=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragDrawCallback),n.removeEventListener(U.MOUSE_MOVE,this._dragDrawCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragDrawCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=ln(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(D))[0];if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;if(!ni(d))continue;let C=`${d}-crosshair-vertical`,S=[x[0],x[1]+W2],T=[x[0],x[1]-W2];fn(i,d,C,S,T,{color:v,lineDash:m,lineWidth:y}),C=`${d}-crosshair-horizontal`,S=[x[0]+W2,x[1]],T=[x[0]-W2,x[1]],fn(i,d,C,S,T,{color:v,lineDash:m,lineWidth:y});const _=this.configuration.diameters.map(D=>this.worldMeasureToCanvas(D,a));for(let D=0;D<_.length;D++){const I=`${d}-circle-${D}`,P=`${d}-circle-${D}`;Zo(i,d,P,x,_[D]/2,{color:v,lineDash:m,lineWidth:y},I)}const E=D=>D*Math.PI/180,b=this.configuration.degrees.map(D=>E(D));for(let D=0;D{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=St(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},this._activateModify(a),ke(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=St(s,this.getToolName());this.editData={annotation:i,viewportIdsToRender:u,handleIndex:f,movingTextBox:l},this._activateModify(s),ke(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),Yt(o);const u=De(o),d=this.getTargetImageData(this.getTargetId(u.viewport)),{imageData:h,dimensions:g}=d;this.isHandleOutsideImage=f.handles.points.map(v=>Zr(h,v)).some(v=>!vr(v,g)),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&nn(a.annotationUID);const p=c?Qt.Completed:Qt.HandlesUpdated;this.fireChangeOnUpdate?(this.fireChangeOnUpdate.annotationUID=a.annotationUID,this.fireChangeOnUpdate.changeType=p):this.fireChangeOnUpdate={annotationUID:a.annotationUID,changeType:p,contourHoleProcessingEnabled:l},ke(s),this.doneEditMemo(),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===UM){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;De(o);const a=St(o,this.getToolName());this.editData.lastCanvasPoint=n.detail.currentPoints.canvas,ke(a),n.preventDefault()},this._mouseDownCallback=n=>{const i=n.type===U.MOUSE_DOUBLE_CLICK,{annotation:o,viewportIdsToRender:a}=this.editData,{data:s}=o;if(s.contour.closed)return;this.doneEditMemo();const c=n.detail,{currentPoints:l,element:f}=c,{canvas:u,world:d}=l;let h=s.handles.points.length>=2&&i,g=!0;if(s.handles.points.length&&this.createMemo(f,o,{newAnnotation:s.handles.points.length===1}),s.handles.points.length>=3){this.createMemo(f,o);const{instance:p}=s.spline,v=p.getClosestControlPointWithinDistance(u,BM);(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,ke(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,newAnnotation:f}=this.editData,{data:u}=a;if(this.createMemo(o,a,{newAnnotation:f}),l){const{deltaPoints:d}=i,h=d.world,{textBox:g}=u.handles,{worldPosition:p}=g;p[0]+=h[0],p[1]+=h[1],p[2]+=h[2],g.hasMoved=!0}else if(c===void 0){const{deltaPoints:d}=i,h=d.world;this.moveAnnotation(a,h)}else{const{currentPoints:d}=i,h=d.world;u.handles.points[c]=[...h],a.invalidated=!0}this.editData.hasMoved=!0,De(o),ke(s)},this.triggerAnnotationCompleted=(n,i)=>{const o=U.ANNOTATION_COMPLETED,a={annotation:n,changeType:Qt.Completed,contourHoleProcessingEnabled:i};nt(ze,o,a)},this.triggerAnnotationModified=(n,i,o=Qt.StatsUpdated)=>{const{viewportId:a,renderingEngineId:s}=i,c=U.ANNOTATION_MODIFIED;nt(ze,c,{annotation:n,viewportId:a,renderingEngineId:s,changeType:o})},this.triggerChangeEvent=(n,i,o=Qt.StatsUpdated,a)=>{o===Qt.Completed?this.triggerAnnotationCompleted(n,a):this.triggerAnnotationModified(n,i,o)},this._activateModify=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback)},this._activateDraw=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.KEY_DOWN,this._keyDownCallback),n.addEventListener(U.MOUSE_MOVE,this._mouseMoveCallback),n.addEventListener(U.MOUSE_DOWN,this._mouseDownCallback),n.addEventListener(U.MOUSE_DOUBLE_CLICK,this._mouseDownCallback),n.addEventListener(U.TOUCH_TAP,this._mouseDownCallback)},this._deactivateDraw=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.KEY_DOWN,this._keyDownCallback),n.removeEventListener(U.MOUSE_MOVE,this._mouseMoveCallback),n.removeEventListener(U.MOUSE_DOWN,this._mouseDownCallback),n.removeEventListener(U.MOUSE_DOUBLE_CLICK,this._mouseDownCallback),n.removeEventListener(U.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=Va(f);s.handles.textBox.worldPosition=i.canvasToWorld(m)}const u=i.worldToCanvas(s.handles.textBox.worldPosition),h=Lo(o,n.annotationUID??"","textBox",l,u,f,{},a),{x:g,y:p,width:v,height:y}=h;s.handles.textBox.worldBoundingBox={topLeft:i.canvasToWorld([g,p]),topRight:i.canvasToWorld([g+v,p]),bottomLeft:i.canvasToWorld([g,p+y]),bottomRight:i.canvasToWorld([g+v,p+y])}},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=De(f),{renderingEngine:d,viewport:h}=u,{canvasToWorld:g}=h,{instance:p}=o.spline,v=n.detail.currentPoints.canvas,y=p.getClosestPoint(v);if(y.distance>c)return;const{index:m,point:w}=p.addControlPointAtU(y.uValue);o.handles.points.splice(m,0,g(w)),i.invalidated=!0;const x=St(f,this.getToolName());ke(x)},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=De(i);if(!a)return;const{viewport:s}=a,{cachedStats:c}=o,{polyline:l}=o.contour,f=Object.keys(c);for(let d=0;ds.worldToCanvas(D)),y=v[0],m=s.canvasToWorld(y),w=s.canvasToWorld([y[0]+1,y[1]]),x=s.canvasToWorld([y[0],y[1]+1]),C=Po(m,w),S=Po(m,x),{imageData:T}=g,{scale:_,areaUnit:E}=Na(g,()=>{const{maxX:D,maxY:I,minX:P,minY:M}=zf(v),L=s.canvasToWorld([P,M]),B=Zr(T,L),j=s.canvasToWorld([D,I]),V=Zr(T,j);return[B,V]});let b=vv(v)/_/_;b*=C*S,c[h]={Modality:p.Modality,area:b,areaUnit:E}}const u=n.invalidated;return n.invalidated=!1,u&&this.triggerAnnotationModified(n,a,Qt.StatsUpdated),c},this._throttledCalculateCachedStats=ea(this._calculateCachedStats,100,{trailing:!0}),this.annotationCompletedBinded=this.annotationCompleted.bind(this)}annotationCompleted(e){var n;const{sourceAnnotation:r}=e.detail;!this.splineToolNames.includes((n=r==null?void 0:r.metadata)==null?void 0:n.toolName)||!this.configuration.simplifiedSpline||!this.isContourSegmentationTool()||cb(r)}initializeListeners(){ze.addEventListener(U.ANNOTATION_COMPLETED,this.annotationCompletedBinded)}removeListeners(){ze.removeEventListener(U.ANNOTATION_COMPLETED,this.annotationCompletedBinded)}onSetToolEnabled(){this.initializeListeners()}onSetToolActive(){this.initializeListeners()}onSetToolDisabled(){this.removeListeners()}addNewAnnotation(e){const r=e.detail,{currentPoints:n,element:i}=r,{canvas:o}=n,a=Kg(e.detail.event)===this.configuration.contourHoleAdditionModifierKey;De(i);const s=this.createAnnotation(e);this.isDrawing=!0,this.addAnnotation(s,i);const c=St(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(),ke(c),s}cancel(e){if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),Yt(e);const{annotation:r,viewportIdsToRender:n,newAnnotation:i}=this.editData;return i&&nn(r.annotationUID),super.cancelAnnotation(r),De(e),ke(n),this.editData=null,r.annotationUID}isContourSegmentationTool(){return!1}renderAnnotationInstance(e){var M,L,B;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:y,lineDash:m,color:w,locked:x}=o,C=g.map(j=>s(j)),{drawPreviewEnabled:S}=this.configuration.spline,T=l.data.spline.type,_=this._getSplineConfig(T),E=l.data.spline.instance,b=dv(l);if(b.findIndex(j=>!j)!==-1)throw new Error(`Can't find annotation for child ${l.childAnnotationUIDs.join()}`);[l,...b].filter(j=>this._isSplineROIAnnotation(j)).forEach(j=>{const F=this._updateSplineInstance(c,j).getPolylinePoints();this.updateContourPolyline(j,{points:F,closed:u.contour.closed,targetWindingDirection:ga.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 P;if(!x&&!this.editData&&p!==null&&(P=[C[p]]),(P||v||d)&&sr(i,f,"0",C,{color:w,lineWidth:y,handleRadius:"3"}),S&&E.numControlPoints>=1&&((L=this.editData)!=null&&L.lastCanvasPoint)&&!E.closed){const{lastCanvasPoint:j}=this.editData,{enableTwoPointPreview:V}=this.configuration.spline;if(E.numControlPoints===1&&V){const G=[C[0],j];Rs(i,f,"previewSplineChange",G,{color:"#9EA0CA",lineDash:m,lineWidth:1})}else if(E.numControlPoints>1){const F=E.getPreviewPolylinePoints(j,BM);Rs(i,f,"previewSplineChange",F,{color:"#9EA0CA",lineDash:m,lineWidth:1})}}if(_.showControlPointsConnectors){const j=[...C];E.closed&&j.push(C[0]),Rs(i,f,"controlPointsConnectors",j,{color:"rgba(255, 255, 255, 0.5)",lineWidth:1})}return this._renderStats(l,a,i,o.textbox),((B=this.fireChangeOnUpdate)==null?void 0:B.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)}),$i(r,{data:{handles:{points:[[...n]]},spline:s(),cachedStats:{}},onInterpolationComplete:c})}_deleteControlPointByIndex(e,r,n){De(e);const{points:i}=r.data.handles;i.length===3?nn(r.annotationUID):i.splice(n,1);const o=St(e,this.getToolName());r.invalidated=!0,ke(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},L4e,n[e])}_updateSplineInstance(e,r){const n=De(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 Am&&!c.fixedScale&&h!==void 0&&c.scale!==h&&(c.scale=h,r.invalidated=!0),c}};af.toolName="SplineROI",af.SplineTypes=iu,af.Actions=w1,af.hydrate=(e,r,n)=>{const i=Vn(e);if(!i)return;if(r.lengthi,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 W3=4294967295,F4e=2/(3*Math.PI);class xw{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 U4e=10**2,OD=class OD extends Em{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{getTextLines:B4e,calculateStats:!0,preventHandleOutsideImage:!1,contourHoleAdditionModifierKey:Qi.Shift,snapHandleNearby:2,interpolation:{enabled:!1,nearestEdge:2,showInterpolationPolyline:!1},decimate:{enabled:!1,epsilon:.1},actions:{cancelInProgress:{method:"cancelInProgress",bindings:[{key:"Escape"}]}}}}){super(e,r),this.isHandleOutsideImage=!1,this.isPointNearTool=(n,i,o,a)=>{const s=De(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=St(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},De(a),this._activateModify(a),ke(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=St(s,this.getToolName());this.editData={annotation:i,viewportIdsToRender:u,handleIndex:f,movingTextBox:l},this._activateModify(s),De(s),ke(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;this.doneEditMemo(),u.handles.activeHandleIndex=null,this._deactivateModify(a),this._deactivateDraw(a),Yt(a);const d=De(a);if(this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage||i){nn(s.annotationUID),this.clearEditData(),ke(c);return}ke(c);const h=l?Qt.Completed:Qt.HandlesUpdated;this.triggerChangeEvent(s,d,h,f),this.clearEditData()},this.triggerChangeEvent=(n,i,o=Qt.StatsUpdated,a=!1)=>{o===Qt.Completed?Cx(n,a):cn(n,i.viewport.element,o)},this._mouseDownCallback=n=>{const i=n.type===U.MOUSE_DOUBLE_CLICK,{annotation:o,viewportIdsToRender:a,worldToSlice:s,sliceToWorld:c,newAnnotation:l}=this.editData;if(this.editData.closed)return;const f=n.detail,{element:u}=f,{currentPoints:d}=f,{canvas:h,world:g}=d;let p=g;const v=De(u),{viewport:y,renderingEngine:m}=v,w=this.editData.currentPath.getControlPoints();let x=w.length>=2&&i;if(this.doneEditMemo(),this.createMemo(u,o,{newAnnotation:l&&w.length===1}),w.length>=2){const T={index:-1,distSquared:1/0};for(let _=0,E=w.length;_{const{element:i,currentPoints:o}=n.detail,{world:a,canvas:s}=o;De(i);const c=St(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 eu;g.addPoints(h),g.prependPath(this.editData.confirmedPath),this.editData.currentPath=g,ke(c),n.preventDefault()},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,movingTextBox:c,handleIndex:l,newAnnotation:f}=this.editData;this.createMemo(o,a,{newAnnotation:f});const{data:u}=a;if(c){const{deltaPoints:d}=i,h=d.world,{textBox:g}=u.handles,{worldPosition:p}=g;p[0]+=h[0],p[1]+=h[1],p[2]+=h[2],g.hasMoved=!0}else if(l===void 0)console.warn("Drag annotation not implemented");else{const{currentPoints:d}=i,h=d.world;this.editHandle(h,o,a,l)}this.editData.hasMoved=!0,De(o),ke(s)},this.cancel=n=>{if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),Yt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData;return a&&nn(i.annotationUID),ke(o),this.doneEditMemo(),this.scissors=null,i.annotationUID},this._activateModify=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback)},this._activateDraw=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_MOVE,this._mouseMoveCallback),n.addEventListener(U.MOUSE_DOWN,this._mouseDownCallback),n.addEventListener(U.MOUSE_DOUBLE_CLICK,this._mouseDownCallback),n.addEventListener(U.TOUCH_TAP,this._mouseDownCallback)},this._deactivateDraw=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_MOVE,this._mouseMoveCallback),n.removeEventListener(U.MOUSE_DOWN,this._mouseDownCallback),n.removeEventListener(U.MOUSE_DOUBLE_CLICK,this._mouseDownCallback),n.removeEventListener(U.TOUCH_TAP,this._mouseDownCallback)},this._calculateCachedStats=(n,i)=>{if(!this.configuration.calculateStats)return;const o=n.data;if(!o.contour.closed)return;const a=De(i),{viewport:s,renderingEngine:c}=a,{cachedStats:l}=o,{polyline:f}=o.contour,u=Object.keys(l);for(let h=0;hs.worldToCanvas(I)),m=y[0],w=s.canvasToWorld(m),x=s.canvasToWorld([m[0]+1,m[1]]),C=s.canvasToWorld([m[0],m[1]+1]),S=Po(w,x),T=Po(w,C),{imageData:_}=p,{scale:E,areaUnit:b}=Na(p,()=>{const{maxX:I,maxY:P,minX:M,minY:L}=zf(y),B=s.canvasToWorld([M,L]),j=Zr(_,B),V=s.canvasToWorld([I,P]),F=Zr(_,V);return[j,F]});let D=vv(y)/E/E;D*=S*T,l[g]={Modality:v.Modality,area:D,areaUnit:b}}const d=n.invalidated;return n.invalidated=!1,d&&this.triggerAnnotationModified(n,a,Qt.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=Va(f);s.handles.textBox.worldPosition=i.canvasToWorld(m)}const u=i.worldToCanvas(s.handles.textBox.worldPosition),h=Lo(o,n.annotationUID??"","textBox",l,u,f,{},a),{x:g,y:p,width:v,height:y}=h;s.handles.textBox.worldBoundingBox={topLeft:i.canvasToWorld([g,p]),topRight:i.canvasToWorld([g+v,p]),bottomLeft:i.canvasToWorld([g,p+y]),bottomRight:i.canvasToWorld([g+v,p+y])}},this.triggerAnnotationModified=(n,i,o=Qt.StatsUpdated)=>{const{viewportId:a,renderingEngineId:s}=i,c=U.ANNOTATION_MODIFIED;nt(ze,c,{annotation:n,viewportId:a,renderingEngineId:s,changeType:o})},this._throttledCalculateCachedStats=ea(this._calculateCachedStats,100,{trailing:!0})}setupBaseEditData(e,r,n,i,o){var T,_;const a=De(r),{viewport:s}=a;this.isDrawing=!0;const c=s.getImageData(),{imageData:l}=c;let f,u,d,h,g;if(!(s instanceof lr))d=c.dimensions[0],h=c.dimensions[1],f=E=>{const b=Zr(l,E);return[b[0],b[1]]},u=E=>fg(l,[E[0],E[1],0]),g=c.scalarData;else if(s instanceof lr){const E=P8(s),{sliceToIndexMatrix:b,indexToSliceMatrix:D}=E;f=I=>{const P=Zr(l,I),M=Gt([0,0,0],P,D);return[M[0],M[1]]},u=I=>{const P=Gt([0,0,0],[I[0],I[1],0],b);return fg(l,P)},g=E.scalarData,d=E.width,h=E.height}else throw new Error("Viewport not supported");g=bU(g,d,h);const{voiRange:p}=s.getProperties(),v=f(e);this.scissors=xw.createInstanceFromRawPixelData(g,d,h,p),i&&(this.scissorsNext=xw.createInstanceFromRawPixelData(g,d,h,p),this.scissorsNext.startSearch(f(i))),this.scissors.startSearch(v);const y=!i,m=new eu,w=new eu,x=y?void 0:new eu;m.addPoint(v),m.addControlPoint(v);const C=St(r,this.getToolName()),S=s.worldToCanvas(e);this.editData={annotation:n,viewportIdsToRender:C,newAnnotation:y,hasMoved:!1,lastCanvasPoint:S,confirmedPath:m,currentPath:w,confirmedPathNext:x,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=Kg(e.detail.event)===this.configuration.contourHoleAdditionModifierKey;return this.setupBaseEditData(o,i,a,void 0,s),this.addAnnotation(a,i),this._activateDraw(i),e.preventDefault(),ke(this.editData.viewportIdsToRender),a}clearEditData(){this.editData=null,this.scissors=null,this.scissorsNext=null,this.isDrawing=!1}editHandle(e,r,n,i){var w;const{data:o}=n,{points:a}=o.handles,{length:s}=a,c=a[(i-1+s)%s],l=a[(i+1)%s];if(!((w=this.editData)!=null&&w.confirmedPathNext)){this.setupBaseEditData(c,r,n,l);const{polyline:x}=o.contour,C=new eu,S=new eu,{worldToSlice:T}=this.editData,_=p_(n,i-1),E=p_(n,i+1);if(E===-1||_===-1)throw new Error(`Can't find handle index ${E===-1&&l} ${_===-1&&c}`);i===0?S.addPoints(x.slice(E+1,_).map(T)):(C.addPoints(x.slice(0,_+1).map(T)),S.addPoints(x.slice(E,x.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),y=this.scissorsNext.findPathToPoint(p),m=new eu;m.prependPath(f.confirmedPath),i!==0&&m.addPoints(v),m.addPoints(y.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 $i(r,{data:{handles:{points:[[...n]]}}})}cancelInProgress(e,r,n){if(!this.editData){this.undo();return}this._endCallback(n,!0)}renderAnnotationInstance(e){var m,w,x,C;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:y}=o;if(d||g&&r.annotationUID===((x=(w=this.editData)==null?void 0:w.annotation)==null?void 0:x.annotationUID)){const S="0",T=h.points.map(l);sr(i,f,S,T,{color:y,lineDash:v,lineWidth:p})}return super.renderAnnotationInstance(e),!u.cachedStats[a]||((C=u.cachedStats[a])==null?void 0:C.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?ga.Clockwise:void 0;this.updateContourPolyline(r,{points:s,closed:o,targetWindingDirection:c},{canvasToWorld:n,worldToCanvas:i})}};OD.toolName="LivewireContour";let Cw=OD;function B4e(t,e){const r=t.cachedStats[e],{area:n,areaUnit:i}=r,o=[];if(n){const a=`Area: ${un(n)} ${i}`;o.push(a)}return o}const PD=class PD extends Cw{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 y=a.findMinNearby(v,s);Vt(v,y)||(u[p]=y,h=y,n[p]=f(y))})}const d=new eu;for(let h=0;h{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=De(a),{viewport:l,renderingEngine:f}=c;At(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(),y={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:""}};rn(y,a);const m=St(a,this.getToolName());return this.editData={annotation:y,viewportIdsToRender:m,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),n.preventDefault(),ke(m),y},this.isPointNearTool=(n,i,o,a)=>{const s=De(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 Si([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=St(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},this._activateModify(a),At(a),De(a),ke(s),n.preventDefault()},this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,newAnnotation:c,hasMoved:l,movingTextBox:f}=this.editData,{data:u}=a;c&&!l||(u.handles.activeHandleIndex=null,this._deactivateModify(o),this._deactivateDraw(o),Yt(o),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&nn(a.annotationUID),c?this.configuration.getTextCallback(d=>{if(!d){nn(a.annotationUID),ke(s),this.editData=null,this.isDrawing=!1;return}a.data.text=d,cn(a,o,Qt.HandlesUpdated),Un(a),this.createMemo(o,a,{newAnnotation:!!this.memo}),$z(a,o,d),ke(s)}):f||cn(a,o,Qt.HandlesUpdated),this.doneEditMemo(),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,newAnnotation:f}=this.editData;this.createMemo(o,a,{newAnnotation:f});const{data:u}=a;if(l){const{deltaPoints:d}=i,h=d.world,{textBox:g}=u.handles,{worldPosition:p}=g;p[0]+=h[0],p[1]+=h[1],p[2]+=h[2],g.hasMoved=!0}else if(c===void 0){const{deltaPoints:d}=i,h=d.world;u.handles.points.forEach(p=>{p[0]+=h[0],p[1]+=h[1],p[2]+=h[2]}),a.invalidated=!0}else{const{currentPoints:d}=i,h=d.world;u.handles.points[c]=[...h],a.invalidated=!0}this.editData.hasMoved=!0,ke(s),a.invalidated&&cn(a,o,Qt.HandlesUpdated)},this.touchTapCallback=n=>{n.detail.taps==2&&this.doubleClickCallback(n)},this.doubleClickCallback=n=>{const i=n.detail,{element:o}=i;let a=ln(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),Yt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,ke(o),a&&Un(i),this.editData=null,i.annotationUID}},this._activateModify=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragCallback)},this._deactivateModify=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragCallback),n.removeEventListener(U.TOUCH_END,this._endCallback)},this._activateDraw=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragCallback),n.addEventListener(U.MOUSE_MOVE,this._dragCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_MOVE,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=ln(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(j));let T;if(!ti(d)&&!this.editData&&y!==null&&(T=[S[y]]),!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;if(!ni(d))continue;T&&sr(i,d,"0",S,{color:m,lineWidth:w});const _="1";if(this.configuration.arrowFirst?ow(i,d,_,S[1],S[0],{color:m,width:w,lineDash:x,viaMarker:this.configuration.arrowHeadStyle!=="legacy",markerSize:C}):ow(i,d,_,S[0],S[1],{color:m,width:w,lineDash:x,viaMarker:this.configuration.arrowHeadStyle!=="legacy",markerSize:C}),o=!0,!p)continue;const E=this.getLinkedTextBoxStyle(l,u);if(!E.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 j=S[1];h.handles.textBox.worldPosition=a.canvasToWorld(j)}const b=a.worldToCanvas(h.handles.textBox.worldPosition),I=Lo(i,d,"1",[p],b,S,{},E),{x:P,y:M,width:L,height:B}=I;h.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([P,M]),topRight:a.canvasToWorld([P+L,M]),bottomLeft:a.canvasToWorld([P,M+B]),bottomRight:a.canvasToWorld([P+L,M+B])}}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=St(o,this.getToolName());this.editData={annotation:r,viewportIdsToRender:l,handleIndex:c,movingTextBox:s},this._activateModify(o),At(o),De(o),ke(l),e.preventDefault()}_doneChangingTextCallback(e,r,n){r.data.text=n,De(e);const i=St(e,this.getToolName());ke(i),cn(r,e)}_isInsideVolume(e,r,n){return vr(e,n)&&vr(r,n)}};_h.toolName="ArrowAnnotate",_h.hydrate=(e,r,n,i)=>{const o=Vn(e);if(!o)return;const{FrameOfReferenceUID:a,referencedImageId:s,viewPlaneNormal:c,instance:l,viewport:f}=_h.hydrateBase(_h,o,r,i),{toolInstance:u,...d}=i||{},h={annotationUID:(i==null?void 0:i.annotationUID)||Pn(),data:{text:n||"",handles:{points:r}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:l.getToolName(),viewPlaneNormal:c,FrameOfReferenceUID:a,referencedImageId:s,...d}};rn(h,f.element),ke([f.id])};let Kf=_h;function G4e(t){return t(prompt("Enter your annotation:"))}function W4e(t,e,r){return r(prompt("Enter your annotation:"))}const Eh=class Eh extends cr{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,showAngleArc:!1,arcOffset:5,preventHandleOutsideImage:!1,getTextLines:$4e}}){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=De(a),{viewport:l,renderingEngine:f}=c;At(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:{}}};rn(v,a);const y=St(a,this.getToolName());return this.editData={annotation:v,viewportIdsToRender:y,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),n.preventDefault(),ke(y),v},this.isPointNearTool=(n,i,o,a)=>{const s=De(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(Si([p.start.x,p.start.y],[p.end.x,p.end.y],[o[0],o[1]])<=a)return!0;if(!d)return!1;const y=c.worldToCanvas(d),m={start:{x:g[0],y:g[1]},end:{x:y[0],y:y[1]}};return Si([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=St(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},this._activateModify(a),At(a),De(a),ke(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),Yt(o),De(o),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&nn(a.annotationUID),ke(s),this.doneEditMemo(),c&&Un(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,newAnnotation:f}=this.editData,{data:u}=a;if(this.createMemo(o,a,{newAnnotation:f}),l){const{deltaPoints:d}=i,h=d.world,{textBox:g}=u.handles,{worldPosition:p}=g;p[0]+=h[0],p[1]+=h[1],p[2]+=h[2],g.hasMoved=!0}else if(c===void 0){const{deltaPoints:d}=i,h=d.world;u.handles.points.forEach(p=>{p[0]+=h[0],p[1]+=h[1],p[2]+=h[2]}),a.invalidated=!0}else{const{currentPoints:d}=i,h=d.world;u.handles.points[c]=[...h],a.invalidated=!0}this.editData.hasMoved=!0,De(o),ke(s),a.invalidated&&cn(a,o,Qt.HandlesUpdated)},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),Yt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,ke(o),a&&Un(i),this.editData=null,this.angleStartedNotYetCompleted=!1,i.annotationUID}},this._activateModify=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragCallback)},this._deactivateModify=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragCallback)},this._activateDraw=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragCallback),n.addEventListener(U.MOUSE_MOVE,this._dragCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_MOVE,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragCallback)},this.renderAnnotation=(n,i)=>{var d;let o=!1;const{viewport:a}=n,{element:s}=a;let c=ln(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(F));!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 _;if(!ti(g.annotationUID)&&!this.editData&&m!==null&&(_=[T[m]]),!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;if(!ni(p))continue;_&&sr(i,p,"0",T,{color:w,lineDash:C,lineWidth:x});let E="1";if(fn(i,p,E,T[0],T[1],{color:w,width:x,lineDash:C}),o=!0,T.length!==3)return o;if(E="2",fn(i,p,E,T[1],T[2],{color:w,width:x,lineDash:C}),this.configuration.showAngleArc){const F=T[1],G=this.configuration.arcOffset,X=Math.min(Si([F[0],F[1]],[T[0][0],T[0][1]],[T[2][0],T[2][1]]),Si([F[0],F[1]],[T[2][0],T[2][1]],[T[0][0],T[0][1]]))/G,ne=[];let ue=Math.atan2(T[0][1]-F[1],T[0][0]-F[0]),me=Math.atan2(T[2][1]-F[1],T[2][0]-F[0]);if(meMath.PI){const Ie=ue;ue=me,me=Ie+2*Math.PI}const ye=32;for(let Ie=0;Ie<=ye;Ie++){const Pe=ue+Ie/ye*(me-ue);ne.push([F[0]+X*Math.cos(Pe),F[1]+X*Math.sin(Pe)])}Tu(i,p,"3",ne,{color:w,width:x,lineDash:S})}if(!((d=v.cachedStats[l])!=null&&d.angle))continue;const b=this.getLinkedTextBoxStyle(u,g);if(!b.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 F=T[1];v.handles.textBox.worldPosition=a.canvasToWorld(F)}const I=a.worldToCanvas(v.handles.textBox.worldPosition),M=Lo(i,p,"1",D,I,T,{},b),{x:L,y:B,width:j,height:V}=M;v.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([L,B]),topRight:a.canvasToWorld([L+j,B]),bottomLeft:a.canvasToWorld([L,B+V]),bottomRight:a.canvasToWorld([L+j,B+V])}}return o},this._throttledCalculateCachedStats=ea(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=St(o,this.getToolName());this.editData={annotation:r,viewportIdsToRender:l,handleIndex:c,movingTextBox:s},this._activateModify(o),At(o),De(o),ke(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 d=0;dZr(v,y)).some(y=>!vr(y,p)),l[h]={angle:isNaN(g)?"Incomplete Angle":g}}const u=e.invalidated;return e.invalidated=!1,u&&cn(e,o,Qt.StatsUpdated),l}};Eh.toolName="Angle",Eh.hydrate=(e,r,n)=>{const i=Vn(e);if(!i)return;const{FrameOfReferenceUID:o,referencedImageId:a,viewPlaneNormal:s,instance:c,viewport:l}=Eh.hydrateBase(Eh,i,r,n),{toolInstance:f,...u}=n||{},d={annotationUID:(n==null?void 0:n.annotationUID)||Pn(),data:{handles:{points:r}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:c.getToolName(),viewPlaneNormal:s,FrameOfReferenceUID:o,referencedImageId:a,...u}};rn(d,l.element),ke([l.id])};let L_=Eh;function $4e(t,e){const r=t.cachedStats[e],{angle:n}=r;return n===void 0?void 0:isNaN(n)?[`${n}`]:[`${un(n)} °`]}const z4e=(...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},Ql=z4e,RD=class RD extends cr{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:j4e,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=De(a),{viewport:l,renderingEngine:f}=c;At(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:{}}};rn(v,a);const y=St(a,this.getToolName());return this.editData={annotation:v,viewportIdsToRender:y,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),n.preventDefault(),ke(y),v},this.isPointNearTool=(n,i,o,a)=>{const s=De(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=St(l,this.getToolName()),u=De(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),At(l),ke(f),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.doneEditMemo(),this.angleStartedNotYetCompleted&&f.handles.points.length<4){Yt(o),this.editData.handleIndex=f.handles.points.length;return}this.angleStartedNotYetCompleted=!1,f.handles.activeHandleIndex=null,this._deactivateModify(o),this._deactivateDraw(o),Yt(o),De(o),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&nn(a.annotationUID),ke(s),c&&Un(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,At(s),f.handles.points[2]=f.handles.points[3]=l,this.editData.handleIndex=f.handles.points.length-1},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,handleIndex:c,movingTextBox:l,isNearFirstLine:f,isNearSecondLine:u,newAnnotation:d}=this.editData;this.createMemo(o,a,{newAnnotation:d});const{data:h}=a;if(l){const{deltaPoints:g}=i,p=g.world,{textBox:v}=h.handles,{worldPosition:y}=v;y[0]+=p[0],y[1]+=p[1],y[2]+=p[2],v.hasMoved=!0}else if(c===void 0&&(f||u)){const{deltaPoints:g}=i,p=g.world,v=h.handles.points;f?[v[0],v[1]].forEach(m=>{m[0]+=p[0],m[1]+=p[1],m[2]+=p[2]}):u&&[v[2],v[3]].forEach(m=>{m[0]+=p[0],m[1]+=p[1],m[2]+=p[2]}),a.invalidated=!0}else{const{currentPoints:g}=i,p=g.world;h.handles.points[c]=[...p],a.invalidated=!0}this.editData.hasMoved=!0,De(o),ke(s),a.invalidated&&cn(a,o,Qt.HandlesUpdated)},this.cancel=n=>{if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),Yt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return s.handles.points.length<4&&nn(i.annotationUID),i.highlighted=!1,s.handles.activeHandleIndex=null,De(n),ke(o),a&&Un(i),this.editData=null,this.angleStartedNotYetCompleted=!1,i.annotationUID},this._activateModify=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragCallback),n.addEventListener(U.TOUCH_START,this._mouseDownCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragCallback),n.removeEventListener(U.TOUCH_START,this._mouseDownCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback)},this._activateDraw=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragCallback),n.addEventListener(U.MOUSE_MOVE,this._dragCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.MOUSE_DOWN,this._mouseDownCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragCallback),n.addEventListener(U.TOUCH_START,this._mouseDownCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback)},this._deactivateDraw=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_MOVE,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.MOUSE_DOWN,this._mouseDownCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragCallback),n.removeEventListener(U.TOUCH_START,this._mouseDownCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{var d;let o=!1;const{viewport:a}=n,{element:s}=a;let c=ln(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(Pe));!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(!ti(p)&&!this.editData&&m!==null&&(T=[S[m]]),!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;if(!ni(p))continue;T&&sr(i,p,"0",S,{color:w,lineDash:C,lineWidth:x});const _=[S[0],S[1]],E=[S[2],S[3]];let b="line1";if(fn(i,p,b,_[0],_[1],{color:w,width:x,lineDash:C}),o=!0,S.length<4)return o;b="line2",fn(i,p,b,E[0],E[1],{color:w,width:x,lineDash:C}),b="linkLine";const D=Ql(_[0],_[1]),I=Ql(E[0],E[1]);fn(i,p,b,D,I,{color:w,lineWidth:"1",lineDash:"1,4"});const{arc1Start:P,arc1End:M,arc2End:L,arc2Start:B}=v.cachedStats[l].points.canvas,{arc1Angle:j,arc2Angle:V}=v.cachedStats[l];if(this.configuration.showArcLines&&(b="arc1",fn(i,p,b,P,M,{color:w,lineWidth:"1"}),b="arc2",fn(i,p,b,B,L,{color:w,lineWidth:"1"})),!((d=v.cachedStats[l])!=null&&d.angle))continue;const F=this.getLinkedTextBoxStyle(u,g);if(!F.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 G=this.configuration.getTextLines(v,l);if(!v.handles.textBox.hasMoved){const Pe=Va(S);v.handles.textBox.worldPosition=a.canvasToWorld(Pe)}const X=a.worldToCanvas(v.handles.textBox.worldPosition),ue=Lo(i,p,"cobbAngleText",G,X,S,{},F),{x:me,y:ge,width:ye,height:Ie}=ue;if(v.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([me,ge]),topRight:a.canvasToWorld([me+ye,ge]),bottomLeft:a.canvasToWorld([me,ge+Ie]),bottomRight:a.canvasToWorld([me+ye,ge+Ie])},this.configuration.showArcLines){const Pe="arcAngle1",Ee=[`${j.toFixed(2)} °`],H=Ql(P,M);Lu(i,p,Pe,Ee,H,{...F,padding:3});const O="arcAngle2",Y=[`${V.toFixed(2)} °`],K=Ql(B,L);Lu(i,p,O,Y,K,{...F,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]}},y=Si([p.start.x,p.start.y],[p.end.x,p.end.y],[o[0],o[1]]),m=Si([v.start.x,v.start.y],[v.end.x,v.end.y],[o[0],o[1]]);let w=!1,x=!1;return y<=a?w=!0:m<=a&&(x=!0),{distanceToPoint:y,distanceToPoint2:m,isNearFirstLine:w,isNearSecondLine:x}},this.getArcsStartEndPoints=({firstLine:n,secondLine:i,mid1:o,mid2:a})=>{const s=[o,a],c=Hh(n,s),l=Hh(i,s),f=c>90?1:0,u=l>90?0:1,d=Ql(s[0],s[1]),h=Math.sqrt((s[1][0]-s[0][0])**2+(s[1][1]-s[0][1])**2),g=.1,p=Ql(n[0],n[1]),v=Ql(i[0],i[1]),y=[n[f][0]-p[0],n[f][1]-p[1]],m=Math.sqrt(y[0]**2+y[1]**2),w=[y[0]/m,y[1]/m],x=[p[0]+w[0]*h*g,p[1]+w[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]],b=Math.sqrt(E[0]**2+E[1]**2),D=[E[0]/b,E[1]/b],I=[v[0]+D[0]*h*g,v[1]+D[1]*h*g],P=[d[0]-a[0],d[1]-a[1]],M=Math.sqrt(P[0]**2+P[1]**2),L=[P[0]/M,P[1]/M],B=[a[0]+L[0]*h*g,a[1]+L[1]*h*g];return{arc1Start:x,arc1End:_,arc2Start:I,arc2End:B,arc1Angle:c>90?180-c:c,arc2Angle:l>90?180-l:l}},this._throttledCalculateCachedStats=ea(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=St(a,this.getToolName());this.editData={annotation:r,viewportIdsToRender:f,handleIndex:l,movingTextBox:c},this._activateModify(a),At(a),ke(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 _=0;_<2;_+=1)for(let E=2;E<4;E+=1){const b=Po(i.handles.points[_],i.handles.points[E]);bc.worldToCanvas(_)),u=[f[0],f[1]],d=[f[2],f[3]],h=Ql(u[0],u[1]),g=Ql(d[0],d[1]),{arc1Start:p,arc1End:v,arc2End:y,arc2Start:m,arc1Angle:w,arc2Angle:x}=this.getArcsStartEndPoints({firstLine:u,secondLine:d,mid1:h,mid2:g}),{cachedStats:C}=i,S=Object.keys(C);for(let _=0;_{if(this.startedDrawing)return;this.startedDrawing=!0;const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=De(a),{viewport:l,renderingEngine:f}=c;if(!(l instanceof hr))throw new Error("UltrasoundDirectionalTool can only be used on a StackViewport");At(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:{}}};rn(v,a);const y=St(a,this.getToolName());return this.editData={annotation:v,viewportIdsToRender:y,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),n.preventDefault(),ke(y),v},this.isPointNearTool=(n,i,o,a)=>{const s=De(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 Si([g.start.x,g.start.y],[g.end.x,g.end.y],[o[0],o[1]])<=a},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),Yt(o),De(o),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&nn(a.annotationUID),ke(s),c&&Un(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,De(o),ke(s)},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),Yt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,ke(o),a&&Un(i),this.editData=null,this.startedDrawing=!1,i.annotationUID}},this._activateModify=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragCallback)},this._deactivateModify=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragCallback)},this._activateDraw=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragCallback),n.addEventListener(U.MOUSE_MOVE,this._dragCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_MOVE,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=ln(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 w="0";if(iw(i,g,w,m[0],{color:y},0),o=!0,m.length!==2)return o;if(w="1",iw(i,g,w,m[1],{color:y},1),p.cachedStats[l].isUnitless){const M=`${g}-line-1`;fn(i,g,"1",m[0],m[1],{color:y,width:1,shadow:this.configuration.shadow},M)}else{const M=m[0],L=m[1],B=L[1]-M[1],j=L[0]-M[0],V=p.cachedStats[l].isHorizontal;let F=[0,0];V?F=[M[0]+j,M[1]]:F=[M[0],M[1]+B];let G=`${g}-line-1`,X="1";fn(i,g,X,m[0],F,{color:y,width:1,shadow:this.configuration.shadow},G),G=`${g}-line-2`,X="2",fn(i,g,X,m[1],F,{color:y,width:1,lineDash:[1,1],shadow:this.configuration.shadow},G)}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=Lo(i,g,"1",S,T,m,{},C),{x:b,y:D,width:I,height:P}=E;p.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([b,D]),topRight:a.canvasToWorld([b+I,D]),bottomLeft:a.canvasToWorld([b,D+P]),bottomRight:a.canvasToWorld([b+I,D+P])}}return o},this._throttledCalculateCachedStats=ea(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=St(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),At(o),De(o),ke(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 l=0;lMath.abs(I),C=[y[0],w[0]],S=[y[1],w[1]],T=[m[0],m[1]]}a[f]={xValues:C,yValues:S,isHorizontal:_,units:T,isUnitless:E}}const c=e.invalidated;return e.invalidated=!1,c&&cn(e,o,Qt.StatsUpdated),a}};AD.toolName="UltrasoundDirectionalTool";let k_=AD;function H4e(t,e,r){const n=t.cachedStats[e],{xValues:i,yValues:o,units:a,isUnitless:s,isHorizontal:c}=n;if(s)return[`${un(i[0])} px`];if(r.displayBothAxesDistances){const l=Math.abs(i[1]-i[0]),f=Math.abs(o[1]-o[0]);return[`${un(l)} ${a[0]}`,`${un(f)} ${a[1]}`]}if(c){const l=Math.abs(i[1]-i[0]);return[`${un(l)} ${a[0]}`]}else{const l=Math.abs(o[1]-o[0]);return[`${un(l)} ${a[1]}`]}}function K4e(t){return(t%360+360)%360}function V_(t,e){const r=e[0]-t[0],n=e[1]-t[1],i=Math.atan2(n,r)*(180/Math.PI);return K4e(i)}function Sw(t,e){const r=V_(t,e[0]),n=V_(t,e[1]);return rr[0]-n[0]);const e=[t[0].slice()];for(let r=1;r[Math.max(f,r),Math.min(u,n)]).filter(([f,u])=>u>f);if(i.length===0)return[[r,n]];i.sort((f,u)=>f[0]-u[0]);const o=[];let[a,s]=i[0];for(let f=1;fl&&c.push([l,f]),l=Math.max(l,u);return lSw(t,f)),i=F_(n),o=i.reduce((f,[u,d])=>f+(d-u),0);if(o===0)return 0;const a=[];for(const f of r){const u=Sw(t,f),d=hj(u,i);a.push(...d)}const l=F_(a).reduce((f,[u,d])=>f+(d-u),0)/o*100;return Math.min(100,Math.max(0,l))}const{transformIndexToWorld:$M}=Dn,_r=class _r extends cr{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,getTextLines:q4e,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,r),this.pleuraAnnotations=[],this.bLineAnnotations=[],this.addNewAnnotation=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=De(a),{viewport:l}=c;At(a),this.isDrawing=!0;const{viewPlaneNormal:f,viewUp:u,position:d}=l.getCamera(),h=this.getReferencedImageId(l,s,f,u),g={highlighted:!0,invalidated:!0,metadata:{...l.getViewReference({points:[s]}),toolName:this.getToolName(),referencedImageId:h,viewUp:u,cameraPosition:d},data:{handles:{points:[[...s],[...s]],activeHandleIndex:null},annotationType:this.getActiveAnnotationType(),label:""}};rn(g,a);const p=St(a,this.getToolName());return this.editData={annotation:g,viewportIdsToRender:p,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),n.preventDefault(),ke(p),g},this.isPointNearTool=(n,i,o,a)=>{const s=De(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 Si([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=St(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},this._activateModify(a),At(a),ke(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),Yt(o),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&nn(a.annotationUID),ke(s),this.doneEditMemo(),c&&Un(a),this.editData=null,this.isDrawing=!1)},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{viewport:a}=De(o)||{};if(!a)return;const{annotation:s,viewportIdsToRender:c,handleIndex:l,movingTextBox:f,newAnnotation:u}=this.editData,{data:d}=s;if(this.createMemo(o,s,{newAnnotation:u}),f){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(l===void 0){const{deltaPoints:h}=i,g=h.world,p=d.handles.points;p.every(y=>{const m=[y[0]+g[0],y[1]+g[1],y[2]+g[2]];return this.isInsideFanShape(a,m)})&&(p.forEach(y=>{y[0]+=g[0],y[1]+=g[1],y[2]+=g[2]}),s.invalidated=!0)}else{const{currentPoints:h}=i,g=h.world;this.isInsideFanShape(a,g)&&(d.handles.points[l]=[...g],s.invalidated=!0)}this.editData.hasMoved=!0,ke(c),s.invalidated&&cn(s,o,Qt.HandlesUpdated)},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),Yt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,ke(o),a&&Un(i),this.editData=null,i.annotationUID}},this._activateModify=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback)},this._activateDraw=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragCallback),n.addEventListener(U.MOUSE_MOVE,this._dragCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback)},this._deactivateDraw=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_MOVE,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;if(!this.getFanShapeGeometryParameters(a))return;const{imageData:c}=a.getImageData()||{};if(!c)return o;this.configuration.drawDepthGuide&&this.drawDepthGuide(i,a);let l=ln(this.getToolName(),s);if(!(l!=null&&l.length)||(l=this.filterInteractableAnnotationsForElement(s,l),!(l!=null&&l.length)))return o;this.getTargetId(a),a.getRenderingEngine();const f={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id},u=a.worldToCanvas($M(c,this.configuration.center)),d=this.getIndexToCanvasRatio(a),h=this.configuration.innerRadius*d,g=this.configuration.outerRadius*d,p=a.getCurrentImageId(),v=l.filter(T=>T.data.annotationType===_r.USPleuraBLineAnnotationType.PLEURA&&T.metadata.referencedImageId===p).map(T=>{const _=T.data.handles.points.map(b=>a.worldToCanvas(b));return Sw(u,_)}),y=F_(v),m=[],w=[],x=T=>{const{annotationUID:_,data:E}=T,{points:b,activeHandleIndex:D}=E.handles;f.annotationUID=_;const{color:I,lineWidth:P,lineDash:M,shadow:L}=this.getAnnotationStyle({annotation:T,styleSpecifier:f}),B=b.map(G=>a.worldToCanvas(G));if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;let j;if(!ni(_))return;!ti(_)&&!this.editData&&D!==null&&(j=[B[D]]),j&&sr(i,_,"0",B,{color:this.getColorForLineType(T),fill:this.getColorForLineType(T),lineDash:M,lineWidth:P});const V=`${_}-line`;if(fn(i,_,"1",B[0],B[1],{color:this.getColorForLineType(T),width:P,lineDash:M,shadow:L},V),this.configuration.showFanAnnotations){const G=Sw(u,B);let X=0;T.data.annotationType===_r.USPleuraBLineAnnotationType.BLINE?WM(w,G).forEach(ue=>{hj(ue,y).forEach(ge=>{X++;const ye=X,Ie=`${_}-fan-${ye}`,Pe=`2-${ye}`;u_(i,_,Pe,u,h,g,ge[0],ge[1],{color:"transparent",fill:this.getColorForLineType(T),fillOpacity:this.configuration.fanOpacity,width:P,lineDash:M,shadow:L},Ie,10),w.push(ge)})}):T.data.annotationType===_r.USPleuraBLineAnnotationType.PLEURA&&WM(m,G).forEach((ue,me)=>{X++;const ge=X,ye=`${_}-fan-${ge}`,Ie=`2-${ge}`;u_(i,_,Ie,u,h,g,ue[0],ue[1],{color:"transparent",fill:this.getColorForLineType(T),fillOpacity:this.configuration.fanOpacity,width:P,lineDash:M,shadow:L},ye,5),m.push(ue)})}};return l.filter(T=>T.data.annotationType===_r.USPleuraBLineAnnotationType.PLEURA&&T.metadata.referencedImageId===p).forEach(T=>{if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;x(T)}),l.filter(T=>T.data.annotationType===_r.USPleuraBLineAnnotationType.BLINE&&T.metadata.referencedImageId===p).forEach(T=>{if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;x(T)}),o=!0,this.configuration.updatePercentageCallback&&a&&this.configuration.updatePercentageCallback(this.calculateBLinePleuraPercentage(a)),o},this.activeAnnotationType=_r.USPleuraBLineAnnotationType.BLINE}static filterAnnotations(e,r=()=>!0){const n=ln(_r.toolName,e);return n!=null&&n.length?n.filter(o=>{const a=o.metadata.referencedImageId;return r(a)}):[]}static countAnnotations(e,r=()=>!0){const n=ln(_r.toolName,e),{viewport:i}=De(e),o=i.getImageIds(),a=c=>{const l=o.findIndex(f=>f===c);return l===-1?0:l};if(!(n!=null&&n.length))return;const s=new Map;return n.forEach(c=>{const l=c.metadata.referencedImageId;if(!r(l))return;const{annotationType:f}=c.data;let u;s.has(l)?u=s.get(l):u={frame:a(l),bLine:0,pleura:0},f===_r.USPleuraBLineAnnotationType.PLEURA?u.pleura++:f===_r.USPleuraBLineAnnotationType.BLINE&&u.bLine++,s.set(l,u)}),s}static deleteAnnotations(e,r=()=>!1){const n=ln(_r.toolName,e);n!=null&&n.length&&n.forEach(i=>{r(i.metadata.referencedImageId)&&nn(i.annotationUID)})}setActiveAnnotationType(e){this.activeAnnotationType=e}getActiveAnnotationType(){return this.activeAnnotationType}deleteLastAnnotationType(e,r){let n;const i=ln(_r.toolName,e);if(r===_r.USPleuraBLineAnnotationType.PLEURA?n=i.filter(o=>o.data.annotationType===_r.USPleuraBLineAnnotationType.PLEURA):r===_r.USPleuraBLineAnnotationType.BLINE&&(n=i.filter(o=>o.data.annotationType===_r.USPleuraBLineAnnotationType.BLINE)),(n==null?void 0:n.length)>0){const o=n.pop();nn(o.annotationUID)}}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=St(o,this.getToolName());this.editData={annotation:r,viewportIdsToRender:l,handleIndex:c,movingTextBox:s},this._activateModify(o),At(o),ke(l),e.preventDefault()}isInsideFanShape(e,r){if(!this.getFanShapeGeometryParameters(e))return!1;const{imageData:n}=e.getImageData()||{};if(n){const i=e.worldToCanvas(n.indexToWorld(this.configuration.center)),o=e.worldToCanvas(r),a=V_(i,o);return a>=this.configuration.startAngle&&a<=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 r=e.getCurrentImageId(),{fanGeometry:n}=nD(r)||{};n&&this.updateFanGeometryConfiguration(n)}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 r=e.getCurrentImageId(),n=ut("ultrasoundFanShapeGeometry",r);this.updateFanGeometryConfiguration(n)}return this.isFanShapeGeometryParametersValid()||this.deriveFanGeometryFromViewport(e),this.isFanShapeGeometryParametersValid()}calculateBLinePleuraPercentage(e){if(!this.getFanShapeGeometryParameters(e))return;const{imageData:r}=e.getImageData()||{};if(!r)return;const{element:n}=e,i=e.worldToCanvas(r.indexToWorld(this.configuration.center)),o=e.getCurrentImageId(),a=ln(this.getToolName(),n)||[],s=a.filter(l=>l.data.annotationType===_r.USPleuraBLineAnnotationType.PLEURA&&l.metadata.referencedImageId===o).map(l=>l.data.handles.points.map(u=>e.worldToCanvas(u))),c=a.filter(l=>l.data.annotationType===_r.USPleuraBLineAnnotationType.BLINE&&l.metadata.referencedImageId===o).map(l=>l.data.handles.points.map(u=>e.worldToCanvas(u)));return X4e(i,s,c)}getColorForLineType(e){const{annotationType:r}=e.data,{bLineColor:n,pleuraColor:i}=this.configuration;return r===_r.USPleuraBLineAnnotationType.BLINE?n:r===_r.USPleuraBLineAnnotationType.PLEURA?i:n}getIndexToCanvasRatio(e){const{imageData:r}=e.getImageData()||{},n=e.worldToCanvas(r.indexToWorld([1,0,0])),i=e.worldToCanvas(r.indexToWorld([2,0,0])),o=[i[0]-n[0],i[1]-n[1]];return Math.sqrt(o[0]*o[0]+o[1]*o[1])}drawDepthGuide(e,r){if(!this.getFanShapeGeometryParameters(r))return;const{imageData:n}=r.getImageData()||{};if(!n)return;const i=g=>g*180/Math.PI,o=g=>g*Math.PI/180,a=g=>r.worldToCanvas($M(n,g)),s=this.configuration.innerRadius+this.configuration.depth_ratio*(this.configuration.outerRadius-this.configuration.innerRadius),c=this.configuration.startAngle,f=this.configuration.endAngle-c,u=o(f)*s;let d=Math.round(u/(this.configuration.depthGuideDashLength+this.configuration.depthGuideDashGap));d<=0&&(d=Math.max(15,Math.round(f/5)));const h=f/d;for(let g=0;g{const i=Vn(e);if(!i)return;const{FrameOfReferenceUID:o,referencedImageId:a,viewPlaneNormal:s,instance:c,viewport:l}=_r.hydrateBase(_r,i,r,n),{toolInstance:f,...u}=n||{},d={annotationUID:(n==null?void 0:n.annotationUID)||Pn(),data:{handles:{points:r}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:c.getToolName(),viewPlaneNormal:s,FrameOfReferenceUID:o,referencedImageId:a,...u}};rn(d,l.element),ke([l.id])};let U_=_r;function q4e(t,e){return[""]}const M1=class M1 extends cr{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{getTextCallback:Y4e,changeTextCallback:J4e,canvasPosition:[10,10],canvasSize:10,handleRadius:"6",seriesLevel:!1,isPoint:!1}}){super(e,r),this.addNewAnnotation=n=>{const i=n.detail,{element:o,currentPoints:a}=i,s=De(o),{viewport:c}=s,l=a.world,f=this.constructor.createAnnotationForViewport(c,{data:{handles:{points:[[...l]]},seriesLevel:this.configuration.seriesLevel,isPoint:this.configuration.isPoint}});rn(f,o);const u=St(o,this.getToolName());return n.preventDefault(),ke(u),this.configuration.getTextCallback(d=>{if(!d){nn(f.annotationUID),ke(u),this.isDrawing=!1;return}f.data.text=d,Un(f),ke(u)}),this.createMemo(o,f,{newAnnotation:!0}),f},this.isPointNearTool=(n,i,o,a)=>{De(n);const{data:s}=i;if(!(s!=null&&s.isPoint))return!1;const{canvasPosition:c,canvasSize:l}=this.configuration;return c!=null&&c.length?Math.abs(o[0]-c[0]+l/2)<=l/2&&Math.abs(o[1]-c[1]+l/2)<=l/2:!1},this.toolSelectedCallback=(n,i)=>{i.highlighted=!0,n.preventDefault()},this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,newAnnotation:c}=this.editData,{viewportId:l,renderingEngine:f}=De(o);this.eventDispatchDetail={viewportId:l,renderingEngineId:f.id},this._deactivateModify(o),Yt(o),c&&this.createMemo(o,a,{newAnnotation:c}),this.editData=null,this.isDrawing=!1,this.doneEditMemo(),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&nn(a.annotationUID),ke(s),c&&Un(a)},this.doubleClickCallback=n=>{const i=n.detail,{element:o}=i;let a=ln(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.createMemo(o,c),this.configuration.changeTextCallback(s,n.detail,this._doneChangingTextCallback.bind(this,o,c)),this.isDrawing=!1,this.doneEditMemo(),n.stopImmediatePropagation(),n.preventDefault()},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,{annotation:c,viewportIdsToRender:l,newAnnotation:f}=this.editData,{data:u}=c;this.createMemo(a,c,{newAnnotation:f}),u.handles.points[0]=[...s],c.invalidated=!0,ke(l)},this._activateModify=n=>{je.isInteractingWithTool=!0,n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{je.isInteractingWithTool=!1,n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=ln(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;fw+y),v,{color:g,width:1});if(o=!0,!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o}return o}}handleSelectedCallback(e,r){const n=e.detail,{element:i}=n;r.highlighted=!0;const o=St(i,this.getToolName());this.editData={annotation:r,viewportIdsToRender:o},this._activateModify(i),At(i),ke(o),e.preventDefault()}static setPoint(e,r=!e.data.isPoint,n){e.data.isPoint=r,cn(e,n)}_doneChangingTextCallback(e,r,n){r.data.text=n;const i=St(e,this.getToolName());ke(i),cn(r,e)}cancel(e){if(this.isDrawing){this.isDrawing=!1,this._deactivateModify(e),Yt(e);const{annotation:r,viewportIdsToRender:n,newAnnotation:i}=this.editData,{data:o}=r;return r.highlighted=!1,o.handles.activeHandleIndex=null,ke(n),i&&Un(r),this.editData=null,r.annotationUID}}_isInsideVolume(e,r,n){return vr(e,n)&&vr(r,n)}};M1.toolName="KeyImage",M1.dataSeries={data:{seriesLevel:!0}},M1.dataPoint={data:{isPoint:!0}};let B_=M1;function Y4e(t){return t(prompt("Enter your annotation:"))}function J4e(t,e,r){return r(prompt("Enter your annotation:"))}class gj extends mi{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=Mr(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=ln(f,o),h=u.filterInteractableAnnotationsForElement(o,d);if(h)for(const g of h)u.isPointNearTool(o,g,a.canvas,10,r)&&l.push(g.annotationUID)}for(const f of l){ha(f);const u=$n(f);cr.createAnnotationMemo(o,u,{deleting:!0}),nn(f)}return e.preventDefault(),!0}}gj.toolName="Eraser";const{transformWorldToIndex:zM,transformIndexToWorld:Z4e}=Dn,O1=class O1 extends mi{constructor(e,r){const n=$i({configuration:{positiveStdDevMultiplier:pz,shrinkExpandIncrement:.1,islandRemoval:{enabled:!1}}},r);super(e,n)}async preMouseDownCallback(e){const r=e.detail,{element:n,currentPoints:i}=r,{world:o}=i,a=De(n),{viewport:s,renderingEngine:c}=a,{viewUp:l}=s.getCamera(),{segmentationId:f,segmentIndex:u,labelmapVolumeId:d,referencedVolumeId:h}=await this.getLabelmapSegmentationData(s);if(!this._isOrthogonalView(s,h))throw new Error("Oblique view is not supported yet");return this.growCutData={metadata:{...s.getViewReference({points:[o]}),viewUp:l},segmentation:{segmentationId:f,segmentIndex:u,labelmapVolumeId:d,referencedVolumeId:h},viewportId:s.id,renderingEngineId:c.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:r}=this,{segmentation:{segmentationId:n,segmentIndex:i,labelmapVolumeId:o}}=e,a=Ue.getVolume(o);let s=0;const c=async({shrinkExpandAmount:l=0}={})=>{l!==0&&(this.seeds=null),s+=l;const f=Math.max(.1,r.positiveStdDevMultiplier+s),u=l<0?Math.max(1,w_-Math.abs(s)*3):w_+s*3,d={...e,options:{...e.options||{},positiveSeedValue:i,negativeSeedValue:255,positiveStdDevMultiplier:f,negativeSeedMargin:u}},h=await this.getGrowCutLabelmap(d),{isPartialVolume:g}=r;(g?this.applyPartialGrowCutLabelmap:this.applyGrowCutLabelmap)(n,i,a,h),this._removeIslands(d)};await c(),O1.lastGrowCutCommand=c,this.growCutData=null}applyPartialGrowCutLabelmap(e,r,n,i){const o=i.voxelManager.getCompleteScalarDataArray(),a=n.voxelManager,[s,c,l]=i.dimensions,[f,u]=n.dimensions,d=s*c,h=f*u;for(let g=0;g{s===r&&o.setAtIndex(c,s)}),Ro(e)}_runLastCommand({shrinkExpandAmount:e=0}={}){const r=O1.lastGrowCutCommand;r&&r({shrinkExpandAmount:e})}async getLabelmapSegmentationData(e){const r=Bu(e.id);if(!r)throw new Error("No active segmentation found");const{segmentationId:n}=r,i=pa(n),{representationData:o}=an(n),a=o[Pt.Labelmap];let{volumeId:s,referencedVolumeId:c}=a;if(!s){const l=e.getImageIds();if(Zf(l))s=Jg(n).volumeId;else{const f=e.getCurrentImageId(),u=Ue.getImage(f),d=im(f);c=this._createFakeVolume([u.imageId,d.imageId]).volumeId;const g=ed(e.id,n),p=im(g);s=this._createFakeVolume([g,p.imageId]).volumeId}}if(!c){const{imageIds:l}=a,f=l.map(h=>Ue.getImage(h).referencedImageId),u=Ue.generateVolumeId(f),d=Ue.getVolume(u);c=d?d.volumeId:(await nv(u,f)).volumeId}return{segmentationId:n,segmentIndex:i,labelmapVolumeId:s,referencedVolumeId:c}}_createFakeVolume(e){const r=Ue.generateVolumeId(e),n=Ue.getVolume(r);if(n)return n;const i=ev(e,r),o=i.spacing;o[2]===0&&(o[2]=1);const a=new x0({volumeId:r,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 Ue.putVolumeSync(r,a),a}_isOrthogonalView(e,r){const i=Ue.getVolume(r).imageData,o=e.getCamera(),{ijkVecColDir:a,ijkVecSliceDir:s}=px(i,o);return[a,s].every(c=>Vt(Math.abs(c[0]),1)||Vt(Math.abs(c[1]),1)||Vt(Math.abs(c[2]),1))}getRemoveIslandData(e){}_removeIslands(e){const{islandRemoval:r}=this.configuration;if(!r.enabled)return;const{segmentation:{segmentIndex:n,labelmapVolumeId:i},renderingEngineId:o,viewportId:a}=e,s=Ue.getVolume(i),c=this.getRemoveIslandData(e);if(!c)return;const[l,f]=s.dimensions,u=l*f,{worldIslandPoints:d=[],islandPointIndexes:h=[]}=c;let g=[...(c==null?void 0:c.ijkIslandPoints)??[]];const v=ir(o).getViewport(a),{voxelManager:y}=s,m=new d0;g=g.concat(d.map(w=>zM(s.imageData,w))),g=g.concat(h.map(w=>{const x=w%l,C=Math.floor(w/l)%f,S=Math.floor(w/u);return[x,C,S]})),m.initialize(v,y,{points:g,previewSegmentIndex:n,segmentIndex:n}),m.floodFillSegmentIsland(),m.removeExternalIslands(),m.removeInternalIslands()}getSegmentStyle({segmentationId:e,viewportId:r,segmentIndex:n}){return EW({segmentationId:e,segmentIndex:n,viewportId:r})}};O1.lastGrowCutCommand=null;let Sg=O1;Sg.toolName="GrowCutBaseTool";const LD=class LD extends Sg{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{isPartialVolume:!0,positiveSeedVariance:.5,negativeSeedVariance:.9}}){super(e,r),this._dragCallback=n=>{const i=n.detail,{element:o,currentPoints:a}=i,{world:s}=a,c=De(o),{viewport:l}=c;this.growCutData.circleBorderPoint=s,ke([l.id])},this._endCallback=async n=>{const i=n.detail,{element:o}=i,a=De(o),{viewport:s}=a;this.runGrowCut(),this._deactivateDraw(o),this.growCutData=null,Yt(o),ke([s.id])},this._deactivateDraw=n=>{n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback)}}async preMouseDownCallback(e){const r=e.detail,{element:n,currentPoints:i}=r,{world:o}=i,a=De(n),{viewport:s,renderingEngine:c}=a;return await super.preMouseDownCallback(e),Object.assign(this.growCutData,{circleCenterPoint:o,circleBorderPoint:o}),this._activateDraw(n),At(n),ke([s.id]),!0}async getGrowCutLabelmap(e){const{segmentation:{referencedVolumeId:r},renderingEngineId:n,viewportId:i,circleCenterPoint:o,circleBorderPoint:a,options:s}=e,l=ir(n).getViewport(i),f=sg(Sn(Ve(),o,a));return hz(r,{center:o,radius:f},l,s)}_activateDraw(e){e.addEventListener(U.MOUSE_UP,this._endCallback),e.addEventListener(U.MOUSE_DRAG,this._dragCallback),e.addEventListener(U.MOUSE_CLICK,this._endCallback)}renderAnnotation(e,r){if(!this.growCutData)return;const{viewport:n}=e,{segmentation:i,circleCenterPoint:o,circleBorderPoint:a}=this.growCutData,s=n.worldToCanvas(o),c=n.worldToCanvas(a),l=Ps(bt(),c,s),f=tee(l);if(Vt(f,0))return;const u="growcut",d="0",{color:h}=this.getSegmentStyle({segmentationId:i.segmentationId,segmentIndex:i.segmentIndex,viewportId:n.id});Zo(r,u,d,s,f,{color:h})}};LD.toolName="RegionSegment";let G_=LD;const ND=class ND extends Sg{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{isPartialVolume:!1,positiveSeedVariance:.4,negativeSeedVariance:.9,subVolumePaddingPercentage:.1,islandRemoval:{enabled:!1}}}){super(e,r),this.mouseTimer=null,this.allowedToProceed=!1}mouseMoveCallback(e){if(this.mode!==Fn.Active)return;const r=e.detail,{currentPoints:n,element:i}=r,{world:o}=n;i.style.cursor="default",this.mouseTimer!==null&&(window.clearTimeout(this.mouseTimer),this.mouseTimer=null),this.mouseTimer=window.setTimeout(()=>{this.onMouseStable(e,o,i)},this.configuration.mouseStabilityDelay||500)}async onMouseStable(e,r,n){await super.preMouseDownCallback(e);const i=Ue.getVolume(this.growCutData.segmentation.referencedVolumeId),o=mz(i,r,{})||{positiveSeedIndices:new Set,negativeSeedIndices:new Set},{positiveSeedIndices:a,negativeSeedIndices:s}=o;let c;a.size/s.size>20||s.size<30?(c="not-allowed",this.allowedToProceed=!1):(c="copy",this.allowedToProceed=!0);const l=De(n);n&&(n.style.cursor=c,requestAnimationFrame(()=>{n.style.cursor!==c&&(n.style.cursor=c)})),this.allowedToProceed&&(this.seeds=o),l&&l.viewport&&l.viewport.render()}async preMouseDownCallback(e){if(!this.allowedToProceed)return!1;const r=e.detail,{currentPoints:n,element:i}=r;De(i)&&(i.style.cursor="wait",requestAnimationFrame(()=>{i.style.cursor!=="wait"&&(i.style.cursor="wait")}));const{world:a}=n;return await super.preMouseDownCallback(e),this.growCutData=$i(this.growCutData,{worldPoint:a,islandRemoval:{worldIslandPoints:[a]}}),this.growCutData.worldPoint=a,this.growCutData.islandRemoval={worldIslandPoints:[a]},await this.runGrowCut(),i&&(i.style.cursor="default"),!0}getRemoveIslandData(e){const{worldPoint:r}=e;return{worldIslandPoints:[r]}}async getGrowCutLabelmap(e){const{segmentation:{referencedVolumeId:r},worldPoint:n,options:i}=e,{subVolumePaddingPercentage:o}=this.configuration,a={...i,subVolumePaddingPercentage:o,seeds:this.seeds};return vz({referencedVolumeId:r,worldPosition:n,options:a})}};ND.toolName="RegionSegmentPlus";let W_=ND;const Q4e=[-1/0,-995],e8e=[0,1900],t8e=[1e3,1900],{transformWorldToIndex:$2,transformIndexToWorld:$3}=Dn;class pj extends Sg{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{isPartialVolume:!0,positivePixelRange:e8e,negativePixelRange:Q4e,islandRemoval:{enabled:!0,islandPixelRange:t8e}}}){super(e,r),this._dragCallback=n=>{const i=n.detail,{element:o,currentPoints:a}=i,{world:s}=a,c=De(o),{viewport:l}=c,f=this._getHorizontalLineWorldPoints(c,s);this.growCutData.horizontalLines[1]=f,ke([l.id])},this._endCallback=async n=>{const i=n.detail,{element:o}=i,a=De(o),{viewport:s}=a;await this.runGrowCut(),this._deactivateDraw(o),this.growCutData=null,Yt(o),ke([s.id])},this._deactivateDraw=n=>{n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback)}}async preMouseDownCallback(e){const r=e.detail,{element:n,currentPoints:i}=r,{world:o}=i,a=De(n),{viewport:s,renderingEngine:c}=a,l=this._getHorizontalLineWorldPoints(a,o);return await super.preMouseDownCallback(e),this.growCutData.horizontalLines=[l,l],this._activateDraw(n),At(n),ke([s.id]),!0}renderAnnotation(e,r){if(!this.growCutData)return;const{segmentation:n,horizontalLines:i}=this.growCutData;if(i.length!==2)return;const{viewport:o}=e,{segmentationId:a,segmentIndex:s}=n,[c,l]=i,[f,u]=c,[d,h]=l,g=[f,u,h,d].map(S=>o.worldToCanvas(S)),p="growCutRect",v="0",{color:y,fillColor:m,lineWidth:w,fillOpacity:x,lineDash:C}=this.getSegmentStyle({segmentationId:a,segmentIndex:s,viewportId:o.id});Rs(r,p,v,g,{color:y,fillColor:m,fillOpacity:x,lineWidth:w,lineDash:C,closePath:!0})}async getGrowCutLabelmap(e){const{segmentation:{segmentIndex:r,referencedVolumeId:n},renderingEngineId:i,viewportId:o,horizontalLines:a}=e,c=ir(i).getViewport(o),[l,f]=a,u=[l[0],l[1],f[1],f[0]],d=Ue.getVolume(n),{topLeft:h,bottomRight:g}=this._getWorldBoundingBoxFromProjectedSquare(c,u),p=$2(d.imageData,h),v=$2(d.imageData,g),y={boundingBox:{ijkTopLeft:p,ijkBottomRight:v}},m=this.configuration,w={positiveSeedValue:r,negativeSeedValue:255,negativePixelRange:m.negativePixelRange,positivePixelRange:m.positivePixelRange};return gz(n,y,w)}getRemoveIslandData(){const{segmentation:{segmentIndex:e,referencedVolumeId:r,labelmapVolumeId:n}}=this.growCutData,i=Ue.getVolume(r),o=Ue.getVolume(n),a=i.voxelManager.getCompleteScalarDataArray(),s=o.voxelManager.getCompleteScalarDataArray(),{islandPixelRange:c}=this.configuration.islandRemoval,l=[];for(let f=0,u=s.length;f=c[0]&&d<=c[1]&&l.push(f)}return{islandPointIndexes:l}}_activateDraw(e){e.addEventListener(U.MOUSE_UP,this._endCallback),e.addEventListener(U.MOUSE_DRAG,this._dragCallback),e.addEventListener(U.MOUSE_CLICK,this._endCallback)}_projectWorldPointAcrossSlices(e,r,n){const i=this._getViewportVolume(e),{dimensions:o}=i,a=$2(i.imageData,r),s=n.findIndex(f=>Vt(Math.abs(f),1));if(s===-1)throw new Error("Non-orthogonal direction vector");const c=[...a],l=[...a];return c[s]=0,l[s]=o[s]-1,[c,l]}_getCuboidIJKEdgePointsFromProjectedWorldPoint(e,r){const{viewPlaneNormal:n}=e.getCamera();return this._projectWorldPointAcrossSlices(e,r,n)}_getWorldCuboidCornerPoints(e,r){const n=[],i=this._getViewportVolume(e);return r.forEach(o=>{const s=this._getCuboidIJKEdgePointsFromProjectedWorldPoint(e,o).map(c=>$3(i.imageData,c));n.push(...s)}),n}_getWorldBoundingBoxFromProjectedSquare(e,r){const n=this._getWorldCuboidCornerPoints(e,r),i=[...n[0]],o=[...n[0]];return n.forEach(a=>{$Q(i,i,a),zQ(o,o,a)}),{topLeft:i,bottomRight:o}}_getViewportVolume(e){if(!(e instanceof Ir))throw new Error("Viewport is not a BaseVolumeViewport");const r=e.getAllVolumeIds()[0];return Ue.getVolume(r)}_getHorizontalLineIJKPoints(e,r){const{viewport:n}=e,i=this._getViewportVolume(n),{dimensions:o}=i,a=$2(i.imageData,r),{viewUp:s,viewPlaneNormal:c}=n.getCamera(),f=mn(Ve(),s,c).findIndex(h=>Vt(Math.abs(h),1)),u=[...a],d=[...a];return u[f]=0,d[f]=o[f]-1,[u,d]}_getHorizontalLineWorldPoints(e,r){const{viewport:n}=e,i=this._getViewportVolume(n),[o,a]=this._getHorizontalLineIJKPoints(e,r),s=$3(i.imageData,o),c=$3(i.imageData,a);return[s,c]}}pj.toolName="WholeBodySegment";function n8e(t,e,r=!0){const n=Object.assign({},e,{segmentIndex:0});jb(t,n)}function r8e(t,e){n8e(t,e,!0)}class mj extends h0{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE:jb,ERASE_INSIDE:r8e},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=De(a),{viewport:l}=c;this.isDrawing=!0;const f=l.getCamera(),{viewPlaneNormal:u,viewUp:d}=f,h=Bu(l.id);if(!h)throw new Error("No active segmentation detected, create one before using scissors tool");const{segmentationId:g}=h,p=pa(g),v=b0(g),y=Ll(l.id,g,p),{representationData:m}=an(g),w=m[Pt.Labelmap],x={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:[...u],viewUp:[...d],FrameOfReferenceUID:l.getFrameOfReferenceUID(),referencedImageId:"",toolName:this.getToolName(),segmentColor:y},data:{handles:{points:[[...s],[...s],[...s],[...s]],activeHandleIndex:null}}},C=St(a,this.getToolName());if(this.editData={annotation:x,segmentIndex:p,segmentationId:g,segmentsLocked:v,segmentColor:y,viewportIdsToRender:C,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1,volumeId:null,referencedVolumeId:null,imageId:null},l instanceof Ir){const{volumeId:S}=w,T=Ue.getVolume(S);this.editData={...this.editData,volumeId:S,referencedVolumeId:T.referencedVolumeId}}else{const S=ed(l.id,g);this.editData={...this.editData,imageId:S}}return this._activateDraw(a),At(a),n.preventDefault(),ke(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=De(o),{worldToCanvas:d,canvasToWorld:h}=u.viewport,g=f.world,{points:p}=l.handles;p[c]=[...g];let v,y,m,w,x,C,S,T;switch(c){case 0:case 3:v=d(p[0]),w=d(p[3]),y=[w[0],v[1]],m=[v[0],w[1]],C=h(y),S=h(m),p[1]=C,p[2]=S;break;case 1:case 2:y=d(p[1]),m=d(p[2]),v=[m[0],y[1]],w=[y[0],m[1]],x=h(v),T=h(w),p[0]=x,p[3]=T;break}a.invalidated=!0,this.editData.hasMoved=!0,ke(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),Yt(o);const f=De(o),u={...this.editData,points:l.handles.points,createMemo:this.createMemo.bind(this)};this.editData=null,this.isDrawing=!1,this.applyActiveStrategy(f,u),this.doneEditMemo()},this._activateDraw=n=>{n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragCallback),n.addEventListener(U.MOUSE_MOVE,this._dragCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback)},this._deactivateDraw=n=>{n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_MOVE,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.TOUCH_TAP,this._endCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.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()?(yv(i,l,"0",d[0],d[3],{color:h}),o=!0,o):(console.warn("Rendering Engine has been destroyed"),o)}}}mj.toolName="RectangleScissor";class vj extends h0{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE:Hx,ERASE_INSIDE:nz},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=De(a),{viewport:f}=l;this.isDrawing=!0;const u=f.getCamera(),{viewPlaneNormal:d,viewUp:h}=u,g=Bu(f.id);if(!g)throw new Error("No active segmentation detected, create one before using scissors tool");const{segmentationId:p}=g,v=pa(p),y=b0(p),m=Ll(f.id,p,v),{representationData:w}=an(p),x=w.Labelmap;if(!x)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:y,segmentColor:m,viewportIdsToRender:S,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1,volumeId:null,referencedVolumeId:null,imageId:null},f instanceof Ir){const{volumeId:T}=x,_=Ue.getVolume(T);this.editData={...this.editData,volumeId:T,referencedVolumeId:_.referencedVolumeId}}else{const T=ed(f.id,p);this.editData={...this.editData,imageId:T}}return this._activateDraw(a),At(a),n.preventDefault(),ke(S),!0},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{currentPoints:a}=i,s=a.canvas,c=De(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]),y=Math.abs(s[1]-g[1]),m=Math.sqrt(v*v+y*y),w=[g[0],g[1]+m],x=[g[0],g[1]-m],C=[g[0]-m,g[1]],S=[g[0]+m,g[1]];p.handles.points=[u(w),u(x),u(C),u(S)],d.invalidated=!0,this.editData.hasMoved=!0,ke(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),Yt(o);const d=De(o),h={...this.editData,points:l.handles.points,viewPlaneNormal:f,viewUp:u,createMemo:this.createMemo.bind(this)};this.editData=null,this.isDrawing=!1,this.applyActiveStrategy(d,h),this.doneEditMemo()},this._activateDraw=n=>{n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.MOUSE_MOVE,this._dragCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragCallback),n.addEventListener(U.TOUCH_END,this._endCallback)},this._deactivateDraw=n=>{n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.MOUSE_MOVE,this._dragCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragCallback),n.removeEventListener(U.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(x=>a.worldToCanvas(x)),g=h[0],p=h[1],v=[Math.floor((g[0]+p[0])/2),Math.floor((g[1]+p[1])/2)],y=Math.abs(g[1]-Math.floor((g[1]+p[1])/2)),m=`rgb(${l.segmentColor.slice(0,3)})`;return a.getRenderingEngine()?(Zo(i,f,"0",v,y,{color:m}),o=!0,o):(console.warn("Rendering Engine has been destroyed"),o)}}}vj.toolName="CircleScissor";class yj extends h0{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE:ez,ERASE_INSIDE:tz},defaultStrategy:"FILL_INSIDE",activeStrategy:"FILL_INSIDE"}}){super(e,r),this.preMouseDownCallback=n=>{if(this.isDrawing===!0)return;this.doneEditMemo();const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=o.canvas,l=De(a),{viewport:f}=l;this.isDrawing=!0;const u=f.getCamera(),{viewPlaneNormal:d,viewUp:h}=u,g=Bu(f.id);if(!g)throw new Error("No active segmentation detected, create one before using scissors tool");const{segmentationId:p}=g,v=pa(p),y=b0(p),m=Ll(f.id,p,v);this.isDrawing=!0;const w={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}},x=[f.id];this.editData={annotation:w,centerCanvas:c,segmentIndex:v,segmentationId:p,segmentsLocked:y,segmentColor:m,toolGroupId:this.toolGroupId,viewportIdsToRender:x,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1,volumeId:null,referencedVolumeId:null,imageId:null};const{representationData:C}=an(p),S=this.getEditData({viewport:f,representationData:C,segmentsLocked:y,segmentationId:p});return this.editData={...this.editData,...S},this._activateDraw(a),At(a),n.preventDefault(),ke(x),!0},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{currentPoints:a}=i,s=a.canvas,c=De(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]),y=Math.abs(s[1]-g[1]),m=Math.sqrt(v*v+y*y),w=[g[0],g[1]+m],x=[g[0],g[1]-m],C=[g[0]-m,g[1]],S=[g[0]+m,g[1]];p.handles.points=[u(w),u(x),u(C),u(S)],d.invalidated=!0,this.editData.hasMoved=!0,ke(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),Yt(o);const g=De(o),p={...this.editData,points:u.handles.points,segmentIndex:l,segmentsLocked:f,viewPlaneNormal:d,viewUp:h,createMemo:this.createMemo.bind(this)};this.editData=null,this.isDrawing=!1,this.applyActiveStrategy(g,p),this.doneEditMemo()},this._activateDraw=n=>{n.addEventListener(U.MOUSE_UP,this._endCallback),n.addEventListener(U.MOUSE_DRAG,this._dragCallback),n.addEventListener(U.MOUSE_CLICK,this._endCallback),n.addEventListener(U.MOUSE_MOVE,this._dragCallback),n.addEventListener(U.TOUCH_END,this._endCallback),n.addEventListener(U.TOUCH_TAP,this._endCallback),n.addEventListener(U.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=n=>{n.removeEventListener(U.MOUSE_UP,this._endCallback),n.removeEventListener(U.MOUSE_DRAG,this._dragCallback),n.removeEventListener(U.MOUSE_CLICK,this._endCallback),n.removeEventListener(U.MOUSE_MOVE,this._dragCallback),n.removeEventListener(U.TOUCH_END,this._endCallback),n.removeEventListener(U.TOUCH_DRAG,this._dragCallback),n.removeEventListener(U.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(x=>a.worldToCanvas(x)),g=h[0],p=h[1],v=[Math.floor((g[0]+p[0])/2),Math.floor((g[1]+p[1])/2)],y=Math.abs(g[1]-Math.floor((g[1]+p[1])/2)),m=`rgb(${l.segmentColor.slice(0,3)})`;return a.getRenderingEngine()?(Zo(i,f,"0",v,y,{color:m}),o=!0,o):(console.warn("Rendering Engine has been destroyed"),o)}}}yj.toolName="SphereScissor";const{transformWorldToIndex:z3}=Dn;class wj extends yw{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{simplified:!0,storePointData:!1,numSlicesToPropagate:10,calculatePointsInsideVolume:!0,getTextLines:i8e,statsCalculator:Al,showTextBox:!1,throttleTimeout:100}}){super(e,r),this.isHandleOutsideImage=!1,this.addNewAnnotation=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=De(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 hr)throw new Error("Stack Viewport Not implemented");{const _=this.getTargetId(l);v=Bl(_),p=Ue.getVolume(v),g=Pu(p,s,d)}const y=Jf(p,d),m=this._getStartCoordinate(s,y,d),w=this._getEndCoordinate(s,y,d),x=l.getFrameOfReferenceUID();let C;this.configuration.simplified?C=[[...s],[...s]]:C=[[...s],[...s],[...s],[...s],[...s]];const S={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...h],FrameOfReferenceUID:x,referencedImageId:g,volumeId:v,spacingInNormal:y,enabledElement:c},data:{label:"",startCoordinate:m,endCoordinate:w,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:C,activeHandleIndex:null},cachedStats:{pointsInVolume:[],projectionPoints:[],statistics:[]},labelmapUID:null}};this._computeProjectionPoints(S,p),rn(S,a);const T=St(a,this.getToolName());return this.editData={annotation:S,viewportIdsToRender:T,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),At(a),n.preventDefault(),ke(T),S},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),Yt(o);const{metadata:u}=a,{enabledElement:d}=u;this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&nn(a.annotationUID);const h=this.getTargetId(d.viewport),g=Ue.getVolume(h.split(/volumeId:|\?/)[1]);this._computePointsInsideVolume(a,g,h,d),ke(s),c?Un(a):cn(a,o)},this.renderAnnotation=(n,i)=>{var l;let o=!1;const{viewport:a}=n;let s=ln(this.getToolName(),a.element);if(!(s!=null&&s.length))return o;s=Fx(s,a.getCamera());const c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id};for(let f=0;fa.worldToCanvas(Ie)),_=T[0],E=Lf([T[0],T[1]]),{centerPointRadius:b}=this.configuration,D=Vd([T[0],T[1]]),I=a.getCamera().focalPoint,P=a.getCamera().viewPlaneNormal;let M=p,L=v;Array.isArray(p)&&(M=this._getCoordinateForViewplaneNormal(M,P),h.startCoordinate=M),Array.isArray(v)&&(L=this._getCoordinateForViewplaneNormal(L,P),h.endCoordinate=L);const B=xf(h.startCoordinate),j=xf(h.endCoordinate),V=this._getCoordinateForViewplaneNormal(I,P),F=xf(V);if(FMath.max(B,j))continue;const G=xf((h.startCoordinate+h.endCoordinate)/2);let X=!1;F===G&&(X=!0),h.handles.points[0][this._getIndexOfCoordinatesForViewplaneNormal(P)]=G;const ne=(l=w.viewport)==null?void 0:l.volumeIds.values();for(const Ie of ne)u.invalidated&&u.metadata.volumeId===Ie&&this._throttledCalculateCachedStats(u,w);if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;let ue;if(!ni(d))continue;!ti(d)&&!this.editData&&m!==null&&X&&(this.configuration.simplified?ue=[T[m]]:ue=T),ue&&sr(i,d,"0",ue,{color:S});let me=x,ge=C;X?(me=x,ge=[]):ge=[5,5];const ye="0";if(Zo(i,d,ye,_,E,{color:S,lineDash:ge,lineWidth:me}),b>0&&E>3*b&&Zo(i,d,`${ye}-center`,_,b,{color:S,lineDash:C,lineWidth:x}),o=!0,this.configuration.showTextBox){const Ie=this.getLinkedTextBoxStyle(c,u);if(!Ie.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}const Pe=this.configuration.getTextLines(h,{metadata:g});if(!Pe||Pe.length===0)continue;let Ee;h.handles.textBox.hasMoved||(Ee=Va(D),h.handles.textBox.worldPosition=a.canvasToWorld(Ee));const H=a.worldToCanvas(h.handles.textBox.worldPosition),Y=Lo(i,d,"1",Pe,H,[T[0],T[1]],{},Ie),{x:K,y:Z,width:ae,height:oe}=Y;h.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([K,Z]),topRight:a.canvasToWorld([K+ae,Z]),bottomLeft:a.canvasToWorld([K,Z+oe]),bottomRight:a.canvasToWorld([K+ae,Z+oe])}}}return o},this.configuration.calculatePointsInsideVolume?this._throttledCalculateCachedStats=ea(this._calculateCachedStatsTool,this.configuration.throttleTimeout,{trailing:!0}):this._throttledCalculateCachedStats=$g(this._calculateCachedStatsTool,this.configuration.throttleTimeout)}_computeProjectionPoints(e,r){const{data:n,metadata:i}=e,{viewPlaneNormal:o,spacingInNormal:a}=i,{startCoordinate:s,endCoordinate:c}=n,{points:l}=n.handles,f=this._getIndexOfCoordinatesForViewplaneNormal(o),u=Vh(l[0]);u[f]=s;const d=Vh(l[0]);d[f]=c;const h=Ve();pn(h,d,u);const g=_i(h);if(g===0){const y=l.map(m=>{const w=Vh(m);return w[f]=s,Array.from(w)});n.cachedStats.projectionPoints=[y];return}en(h,h);const p=Is(l);p[0][f]=s,p[1][f]=s;const v=[];for(let y=0;y<=g+1e-6;y+=a)v.push(p.map(m=>{const w=Ve();return bn(w,m,h,y),Array.from(w)}));n.cachedStats.projectionPoints=v}_computePointsInsideVolume(e,r,n,i){var b,D,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(P=>l.worldToCanvas(P)),g=Vd([h[0],h[1]])[0],p=Vd([h[0],h[1]])[1],v=l.canvasToWorld(g),y=l.canvasToWorld(p),{worldWidth:m,worldHeight:w}=Hg(s,c,v,y),x=Na(d,o.handles.points),C=Db(d),S=Math.abs(Math.PI*(m/x.scale/2)*(w/C/x.scale/2)),T={isPreScaled:Gu(l,n),isSuvScaled:this.isSuvScaled(l,n,e.metadata.referencedImageId)},_=Wu(a.Modality,e.metadata.referencedImageId,T);for(let P=0;Pl.worldToCanvas(Ee)),[B,j]=Vd([L[0],L[1]]),V=l.canvasToWorld(B),F=l.canvasToWorld(j),G=V,X=F,{dimensions:ne,imageData:ue,voxelManager:me}=r,ge=z3(ue,G),ye=z3(ue,M),Ie=this._getIndexOfCoordinatesForViewplaneNormal(s);ge[0]=Math.floor(ge[0]),ge[1]=Math.floor(ge[1]),ge[2]=Math.floor(ge[2]),ge[Ie]=ye[Ie];const Pe=z3(ue,X);if(Pe[0]=Math.floor(Pe[0]),Pe[1]=Math.floor(Pe[1]),Pe[2]=Math.floor(Pe[2]),Pe[Ie]=ye[Ie],this._isInsideVolume(ge,Pe,ne)){const Ee=Math.min(ge[0],Pe[0]),H=Math.max(ge[0],Pe[0]),O=Math.min(ge[1],Pe[1]),Y=Math.max(ge[1],Pe[1]),K=Math.min(ge[2],Pe[2]),Z=Math.max(ge[2],Pe[2]),ae=[[Ee,H],[O,Y],[K,Z]],_e={center:M,xRadius:Math.abs(V[0]-F[0])/2,yRadius:Math.abs(V[1]-F[1])/2,zRadius:Math.abs(V[2]-F[2])/2},Oe=me.forEach(this.configuration.statsCalculator.statsCallback,{isInObject:Ge=>Dx(_e,Ge),boundsIJK:ae,imageData:ue,returnPoints:this.configuration.storePointData});u.push(Oe)}}const E=this.configuration.statsCalculator.getStatistics();o.cachedStats.pointsInVolume=u,o.cachedStats.statistics={Modality:a.Modality,area:S,mean:(b=E.mean)==null?void 0:b.value,stdDev:(D=E.stdDev)==null?void 0:D.value,max:(I=E.max)==null?void 0:I.value,statsArray:E.array,areaUnit:x.areaUnit,modalityUnit:_}}_calculateCachedStatsTool(e,r){const n=e.data,{viewport:i}=r,{cachedStats:o}=n,a=this.getTargetId(i),s=Ue.getVolume(a.split(/volumeId:|\?/)[1]);return this._computeProjectionPoints(e,s),this._computePointsInsideVolume(e,s,a,r),e.invalidated=!1,cn(e,i.element),o}_getStartCoordinate(e,r,n){const i=this.configuration.numSlicesToPropagate,o=Math.round(i/2),a=Ve();return bn(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=Ve();return bn(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 i8e(t,e={}){const r=t.cachedStats.statistics,{area:n,mean:i,max:o,stdDev:a,areaUnit:s,modalityUnit:c}=r;if(i===void 0)return;const l=[];return l.push(`Area: ${un(n)} ${s}`),l.push(`Mean: ${un(i)} ${c}`),l.push(`Max: ${un(o)} ${c}`),l.push(`Std Dev: ${un(a)} ${c}`),l}wj.toolName="CircleROIStartEndThreshold";const{transformWorldToIndex:jM,isEqual:j3}=Dn;class xj extends mi{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=De(a),{viewport:l}=c,f=l.getCamera(),{viewPlaneNormal:u}=f,d=Bu(l.id);if(!d)throw new Error("No active segmentation detected, create one before using scissors tool");const{segmentationId:h}=d,g=pa(h),p=b0(h),{representationData:v}=an(h);let y,m,w,x;if(this.doneEditMemo(),l instanceof Ir){const{volumeId:L}=v[Pt.Labelmap],B=Ue.getVolume(L);({dimensions:y,direction:m}=B),x=B.voxelManager,w=jM(B.imageData,s)}else{const L=ed(l.id,h);if(!L)throw new Error("No active segmentation imageId detected, create one before using scissors tool");const{imageData:B}=l.getImageData();y=B.getDimensions(),m=B.getDirection(),x=Ue.getImage(L).voxelManager,w=jM(B,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:b}=this.generateHelpers(x,y,w,C);if(w[0]<0||w[0]>=y[0]||w[1]<0||w[1]>=y[1]||w[2]<0||w[2]>=y[2])return;const D=T(w[0],w[1],w[2]);if(p.includes(D))return;const I=zb(S,E),{flooded:P}=I;P.forEach(L=>{const B=_(L[0],L[1]);x.setAtIndex(B,g)});const M=this.getFramesModified(C,b,I);return Ro(h,M),!0},this.getFramesModified=(n,i,o)=>{const{flooded: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(j3(a,s))return 0;const c=[Math.abs(i[0]),Math.abs(i[1]),Math.abs(i[2])];if(j3(a,c))return 1;const l=[Math.abs(o[0]),Math.abs(o[1]),Math.abs(o[2])];if(j3(a,l))return 2}}xj.toolName="PaintFill";const o8e={TOP_LEFT:"TOP_LEFT",TOP_RIGHT:"TOP_RIGHT",BOTTOM_LEFT:"BOTTOM_LEFT",BOTTOM_RIGHT:"BOTTOM_RIGHT"};var aD={Corners:o8e};const{vtkErrorMacro:H3}=Q,{Corners:z2}=aD;function a8e(t,e){e.classHierarchy.push("vtkOrientationMarkerWidget");const r={...t},n=[],i=FV.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(),y=e._interactor.getView(),m=y.getSize(),[w,x]=y.getViewportSize(d),C=Math.min(w,x);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 z2.TOP_LEFT:return[h,v-_,h+T,v];case z2.TOP_RIGHT:return[p-T,v-_,p,v];case z2.BOTTOM_LEFT:return[h,g,h+T,g+_];case z2.BOTTOM_RIGHT:return[p-T,g,p,g+_];default:return H3("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 y=i.getActiveCamera();y.setPosition(g[0],g[1],g[2]),y.setFocalPoint(p[0],p[1],p[2]),y.setViewUp(v[0],v[1],v[2]),i.resetCamera()}},t.setEnabled=d=>{var h,g;if(d){if(e.enabled)return;if(!e.actor){H3("Must set actor before enabling orientation marker.");return}if(!e._interactor){H3("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(y=>{y.type==="ActiveCameraEvent"&&(s&&s.unsubscribe(),s=y.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 s8e={viewportCorner:aD.Corners.BOTTOM_LEFT,viewportSize:.2,minPixelSize:50,maxPixelSize:200,parentRenderer:null,interactiveRenderer:!1};function Cj(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,s8e,r),Q.obj(t,e),Q.get(t,e,["enabled","viewportCorner","viewportSize","interactiveRenderer"]),Q.setGet(t,e,["_interactor","minPixelSize","maxPixelSize","parentRenderer"]),Q.get(t,e,["actor"]),Q.moveToProtected(t,e,["interactor"]),a8e(t,e)}const c8e=Q.newInstance(Cj,"vtkOrientationMarkerWidget");var HM={newInstance:c8e,extend:Cj,...aD};function Sj(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=Qm.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=Nt.newInstance({numberOfComponents:4,values:new Uint8Array(s.data.buffer)});return l.setName("scalars"),c.getPointData().setScalars(l),c}function l8e(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),Sj(r)}var u8e={canvasToImageData:Sj,imageToImageData:l8e};const Tj={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 _j(t,e){e.set(t)}function f8e(t,e){return _j(Tj[t],e)}function d8e(t,e){Tj[t]=e}var h8e={applyDefinitions:_j,applyPreset:f8e,registerStylePreset:d8e};const g8e={xPlus:0,xMinus:1,yPlus:2,yMinus:3,zPlus:4,zMinus:5};function p8e(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=Xo.newInstance(),o=C0.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=u8e.canvasToImageData(n);o.setInputData(h,g8e[c]),t.modified()}function s(){r=tk.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 m8e={defaultStyle:{text:"",faceColor:"white",faceRotation:0,fontFamily:"Arial",fontColor:"black",fontStyle:"normal",fontSizeScale:t=>t/1.8,edgeThickness:.1,edgeColor:"black",resolution:200}};function Ej(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,m8e,r),os.extend(t,e,r),Q.get(t,e,["defaultStyle","xPlusFaceProperty","xMinusFaceProperty","yPlusFaceProperty","yMinusFaceProperty","zPlusFaceProperty","zMinusFaceProperty"]),p8e(t,e)}const v8e=Q.newInstance(Ej,"vtkAnnotatedCubeActor");var KM={newInstance:v8e,extend:Ej,Presets:h8e};const{vtkErrorMacro:y8e}=Q;function w8e(t,e){let r=0;return t.map((n,i)=>i===r?(r+=n+1,n):n+e)}function j2(t,e,r,n){t.set(w8e(e,r),n)}function x8e(t,e){e.classHierarchy.push("vtkAppendPolyData"),t.requestData=(r,n)=>{const i=t.getNumberOfInputPorts();if(!i){y8e("No input specified.");return}if(i===1){n[0]=r[0];return}const o=Dr.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 D=0;Dc?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===E5.SINGLE?s=xn.FLOAT:e.outputPointsPrecision===E5.DOUBLE&&(s=xn.DOUBLE);const y=cg.newInstance({dataType:s});y.setNumberOfPoints(a);const m=y.getData(),w=new Uint32Array(f),x=new Uint32Array(u),C=new Uint32Array(d),S=new Uint32Array(h);let T=null,_=null,E=null;const b=r[i-1];if(g){const D=b.getPointData().getNormals();T=Nt.newInstance({numberOfComponents:3,numberOfTuples:a,size:3*a,dataType:D.getDataType(),name:D.getName()})}if(p){const D=b.getPointData().getTCoords();_=Nt.newInstance({numberOfComponents:2,numberOfTuples:a,size:2*a,dataType:D.getDataType(),name:D.getName()})}if(v){const D=b.getPointData().getScalars();E=Nt.newInstance({numberOfComponents:D.getNumberOfComponents(),numberOfTuples:a,size:a*D.getNumberOfComponents(),dataType:D.getDataType(),name:D.getName()})}a=0,f=0,u=0,d=0,h=0;for(let D=0;D2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,C8e,r),Q.setGet(t,e,["outputPointsPrecision"]),Q.obj(t,e),Q.algo(t,e,1,1),x8e(t,e)}const S8e=Q.newInstance(bj,"vtkAppendPolyData");var Dj={newInstance:S8e,extend:bj};function T8e(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=Q.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;no.buildFromRadian().translate(...e.center).rotateFromDirections([1,0,0],e.direction).apply(u),o=Dr.newInstance(),o.getPoints().setData(u,3),o.getPolys().setData(h,1),i[0]=o}t.requestData=r}const _8e={height:1,radius:.5,resolution:6,center:[0,0,0],direction:[1,0,0],capping:!0,pointType:"Float64Array"};function Ij(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,_8e,r),Q.obj(t,e),Q.setGet(t,e,["height","radius","resolution","capping"]),Q.setGetArray(t,e,["center","direction"],3),Q.algo(t,e,0,1),T8e(t,e)}const E8e=Q.newInstance(Ij,"vtkConeSource");var b8e={newInstance:E8e,extend:Ij};function D8e(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=Q.newTypedArray(e.pointType,s*3);let f=0;const u=new Uint32Array(c),d=new Float32Array(s*3),h=Nt.newInstance({numberOfComponents:3,values:d,name:"Normals"}),g=new Float32Array(s*2),p=Nt.newInstance({numberOfComponents:2,values:g,name:"TCoords"}),v=[0,0,0],y=[0,0,0],m=[0,0,0],w=[0,0,0],x=[0,0],C=[0,0],S=e.otherRadius==null?e.radius:e.otherRadius;for(let T=0;TT*-1)).apply(l),o=Dr.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 I8e={height:1,initAngle:0,radius:1,resolution:6,center:[0,0,0],direction:[0,1,0],capping:!0,pointType:"Float64Array"};function Mj(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,I8e,r),Q.obj(t,e),Q.setGet(t,e,["height","initAngle","otherRadius","radius","resolution","capping"]),Q.setGetArray(t,e,["center","direction"],3),Q.algo(t,e,0,1),D8e(t,e)}const M8e=Q.newInstance(Mj,"vtkCylinderSource");var O8e={newInstance:M8e,extend:Mj};function P8e(t,e){e.classHierarchy.push("vtkArrowSource");function r(n,i){if(e.deleted)return;const o=O8e.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();no.buildFromDegree().rotateZ(-90).apply(s).apply(c);const l=b8e.newInstance();l.setResolution(e.tipResolution),l.setHeight(e.tipLength),l.setRadius(e.tipRadius);const f=l.getOutputData(),u=f.getPoints().getData();no.buildFromRadian().translate(1-e.tipLength*.5,0,0).apply(u);const d=Dj.newInstance();d.setInputData(a),d.addInputData(f);const h=d.getOutputData(),g=h.getPoints().getData();no.buildFromRadian().translate(-.5+e.tipLength*.5,0,0).apply(g),e.invert?(no.buildFromRadian().rotateFromDirections([1,0,0],e.direction).scale(-1,-1,-1).apply(g),i[0]=h):(no.buildFromRadian().rotateFromDirections([1,0,0],e.direction).scale(1,1,1).apply(g),i[0]=d.getOutputData())}t.requestData=r}const R8e={tipResolution:6,tipRadius:.1,tipLength:.35,shaftResolution:6,shaftRadius:.03,invert:!1,direction:[1,0,0],pointType:"Float64Array"};function Oj(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,R8e,r),Q.obj(t,e),Q.setGet(t,e,["tipResolution","tipRadius","tipLength","shaftResolution","shaftRadius","invert"]),Q.setGetArray(t,e,["direction"],3),Q.algo(t,e,0,1),P8e(t,e)}const A8e=Q.newInstance(Oj,"vtkArrowSource");var K3={newInstance:A8e,extend:Oj};function X3(t){const e=t.getPoints().getBounds(),r=[-(e[0]+e[1])*.5,-(e[2]+e[3])*.5,-(e[4]+e[5])*.5];no.buildFromDegree().translate(...r).apply(t.getPoints().getData())}function q3(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],no.buildFromDegree().translate(...i).apply(t.getPoints().getData())}function Y3(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=K3.newInstance({direction:[1,0,0],...i}).getOutputData();e.config.recenter?X3(o):q3(o,0,i.invert),Y3(o,...i.color),i={...e.config,...e.yConfig};const a=K3.newInstance({direction:[0,1,0],...i}).getOutputData();e.config.recenter?X3(a):q3(a,1,i.invert),Y3(a,...i.color),i={...e.config,...e.zConfig};const s=K3.newInstance({direction:[0,0,1],...i}).getOutputData();e.config.recenter?X3(s):q3(s,2,i.invert),Y3(s,...i.color);const c=Dj.newInstance();c.setInputData(o),c.addInputData(a),c.addInputData(s),r.setInputConnection(c.getOutputPort())},t.update();const n=Q.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 N8e(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 Pj(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};os.extend(t,e,N8e(r)),Q.setGet(t,e,["config","xConfig","yConfig","zConfig"]),L8e(t,e)}const k8e=Q.newInstance(Pj,"vtkAxesActor");var V8e={newInstance:k8e,extend:Pj},Tw;(function(t){t[t.ANNOTATED_CUBE=1]="ANNOTATED_CUBE",t[t.AXES=2]="AXES",t[t.CUSTOM=3]="CUSTOM"})(Tw||(Tw={}));const ul=class ul extends mi{constructor(e={},r={configuration:{orientationWidget:{enabled:!0,viewportCorner:HM.Corners.BOTTOM_RIGHT,viewportSize:.15,minPixelSize:100,maxPixelSize:300},overlayMarkerType:ul.OVERLAY_MARKER_TYPES.ANNOTATED_CUBE,overlayConfiguration:{[ul.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}},[ul.OVERLAY_MARKER_TYPES.AXES]:{},[ul.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=()=>kr(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}=Qn(n,i),{element:a}=o;a.removeEventListener(qe.VOLUME_VIEWPORT_NEW_VOLUME,this.initViewports.bind(this)),this._resizeObservers.get(n).unobserve(a)})};ze.removeEventListener(U.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}=Qn(n,i),{element:a}=o;this.initViewports(),a.addEventListener(qe.VOLUME_VIEWPORT_NEW_VOLUME,this.initViewports.bind(this));const s=new ResizeObserver(()=>{setTimeout(()=>{const c=Qn(n,i);if(!c)return;const{viewport:l}=c;this.resize(n),l.render()},100)});s.observe(a),this._resizeObservers.set(n,s)})};e(),ze.addEventListener(U.TOOLGROUP_VIEWPORT_ADDED,r=>{r.detail.toolGroupId===this.toolGroupId&&(e(),this.initViewports())})}cleanUpData(){Yo()[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().getOffscreenMultiRenderWindow(i.id).getRenderWindow().render(),i.getRenderingEngine().render(),delete this.orientationMarkers[i.id]})}initViewports(){const r=Yo()[0];if(!r)return;let n=r.getViewports();n=Ax(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=V8e.newInstance():n===3&&(o=await this.createCustomActor());const a=e.getRenderer(),s=e.getRenderingEngine().getOffscreenMultiRenderWindow(r).getRenderWindow(),{enabled:c,viewportCorner:l,viewportSize:f,minPixelSize:u,maxPixelSize:d}=this.configuration.orientationWidget,h=HM.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[Tw.CUSTOM].polyDataURL,n=await(await fetch(e)).arrayBuffer(),i=dU.newInstance();i.parseAsArrayBuffer(n),i.update();const o=Dr.newInstance();o.shallowCopy(i.getOutputData()),o.getPointData().setActiveScalars("Color");const a=Xo.newInstance();a.setInputData(o),a.setColorModeToDirectScalars();const s=os.newInstance();return s.setMapper(a),s.rotateZ(180),s}createAnnotationCube(e){const r=KM.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=KM.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}};ul.CUBE=1,ul.AXIS=2,ul.VTPFILE=3,ul.OVERLAY_MARKER_TYPES=Tw;let _w=ul;_w.toolName="OrientationMarker";const P1=class P1 extends mi{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{hoverTimeout:100,mode:P1.SelectMode.Border,searchRadius:6}}){super(e,r),this.mouseMoveCallback=n=>{if(this.mode===Fn.Active)return 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(je.isInteractingWithTool)return;const{element:r,currentPoints:n}=e.detail,i=n.world,o=De(r);if(!o)return;const{viewport:a}=o,s=Bu(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===P1.SelectMode.Inside?s=Hb(o,r,{viewport:n}):a.Labelmap?s=uz(o,r,{viewport:n,searchRadius:this.configuration.searchRadius}):a.Contour?s=dz(o):a.Surface,!s||s===0)return;Mm(o,s);const l=n.getRenderingEngine().getViewports().map(f=>f.id);us(o),ke(l)}};P1.SelectMode={Inside:"Inside",Border:"Border"};let Ew=P1;Ew.toolName="SegmentSelectTool";const bh=class bh extends Dm{constructor(e={}){super(e),this.renderAnnotation=(r,n)=>{let i=!0;const{viewport:o}=r,{element:a}=o,s=o.id;let c=ln(this.getToolName(),a);if(!(c!=null&&c.length)||(c=this.filterInteractableAnnotationsForElement(a,c),!(c!=null&&c.length)))return i;const l=this.getTargetId(o),f=o.getRenderingEngine(),u={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:r.viewport.id};for(let d=0;do.worldToCanvas(ge));u.annotationUID=g;const{segmentIndex:w,segmentationId:x}=h.metadata,{lineWidth:C,lineDash:S,shadow:T}=this.getAnnotationStyle({annotation:h,styleSpecifier:u}),E=`rgb(${Ll(s,x,w).slice(0,3).join(",")})`;if(!p.cachedStats[l]||p.cachedStats[l].unit==null?(p.cachedStats[l]={length:null,width:null,unit:null},this._calculateCachedStats(h,f,r)):h.invalidated&&this._throttledCalculateCachedStats(h,f,r),!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;let b;if(!ni(g))continue;!ti(g)&&!this.editData&&y!==null&&(b=[m[y]]),b&&sr(n,g,"0",b,{color:E});const D=`${g}-line-1`,I=`${g}-line-2`;fn(n,g,"0",m[0],m[1],{color:E,lineWidth:C,lineDash:S,shadow:T},D),fn(n,g,"1",m[2],m[3],{color:E,lineWidth:C,lineDash:S,shadow:T},I),i=!0;const L=this.getLinkedTextBoxStyle(u,h);if(!L.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}L.color=E;const B=this.configuration.getTextLines(p,l);if(!B||B.length===0)continue;let j;p.handles.textBox.hasMoved||(j=Va(m),p.handles.textBox.worldPosition=o.canvasToWorld(j));const V=o.worldToCanvas(p.handles.textBox.worldPosition),G=Lo(n,g,"1",B,V,m,{},L),{x:X,y:ne,width:ue,height:me}=G;p.handles.textBox.worldBoundingBox={topLeft:o.canvasToWorld([X,ne]),topRight:o.canvasToWorld([X+ue,ne]),bottomLeft:o.canvasToWorld([X,ne+me]),bottomRight:o.canvasToWorld([X+ue,ne+me])}}return i}}addNewAnnotation(e){const r=e.detail,{currentPoints:n,element:i}=r,o=n.world,a=De(i),{viewport:s}=a;this.isDrawing=!0;const c=s.getCamera(),{viewPlaneNormal:l,viewUp:f}=c,u=this.getReferencedImageId(s,o,l,f),d=s.getFrameOfReferenceUID(),h={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...l],viewUp:[...f],FrameOfReferenceUID:d,referencedImageId:u,...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:{}}};rn(h,i);const g=St(i,this.getToolName());return this.editData={annotation:h,viewportIdsToRender:g,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(i),At(i),e.preventDefault(),ke(g),h}};bh.toolName="SegmentBidirectional",bh.hydrate=(e,r,n)=>{const i=Vn(e);if(!i)return;const{viewport:o}=i,c=uv().filter(T=>T.metadata.toolName==="SegmentBidirectional").find(T=>{const{metadata:_}=T;return _.segmentIndex===(n==null?void 0:n.segmentIndex)&&_.segmentationId===(n==null?void 0:n.segmentationId)});c&&nn(c.annotationUID);const{FrameOfReferenceUID:l,referencedImageId:f,viewPlaneNormal:u,instance:d}=bh.hydrateBase(bh,i,r[0],n),[h,g]=r,[p,v]=h,[y,m]=g,w=[p,v,y,m],{toolInstance:x,...C}=n||{},S={annotationUID:(n==null?void 0:n.annotationUID)||Pn(),data:{handles:{points:w,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:n==null?void 0:n.segmentIndex,segmentationId:n==null?void 0:n.segmentationId,toolName:d.getToolName(),viewPlaneNormal:u,FrameOfReferenceUID:l,referencedImageId:f,...C}};return rn(S,o.element),ke([o.id]),S};let $_=bh;class Rj extends mi{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]}}}}},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{hoverTimeout:100,searchRadius:6,color:null,background:null}}){super(e,r),this.mouseMoveCallback=n=>(this.hoverTimer&&clearTimeout(this.hoverTimer),this.hoverTimer=setTimeout(()=>{this._setHoveredSegment(n),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(je.isInteractingWithTool)return;const{element:r,currentPoints:n}=e.detail,i=n.world,o=De(r);if(!o)return;const{viewport:a}=o,s=Bu(a.id);s&&this._setHoveredSegmentForType(s,i,a)}_setHoveredSegmentForType(e,r,n){if(!n.getImageData())return;const{segmentationId:o}=e,a=Hb(o,r,{viewport:n}),s=e.segments[a],c=this.configuration.color??Ll(n.id,o,a),l=s==null?void 0:s.label,f=n.worldToCanvas(r);if(this._editData={hoveredSegmentIndex:a,hoveredSegmentLabel:l,canvasCoordinates:f,color:c},!a||a===0)return;const d=n.getRenderingEngine().getViewports().map(h=>h.id);us(o),ke(d)}renderAnnotation(e,r){if(!this._editData)return;const{viewport:n}=e,{hoveredSegmentIndex:i,hoveredSegmentLabel:o,canvasCoordinates:a,color:s}=this._editData;if(!i)return;const c=-15,l=[a[0]+c,a[1]+c],f=Lu(r,"segmentSelectLabelAnnotation","segmentSelectLabelTextBox",[o??"(unnamed segment)"],l,{color:`rgba(${s[0]}, ${s[1]}, ${s[2]}, ${s[3]})`,background:this.configuration.background??void 0}),u=a[0],d=a[1],{width:h,height:g}=f;this.data.handles.textBox.worldBoundingBox={topLeft:n.canvasToWorld([u,d]),topRight:n.canvasToWorld([u+h,d]),bottomLeft:n.canvasToWorld([u,d+g]),bottomRight:n.canvasToWorld([u+h,d+g])}}}Rj.toolName="SegmentLabelTool";const Go=class Go extends Nl{constructor(e={}){const r=$i({configuration:{calculateStats:!1,allowOpenContours:!1}},e);super(r),this.onViewportAddedToToolGroupBinded=this.onViewportAddedToToolGroup.bind(this),this.onSegmentationModifiedBinded=this.onSegmentationModified.bind(this)}initializeListeners(){Go.annotationsToViewportMap.clear(),Go.viewportIdsChecked=[],ze.addEventListener(U.ANNOTATION_MODIFIED,this.annotationModified),ze.addEventListener(U.ANNOTATION_COMPLETED,this.annotationCompleted),ze.addEventListener(U.TOOLGROUP_VIEWPORT_ADDED,this.onViewportAddedToToolGroupBinded),ze.addEventListener(U.SEGMENTATION_MODIFIED,this.onSegmentationModifiedBinded)}cleanUpListeners(){Go.annotationsToViewportMap.clear(),Go.viewportIdsChecked=[],ze.removeEventListener(U.ANNOTATION_MODIFIED,this.annotationModified),ze.removeEventListener(U.ANNOTATION_COMPLETED,this.annotationCompleted),ze.removeEventListener(U.TOOLGROUP_VIEWPORT_ADDED,this.onViewportAddedToToolGroup.bind(this)),ze.removeEventListener(U.SEGMENTATION_MODIFIED,this.onSegmentationModified.bind(this))}async checkContourSegmentation(e){if(Go.viewportIdsChecked.includes(e))return;const r=u0(e);if(!r)return console.log("No active segmentation detected"),!1;const n=r.segmentationId;return r.representationData.Contour?Go.viewportIdsChecked.push(e):(Go.viewportIdsChecked.push(e),await Kb(e,[{segmentationId:n,type:Pt.Contour}]),tb({segmentationId:n,type:Pt.Contour,data:{}})),!0}onViewportAddedToToolGroup(e){const{toolGroupId:r,viewportId:n}=e.detail;r===this.toolGroupId&&this.checkContourSegmentation(n)}onSegmentationModified(e){const{segmentationId:r}=e.detail||{};if(!r)return;const n=fG(r);n&&n.forEach(async({viewportId:i})=>await this.checkContourSegmentation(i))}onSetToolEnabled(){this.initializeListeners()}onSetToolActive(){this.initializeListeners()}onSetToolDisabled(){this.cleanUpListeners()}annotationModified(e){var a;const{annotation:r,renderingEngineId:n,viewportId:i}=e.detail,o=(a=ir(n))==null?void 0:a.getViewport(i);o&&Go.annotationsToViewportMap.set(r.annotationUID,o)}annotationCompleted(e){var i,o;const{annotation:r}=e.detail,{polyline:n}=((i=r.data)==null?void 0:i.contour)||{};if(((o=r==null?void 0:r.metadata)==null?void 0:o.toolName)===Go.toolName&&n&&Go.annotationsToViewportMap.has(r.annotationUID)){const a=Go.annotationsToViewportMap.get(r.annotationUID);n.length>3&&Xx.viewportContoursToLabelmap(a)}}};Go.toolName="LabelMapEditWithContour",Go.annotationsToViewportMap=new Map,Go.viewportIdsChecked=[];let z_=Go;const kD=class kD extends cr{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=De(o),{viewport:c}=s;this.isDrawing=!0;const l=this.constructor.createAnnotationForViewport(c,{data:{handles:{points:[[...a],[...a],[...a],[...a]]}}});rn(l,o);const f=St(o,this.getToolName(),!1);return this.editData={annotation:l,viewportUIDsToRender:f,handleIndex:3,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),At(o),r.preventDefault(),ke(f),l},this.getHandleNearImagePoint=(r,n,i,o)=>{const a=De(r),{viewport:s}=a,{data:c}=n,{points:l}=c.handles;for(let f=0;f{const a=De(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:y}=d;if(mb([g,p,v,y],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=St(a,this.getToolName(),!1);this.editData={annotation:n,viewportUIDsToRender:c},this._activateModify(a),At(a),ke(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=St(s,this.getToolName(),!1);this.editData={annotation:n,viewportUIDsToRender:f,handleIndex:l},this._activateModify(s),At(s),ke(f),r.preventDefault()},this._endCallback=r=>{const n=r.detail,{element:i}=n,{annotation:o,viewportUIDsToRender:a,newAnnotation:s,hasMoved:c}=this.editData,{data:l}=o;s&&!c||(this.doneEditMemo(),l.active=!1,l.handles.activeHandleIndex=null,this._deactivateModify(i),this._deactivateDraw(i),Yt(i),this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&nn(o.annotationUID),ke(a))},this._dragCallback=r=>{this.isDrawing=!0;const n=r.detail,{element:i}=n,{annotation:o,viewportUIDsToRender:a,handleIndex:s,newAnnotation:c}=this.editData;this.createMemo(i,o,{newAnnotation:c});const{data:l}=o;if(s===void 0){const{deltaPoints:f}=n,u=f.world,{points:d}=l.handles;d.forEach(h=>{h[0]+=u[0],h[1]+=u[1],h[2]+=u[2]}),l.invalidated=!0}else{const{currentPoints:f}=n,u=De(i),{worldToCanvas:d,canvasToWorld:h}=u.viewport,g=f.world,{points:p}=l.handles;p[s]=[...g];let v,y,m,w,x,C,S,T;switch(s){case 0:case 3:v=d(p[0]),w=d(p[3]),y=[w[0],v[1]],m=[v[0],w[1]],C=h(y),S=h(m),p[1]=C,p[2]=S;break;case 1:case 2:y=d(p[1]),m=d(p[2]),v=[m[0],y[1]],w=[y[0],m[1]],x=h(v),T=h(w),p[0]=x,p[3]=T;break}l.invalidated=!0}this.editData.hasMoved=!0,De(i),ke(a)},this._activateDraw=r=>{je.isInteractingWithTool=!0,r.addEventListener(U.MOUSE_UP,this._endCallback),r.addEventListener(U.MOUSE_DRAG,this._dragCallback),r.addEventListener(U.MOUSE_MOVE,this._dragCallback),r.addEventListener(U.MOUSE_CLICK,this._endCallback),r.addEventListener(U.TOUCH_END,this._endCallback),r.addEventListener(U.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=r=>{je.isInteractingWithTool=!1,r.removeEventListener(U.MOUSE_UP,this._endCallback),r.removeEventListener(U.MOUSE_DRAG,this._dragCallback),r.removeEventListener(U.MOUSE_MOVE,this._dragCallback),r.removeEventListener(U.MOUSE_CLICK,this._endCallback),r.removeEventListener(U.TOUCH_END,this._endCallback),r.removeEventListener(U.TOUCH_DRAG,this._dragCallback)},this._activateModify=r=>{je.isInteractingWithTool=!0,r.addEventListener(U.MOUSE_UP,this._endCallback),r.addEventListener(U.MOUSE_DRAG,this._dragCallback),r.addEventListener(U.MOUSE_CLICK,this._endCallback),r.addEventListener(U.TOUCH_END,this._endCallback),r.addEventListener(U.TOUCH_DRAG,this._dragCallback)},this._deactivateModify=r=>{je.isInteractingWithTool=!1,r.removeEventListener(U.MOUSE_UP,this._endCallback),r.removeEventListener(U.MOUSE_DRAG,this._dragCallback),r.removeEventListener(U.MOUSE_CLICK,this._endCallback),r.removeEventListener(U.TOUCH_END,this._endCallback),r.removeEventListener(U.TOUCH_DRAG,this._dragCallback)},this.renderAnnotation=(r,n)=>{const{viewport:o}=r,{element:a}=o;let s=ln(this.getToolName(),a);if(!(s!=null&&s.length)||(s=this.filterInteractableAnnotationsForElement(a,s),!(s!=null&&s.length)))return!1;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),y=this.getStyle("lineDash",c,f),m=this.getStyle("color",c,f);if(!o.getRenderingEngine()){console.warn("Rendering Engine has been destroyed");return}let w;!this.editData&&g!==null&&(w=[p[g]]),w&&sr(n,u,"0",w,{color:m}),XG(n,u,"0",p[0],p[3],{color:"black",lineDash:y,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 v=0;vvr(r,i)&&vr(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=ea(this._calculateCachedStats,100,{trailing:!0})}cancel(e){if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),Yt(e);const{annotation:r,viewportUIDsToRender:n}=this.editData,{data:i}=r;return i.active=!1,i.handles.activeHandleIndex=null,ke(n),this.editData=null,r.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=Ue.getVolume(e);return{imageVolume:n,viewport:i}}_getTargetStackUID(e){return`stackTarget:${e.uid}`}};kD.toolName="VideoRedaction";let j_=kD;const Aj=Object.freeze(Object.defineProperty({__proto__:null,AdvancedMagnifyTool:Lm,AngleTool:L_,AnnotationDisplayTool:td,AnnotationTool:cr,ArrowAnnotateTool:Kf,BaseTool:mi,BidirectionalTool:Dm,BrushTool:Xx,CONSTANTS:KCe,CircleROIStartEndThresholdTool:wj,CircleROITool:yw,CircleScissorsTool:vj,CobbAngleTool:N_,CrosshairsTool:dl,DragProbeTool:O_,ETDRSGridTool:P_,EllipticalROITool:p0,Enums:sB,EraserTool:gj,HeightTool:M_,KeyImageTool:B_,LabelMapEditWithContourTool:z_,LabelTool:vw,LabelmapBaseTool:h0,LengthTool:Hf,LivewireContourSegmentationTool:A_,LivewireContourTool:Cw,MIPJumpToClickTool:ij,MagnifyTool:oj,OrientationMarkerTool:_w,OverlayGridTool:aj,PaintFillTool:xj,PanTool:Nf,PlanarFreehandContourSegmentationTool:Nl,PlanarFreehandROITool:jf,PlanarRotateTool:xg,ProbeTool:Vu,RectangleROIStartEndThresholdTool:Wb,RectangleROIThresholdTool:$b,RectangleROITool:ku,RectangleScissorsTool:mj,ReferenceCursors:Xa,ReferenceLinesTool:Jd,RegionSegmentPlusTool:W_,RegionSegmentTool:G_,ScaleOverlayTool:uj,SculptorTool:Cg,SegmentBidirectionalTool:$_,SegmentLabelTool:Rj,SegmentSelectTool:Ew,SegmentationIntersectionTool:sj,SphereScissorsTool:yj,SplineContourSegmentationTool:R_,SplineROITool:ww,StackScrollTool:g0,Synchronizer:Vb,SynchronizerManager:f$,ToolGroupManager:TB,TrackballRotateTool:Qz,Types:DEe,UltrasoundDirectionalTool:k_,UltrasoundPleuraBLineTool:U_,VideoRedactionTool:j_,VolumeCroppingControlTool:nj,VolumeCroppingTool:tj,VolumeRotateTool:dj,WholeBodySegmentTool:pj,WindowLevelRegionTool:rj,WindowLevelTool:wg,ZoomTool:vu,addTool:Ui,annotation:qwe,cancelActiveManipulations:u$,cursors:Fme,destroy:zCe,drawing:dye,init:d$,removeTool:MB,segmentation:QEe,splines:i4e,get state(){return je},store:$Ce,synchronizers:g3e,utilities:bEe,version:XCe},Symbol.toStringTag,{value:"Module"}));function Lj(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 Z3(t,e,r){const n=t[`${e}PaletteColorLookupTableData`];if(n)return Promise.resolve(n);const i=ut("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 Fj(t,e,r){const n=t.columns*t.rows,i=t.pixelData;Promise.all([Z3(t,"red",null),Z3(t,"green",null),Z3(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=J3(o,d),g=J3(a,d),p=J3(s,d);if(r){for(let v=0;vu+c-1?y=c-1:y-=u,e[f++]=h[y],e[f++]=g[y],e[f++]=p[y],e[f++]=255}return}for(let v=0;vu+c-1?y=c-1:y-=u,e[f++]=h[y],e[f++]=g[y],e[f++]=p[y]}})}function Q3(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 eS(t,e,r){const n=[],i=t.elements[e];for(let o=0;o0?0:t.uint16("x00280103")}function kc(t,e,r){const n=[],i=t.string(e);if(!i)return;const o=i.split("\\");if(!(r&&o.lengthle.byteArray.length-le.position&&(gt=le.byteArray.length-le.position),de.fragments.push({offset:le.position-fe-8,position:le.position,length:gt}),le.seek(gt),void(de.length=le.position-de.dataOffset);de.fragments.push({offset:le.position-fe-8,position:le.position,length:gt}),le.seek(gt)}be&&be.push("pixel data element ".concat(de.tag," missing sequence delimiter tag xfffee0dd"))}function T(le,de){if(le===void 0)throw"dicomParser.findAndSetUNElementLength: missing required parameter 'byteStream'";for(var be=le.byteArray.length-8;le.position<=be;)if(le.readUint16()===65534){var pe=le.readUint16();if(pe===57565)return le.readUint32()!==0&&le.warnings("encountered non zero length following item delimiter at position ".concat(le.position-4," while reading element of undefined length with tag ").concat(de.tag)),void(de.length=le.position-de.dataOffset)}de.length=le.byteArray.length-de.dataOffset,le.seek(le.byteArray.length-le.position)}function _(le,de,be){if(be<0)throw"dicomParser.readFixedString - length cannot be less than 0";if(de+be>le.length)throw"dicomParser.readFixedString: attempt to read past end of buffer";for(var pe,Te="",Ye=0;Yede.byteArray.length)throw"dicomParser.parseDicomDataSetExplicit: invalid value for parameter 'maxP osition'";for(var Te=le.elements;de.positionbe)throw"dicomParser:parseDicomDataSetExplicit: buffer overrun"}function ue(le,de,be){var pe=3de.byteArray.length)throw"dicomParser.parseDicomDataSetImplicit: invalid value for parameter 'maxPosition'";for(var Te=le.elements;de.positionle.length)throw"bigEndianByteArrayParser.readUint16: attempt to read past end of buffer";return(le[de]<<8)+le[de+1]},readInt16:function(le,de){if(de<0)throw"bigEndianByteArrayParser.readInt16: position cannot be less than 0";if(de+2>le.length)throw"bigEndianByteArrayParser.readInt16: attempt to read past end of buffer";return de=(le[de]<<8)+le[de+1],de=32768&de?de-65535-1:de},readUint32:function(le,de){if(de<0)throw"bigEndianByteArrayParser.readUint32: position cannot be less than 0";if(de+4>le.length)throw"bigEndianByteArrayParser.readUint32: attempt to read past end of buffer";return 256*(256*(256*le[de]+le[de+1])+le[de+2])+le[de+3]},readInt32:function(le,de){if(de<0)throw"bigEndianByteArrayParser.readInt32: position cannot be less than 0";if(de+4>le.length)throw"bigEndianByteArrayParser.readInt32: attempt to read past end of buffer";return(le[de]<<24)+(le[de+1]<<16)+(le[de+2]<<8)+le[de+3]},readFloat:function(le,de){if(de<0)throw"bigEndianByteArrayParser.readFloat: position cannot be less than 0";if(de+4>le.length)throw"bigEndianByteArrayParser.readFloat: attempt to read past end of buffer";var be=new Uint8Array(4);return be[3]=le[de],be[2]=le[de+1],be[1]=le[de+2],be[0]=le[de+3],new Float32Array(be.buffer)[0]},readDouble:function(le,de){if(de<0)throw"bigEndianByteArrayParser.readDouble: position cannot be less than 0";if(de+8>le.length)throw"bigEndianByteArrayParser.readDouble: attempt to read past end of buffer";var be=new Uint8Array(8);return be[7]=le[de],be[6]=le[de+1],be[5]=le[de+2],be[4]=le[de+3],be[3]=le[de+4],be[2]=le[de+5],be[1]=le[de+6],be[0]=le[de+7],new Float64Array(be.buffer)[0]}};function Ie(le,de,be){if(typeof Buffer<"u"&&le instanceof Buffer)return le.slice(de,de+be);if(le instanceof Uint8Array)return new Uint8Array(le.buffer,le.byteOffset+de,be);throw"dicomParser.from: unknown type for byteArray"}function Pe(le,de){for(var be=0;be"u"||!(Te instanceof Buffer)))throw"dicomParser.ByteStream: parameter byteArray is not of type Uint8Array or Buffer";if(Ye<0)throw"dicomParser.ByteStream: parameter 'position' cannot be less than 0";if(Ye>=Te.length)throw"dicomParser.ByteStream: parameter 'position' cannot be greater than or equal to 'byteArray' length";this.byteArrayParser=pe,this.byteArray=Te,this.position=Ye||0,this.warnings=[]}var de,be;return de=le,(be=[{key:"seek",value:function(pe){if(this.position+pe<0)throw"dicomParser.ByteStream.prototype.seek: cannot seek to position < 0";this.position+=pe}},{key:"readByteStream",value:function(pe){if(this.position+pe>this.byteArray.length)throw"dicomParser.ByteStream.prototype.readByteStream: readByteStream - buffer overread";var Te=Ie(this.byteArray,this.position,pe);return this.position+=pe,new le(this.byteArrayParser,Te)}},{key:"getSize",value:function(){return this.byteArray.length}},{key:"readUint16",value:function(){var pe=this.byteArrayParser.readUint16(this.byteArray,this.position);return this.position+=2,pe}},{key:"readUint32",value:function(){var pe=this.byteArrayParser.readUint32(this.byteArray,this.position);return this.position+=4,pe}},{key:"readFixedString",value:function(pe){var Te=_(this.byteArray,this.position,pe);return this.position+=pe,Te}}])&&Pe(de.prototype,be),Object.defineProperty(de,"prototype",{writable:!1}),le}(),H={readUint16:function(le,de){if(de<0)throw"littleEndianByteArrayParser.readUint16: position cannot be less than 0";if(de+2>le.length)throw"littleEndianByteArrayParser.readUint16: attempt to read past end of buffer";return le[de]+256*le[de+1]},readInt16:function(le,de){if(de<0)throw"littleEndianByteArrayParser.readInt16: position cannot be less than 0";if(de+2>le.length)throw"littleEndianByteArrayParser.readInt16: attempt to read past end of buffer";return de=le[de]+(le[de+1]<<8),de=32768&de?de-65535-1:de},readUint32:function(le,de){if(de<0)throw"littleEndianByteArrayParser.readUint32: position cannot be less than 0";if(de+4>le.length)throw"littleEndianByteArrayParser.readUint32: attempt to read past end of buffer";return le[de]+256*le[de+1]+256*le[de+2]*256+256*le[de+3]*256*256},readInt32:function(le,de){if(de<0)throw"littleEndianByteArrayParser.readInt32: position cannot be less than 0";if(de+4>le.length)throw"littleEndianByteArrayParser.readInt32: attempt to read past end of buffer";return le[de]+(le[de+1]<<8)+(le[de+2]<<16)+(le[de+3]<<24)},readFloat:function(le,de){if(de<0)throw"littleEndianByteArrayParser.readFloat: position cannot be less than 0";if(de+4>le.length)throw"littleEndianByteArrayParser.readFloat: attempt to read past end of buffer";var be=new Uint8Array(4);return be[0]=le[de],be[1]=le[de+1],be[2]=le[de+2],be[3]=le[de+3],new Float32Array(be.buffer)[0]},readDouble:function(le,de){if(de<0)throw"littleEndianByteArrayParser.readDouble: position cannot be less than 0";if(de+8>le.length)throw"littleEndianByteArrayParser.readDouble: attempt to read past end of buffer";var be=new Uint8Array(8);return be[0]=le[de],be[1]=le[de+1],be[2]=le[de+2],be[3]=le[de+3],be[4]=le[de+4],be[5]=le[de+5],be[6]=le[de+6],be[7]=le[de+7],new Float64Array(be.buffer)[0]}};function O(le){var de=1"u")throw"dicomParser.parseDicom: no inflater available to handle deflate transfer syntax";return at=le.slice(Re),tt=pako.inflateRaw(at),(at=me(le,tt.length+Re)).set(le.slice(0,Re),0),at.set(tt,Re),new Ee(H,at,0)}(ft,gt.position),gt=new D(ft.byteArrayParser,ft.byteArray,{});gt.warnings=ft.warnings;try{(fe?ne:ue)(gt,ft,ft.byteArray.length,de)}catch(mt){throw{exception:mt,dataSet:gt}}return gt}return function(Ye,fe){for(var ft in Ye.elements)Ye.elements.hasOwnProperty(ft)&&(fe.elements[ft]=Ye.elements[ft]);return Ye.warnings!==void 0&&(fe.warnings=Ye.warnings.concat(fe.warnings)),fe}(be=O(le,de),Te(be))}var Z=function(le,de,be){for(var pe=0,Te=de;Te= 0";if(be>=fe.fragments.length)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragmentIndex' must be < number of fragments";if(pe<1)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'numFragments' must be > 0";if(be+pe>fe.fragments.length)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragment' + 'numFragments' < number of fragments";var Ye=new Ee(le.byteArrayParser,le.byteArray,fe.dataOffset),fe=L(Ye);if(fe.tag!=="xfffee000")throw"dicomParser.readEncapsulatedPixelData: missing basic offset table xfffee000";Ye.seek(fe.length);var ft=Ye.position;if(pe===1)return Ie(Ye.byteArray,ft+Te[be].offset+8,Te[be].length);for(var fe=Z(Te,be,pe),gt=me(Ye.byteArray,fe),mt=0,Re=be;Re= 0";if(be>=pe.length)throw"dicomParser.readEncapsulatedImageFrame: parameter 'frameIndex' must be < basicOffsetTable.length";var Ye=pe[be],Ye=oe(Te,Ye);if(Ye===void 0)throw"dicomParser.readEncapsulatedImageFrame: unable to find fragment that matches basic offset table entry";return ae(le,de,Ye,_e(be,pe,Te,Ye),Te)}var Ge=!1;function $e(le,de,be){if(Ge||(Ge=!0,console&&console.log&&console.log("WARNING: dicomParser.readEncapsulatedPixelData() has been deprecated")),le===void 0)throw"dicomParser.readEncapsulatedPixelData: missing required parameter 'dataSet'";if(de===void 0)throw"dicomParser.readEncapsulatedPixelData: missing required parameter 'element'";if(be===void 0)throw"dicomParser.readEncapsulatedPixelData: missing required parameter 'frame'";if(de.tag!=="x7fe00010")throw"dicomParser.readEncapsulatedPixelData: parameter 'element' refers to non pixel data tag (expected tag = x7fe00010)";if(de.encapsulatedPixelData!==!0||de.hadUndefinedLength!==!0||de.basicOffsetTable===void 0||de.fragments===void 0)throw"dicomParser.readEncapsulatedPixelData: parameter 'element' refers to pixel data element that does not have encapsulated pixel data";if(be<0)throw"dicomParser.readEncapsulatedPixelData: parameter 'frame' must be >= 0";return de.basicOffsetTable.length!==0?Oe(le,de,be):ae(le,de,0,de.fragments.length)}s.default={isStringVr:f,isPrivateTag:u,parsePN:d,parseTM:h,parseDA:p,explicitElementToString:v,explicitDataSetToJS:y,createJPEGBasicOffsetTable:x,parseDicomDataSetExplicit:ne,parseDicomDataSetImplicit:ue,readFixedString:_,alloc:me,version:ge,bigEndianByteArrayParser:ye,ByteStream:Ee,sharedCopy:Ie,DataSet:D,findAndSetUNElementLength:T,findEndOfEncapsulatedElement:S,findItemDelimitationItemAndSetElementLength:I,littleEndianByteArrayParser:H,parseDicom:K,readDicomElementExplicit:X,readDicomElementImplicit:M,readEncapsulatedImageFrame:Oe,readEncapsulatedPixelData:$e,readEncapsulatedPixelDataFromFragments:ae,readPart10Header:O,readSequenceItemsExplicit:F,readSequenceItemsImplicit:j,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})})(Gj);var br=Gj.exports;function Ev(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 K_={open(t,e){t.open("get",e,!0)},beforeSend(){},beforeProcessing(t){return Promise.resolve(t.response)},imageCreated(){},strict:!1};function Wj(t){K_=Object.assign(K_,t)}function bv(){return K_}function Jx(t,e,r={},n={}){const i=bv(),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),nt(ze,"cornerstoneimageloadstart",{url:t,imageId:e})},a.onloadend=function(d){i.onloadend&&i.onloadend(d,n),nt(ze,"cornerstoneimageloadend",{url:t,imageId:e})},a.onreadystatechange=function(d){i.onreadystatechange&&i.onreadystatechange(d,n),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){const h=d.loaded;let g,p;d.lengthComputable&&(g=d.total,p=Math.round(h/g*100)),nt(ze,"cornerstoneimageloadprogress",{url:t,imageId:e,loaded:h,total:g,percentComplete:p}),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 $8e(t,e,r){if(r+t.length>e.length)return!1;let n=r;for(let i=0;iy.createBuffer({size:m,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST}));y.queue.writeBuffer(b[0],0,new Uint32Array(h));const D=[0,1].map(()=>y.createBuffer({size:m,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST})),O=y.createBuffer({size:w,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST}),L=y.createBuffer({size:x,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST}),P=new Int32Array([l,f,u,-1,-1,-1]);y.queue.writeBuffer(L,0,P);const k=y.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"}}]}),G=[0,1].map(Oe=>{const Ve=b[Oe],Ge=D[Oe],ce=b[(Oe+1)%2],fe=D[(Oe+1)%2];return y.createBindGroup({layout:k,entries:[{binding:0,resource:{buffer:_}},{binding:1,resource:{buffer:E}},{binding:2,resource:{buffer:Ve}},{binding:3,resource:{buffer:Ge}},{binding:4,resource:{buffer:ce}},{binding:5,resource:{buffer:fe}},{binding:6,resource:{buffer:O}},{binding:7,resource:{buffer:L}}]})}),j=y.createComputePipeline({layout:y.createPipelineLayout({bindGroupLayouts:[k]}),compute:{module:C,entryPoint:"main",constants:{workGroupSizeX:n[0],workGroupSizeY:n[1],workGroupSizeZ:n[2],windowSize:i}}}),F=[Math.ceil(l/n[0]),Math.ceil(f/n[1]),Math.ceil(u/n[2])],U=y.createBuffer({size:w,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),W=o?performance.now()+o:0;let J=a.numCyclesInterval,te=0;for(let Oe=0;Oe0&&!(Oe%J)){await U.mapAsync(GPUMapMode.READ,0,w);const fe=U.getMappedRange(0,w),he=new Uint32Array(fe.slice(0))[Oe]/g.length;if(U.unmap(),Oe>=1&&heW){console.warn(`Exceeded processing time limit (${o})ms`);break}}const le=y.createCommandEncoder(),ve=(d+1)%2,pe=y.createBuffer({size:m,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),ye=y.createBuffer({size:x,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST});le.copyBufferToBuffer(b[ve],0,pe,0,m),le.copyBufferToBuffer(L,0,ye,0,x),y.queue.submit([le.finish()]),await pe.mapAsync(GPUMapMode.READ,0,m);const Ie=pe.getMappedRange(0,m),Le=new Uint32Array(Ie);h.set(Le),pe.unmap(),await ye.mapAsync(GPUMapMode.READ,0,x);const be=ye.getMappedRange(0,x),$=new Int32Array(be.slice(0));ye.unmap();const R=$[0],X=$[1],K=$[2],Z=$[3],ie=$[4],oe=$[5];c.voxelManager.setCompleteScalarDataArray(h),c.voxelManager.clearBounds(),c.voxelManager.setBounds([[R,Z],[X,ie],[K,oe]])}const{transformWorldToIndex:$m}=_n,FCe=254,UCe=255,BCe=.1,GCe=.8;function WCe(t,e){const{topLeftWorld:r,bottomRightWorld:n}=e,i=$m(t.imageData,r),o=$m(t.imageData,n);return{...e,topLeftIJK:i,bottomRightIJK:o}}function zCe(t,e){const r=t.imageData.getDirection(),n=bt(r[3],r[4],r[5]),{center:i,radius:o}=e,a=t.imageData,s=Cn(Be(),i,n,-o),c=Cn(Be(),i,n,o),l=TG([c,s],a);return WCe(t,l)}function $Ce(t,e,r){const n=t.imageData,i=r.getCamera(),{ijkVecRowDir:o,ijkVecColDir:a}=Ow(n,i);if([o,a].some(f=>!Kt(Math.abs(f[0]),1)&&!Kt(Math.abs(f[1]),1)&&!Kt(Math.abs(f[2]),1))){console.warn("Oblique view is not supported!");return}const{boundsIJK:c}=zCe(t,e),l={minX:c[0][0],maxX:c[0][1]+1,minY:c[1][0],maxY:c[1][1]+1,minZ:c[2][0],maxZ:c[2][1]+1};return EE(t.volumeId,l,{targetBuffer:{type:"Float32Array"}})}function jCe(t,e,r,n){const i=t.voxelManager.getCompleteScalarDataArray(),o=r.center,[a,s,c]=t.dimensions,l=a*s,f=$m(t.imageData,o),u=i[f[2]*l+f[1]*a+f[0]],d=n.positiveSeedValue??FCe,h=n.positiveSeedVariance??BCe,g=Math.abs(u*h),p=u-g,v=u+g,y=[[-1,0,0],[1,0,0],[0,-1,0],[0,1,0],[0,0,-1],[0,0,1]],m=f[2]*l+f[1]*a+f[0];e.voxelManager.setAtIndex(m,d);const w=[f];for(;w.length;){const x=w.shift(),[C,S,T]=x;for(let _=0,E=y.length;_=a||O<0||O>=s||L<0||L>=c)continue;const P=L*l+O*a+D,k=i[P];e.voxelManager.getAtIndex(P)===d||kv||(e.voxelManager.setAtIndex(P,d),w.push([D,O,L]))}}}function HCe(t,e,r,n,i){const o=t.voxelManager.getCompleteScalarDataArray(),[a,s,c]=e.dimensions,l=a*s,{worldVecRowDir:f,worldVecSliceDir:u}=Ow(e.imageData,n.getCamera()),d=$m(t.imageData,r.center),h=o[d[2]*a*s+d[1]*a+d[0]],g=i.negativeSeedVariance??GCe,p=(i==null?void 0:i.negativeSeedValue)??UCe,v=Math.abs(h*g),y=h-v,m=h+v,w=360,x=2*Math.PI/w,C=lw(mf(),u,x),S=YR(f);for(let T=0;T=a||D<0||D>=s||O<0||O>=c)continue;const L=b+D*a+O*l,P=o[L];(Pm)&&e.voxelManager.setAtIndex(L,p)}}async function KCe(t,e,r,n){const i=await w1(t.volumeId);return jCe(t,i,e,n),HCe(t,i,e,r,n),i}async function mW(t,e,r,n){const i=ke.getVolume(t),o=$Ce(i,e,r),a=await KCe(o,e,r,n);return await cx(o.volumeId,a.volumeId),a}const qCe=254,XCe=255,YCe=[-1/0,-995],JCe=[0,1900];function ZCe(t,e,r){const{negativeSeedValue:n=XCe,negativePixelRange:i=YCe}=r,o=t.voxelManager.getCompleteScalarDataArray(),[a,s,c]=e.dimensions,l=Math.floor(c/2),f=new Array(a*s).fill(!1),u=l*a*s,d=(g,p)=>{const v=[[g,p]];for(;v.length;){const[y,m]=v.shift(),w=m*a+y;if(y<0||y>=a||m<0||m>=s||f[w])continue;f[w]=!0;const x=u+w,C=o[x];Ci[1]||(e.voxelManager.setAtIndex(x,n),v.push([y-1,m]),v.push([y+1,m]),v.push([y,m-1]),v.push([y,m+1]))}},h=(g,p,v,y)=>{for(let m=g;m!==p;m+=v){const w=y*a+m,x=u+w,C=o[x];if(Ci[1])break;f[w]||d(m,y)}};for(let g=0;g=i[0]&&w<=i[1]&&e.voxelManager.setAtIndex(m,n)}}}}async function e3e(t,e){const r=w1(t.volumeId);return QCe(t,r,e),ZCe(t,r,e),r}async function vW(t,e,r){const{boundingBox:n}=e,{ijkTopLeft:i,ijkBottomRight:o}=n,a={minX:i[0],maxX:o[0],minY:i[1],maxY:o[1],minZ:i[2],maxZ:o[2]},s=EE(t,a,{targetBuffer:{type:"Float32Array"}}),c=await e3e(s,r);return await cx(s.volumeId,c.volumeId),c}const t3e=254,n3e=255,r3e=1,yW=1.8,i3e=3.2,lT=30,o3e=70,a3e=50,{transformWorldToIndex:s3e}=_n,up=1e5;function wW(t,e,r){const{dimensions:n,imageData:i}=t,[o,a,s]=n,c=t.voxelManager,l=c.getCompleteScalarDataArray(),f=o*a,u=(r==null?void 0:r.initialNeighborhoodRadius)??r3e,d=(r==null?void 0:r.positiveStdDevMultiplier)??yW,h=(r==null?void 0:r.negativeStdDevMultiplier)??i3e,g=(r==null?void 0:r.negativeSeedMargin)??lT,p=(r==null?void 0:r.negativeSeedsTargetPatches)??o3e,v=s3e(i,e).map(Math.round),y=c.toIndex(v);if(v[0]<0||v[0]>=o||v[1]<0||v[1]>=a||v[2]<0||v[2]>=s)return console.warn("Click position is outside volume bounds."),null;const m=VV(l,n,v,u);m.count===0&&(m.mean=l[y],m.stdDev=0);const w=m.mean-d*m.stdDev,x=m.mean+d*m.stdDev,C=[[-1,0,0],[1,0,0],[0,-1,0],[0,1,0],[0,0,-1],[0,0,1]];let S=1/0,T=1/0,_=1/0,E=-1/0,b=-1/0,D=-1/0;const O=new Set,L=[],P=l[y];if(P>=w&&P<=x)O.add(y),L.push(v),S=E=v[0],T=b=v[1],_=D=v[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 k=0;for(;k=o||ce<0||ce>=a||fe<0||fe>=s)continue;const Se=fe*f+ce*o+Ge;if(O.has(Se))continue;const he=l[Se];he>=w&&he<=x&&(O.add(Se),O.size=up&&console.debug(`Reached maximum number of positive seeds (${up}). Stopping BFS.`),O.size===0)return console.warn("No positive seeds found after BFS."),{positiveSeedIndices:new Set,negativeSeedIndices:new Set};let G=0,j=0;O.forEach(K=>{const Z=l[K];G+=Z,j+=Z*Z});const F=O.size,U=G/F,W=j/F-U*U,J=Math.sqrt(Math.max(0,W)),te=h*J,le=Math.max(0,S-g),ve=Math.max(0,T-g),pe=Math.max(0,_-g),ye=Math.min(o-1,E+g),Ie=Math.min(a-1,b+g),Le=Math.min(s-1,D+g),be=new Set;let $=0,R=0;const X=p*a3e;for(;Rte){let Oe=!1;for(let Ve=-1;Ve<=1;Ve++){const Ge=Z+Ve;if(!(Ge<0||Ge>=a))for(let ce=-1;ce<=1;ce++){const fe=K+ce;if(fe<0||fe>=o)continue;const Se=ie*f+Ge*o+fe;O.has(Se)||be.has(Se)||(be.add(Se),Oe=!0)}}Oe&&R++}}return be.size===0&&console.warn("Could not find any negative seeds. GrowCut might fail or produce poor results."),console.debug("positiveSeedIndices",O.size),console.debug("negativeSeedIndices",be.size),{positiveSeedIndices:O,negativeSeedIndices:be}}async function xW({referencedVolumeId:t,worldPosition:e,options:r}){const n=ke.getVolume(t),i=w1(t);i.voxelManager.forEach(({index:f,value:u})=>{u!==0&&i.voxelManager.setAtIndex(f,0)});const o=r.seeds??wW(n,e,r),a=(r==null?void 0:r.positiveSeedValue)??t3e,s=(r==null?void 0:r.negativeSeedValue)??n3e;if(!o)return null;const{positiveSeedIndices:c,negativeSeedIndices:l}=o;return c.size<10||c.size>up||l.size<10?(console.warn("Not enough seeds found. GrowCut might fail or produce poor results."),i):(c.forEach(f=>{i.voxelManager.setAtIndex(f,a)}),l.forEach(f=>{i.voxelManager.setAtIndex(f,s)}),await cx(t,i.volumeId,r),i)}const c3e=Object.freeze(Object.defineProperty({__proto__:null,run:cx,runGrowCutForBoundingBox:vW,runGrowCutForSphere:mW,runOneClickGrowCut:xW},Symbol.toStringTag,{value:"Module"}));function l3e(t,e){const{segmentationId:r,config:n}=e,i={colorLUTIndex:u3e(n),...n};er.addSegmentationRepresentation(t,r,e.type,i),e.type===Et.Contour&&Ne([t]),ns(r)}function u3e(t){const{colorLUTOrIndex:e}=t||{};return e===void 0?Lp(JSON.parse(JSON.stringify(T5))):typeof e=="number"?e:Array.isArray(e)&&e.every(n=>Array.isArray(n)&&n.length===4)?Lp(e):Lp(JSON.parse(JSON.stringify(T5)))}function mg(t,e){e.map(r=>l3e(t,r))}function k8(t,e){return mg(t,e.map(r=>({...r,type:Et.Contour})))}function f3e(t){const e={};for(const[r,n]of Object.entries(t))e[r]=k8(r,n);return e}function CW(t,e){return mg(t,e.map(r=>({...r,type:Et.Labelmap})))}function d3e(t){for(const[e,r]of Object.entries(t))CW(e,r.map(n=>({...n,type:Et.Labelmap})))}function SW(t,e){return mg(t,e.map(r=>({...r,type:Et.Surface})))}function h3e(t){const e={};for(const[r,n]of Object.entries(t))e[r]=SW(r,n);return e}async function g3e({segmentationId:t,viewportId:e,imageIds:r,options:n}){const i=An(t);if(n!=null&&n.removeOriginal){const o=i.representationData.Labelmap;ke.getVolume(o.volumeId)&&ke.removeVolumeLoadObject(o.volumeId),i.representationData.Labelmap={imageIds:r}}else i.representationData.Labelmap={...i.representationData.Labelmap,imageIds:r};await mg(e,[{segmentationId:t,type:Et.Labelmap}]),He.addEventListenerOnce(B.SEGMENTATION_RENDERED,()=>wo(t))}async function p3e({volumeId:t}){return{imageIds:ke.getVolume(t).imageIds}}function m3e({segmentationId:t,options:e}){const r=An(t);if(!r)return;const{volumeId:n}=r.representationData.Labelmap,i=ke.getVolume(n);return g3e({segmentationId:t,viewportId:e.viewportId,imageIds:i.imageIds,options:e})}async function TW(t){return yU(t)}async function v3e({segmentationId:t,segmentIndices:e,mode:r="individual"}){nx(),vl(Ja.COMPUTE_LARGEST_BIDIRECTIONAL,0);const n=BG(t,e);if(!n)return;const{operationData:i,segImageIds:o,reconstructableVolume:a,indices:s}=n,c=a?await y3e({operationData:i,indices:s,mode:r}):await w3e({segImageIds:o,indices:s,mode:r});return vl(Ja.COMPUTE_LARGEST_BIDIRECTIONAL,100),c}async function y3e({operationData:t,indices:e,mode:r}){const n=GG(t),{segmentationVoxelManager:i,segmentationImageData:o}=n,s={scalarData:i.getCompleteScalarDataArray(),dimensions:o.getDimensions(),spacing:o.getSpacing(),origin:o.getOrigin(),direction:o.getDirection()};return await xl().executeTask("compute","getSegmentLargestBidirectionalInternal",{segmentationInfo:s,indices:e,mode:r})}async function w3e({segImageIds:t,indices:e,mode:r}){const{segmentationInfo:n}=WG(t);return await xl().executeTask("compute","getSegmentLargestBidirectionalInternal",{segmentationInfo:n,indices:e,mode:r,isStack:!0})}function x3e(t){const e=An(t);if(!e)return null;let r;const n=e.representationData.Labelmap;if("imageIds"in n){const{imageIds:i}=n,o=ke.getImage(i[0]),a=ke.getVolumeContainingImageId(o.referencedImageId);if(a!=null&&a.volume)return a.volume;r=i.map(s=>ke.getImage(s).referencedImageId)}else if("volumeId"in n){const{volumeId:i,referencedVolumeId:o}=n;if(o){const s=ke.getVolume(o);if(s)return s}const a=ke.getVolume(i);a&&(r=a.imageIds.map(s=>ke.getImage(s).referencedImageId))}return ix(r)}async function C3e({segmentationIds:t,segmentIndex:e}){nx(),vl(Ja.COMPUTE_STATISTICS,0);const r=An(t[0]),{imageIds:n}=r.representationData.Labelmap;if(!Pf(n))throw new Error("Invalid volume - TMTV cannot be calculated");return await S3e({segmentationIds:t,segmentIndex:e})}async function S3e({segmentationIds:t,segmentIndex:e}){const r=t.map(p=>gg(p)),n=KG(r,e);if(!n)throw new Error("Invalid volume - TMTV cannot be calculated");const{imageData:i,dimensions:o,direction:a,origin:s,voxelManager:c}=n,l=i.getSpacing(),u={scalarData:c.getCompleteScalarDataArray(),dimensions:o,spacing:l,origin:s,direction:a},d=x3e(t[0]),h={dimensions:d.dimensions,spacing:d.spacing,origin:d.origin,direction:d.direction,scalarData:d.voxelManager.getCompleteScalarDataArray()};if(h.scalarData.length===0||u.scalarData.length===0)return{[e]:{name:"TMTV",value:0}};const g=await xl().executeTask("compute","computeMetabolicStats",{segmentationInfo:u,imageInfo:h});return vl(Ja.COMPUTE_STATISTICS,100),g}const T3e=Object.freeze(Object.defineProperty({__proto__:null,IslandRemoval:Bd,LabelmapMemo:cCe,SegmentStatsCalculator:cT,VolumetricCalculator:Sd,computeMetabolicStats:C3e,computeStackLabelmapFromVolume:p3e,computeVolumeLabelmapFromStack:TW,contourAndFindLargestBidirectional:uW,createBidirectionalToolData:fW,createLabelmapVolumeForViewport:Dxe,createMergedLabelmapForIndex:KG,floodFill:L8,getBrushSizeForToolGroup:wCe,getBrushThresholdForToolGroup:CCe,getBrushToolInstances:pg,getHoveredContourSegmentationAnnotation:pW,getOrCreateImageVolume:ix,getOrCreateSegmentationVolume:gg,getReferenceVolumeForSegmentationVolume:VG,getSegmentIndexAtLabelmapBorder:hW,getSegmentIndexAtWorldPoint:N8,getSegmentLargestBidirectional:v3e,getStatistics:JG,getUniqueSegmentIndices:fB,growCut:c3e,invalidateBrushCursor:dW,rectangleROIThresholdVolumeByRange:Exe,segmentContourAction:MCe,setBrushSizeForToolGroup:yCe,setBrushThresholdForToolGroup:xCe,thresholdSegmentationByRange:SCe,thresholdVolumeByRange:jG,triggerSegmentationRender:fg,triggerSegmentationRenderBySegmentationId:ex,validateLabelmap:dxe},Symbol.toStringTag,{value:"Module"}));function _3e(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 E3e(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 b3e=Object.freeze(Object.defineProperty({__proto__:null,getOrientationStringLPS:_3e,invertOrientationStringLPS:E3e},Symbol.toStringTag,{value:"Module"}));var mh;(function(t){t.CLIP_STOPPED="CORNERSTONE_CINE_TOOL_STOPPED",t.CLIP_STARTED="CORNERSTONE_CINE_TOOL_STARTED"})(mh||(mh={}));const V8={};function _W(t,e){const r=Ee(t),{viewportId:n}=r;V8[n]=e}function F8(t){const e=Ee(t),{viewportId:r}=e;return V8[r]}function D3e(t){return V8[t]}const{ViewportStatus:EW}=ts,{triggerEvent:WC}=_n,bW=!0,uT=new Map;function I3e(t,e){let r,n;if(t===void 0)throw new Error("playClip: element must not be undefined");const i=Ee(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=A3e(o,e);let s=F8(t);const c=e.dynamicCineEnabled;if(c&&IW(t),s?fT(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,bounce:e.bounce??!1},_W(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}=O3e(s.frameTimeVector,s.speed);r=u,n=d}e.bounce!==void 0&&(s.bounce=e.bounce);const l=()=>{const{numScrollSteps:u,currentStepIndex:d}=a;let h=d+(s.reverse?-1:1);if(h<0||h>=u)if(s.bounce)s.reverse=!s.reverse,h=d+(s.reverse?-1:1),h=Math.max(0,Math.min(u-1,h));else if(s.loop)h=s.reverse?u-1:0;else{fT(t,{stopDynamicCine:!c,viewportId:o.id}),WC(t,mh.CLIP_STOPPED,{element:t});return}const p=h-d;if(p)try{a.scroll(p)}catch(v){console.warn("Play clip not scrolling",v),OW(s),WC(t,mh.CLIP_STOPPED,{element:t})}};if(c){const u=U8(o);u&&uT.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};WC(t,mh.CLIP_STARTED,f)}function DW(t,e={}){fT(t,{stopDynamicCine:!0,...e})}function fT(t,e={stopDynamicCine:!0,viewportId:void 0}){const{stopDynamicCine:r,viewportId:n}=e,i=Ee(t);let o;const a=i==null?void 0:i.viewport;if(i){const{viewport:s}=i;o=F8(s.element)}else if(n)o=D3e(n);else return;o&&OW(o),a instanceof Lh?a.pause():r&&a instanceof Cr&&IW(t)}function IW(t){const{viewport:e}=Ee(t);if(e instanceof sr){const r=U8(e);if(r!=null&&r.isDynamicVolume()){const n=uT.get(r.volumeId);uT.delete(r.volumeId),n&&n!==t&&DW(n)}}}function O3e(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 OW(t){const e=t.intervalId;typeof e<"u"&&(t.intervalId=void 0,t.usingFrameTimeVector?clearTimeout(e):clearInterval(e))}function U8(t){if(!(t instanceof sr))return;const e=t.getAllVolumeIds();if(!(e!=null&&e.length))return;const n=e.find(i=>{var o;return(o=ke.getVolume(i))==null?void 0:o.isDynamicVolume()})??e[0];return ke.getVolume(n)}function M3e(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!==EW.RENDERED){this.waitForRenderedCount++;return}this.waitForRenderedCount=0,hc(t,{delta:n,debounceLoading:bW})}}}function P3e(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!==EW.RENDERED){this.waitForRenderedCount++;return}this.waitForRenderedCount=0,hc(t,{delta:r,debounceLoading:bW})},play(r){return r&&t.setPlaybackRate(r/24),t.play(),t.getFrameRate()}}}function R3e(t,e){const{volumeId:r}=e,n={viewPlaneNormal:Be(),scrollInfo:null},i=()=>{const o=t.getCamera();if(!n.scrollInfo||!pS(o.viewPlaneNormal,n.viewPlaneNormal)){const s=wd(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=St(a,o.viewPlaneNormal);return pf(s,1)},scroll(o){i().currentStepIndex+=o,hc(t,{delta:o})}}}function L3e(t){return{get numScrollSteps(){return t.numDimensionGroups},get currentStepIndex(){return t.dimensionGroupNumber-1},get frameTimeVectorEnabled(){return!1},scroll(e){t.scroll(e)}}}function A3e(t,e){if(t instanceof ar)return M3e(t,e.waitForRendered??30);if(t instanceof sr){const r=U8(t);return e.dynamicCineEnabled&&(r!=null&&r.isDynamicVolume())?L3e(r):R3e(t,r)}if(t instanceof Lh)return P3e(t,e.waitForRendered??30);throw new Error("Unknown viewport type")}const N3e=Object.freeze(Object.defineProperty({__proto__:null,Events:mh,addToolState:_W,getToolState:F8,playClip:I3e,stopClip:DW},Symbol.toStringTag,{value:"Module"}));function k3e(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 V3e(t,e){const r=Ea(),n=ni(Be(),e,t),i=Math.abs(t[0])>.1?bt(-t[1],t[0],0):bt(0,-t[2],t[1]);return h4(r,e,n,i),r}function ev(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=Wt(Be(),f,o);return[u[0],u[1]]});let s=n?ev(a):0,c=tT(a,0,a.length,(e==null?void 0:e.knotsRatioPercentage)||30);if(c===a)return!1;ev(c,-s);for(let f=1;f<(e==null?void 0:e.loop);f++)s=n?ev(c):0,c=tT(c,0,a.length,(e==null?void 0:e.knotsRatioPercentage)||30),ev(c,-s);const l=$r(Ea(),o);return t.data.contour.polyline=c.map(f=>Wt([0,0,0],[...f,0],l)),!0}const F3e={smoothAnnotation:MW},U3e=Object.freeze(Object.defineProperty({__proto__:null,default:F3e,smoothAnnotation:MW},Symbol.toStringTag,{value:"Module"})),B3e=Object.freeze(Object.defineProperty({__proto__:null,getBoundsIJKFromRectangleAnnotations:HG,isAxisAlignedRectangle:sW},Symbol.toStringTag,{value:"Module"})),PW={};function RW(t,e){const r=Ee(t),{viewportId:n}=r;PW[n]=e}function vg(t){const e=Ee(t),{viewportId:r}=e;return PW[r]}const Td=un.Prefetch,LW=0;function G3e(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 W3e(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 yg(t){const e=Ee(t);if(!e)return null;const{viewport:r}=e;return r instanceof ar?{currentImageIdIndex:r.getCurrentImageIdIndex(),imageIds:r.getImageIds()}:null}function lx(t){return function(e){const r=e.detail;let n;try{n=yg(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=vg(t);!a||!a.indicesToRequest||!a.indicesToRequest.length||a.indicesToRequest.push(o)}}const z3e=t=>{const e=new Set(t.imageIds);return r=>r.type!==Td||!e.has(r.additionalDetails.imageId)};let Ap={maxImagesToPrefetch:1/0,preserveExistingPool:!0},dT;const $3e=10;function AW(t){var g,p;const e=vg(t);if(!e)return;const r=e||{},n=yg(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 y=r.indicesToRequest.indexOf(v);y>-1&&r.indicesToRequest.splice(y,1)}if(e.indicesToRequest.sort((v,y)=>v-y),r.indicesToRequest.slice().forEach(function(v){const y=n.imageIds[v];if(!y)return;(Math.abs(i-v)<6?ke.getImageLoadObject(y):ke.isLoaded(y))&&o(v)}),!r.indicesToRequest.length)return;Ap.preserveExistingPool||Ai.clearRequestStack(Td);const s=W3e(r.indicesToRequest,n.currentImageIdIndex);let c,l,f=s.low,u=s.high;const d=[];for(;f>=0||uAp.maxImagesToPrefetch,m=r.indicesToRequest[u]-v>Ap.maxImagesToPrefetch,w=!y&&f>=0,x=!m&&uDs(v,y);d.forEach(v=>{const y={requestType:Td};Ai.addRequest(h.bind(null,v,y),Td,{imageId:v},LW)})}function hT(t){clearTimeout(dT),dT=setTimeout(function(){const e=t.target;try{AW(e)}catch{return}},$3e)}function j3e(t){const e=yg(t);if(!e||!e.imageIds||e.imageIds.length===0){console.warn("CornerstoneTools.stackPrefetch: No images in stack.");return}const r={indicesToRequest:G3e(0,e.imageIds.length-1),enabled:!0,direction:1},n=r.indicesToRequest.indexOf(e.currentImageIdIndex);r.indicesToRequest.splice(n,1),RW(t,r),AW(t),t.removeEventListener(Xe.STACK_NEW_IMAGE,hT),t.addEventListener(Xe.STACK_NEW_IMAGE,hT);const i=lx(t);He.removeEventListener(Xe.IMAGE_CACHE_IMAGE_REMOVED,i),He.addEventListener(Xe.IMAGE_CACHE_IMAGE_REMOVED,i)}function H3e(t){clearTimeout(dT),t.removeEventListener(Xe.STACK_NEW_IMAGE,hT);const e=lx(t);He.removeEventListener(Xe.IMAGE_CACHE_IMAGE_REMOVED,e);const r=vg(t);r&&r.indicesToRequest.length&&(r.enabled=!1,Ai.clearRequestStack(Td))}function K3e(){return Ap}function q3e(t){Ap=t}const X3e={enable:j3e,disable:H3e,getConfiguration:K3e,setConfiguration:q3e};let jm={maxImagesToPrefetch:1/0,minBefore:2,maxAfter:2,directionExtraImages:10,preserveExistingPool:!1},gT;const Y3e=5,J3e=t=>{var n;const e=yg(t);if(!e)return;if(!((n=e.imageIds)!=null&&n.length)){console.warn("CornerstoneTools.stackPrefetch: No images in stack.");return}G8(t),B8(t),t.removeEventListener(Xe.STACK_NEW_IMAGE,pT),t.addEventListener(Xe.STACK_NEW_IMAGE,pT);const r=lx(t);He.removeEventListener(Xe.IMAGE_CACHE_IMAGE_REMOVED,r),He.addEventListener(Xe.IMAGE_CACHE_IMAGE_REMOVED,r)};function B8(t){var l,f;const e=yg(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=vg(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?ke.getImageLoadObject(d):ke.isLoaded(d))&&i(u)}),!n.indicesToRequest.length)return;jm.preserveExistingPool||Ai.filterRequests(z3e(e));function s(u){var v,y;const d=e.imageIds.indexOf(u);i(d);const h=ke.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=((y=h==null?void 0:h.image)==null?void 0:y.loadTimeInMS)||0;g.loadTimeInMS+=m}if(!n.indicesToRequest.length&&h!=null&&h.sizeInBytes){const{sizeInBytes:m}=h,w=ke.getMaxCacheSize()/4/m;if(!n.cacheFill)g.initialTime=Date.now()-g.start,g.initialSize=g.imageIds.size,G8(t,w),B8(t);else if(g.imageIds.size){g.fillTime=Date.now()-g.start;const{size:x}=g.imageIds;g.fillSize=x}}}const c=(u,d)=>Ds(u,d).then(()=>s(u));n.indicesToRequest.forEach(u=>{const d=e.imageIds[u],h={requestType:Td};Ai.addRequest(c.bind(null,d,h),Td,{imageId:d},LW)})}function pT(t){clearTimeout(gT),gT=setTimeout(function(){const e=t.target;try{G8(e),B8(e)}catch{return}},Y3e)}const Z3e=t=>t<0?-1:1,G8=(t,e)=>{var d;const r=yg(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}=jm;const{directionExtraImages:a=10}=jm,s=vg(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=Z3e(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,RW(t,s)};function Q3e(t){clearTimeout(gT),t.removeEventListener(Xe.STACK_NEW_IMAGE,pT);const e=lx(t);He.removeEventListener(Xe.IMAGE_CACHE_IMAGE_REMOVED,e);const r=vg(t);r&&(r.enabled=!1)}function eSe(){return jm}function tSe(t){jm=t}const nSe={enable:J3e,disable:Q3e,getConfiguration:eSe,setConfiguration:tSe},rSe=Object.freeze(Object.defineProperty({__proto__:null,isViewportPreScaled:wu},Symbol.toStringTag,{value:"Module"}));function iSe(t,e){let r;const n=e.dimensionGroupNumbers||e.frameNumbers||Array.from({length:t.numDimensionGroups},(i,o)=>o+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 i=ke.getVolume(e.maskVolumeId);if(!i)throw new Error("Segmentation volume not found");const[o,a]=aSe(n,t,i);return[o,a]}return e.worldCoordinate?oSe(n,e.worldCoordinate,t):r}function oSe(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]),!fr(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.getAtIndexAndDimensionGroup(f,l))}),c}function aSe(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=GE(e.imageData,e.dimensions,e.spacing,d);let v=0;const y=new Map;t.forEach(x=>y.set(x,0));const m=({index:x})=>{for(let C=0;C{w.push(x/v)}),f.push(g),c.push(w)};return r.voxelManager.forEach(u,{imageData:n}),[c,f]}function NW(t,e){const r=t.getScalarDataLength(),n=new Float32Array(r);for(const i of e){const o=t.getDimensionGroupScalarData(i);for(let a=0;a{const n=NW(t,e);for(let i=0;i{const n=sSe(t,e);for(let i=0;i{if(e.length!==2)throw new Error("Please provide only 2 dimension groups for subtraction.");const n=t.getScalarDataLength(),i=t.getDimensionGroupScalarData(e[0]),o=t.getDimensionGroupScalarData(e[1]);for(let a=0;au+1);if(o.length<=1)throw new Error("Please provide two or more dimension groups");const a=t.voxelManager,s=a.getScalarDataLength(),c=kW[e];if(!c)throw new Error(`Unsupported operation: ${e}`);const l=new Float32Array(s);return c(a,o,(f,u)=>{l[f]=u}),l}function lSe(t,e,r){const{dimensionGroupNumbers:n,frameNumbers:i,targetVolume:o}=r;if(!o)throw new Error("A target volume must be provided");i&&console.warn("Warning: frameNumbers parameter is deprecated. Please use dimensionGroupNumbers instead.");const a=n||i||Array.from({length:t.numDimensionGroups},(f,u)=>u+1);if(a.length<=1)throw new Error("Please provide two or more dimension groups");const s=t.voxelManager,c=o.voxelManager,l=kW[e];if(!l)throw new Error(`Unsupported operation: ${e}`);l(s,a,(f,u)=>{c.setAtIndex(f,u)}),c.resetModifiedSlices();for(let f=0;f{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 UW(t){const e=FW(t);if(!e)return;const r=t.getPoints().getData();return e.map(n=>n.map(i=>VW(r,i)))}const fSe=Object.freeze(Object.defineProperty({__proto__:null,getPoint:VW,getPolyDataPointIndexes:FW,getPolyDataPoints:UW},Symbol.toStringTag,{value:"Module"}));var Ha;(function(t){t.Top="top",t.Left="left",t.Bottom="bottom",t.Right="right"})(Ha||(Ha={}));const dSe=Object.freeze(Object.defineProperty({__proto__:null,get ColorbarRangeTextPosition(){return Ha}},Symbol.toStringTag,{value:"Module"})),Yl=t=>t&&t.upper>t.lower,O5=t=>!!t&&t.width>0&&t.height>0,Hm=(t,e)=>!!t&&!!e&&t.lower===e.lower&&t.upper===e.upper,BW=(t,e)=>!!t&&!!e&&t.width===e.width&&t.height===e.height,hSe=(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:gSe}=_n;class W8{constructor(e){W8.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;!O5(e)||BW(r,e)||(this._setCanvasSize(r,e),this.render())}get imageRange(){return{...this._imageRange}}set imageRange(e){!Yl(e)||Hm(e,this._imageRange)||(this._imageRange=e,this.render())}get voiRange(){return{...this._voiRange}}set voiRange(e){!Yl(e)||Hm(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&&!O5(r))throw new Error('Invalid "size"');if(n&&!Yl(n))throw new Error('Invalid "imageRange"');if(i&&!Yl(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=v=>{const y=4*v;if(!(v<0||v>=n))return{index:v,position:r[y],color:[r[y+1],r[y+2],r[y+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};let d,h=i(0);const g=(u.upper-u.lower)/(l-1);let p=u.lower;for(let v=0;vgSe(Math.round(x*255),0,255));s.fillStyle=`rgb(${w[0]}, ${w[1]}, ${w[2]})`,c?s.fillRect(v,0,1,a):s.fillRect(0,a-v-1,o,1),p+=g}}}const qf={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 z8{constructor(e){z8.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)??qf.FONT,this._color=(f==null?void 0:f.color)??qf.COLOR,this._tickSize=(f==null?void 0:f.tickSize)??qf.TICK_SIZE,this._tickWidth=(f==null?void 0:f.tickWidth)??qf.TICK_WIDTH,this._labelMargin=(f==null?void 0:f.labelMargin)??qf.TICK_LABEL_MARGIN,this._maxNumTicks=(f==null?void 0:f.maxNumTicks)??qf.MAX_NUM_TICKS,this._rangeTextPosition=u??Ha.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;!O5(e)||BW(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){!Yl(e)||Hm(e,this._imageRange)||(this._imageRange=e,this.render())}get voiRange(){return{...this._voiRange}}set voiRange(e){!Yl(e)||Hm(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&&!O5(r))throw new Error('Invalid "size"');if(n&&!Yl(n))throw new Error('Invalid "imageRange"');if(i&&!Yl(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=qf.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=i?"top":"middle",a.textAlign=i?"center":"left",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===Ha.Top?p=this._getTopTickInfo({position:d,labelMeasure:g}):p=this._getBottomTickInfo({position:d,labelMeasure:g}):this._rangeTextPosition===Ha.Left?p=this._getLeftTickInfo({position:d,labelMeasure:g}):p=this._getRightTickInfo({position:d});const{labelPoint:v,tickPoints:y}=p,{start:m,end:w}=y;return a.beginPath(),a.moveTo(m[0],m[1]),a.lineTo(w[0],w[1]),a.fillText(h,v[0],v[1]),a.stroke(),d})}}function pSe(t,e,r){return(t>=e?[Ha.Top,Ha.Bottom]:[Ha.Left,Ha.Right]).includes(r)}class mSe{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 $g={MULTIPLIER:1,RANGE_TEXT_POSITION:Ha.Right,TICKS_BAR_SIZE:50};class Km extends mSe{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=Ts(Jt(),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}=h1(d,h);g=Math.max(g+f,1),p+=u;const v=af(g,p);this.voiRange=v,n.stopPropagation(),n.preventDefault()},this._mouseUpCallback=n=>{this._isInteracting=!1,this.hideTicks(),this._removeVOIEventListeners(),n.stopPropagation()},this._eventListenersManager=new _V,this._colormaps=Km.getColormapsMap(e),this._activeColormapName=Km.getInitialColormapName(e),this._canvas=this._createCanvas(e),this._ticksBar=this._createTicksBar(e),this._rangeTextPosition=((r=e.ticks)==null?void 0:r.position)??$g.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;!Yl(e)||Hm(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[$g.MULTIPLIER,$g.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 W8({colormap:o,imageRange:r,voiRange:n,showFullPixelValueRange:i})}_createTicksBar(e){const r=e.ticks;return new z8({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:$g.TICKS_BAR_SIZE,s=o?$g.TICKS_BAR_SIZE:r;if(!pSe(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===Ha.Top?-s:r):(c=0,l=i===Ha.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 zC=4;function vSe(t,e,r){if(FV(t,e)==="PT"){const{clientWidth:i,clientHeight:o}=t.element,a=5/Math.max(i,o),s=wu(t,e),{fixedPTWindowWidth:c=!0}=r??{},l=c?0:a;return s?[l,a]:[l,zC]}return[zC,zC]}const{Events:Iu}=ts,tv={lower:-1e3,upper:1e3};class V0 extends Km{constructor(e){const{element:r,volumeId:n}=e,i=V0._getImageRange(r,n),o=V0._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=V0._getImageRange(this._element)},this._imageVolumeModifiedCallback=a=>{const{volumeId:s}=a.detail;if(s!==this._volumeId)return;const{_element:c}=this;this.imageRange=V0._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 Ee(this._element)}getVOIMultipliers(){const{viewport:e}=this.enabledElement;return vSe(e,this._volumeId)}onVoiChange(e){super.onVoiChange(e);const{viewport:r}=this.enabledElement;if(r instanceof ar)r.setProperties({voiRange:e}),r.render();else if(r instanceof sr){const{_volumeId:n}=this,i=m1(n);r.setProperties({voiRange:e},n),i.forEach(o=>o.render())}}static _getImageRange(e,r){const n=Ee(e),{viewport:i}=n,o=i.getImageActor(r);if(!o)return tv;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=ke.getVolume(r),[f,u]=l.voxelManager.getRange();c=[f,u]}return c[0]===0&&c[1]===0?tv:{lower:c[0],upper:c[1]}}static _getVOIRange(e,r){const n=Ee(e),{viewport:i}=n,o=i.getImageActor(r);if(!o)return tv;const a=o.getProperty().getRGBTransferFunction(0).getRange();return a[0]===0&&a[1]===0?tv:{lower:a[0],upper:a[1]}}showAndAutoHideTicks(e=1e3){this._hideTicksTime=Date.now()+e,this.showTicks(),this.autoHideTicks()}_addCornerstoneEventListener(){const{_element:e}=this;He.addEventListener(Iu.IMAGE_VOLUME_MODIFIED,this._imageVolumeModifiedCallback),e.addEventListener(Iu.STACK_NEW_IMAGE,this._stackNewImageCallback),e.addEventListener(Iu.VOI_MODIFIED,this._viewportVOIModifiedCallback),e.addEventListener(Iu.COLORMAP_MODIFIED,this._viewportColormapModifiedCallback)}destroy(){super.destroy();const{_element:e}=this;He.removeEventListener(Iu.IMAGE_VOLUME_MODIFIED,this._imageVolumeModifiedCallback),e.removeEventListener(Iu.STACK_NEW_IMAGE,this._stackNewImageCallback),e.removeEventListener(Iu.VOI_MODIFIED,this._viewportVOIModifiedCallback),e.removeEventListener(Iu.COLORMAP_MODIFIED,this._viewportColormapModifiedCallback)}}const ySe=Object.freeze(Object.defineProperty({__proto__:null,Colorbar:Km,Enums:dSe,ViewportColorbar:V0},Symbol.toStringTag,{value:"Module"}));function GW(t,e,r,n,i){const o=[];let a=0;const s=t.scalarData;let c,l,f;if(t.color)for(l=0;lZG(s,f),imageData:t})}function _Se(t,e,r){const[n,i]=t,o=bt((n[0]+i[0])/2,(n[1]+i[1])/2,(n[2]+i[2])/2),a=Ki(n,i)/2;let s;if(!r){const c=mT(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=ESe(e,r,t,o,a),{boundsIJK:s,centerWorld:o,radiusWorld:a}}function ESe(t,e,r,n,i){const[o,a]=r,s=t.getDimensions(),c=e.getCamera(),l=bt(c.viewUp[0],c.viewUp[1],c.viewUp[2]),f=bt(c.viewPlaneNormal[0],c.viewPlaneNormal[1],c.viewPlaneNormal[2]),u=Be();Ln(u,l,f);const d=Be(),h=Be();Cn(d,a,f,i),Cn(h,o,f,-i),Cn(d,d,u,-i),Cn(h,h,u,i);const g=[mT(t,d),mT(t,h)];return yf(g,s)}function $W(t){if(!Array.isArray(t)||t.length!==9)throw new Error("Matrix must be an array of 9 numbers");if(!t.every(e=>typeof e=="number"&&!isNaN(e)))throw new Error("Matrix must contain only valid numbers")}function jW(t){$W(t);const e=[[t[0],t[1],t[2]],[t[3],t[4],t[5]],[t[6],t[7],t[8]]],r=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(r)<1e-10)throw new Error("Matrix is not invertible (determinant is zero)");const n=[[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]]],i=[];for(let o=0;o<3;o++)for(let a=0;a<3;a++)i.push(n[o][a]/r);return i}function $C(t){const e=Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);return t.map(r=>r/e)}function bSe(t){$W(t);const e=t.slice(0,3),r=t.slice(3,6),n=t.slice(6,9),i=$C(e),o=$C(r),a=$C(n),s={x:[1,0,0],y:[0,1,0],z:[0,0,1]},c=1e-10,l=i.every((u,d)=>Math.abs(u-s.x[d])Math.abs(u-s.y[d])Math.abs(u-s.z[d]){ni(s,s,_r(Be(),[-o[0],-o[1],-o[2]],a))}),e instanceof ar&&(t.metadata.referencedImageId=e.getCurrentImageId()),t}function PSe(t,e,r){const n=e*r,i=t.length/n;if(![1,3,4].includes(i))throw new Error("Buffer must be 1, 3, or 4 channels per pixel");const o=Array.from({length:r},()=>new Array(e).fill(!1));for(let v=0;v0){x=!0;break}o[v][y]=x}const a=Array.from({length:r},()=>new Array(e).fill(0));let s=0;const c={};for(let v=0;vC<0||C>=e||S<0||S>=r?!1:o[S][C]&&a[S][C]===0;let w=0;L8(m,[y,v],{onFlood:(C,S)=>{a[S][C]=s,w++},diagonals:!1}),c[s]=w}if(s===0)return[];const l=Object.keys(c).reduce((v,y)=>c[v]>c[y]?v:y);function f(v,y){if(a[y][v]!==+l)return!1;for(const[m,w]of[[1,0],[-1,0],[0,1],[0,-1]]){const x=v+m,C=y+w;if(x<0||x>=e||C<0||C>=r||a[C][x]!==+l)return!0}return!1}let u=null;e:for(let v=0;vx[0]===v&&x[1]===y);m<0&&(m=0);let w=null;for(let x=1;x<=8;x++){const[C,S]=d[(m+x)%8],T=g[0]+C,_=g[1]+S;if(T>=0&&T=0&&_(y+1)%r,i=(y,m)=>{const w=[];for(let x=y;w.push(x),x!==m;x=n(x));return w};let o=0,a=0;for(let y=1;yt[a][0]&&(a=y);const s=t[o],c=t[a],l=i(o,a),f=i(a,o),u=Math.min(...t.map(y=>y[1])),d=l.some(y=>t[y][1]===u)?l:f,h=Math.min(...d.map(y=>t[y][1]));let g=d.map(y=>t[y]).filter(y=>Math.abs(y[1]-h)<=e);g.length<2&&(g=d.map(y=>t[y]).sort((y,m)=>y[1]-m[1]).slice(0,2));const p=g.reduce((y,m)=>m[0]m[0]>y[0]?m:y,g[0]);return{P1:p,P2:s,P3:c,P4:v}}function ASe(t,e,r,n,i,o={}){const{maxDist:a=15,slack:s=2}=o,c={P1:{dx:-1,dy:-1},P2:{dx:-1,dy:1},P3:{dx:1,dy:1},P4:{dx:1,dy:-1}};function l(f,{dx:u,dy:d},h=5){const g=u<0?f[0]-a:f[0]-s,p=u<0?f[0]+s:f[0]+a,v=d<0?f[1]-a:f[1]-s,y=d<0?f[1]+s:f[1]+a;let m=f;for(const[w,x]of i){if(wp||xy)continue;const C=Math.round(w),S=Math.round(x);if(C<0||C>=e||S<0||S>=r)continue;const T=(C-m[0])*u,_=(S-m[0])*d;t[S*e+C]>h&&(T>0||_>0)&&(m=[w,x])}return m}return{P1:l(n.P1,c.P1),P2:l(n.P2,c.P2),P3:l(n.P3,c.P3),P4:l(n.P4,c.P4)}}function NSe(t,e,r,n,i){const o=LSe(n);return ASe(t,e,r,o,i,{maxDist:20})}function g7(t,e){return Math.atan2(e[1]-t[1],e[0]-t[0])}function kSe(t){const{P1:e,P2:r,P3:n,P4:i}=t,o=m5(e,r,i,n,!0);if(!o)throw new Error("Fan edges appear parallel — no apex found");const a=o;let s=g7(a,e)*(180/Math.PI),c=g7(a,i)*(180/Math.PI);if(c<=s){const p=s;s=c,c=p}const l=Math.hypot(e[0]-a[0],e[1]-a[1]),f=Math.hypot(i[0]-a[0],i[1]-a[1]),u=Math.hypot(r[0]-a[0],r[1]-a[1]),d=Math.hypot(n[0]-a[0],n[1]-a[1]),h=Math.min(l,f),g=Math.max(u,d);return{center:a,startAngle:s,endAngle:c,innerRadius:h,outerRadius:g}}function fp(t,e,r,n,i={}){const{strokeStyle:o="#f00",lineWidth:a=2,quality:s=.92}=i,c=document.createElement("canvas");c.width=e,c.height=r;const l=c.getContext("2d"),f=e*r,u=t.length/f,d=l.createImageData(e,r),h=d.data;for(let g=0;g0){l.strokeStyle=o,l.lineWidth=a,l.beginPath(),l.moveTo(n[0][0]+.5,n[0][1]+.5);for(let g=1;g=h;C-=.01){const S=o[0]+l*Math.cos(C),T=o[1]+l*Math.sin(C);v.lineTo(S,T)}return v.closePath(),v.strokeStyle=f,v.lineWidth=u,v.stroke(),p.toDataURL("image/jpeg",d)}function FSe(t,e=5){const{contour:r,simplified:n,hull:i,refined:o,fanGeometry:a}=j8(t),{pixelData:s,width:c,height:l}=$8(t)||{};if(!s)return;let f;e===1?f=fp(s,c,l,r):e===2?f=fp(s,c,l,n):e===3?f=fp(s,c,l,i):e===4?f=fp(s,c,l,[o.P1,o.P2,o.P3,o.P4]):f=VSe(s,c,l,a,{strokeStyle:"#f00",lineWidth:3,quality:.95}),KW(f,"contour.jpg")}function j8(t){const{pixelData:e,width:r,height:n}=$8(t)||{};if(!e)return;const i=PSe(e,r,n),{simplified:o,hull:a}=RSe(i),s=NSe(e,r,n,a,o),c=kSe({P1:s.P1,P2:s.P2,P3:s.P3,P4:s.P4});return{contour:i,simplified:o,hull:a,refined:s,fanGeometry:c}}const USe=Object.freeze(Object.defineProperty({__proto__:null,calculateFanGeometry:j8,default:KW,downloadFanJpeg:FSe,exportContourJpeg:fp,getPixelData:$8},Symbol.toStringTag,{value:"Module"})),BSe=an,GSe=Object.freeze(Object.defineProperty({__proto__:null,AnnotationMultiSlice:jwe,IslandRemoval:Bd,annotationHydration:Mme,boundingBox:Wwe,calibrateImageSpacing:Gwe,cine:N3e,contourSegmentation:d2e,contours:Sxe,debounce:ag,drawing:pye,dynamicVolume:uSe,geometricSurfaceUtils:OSe,getAnnotationNearPoint:Fwe,getAnnotationNearPointOnEnabledElement:xG,getCalibratedAspect:v8,getCalibratedLengthUnitsAndScale:Da,getCalibratedProbeUnitsAndValue:S5,getClosestImageIdForStackViewport:XE,getOrCreateImageVolume:ix,getPixelValueUnits:xu,getPixelValueUnitsImageId:MB,getSphereBoundsInfo:TG,getViewportForAnnotation:Hv,isObject:HE,math:D1e,moveAnnotationToViewPlane:MSe,normalizeViewportPlane:qG,orientation:b3e,planar:Q2e,planarFreehandROITool:U3e,pointInSurroundingSphereCallback:TSe,pointToString:_G,polyDataUtils:fSe,rectangleROITool:B3e,roundNumber:BSe,segmentation:T3e,setAnnotationLabel:HW,stackContextPrefetch:nSe,stackPrefetch:X3e,throttle:zo,touch:qpe,triggerAnnotationRender:sg,triggerAnnotationRenderForToolGroupIds:EB,triggerAnnotationRenderForViewportIds:Ne,triggerEvent:nt,usFanExtraction:USe,viewport:rSe,viewportFilters:Y1e,voi:SSe},Symbol.toStringTag,{value:"Module"})),WSe=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));function qW(t,e){const r=er;t.forEach(n=>{r.updateSegmentation(n.segmentationId,n.payload),e||ns(n.segmentationId)})}function zSe(t,e,r){er.setSegmentationRepresentationVisibility(t,e,r)}function $Se(t,e,r){const n=_a(t,e);n&&n.forEach(i=>{zSe(t,{segmentationId:i.segmentationId,type:i.type},r)})}function jSe(t,e){return IB(t,e)}function HSe(t,e,r,n){const i=_a(t,e);i&&(i.forEach(o=>{o.segments[r].visible=n}),ex(e.segmentationId),Jc(t,e.segmentationId))}function KSe(t,e,r){return!XW(t,e).has(r)}function XW(t,e){const r=$E(t,e);return r?Object.entries(r.segments).reduce((i,[o,a])=>(a.visible||i.add(Number(o)),i),new Set):new Set}const qSe=Object.freeze(Object.defineProperty({__proto__:null,getHiddenSegmentIndices:XW,getSegmentIndexVisibility:KSe,getSegmentationRepresentationVisibility:jSe,setSegmentIndexVisibility:HSe,setSegmentationRepresentationVisibility:$Se},Symbol.toStringTag,{value:"Module"}));function XSe(t){return qa.getStyle(t)}function YSe(t,e){qa.setStyle(t,e),!t.viewportId&&!t.segmentationId&&rx().forEach(n=>{fg(n.segmentationId)}),Jc(t.viewportId,t.segmentationId,t.type)}function JSe(t,e){qa.setRenderInactiveSegmentations(t,e),fg(t),AG(t).forEach(n=>{Jc(t,n.segmentationId)})}function ZSe(t){return qa.getRenderInactiveSegmentations(t)}function QSe(){qa.resetToGlobalStyle(),fg()}function eTe(t){return qa.hasCustomStyle(t)}const tTe=Object.freeze(Object.defineProperty({__proto__:null,getRenderInactiveSegmentations:ZSe,getStyle:XSe,hasCustomStyle:eTe,resetToGlobalStyle:QSe,setRenderInactiveSegmentations:JSe,setStyle:YSe},Symbol.toStringTag,{value:"Module"})),nTe=Object.freeze(Object.defineProperty({__proto__:null,color:Kye,style:tTe,visibility:qSe},Symbol.toStringTag,{value:"Module"}));function M5(t,e){const r=An(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,ns(t));const n=ug(t);n.forEach(i=>{_a(i,{segmentationId:t}).forEach(a=>{a.segments[e]||(a.segments[e]={visible:!0})})}),n.forEach(i=>{const o=Dr(i);dW(o.id)})}const rTe=Object.freeze(Object.defineProperty({__proto__:null,getActiveSegmentIndex:ba,setActiveSegmentIndex:M5},Symbol.toStringTag,{value:"Module"}));async function iTe(t){const e=yme(t);return ns(t.segmentationId),e}function YW(t,e){const r=An(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=>ke.getImage(a)):[ke.getVolume(i.volumeId)]).forEach(a=>{if(!a)return;const{voxelManager:s}=a;s.forEach(({value:c,index:l})=>{c===e&&s.setAtIndex(l,0)})}),wo(t)}else throw new Error("Invalid segmentation type, only labelmap is supported right now")}function oTe(t,e,r={setNextSegmentAsActive:!0}){YW(t,e);const n=ba(t)===e,i=An(t),{segments:o}=i;delete o[e];const a={...o};if(qW([{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?M5(t,f):u!==void 0&&M5(t,u)}ug(t).forEach(c=>{_a(c,{segmentationId:t}).forEach(f=>{delete f.segments[e]})})}function aTe(t){const e=er,r=An(t);return e.getLabelmapImageIds(r.representationData)}const sTe={clearSegmentValue:YW,convertStackToVolumeLabelmap:iTe,computeVolumeLabelmapFromStack:TW,convertVolumeToStackLabelmap:m3e},cTe=Object.freeze(Object.defineProperty({__proto__:null,activeSegmentation:N2e,addContourRepresentationToViewport:k8,addContourRepresentationToViewportMap:f3e,addLabelmapRepresentationToViewport:CW,addLabelmapRepresentationToViewportMap:d3e,addRepresentationData:jE,addSegmentationRepresentations:mg,addSegmentations:bG,addSurfaceRepresentationToViewport:SW,addSurfaceRepresentationToViewportMap:h3e,config:nTe,defaultSegmentationStateManager:er,getActiveSegmentation:Fd,getCurrentLabelmapImageIdsForViewport:hu,getLabelmapImageIds:aTe,getLabelmapImageIdsForImageId:b2e,helpers:sTe,removeAllSegmentationRepresentations:OG,removeAllSegmentations:LG,removeContourRepresentation:PG,removeLabelmapRepresentation:MG,removeSegment:oTe,removeSegmentation:O8,removeSegmentationRepresentation:hg,removeSegmentationRepresentations:DG,removeSurfaceRepresentation:RG,segmentIndex:rTe,segmentLocking:$ye,segmentationStyle:qa,state:lxe,strategies:mCe,triggerSegmentationEvents:ume,updateSegmentations:qW},Symbol.toStringTag,{value:"Module"}));class H8{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(r=>this.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 lTe=1e-8;class K8 extends H8{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=Ov(1,c,g,p),y=Hu(QR(),v,r);return[Z6(y,Ov(f[0],u[0],d[0],h[0])),Z6(y,Ov(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]:YS(f,l),cl?l:p;const v=this._getPoint(p,r,n,i);if(!g){u=v;continue}d=v;const y=d[0]-u[0],m=d[1]-u[1],w=Math.sqrt(y**2+m**2),x={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:x,length:w,previousLineSegmentsLength:h}),u=d,h+=w}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}}}const uTe=XR(Ea(),a4(1,4,1,0,-3,0,3,0,3,-6,3,0,-1,3,-3,1),1/6);class JW extends K8{getTransformMatrix(){return uTe}}class qm extends K8{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 ZW extends qm{constructor(){super({scale:.5,fixedScale:!0})}}class QW extends qm{constructor(){super({resolution:0,fixedResolution:!0,scale:0,fixedScale:!0})}}class ez extends H8{getSplineCurves(){return[]}getLineSegments(){return[]}getPreviewCurveSegments(e,r){return[]}}const fTe=[1,0,0,-2,2,0,1,-2,1];class dTe extends ez{hasTangentPoints(){return!0}getTransformMatrix(){return fTe}}const hTe=Object.freeze(Object.defineProperty({__proto__:null,BSpline:JW,CardinalSpline:qm,CatmullRomSpline:ZW,CubicSpline:K8,LinearSpline:QW,QuadraticBezier:dTe,QuadraticSpline:ez,Spline:H8},Symbol.toStringTag,{value:"Module"}));class uf extends hi{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=Ee(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()}}uf.toolName="Pan";class tz extends hi{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{rotateIncrementDegrees:2,rotateSampleDistanceFactor:2}}){super(e,r),this._resizeObservers=new Map,this._hasResolutionChanged=!1,this.preMouseDownCallback=n=>{const i=n.detail,{element:o}=i,a=Ee(o),{viewport:s}=a,f=s.getDefaultActor().actor.getMapper();if(!("getSampleDistance"in f||"getCurrentSampleDistance"in f))return!0;const d=f.getSampleDistance();if(!this._hasResolutionChanged){const{rotateSampleDistanceFactor:h}=this.configuration;f.setSampleDistance(d*h),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})}return!0},this._getViewportsInfo=()=>ti(this.toolGroupId).viewportsInfo,this.onSetToolActive=()=>{const n=()=>{this._getViewportsInfo().forEach(({viewportId:o,renderingEngineId:a})=>{if(!this._resizeObservers.has(o)){const{viewport:s}=Ci(o,a)||{viewport:null};if(!s)return;const{element:c}=s,l=new ResizeObserver(()=>{const f=Ci(o,a);if(!f)return;const{viewport:u}=f,d=u.getViewPresentation();u.resetCamera(),u.setViewPresentation(d),u.render()});l.observe(c),this._resizeObservers.set(o,l)}})};n(),this._viewportAddedListener=i=>{i.detail.toolGroupId===this.toolGroupId&&n()},He.addEventListener(B.TOOLGROUP_VIEWPORT_ADDED,this._viewportAddedListener)},this.onSetToolDisabled=()=>{this._resizeObservers.forEach((n,i)=>{n.disconnect(),this._resizeObservers.delete(i)}),this._viewportAddedListener&&(He.removeEventListener(B.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=Pt(new Float32Array(16));ur(g,g,i),Lo(g,g,a,o),ur(g,g,[-i[0],-i[1],-i[2]]),Wt(u,f,g),Wt(d,l,g),Pt(g),Lo(g,g,a,o),Wt(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=Ee(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,w=[g[0],0,0],x=[h[0],0,0],C=w[0]**2,S=x[0]**2,T=C>m?0:Math.sqrt(m-C),_=S>m?0:Math.sqrt(m-S),E=[w[0],0,T];Yt.normalize(E);const b=[x[0],0,_];Yt.normalize(b);const D=Yt.dot(E,b);if(Math.abs(D)>1e-4){const O=-2*Math.acos(Yt.clampValue(D,-1,1))*Math.sign(h[0]-g[0])*s,L=f.viewUp,P=f.viewPlaneNormal,k=[0,0,0],G=[0,0,0];Yt.cross(L,P,k),Yt.normalize(k),Yt.cross(P,k,G),Yt.normalize(G),Yt.normalize(L),this.rotateCamera(l,v,G,O);const j=(g[1]-h[1])*s;this.rotateCamera(l,v,k,j),l.render()}}}tz.toolName="TrackballRotate";const jC=4,gTe=1024,pTe="PT";class Uh extends hi{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=Ee(r),{viewport:o}=i;let a,s,c,l,f,u,d=!1;const h=o.getProperties();if(o instanceof sr){a=o.getVolumeId(),u=m1(a),{lower:s,upper:c}=h.voiRange;const v=ke.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===pTe&&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 sr)){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=jC;s?c=5/i:c=this._getMultiplierFromDynamicRange(o,a)||jC;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)||jC,s=r[0]*a,c=r[1]*a;let{windowWidth:l,windowCenter:f}=h1(i,o);l+=s,f+=c,l=Math.max(l,1);const u=e.getProperties().VOILUTFunction;return af(l,f,u)}_getMultiplierFromDynamicRange(e,r){var o;let n;if(r){const a=ke.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/gTe;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}}}Uh.toolName="WindowLevel";class nz extends or{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=Ee(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:{}}};on(p,a);const v=Ct(a,this.getToolName());return this.editData={annotation:p,viewportIdsToRender:v},this._activateDraw(a),Mt(a),n.preventDefault(),Ne(v),p},this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s}=this.editData;this._deactivateDraw(o),jt(o),this.editData=null,this.isDrawing=!1,fn(a.annotationUID),Ne(s),kn(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=Ee(o),{worldToCanvas:u,canvasToWorld:d}=f.viewport,h=l.world,{points:g}=c.handles,p=3;g[p]=[...h];const v=u(g[0]),y=u(g[3]),m=[y[0],v[1]],w=[v[0],y[1]],x=d(m),C=d(w);g[1]=x,g[2]=C,a.invalidated=!0,Ne(s)},this._activateDraw=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragCallback),n.addEventListener(B.MOUSE_MOVE,this._dragCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback)},this._deactivateDraw=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_MOVE,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=cn(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:y,lineDash:m}=this.getAnnotationStyle({annotation:u,styleSpecifier:l});if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;const w=`${d}-rect`;A1(i,d,"0",p[0],p[3],{color:v,lineDash:m,lineWidth:y},w),o=!0}return o},this.applyWindowLevelRegion=(n,i)=>{const o=Ee(i),{viewport:a}=o,s=zW(a),{data:c}=n,{points:l}=c.handles,f=l.map(T=>a.worldToCanvas(T)),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=Qy(h,0,s.width),g=Qy(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 y=GW(s,Math.round(h),Math.round(g),p,v),m=WW(y,s.minPixelValue,s.maxPixelValue);this.configuration.minWindowWidth===void 0&&(this.configuration.minWindowWidth=10);const w=Math.max(Math.abs(m.max-m.min),this.configuration.minWindowWidth),x=m.mean,C=a.getProperties().VOILUTFunction,S=af(w,x,C);a.setProperties({voiRange:S}),a.render()},this.cancel=()=>null,this.isPointNearTool=()=>null,this.toolSelectedCallback=()=>null,this.handleSelectedCallback=()=>null,this._activateModify=()=>null,this._deactivateModify=()=>null}}nz.toolName="WindowLevelRegion";class Wd extends hi{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}=Ci(n,i),{debounceIfNotLoaded:a,invert:s,loop:c}=this.configuration,l=r.canvas[1];let f;o instanceof sr&&(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);hc(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}=Ee(n),s=i*(o?-1:1);hc(a,{delta:s,debounceLoading:this.configuration.debounceIfNotLoaded,loop:this.configuration.loop,volumeId:a instanceof Cr?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))}}Wd.toolName="StackScroll";class Bh extends hi{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"]}){super(e,r),this.mouseWheelCallback=n=>{const{element:i,wheel:o}=n.detail,a=Ee(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=Ee(r),{viewport:c}=s,l=c.getCamera(),f=r.clientWidth,u=r.clientHeight,d=[f*.5,u*.5],h=c.canvasToWorld(d);let g=ph([a,h],[h,o]);const{viewPlaneNormal:p}=l,v=Sn(Be(),h,a),y=Sn(Be(),h,o),m=Ln(Be(),v,y);St(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 Cr){const o=(r+360)%360*Math.PI/180,a=Pt(new Float32Array(16));Lo(a,a,o,n);const s=Wt(Be(),i,a);e.setCamera({viewUp:s})}else{const{rotation:o}=e.getViewPresentation();e.setViewPresentation({rotation:(o+r+360)%360})}e.render()}}Bh.toolName="PlanarRotate";class Jl extends hi{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=Ee(o).viewport.getCamera(),{focalPoint:f}=l;this.initialMousePosWorld=s;let u=bt(f[0]-s[0],f[1]-s[1],f[2]-s[2]);return u=Yn(Be(),u),this.dirVec=u,!1},this.preTouchStartCallback=n=>{if(!this.configuration.pinchToZoom)return this.preMouseDownCallback(n)},this._dragParallelProjection=(n,i,o,a=!1)=>{var T,_,E;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 y=d,m=h;if(!this.configuration.zoomToCenter){const b=Ki(d,this.initialMousePosWorld);m=Cn(Be(),h,this.dirVec,-b*p),y=Cn(Be(),d,this.dirVec,-b*p)}const w=i.getImageData();let x=[1,1,1],C=v,S=!1;if(w){x=w.spacing;const{dimensions:b}=w,D=b[0]*x[0],O=b[1]*x[1],L=f[0]/f[1],P=(T=i.options)==null?void 0:T.displayArea,k=((_=P==null?void 0:P.imageArea)==null?void 0:_[0])??1.1,G=((E=P==null?void 0:P.imageArea)==null?void 0:E[1])??1.1,j=D*k,F=O*G,U=j/F;let W;U>L?W=j/L*.5:W=F*.5;const{minZoomScale:J,maxZoomScale:te}=this.configuration,le=W/te,ve=W/J;vve&&(C=ve,S=!0)}i.setCamera({parallelScale:C,focalPoint:S?d:y,position:S?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=Yt.distance2BetweenPoints(u,d),p=Math.sqrt(g)/f[1],v=[-h[0],-h[1],-h[2]],y=this.configuration.invert?l/p:l*p;let m=y*v[0];u[0]+=m,d[0]+=m,m=y*v[1],u[1]+=m,d[1]+=m,m=y*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)}mouseWheelCallback(e){this._zoom(e)}_pinchCallback(e){if(e.detail.currentPointsList.length>1){const{element:n,currentPoints:i}=e.detail,o=Ee(n),{viewport:a}=o,s=a.getCamera(),c=i.world,{focalPoint:l}=s;this.initialMousePosWorld=c;let f=bt(l[0]-c[0],l[1]-c[1],l[2]-c[2]);f=Yn(Be(),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=Ee(r),{viewport:i}=n,o=i.getCamera();o.parallelProjection?this._dragParallelProjection(e,i,o):this._dragPerspectiveProjection(e,i,o),i.render()}_zoom(e){const{element:r,points:n}=e.detail,i=Ee(r),{viewport:o}=i;o.getCamera();const s=e.detail.wheel.direction,c={detail:{element:r,eventName:B.MOUSE_WHEEL,renderingEngineId:i.renderingEngineId,viewportId:o.id,camera:{},deltaPoints:{page:n.page,client:n.client,world:n.world,canvas:[0,-s*5]},startPoints:n,lastPoints:n,currentPoints:n}};o.type===gr.STACK&&this.preMouseDownCallback(c),this._dragCallback(c)}_panCallback(e){const{element:r,deltaPoints:n}=e.detail,i=Ee(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()}}Jl.toolName="Zoom";class rz extends hi{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{targetViewportIds:[]}}){super(e,r)}mouseClickCallback(e){const{element:r,currentPoints:n}=e.detail,i=Ee(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=y8(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=Dr(g.id,a.id);return!!(d&&d===(p==null?void 0:p.id))}).forEach(g=>{g instanceof sr?g.jumpToWorld(f):console.warn("Cannot jump to specified world coordinates for a viewport that is not a VolumeViewport")})}}rz.toolName="MIPJumpToClickTool";const{RENDERING_DEFAULTS:HC}=Of;function mTe(){return"rgb(0, 200, 0)"}function vTe(){return!0}function yTe(){return!0}function wTe(){return!0}const Ys={DRAG:1,ROTATE:2,SLAB:3};class qc extends or{constructor(e={},r={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:tl.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=Ci(c,s);if(!l)return;const{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!=null&&v.length&&fn(v[0].annotationUID);const y={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 on(y,d),{normal:p,point:u.canvasToWorld([u.canvas.clientWidth/2,u.canvas.clientHeight/2])}},this._getViewportsInfo=()=>ti(this.toolGroupId).viewportsInfo,this.resetCrosshairs=()=>{const s=this._getViewportsInfo();for(const c of s){const{viewportId:l,renderingEngineId:f}=c,u=Ci(l,f),d=u.viewport;d.resetCamera({resetPan:!0,resetZoom:!0,resetToCenter:!0,resetRotation:!0,suppressEvents:!0}),d.resetSlabThickness();const{element:m}=d;let w=this._getAnnotations(u);w=this.filterInteractableAnnotationsForElement(m,w),w.length&&fn(w[0].annotationUID),d.render()}this._computeToolCenter(s)},this.computeToolCenter=()=>{const s=this._getViewportsInfo();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=Be();f?{normal:p,point:v}=this.initializeViewport(f):(ni(v,d,g),_r(v,v,.5),Ln(p,u,h));const y=ol(u,d),m=ol(h,g),w=ol(p,v),x=Pk(y,m,w);this.setToolCenter(x)},this.addNewAnnotation=s=>{const c=s.detail,{element:l}=c,{currentPoints:f}=c,u=f.world,d=Ee(l),{viewport:h}=d;this._jump(d,u);const g=this._getAnnotations(d),p=this.filterInteractableAnnotationsForElement(h.element,g),{data:v}=p[0],{rotationPoints:y}=v.handles,m=[];for(let w=0;w{console.log("Not implemented yet")},this.handleSelectedCallback=(s,c)=>{const l=s.detail,{element:f}=l;c.highlighted=!0,this._activateModify(f),Mt(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),Mt(u),s.preventDefault()},this.onCameraModified=s=>{var E;const c=s.detail,{element:l}=c,f=Ee(l),{renderingEngine:u}=f,d=f.viewport,h=this._getAnnotations(f),p=this.filterInteractableAnnotationsForElement(l,h)[0];if(!p)return;const v=d.getCamera(),y=p.metadata.cameraPosition,m=[0,0,0];Yt.subtract(v.position,y,m);const w=p.metadata.cameraFocalPoint,x=[0,0,0];Yt.subtract(v.focalPoint,w,x),p.metadata.cameraPosition=[...v.position],p.metadata.cameraFocalPoint=[...v.focalPoint];const C=this._getReferenceLineControllable(d.id),S=this._getReferenceLineDraggableRotatable(d.id);if(!Kt(v.position,y,.001)&&C&&S){let b=!1;Kt(m,x,.001)||(b=!0);const O=Math.abs(Yt.dot(m,v.viewPlaneNormal))<.01;!b&&!O&&(this.toolCenter[0]+=m[0],this.toolCenter[1]+=m[1],this.toolCenter[2]+=m[2],nt(He,B.CROSSHAIR_TOOL_CENTER_CHANGED,{toolGroupId:this.toolGroupId,toolCenter:this.toolCenter}))}(E=this.configuration.autoPan)!=null&&E.enabled&&Dr(d.id,u.id).getViewportIds().filter(O=>O!==d.id).forEach(O=>{this._autoPanViewportIfNecessary(O,u)});const _=Ct(l,this.getToolName(),!1);Ne(_)},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 w=this.getHandleNearImagePoint(l,g,u,6);let x=!1;w?x=!0:x=this._pointNearTool(l,g,u,6),x&&!v||!x&&v?(g.highlighted=!v,d=!0):(p.handles.activeOperation!==y||!this._areViewportIdArraysEqual(p.activeViewportIds,m))&&(d=!0)}return d},this.filterInteractableAnnotationsForElement=(s,c)=>{if(!c||!c.length)return[];const l=Ee(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 y=v.annotationUID,{clientWidth:m,clientHeight:w}=f.canvas,x=Math.sqrt(m*m+w*w),C=Math.min(m,w),S=v.data,T=f.worldToCanvas(this.toolCenter),_=this._filterAnnotationsByUniqueViewportOrientations(s,h),E=[],b=[0,0,m,w];_.forEach(k=>{const{data:G}=k;G.handles.toolCenter=this.toolCenter;const j=u.getViewport(G.viewportId),F=j.getCamera(),U=this._getReferenceLineControllable(j.id),W=this._getReferenceLineDraggableRotatable(j.id),J=this._getReferenceLineSlabThicknessControlsOn(j.id),{clientWidth:te,clientHeight:le}=j.canvas,ve=Math.sqrt(te*te+le*le),pe=[te*.5,le*.5],ye=j.canvasToWorld(pe),Ie=[0,0,0];Yt.cross(g.viewPlaneNormal,F.viewPlaneNormal,Ie),Yt.normalize(Ie),Yt.multiplyScalar(Ie,ve);const Le=[0,0,0];Yt.add(ye,Ie,Le);const be=[0,0,0];Yt.subtract(ye,Ie,be);const $=f.worldToCanvas(Le),R=f.worldToCanvas(ye),X=Jt();Yr(X,$,R),ql(X,X);const K=Jt();zl(K,X,x*100);const Z=Jt();zl(Z,X,C*.4);const ie=Jt();zl(ie,X,C*.2);const oe=Jt(),Te=this.configuration.referenceLinesCenterGapRadius;zl(oe,X,_.length===2?Te:0);const Oe=Jt(),Ve=Jt(),Ge=Jt(),ce=Jt();let fe=s2(T);(!W||!U)&&(fe=s2(R)),fo(Oe,fe,oe),fo(Ve,fe,K),Yr(Ge,fe,oe),Yr(ce,fe,K),lp(Oe,Ve,b),lp(Ge,ce,b);const Se=Jt();Yr(Se,T,Z);const he=Jt();fo(he,T,Z);let xe=s2(T);!W&&J&&(xe=s2(R));let qe=[...this.toolCenter];!W&&J&&(qe=[...ye]);const de=[0,0,0];Yt.subtract(Le,be,de),Yt.normalize(de);const{viewPlaneNormal:ht}=g,{matrix:vt}=$i.buildFromDegree().rotate(90,ht),gt=[0,0,0];Wt(gt,de,vt);const Me=j.getSlabThickness(),Ze=[...gt];Yt.multiplyScalar(Ze,Me);const it=[0,0,0];Yt.add(qe,Ze,it);const rt=f.worldToCanvas(it),ut=Jt();Yr(ut,xe,rt);const Dt=Jt();Yr(Dt,xe,K),fo(Dt,Dt,ut);const wt=Jt();fo(wt,xe,K),fo(wt,wt,ut),lp(Dt,wt,b);const kt=Jt();fo(kt,xe,K),Yr(kt,kt,ut);const qt=Jt();Yr(qt,xe,K),Yr(qt,qt,ut),lp(kt,qt,b);const In=Jt(),Vn=Jt(),zt=Jt(),On=Jt();Yr(In,xe,ie),fo(In,In,ut),fo(Vn,xe,ie),fo(Vn,Vn,ut),Yr(zt,xe,ie),Yr(zt,zt,ut),fo(On,xe,ie),Yr(On,On,ut),E.push([j,Oe,Ve,Ge,ce,Dt,wt,kt,qt,Se,he,In,Vn,zt,On])});const D=[],O=[],L=this._getReferenceLineColor(f.id),P=L!==void 0?L:"rgb(200, 200, 200)";if(E.forEach((k,G)=>{var Ie,Le,be,$;const j=k[0],F=this._getReferenceLineColor(j.id),U=this._getReferenceLineControllable(j.id),W=this._getReferenceLineDraggableRotatable(j.id)||((Ie=this.configuration.mobile)==null?void 0:Ie.enabled),J=this._getReferenceLineSlabThicknessControlsOn(j.id)||((Le=this.configuration.mobile)==null?void 0:Le.enabled),te=S.activeViewportIds.find(R=>R===j.id);let le=F!==void 0?F:"rgb(200, 200, 200)",ve=1;const pe=S.handles.activeOperation!==null&&S.handles.activeOperation===Ys.DRAG&&te;pe&&(ve=2.5);let ye=`${G}`;if(U&&W?(ye=`${G}One`,mn(c,y,ye,k[1],k[2],{color:le,lineWidth:ve}),ye=`${G}Two`,mn(c,y,ye,k[3],k[4],{color:le,lineWidth:ve})):mn(c,y,ye,k[2],k[4],{color:le,lineWidth:ve}),U){le=F!==void 0?F:"rgb(200, 200, 200)";const R=S.handles.activeOperation===Ys.ROTATE,X=[k[9],k[10]],K=[f.canvasToWorld(k[9]),j,k[1],k[2]],Z=[f.canvasToWorld(k[10]),j,k[3],k[4]];D.push(K,Z);const ie=S.handles.activeOperation===Ys.SLAB,oe=[k[11],k[12],k[13],k[14]],Te=[f.canvasToWorld(k[11]),j,k[5],k[6]],Oe=[f.canvasToWorld(k[12]),j,k[5],k[6]],Ve=[f.canvasToWorld(k[13]),j,k[7],k[8]],Ge=[f.canvasToWorld(k[14]),j,k[7],k[8]];O.push(Te,Oe,Ve,Ge);let ce=this.configuration.handleRadius*(this.configuration.enableHDPIHandles?window.devicePixelRatio:1),fe=1;if((be=this.configuration.mobile)!=null&&be.enabled&&(ce=this.configuration.mobile.handleRadius,fe=this.configuration.mobile.opacity),(pe||($=this.configuration.mobile)!=null&&$.enabled)&&!R&&!ie&&W&&J){let he=`${G}One`;nr(c,y,he,X,{color:le,handleRadius:ce,opacity:fe,type:"circle"}),he=`${G}Two`,nr(c,y,he,oe,{color:le,handleRadius:ce,opacity:fe,type:"rect"})}else if(pe&&!R&&!ie&&W){const he=`${G}`;nr(c,y,he,X,{color:le,handleRadius:ce,opacity:fe,type:"circle"})}else if(te&&!R&&!ie&&J){const he=`${G}`;nr(c,y,he,oe,{color:le,handleRadius:ce,opacity:fe,type:"rect"})}else if(R&&W){const he=`${G}`,xe=this.configuration.handleRadius*(this.configuration.enableHDPIHandles?window.devicePixelRatio:1);nr(c,y,he,X,{color:le,handleRadius:xe,fill:le,type:"circle"})}else if(ie&&te&&J){const he=this.configuration.handleRadius*(this.configuration.enableHDPIHandles?window.devicePixelRatio:1);nr(c,y,ye,oe,{color:le,handleRadius:he,fill:le,type:"rect"})}j.getSlabThickness()>.5&&J&&(ye=`${G}STOne`,mn(c,y,ye,k[5],k[6],{color:le,width:1,lineDash:[2,3]}),ye=`${G}STTwo`,mn(c,y,ye,k[7],k[8],{color:le,width:k,lineDash:[2,3]}))}}),l=!0,S.handles.rotationPoints=D,S.handles.slabThicknessPoints=O,this.configuration.viewportIndicators){const{viewportIndicatorsConfig:k}=this.configuration,G=(k==null?void 0:k.xOffset)||.95,j=(k==null?void 0:k.yOffset)||.05,F=[m*G,w*j],U=(k==null?void 0:k.circleRadius)||x*.01;aa(c,y,"0",F,U,{color:P,fill:P})}return l},this._getAnnotations=s=>{const{viewport:c}=s,l=cn(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(y=>y.data.viewportId!==l);if(!d||!d.length)return[];const h=u.getCamera(),{viewPlaneNormal:g,position:p}=h;return d.filter(y=>{const{viewportId:m}=y.data,x=f.getViewport(m).getCamera();return!(Kt(x.viewPlaneNormal,g,.01)&&Kt(x.position,p,1))})},this._filterViewportWithSameOrientation=(s,c,l)=>{const{renderingEngine:f}=s,{data:u}=c,d=f.getViewport(u.viewportId),h=l.filter(y=>{const{data:m}=y,w=f.getViewport(m.viewportId);return this._getReferenceLineControllable(w.id)===!0});if(!h||!h.length)return[];const g=d.getCamera(),p=g.viewPlaneNormal;return Yt.normalize(p),h.filter(y=>{const{viewportId:m}=y.data,x=f.getViewport(m).getCamera(),C=x.viewPlaneNormal;return Yt.normalize(C),Kt(p,C,.01)&&Kt(g.viewUp,x.viewUp,.01)})},this._filterAnnotationsByUniqueViewportOrientations=(s,c)=>{const{renderingEngine:l,viewport:f}=s,d=f.getCamera().viewPlaneNormal;Yt.normalize(d);const h=c.filter(y=>{const{data:m}=y,w=l.getViewport(m.viewportId),x=this._getReferenceLineControllable(w.id);return f!==w&&x===!0}),g=[];for(let y=0;y{const{data:m}=y,w=l.getViewport(m.viewportId),x=this._getReferenceLineControllable(w.id);return f!==w&&x!==!0});for(let y=0;y_===m))continue;const{viewportId:w}=m.data,C=l.getViewport(w).getCamera(),S=C.viewPlaneNormal;if(Yt.normalize(S),Kt(d,S,.01)||cp(d,S,.01))continue;let T=!1;for(let _=0;_{const l=s.getAllVolumeIds(),f=c.getAllVolumeIds();return l.length===f.length&&l.every(u=>f.includes(u))},this._jump=(s,c)=>{ze.isInteractingWithTool=!0;const{viewport:l,renderingEngine:f}=s,u=this._getAnnotations(s),d=[0,0,0];Yt.subtract(c,this.toolCenter,d);const g=this._getAnnotationsForViewportsWithDifferentCameras(s,u).filter(p=>{const{data:v}=p,y=f.getViewport(v.viewportId),m=this._checkIfViewportsRenderingSameScene(l,y);return this._getReferenceLineControllable(y.id)&&this._getReferenceLineDraggableRotatable(y.id)&&m});return g.length===0?(ze.isInteractingWithTool=!1,!1):(this._applyDeltaShiftToSelectedViewportCameras(f,g,d),ze.isInteractingWithTool=!1,!0)},this._activateModify=s=>{var c;ze.isInteractingWithTool=!((c=this.configuration.mobile)!=null&&c.enabled),s.addEventListener(B.MOUSE_UP,this._endCallback),s.addEventListener(B.MOUSE_DRAG,this._dragCallback),s.addEventListener(B.MOUSE_CLICK,this._endCallback),s.addEventListener(B.TOUCH_END,this._endCallback),s.addEventListener(B.TOUCH_DRAG,this._dragCallback),s.addEventListener(B.TOUCH_TAP,this._endCallback)},this._deactivateModify=s=>{ze.isInteractingWithTool=!1,s.removeEventListener(B.MOUSE_UP,this._endCallback),s.removeEventListener(B.MOUSE_DRAG,this._dragCallback),s.removeEventListener(B.MOUSE_CLICK,this._endCallback),s.removeEventListener(B.TOUCH_END,this._endCallback),s.removeEventListener(B.TOUCH_DRAG,this._dragCallback),s.removeEventListener(B.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),jt(l),this.editData=null;const u=Ct(l,this.getToolName(),!1);Ne(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=Ee(f),{renderingEngine:d,viewport:h}=u,g=this._getAnnotations(u),v=this.filterInteractableAnnotationsForElement(f,g)[0];if(!v)return;const{handles:y}=v.data,{currentPoints:m}=s.detail,w=m.canvas;if(y.activeOperation===Ys.DRAG){const C=this._getAnnotationsForViewportsWithDifferentCameras(u,g).filter(S=>{const{data:T}=S,_=d.getViewport(T.viewportId),E=this._getReferenceLineControllable(_.id),b=this._getReferenceLineDraggableRotatable(_.id);return E===!0&&b===!0&&v.data.activeViewportIds.find(D=>D===_.id)});this._applyDeltaShiftToSelectedViewportCameras(d,C,l)}else if(y.activeOperation===Ys.ROTATE){const C=this._getAnnotationsForViewportsWithDifferentCameras(u,g).filter(G=>{const{data:j}=G,F=d.getViewport(j.viewportId),U=this._getReferenceLineControllable(F.id),W=this._getReferenceLineDraggableRotatable(F.id);return U===!0&&W===!0}),S=Jt(),T=Jt(),_=[this.toolCenter[0],this.toolCenter[1],this.toolCenter[2]],E=h.worldToCanvas(_),b=c.currentPoints.canvas,D=Jt();Ts(D,b,c.deltaPoints.canvas),Ts(S,D,E),Ts(T,b,E);let O=nJ(S,T);this._isClockWise(E,D,b)&&(O*=-1),O=Math.round(O*100)/100;const L=h.getCamera().viewPlaneNormal,{matrix:P}=$i.buildFromRadian().translate(_[0],_[1],_[2]).rotate(O,L).translate(-_[0],-_[1],-_[2]),k=[];C.forEach(G=>{const{data:j}=G;j.handles.toolCenter=_;const F=d.getViewport(j.viewportId),U=F.getCamera(),{viewUp:W,position:J,focalPoint:te}=U;W[0]+=J[0],W[1]+=J[1],W[2]+=J[2],Wt(te,te,P),Wt(J,J,P),Wt(W,W,P),W[0]-=J[0],W[1]-=J[1],W[2]-=J[2],F.setCamera({position:J,viewUp:W,focalPoint:te}),k.push(F.id)}),d.renderViewports(k)}else if(y.activeOperation===Ys.SLAB){const C=this._getAnnotationsForViewportsWithDifferentCameras(u,g).filter(_=>{const{data:E}=_,b=d.getViewport(E.viewportId),D=this._getReferenceLineControllable(b.id),O=this._getReferenceLineSlabThicknessControlsOn(b.id);return D===!0&&O===!0&&v.data.activeViewportIds.find(L=>L===b.id)});if(C.length===0)return;const S=this._filterViewportWithSameOrientation(u,C[0],g),T=[];T.push(h.id),S.forEach(_=>{const{data:E}=_,b=d.getViewport(E.viewportId),O=b.getCamera().viewPlaneNormal,L=Yt.dot(l,O),P=[...O];if(Yt.multiplyScalar(P,L),Math.abs(P[0])>.001||Math.abs(P[1])>.001||Math.abs(P[2])>.001){const k=Math.sqrt(P[0]*P[0]+P[1]*P[1]+P[2]*P[2]),G=c.lastPoints.world,j=[0,0,0],F=[this.toolCenter[0],this.toolCenter[1],this.toolCenter[2]];if(!this._getReferenceLineDraggableRotatable(b.id)){const{rotationPoints:Le}=this.editData.annotation.data.handles,be=Le.filter($=>$[1].uid===b.id);if(be.length===2){const $=h.canvasToWorld(be[0][3]),R=h.canvasToWorld(be[1][3]);Yt.add($,R,F),Yt.multiplyScalar(F,.5)}}Yt.subtract(G,F,j);const W=Yt.dot(j,O),J=[...O];Yt.multiplyScalar(J,W);const te=[J[0],J[1],J[2]];Yn(te,te);const le=[P[0],P[1],P[2]];Yn(le,le);let ve=b.getSlabThickness();cp(te,le,.001)?ve-=k:ve+=k,ve=Math.abs(ve),ve=Math.max(HC.MINIMUM_SLAB_THICKNESS,ve),this._pointNearReferenceLine(v,w,6,b)&&(ve=HC.MINIMUM_SLAB_THICKNESS),Dr(b.id,d.id).getToolInstance(this.getToolName()).setSlabThickness(b,ve),T.push(b.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=Ci(n,r);if(!i)return;const o=this._getAnnotations(i);o!=null&&o.length&&o.forEach(a=>{fn(a.annotationUID)})})}setToolCenter(e,r=!1){this.toolCenter=e;const n=this._getViewportsInfo();Ne(n.map(({viewportId:i})=>i)),r||nt(He,B.CROSSHAIR_TOOL_CENTER_CHANGED,{toolGroupId:this.toolGroupId,toolCenter:this.toolCenter})}getHandleNearImagePoint(e,r,n,i){const o=Ee(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}=Ci(r,n),{element:o}=i;o.removeEventListener(Xe.VOLUME_VIEWPORT_NEW_VOLUME,this._onNewVolume)})}_subscribeToViewportNewVolumeSet(e){e.forEach(({viewportId:r,renderingEngineId:n})=>{const{viewport:i}=Ci(r,n),{element:o}=i;o.addEventListener(Xe.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===HC.MINIMUM_SLAB_THICKNESS&&(o=tl.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=Yt.dot(n,s),l=[...s];if(Yt.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];Yt.add(a.focalPoint,l,f),Yt.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;sL===p.id))continue;const v=this._getReferenceLineControllable(p.id),y=this._getReferenceLineSlabThicknessControlsOn(p.id);if(!v||!y)continue;const m=d[g][2],w=d[g][3],x=Jt();fo(x,m,w),zl(x,x,.5);const C=Jt();Yr(C,m,x),ql(C,C);const S=Jt();zl(S,C,l*.05);const T=Jt(),_=Jt();fo(T,x,S),Yr(_,x,S);const E={start:{x:T[0],y:T[1]},end:{x:m[0],y:m[1]}},b=xi([E.start.x,E.start.y],[E.end.x,E.end.y],[n[0],n[1]]),D={start:{x:_[0],y:_[1]},end:{x:w[0],y:w[1]}},O=xi([D.start.x,D.start.y],[D.end.x,D.end.y],[n[0],n[1]]);(b<=i||O<=i)&&(h.push(p.id),f.handles.activeOperation=null),g++}return f.activeViewportIds=[...h],this.editData={annotation:r},f.handles.activeOperation===Ys.DRAG}}qc.toolName="Crosshairs";const nv="magnify-viewport";class iz extends hi{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=Ee(o),{viewport:c,renderingEngine:l}=s;if(!(c instanceof ar))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=Ct(o,this.getToolName());return this.editData={referencedImageId:f,viewportIdsToRender:u,enabledElement:s,renderingEngine:l,currentPoints:a},this._createMagnificationViewport(),this._activateDraw(o),Mt(o),n.preventDefault(),Ne(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(),{rotation:u}=c.getViewPresentation(),{canvas:d,world:h}=s;let g;if(g=l.querySelector(".magnifyTool"),g===null){const v=document.createElement("div");v.classList.add("magnifyTool"),v.style.display="block",v.style.width=`${this.configuration.magnifyWidth}px`,v.style.height=`${this.configuration.magnifyHeight}px`,v.style.position="absolute",g=v,l.querySelector(".viewport-element").appendChild(v);const m={viewportId:nv,type:gr.STACK,element:g};a.enableElement(m)}g.style.top=`${d[1]-this.configuration.magnifyHeight/2}px`,g.style.left=`${d[0]-this.configuration.magnifyWidth/2}px`;const p=a.getViewport(nv);p.setStack([i]).then(()=>{if(this._hasBeenRemoved)return;p.setProperties(f),p.setViewPresentation({rotation:u});const{parallelScale:v}=c.getCamera(),{focalPoint:y,position:m,viewPlaneNormal:w}=p.getCamera(),x=Math.sqrt(Math.pow(y[0]-m[0],2)+Math.pow(y[1]-m[1],2)+Math.pow(y[2]-m[2],2)),C=[h[0],h[1],h[2]],S=[C[0]+x*w[0],C[1]+x*w[1],C[2]+x*w[2]];p.setCamera({parallelScale:v*(1/this.configuration.magnifySize),focalPoint:C,position:S}),p.render()}),g.style.display="block",Ne(o)},this._dragCallback=n=>{const i=n.detail,{deltaPoints:o,element:a,currentPoints:s}=i,c=o.world,l=s.canvas,f=Ee(a),{renderingEngine:u}=f,d=u.getViewport(nv),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]],y=[g[0]+c[0],g[1]+c[1],g[2]+c[2]];d.setCamera({focalPoint:y,position:v}),d.render()},this._dragEndCallback=n=>{const{element:i}=n.detail,o=Ee(i),{renderingEngine:a}=o;a.disableElement(nv);const s=i.querySelector(".viewport-element"),c=s.querySelector(".magnifyTool");s.removeChild(c),this._deactivateDraw(i),jt(i),this._hasBeenRemoved=!0},this._activateDraw=n=>{ze.isInteractingWithTool=!0,this._hasBeenRemoved=!1,n.addEventListener(B.MOUSE_UP,this._dragEndCallback),n.addEventListener(B.MOUSE_DRAG,this._dragCallback),n.addEventListener(B.MOUSE_CLICK,this._dragEndCallback),n.addEventListener(B.TOUCH_END,this._dragEndCallback),n.addEventListener(B.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._dragEndCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._dragEndCallback),n.removeEventListener(B.TOUCH_END,this._dragEndCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragCallback)}}_getReferencedImageId(e){const r=this.getTargetId(e);let n;return e instanceof ar&&(n=r.split("imageId:")[1]),n}}iz.toolName="Magnify";const xTe="advancedMagnifyTool",CTe=125,{Events:Ou}=ts,p7=t=>t.uid!==t.referencedId;var vT;(function(t){t.ShowZoomFactorsList="showZoomFactorsList"})(vT||(vT={}));const STe="AdvancedMagnify",TTe=1-Ya,hb=class hb extends or{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:gl.Secondary,modifierKey:Gi.Shift}]}}}}){super(e,r),this.addNewAnnotation=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=Ee(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),y=c.getCamera(),{viewPlaneNormal:m,viewUp:w}=y,x=this.getReferencedImageId(c,f,m,w),C=Tn(),S=Tn(),T=c.getFrameOfReferenceUID(),_={annotationUID:C,highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...m],viewUp:[...w],FrameOfReferenceUID:T,referencedImageId:x},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:b=>{const D=_.data.handles.points,{canvas:O}=b.delta;for(let L=0,P=D.length;L{this.magnifyViewportManager.dispose(),E1().forEach(i=>{i.metadata.toolName===this.getToolName()&&fn(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=lf([g,o]);return Math.abs(p-h){const o=n.detail,{element:a}=o;i.highlighted=!0;const s=Ct(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s},Mt(a),this._activateModify(a),Ne(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=Ct(s,this.getToolName());this.editData={annotation:i,viewportIdsToRender:u,handleIndex:f},this._activateModify(s),Mt(s),Ne(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),jt(o),this.editData=null,this.isDrawing=!1,Ne(s),c&&kn(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,Ne(c)},this._dragModifyCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,handleIndex:c}=this.editData,{data:l}=a;if(c===void 0){const{deltaPoints:f}=i,u=f.canvas;l.handles.points.forEach(h=>{h[0]+=u[0],h[1]+=u[1]}),a.invalidated=!0}else this._dragHandle(n),a.invalidated=!0;Ne(s)},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=lf([h,p]),y=this._getCanvasHandlePoints(h,v);s[0]=y[0],s[1]=y[1],s[2]=y[2],s[3]=y[3]},this.cancel=n=>{if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateModify(n),jt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,Ne(o),a&&kn(i),this.editData=null,i.annotationUID},this._activateModify=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragModifyCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragModifyCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragModifyCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragModifyCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=cn(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=F0.getInstance()}showZoomFactorsList(e,r){const{element:n,currentPoints:i}=e.detail,o=Ee(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}};hb.Actions=vT;let Xm=hb;class F0{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 _Te({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===STe&&this.destroyViewport(r.data.magnifyViewportId)},this._newStackImageCallback=e=>{const{viewportId:r,imageId:n}=e.detail,i=this._getMagnifyViewportsMapEntriesBySourceViewportId(r),{viewport:o}=Bn(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=jr(r).getViewport(n),{viewPlaneNormal:a}=o.getCamera();this._getMagnifyViewportsMapEntriesBySourceViewportId(n).forEach(({annotation:c})=>{const{viewPlaneNormal:l}=c.metadata;if(!(Math.abs(St(l,a))>TTe))return;const{handles:u}=c.data,d=o.canvasToWorld([0,0]),h=Sn(Be(),d,u.points[0]),g=St(h,a),p=_r(Be(),a,g);for(let v=0,y=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=Bn(e);this.createViewport(i,{...o,sourceEnabledElement:{...a}})})}_addEventListeners(){He.addEventListener(B.ANNOTATION_REMOVED,this._annotationRemovedCallback)}_removeEventListeners(){He.removeEventListener(B.ANNOTATION_REMOVED,this._annotationRemovedCallback)}_addSourceElementEventListener(e){e.addEventListener(Ou.STACK_NEW_IMAGE,this._newStackImageCallback);const r=i=>{const{viewportId:o}=i.detail;this._reset(o)};e.addEventListener(Ou.VIEWPORT_NEW_IMAGE_SET,r);const n=i=>{const{viewportId:o}=i.detail;this._reset(o)};e.addEventListener(Ou.VOLUME_VIEWPORT_NEW_VOLUME,n),e.addEventListener(Ou.VOLUME_NEW_IMAGE,this._newVolumeImageCallback),e.newStackHandler=r,e.newVolumeHandler=n}_removeSourceElementEventListener(e){e.removeEventListener(Ou.STACK_NEW_IMAGE,this._newStackImageCallback),e.removeEventListener(Ou.VOLUME_NEW_IMAGE,this._newVolumeImageCallback),e.removeEventListener(Ou.VIEWPORT_NEW_IMAGE_SET,e.newStackHandler),e.removeEventListener(Ou.VOLUME_VIEWPORT_NEW_VOLUME,e.newVolumeHandler),delete e.newStackHandler,delete e.newVolumeHandler}_initialize(){this._addEventListeners()}}class _Te{constructor({magnifyViewportId:e,sourceEnabledElement:r,radius:n=CTe,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??Tn(),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=ag(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 Nn.Active:r.setToolActive(i,a);break;case Nn.Passive:r.setToolPassive(i);break;case Nn.Enabled:r.setToolEnabled(i);break;case Nn.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(xTe),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=Dr(e.id,e.renderingEngineId),a=o.clone(i,s=>{const c=o.getToolInstance(s);return c instanceof or&&!(c instanceof Xm)});return a.addViewport(r.id,r.renderingEngineId),n.filter(p7).forEach(s=>{mg(this.viewportId,[{segmentationId:s.referencedId,type:Et.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=>!p7(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(!ze.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=Vo(c,a),f=s-r.padding;if(l<=f)return;const u=l-f,d=Ts(Jt(),a,c);ql(d,d),zl(d,d,u);const h=fo(Jt(),this.position,d),g=o(this.position),p=o(h),v=Sn(Be(),p,g),y={points:{currentPosition:{canvas:this.position,world:g},newPosition:{canvas:h,world:p}},delta:{canvas:d,world:v}};r.callback(y)}_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){He.addEventListener(B.TOOL_MODE_CHANGED,this._handleToolModeChanged),e.addEventListener(B.MOUSE_MOVE,this._mouseDragCallback),e.addEventListener(B.MOUSE_DRAG,this._mouseDragCallback),this._addBrowserEventListeners(e)}_removeEventListeners(e){He.removeEventListener(B.TOOL_MODE_CHANGED,this._handleToolModeChanged),e.addEventListener(B.MOUSE_MOVE,this._mouseDragCallback),e.addEventListener(B.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=Ee(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()}}Xm.toolName="AdvancedMagnify";const{EPSILON:KC}=Of;class _d extends Af{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{sourceViewportId:"",enforceSameFrameOfReference:!0,showFullDimension:!1}}){super(e,r),this.editData=null,this._init=()=>{var h;const i=Go()[0];if(!i)return;let o=i.getViewports();o=jw(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=Zy(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}}};on(g,s),u=g}this.editData={sourceViewportId:a.id,renderingEngine:i,annotation:u},Ne(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 W,J;const{viewport:o}=n;if(!this.editData)return!1;const{annotation:a,sourceViewportId:s}=this.editData;let c=!1;const{viewport:l}=Bn(s)||{};if(!l||l.id===o.id||!a||!((J=(W=a==null?void 0:a.data)==null?void 0:W.handles)!=null&&J.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:y}=o.getCamera(),{viewPlaneNormal:m}=l.getCamera();if(this.isParallel(v,m))return c;const w=ol(v,p),x=[u,h,d,g],C=[u,d,h,g];let S=x,T=jn(Be(),x[0],x[1]);T=Yn(Be(),T);let _=jn(Be(),x[2],x[0]);_=Yn(Be(),_);const E=Ln(Be(),T,_);if(this.isParallel(E,v))return c;this.isPerpendicular(T,v)&&(S=C);const b=Ph(S[0],S[1],w),D=Ph(S[2],S[3],w),{annotationUID:O}=a;f.annotationUID=O;const L=this.getStyle("lineWidth",f,a),P=this.getStyle("lineDash",f,a),k=this.getStyle("color",f,a),G=this.getStyle("shadow",f,a);let j=[b,D].map(te=>o.worldToCanvas(te));if(this.configuration.showFullDimension&&(j=this.handleFullDimension(o,b,v,y,D,j)),j.length<2)return c;const F=`${O}-line`;return mn(i,O,"1",j[0],j[1],{color:k,width:L,lineDash:P,shadow:G},F),c=!0,c},this.isPerpendicular=(n,i)=>{const o=St(n,i);return Math.abs(o)GS(l,m)),[v,y]=[r,o].map(m=>GS(l,m));a=[[d,h],[h,g],[p,g],[d,p]].map(([m,w])=>this.intersectInfiniteLines(m,w,v,y)).filter(m=>m&&this.isInBound(m,u)).map(m=>{const w=PV(l,m);return e.worldToCanvas(w)})}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,y=l-u,m=u*f-l*d;if(Math.abs(h*y-v*g)1-KC}isInBound(e,r){return e[0]>=0&&e[0]<=r[0]&&e[1]>=0&&e[1]<=r[1]}}_d.toolName="ReferenceLines";const{EPSILON:m7}=Of;class oz extends Af{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=lt("imagePlaneModule",n[0]);if(!i){console.warn("OverlayGridTool: No imagePlaneModule found for sourceImageIds");return}const{frameOfReferenceUID:o}=i,a=ti(this.toolGroupId).viewportsInfo;if(!(a!=null&&a.length)){console.warn("OverlayGridTool: No viewports found");return}const s=cn(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}};on(l,o)}Ne(a.map(({viewportId:c})=>c))},this.calculateImageIdPointSets=n=>{const{imagePositionPatient:i,rows:o,columns:a,rowCosines:s,columnCosines:c,rowPixelSpacing:l,columnPixelSpacing:f}=lt("imagePlaneModule",n),u=[...i],d=[...i],h=[...i],g=[...i];return Cn(d,i,c,a*f),Cn(h,i,s,o*l),Cn(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=cn(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 y=ol(g,h),m=u.data.pointSets,w=u.data.viewportData;for(let x=0;xs.worldToCanvas(j)),k=`${d}-line`,G=`${x}`;mn(i,d,G,P[0],P[1],{color:O,width:b,lineDash:D,shadow:L},k)}return a=!0,a},this.initializeViewportData=(n,i)=>(n.set(i,{pointSetsToUse:[],lineStartsWorld:[],lineEndsWorld:[]}),n.get(i)),this.isPerpendicular=(n,i)=>{const o=St(n,i);return Math.abs(o)1-m7}getImageIdNormal(e){const{imageOrientationPatient:r}=lt("imagePlaneModule",e),n=bt(r[0],r[1],r[2]),i=bt(r[3],r[4],r[5]);return Ln(Be(),n,i)}}oz.toolName="OverlayGrid";class az extends Af{constructor(e={},r={configuration:{opacity:.5}}){super(e,r),this._init=()=>{var s;const n=ti(this.toolGroupId).viewportsInfo;if(!(n!=null&&n.length)){console.warn(this.getToolName()+"Tool: No viewports found");return}const i=(s=jr(n[0].renderingEngineId))==null?void 0:s.getViewport(n[0].viewportId);if(!i)return;const o=i.getFrameOfReferenceUID(),a=cn(this.getToolName(),o);if(!(a!=null&&a.length)){const c=new Map;ETe(c,n);const l={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),FrameOfReferenceUID:o,referencedImageId:null},data:{actorsWorldPointsMap:c}};on(l,o)}Ne(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=cn(this.getToolName(),a);if(!(c!=null&&c.length))return s;const l=c[0],{annotationUID:f}=l,u=l.data.actorsWorldPointsMap;sz(u,o);const d=o.getActors(),h=cz(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:y,color:m}=p.get(h);for(let w=0;wo.worldToCanvas(_)),S={color:m,fillColor:m,fillOpacity:this.configuration.opacity,closePath:!0,lineWidth:2},T=g.uid+"#"+v;nu(i,f,T,C,S),v++}}),s=!0,s}}}function ETe(t,e){e.forEach(({viewportId:r,renderingEngineId:n})=>{var o;const i=(o=jr(n))==null?void 0:o.getViewport(r);sz(t,i)})}function sz(t,e){const r=e.getActors(),n=cz(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=UW(a);if(!s)return;const c=i.actor.getProperty().getColor(),l=bTe(c);o.set(n,{worldPointsSet:s,color:l})}})}function cz(t){const{viewPlaneNormal:e}=t.getCamera(),r=t.getCurrentImageIdIndex();return`${t.id}-${_G(e)}-${r}`}function bTe(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])}az.toolName="SegmentationIntersection";class Wa extends Af{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=Ee(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(cn(this.getToolName(),i).length>0)return null;if(on(h,i)===null)return;const v=Ct(i,this.getToolName(),!1);Ne(v)},this.onCameraModified=n=>{const i=n.detail,{element:o,previousCamera:a,camera:s}=i,l=Ee(o).viewport;if(o!==this._elementWithCursor)return;const f=a.focalPoint,u=s.viewPlaneNormal,d=s.focalPoint,h=[0,0,0];if(Yt.subtract(d,f,h),h.reduce((v,y)=>v+y,0)===0)return;const g=Yt.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=cn(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(O)))return o;const S=y.map(O=>a.worldToCanvas(O));if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;if(!Kr(g))continue;const T={upper:"upper",right:"right",lower:"lower",left:"left"},[_,E]=S[0],b=c?20:7,D=c?5:7;mn(i,g,T.upper,[_,E-(b/2+D)],[_,E-b/2],{color:C,lineDash:x,lineWidth:w}),mn(i,g,T.lower,[_,E+(b/2+D)],[_,E+b/2],{color:C,lineDash:x,lineWidth:w}),mn(i,g,T.right,[_+(b/2+D),E],[_+b/2,E],{color:C,lineDash:x,lineWidth:w}),mn(i,g,T.left,[_-(b/2+D),E],[_-b/2,E],{color:C,lineDash:x,lineWidth:w}),o=!0}return o},this._disableCursorEnabled=this.configuration.disableCursor}onSetToolActive(){if(this._disableCursorEnabled=this.configuration.disableCursor,!this._disableCursorEnabled)return;const e=ti(this.toolGroupId).viewportsInfo;if(!e)return;e.map(n=>Ci(n.viewportId,n.renderingEngineId)).forEach(n=>{n&&Mt(n.viewport.element)})}onSetToolDisabled(){if(!this._disableCursorEnabled)return;const e=ti(this.toolGroupId).viewportsInfo;if(!e)return;e.map(n=>Ci(n.viewportId,n.renderingEngineId)).forEach(n=>{n&&jt(n.viewport.element)})}getActiveAnnotation(e){const r=cn(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=Ct(e,this.getToolName(),!1);Ee(e)&&Ne(i)}filterInteractableAnnotationsForElement(e,r){var d,h,g;if(!(r instanceof Array)||r.length===0)return[];const n=r[0],i=(d=Ee(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=ol(a,s);return _m(f,l)isNaN(n)))){if(e instanceof ar){const n=CE(r,e);if(n===null)return;n!==e.getCurrentImageIdIndex()&&e.setImageIdIndex(n)}else if(e instanceof sr){const{focalPoint:n,viewPlaneNormal:i}=e.getCamera();if(!n||!i)return;const o=ol(i,n),a=_m(o,r,!0);if(Math.abs(a)<.5)return;const s=Yn(Be(),bt(...i)),c=_r(Be(),s,a),l=ni(Be(),bt(...n),c);{e.setCamera({focalPoint:l});const f=e.getRenderingEngine();f&&f.renderViewport(e.id)}}}}}Wa.toolName="ReferenceCursors";const v7=[];class lz extends Af{constructor(e={},r={configuration:{viewportId:"",scaleLocation:"bottom"}}){super(e,r),this.editData=null,this._init=()=>{var g,p;const i=Go()[0];if(!i)return;const o=ti(this.toolGroupId).viewportsInfo;if(!o)return;const a=o.map(v=>Ci(v.viewportId,v.renderingEngineId));let{viewport:s}=a[0];const{FrameOfReferenceUID:c}=a[0];if(this.configuration.viewportId&&a.forEach(v=>{v.viewport.id==this.configuration.viewportId&&(s=v.viewport)}),!s)return;const{viewUp:l,viewPlaneNormal:f}=s.getCamera(),u=Zy(s);let d=(g=this.editData)==null?void 0:g.annotation;const h=cn(this.getToolName(),s.element);h.length&&(d=h.filter(v=>v.data.viewportId==s.id)[0]),a.forEach(v=>{const{viewport:y}=v;if(!v7.includes(y.id)){const m={metadata:{toolName:this.getToolName(),viewPlaneNormal:[...f],viewUp:[...l],FrameOfReferenceUID:c,referencedImageId:null},data:{handles:{points:Zy(y)},viewportId:y.id}};v7.push(y.id),on(m,y.element),d=m}}),(p=this.editData)!=null&&p.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=jn(Be(),o[0],o[1]);s=Yn(Be(),s);let c=jn(Be(),o[2],o[0]);c=Yn(Be(),c);const l={bottom:[o[1],o[2]],top:[o[0],o[3]],right:[o[2],o[3]],left:[o[0],o[1]]},f=ni(Be(),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=[jn(Be(),f,c.map(d=>d*u)),ni(Be(),f,c.map(d=>d*u))]:(i=="left"||i=="right")&&(a=[ni(Be(),f,s.map(d=>d*u)),jn(Be(),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||!this.editData.viewport)return;const n=this.configuration.scaleLocation,{viewport:i}=e,a=cn(this.getToolName(),i.element).filter(ye=>ye.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=Ki(h,g),y=Ki(u,h),m=this.computeScaleBounds(f,.05,.05,n),w=this.computeScaleBounds(f,.05,.05,n),x=this.computeScaleSize(v,y,n),C=this.computeWorldScaleCoordinates(x,n,p).map(ye=>i.worldToCanvas(ye)),S=this.computeCanvasScaleCoordinates(f,C,w,m,n),T=this.computeEndScaleTicks(S,n),{annotationUID:_}=a;l.annotationUID=_;const E=this.getStyle("lineWidth",l,a),b=this.getStyle("lineDash",l,a),D=this.getStyle("color",l,a),O=this.getStyle("shadow",l,a),L=`${_}-scaleline`;mn(r,_,"1",S[0],S[1],{color:D,width:E,lineDash:b,shadow:O},L);const k=`${_}-left`;mn(r,_,"2",T.endTick1[0],T.endTick1[1],{color:D,width:E,lineDash:b,shadow:O},k);const j=`${_}-right`;mn(r,_,"3",T.endTick2[0],T.endTick2[1],{color:D,width:E,lineDash:b,shadow:O},j);const U={bottom:[-10,-42],top:[-12,-35],left:[-40,-20],right:[-50,-20]},W=[S[0][0]+U[n][0],S[0][1]+U[n][1]],J=this._getTextLines(x),{tickIds:te,tickUIDs:le,tickCoordinates:ve}=this.computeInnerScaleTicks(x,n,_,T.endTick1,T.endTick2);for(let ye=0;ye=50?(r=e/10,n=" cm"):(r=e,n=" mm"),[r.toString().concat(n)]}}lz.toolName="ScaleOverlay";const uz=(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(s,a,r),o.first===void 0&&(o.first=s),o.last=s)}if(o.first!==void 0&&o.last!==void 0)for(let s=0;s0&&(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=Ee(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=Vo(s,h);if(g=0;l--){if(l>=s-1||l<0)continue;const f=l+1,u=Vo(n[l],n[f]);if(u>c){const d=this.directionalVector(n[l],n[f]),g=(u-e.meanDistance)/e.meanDistance*e.meanDistance*jc.CHAIN_PULL_STRENGTH_FACTOR;n[l][0]+=d[0]*g,n[l][1]+=d[1]*g,n[l][2]+=d[2]*g}}for(let l=a+1;l=s||l<=0)continue;const f=l-1,u=Vo(n[l],n[f]);if(u>c){const d=this.directionalVector(n[l],n[f]),g=(u-e.meanDistance)/e.meanDistance*e.meanDistance*jc.CHAIN_PULL_STRENGTH_FACTOR;n[l][0]+=d[0]*g,n[l][1]+=d[1]*g,n[l][2]+=d[2]*g}}}};jc.shapeName="Circle",jc.CHAIN_MAINTENANCE_ITERATIONS=3,jc.CHAIN_PULL_STRENGTH_FACTOR=.3,jc.MAX_INTER_DISTANCE_FACTOR=1.2;let Np=jc;class Gh extends hi{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{minSpacing:1,referencedToolNames:["PlanarFreehandROI","PlanarFreehandContourSegmentationTool"],toolShape:"circle",referencedToolName:"PlanarFreehandROI",updateCursorSize:"dynamic"}}){super(e,r),this.registeredShapes=new Map,this.isActive=!1,this.commonData={activeAnnotationUID:null,viewportIdsToRender:[],isEditingOpenContour:!1,canvasLocation:void 0},this.preMouseDownCallback=n=>{const i=n.detail,o=i.element;if(this.configureToolSize(n),this.selectFreehandTool(i),this.commonData.activeAnnotationUID!==null)return this.isActive=!0,Mt(o),this.activateModify(o),!0},this.mouseMoveCallback=n=>{this.mode===Nn.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=Ee(o);this.isActive=!1,this.deactivateModify(o),jt(o);const{renderingEngineId:c,viewportId:l}=s,u=Dr(l,c).getToolInstance(a.referencedToolName),h=this.filterSculptableAnnotationsForElement(o).find(g=>g.annotationUID===this.commonData.activeAnnotationUID);u.configuration.calculateStats&&(h.invalidated=!0),rn(h,o,Xt.HandlesUpdated)},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(Np.shapeName,Np),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=Ee(i),{viewport:a}=o,s=this.registeredShapes.get(this.selectedShape);this.sculptData={mousePoint:e.currentPoints.world,mouseCanvasPoint:e.currentPoints.canvas,deltaWorld:e.deltaPoints.world,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=Ee(o),{viewport:s}=a,c=y7(e+1,r.length),l=s.worldToCanvas(r[e]),f=s.worldToCanvas(r[c]);Vo(l,f)>i&&n.push(e)}updateCursor(e){const r=e.detail,n=r.element,i=Ee(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;this.configuration.updateCursorSize==="dynamic"&&l.updateToolSize(f,a,c)}Ne(this.commonData.viewportIdsToRender)}filterSculptableAnnotationsForElement(e){const r=this.configuration,n=Ee(e),{renderingEngineId:i,viewportId:o}=n,a=[],c=Dr(o,i).getToolInstance(r.referencedToolName);return r.referencedToolNames.forEach(l=>{const f=cn(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=y7(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=Ee(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=uz(i,a[l],s);f!==-1&&f(t+e)%e;Gh.toolName="SculptorTool";const DTe={Z:[0,0,1]};class fz extends hi{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{direction:DTe.Z,rotateIncrementDegrees:30}}){super(e,r)}mouseWheelCallback(e){const{element:r,wheel:n}=e.detail,i=Ee(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,y,m]=a,w=d*(s*Math.PI)/180,x=[0,0,0],C=[0,0,0],S=[0,0,0],T=Pt(new Float32Array(16));ur(T,T,[h,g,p]),Lo(T,T,w,[v,y,m]),ur(T,T,[-h,-g,-p]),Wt(x,f,T),Wt(C,u,T),Pt(T),Lo(T,T,w,[v,y,m]),Wt(S,l,T),o.setCamera({position:x,viewUp:S,focalPoint:C}),o.render()}}fz.toolName="VolumeRotateMouseWheel";const jp=class jp extends or{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,getTextCallback:ITe,changeTextCallback:OTe,preventHandleOutsideImage:!1}}){super(e,r),this.isPointNearTool=(n,i,o,a)=>{const s=Ee(n),{viewport:c}=s,{annotationUID:l}=i,f=i.data.handles.points[0],u=c.worldToCanvas(f);if(xr(o,u)=x&&o[0]<=x+v.width&&o[1]>=C&&o[1]<=C+v.height},this.addNewAnnotation=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=Ee(a),{viewport:l}=c;Mt(a),this.isDrawing=!0;const f=l.getCamera(),{viewPlaneNormal:u,viewUp:d}=f,h=this.getReferencedImageId(l,s,u,d),g=l.getFrameOfReferenceUID(),p={annotationUID:null,highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...u],viewUp:[...d],FrameOfReferenceUID:g,referencedImageId:h,...l.getViewReference({points:[s]})},data:{text:"",handles:{points:[[...s],[...s]]},label:""}};on(p,a);const v=Ct(a,this.getToolName());return this.editData={annotation:p,newAnnotation:!0,viewportIdsToRender:v,offset:[0,0,0]},n.preventDefault(),Ne(v),this.configuration.getTextCallback(y=>{if(!y){fn(p.annotationUID),Ne(v),this.isDrawing=!1;return}jt(a),p.data.text=y,kn(p),Ne(v)}),this.createMemo(a,p,{newAnnotation:!0}),p},this.toolSelectedCallback=(n,i)=>{const o=n.detail,{element:a,currentPoints:s}=o;i.highlighted=!0;const c=Ct(a,this.getToolName());let l=[0,0,0];if(s&&s.world){const f=s.world,u=i.data.handles.points[0];l=[u[0]-f[0],u[1]-f[1],u[2]-f[2]]}this.editData={annotation:i,viewportIdsToRender:c,offset:l},this._activateModify(a),Mt(a),Ne(c),n.preventDefault()},this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,newAnnotation:c}=this.editData;this._deactivateDraw(o),this._deactivateModify(o),jt(o),c&&this.createMemo(o,a,{newAnnotation:c}),this.editData=null,this.isDrawing=!1,this.doneEditMemo(),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&fn(a.annotationUID),Ne(s),c&&kn(a)},this._dragCallback=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,{annotation:c,viewportIdsToRender:l,offset:f}=this.editData;f?c.data.handles.points[0]=[s[0]+f[0],s[1]+f[1],s[2]+f[2]]:c.data.handles.points[0]=[...s],c.invalidated=!0,Ne(l),rn(c,a,Xt.LabelChange)},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateModify(n),jt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,Ne(o),a&&kn(i),this.editData=null,i.annotationUID}},this._activateModify=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragCallback)},this._deactivateModify=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragCallback),n.removeEventListener(B.TOUCH_END,this._endCallback)},this._activateDraw=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragCallback),n.addEventListener(B.MOUSE_MOVE,this._dragCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_MOVE,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=cn(this.getToolName(),s);if(!(c!=null&&c.length))return o;c=this.filterInteractableAnnotationsForElement(s,c);const l={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id};for(let f=0;f{const o=Bn(e);if(!o)return;const{viewport:a}=o,s=a.getFrameOfReferenceUID(),{viewPlaneNormal:c,viewUp:l}=a.getCamera(),f=new jp,u=f.getReferencedImageId(a,r,c,l),d={annotationUID:(i==null?void 0:i.annotationUID)||Tn(),data:{text:n,handles:{points:[r]}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:f.getToolName(),viewPlaneNormal:c,FrameOfReferenceUID:s,referencedImageId:u,...i}};on(d,a.element),Ne([a.id])};let P5=jp;function ITe(t){return t(prompt("Enter your annotation:"))}function OTe(t,e,r){return r(prompt("Enter your annotation:"))}P5.toolName="Label";const{transformWorldToIndex:w7}=_n,$0=class $0 extends or{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,getTextLines:MTe,actions:{undo:{method:"undo",bindings:[{key:"z"}]},redo:{method:"redo",bindings:[{key:"y"}]}}}}){super(e,r),this.addNewAnnotation=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=Ee(a),{viewport:l}=c;Mt(a),this.isDrawing=!0;const{viewPlaneNormal:f,viewUp:u,position:d}=l.getCamera(),h=this.getReferencedImageId(l,s,f,u),g={highlighted:!0,invalidated:!0,metadata:{...l.getViewReference({points:[s]}),toolName:this.getToolName(),referencedImageId:h,viewUp:u,cameraPosition:d},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:{}}};on(g,a);const p=Ct(a,this.getToolName());return this.editData={annotation:g,viewportIdsToRender:p,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),n.preventDefault(),Ne(p),g},this.isPointNearTool=(n,i,o,a)=>{const s=Ee(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 xi([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=Ct(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},this._activateModify(a),Mt(a),Ne(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),jt(o),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&fn(a.annotationUID),Ne(s),this.doneEditMemo(),c&&kn(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,newAnnotation:f}=this.editData,{data:u}=a;if(this.createMemo(o,a,{newAnnotation:f}),l){const{deltaPoints:d}=i,h=d.world,{textBox:g}=u.handles,{worldPosition:p}=g;p[0]+=h[0],p[1]+=h[1],p[2]+=h[2],g.hasMoved=!0}else if(c===void 0){const{deltaPoints:d}=i,h=d.world;u.handles.points.forEach(p=>{p[0]+=h[0],p[1]+=h[1],p[2]+=h[2]}),a.invalidated=!0}else{const{currentPoints:d}=i,h=d.world;u.handles.points[c]=[...h],a.invalidated=!0}this.editData.hasMoved=!0,Ne(s),a.invalidated&&rn(a,o,Xt.HandlesUpdated)},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),jt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,Ne(o),a&&kn(i),this.editData=null,i.annotationUID}},this._activateModify=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback)},this._activateDraw=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragCallback),n.addEventListener(B.MOUSE_MOVE,this._dragCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback)},this._deactivateDraw=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_MOVE,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=cn(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(U));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(!Kr(g))continue;!ai(g)&&!this.editData&&y!==null&&(T=[S[y]]),T&&nr(i,g,"0",S,{color:m,lineDash:x,lineWidth:w});const _=`${g}-line`;if(mn(i,g,"1",S[0],S[1],{color:m,width:w,lineDash:x,shadow:C},_),o=!0,!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;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 D=this.configuration.getTextLines(p,l);if(!p.handles.textBox.hasMoved){const U=Ia(S);p.handles.textBox.worldPosition=a.canvasToWorld(U)}const O=a.worldToCanvas(p.handles.textBox.worldPosition),P=ao(i,g,"1",D,O,S,{},b),{x:k,y:G,width:j,height:F}=P;p.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([k,G]),topRight:a.canvasToWorld([k+j,G]),bottomLeft:a.canvasToWorld([k,G+F]),bottomRight:a.canvasToWorld([k+j,G+F])}}return o},this._throttledCalculateCachedStats=zo(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=Ct(o,this.getToolName());this.editData={annotation:r,viewportIdsToRender:l,handleIndex:c,movingTextBox:s},this._activateModify(o),Mt(o),Ne(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 u=0;u{const i=Bn(e);if(!i)return;const{FrameOfReferenceUID:o,referencedImageId:a,viewPlaneNormal:s,instance:c,viewport:l}=$0.hydrateBase($0,i,r,n),{toolInstance:f,...u}=n||{},d={annotationUID:(n==null?void 0:n.annotationUID)||Tn(),data:{handles:{points:r}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:c.getToolName(),viewPlaneNormal:s,FrameOfReferenceUID:o,referencedImageId:a,...u}};on(d,l.element),Ne([l.id])};let _f=$0;function MTe(t,e){const r=t.cachedStats[e],{length:n,unit:i}=r;return n==null||isNaN(n)?void 0:[`${an(n)} ${i}`]}const{transformWorldToIndex:x7}=_n,gb=class gb extends or{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,getTextLines:PTe}}){super(e,r),this.addNewAnnotation=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=Ee(a),{viewport:l,renderingEngine:f}=c;Mt(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:{}}};on(p,a);const v=Ct(a,this.getToolName());return this.editData={annotation:p,viewportIdsToRender:v,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),n.preventDefault(),Ne(v),p},this.isPointNearTool=(n,i,o,a)=>{const s=Ee(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 xi([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=Ct(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},this._activateModify(a),Mt(a),Ee(a),Ne(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)return;f.handles.activeHandleIndex=null,this._deactivateModify(o),this._deactivateDraw(o),jt(o);const u=Ee(o),{renderingEngine:d}=u;this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&fn(a.annotationUID),Ne(s),c&&kn(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:h}=i,g=h.world,{textBox:p}=f.handles,{worldPosition:v}=p;v[0]+=g[0],v[1]+=g[1],v[2]+=g[2],p.hasMoved=!0}else if(c===void 0){const{deltaPoints:h}=i,g=h.world;f.handles.points.forEach(v=>{v[0]+=g[0],v[1]+=g[1],v[2]+=g[2]}),a.invalidated=!0}else{const{currentPoints:h}=i,g=h.world;f.handles.points[c]=[...g],a.invalidated=!0}this.editData.hasMoved=!0;const u=Ee(o),{renderingEngine:d}=u;Ne(s)},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),jt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,Ee(n),Ne(o),a&&kn(i),this.editData=null,i.annotationUID}},this._activateModify=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback)},this._activateDraw=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragCallback),n.addEventListener(B.MOUSE_MOVE,this._dragCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback)},this._deactivateDraw=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_MOVE,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=cn(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(F));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),!Kr(g))continue;if(!ai(g)&&!this.editData&&y!==null&&(T=[S[y]]),T&&nr(i,g,"0",S,{color:m,lineDash:x,lineWidth:w}),QU(i,g,"0",S[0],S[1],{color:m,width:w,lineDash:x}),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 b=this.configuration.getTextLines(p,l);if(!p.handles.textBox.hasMoved){const F=Ia(S);p.handles.textBox.worldPosition=a.canvasToWorld(F)}const D=a.worldToCanvas(p.handles.textBox.worldPosition),L=ao(i,g,"1",b,D,S,{},E),{x:P,y:k,width:G,height:j}=L;p.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([P,k]),topRight:a.canvasToWorld([P+G,k]),bottomLeft:a.canvasToWorld([P,k+j]),bottomRight:a.canvasToWorld([P+G,k+j])}}return o},this._throttledCalculateCachedStats=zo(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(d=>d===n);const l=Ct(o,this.getToolName());this.editData={annotation:r,viewportIdsToRender:l,handleIndex:c,movingTextBox:s},this._activateModify(o),Mt(o);const f=Ee(o),{renderingEngine:u}=f;Ne(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 u=0;u{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=Ee(a),{viewport:l}=c;this.isDrawing=!0;const f=this.constructor.createAnnotationForViewport(l,{data:{handles:{points:[[...s]]}}});on(f,a);const u=Ct(a,this.getToolName());return this.editData={annotation:f,newAnnotation:!0,viewportIdsToRender:u},this._activateModify(a),Mt(a),n.preventDefault(),Ne(u),f},this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,newAnnotation:c}=this.editData,{viewportId:l,renderingEngine:f}=Ee(o);this.eventDispatchDetail={viewportId:l,renderingEngineId:f.id},this._deactivateModify(o),jt(o),c&&this.createMemo(o,a,{newAnnotation:c}),this.editData=null,this.isDrawing=!1,this.doneEditMemo(),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&fn(a.annotationUID),Ne(s),c&&kn(a)},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,{annotation:c,viewportIdsToRender:l,newAnnotation:f}=this.editData,{data:u}=c;this.createMemo(a,c,{newAnnotation:f}),u.handles.points[0]=[...s],c.invalidated=!0,Ne(l)},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateModify(n),jt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,Ne(o),a&&kn(i),this.editData=null,i.annotationUID}},this._activateModify=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=cn(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 O=Ar(T),L=D.hasImageURI(O),P=Ar(D.getCurrentImageId());return L&&P!==O})&&delete p.cachedStats[_]}if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;if(!Kr(g))continue;nr(i,g,"0",[y],{color:m,lineWidth:w,handleRadius:this.configuration.handleRadius}),o=!0;const C=this.getLinkedTextBoxStyle(u,h);if(!C.visibility)continue;const S=this.configuration.getTextLines(p,l);if(S){const T=[y[0]+this.configuration.textCanvasOffset.x,y[1]+this.configuration.textCanvasOffset.y];Cf(i,g,"0",S,[T[0],T[1]],C)}}return o}}isPointNearTool(e,r,n,i){const o=Ee(e),{viewport:a}=o,{data:s}=r,c=s.handles.points[0],l=a.worldToCanvas(c);return xr(n,l)D!==null);T=b?E.values:T,_=b?E.units:"raw"}else _=xu(C,e.metadata.referencedImageId,p);f[g]={index:S,value:T,Modality:C,modalityUnit:_}}else this.isHandleOutsideImage=!0,f[g]={index:S,Modality:C}}const d=e.invalidated;return e.invalidated=!1,d&&rn(e,c,i),f}};ku.toolName="Probe",ku.probeDefaults={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:LTe,handleRadius:"6",textCanvasOffset:{x:6,y:-6}}},ku.hydrate=(e,r,n)=>{const i=Bn(e);if(!i)return;const{FrameOfReferenceUID:o,referencedImageId:a,viewPlaneNormal:s,viewUp:c,instance:l,viewport:f}=ku.hydrateBase(ku,i,r,n),{toolInstance:u,...d}=n||{},h={annotationUID:(n==null?void 0:n.annotationUID)||Tn(),data:{handles:{points:r}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:l.getToolName(),viewPlaneNormal:s,FrameOfReferenceUID:o,referencedImageId:a,...d}};on(h,f.element),Ne([f.id])};let mu=ku;function LTe(t,e){const r=t.cachedStats[e],{index:n,value:i,modalityUnit:o}=r;if(i===void 0||!n)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=Ee(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=Ct(a,this.getToolName());return this.editData={annotation:p,newAnnotation:!0,viewportIdsToRender:v},this._activateModify(a),Mt(a),n.preventDefault(),Ne(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;nr(i,d,"0",[p],{color:v}),o=!0;const m=this.configuration.getTextLines(h,c);if(m){const w=[p[0]+6,p[1]-6];Cf(i,d,"0",m,[w[0],w[1]],this.getLinkedTextBoxStyle(f,u))}return o}}};pb.toolName="DragProbe";let wT=pb;function ATe(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}const{transformWorldToIndex:C7}=_n,j0=class j0 extends or{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,storePointData:!1,centerPointRadius:0,calculateStats:!0,getTextLines:NTe,statsCalculator:pl}}){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=Ee(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()}};on(v,a);const y=Ct(a,this.getToolName());return this.editData={annotation:v,viewportIdsToRender:y,centerWorld:s,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),Mt(a),n.preventDefault(),Ne(y),v},this.isPointNearTool=(n,i,o,a)=>{const s=Ee(n),{viewport:c}=s,{data:l}=i,{points:f}=l.handles,u=f.map(_=>c.worldToCanvas(_)),[d,h,g,p]=u,v=Math.hypot(g[0]-p[0],g[1]-p[1]),y=Math.hypot(h[0]-d[0],h[1]-d[1]),m=Math.atan2(g[1]-p[1],g[0]-p[0]),w=[(g[0]+p[0])/2,(h[1]+d[1])/2],x={center:w,xRadius:(v-a)/2,yRadius:(y-a)/2,angle:m},C={center:w,xRadius:(v+a)/2,yRadius:(y+a)/2,angle:m},S=this._pointInEllipseCanvas(x,o);return!!(this._pointInEllipseCanvas(C,o)&&!S)},this.toolSelectedCallback=(n,i)=>{const o=n.detail,{element:a}=o;i.highlighted=!0;const s=Ct(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},Mt(a),this._activateModify(a);const c=Ee(a),{renderingEngine:l}=c;Ne(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:y}=c.handles,{viewport:m}=Ee(s),{worldToCanvas:w,canvasToWorld:x}=m;f=y.findIndex(S=>S===o);const C=y.map(w);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=x(u)}const v=Ct(s,this.getToolName());this.editData={annotation:i,viewportIdsToRender:v,handleIndex:f,canvasWidth:h,canvasHeight:g,centerWorld:d,originalHandleCanvas:p,movingTextBox:l},this._activateModify(s),Mt(s),Ne(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||(this.doneEditMemo(),a.highlighted=!1,f.handles.activeHandleIndex=null,this._deactivateModify(o),this._deactivateDraw(o),jt(o),this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&fn(a.annotationUID),Ne(s),c&&kn(a))},this._dragDrawCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{currentPoints:a}=i,s=a.canvas,c=Ee(o),{viewport:l}=c,{canvasToWorld:f}=l,{annotation:u,viewportIdsToRender:d,centerWorld:h,newAnnotation:g}=this.editData;this.createMemo(o,u,{newAnnotation:g});const p=l.worldToCanvas(h),{data:v}=u,y=Math.abs(s[0]-p[0]),m=Math.abs(s[1]-p[1]),w=[p[0],p[1]-m],x=[p[0],p[1]+m],C=[p[0]-y,p[1]],S=[p[0]+y,p[1]];v.handles.points=[f(w),f(x),f(C),f(S)],u.invalidated=!0,this.editData.hasMoved=!0,Ne(d),rn(u,o,Xt.HandlesUpdated)},this._dragModifyCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,handleIndex:c,movingTextBox:l,newAnnotation:f}=this.editData;this.createMemo(o,a,{newAnnotation:f});const{data:u}=a;if(l){const{deltaPoints:g}=i,p=g.world,{textBox:v}=u.handles,{worldPosition:y}=v;y[0]+=p[0],y[1]+=p[1],y[2]+=p[2],v.hasMoved=!0}else if(c===void 0){const{deltaPoints:g}=i,p=g.world;u.handles.points.forEach(y=>{y[0]+=p[0],y[1]+=p[1],y[2]+=p[2]}),a.invalidated=!0}else this._dragHandle(n),a.invalidated=!0;const d=Ee(o),{renderingEngine:h}=d;Ne(s),a.invalidated&&rn(a,o,Xt.HandlesUpdated)},this._dragHandle=n=>{const i=n.detail,{element:o}=i,{viewport:a}=Ee(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:y}=v.handles,{currentPoints:m}=i,w=m.canvas;if(d===0||d===1){const x=Math.abs(w[1]-p[1]),C=[p[0],p[1]-x],S=[p[0],p[1]+x];y[0]=s(C),y[1]=s(S);const T=w[0]-g[0],_=f/2+T,E=[p[0]-_,p[1]],b=[p[0]+_,p[1]];y[2]=s(E),y[3]=s(b)}else{const x=Math.abs(w[0]-p[0]),C=[p[0]-x,p[1]],S=[p[0]+x,p[1]];y[2]=s(C),y[3]=s(S);const T=w[1]-g[1],_=u/2+T,E=[p[0],p[1]-_],b=[p[0],p[1]+_];y[0]=s(E),y[1]=s(b)}},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),jt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,Ne(o),a&&kn(i),this.editData=null,i.annotationUID}},this._activateModify=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragModifyCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragModifyCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragModifyCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragModifyCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback)},this._activateDraw=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragDrawCallback),n.addEventListener(B.MOUSE_MOVE,this._dragDrawCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragDrawCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback)},this._deactivateDraw=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragDrawCallback),n.removeEventListener(B.MOUSE_MOVE,this._dragDrawCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragDrawCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=cn(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(te)),T=g5(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 sr)){const{referencedImageId:te}=h.metadata;for(const le in p.cachedStats)le.startsWith("imageId")&&f.getStackViewports().find(ye=>{const Ie=Ar(te),Le=ye.hasImageURI(Ie),be=Ar(ye.getCurrentImageId());return Le&&be!==Ie})&&delete p.cachedStats[le]}if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;let E;if(!Kr(g))continue;!ai(g)&&!this.editData&&m!==null&&(E=[S[m]]),E&&nr(i,g,"0",E,{color:w});const b=`${g}-ellipse`,D="0";if(c8(i,g,D,S,{color:w,lineDash:C,lineWidth:x},b),_>0&&Math.min(Math.abs(T[0][0]-T[1][0])/2,Math.abs(T[0][1]-T[1][1])/2)>3*_){const le=this._getCanvasEllipseCenter(S);aa(i,g,`${D}-center`,le,_,{color:w,lineDash:C,lineWidth:x})}o=!0;const O=this.getLinkedTextBoxStyle(u,h);if(!O.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 P;p.handles.textBox.hasMoved||(P=Ia(T),p.handles.textBox.worldPosition=a.canvasToWorld(P));const k=a.worldToCanvas(p.handles.textBox.worldPosition),j=ao(i,g,"1",L,k,S,{},O),{x:F,y:U,width:W,height:J}=j;p.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([F,U]),topRight:a.canvasToWorld([F+W,U]),bottomLeft:a.canvasToWorld([F,U+J]),bottomRight:a.canvasToWorld([F+W,U+J])}}return o},this._calculateCachedStats=(n,i,o)=>{var C,S,T,_;if(!this.configuration.calculateStats)return;const a=n.data,{element:s}=i,{points:c}=a.handles,l=c.map(E=>i.worldToCanvas(E)),{viewPlaneNormal:f,viewUp:u}=i.getCamera(),[d,h]=g5(l),g=i.canvasToWorld(d),p=i.canvasToWorld(h),{cachedStats:v}=a,y=Object.keys(v),m=g,w=p;for(let E=0;EWw(ye,Oe,{fast:!0}),returnPoints:this.configuration.storePointData});const Te=this.configuration.statsCalculator.getStatistics();v[b]={Modality:P.Modality,area:K,mean:(C=Te.mean)==null?void 0:C.value,max:(S=Te.max)==null?void 0:S.value,min:(T=Te.min)==null?void 0:T.value,stdDev:(_=Te.stdDev)==null?void 0:_.value,statsArray:Te.array,pointsInShape:oe,isEmptyArea:be,areaUnit:X,modalityUnit:ie}}const x=n.invalidated;return n.invalidated=!1,x&&rn(n,s,Xt.StatsUpdated),v},this._isInsideVolume=(n,i,o)=>fr(n,o)&&fr(i,o),this._throttledCalculateCachedStats=zo(this._calculateCachedStats,100,{trailing:!0})}_pointInEllipseCanvas(e,r){const{xRadius:n,yRadius:i,center:o,angle:a}=e,s=tJ(Jt(),r,o,-a);if(n<=0||i<=0)return!1;const c=[s[0]-o[0],s[1]-o[1]];return c[0]*c[0]/(n*n)+c[1]*c[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]}};j0.toolName="EllipticalROI",j0.hydrate=(e,r,n)=>{const i=Bn(e);if(!i)return;const{FrameOfReferenceUID:o,referencedImageId:a,viewPlaneNormal:s,instance:c,viewport:l}=j0.hydrateBase(j0,i,r,n),{toolInstance:f,...u}=n||{},d={annotationUID:(n==null?void 0:n.annotationUID)||Tn(),data:{handles:{points:r,activeHandleIndex:null},label:"",cachedStats:{}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:c.getToolName(),viewPlaneNormal:s,FrameOfReferenceUID:o,referencedImageId:a,...u}};on(d,l.element),Ne([l.id])};let zd=j0;function NTe(t,e){const r=t.cachedStats[e],{area:n,mean:i,stdDev:o,max:a,isEmptyArea:s,areaUnit:c,modalityUnit:l,min:f}=r,u=[];if(Mr(n)){const d=s?"Area: Oblique not supported":`Area: ${an(n)} ${c}`;u.push(d)}return Mr(i)&&u.push(`Mean: ${an(i)} ${l}`),Mr(a)&&u.push(`Max: ${an(a)} ${l}`),Mr(f)&&u.push(`Min: ${an(f)} ${l}`),Mr(o)&&u.push(`Std Dev: ${an(o)} ${l}`),u}const{transformWorldToIndex:S7}=_n,H0=class H0 extends or{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,storePointData:!1,centerPointRadius:0,calculateStats:!0,getTextLines:kTe,statsCalculator:pl}}){super(e,r),this.isHandleOutsideImage=!1,this.addNewAnnotation=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=Ee(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:{}}};on(v,a);const y=Ct(a,this.getToolName());return this.editData={annotation:v,viewportIdsToRender:y,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),Mt(a),n.preventDefault(),Ne(y),v},this.isPointNearTool=(n,i,o,a)=>{const s=Ee(n),{viewport:c}=s,{data:l}=i,{points:f}=l.handles,u=f.map(g=>c.worldToCanvas(g)),d=lf(u),h=lf([u[0],o]);return Math.abs(h-d){const o=n.detail,{element:a}=o;i.highlighted=!0;const s=Ct(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},Mt(a),this._activateModify(a);const c=Ee(a),{renderingEngine:l}=c;Ne(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:g}=c.handles;f=g.findIndex(p=>p===o)}const u=Ct(s,this.getToolName());this.editData={annotation:i,viewportIdsToRender:u,handleIndex:f,movingTextBox:l},this._activateModify(s),Mt(s);const d=Ee(s),{renderingEngine:h}=d;Ne(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)return;this.doneEditMemo(),a.highlighted=!1,f.handles.activeHandleIndex=null,this._deactivateModify(o),this._deactivateDraw(o),jt(o);const{renderingEngine:u}=Ee(o);this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&fn(a.annotationUID),Ne(s),c&&kn(a)},this._dragDrawCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{currentPoints:a}=i,s=a.canvas,c=Ee(o),{viewport:l}=c,{canvasToWorld:f}=l,{annotation:u,viewportIdsToRender:d,newAnnotation:h}=this.editData;this.createMemo(o,u,{newAnnotation:h});const{data:g}=u;g.handles.points=[g.handles.points[0],f(s)],u.invalidated=!0,this.editData.hasMoved=!0,Ne(d),rn(u,o,Xt.HandlesUpdated)},this._dragModifyCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,handleIndex:c,movingTextBox:l,newAnnotation:f}=this.editData;this.createMemo(o,a,{newAnnotation:f});const{data:u}=a;if(l){const{deltaPoints:g}=i,p=g.world,{textBox:v}=u.handles,{worldPosition:y}=v;y[0]+=p[0],y[1]+=p[1],y[2]+=p[2],v.hasMoved=!0}else if(c===void 0){const{deltaPoints:g}=i,p=g.world;u.handles.points.forEach(y=>{y[0]+=p[0],y[1]+=p[1],y[2]+=p[2]}),a.invalidated=!0}else this._dragHandle(n),a.invalidated=!0;const d=Ee(o),{renderingEngine:h}=d;Ne(s),a.invalidated&&rn(a,o,Xt.HandlesUpdated)},this._dragHandle=n=>{const i=n.detail,{element:o}=i,a=Ee(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],y=p[1]-h[0][1],m=p,w=[h[1][0]+v,h[1][1]+y];d[0]=s(m),d[1]=s(w)}else d[1]=s(p)},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),jt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,Ne(o),a&&kn(i),this.editData=null,i.annotationUID}},this._activateModify=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragModifyCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragModifyCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragModifyCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragModifyCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback)},this._activateDraw=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragDrawCallback),n.addEventListener(B.MOUSE_MOVE,this._dragDrawCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragDrawCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback)},this._deactivateDraw=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragDrawCallback),n.removeEventListener(B.MOUSE_MOVE,this._dragDrawCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragDrawCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=cn(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(ve)),T=S[0],_=lf(S),E=hh(S),{centerPointRadius:b}=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 sr)){const{referencedImageId:ve}=h.metadata;for(const pe in p.cachedStats)pe.startsWith("imageId")&&f.getStackViewports().find(Le=>{const be=Ar(ve),$=Le.hasImageURI(be),R=Ar(Le.getCurrentImageId());return $&&R!==be})&&delete p.cachedStats[pe]}if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;let D;if(!Kr(g))continue;!ai(g)&&!this.editData&&m!==null&&(D=[S[m]]),D&&nr(i,g,"0",D,{color:w});const O=`${g}-circle`,L="0";aa(i,g,L,T,_,{color:w,lineDash:C,lineWidth:x},O),b>0&&_>3*b&&aa(i,g,`${L}-center`,T,b,{color:w,lineDash:C,lineWidth:x}),o=!0;const P=this.getLinkedTextBoxStyle(u,h);if(!P.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 k=this.configuration.getTextLines(p,l);if(!k||k.length===0)continue;let G;p.handles.textBox.hasMoved||(G=Ia(E),p.handles.textBox.worldPosition=a.canvasToWorld(G));const j=a.worldToCanvas(p.handles.textBox.worldPosition),U=ao(i,g,"1",k,j,S,{},P),{x:W,y:J,width:te,height:le}=U;p.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([W,J]),topRight:a.canvasToWorld([W+te,J]),bottomLeft:a.canvasToWorld([W,J+le]),bottomRight:a.canvasToWorld([W+te,J+le])}}return o},this._calculateCachedStats=(n,i,o,a)=>{var S,T,_,E;if(!this.configuration.calculateStats)return;const s=n.data,{element:c}=i,l=n.invalidated,{points:f}=s.handles,u=f.map(b=>i.worldToCanvas(b)),{viewPlaneNormal:d,viewUp:h}=i.getCamera(),[g,p]=hh(u),v=i.canvasToWorld(g),y=i.canvasToWorld(p),{cachedStats:m}=s,w=Object.keys(m),x=v,C=y;for(let b=0;bWw($,he,{fast:!0}),boundsIJK:pe,imageData:P,returnPoints:this.configuration.storePointData}));const Se=this.configuration.statsCalculator.getStatistics();m[D]={Modality:k.Modality,area:Ve,mean:(S=Se.mean)==null?void 0:S.value,max:(T=Se.max)==null?void 0:T.value,min:(_=Se.min)==null?void 0:_.value,pointsInShape:fe,stdDev:(E=Se.stdDev)==null?void 0:E.value,statsArray:Se.array,isEmptyArea:K,areaUnit:Te,radius:R/2/ie,radiusUnit:oe,perimeter:2*Math.PI*(R/2)/ie,modalityUnit:ce}}else this.isHandleOutsideImage=!0,m[D]={Modality:k.Modality}}return n.invalidated=!1,l&&rn(n,c,Xt.StatsUpdated),m},this._isInsideVolume=(n,i,o)=>fr(n,o)&&fr(i,o),this._throttledCalculateCachedStats=zo(this._calculateCachedStats,100,{trailing:!0})}};H0.toolName="CircleROI",H0.hydrate=(e,r,n)=>{const i=Bn(e);if(!i)return;const{FrameOfReferenceUID:o,referencedImageId:a,viewPlaneNormal:s,instance:c,viewport:l}=H0.hydrateBase(H0,i,r,n),{toolInstance:f,...u}=n||{},d={annotationUID:(n==null?void 0:n.annotationUID)||Tn(),data:{handles:{points:r,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:c.getToolName(),viewPlaneNormal:s,FrameOfReferenceUID:o,referencedImageId:a,...u}};on(d,l.element),Ne([l.id])};let R5=H0;function kTe(t,e){const r=t.cachedStats[e],{radius:n,radiusUnit:i,area:o,mean:a,stdDev:s,max:c,min:l,isEmptyArea:f,areaUnit:u,modalityUnit:d}=r,h=[];if(Mr(n)){const g=f?"Radius: Oblique not supported":`Radius: ${an(n)} ${i}`;h.push(g)}if(Mr(o)){const g=f?"Area: Oblique not supported":`Area: ${an(o)} ${u}`;h.push(g)}return Mr(a)&&h.push(`Mean: ${an(a)} ${d}`),Mr(c)&&h.push(`Max: ${an(c)} ${d}`),Mr(l)&&h.push(`Min: ${an(l)} ${d}`),Mr(s)&&h.push(`Std Dev: ${an(s)} ${d}`),h}const rv=5,mb=class mb extends or{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=Ee(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]]}}};on(v,a);const y=Ct(a,this.getToolName());return this.editData={annotation:v,viewportIdsToRender:y,newAnnotation:!0},this._activateDraw(a),Mt(a),n.preventDefault(),Ne(y),v},this.isPointNearTool=(n,i,o,a)=>{const s=Ee(n),{viewport:c}=s,{data:l}=i,{points:f}=l.handles,u=c.worldToCanvas(f[0]),d=lf([u,o]);return Math.abs(d){const o=n.detail,{element:a}=o;i.highlighted=!0;const s=Ct(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s},Mt(a),this._activateModify(a);const c=Ee(a),{renderingEngine:l}=c;Ne(s),n.preventDefault()},this.handleSelectedCallback=(n,i)=>{const o=n.detail,{element:a}=o;i.highlighted=!0;const s=Ct(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s},this._activateModify(a),Mt(a);const c=Ee(a),{renderingEngine:l}=c;Ne(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)return;a.highlighted=!1,f.handles.activeHandleIndex=null,this._deactivateModify(o),this._deactivateDraw(o),jt(o);const{renderingEngine:u}=Ee(o);this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&fn(a.annotationUID),Ne(s),c&&kn(a)},this._dragDrawCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{currentPoints:a}=i,s=a.canvas,c=Ee(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,Ne(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(g=>{g[0]+=f[0],g[1]+=f[1],g[2]+=f[2]}),a.invalidated=!0;const d=Ee(o),{renderingEngine:h}=d;Ne(s)},this._dragHandle=n=>{const i=n.detail,{element:o}=i,a=Ee(o),{canvasToWorld:s,worldToCanvas:c}=a.viewport,{annotation:l}=this.editData,{data:f}=l,{points:u}=f.handles,d=u.map(w=>c(w)),{currentPoints:h}=i,g=h.canvas,p=g[0]-d[0][0],v=g[1]-d[0][1],y=g,m=[d[1][0]+p,d[1][1]+v];u[0]=s(y),u[1]=s(m)},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),jt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;i.highlighted=!1,s.handles.activeHandleIndex=null;const{renderingEngine:c}=Ee(n);return Ne(o),a&&kn(i),this.editData=null,i.annotationUID}},this._activateModify=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragModifyCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragModifyCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragModifyCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragModifyCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback)},this._activateDraw=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragDrawCallback),n.addEventListener(B.MOUSE_MOVE,this._dragDrawCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragDrawCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback)},this._deactivateDraw=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragDrawCallback),n.removeEventListener(B.MOUSE_MOVE,this._dragDrawCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragDrawCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=cn(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(D))[0];if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;if(!Kr(d))continue;let C=`${d}-crosshair-vertical`,S=[x[0],x[1]+rv],T=[x[0],x[1]-rv];mn(i,d,C,S,T,{color:v,lineDash:m,lineWidth:y}),C=`${d}-crosshair-horizontal`,S=[x[0]+rv,x[1]],T=[x[0]-rv,x[1]],mn(i,d,C,S,T,{color:v,lineDash:m,lineWidth:y});const _=this.configuration.diameters.map(D=>this.worldMeasureToCanvas(D,a));for(let D=0;D<_.length;D++){const O=`${d}-circle-${D}`,L=`${d}-circle-${D}`;aa(i,d,L,x,_[D]/2,{color:v,lineDash:m,lineWidth:y},O)}const E=D=>D*Math.PI/180,b=this.configuration.degrees.map(D=>E(D));for(let D=0;D{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=Ct(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},this._activateModify(a),Ne(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=Ct(s,this.getToolName());this.editData={annotation:i,viewportIdsToRender:u,handleIndex:f,movingTextBox:l},this._activateModify(s),Ne(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),jt(o);const u=Ee(o),d=this.getTargetImageData(this.getTargetId(u.viewport)),{imageData:h,dimensions:g}=d;this.isHandleOutsideImage=f.handles.points.map(v=>zr(h,v)).some(v=>!fr(v,g)),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&fn(a.annotationUID);const p=c?Xt.Completed:Xt.HandlesUpdated;this.fireChangeOnUpdate?(this.fireChangeOnUpdate.annotationUID=a.annotationUID,this.fireChangeOnUpdate.changeType=p):this.fireChangeOnUpdate={annotationUID:a.annotationUID,changeType:p,contourHoleProcessingEnabled:l},Ne(s),this.doneEditMemo(),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===T7){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,{renderingEngine:a}=Ee(o),s=Ct(o,this.getToolName());this.editData.lastCanvasPoint=n.detail.currentPoints.canvas,Ne(s),n.preventDefault()},this._mouseDownCallback=n=>{const i=n.type===B.MOUSE_DOUBLE_CLICK,{annotation:o,viewportIdsToRender:a}=this.editData,{data:s}=o;if(s.contour.closed)return;this.doneEditMemo();const c=n.detail,{currentPoints:l,element:f}=c,{canvas:u,world:d}=l;let h=s.handles.points.length>=2&&i,g=!0;if(s.handles.points.length&&this.createMemo(f,o,{newAnnotation:s.handles.points.length===1}),s.handles.points.length>=3){this.createMemo(f,o);const{instance:p}=s.spline,v=p.getClosestControlPointWithinDistance(u,_7);(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,Ne(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,newAnnotation:f}=this.editData,{data:u}=a;if(this.createMemo(o,a,{newAnnotation:f}),l){const{deltaPoints:g}=i,p=g.world,{textBox:v}=u.handles,{worldPosition:y}=v;y[0]+=p[0],y[1]+=p[1],y[2]+=p[2],v.hasMoved=!0}else if(c===void 0){const{deltaPoints:g}=i,p=g.world;this.moveAnnotation(a,p)}else{const{currentPoints:g}=i,p=g.world;u.handles.points[c]=[...p],a.invalidated=!0}this.editData.hasMoved=!0;const d=Ee(o),{renderingEngine:h}=d;Ne(s)},this.triggerAnnotationCompleted=(n,i)=>{const o=B.ANNOTATION_COMPLETED,a={annotation:n,changeType:Xt.Completed,contourHoleProcessingEnabled:i};nt(He,o,a)},this.triggerAnnotationModified=(n,i,o=Xt.StatsUpdated)=>{const{viewportId:a,renderingEngineId:s}=i,c=B.ANNOTATION_MODIFIED;nt(He,c,{annotation:n,viewportId:a,renderingEngineId:s,changeType:o})},this.triggerChangeEvent=(n,i,o=Xt.StatsUpdated,a)=>{o===Xt.Completed?this.triggerAnnotationCompleted(n,a):this.triggerAnnotationModified(n,i,o)},this._activateModify=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback)},this._activateDraw=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.KEY_DOWN,this._keyDownCallback),n.addEventListener(B.MOUSE_MOVE,this._mouseMoveCallback),n.addEventListener(B.MOUSE_DOWN,this._mouseDownCallback),n.addEventListener(B.MOUSE_DOUBLE_CLICK,this._mouseDownCallback),n.addEventListener(B.TOUCH_TAP,this._mouseDownCallback)},this._deactivateDraw=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.KEY_DOWN,this._keyDownCallback),n.removeEventListener(B.MOUSE_MOVE,this._mouseMoveCallback),n.removeEventListener(B.MOUSE_DOWN,this._mouseDownCallback),n.removeEventListener(B.MOUSE_DOUBLE_CLICK,this._mouseDownCallback),n.removeEventListener(B.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=Ia(f);s.handles.textBox.worldPosition=i.canvasToWorld(m)}const u=i.worldToCanvas(s.handles.textBox.worldPosition),h=ao(o,n.annotationUID??"","textBox",l,u,f,{},a),{x:g,y:p,width:v,height:y}=h;s.handles.textBox.worldBoundingBox={topLeft:i.canvasToWorld([g,p]),topRight:i.canvasToWorld([g+v,p]),bottomLeft:i.canvasToWorld([g,p+y]),bottomRight:i.canvasToWorld([g+v,p+y])}},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=Ee(f),{renderingEngine:d,viewport:h}=u,{canvasToWorld:g}=h,{instance:p}=o.spline,v=n.detail.currentPoints.canvas,y=p.getClosestPoint(v);if(y.distance>c)return;const{index:m,point:w}=p.addControlPointAtU(y.uValue);o.handles.points.splice(m,0,g(w)),i.invalidated=!0;const x=Ct(f,this.getToolName());Ne(x)},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=Ee(i);if(!a)return;const{viewport:s}=a,{cachedStats:c}=o,{polyline:l}=o.contour,f=Object.keys(c);for(let d=0;ds.worldToCanvas(D)),y=v[0],m=s.canvasToWorld(y),w=s.canvasToWorld([y[0]+1,y[1]]),x=s.canvasToWorld([y[0],y[1]+1]),C=Ki(m,w),S=Ki(m,x),{imageData:T}=g,{scale:_,areaUnit:E}=Da(g,()=>{const{maxX:D,maxY:O,minX:L,minY:P}=xf(v),k=s.canvasToWorld([L,P]),G=zr(T,k),j=s.canvasToWorld([D,O]),F=zr(T,j);return[G,F]});let b=L1(v)/_/_;b*=C*S,c[h]={Modality:p.Modality,area:b,areaUnit:E}}const u=n.invalidated;return n.invalidated=!1,u&&this.triggerAnnotationModified(n,a,Xt.StatsUpdated),c},this._throttledCalculateCachedStats=zo(this._calculateCachedStats,100,{trailing:!0}),this.annotationCompletedBinded=this.annotationCompleted.bind(this)}annotationCompleted(e){var n;const{sourceAnnotation:r}=e.detail;!this.splineToolNames.includes((n=r==null?void 0:r.metadata)==null?void 0:n.toolName)||!this.configuration.simplifiedSpline||!this.isContourSegmentationTool()||ZE(r)}initializeListeners(){He.addEventListener(B.ANNOTATION_COMPLETED,this.annotationCompletedBinded)}removeListeners(){He.removeEventListener(B.ANNOTATION_COMPLETED,this.annotationCompletedBinded)}onSetToolEnabled(){this.initializeListeners()}onSetToolActive(){this.initializeListeners()}onSetToolDisabled(){this.removeListeners()}addNewAnnotation(e){const r=e.detail,{currentPoints:n,element:i}=r,{canvas:o}=n,a=lg(e.detail.event)===this.configuration.contourHoleAdditionModifierKey,s=Ee(i),{renderingEngine:c}=s,l=this.createAnnotation(e);this.isDrawing=!0,this.addAnnotation(l,i);const f=Ct(i,this.getToolName());return this.editData={annotation:l,viewportIdsToRender:f,movingTextBox:!1,newAnnotation:!0,hasMoved:!1,lastCanvasPoint:o,contourHoleProcessingEnabled:a},this._activateDraw(i),e.preventDefault(),Ne(f),l}cancel(e){if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),jt(e);const{annotation:r,viewportIdsToRender:n,newAnnotation:i}=this.editData;i&&fn(r.annotationUID),super.cancelAnnotation(r);const o=Ee(e),{renderingEngine:a}=o;return Ne(n),this.editData=null,r.annotationUID}isContourSegmentationTool(){return!1}renderAnnotationInstance(e){var P,k,G;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=(P=this.editData)==null?void 0:P.newAnnotation,{lineWidth:y,lineDash:m,color:w,locked:x}=o,C=g.map(j=>s(j)),{drawPreviewEnabled:S}=this.configuration.spline,T=l.data.spline.type,_=this._getSplineConfig(T),E=l.data.spline.instance,b=D1(l);if(b.findIndex(j=>!j)!==-1)throw new Error(`Can't find annotation for child ${l.childAnnotationUIDs.join()}`);[l,...b].filter(j=>this._isSplineROIAnnotation(j)).forEach(j=>{const U=this._updateSplineInstance(c,j).getPolylinePoints();this.updateContourPolyline(j,{points:U,closed:u.contour.closed,targetWindingDirection:oa.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 L;if(!x&&!this.editData&&p!==null&&(L=[C[p]]),(L||v||d)&&nr(i,f,"0",C,{color:w,lineWidth:y,handleRadius:"3"}),S&&E.numControlPoints>1&&((k=this.editData)!=null&&k.lastCanvasPoint)&&!E.closed){const{lastCanvasPoint:j}=this.editData,F=E.getPreviewPolylinePoints(j,_7);xc(i,f,"previewSplineChange",F,{color:"#9EA0CA",lineDash:m,lineWidth:1})}if(_.showControlPointsConnectors){const j=[...C];E.closed&&j.push(C[0]),xc(i,f,"controlPointsConnectors",j,{color:"rgba(255, 255, 255, 0.5)",lineWidth:1})}return this._renderStats(l,a,i,o.textbox),((G=this.fireChangeOnUpdate)==null?void 0:G.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)}),Li(r,{data:{handles:{points:[[...n]]},spline:s(),cachedStats:{}},onInterpolationComplete:c})}_deleteControlPointByIndex(e,r,n){const i=Ee(e),{points:o}=r.data.handles;o.length===3?fn(r.annotationUID):o.splice(n,1);const{renderingEngine:a}=i,s=Ct(e,this.getToolName());r.invalidated=!0,Ne(s)}_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},VTe,n[e])}_updateSplineInstance(e,r){const n=Ee(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 qm&&!c.fixedScale&&h!==void 0&&c.scale!==h&&(c.scale=h,r.invalidated=!0),c}};Vu.toolName="SplineROI",Vu.SplineTypes=Bl,Vu.Actions=kp,Vu.hydrate=(e,r,n)=>{const i=Bn(e);if(!i)return;if(r.lengthi,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 qC=4294967295,BTe=2/(3*Math.PI);class A5{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 GTe=10**2,yb=class yb extends Gm{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{getTextLines:WTe,calculateStats:!0,preventHandleOutsideImage:!1,contourHoleAdditionModifierKey:Gi.Shift,snapHandleNearby:2,interpolation:{enabled:!1,nearestEdge:2,showInterpolationPolyline:!1},decimate:{enabled:!1,epsilon:.1},actions:{cancelInProgress:{method:"cancelInProgress",bindings:[{key:"Escape"}]}}}}){super(e,r),this.isHandleOutsideImage=!1,this.isPointNearTool=(n,i,o,a)=>{const s=Ee(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=Ct(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1};const c=Ee(a),{renderingEngine:l}=c;this._activateModify(a),Ne(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:g}=c.handles;f=g.findIndex(p=>p===o)}const u=Ct(s,this.getToolName());this.editData={annotation:i,viewportIdsToRender:u,handleIndex:f,movingTextBox:l},this._activateModify(s);const d=Ee(s),{renderingEngine:h}=d;Ne(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;this.doneEditMemo(),u.handles.activeHandleIndex=null,this._deactivateModify(a),this._deactivateDraw(a),jt(a);const d=Ee(a);if(this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage||i){fn(s.annotationUID),this.clearEditData(),Ne(c);return}Ne(c);const h=l?Xt.Completed:Xt.HandlesUpdated;this.triggerChangeEvent(s,d,h,f),this.clearEditData()},this.triggerChangeEvent=(n,i,o=Xt.StatsUpdated,a=!1)=>{o===Xt.Completed?Nw(n,a):rn(n,i.viewport.element,o)},this._mouseDownCallback=n=>{const i=n.type===B.MOUSE_DOUBLE_CLICK,{annotation:o,viewportIdsToRender:a,worldToSlice:s,sliceToWorld:c,newAnnotation:l}=this.editData;if(this.editData.closed)return;const f=n.detail,{element:u}=f,{currentPoints:d}=f,{canvas:h,world:g}=d;let p=g;const v=Ee(u),{viewport:y,renderingEngine:m}=v,w=this.editData.currentPath.getControlPoints();let x=w.length>=2&&i;if(this.doneEditMemo(),this.createMemo(u,o,{newAnnotation:l&&w.length===1}),w.length>=2){const T={index:-1,distSquared:1/0};for(let _=0,E=w.length;_{const{element:i,currentPoints:o}=n.detail,{world:a,canvas:s}=o,{renderingEngine:c}=Ee(i),l=Ct(i,this.getToolName());this.editData.lastCanvasPoint=s;const{width:f,height:u}=this.scissors,{worldToSlice:d}=this.editData,h=d(a);if(h[0]<0||h[1]<0||h[0]>=f||h[1]>=u)return;const g=this.scissors.findPathToPoint(h),p=new kl;p.addPoints(g),p.prependPath(this.editData.confirmedPath),this.editData.currentPath=p,Ne(l),n.preventDefault()},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,movingTextBox:c,handleIndex:l,newAnnotation:f}=this.editData;this.createMemo(o,a,{newAnnotation:f});const{data:u}=a;if(c){const{deltaPoints:g}=i,p=g.world,{textBox:v}=u.handles,{worldPosition:y}=v;y[0]+=p[0],y[1]+=p[1],y[2]+=p[2],v.hasMoved=!0}else if(l===void 0)console.warn("Drag annotation not implemented");else{const{currentPoints:g}=i,p=g.world;this.editHandle(p,o,a,l)}this.editData.hasMoved=!0;const d=Ee(o),{renderingEngine:h}=d;Ne(s)},this.cancel=n=>{if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),jt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData;return a&&fn(i.annotationUID),Ne(o),this.doneEditMemo(),this.scissors=null,i.annotationUID},this._activateModify=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback)},this._activateDraw=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_MOVE,this._mouseMoveCallback),n.addEventListener(B.MOUSE_DOWN,this._mouseDownCallback),n.addEventListener(B.MOUSE_DOUBLE_CLICK,this._mouseDownCallback),n.addEventListener(B.TOUCH_TAP,this._mouseDownCallback)},this._deactivateDraw=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_MOVE,this._mouseMoveCallback),n.removeEventListener(B.MOUSE_DOWN,this._mouseDownCallback),n.removeEventListener(B.MOUSE_DOUBLE_CLICK,this._mouseDownCallback),n.removeEventListener(B.TOUCH_TAP,this._mouseDownCallback)},this._calculateCachedStats=(n,i)=>{if(!this.configuration.calculateStats)return;const o=n.data;if(!o.contour.closed)return;const a=Ee(i),{viewport:s,renderingEngine:c}=a,{cachedStats:l}=o,{polyline:f}=o.contour,u=Object.keys(l);for(let h=0;hs.worldToCanvas(O)),m=y[0],w=s.canvasToWorld(m),x=s.canvasToWorld([m[0]+1,m[1]]),C=s.canvasToWorld([m[0],m[1]+1]),S=Ki(w,x),T=Ki(w,C),{imageData:_}=p,{scale:E,areaUnit:b}=Da(p,()=>{const{maxX:O,maxY:L,minX:P,minY:k}=xf(y),G=s.canvasToWorld([P,k]),j=zr(_,G),F=s.canvasToWorld([O,L]),U=zr(_,F);return[j,U]});let D=L1(y)/E/E;D*=S*T,l[g]={Modality:v.Modality,area:D,areaUnit:b}}const d=n.invalidated;return n.invalidated=!1,d&&this.triggerAnnotationModified(n,a,Xt.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=Ia(f);s.handles.textBox.worldPosition=i.canvasToWorld(m)}const u=i.worldToCanvas(s.handles.textBox.worldPosition),h=ao(o,n.annotationUID??"","textBox",l,u,f,{},a),{x:g,y:p,width:v,height:y}=h;s.handles.textBox.worldBoundingBox={topLeft:i.canvasToWorld([g,p]),topRight:i.canvasToWorld([g+v,p]),bottomLeft:i.canvasToWorld([g,p+y]),bottomRight:i.canvasToWorld([g+v,p+y])}},this.triggerAnnotationModified=(n,i,o=Xt.StatsUpdated)=>{const{viewportId:a,renderingEngineId:s}=i,c=B.ANNOTATION_MODIFIED;nt(He,c,{annotation:n,viewportId:a,renderingEngineId:s,changeType:o})},this._throttledCalculateCachedStats=zo(this._calculateCachedStats,100,{trailing:!0})}setupBaseEditData(e,r,n,i,o){var T,_;const a=Ee(r),{viewport:s}=a;this.isDrawing=!0;const c=s.getImageData(),{imageData:l}=c;let f,u,d,h,g;if(!(s instanceof sr))d=c.dimensions[0],h=c.dimensions[1],f=E=>{const b=zr(l,E);return[b[0],b[1]]},u=E=>Rh(l,[E[0],E[1],0]),g=c.scalarData;else if(s instanceof sr){const E=SE(s),{sliceToIndexMatrix:b,indexToSliceMatrix:D}=E;f=O=>{const L=zr(l,O),P=Wt([0,0,0],L,D);return[P[0],P[1]]},u=O=>{const L=Wt([0,0,0],[O[0],O[1],0],b);return Rh(l,L)},g=E.scalarData,d=E.width,h=E.height}else throw new Error("Viewport not supported");g=NV(g,d,h);const{voiRange:p}=s.getProperties(),v=f(e);this.scissors=A5.createInstanceFromRawPixelData(g,d,h,p),i&&(this.scissorsNext=A5.createInstanceFromRawPixelData(g,d,h,p),this.scissorsNext.startSearch(f(i))),this.scissors.startSearch(v);const y=!i,m=new kl,w=new kl,x=y?void 0:new kl;m.addPoint(v),m.addControlPoint(v);const C=Ct(r,this.getToolName()),S=s.worldToCanvas(e);this.editData={annotation:n,viewportIdsToRender:C,newAnnotation:y,hasMoved:!1,lastCanvasPoint:S,confirmedPath:m,currentPath:w,confirmedPathNext:x,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=lg(e.detail.event)===this.configuration.contourHoleAdditionModifierKey;return this.setupBaseEditData(o,i,a,void 0,s),this.addAnnotation(a,i),this._activateDraw(i),e.preventDefault(),Ne(this.editData.viewportIdsToRender),a}clearEditData(){this.editData=null,this.scissors=null,this.scissorsNext=null,this.isDrawing=!1}editHandle(e,r,n,i){var w;const{data:o}=n,{points:a}=o.handles,{length:s}=a,c=a[(i-1+s)%s],l=a[(i+1)%s];if(!((w=this.editData)!=null&&w.confirmedPathNext)){this.setupBaseEditData(c,r,n,l);const{polyline:x}=o.contour,C=new kl,S=new kl,{worldToSlice:T}=this.editData,_=oT(n,i-1),E=oT(n,i+1);if(E===-1||_===-1)throw new Error(`Can't find handle index ${E===-1&&l} ${_===-1&&c}`);i===0?S.addPoints(x.slice(E+1,_).map(T)):(C.addPoints(x.slice(0,_+1).map(T)),S.addPoints(x.slice(E,x.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),y=this.scissorsNext.findPathToPoint(p),m=new kl;m.prependPath(f.confirmedPath),i!==0&&m.addPoints(v),m.addPoints(y.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 Li(r,{data:{handles:{points:[[...n]]}}})}cancelInProgress(e,r,n){if(!this.editData){this.undo();return}this._endCallback(n,!0)}renderAnnotationInstance(e){var m,w,x,C;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:y}=o;if(d||g&&r.annotationUID===((x=(w=this.editData)==null?void 0:w.annotation)==null?void 0:x.annotationUID)){const S="0",T=h.points.map(l);nr(i,f,S,T,{color:y,lineDash:v,lineWidth:p})}return super.renderAnnotationInstance(e),!u.cachedStats[a]||((C=u.cachedStats[a])==null?void 0:C.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?oa.Clockwise:void 0;this.updateContourPolyline(r,{points:s,closed:o,targetWindingDirection:c},{canvasToWorld:n,worldToCanvas:i})}};yb.toolName="LivewireContour";let N5=yb;function WTe(t,e){const r=t.cachedStats[e],{area:n,areaUnit:i}=r,o=[];if(n){const a=`Area: ${an(n)} ${i}`;o.push(a)}return o}const wb=class wb extends N5{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 y=a.findMinNearby(v,s);Kt(v,y)||(u[p]=y,h=y,n[p]=f(y))})}const d=new kl;for(let h=0;h{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=Ee(a),{viewport:l,renderingEngine:f}=c;Mt(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(),y={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:""}};on(y,a);const m=Ct(a,this.getToolName());return this.editData={annotation:y,viewportIdsToRender:m,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),n.preventDefault(),Ne(m),y},this.isPointNearTool=(n,i,o,a)=>{const s=Ee(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 xi([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=Ct(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},this._activateModify(a),Mt(a);const c=Ee(a),{renderingEngine:l}=c;Ne(s),n.preventDefault()},this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,newAnnotation:c,hasMoved:l,movingTextBox:f}=this.editData,{data:u}=a;c&&!l||(u.handles.activeHandleIndex=null,this._deactivateModify(o),this._deactivateDraw(o),jt(o),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&fn(a.annotationUID),c?this.configuration.getTextCallback(d=>{if(!d){fn(a.annotationUID),Ne(s),this.editData=null,this.isDrawing=!1;return}a.data.text=d,rn(a,o,Xt.HandlesUpdated),kn(a),this.createMemo(o,a,{newAnnotation:!!this.memo}),HW(a,o,d),Ne(s)}):f||rn(a,o,Xt.HandlesUpdated),this.doneEditMemo(),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,newAnnotation:f}=this.editData;this.createMemo(o,a,{newAnnotation:f});const{data:u}=a;if(l){const{deltaPoints:d}=i,h=d.world,{textBox:g}=u.handles,{worldPosition:p}=g;p[0]+=h[0],p[1]+=h[1],p[2]+=h[2],g.hasMoved=!0}else if(c===void 0){const{deltaPoints:d}=i,h=d.world;u.handles.points.forEach(p=>{p[0]+=h[0],p[1]+=h[1],p[2]+=h[2]}),a.invalidated=!0}else{const{currentPoints:d}=i,h=d.world;u.handles.points[c]=[...h],a.invalidated=!0}this.editData.hasMoved=!0,Ne(s),a.invalidated&&rn(a,o,Xt.HandlesUpdated)},this.touchTapCallback=n=>{n.detail.taps==2&&this.doubleClickCallback(n)},this.doubleClickCallback=n=>{const i=n.detail,{element:o}=i;let a=cn(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),jt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,Ne(o),a&&kn(i),this.editData=null,i.annotationUID}},this._activateModify=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragCallback)},this._deactivateModify=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragCallback),n.removeEventListener(B.TOUCH_END,this._endCallback)},this._activateDraw=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragCallback),n.addEventListener(B.MOUSE_MOVE,this._dragCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_MOVE,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=cn(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(j));let T;if(!ai(d)&&!this.editData&&y!==null&&(T=[S[y]]),!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;if(!Kr(d))continue;T&&nr(i,d,"0",S,{color:m,lineWidth:w});const _="1";if(this.configuration.arrowFirst?y5(i,d,_,S[1],S[0],{color:m,width:w,lineDash:x,viaMarker:this.configuration.arrowHeadStyle!=="legacy",markerSize:C}):y5(i,d,_,S[0],S[1],{color:m,width:w,lineDash:x,viaMarker:this.configuration.arrowHeadStyle!=="legacy",markerSize:C}),o=!0,!p)continue;const E=this.getLinkedTextBoxStyle(l,u);if(!E.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 j=S[1];h.handles.textBox.worldPosition=a.canvasToWorld(j)}const b=a.worldToCanvas(h.handles.textBox.worldPosition),O=ao(i,d,"1",[p],b,S,{},E),{x:L,y:P,width:k,height:G}=O;h.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([L,P]),topRight:a.canvasToWorld([L+k,P]),bottomLeft:a.canvasToWorld([L,P+G]),bottomRight:a.canvasToWorld([L+k,P+G])}}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(d=>d===n);const l=Ct(o,this.getToolName());this.editData={annotation:r,viewportIdsToRender:l,handleIndex:c,movingTextBox:s},this._activateModify(o),Mt(o);const f=Ee(o),{renderingEngine:u}=f;Ne(l),e.preventDefault()}_doneChangingTextCallback(e,r,n){r.data.text=n,Ee(e);const i=Ct(e,this.getToolName());Ne(i),rn(r,e)}_isInsideVolume(e,r,n){return fr(e,n)&&fr(r,n)}};K0.toolName="ArrowAnnotate",K0.hydrate=(e,r,n,i)=>{const o=Bn(e);if(!o)return;const{FrameOfReferenceUID:a,referencedImageId:s,viewPlaneNormal:c,instance:l,viewport:f}=K0.hydrateBase(K0,o,r,i),{toolInstance:u,...d}=i||{},h={annotationUID:(i==null?void 0:i.annotationUID)||Tn(),data:{text:n||"",handles:{points:r}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:l.getToolName(),viewPlaneNormal:c,FrameOfReferenceUID:a,referencedImageId:s,...d}};on(h,f.element),Ne([f.id])};let Ef=K0;function zTe(t){return t(prompt("Enter your annotation:"))}function $Te(t,e,r){return r(prompt("Enter your annotation:"))}const q0=class q0 extends or{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,showAngleArc:!1,arcOffset:5,preventHandleOutsideImage:!1,getTextLines:jTe}}){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=Ee(a),{viewport:l,renderingEngine:f}=c;Mt(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:{}}};on(v,a);const y=Ct(a,this.getToolName());return this.editData={annotation:v,viewportIdsToRender:y,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),n.preventDefault(),Ne(y),v},this.isPointNearTool=(n,i,o,a)=>{const s=Ee(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(xi([p.start.x,p.start.y],[p.end.x,p.end.y],[o[0],o[1]])<=a)return!0;if(!d)return!1;const y=c.worldToCanvas(d),m={start:{x:g[0],y:g[1]},end:{x:y[0],y:y[1]}};return xi([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=Ct(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},this._activateModify(a),Mt(a);const c=Ee(a),{renderingEngine:l}=c;Ne(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)return;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),jt(o);const u=Ee(o),{renderingEngine:d}=u;this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&fn(a.annotationUID),Ne(s),this.doneEditMemo(),c&&kn(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,newAnnotation:f}=this.editData,{data:u}=a;if(this.createMemo(o,a,{newAnnotation:f}),l){const{deltaPoints:g}=i,p=g.world,{textBox:v}=u.handles,{worldPosition:y}=v;y[0]+=p[0],y[1]+=p[1],y[2]+=p[2],v.hasMoved=!0}else if(c===void 0){const{deltaPoints:g}=i,p=g.world;u.handles.points.forEach(y=>{y[0]+=p[0],y[1]+=p[1],y[2]+=p[2]}),a.invalidated=!0}else{const{currentPoints:g}=i,p=g.world;u.handles.points[c]=[...p],a.invalidated=!0}this.editData.hasMoved=!0;const d=Ee(o),{renderingEngine:h}=d;Ne(s),a.invalidated&&rn(a,o,Xt.HandlesUpdated)},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),jt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,Ne(o),a&&kn(i),this.editData=null,this.angleStartedNotYetCompleted=!1,i.annotationUID}},this._activateModify=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragCallback)},this._deactivateModify=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragCallback)},this._activateDraw=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragCallback),n.addEventListener(B.MOUSE_MOVE,this._dragCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_MOVE,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragCallback)},this.renderAnnotation=(n,i)=>{var d;let o=!1;const{viewport:a}=n,{element:s}=a;let c=cn(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(U));!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 _;if(!ai(g.annotationUID)&&!this.editData&&m!==null&&(_=[T[m]]),!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;if(!Kr(p))continue;_&&nr(i,p,"0",T,{color:w,lineDash:C,lineWidth:x});let E="1";if(mn(i,p,E,T[0],T[1],{color:w,width:x,lineDash:C}),o=!0,T.length!==3)return o;if(E="2",mn(i,p,E,T[1],T[2],{color:w,width:x,lineDash:C}),this.configuration.showAngleArc){const U=T[1],W=this.configuration.arcOffset,J=Math.min(xi([U[0],U[1]],[T[0][0],T[0][1]],[T[2][0],T[2][1]]),xi([U[0],U[1]],[T[2][0],T[2][1]],[T[0][0],T[0][1]]))/W,te=[];let le=Math.atan2(T[0][1]-U[1],T[0][0]-U[0]),ve=Math.atan2(T[2][1]-U[1],T[2][0]-U[0]);if(veMath.PI){const Ie=le;le=ve,ve=Ie+2*Math.PI}const ye=32;for(let Ie=0;Ie<=ye;Ie++){const Le=le+Ie/ye*(ve-le);te.push([U[0]+J*Math.cos(Le),U[1]+J*Math.sin(Le)])}nu(i,p,"3",te,{color:w,width:x,lineDash:S})}if(!((d=v.cachedStats[l])!=null&&d.angle))continue;const b=this.getLinkedTextBoxStyle(u,g);if(!b.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 U=T[1];v.handles.textBox.worldPosition=a.canvasToWorld(U)}const O=a.worldToCanvas(v.handles.textBox.worldPosition),P=ao(i,p,"1",D,O,T,{},b),{x:k,y:G,width:j,height:F}=P;v.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([k,G]),topRight:a.canvasToWorld([k+j,G]),bottomLeft:a.canvasToWorld([k,G+F]),bottomRight:a.canvasToWorld([k+j,G+F])}}return o},this._throttledCalculateCachedStats=zo(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(d=>d===n);const l=Ct(o,this.getToolName());this.editData={annotation:r,viewportIdsToRender:l,handleIndex:c,movingTextBox:s},this._activateModify(o),Mt(o);const f=Ee(o),{renderingEngine:u}=f;Ne(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 d=0;dzr(v,y)).some(y=>!fr(y,p)),l[h]={angle:isNaN(g)?"Incomplete Angle":g}}const u=e.invalidated;return e.invalidated=!1,u&&rn(e,o,Xt.StatsUpdated),l}};q0.toolName="Angle",q0.hydrate=(e,r,n)=>{const i=Bn(e);if(!i)return;const{FrameOfReferenceUID:o,referencedImageId:a,viewPlaneNormal:s,instance:c,viewport:l}=q0.hydrateBase(q0,i,r,n),{toolInstance:f,...u}=n||{},d={annotationUID:(n==null?void 0:n.annotationUID)||Tn(),data:{handles:{points:r}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:c.getToolName(),viewPlaneNormal:s,FrameOfReferenceUID:o,referencedImageId:a,...u}};on(d,l.element),Ne([l.id])};let TT=q0;function jTe(t,e){const r=t.cachedStats[e],{angle:n}=r;return n===void 0?void 0:isNaN(n)?[`${n}`]:[`${an(n)} °`]}const HTe=(...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},Nl=HTe,xb=class xb extends or{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:KTe,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=Ee(a),{viewport:l,renderingEngine:f}=c;Mt(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:{}}};on(v,a);const y=Ct(a,this.getToolName());return this.editData={annotation:v,viewportIdsToRender:y,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),n.preventDefault(),Ne(y),v},this.isPointNearTool=(n,i,o,a)=>{const s=Ee(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=Ct(l,this.getToolName()),u=Ee(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),Mt(l),Ne(f),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)return;if(this.doneEditMemo(),this.angleStartedNotYetCompleted&&f.handles.points.length<4){jt(o),this.editData.handleIndex=f.handles.points.length;return}this.angleStartedNotYetCompleted=!1,f.handles.activeHandleIndex=null,this._deactivateModify(o),this._deactivateDraw(o),jt(o);const u=Ee(o),{renderingEngine:d}=u;this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&fn(a.annotationUID),Ne(s),c&&kn(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,Mt(s),f.handles.points[2]=f.handles.points[3]=l,this.editData.handleIndex=f.handles.points.length-1},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,handleIndex:c,movingTextBox:l,isNearFirstLine:f,isNearSecondLine:u,newAnnotation:d}=this.editData;this.createMemo(o,a,{newAnnotation:d});const{data:h}=a;if(l){const{deltaPoints:v}=i,y=v.world,{textBox:m}=h.handles,{worldPosition:w}=m;w[0]+=y[0],w[1]+=y[1],w[2]+=y[2],m.hasMoved=!0}else if(c===void 0&&(f||u)){const{deltaPoints:v}=i,y=v.world,m=h.handles.points;f?[m[0],m[1]].forEach(x=>{x[0]+=y[0],x[1]+=y[1],x[2]+=y[2]}):u&&[m[2],m[3]].forEach(x=>{x[0]+=y[0],x[1]+=y[1],x[2]+=y[2]}),a.invalidated=!0}else{const{currentPoints:v}=i,y=v.world;h.handles.points[c]=[...y],a.invalidated=!0}this.editData.hasMoved=!0;const g=Ee(o),{renderingEngine:p}=g;Ne(s),a.invalidated&&rn(a,o,Xt.HandlesUpdated)},this.cancel=n=>{if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),jt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;s.handles.points.length<4&&fn(i.annotationUID),i.highlighted=!1,s.handles.activeHandleIndex=null;const c=Ee(n),{renderingEngine:l}=c;return Ne(o),a&&kn(i),this.editData=null,this.angleStartedNotYetCompleted=!1,i.annotationUID},this._activateModify=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragCallback),n.addEventListener(B.TOUCH_START,this._mouseDownCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragCallback),n.removeEventListener(B.TOUCH_START,this._mouseDownCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback)},this._activateDraw=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragCallback),n.addEventListener(B.MOUSE_MOVE,this._dragCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.MOUSE_DOWN,this._mouseDownCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragCallback),n.addEventListener(B.TOUCH_START,this._mouseDownCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback)},this._deactivateDraw=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_MOVE,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.MOUSE_DOWN,this._mouseDownCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragCallback),n.removeEventListener(B.TOUCH_START,this._mouseDownCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{var d;let o=!1;const{viewport:a}=n,{element:s}=a;let c=cn(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(Le));!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(!ai(p)&&!this.editData&&m!==null&&(T=[S[m]]),!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;if(!Kr(p))continue;T&&nr(i,p,"0",S,{color:w,lineDash:C,lineWidth:x});const _=[S[0],S[1]],E=[S[2],S[3]];let b="line1";if(mn(i,p,b,_[0],_[1],{color:w,width:x,lineDash:C}),o=!0,S.length<4)return o;b="line2",mn(i,p,b,E[0],E[1],{color:w,width:x,lineDash:C}),b="linkLine";const D=Nl(_[0],_[1]),O=Nl(E[0],E[1]);mn(i,p,b,D,O,{color:w,lineWidth:"1",lineDash:"1,4"});const{arc1Start:L,arc1End:P,arc2End:k,arc2Start:G}=v.cachedStats[l].points.canvas,{arc1Angle:j,arc2Angle:F}=v.cachedStats[l];if(this.configuration.showArcLines&&(b="arc1",mn(i,p,b,L,P,{color:w,lineWidth:"1"}),b="arc2",mn(i,p,b,G,k,{color:w,lineWidth:"1"})),!((d=v.cachedStats[l])!=null&&d.angle))continue;const U=this.getLinkedTextBoxStyle(u,g);if(!U.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 W=this.configuration.getTextLines(v,l);if(!v.handles.textBox.hasMoved){const Le=Ia(S);v.handles.textBox.worldPosition=a.canvasToWorld(Le)}const J=a.worldToCanvas(v.handles.textBox.worldPosition),le=ao(i,p,"cobbAngleText",W,J,S,{},U),{x:ve,y:pe,width:ye,height:Ie}=le;if(v.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([ve,pe]),topRight:a.canvasToWorld([ve+ye,pe]),bottomLeft:a.canvasToWorld([ve,pe+Ie]),bottomRight:a.canvasToWorld([ve+ye,pe+Ie])},this.configuration.showArcLines){const Le="arcAngle1",be=[`${j.toFixed(2)} °`],$=Nl(L,P);Cf(i,p,Le,be,$,{...U,padding:3});const R="arcAngle2",X=[`${F.toFixed(2)} °`],K=Nl(G,k);Cf(i,p,R,X,K,{...U,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]}},y=xi([p.start.x,p.start.y],[p.end.x,p.end.y],[o[0],o[1]]),m=xi([v.start.x,v.start.y],[v.end.x,v.end.y],[o[0],o[1]]);let w=!1,x=!1;return y<=a?w=!0:m<=a&&(x=!0),{distanceToPoint:y,distanceToPoint2:m,isNearFirstLine:w,isNearSecondLine:x}},this.getArcsStartEndPoints=({firstLine:n,secondLine:i,mid1:o,mid2:a})=>{const s=[o,a],c=ph(n,s),l=ph(i,s),f=c>90?1:0,u=l>90?0:1,d=Nl(s[0],s[1]),h=Math.sqrt((s[1][0]-s[0][0])**2+(s[1][1]-s[0][1])**2),g=.1,p=Nl(n[0],n[1]),v=Nl(i[0],i[1]),y=[n[f][0]-p[0],n[f][1]-p[1]],m=Math.sqrt(y[0]**2+y[1]**2),w=[y[0]/m,y[1]/m],x=[p[0]+w[0]*h*g,p[1]+w[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]],b=Math.sqrt(E[0]**2+E[1]**2),D=[E[0]/b,E[1]/b],O=[v[0]+D[0]*h*g,v[1]+D[1]*h*g],L=[d[0]-a[0],d[1]-a[1]],P=Math.sqrt(L[0]**2+L[1]**2),k=[L[0]/P,L[1]/P],G=[a[0]+k[0]*h*g,a[1]+k[1]*h*g];return{arc1Start:x,arc1End:_,arc2Start:O,arc2End:G,arc1Angle:c>90?180-c:c,arc2Angle:l>90?180-l:l}},this._throttledCalculateCachedStats=zo(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=Ct(a,this.getToolName());this.editData={annotation:r,viewportIdsToRender:f,handleIndex:l,movingTextBox:c},this._activateModify(a),Mt(a),Ne(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 _=0;_<2;_+=1)for(let E=2;E<4;E+=1){const b=Ki(i.handles.points[_],i.handles.points[E]);bc.worldToCanvas(_)),u=[f[0],f[1]],d=[f[2],f[3]],h=Nl(u[0],u[1]),g=Nl(d[0],d[1]),{arc1Start:p,arc1End:v,arc2End:y,arc2Start:m,arc1Angle:w,arc2Angle:x}=this.getArcsStartEndPoints({firstLine:u,secondLine:d,mid1:h,mid2:g}),{cachedStats:C}=i,S=Object.keys(C);for(let _=0;_{if(this.startedDrawing)return;this.startedDrawing=!0;const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=Ee(a),{viewport:l,renderingEngine:f}=c;if(!(l instanceof ar))throw new Error("UltrasoundDirectionalTool can only be used on a StackViewport");Mt(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:{}}};on(v,a);const y=Ct(a,this.getToolName());return this.editData={annotation:v,viewportIdsToRender:y,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),n.preventDefault(),Ne(y),v},this.isPointNearTool=(n,i,o,a)=>{const s=Ee(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 xi([g.start.x,g.start.y],[g.end.x,g.end.y],[o[0],o[1]])<=a},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;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),jt(o);const u=Ee(o),{renderingEngine:d}=u;this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&fn(a.annotationUID),Ne(s),c&&kn(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:h}=i,g=h.world,{textBox:p}=f.handles,{worldPosition:v}=p;v[0]+=g[0],v[1]+=g[1],v[2]+=g[2],p.hasMoved=!0}else if(c===void 0){const{deltaPoints:h}=i,g=h.world;f.handles.points.forEach(v=>{v[0]+=g[0],v[1]+=g[1],v[2]+=g[2]}),a.invalidated=!0}else{const{currentPoints:h}=i,g=h.world;f.handles.points[c]=[...g],a.invalidated=!0}this.editData.hasMoved=!0;const u=Ee(o),{renderingEngine:d}=u;Ne(s)},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),jt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,Ne(o),a&&kn(i),this.editData=null,this.startedDrawing=!1,i.annotationUID}},this._activateModify=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragCallback)},this._deactivateModify=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragCallback)},this._activateDraw=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragCallback),n.addEventListener(B.MOUSE_MOVE,this._dragCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_MOVE,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=cn(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));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 w="0";if(v5(i,g,w,m[0],{color:y},0),o=!0,m.length!==2)return o;if(w="1",v5(i,g,w,m[1],{color:y},1),p.cachedStats[l].isUnitless){const P=`${g}-line-1`;mn(i,g,"1",m[0],m[1],{color:y,width:1,shadow:this.configuration.shadow},P)}else{const P=m[0],k=m[1],G=k[1]-P[1],j=k[0]-P[0],F=p.cachedStats[l].isHorizontal;let U=[0,0];F?U=[P[0]+j,P[1]]:U=[P[0],P[1]+G];let W=`${g}-line-1`,J="1";mn(i,g,J,m[0],U,{color:y,width:1,shadow:this.configuration.shadow},W),W=`${g}-line-2`,J="2",mn(i,g,J,m[1],U,{color:y,width:1,lineDash:[1,1],shadow:this.configuration.shadow},W)}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 P=m[1];p.handles.textBox.worldPosition=a.canvasToWorld(P)}const T=a.worldToCanvas(p.handles.textBox.worldPosition),E=ao(i,g,"1",S,T,m,{},C),{x:b,y:D,width:O,height:L}=E;p.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([b,D]),topRight:a.canvasToWorld([b+O,D]),bottomLeft:a.canvasToWorld([b,D+L]),bottomRight:a.canvasToWorld([b+O,D+L])}}return o},this._throttledCalculateCachedStats=zo(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=Ct(o,this.getToolName());let c;n.worldPosition||(c=a.handles.points.findIndex(u=>u===n)),this.editData={handleIndex:c,annotation:r,viewportIdsToRender:s},this._activateModify(o),Mt(o);const l=Ee(o),{renderingEngine:f}=l;Ne(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 l=0;lMath.abs(O),C=[y[0],w[0]],S=[y[1],w[1]],T=[m[0],m[1]]}a[f]={xValues:C,yValues:S,isHorizontal:_,units:T,isUnitless:E}}const c=e.invalidated;return e.invalidated=!1,c&&rn(e,o,Xt.StatsUpdated),a}};Cb.toolName="UltrasoundDirectionalTool";let ET=Cb;function qTe(t,e,r){const n=t.cachedStats[e],{xValues:i,yValues:o,units:a,isUnitless:s,isHorizontal:c}=n;if(s)return[`${an(i[0])} px`];if(r.displayBothAxesDistances){const l=Math.abs(i[1]-i[0]),f=Math.abs(o[1]-o[0]);return[`${an(l)} ${a[0]}`,`${an(f)} ${a[1]}`]}if(c){const l=Math.abs(i[1]-i[0]);return[`${an(l)} ${a[0]}`]}else{const l=Math.abs(o[1]-o[0]);return[`${an(l)} ${a[1]}`]}}function XTe(t){return(t%360+360)%360}function bT(t,e){const r=e[0]-t[0],n=e[1]-t[1],i=Math.atan2(n,r)*(180/Math.PI);return XTe(i)}function k5(t,e){const r=bT(t,e[0]),n=bT(t,e[1]);return rr[0]-n[0]);const e=[t[0].slice()];for(let r=1;r[Math.max(f,r),Math.min(u,n)]).filter(([f,u])=>u>f);if(i.length===0)return[[r,n]];i.sort((f,u)=>f[0]-u[0]);const o=[];let[a,s]=i[0];for(let f=1;fl&&c.push([l,f]),l=Math.max(l,u);return lk5(t,f)),i=DT(n),o=i.reduce((f,[u,d])=>f+(d-u),0);if(o===0)return 0;const a=[];for(const f of r){const u=k5(t,f),d=dz(u,i);a.push(...d)}const l=DT(a).reduce((f,[u,d])=>f+(d-u),0)/o*100;return Math.min(100,Math.max(0,l))}const{transformIndexToWorld:D7}=_n,vr=class vr extends or{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,getTextLines:JTe,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,r),this.pleuraAnnotations=[],this.bLineAnnotations=[],this.addNewAnnotation=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=Ee(a),{viewport:l}=c;Mt(a),this.isDrawing=!0;const{viewPlaneNormal:f,viewUp:u,position:d}=l.getCamera(),h=this.getReferencedImageId(l,s,f,u),g={highlighted:!0,invalidated:!0,metadata:{...l.getViewReference({points:[s]}),toolName:this.getToolName(),referencedImageId:h,viewUp:u,cameraPosition:d},data:{handles:{points:[[...s],[...s]],activeHandleIndex:null},annotationType:this.getActiveAnnotationType(),label:""}};on(g,a);const p=Ct(a,this.getToolName());return this.editData={annotation:g,viewportIdsToRender:p,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),n.preventDefault(),Ne(p),g},this.isPointNearTool=(n,i,o,a)=>{const s=Ee(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 xi([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=Ct(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},this._activateModify(a),Mt(a),Ne(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),jt(o),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&fn(a.annotationUID),Ne(s),this.doneEditMemo(),c&&kn(a),this.editData=null,this.isDrawing=!1)},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{viewport:a}=Ee(o)||{};if(!a)return;const{annotation:s,viewportIdsToRender:c,handleIndex:l,movingTextBox:f,newAnnotation:u}=this.editData,{data:d}=s;if(this.createMemo(o,s,{newAnnotation:u}),f){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(l===void 0){const{deltaPoints:h}=i,g=h.world,p=d.handles.points;p.every(y=>{const m=[y[0]+g[0],y[1]+g[1],y[2]+g[2]];return this.isInsideFanShape(a,m)})&&(p.forEach(y=>{y[0]+=g[0],y[1]+=g[1],y[2]+=g[2]}),s.invalidated=!0)}else{const{currentPoints:h}=i,g=h.world;this.isInsideFanShape(a,g)&&(d.handles.points[l]=[...g],s.invalidated=!0)}this.editData.hasMoved=!0,Ne(c),s.invalidated&&rn(s,o,Xt.HandlesUpdated)},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),jt(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,Ne(o),a&&kn(i),this.editData=null,i.annotationUID}},this._activateModify=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback)},this._activateDraw=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragCallback),n.addEventListener(B.MOUSE_MOVE,this._dragCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback)},this._deactivateDraw=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_MOVE,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;if(!this.getFanShapeGeometryParameters(a))return;const{imageData:c}=a.getImageData()||{};if(!c)return o;this.configuration.drawDepthGuide&&this.drawDepthGuide(i,a);let l=cn(this.getToolName(),s);if(!(l!=null&&l.length)||(l=this.filterInteractableAnnotationsForElement(s,l),!(l!=null&&l.length)))return o;this.getTargetId(a),a.getRenderingEngine();const f={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id},u=a.worldToCanvas(D7(c,this.configuration.center)),d=this.getIndexToCanvasRatio(a),h=this.configuration.innerRadius*d,g=this.configuration.outerRadius*d,p=a.getCurrentImageId(),v=l.filter(T=>T.data.annotationType===vr.USPleuraBLineAnnotationType.PLEURA&&T.metadata.referencedImageId===p).map(T=>{const _=T.data.handles.points.map(b=>a.worldToCanvas(b));return k5(u,_)}),y=DT(v),m=[],w=[],x=T=>{const{annotationUID:_,data:E}=T,{points:b,activeHandleIndex:D}=E.handles;f.annotationUID=_;const{color:O,lineWidth:L,lineDash:P,shadow:k}=this.getAnnotationStyle({annotation:T,styleSpecifier:f}),G=b.map(W=>a.worldToCanvas(W));if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;let j;if(!Kr(_))return;!ai(_)&&!this.editData&&D!==null&&(j=[G[D]]),j&&nr(i,_,"0",G,{color:this.getColorForLineType(T),fill:this.getColorForLineType(T),lineDash:P,lineWidth:L});const F=`${_}-line`;if(mn(i,_,"1",G[0],G[1],{color:this.getColorForLineType(T),width:L,lineDash:P,shadow:k},F),this.configuration.showFanAnnotations){const W=k5(u,G);let J=0;T.data.annotationType===vr.USPleuraBLineAnnotationType.BLINE?b7(w,W).forEach(le=>{dz(le,y).forEach(pe=>{J++;const ye=J,Ie=`${_}-fan-${ye}`,Le=`2-${ye}`;QS(i,_,Le,u,h,g,pe[0],pe[1],{color:"transparent",fill:this.getColorForLineType(T),fillOpacity:this.configuration.fanOpacity,width:L,lineDash:P,shadow:k},Ie,10),w.push(pe)})}):T.data.annotationType===vr.USPleuraBLineAnnotationType.PLEURA&&b7(m,W).forEach((le,ve)=>{J++;const pe=J,ye=`${_}-fan-${pe}`,Ie=`2-${pe}`;QS(i,_,Ie,u,h,g,le[0],le[1],{color:"transparent",fill:this.getColorForLineType(T),fillOpacity:this.configuration.fanOpacity,width:L,lineDash:P,shadow:k},ye,5),m.push(le)})}};return l.filter(T=>T.data.annotationType===vr.USPleuraBLineAnnotationType.PLEURA&&T.metadata.referencedImageId===p).forEach(T=>{if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;x(T)}),l.filter(T=>T.data.annotationType===vr.USPleuraBLineAnnotationType.BLINE&&T.metadata.referencedImageId===p).forEach(T=>{if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;x(T)}),o=!0,this.configuration.updatePercentageCallback&&a&&this.configuration.updatePercentageCallback(this.calculateBLinePleuraPercentage(a)),o},this.activeAnnotationType=vr.USPleuraBLineAnnotationType.BLINE}static filterAnnotations(e,r=()=>!0){const n=cn(vr.toolName,e);return n!=null&&n.length?n.filter(o=>{const a=o.metadata.referencedImageId;return r(a)}):[]}static countAnnotations(e,r=()=>!0){const n=cn(vr.toolName,e),{viewport:i}=Ee(e),o=i.getImageIds(),a=c=>{const l=o.findIndex(f=>f===c);return l===-1?0:l};if(!(n!=null&&n.length))return;const s=new Map;return n.forEach(c=>{const l=c.metadata.referencedImageId;if(!r(l))return;const{annotationType:f}=c.data;let u;s.has(l)?u=s.get(l):u={frame:a(l),bLine:0,pleura:0},f===vr.USPleuraBLineAnnotationType.PLEURA?u.pleura++:f===vr.USPleuraBLineAnnotationType.BLINE&&u.bLine++,s.set(l,u)}),s}static deleteAnnotations(e,r=()=>!1){const n=cn(vr.toolName,e);n!=null&&n.length&&n.forEach(i=>{r(i.metadata.referencedImageId)&&fn(i.annotationUID)})}setActiveAnnotationType(e){this.activeAnnotationType=e}getActiveAnnotationType(){return this.activeAnnotationType}deleteLastAnnotationType(e,r){let n;const i=cn(vr.toolName,e);if(r===vr.USPleuraBLineAnnotationType.PLEURA?n=i.filter(o=>o.data.annotationType===vr.USPleuraBLineAnnotationType.PLEURA):r===vr.USPleuraBLineAnnotationType.BLINE&&(n=i.filter(o=>o.data.annotationType===vr.USPleuraBLineAnnotationType.BLINE)),(n==null?void 0:n.length)>0){const o=n.pop();fn(o.annotationUID)}}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=Ct(o,this.getToolName());this.editData={annotation:r,viewportIdsToRender:l,handleIndex:c,movingTextBox:s},this._activateModify(o),Mt(o),Ne(l),e.preventDefault()}isInsideFanShape(e,r){if(!this.getFanShapeGeometryParameters(e))return!1;const{imageData:n}=e.getImageData()||{};if(n){const i=e.worldToCanvas(n.indexToWorld(this.configuration.center)),o=e.worldToCanvas(r),a=bT(i,o);return a>=this.configuration.startAngle&&a<=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 r=e.getCurrentImageId(),{fanGeometry:n}=j8(r)||{};n&&this.updateFanGeometryConfiguration(n)}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 r=e.getCurrentImageId(),n=lt("ultrasoundFanShapeGeometry",r);this.updateFanGeometryConfiguration(n)}return this.isFanShapeGeometryParametersValid()||this.deriveFanGeometryFromViewport(e),this.isFanShapeGeometryParametersValid()}calculateBLinePleuraPercentage(e){if(!this.getFanShapeGeometryParameters(e))return;const{imageData:r}=e.getImageData()||{};if(!r)return;const{element:n}=e,i=e.worldToCanvas(r.indexToWorld(this.configuration.center)),o=e.getCurrentImageId(),a=cn(this.getToolName(),n)||[],s=a.filter(l=>l.data.annotationType===vr.USPleuraBLineAnnotationType.PLEURA&&l.metadata.referencedImageId===o).map(l=>l.data.handles.points.map(u=>e.worldToCanvas(u))),c=a.filter(l=>l.data.annotationType===vr.USPleuraBLineAnnotationType.BLINE&&l.metadata.referencedImageId===o).map(l=>l.data.handles.points.map(u=>e.worldToCanvas(u)));return YTe(i,s,c)}getColorForLineType(e){const{annotationType:r}=e.data,{bLineColor:n,pleuraColor:i}=this.configuration;return r===vr.USPleuraBLineAnnotationType.BLINE?n:r===vr.USPleuraBLineAnnotationType.PLEURA?i:n}getIndexToCanvasRatio(e){const{imageData:r}=e.getImageData()||{},n=e.worldToCanvas(r.indexToWorld([1,0,0])),i=e.worldToCanvas(r.indexToWorld([2,0,0])),o=[i[0]-n[0],i[1]-n[1]];return Math.sqrt(o[0]*o[0]+o[1]*o[1])}drawDepthGuide(e,r){if(!this.getFanShapeGeometryParameters(r))return;const{imageData:n}=r.getImageData()||{};if(!n)return;const i=g=>g*180/Math.PI,o=g=>g*Math.PI/180,a=g=>r.worldToCanvas(D7(n,g)),s=this.configuration.innerRadius+this.configuration.depth_ratio*(this.configuration.outerRadius-this.configuration.innerRadius),c=this.configuration.startAngle,f=this.configuration.endAngle-c,u=o(f)*s;let d=Math.round(u/(this.configuration.depthGuideDashLength+this.configuration.depthGuideDashGap));d<=0&&(d=Math.max(15,Math.round(f/5)));const h=f/d;for(let g=0;g{const i=Bn(e);if(!i)return;const{FrameOfReferenceUID:o,referencedImageId:a,viewPlaneNormal:s,instance:c,viewport:l}=vr.hydrateBase(vr,i,r,n),{toolInstance:f,...u}=n||{},d={annotationUID:(n==null?void 0:n.annotationUID)||Tn(),data:{handles:{points:r}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:c.getToolName(),viewPlaneNormal:s,FrameOfReferenceUID:o,referencedImageId:a,...u}};on(d,l.element),Ne([l.id])};let IT=vr;function JTe(t,e){return[""]}const Hp=class Hp extends or{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{getTextCallback:ZTe,changeTextCallback:QTe,canvasPosition:[10,10],canvasSize:10,handleRadius:"6",seriesLevel:!1,isPoint:!1}}){super(e,r),this.addNewAnnotation=n=>{const i=n.detail,{element:o,currentPoints:a}=i,s=Ee(o),{viewport:c}=s,l=a.world,f=this.constructor.createAnnotationForViewport(c,{data:{handles:{points:[[...l]]},seriesLevel:this.configuration.seriesLevel,isPoint:this.configuration.isPoint}});on(f,o);const u=Ct(o,this.getToolName());return n.preventDefault(),Ne(u),this.configuration.getTextCallback(d=>{if(!d){fn(f.annotationUID),Ne(u),this.isDrawing=!1;return}f.data.text=d,kn(f),Ne(u)}),this.createMemo(o,f,{newAnnotation:!0}),f},this.isPointNearTool=(n,i,o,a)=>{const s=Ee(n),{viewport:c}=s,{data:l}=i;if(!(l!=null&&l.isPoint))return!1;const{canvasPosition:f,canvasSize:u}=this.configuration;return f!=null&&f.length?Math.abs(o[0]-f[0]+u/2)<=u/2&&Math.abs(o[1]-f[1]+u/2)<=u/2:!1},this.toolSelectedCallback=(n,i)=>{i.highlighted=!0,n.preventDefault()},this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,newAnnotation:c}=this.editData,{viewportId:l,renderingEngine:f}=Ee(o);this.eventDispatchDetail={viewportId:l,renderingEngineId:f.id},this._deactivateModify(o),jt(o),c&&this.createMemo(o,a,{newAnnotation:c}),this.editData=null,this.isDrawing=!1,this.doneEditMemo(),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&fn(a.annotationUID),Ne(s),c&&kn(a)},this.doubleClickCallback=n=>{const i=n.detail,{element:o}=i;let a=cn(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.createMemo(o,c),this.configuration.changeTextCallback(s,n.detail,this._doneChangingTextCallback.bind(this,o,c)),this.isDrawing=!1,this.doneEditMemo(),n.stopImmediatePropagation(),n.preventDefault()},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,{annotation:c,viewportIdsToRender:l,newAnnotation:f}=this.editData,{data:u}=c;this.createMemo(a,c,{newAnnotation:f}),u.handles.points[0]=[...s],c.invalidated=!0,Ne(l)},this._activateModify=n=>{ze.isInteractingWithTool=!0,n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{ze.isInteractingWithTool=!1,n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=cn(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;fw+y),v,{color:g,width:1});if(o=!0,!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o}return o}}handleSelectedCallback(e,r){const n=e.detail,{element:i}=n;r.highlighted=!0;const o=Ct(i,this.getToolName());this.editData={annotation:r,viewportIdsToRender:o},this._activateModify(i),Mt(i),Ne(o),e.preventDefault()}static setPoint(e,r=!e.data.isPoint,n){e.data.isPoint=r,rn(e,n)}_doneChangingTextCallback(e,r,n){r.data.text=n;const i=Ct(e,this.getToolName());Ne(i),rn(r,e)}cancel(e){if(this.isDrawing){this.isDrawing=!1,this._deactivateModify(e),jt(e);const{annotation:r,viewportIdsToRender:n,newAnnotation:i}=this.editData,{data:o}=r;return r.highlighted=!1,o.handles.activeHandleIndex=null,Ne(n),i&&kn(r),this.editData=null,r.annotationUID}}_isInsideVolume(e,r,n){return fr(e,n)&&fr(r,n)}};Hp.toolName="KeyImage",Hp.dataSeries={data:{seriesLevel:!0}},Hp.dataPoint={data:{isPoint:!0}};let OT=Hp;function ZTe(t){return t(prompt("Enter your annotation:"))}function QTe(t,e,r){return r(prompt("Enter your annotation:"))}class hz extends hi{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=Dr(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=cn(f,o),h=u.filterInteractableAnnotationsForElement(o,d);if(h)for(const g of h)u.isPointNearTool(o,g,a.canvas,10,r)&&l.push(g.annotationUID)}for(const f of l){ia(f);const u=Hr(f);or.createAnnotationMemo(o,u,{deleting:!0}),fn(f)}return e.preventDefault(),!0}}hz.toolName="Eraser";const{transformWorldToIndex:I7,transformIndexToWorld:e_e}=_n,Kp=class Kp extends hi{constructor(e,r){const n=Li({configuration:{positiveStdDevMultiplier:yW,shrinkExpandIncrement:.1,islandRemoval:{enabled:!1}}},r);super(e,n)}async preMouseDownCallback(e){const r=e.detail,{element:n,currentPoints:i}=r,{world:o}=i,a=Ee(n),{viewport:s,renderingEngine:c}=a,{viewUp:l}=s.getCamera(),{segmentationId:f,segmentIndex:u,labelmapVolumeId:d,referencedVolumeId:h}=await this.getLabelmapSegmentationData(s);if(!this._isOrthogonalView(s,h))throw new Error("Oblique view is not supported yet");return this.growCutData={metadata:{...s.getViewReference({points:[o]}),viewUp:l},segmentation:{segmentationId:f,segmentIndex:u,labelmapVolumeId:d,referencedVolumeId:h},viewportId:s.id,renderingEngineId:c.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:r}=this,{segmentation:{segmentationId:n,segmentIndex:i,labelmapVolumeId:o}}=e,a=ke.getVolume(o);let s=0;const c=async({shrinkExpandAmount:l=0}={})=>{l!==0&&(this.seeds=null),s+=l;const f=Math.max(.1,r.positiveStdDevMultiplier+s),u=l<0?Math.max(1,lT-Math.abs(s)*3):lT+s*3,d={...e,options:{...e.options||{},positiveSeedValue:i,negativeSeedValue:255,positiveStdDevMultiplier:f,negativeSeedMargin:u}},h=await this.getGrowCutLabelmap(d),{isPartialVolume:g}=r;(g?this.applyPartialGrowCutLabelmap:this.applyGrowCutLabelmap)(n,i,a,h),this._removeIslands(d)};await c(),Kp.lastGrowCutCommand=c,this.growCutData=null}applyPartialGrowCutLabelmap(e,r,n,i){const o=i.voxelManager.getCompleteScalarDataArray(),a=n.voxelManager,[s,c,l]=i.dimensions,[f,u]=n.dimensions,d=s*c,h=f*u;for(let g=0;g{s===r&&o.setAtIndex(c,s)}),wo(e)}_runLastCommand({shrinkExpandAmount:e=0}={}){const r=Kp.lastGrowCutCommand;r&&r({shrinkExpandAmount:e})}async getLabelmapSegmentationData(e){const r=yu(e.id);if(!r)throw new Error("No active segmentation found");const{segmentationId:n}=r,i=ba(n),{representationData:o}=An(n),a=o[Et.Labelmap];let{volumeId:s,referencedVolumeId:c}=a;if(!s){const l=e.getImageIds();if(Pf(l))s=gg(n).volumeId;else{const f=e.getCurrentImageId(),u=ke.getImage(f),d=xm(f);c=this._createFakeVolume([u.imageId,d.imageId]).volumeId;const g=Lf(e.id,n),p=xm(g);s=this._createFakeVolume([g,p.imageId]).volumeId}}if(!c){const{imageIds:l}=a,f=l.map(h=>ke.getImage(h).referencedImageId),u=ke.generateVolumeId(f),d=ke.getVolume(u);c=d?d.volumeId:(await v1(u,f)).volumeId}return{segmentationId:n,segmentIndex:i,labelmapVolumeId:s,referencedVolumeId:c}}_createFakeVolume(e){const r=ke.generateVolumeId(e),n=ke.getVolume(r);if(n)return n;const i=p1(e,r),o=i.spacing;o[2]===0&&(o[2]=1);const a=new qd({volumeId:r,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 ke.putVolumeSync(r,a),a}_isOrthogonalView(e,r){const i=ke.getVolume(r).imageData,o=e.getCamera(),{ijkVecColDir:a,ijkVecSliceDir:s}=Ow(i,o);return[a,s].every(c=>Kt(Math.abs(c[0]),1)||Kt(Math.abs(c[1]),1)||Kt(Math.abs(c[2]),1))}getRemoveIslandData(e){}_removeIslands(e){const{islandRemoval:r}=this.configuration;if(!r.enabled)return;const{segmentation:{segmentIndex:n,labelmapVolumeId:i},renderingEngineId:o,viewportId:a}=e,s=ke.getVolume(i),c=this.getRemoveIslandData(e);if(!c)return;const[l,f]=s.dimensions,u=l*f,{worldIslandPoints:d=[],islandPointIndexes:h=[]}=c;let g=[...(c==null?void 0:c.ijkIslandPoints)??[]];const v=jr(o).getViewport(a),{voxelManager:y}=s,m=new Bd;g=g.concat(d.map(w=>I7(s.imageData,w))),g=g.concat(h.map(w=>{const x=w%l,C=Math.floor(w/l)%f,S=Math.floor(w/u);return[x,C,S]})),m.initialize(v,y,{points:g,previewSegmentIndex:n,segmentIndex:n}),m.floodFillSegmentIsland(),m.removeExternalIslands(),m.removeInternalIslands()}getSegmentStyle({segmentationId:e,viewportId:r,segmentIndex:n}){return OB({segmentationId:e,segmentIndex:n,viewportId:r})}};Kp.lastGrowCutCommand=null;let Wh=Kp;Wh.toolName="GrowCutBaseTool";const Sb=class Sb extends Wh{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{isPartialVolume:!0,positiveSeedVariance:.5,negativeSeedVariance:.9}}){super(e,r),this._dragCallback=n=>{const i=n.detail,{element:o,currentPoints:a}=i,{world:s}=a,c=Ee(o),{viewport:l}=c;this.growCutData.circleBorderPoint=s,Ne([l.id])},this._endCallback=async n=>{const i=n.detail,{element:o}=i,a=Ee(o),{viewport:s}=a;this.runGrowCut(),this._deactivateDraw(o),this.growCutData=null,jt(o),Ne([s.id])},this._deactivateDraw=n=>{n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback)}}async preMouseDownCallback(e){const r=e.detail,{element:n,currentPoints:i}=r,{world:o}=i,a=Ee(n),{viewport:s,renderingEngine:c}=a;return await super.preMouseDownCallback(e),Object.assign(this.growCutData,{circleCenterPoint:o,circleBorderPoint:o}),this._activateDraw(n),Mt(n),Ne([s.id]),!0}async getGrowCutLabelmap(e){const{segmentation:{referencedVolumeId:r},renderingEngineId:n,viewportId:i,circleCenterPoint:o,circleBorderPoint:a,options:s}=e,l=jr(n).getViewport(i),f=Ih(Sn(Be(),o,a));return mW(r,{center:o,radius:f},l,s)}_activateDraw(e){e.addEventListener(B.MOUSE_UP,this._endCallback),e.addEventListener(B.MOUSE_DRAG,this._dragCallback),e.addEventListener(B.MOUSE_CLICK,this._endCallback)}renderAnnotation(e,r){if(!this.growCutData)return;const{viewport:n}=e,{segmentation:i,circleCenterPoint:o,circleBorderPoint:a}=this.growCutData,s=n.worldToCanvas(o),c=n.worldToCanvas(a),l=Ts(Jt(),c,s),f=rJ(l);if(Kt(f,0))return;const u="growcut",d="0",{color:h}=this.getSegmentStyle({segmentationId:i.segmentationId,segmentIndex:i.segmentIndex,viewportId:n.id});aa(r,u,d,s,f,{color:h})}};Sb.toolName="RegionSegment";let MT=Sb;const Tb=class Tb extends Wh{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{isPartialVolume:!1,positiveSeedVariance:.4,negativeSeedVariance:.9,subVolumePaddingPercentage:.1,islandRemoval:{enabled:!1}}}){super(e,r),this.mouseTimer=null,this.allowedToProceed=!1}mouseMoveCallback(e){if(this.mode!==Nn.Active)return;const r=e.detail,{currentPoints:n,element:i}=r,{world:o}=n;i.style.cursor="default",this.mouseTimer!==null&&(window.clearTimeout(this.mouseTimer),this.mouseTimer=null),this.mouseTimer=window.setTimeout(()=>{this.onMouseStable(e,o,i)},this.configuration.mouseStabilityDelay||500)}async onMouseStable(e,r,n){await super.preMouseDownCallback(e);const i=ke.getVolume(this.growCutData.segmentation.referencedVolumeId),o=wW(i,r,{})||{positiveSeedIndices:new Set,negativeSeedIndices:new Set},{positiveSeedIndices:a,negativeSeedIndices:s}=o;let c;a.size/s.size>20||s.size<30?(c="not-allowed",this.allowedToProceed=!1):(c="copy",this.allowedToProceed=!0);const l=Ee(n);n&&(n.style.cursor=c,requestAnimationFrame(()=>{n.style.cursor!==c&&(n.style.cursor=c)})),this.allowedToProceed&&(this.seeds=o),l&&l.viewport&&l.viewport.render()}async preMouseDownCallback(e){if(!this.allowedToProceed)return!1;const r=e.detail,{currentPoints:n,element:i}=r;Ee(i)&&(i.style.cursor="wait",requestAnimationFrame(()=>{i.style.cursor!=="wait"&&(i.style.cursor="wait")}));const{world:a}=n;return await super.preMouseDownCallback(e),this.growCutData=Li(this.growCutData,{worldPoint:a,islandRemoval:{worldIslandPoints:[a]}}),this.growCutData.worldPoint=a,this.growCutData.islandRemoval={worldIslandPoints:[a]},await this.runGrowCut(),i&&(i.style.cursor="default"),!0}getRemoveIslandData(e){const{worldPoint:r}=e;return{worldIslandPoints:[r]}}async getGrowCutLabelmap(e){const{segmentation:{referencedVolumeId:r},worldPoint:n,options:i}=e,{subVolumePaddingPercentage:o}=this.configuration,a={...i,subVolumePaddingPercentage:o,seeds:this.seeds};return xW({referencedVolumeId:r,worldPosition:n,options:a})}};Tb.toolName="RegionSegmentPlus";let PT=Tb;const t_e=[-1/0,-995],n_e=[0,1900],r_e=[1e3,1900],{transformWorldToIndex:iv,transformIndexToWorld:XC}=_n;class gz extends Wh{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{isPartialVolume:!0,positivePixelRange:n_e,negativePixelRange:t_e,islandRemoval:{enabled:!0,islandPixelRange:r_e}}}){super(e,r),this._dragCallback=n=>{const i=n.detail,{element:o,currentPoints:a}=i,{world:s}=a,c=Ee(o),{viewport:l}=c,f=this._getHorizontalLineWorldPoints(c,s);this.growCutData.horizontalLines[1]=f,Ne([l.id])},this._endCallback=async n=>{const i=n.detail,{element:o}=i,a=Ee(o),{viewport:s}=a;await this.runGrowCut(),this._deactivateDraw(o),this.growCutData=null,jt(o),Ne([s.id])},this._deactivateDraw=n=>{n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback)}}async preMouseDownCallback(e){const r=e.detail,{element:n,currentPoints:i}=r,{world:o}=i,a=Ee(n),{viewport:s,renderingEngine:c}=a,l=this._getHorizontalLineWorldPoints(a,o);return await super.preMouseDownCallback(e),this.growCutData.horizontalLines=[l,l],this._activateDraw(n),Mt(n),Ne([s.id]),!0}renderAnnotation(e,r){if(!this.growCutData)return;const{segmentation:n,horizontalLines:i}=this.growCutData;if(i.length!==2)return;const{viewport:o}=e,{segmentationId:a,segmentIndex:s}=n,[c,l]=i,[f,u]=c,[d,h]=l,g=[f,u,h,d].map(S=>o.worldToCanvas(S)),p="growCutRect",v="0",{color:y,fillColor:m,lineWidth:w,fillOpacity:x,lineDash:C}=this.getSegmentStyle({segmentationId:a,segmentIndex:s,viewportId:o.id});xc(r,p,v,g,{color:y,fillColor:m,fillOpacity:x,lineWidth:w,lineDash:C,closePath:!0})}async getGrowCutLabelmap(e){const{segmentation:{segmentIndex:r,referencedVolumeId:n},renderingEngineId:i,viewportId:o,horizontalLines:a}=e,c=jr(i).getViewport(o),[l,f]=a,u=[l[0],l[1],f[1],f[0]],d=ke.getVolume(n),{topLeft:h,bottomRight:g}=this._getWorldBoundingBoxFromProjectedSquare(c,u),p=iv(d.imageData,h),v=iv(d.imageData,g),y={boundingBox:{ijkTopLeft:p,ijkBottomRight:v}},m=this.configuration,w={positiveSeedValue:r,negativeSeedValue:255,negativePixelRange:m.negativePixelRange,positivePixelRange:m.positivePixelRange};return vW(n,y,w)}getRemoveIslandData(){const{segmentation:{segmentIndex:e,referencedVolumeId:r,labelmapVolumeId:n}}=this.growCutData,i=ke.getVolume(r),o=ke.getVolume(n),a=i.voxelManager.getCompleteScalarDataArray(),s=o.voxelManager.getCompleteScalarDataArray(),{islandPixelRange:c}=this.configuration.islandRemoval,l=[];for(let f=0,u=s.length;f=c[0]&&d<=c[1]&&l.push(f)}return{islandPointIndexes:l}}_activateDraw(e){e.addEventListener(B.MOUSE_UP,this._endCallback),e.addEventListener(B.MOUSE_DRAG,this._dragCallback),e.addEventListener(B.MOUSE_CLICK,this._endCallback)}_projectWorldPointAcrossSlices(e,r,n){const i=this._getViewportVolume(e),{dimensions:o}=i,a=iv(i.imageData,r),s=n.findIndex(f=>Kt(Math.abs(f),1));if(s===-1)throw new Error("Non-orthogonal direction vector");const c=[...a],l=[...a];return c[s]=0,l[s]=o[s]-1,[c,l]}_getCuboidIJKEdgePointsFromProjectedWorldPoint(e,r){const{viewPlaneNormal:n}=e.getCamera();return this._projectWorldPointAcrossSlices(e,r,n)}_getWorldCuboidCornerPoints(e,r){const n=[],i=this._getViewportVolume(e);return r.forEach(o=>{const s=this._getCuboidIJKEdgePointsFromProjectedWorldPoint(e,o).map(c=>XC(i.imageData,c));n.push(...s)}),n}_getWorldBoundingBoxFromProjectedSquare(e,r){const n=this._getWorldCuboidCornerPoints(e,r),i=[...n[0]],o=[...n[0]];return n.forEach(a=>{$Y(i,i,a),jY(o,o,a)}),{topLeft:i,bottomRight:o}}_getViewportVolume(e){if(!(e instanceof Cr))throw new Error("Viewport is not a BaseVolumeViewport");const r=e.getAllVolumeIds()[0];return ke.getVolume(r)}_getHorizontalLineIJKPoints(e,r){const{viewport:n}=e,i=this._getViewportVolume(n),{dimensions:o}=i,a=iv(i.imageData,r),{viewUp:s,viewPlaneNormal:c}=n.getCamera(),f=Ln(Be(),s,c).findIndex(h=>Kt(Math.abs(h),1)),u=[...a],d=[...a];return u[f]=0,d[f]=o[f]-1,[u,d]}_getHorizontalLineWorldPoints(e,r){const{viewport:n}=e,i=this._getViewportVolume(n),[o,a]=this._getHorizontalLineIJKPoints(e,r),s=XC(i.imageData,o),c=XC(i.imageData,a);return[s,c]}}gz.toolName="WholeBodySegment";function i_e(t,e,r=!0){const n=Object.assign({},e,{segmentIndex:0});A8(t,n)}function o_e(t,e){i_e(t,e,!0)}class pz extends Gd{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE:A8,ERASE_INSIDE:o_e},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=Ee(a),{viewport:l}=c;this.isDrawing=!0;const f=l.getCamera(),{viewPlaneNormal:u,viewUp:d}=f,h=yu(l.id);if(!h)throw new Error("No active segmentation detected, create one before using scissors tool");const{segmentationId:g}=h,p=ba(g),v=Zd(g),y=gu(l.id,g,p),{representationData:m}=An(g),w=m[Et.Labelmap],x={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:[...u],viewUp:[...d],FrameOfReferenceUID:l.getFrameOfReferenceUID(),referencedImageId:"",toolName:this.getToolName(),segmentColor:y},data:{handles:{points:[[...s],[...s],[...s],[...s]],activeHandleIndex:null}}},C=Ct(a,this.getToolName());if(this.editData={annotation:x,segmentIndex:p,segmentationId:g,segmentsLocked:v,segmentColor:y,viewportIdsToRender:C,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1,volumeId:null,referencedVolumeId:null,imageId:null},l instanceof Cr){const{volumeId:S}=w,T=ke.getVolume(S);this.editData={...this.editData,volumeId:S,referencedVolumeId:T.referencedVolumeId}}else{const S=Lf(l.id,g);this.editData={...this.editData,imageId:S}}return this._activateDraw(a),Mt(a),n.preventDefault(),Ne(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=Ee(o),{worldToCanvas:d,canvasToWorld:h}=u.viewport,g=f.world,{points:p}=l.handles;p[c]=[...g];let v,y,m,w,x,C,S,T;switch(c){case 0:case 3:v=d(p[0]),w=d(p[3]),y=[w[0],v[1]],m=[v[0],w[1]],C=h(y),S=h(m),p[1]=C,p[2]=S;break;case 1:case 2:y=d(p[1]),m=d(p[2]),v=[m[0],y[1]],w=[y[0],m[1]],x=h(v),T=h(w),p[0]=x,p[3]=T;break}a.invalidated=!0,this.editData.hasMoved=!0,Ne(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),jt(o);const f=Ee(o),u={...this.editData,points:l.handles.points,createMemo:this.createMemo.bind(this)};this.editData=null,this.isDrawing=!1,this.applyActiveStrategy(f,u),this.doneEditMemo()},this._activateDraw=n=>{n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragCallback),n.addEventListener(B.MOUSE_MOVE,this._dragCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback)},this._deactivateDraw=n=>{n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_MOVE,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.TOUCH_TAP,this._endCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.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()?(A1(i,l,"0",d[0],d[3],{color:h}),o=!0,o):(console.warn("Rendering Engine has been destroyed"),o)}}}pz.toolName="RectangleScissor";class mz extends Gd{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE:ox,ERASE_INSIDE:iW},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=Ee(a),{viewport:f}=l;this.isDrawing=!0;const u=f.getCamera(),{viewPlaneNormal:d,viewUp:h}=u,g=yu(f.id);if(!g)throw new Error("No active segmentation detected, create one before using scissors tool");const{segmentationId:p}=g,v=ba(p),y=Zd(p),m=gu(f.id,p,v),{representationData:w}=An(p),x=w.Labelmap;if(!x)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:y,segmentColor:m,viewportIdsToRender:S,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1,volumeId:null,referencedVolumeId:null,imageId:null},f instanceof Cr){const{volumeId:T}=x,_=ke.getVolume(T);this.editData={...this.editData,volumeId:T,referencedVolumeId:_.referencedVolumeId}}else{const T=Lf(f.id,p);this.editData={...this.editData,imageId:T}}return this._activateDraw(a),Mt(a),n.preventDefault(),Ne(S),!0},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{currentPoints:a}=i,s=a.canvas,c=Ee(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]),y=Math.abs(s[1]-g[1]),m=Math.sqrt(v*v+y*y),w=[g[0],g[1]+m],x=[g[0],g[1]-m],C=[g[0]-m,g[1]],S=[g[0]+m,g[1]];p.handles.points=[u(w),u(x),u(C),u(S)],d.invalidated=!0,this.editData.hasMoved=!0,Ne(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),jt(o);const d=Ee(o),h={...this.editData,points:l.handles.points,viewPlaneNormal:f,viewUp:u,createMemo:this.createMemo.bind(this)};this.editData=null,this.isDrawing=!1,this.applyActiveStrategy(d,h),this.doneEditMemo()},this._activateDraw=n=>{n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.MOUSE_MOVE,this._dragCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragCallback),n.addEventListener(B.TOUCH_END,this._endCallback)},this._deactivateDraw=n=>{n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.MOUSE_MOVE,this._dragCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragCallback),n.removeEventListener(B.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(x=>a.worldToCanvas(x)),g=h[0],p=h[1],v=[Math.floor((g[0]+p[0])/2),Math.floor((g[1]+p[1])/2)],y=Math.abs(g[1]-Math.floor((g[1]+p[1])/2)),m=`rgb(${l.segmentColor.slice(0,3)})`;return a.getRenderingEngine()?(aa(i,f,"0",v,y,{color:m}),o=!0,o):(console.warn("Rendering Engine has been destroyed"),o)}}}mz.toolName="CircleScissor";class vz extends Gd{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE:nW,ERASE_INSIDE:rW},defaultStrategy:"FILL_INSIDE",activeStrategy:"FILL_INSIDE"}}){super(e,r),this.preMouseDownCallback=n=>{if(this.isDrawing===!0)return;this.doneEditMemo();const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=o.canvas,l=Ee(a),{viewport:f}=l;this.isDrawing=!0;const u=f.getCamera(),{viewPlaneNormal:d,viewUp:h}=u,g=yu(f.id);if(!g)throw new Error("No active segmentation detected, create one before using scissors tool");const{segmentationId:p}=g,v=ba(p),y=Zd(p),m=gu(f.id,p,v);this.isDrawing=!0;const w={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}},x=[f.id];this.editData={annotation:w,centerCanvas:c,segmentIndex:v,segmentationId:p,segmentsLocked:y,segmentColor:m,toolGroupId:this.toolGroupId,viewportIdsToRender:x,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1,volumeId:null,referencedVolumeId:null,imageId:null};const{representationData:C}=An(p),S=this.getEditData({viewport:f,representationData:C,segmentsLocked:y,segmentationId:p});return this.editData={...this.editData,...S},this._activateDraw(a),Mt(a),n.preventDefault(),Ne(x),!0},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{currentPoints:a}=i,s=a.canvas,c=Ee(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]),y=Math.abs(s[1]-g[1]),m=Math.sqrt(v*v+y*y),w=[g[0],g[1]+m],x=[g[0],g[1]-m],C=[g[0]-m,g[1]],S=[g[0]+m,g[1]];p.handles.points=[u(w),u(x),u(C),u(S)],d.invalidated=!0,this.editData.hasMoved=!0,Ne(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),jt(o);const g=Ee(o),p={...this.editData,points:u.handles.points,segmentIndex:l,segmentsLocked:f,viewPlaneNormal:d,viewUp:h,createMemo:this.createMemo.bind(this)};this.editData=null,this.isDrawing=!1,this.applyActiveStrategy(g,p),this.doneEditMemo()},this._activateDraw=n=>{n.addEventListener(B.MOUSE_UP,this._endCallback),n.addEventListener(B.MOUSE_DRAG,this._dragCallback),n.addEventListener(B.MOUSE_CLICK,this._endCallback),n.addEventListener(B.MOUSE_MOVE,this._dragCallback),n.addEventListener(B.TOUCH_END,this._endCallback),n.addEventListener(B.TOUCH_TAP,this._endCallback),n.addEventListener(B.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=n=>{n.removeEventListener(B.MOUSE_UP,this._endCallback),n.removeEventListener(B.MOUSE_DRAG,this._dragCallback),n.removeEventListener(B.MOUSE_CLICK,this._endCallback),n.removeEventListener(B.MOUSE_MOVE,this._dragCallback),n.removeEventListener(B.TOUCH_END,this._endCallback),n.removeEventListener(B.TOUCH_DRAG,this._dragCallback),n.removeEventListener(B.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(x=>a.worldToCanvas(x)),g=h[0],p=h[1],v=[Math.floor((g[0]+p[0])/2),Math.floor((g[1]+p[1])/2)],y=Math.abs(g[1]-Math.floor((g[1]+p[1])/2)),m=`rgb(${l.segmentColor.slice(0,3)})`;return a.getRenderingEngine()?(aa(i,f,"0",v,y,{color:m}),o=!0,o):(console.warn("Rendering Engine has been destroyed"),o)}}}vz.toolName="SphereScissor";const{transformWorldToIndex:jg}=_n;class yz extends R5{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{storePointData:!1,numSlicesToPropagate:10,calculatePointsInsideVolume:!0,getTextLines:a_e,statsCalculator:pl,showTextBox:!1,throttleTimeout:100}}){super(e,r),this.isHandleOutsideImage=!1,this.addNewAnnotation=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=Ee(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 ar)throw new Error("Stack Viewport Not implemented");{const T=this.getTargetId(l);v=Cl(T),p=ke.getVolume(v),g=cu(p,s,d)}const y=Mf(p,d),m=this._getStartCoordinate(s,y,d),w=this._getEndCoordinate(s,y,d),x=l.getFrameOfReferenceUID(),C={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...h],FrameOfReferenceUID:x,referencedImageId:g,volumeId:v,spacingInNormal:y,enabledElement:c},data:{label:"",startCoordinate:m,endCoordinate:w,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),on(C,a);const S=Ct(a,this.getToolName());return this.editData={annotation:C,viewportIdsToRender:S,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),Mt(a),n.preventDefault(),Ne(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),jt(o);const u=Ee(o);this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&fn(a.annotationUID);const d=this.getTargetId(u.viewport),h=ke.getVolume(d.split(/volumeId:|\?/)[1]);this._computePointsInsideVolume(a,h,d,u),Ne(s),c?kn(a):rn(a,o)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n;let s=cn(this.getToolName(),a.element);if(!(s!=null&&s.length))return o;s=Jw(s,a.getCamera());const c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id};for(let l=0;la.worldToCanvas(ve)),S=C[0],T=lf(C),{centerPointRadius:_}=this.configuration,E=hh(C),b=a.getCamera().focalPoint,D=a.getCamera().viewPlaneNormal;let O=g,L=p;Array.isArray(g)&&(O=this._getCoordinateForViewplaneNormal(O,D),d.startCoordinate=O),Array.isArray(p)&&(L=this._getCoordinateForViewplaneNormal(L,D),d.endCoordinate=L);const P=Yu(d.startCoordinate),k=Yu(d.endCoordinate),G=this._getCoordinateForViewplaneNormal(b,D),j=Yu(G);if(jMath.max(P,k))continue;const F=Yu((d.startCoordinate+d.endCoordinate)/2);let U=!1;if(j===F&&(U=!0),d.handles.points[0][this._getIndexOfCoordinatesForViewplaneNormal(D)]=F,f.invalidated&&this._throttledCalculateCachedStats(f,n),!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;let W;if(!Kr(u))continue;!ai(u)&&!this.editData&&y!==null&&U&&(W=[C[y]]),W&&nr(i,u,"0",W,{color:x});let J=m,te=w;U?(J=m,te=[]):te=[5,5];const le="0";if(aa(i,u,le,S,T,{color:x,lineDash:te,lineWidth:J}),_>0&&T>3*_&&aa(i,u,`${le}-center`,S,_,{color:x,lineDash:w,lineWidth:m}),o=!0,this.configuration.showTextBox){const ve=this.getLinkedTextBoxStyle(c,f);if(!ve.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 pe=this.configuration.getTextLines(d,{metadata:h});if(!pe||pe.length===0)continue;let ye;d.handles.textBox.hasMoved||(ye=Ia(E),d.handles.textBox.worldPosition=a.canvasToWorld(ye));const Ie=a.worldToCanvas(d.handles.textBox.worldPosition),be=ao(i,u,"1",pe,Ie,C,{},ve),{x:$,y:R,width:X,height:K}=be;d.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([$,R]),topRight:a.canvasToWorld([$+X,R]),bottomLeft:a.canvasToWorld([$,R+K]),bottomRight:a.canvasToWorld([$+X,R+K])}}}return o},this.configuration.calculatePointsInsideVolume?this._throttledCalculateCachedStats=zo(this._calculateCachedStatsTool,this.configuration.throttleTimeout,{trailing:!0}):this._throttledCalculateCachedStats=ag(this._calculateCachedStatsTool,this.configuration.throttleTimeout)}_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=jg(s,f[0]),d=jg(s,f[0]),h=xs(f),g=Be();s.indexToWorldVec3(u,g);const p=Be();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=Ki(g,p),y=[];for(let m=0;m{const x=Be();return Cn(x,w,o,m),Array.from(x)}));n.cachedStats.projectionPoints=y}_computePointsInsideVolume(e,r,n,i){var b,D,O;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(L=>l.worldToCanvas(L)),[g,p]=hh(h),v=l.canvasToWorld(g),y=l.canvasToWorld(p),{worldWidth:m,worldHeight:w}=cg(s,c,v,y),x=Da(d,o.handles),C=v8(d),S=Math.abs(Math.PI*(m/x.scale/2)*(w/C/x.scale/2)),T={isPreScaled:wu(l,n),isSuvScaled:this.isSuvScaled(l,n,e.metadata.referencedImageId)},_=xu(a.Modality,e.metadata.referencedImageId,T);for(let L=0;Ll.worldToCanvas(be)),[G,j]=hh(k),F=l.canvasToWorld(G),U=l.canvasToWorld(j),W=F,J=U,{dimensions:te,imageData:le,voxelManager:ve}=r,pe=jg(le,W),ye=jg(le,P),Ie=this._getIndexOfCoordinatesForViewplaneNormal(s);pe[0]=Math.floor(pe[0]),pe[1]=Math.floor(pe[1]),pe[2]=Math.floor(pe[2]),pe[Ie]=ye[Ie];const Le=jg(le,J);if(Le[0]=Math.floor(Le[0]),Le[1]=Math.floor(Le[1]),Le[2]=Math.floor(Le[2]),Le[Ie]=ye[Ie],this._isInsideVolume(pe,Le,te)){const be=Math.min(pe[0],Le[0]),$=Math.max(pe[0],Le[0]),R=Math.min(pe[1],Le[1]),X=Math.max(pe[1],Le[1]),K=Math.min(pe[2],Le[2]),Z=Math.max(pe[2],Le[2]),ie=[[be,$],[R,X],[K,Z]],Te={center:P,xRadius:Math.abs(F[0]-U[0])/2,yRadius:Math.abs(F[1]-U[1])/2,zRadius:Math.abs(F[2]-U[2])/2},Oe=ve.forEach(this.configuration.statsCalculator.statsCallback,{isInObject:Ve=>Ww(Te,Ve),boundsIJK:ie,imageData:le,returnPoints:this.configuration.storePointData});u.push(Oe)}}const E=this.configuration.statsCalculator.getStatistics();o.cachedStats.pointsInVolume=u,o.cachedStats.statistics={Modality:a.Modality,area:S,mean:(b=E.mean)==null?void 0:b.value,stdDev:(D=E.stdDev)==null?void 0:D.value,max:(O=E.max)==null?void 0:O.value,statsArray:E.array,areaUnit:x.areaUnit,modalityUnit:_}}_calculateCachedStatsTool(e,r){const n=e.data,{viewport:i}=r,{cachedStats:o}=n,a=this.getTargetId(i),s=ke.getVolume(a.split(/volumeId:|\?/)[1]);return this._computeProjectionPoints(e,s),this._computePointsInsideVolume(e,s,a,r),e.invalidated=!1,rn(e,i.element),o}_getStartCoordinate(e,r,n){const i=this.configuration.numSlicesToPropagate,o=Math.round(i/2),a=Be();return Cn(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=Be();return Cn(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 a_e(t,e={}){const r=t.cachedStats.statistics,{area:n,mean:i,max:o,stdDev:a,areaUnit:s,modalityUnit:c}=r;if(i===void 0)return;const l=[];return l.push(`Area: ${an(n)} ${s}`),l.push(`Mean: ${an(i)} ${c}`),l.push(`Max: ${an(o)} ${c}`),l.push(`Std Dev: ${an(a)} ${c}`),l}yz.toolName="CircleROIStartEndThreshold";const{transformWorldToIndex:O7,isEqual:YC}=_n;class wz extends hi{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=Ee(a),{viewport:l}=c,f=l.getCamera(),{viewPlaneNormal:u}=f,d=yu(l.id);if(!d)throw new Error("No active segmentation detected, create one before using scissors tool");const{segmentationId:h}=d,g=ba(h),p=Zd(h),{representationData:v}=An(h);let y,m,w,x;if(this.doneEditMemo(),l instanceof Cr){const{volumeId:k}=v[Et.Labelmap],G=ke.getVolume(k);({dimensions:y,direction:m}=G),x=G.voxelManager,w=O7(G.imageData,s)}else{const k=Lf(l.id,h);if(!k)throw new Error("No active segmentation imageId detected, create one before using scissors tool");const{imageData:G}=l.getImageData();y=G.getDimensions(),m=G.getDirection(),x=ke.getImage(k).voxelManager,w=O7(G,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:b}=this.generateHelpers(x,y,w,C);if(w[0]<0||w[0]>=y[0]||w[1]<0||w[1]>=y[1]||w[2]<0||w[2]>=y[2])return;const D=T(w[0],w[1],w[2]);if(p.includes(D))return;const O=L8(S,E),{flooded:L}=O;L.forEach(k=>{const G=_(k[0],k[1]);x.setAtIndex(G,g)});const P=this.getFramesModified(C,b,O);return wo(h,P),!0},this.getFramesModified=(n,i,o)=>{const{flooded: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(YC(a,s))return 0;const c=[Math.abs(i[0]),Math.abs(i[1]),Math.abs(i[2])];if(YC(a,c))return 1;const l=[Math.abs(o[0]),Math.abs(o[1]),Math.abs(o[2])];if(YC(a,l))return 2}}wz.toolName="PaintFill";const s_e={TOP_LEFT:"TOP_LEFT",TOP_RIGHT:"TOP_RIGHT",BOTTOM_LEFT:"BOTTOM_LEFT",BOTTOM_RIGHT:"BOTTOM_RIGHT"};var q8={Corners:s_e};const{vtkErrorMacro:JC}=Q,{Corners:ov}=q8;function c_e(t,e){e.classHierarchy.push("vtkOrientationMarkerWidget");const r={...t},n=[],i=rN.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(),y=e._interactor.getView(),m=y.getSize(),[w,x]=y.getViewportSize(d),C=Math.min(w,x);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 ov.TOP_LEFT:return[h,v-_,h+T,v];case ov.TOP_RIGHT:return[p-T,v-_,p,v];case ov.BOTTOM_LEFT:return[h,g,h+T,g+_];case ov.BOTTOM_RIGHT:return[p-T,g,p,g+_];default:return JC("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 y=i.getActiveCamera();y.setPosition(g[0],g[1],g[2]),y.setFocalPoint(p[0],p[1],p[2]),y.setViewUp(v[0],v[1],v[2]),i.resetCamera()}},t.setEnabled=d=>{var h,g;if(d){if(e.enabled)return;if(!e.actor){JC("Must set actor before enabling orientation marker.");return}if(!e._interactor){JC("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(y=>{y.type==="ActiveCameraEvent"&&(s&&s.unsubscribe(),s=y.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 l_e={viewportCorner:q8.Corners.BOTTOM_LEFT,viewportSize:.2,minPixelSize:50,maxPixelSize:200,parentRenderer:null,interactiveRenderer:!1};function xz(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,l_e,r),Q.obj(t,e),Q.get(t,e,["enabled","viewportCorner","viewportSize","interactiveRenderer"]),Q.setGet(t,e,["_interactor","minPixelSize","maxPixelSize","parentRenderer"]),Q.get(t,e,["actor"]),Q.moveToProtected(t,e,["interactor"]),c_e(t,e)}const u_e=Q.newInstance(xz,"vtkOrientationMarkerWidget");var M7={newInstance:u_e,extend:xz,...q8};function Cz(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=u1.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=Ot.newInstance({numberOfComponents:4,values:new Uint8Array(s.data.buffer)});return l.setName("scalars"),c.getPointData().setScalars(l),c}function f_e(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),Cz(r)}var d_e={canvasToImageData:Cz,imageToImageData:f_e};const Sz={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 Tz(t,e){e.set(t)}function h_e(t,e){return Tz(Sz[t],e)}function g_e(t,e){Sz[t]=e}var p_e={applyDefinitions:Tz,applyPreset:h_e,registerStylePreset:g_e};const m_e={xPlus:0,xMinus:1,yPlus:2,yMinus:3,zPlus:4,zMinus:5};function v_e(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=ya.newInstance(),o=Xd.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=d_e.canvasToImageData(n);o.setInputData(h,m_e[c]),t.modified()}function s(){r=HN.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 y_e={defaultStyle:{text:"",faceColor:"white",faceRotation:0,fontFamily:"Arial",fontColor:"black",fontStyle:"normal",fontSizeScale:t=>t/1.8,edgeThickness:.1,edgeColor:"black",resolution:200}};function _z(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,y_e,r),yc.extend(t,e,r),Q.get(t,e,["defaultStyle","xPlusFaceProperty","xMinusFaceProperty","yPlusFaceProperty","yMinusFaceProperty","zPlusFaceProperty","zMinusFaceProperty"]),v_e(t,e)}const w_e=Q.newInstance(_z,"vtkAnnotatedCubeActor");var P7={newInstance:w_e,extend:_z,Presets:p_e};const{vtkErrorMacro:x_e}=Q;function C_e(t,e){let r=0;return t.map((n,i)=>i===r?(r+=n+1,n):n+e)}function av(t,e,r,n){t.set(C_e(e,r),n)}function S_e(t,e){e.classHierarchy.push("vtkAppendPolyData"),t.requestData=(r,n)=>{const i=t.getNumberOfInputPorts();if(!i){x_e("No input specified.");return}if(i===1){n[0]=r[0];return}const o=Nr.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 D=0;Dc?s:c);const P=O.getPointData();P?(g=g&&P.getNormals()!==null,p=p&&P.getTCoords()!==null,v=v&&P.getScalars()!==null):(g=!1,p=!1,v=!1)}e.outputPointsPrecision===My.SINGLE?s=gn.FLOAT:e.outputPointsPrecision===My.DOUBLE&&(s=gn.DOUBLE);const y=vm.newInstance({dataType:s});y.setNumberOfPoints(a);const m=y.getData(),w=new Uint32Array(f),x=new Uint32Array(u),C=new Uint32Array(d),S=new Uint32Array(h);let T=null,_=null,E=null;const b=r[i-1];if(g){const D=b.getPointData().getNormals();T=Ot.newInstance({numberOfComponents:3,numberOfTuples:a,size:3*a,dataType:D.getDataType(),name:D.getName()})}if(p){const D=b.getPointData().getTCoords();_=Ot.newInstance({numberOfComponents:2,numberOfTuples:a,size:2*a,dataType:D.getDataType(),name:D.getName()})}if(v){const D=b.getPointData().getScalars();E=Ot.newInstance({numberOfComponents:D.getNumberOfComponents(),numberOfTuples:a,size:a*D.getNumberOfComponents(),dataType:D.getDataType(),name:D.getName()})}a=0,f=0,u=0,d=0,h=0;for(let D=0;D2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,T_e,r),Q.setGet(t,e,["outputPointsPrecision"]),Q.obj(t,e),Q.algo(t,e,1,1),S_e(t,e)}const __e=Q.newInstance(Ez,"vtkAppendPolyData");var bz={newInstance:__e,extend:Ez};function E_e(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=Q.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;$i.buildFromRadian().translate(...e.center).rotateFromDirections([1,0,0],e.direction).apply(u),o=Nr.newInstance(),o.getPoints().setData(u,3),o.getPolys().setData(h,1),i[0]=o}t.requestData=r}const b_e={height:1,radius:.5,resolution:6,center:[0,0,0],direction:[1,0,0],capping:!0,pointType:"Float64Array"};function Dz(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,b_e,r),Q.obj(t,e),Q.setGet(t,e,["height","radius","resolution","capping"]),Q.setGetArray(t,e,["center","direction"],3),Q.algo(t,e,0,1),E_e(t,e)}const D_e=Q.newInstance(Dz,"vtkConeSource");var I_e={newInstance:D_e,extend:Dz};function O_e(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=Q.newTypedArray(e.pointType,s*3);let f=0;const u=new Uint32Array(c),d=new Float32Array(s*3),h=Ot.newInstance({numberOfComponents:3,values:d,name:"Normals"}),g=new Float32Array(s*2),p=Ot.newInstance({numberOfComponents:2,values:g,name:"TCoords"}),v=[0,0,0],y=[0,0,0],m=[0,0,0],w=[0,0,0],x=[0,0],C=[0,0],S=e.otherRadius==null?e.radius:e.otherRadius;for(let T=0;TT*-1)).apply(l),o=Nr.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 M_e={height:1,initAngle:0,radius:1,resolution:6,center:[0,0,0],direction:[0,1,0],capping:!0,pointType:"Float64Array"};function Iz(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,M_e,r),Q.obj(t,e),Q.setGet(t,e,["height","initAngle","otherRadius","radius","resolution","capping"]),Q.setGetArray(t,e,["center","direction"],3),Q.algo(t,e,0,1),O_e(t,e)}const P_e=Q.newInstance(Iz,"vtkCylinderSource");var R_e={newInstance:P_e,extend:Iz};function L_e(t,e){e.classHierarchy.push("vtkArrowSource");function r(n,i){if(e.deleted)return;const o=R_e.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();$i.buildFromDegree().rotateZ(-90).apply(s).apply(c);const l=I_e.newInstance();l.setResolution(e.tipResolution),l.setHeight(e.tipLength),l.setRadius(e.tipRadius);const f=l.getOutputData(),u=f.getPoints().getData();$i.buildFromRadian().translate(1-e.tipLength*.5,0,0).apply(u);const d=bz.newInstance();d.setInputData(a),d.addInputData(f);const h=d.getOutputData(),g=h.getPoints().getData();$i.buildFromRadian().translate(-.5+e.tipLength*.5,0,0).apply(g),e.invert?($i.buildFromRadian().rotateFromDirections([1,0,0],e.direction).scale(-1,-1,-1).apply(g),i[0]=h):($i.buildFromRadian().rotateFromDirections([1,0,0],e.direction).scale(1,1,1).apply(g),i[0]=d.getOutputData())}t.requestData=r}const A_e={tipResolution:6,tipRadius:.1,tipLength:.35,shaftResolution:6,shaftRadius:.03,invert:!1,direction:[1,0,0],pointType:"Float64Array"};function Oz(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,A_e,r),Q.obj(t,e),Q.setGet(t,e,["tipResolution","tipRadius","tipLength","shaftResolution","shaftRadius","invert"]),Q.setGetArray(t,e,["direction"],3),Q.algo(t,e,0,1),L_e(t,e)}const N_e=Q.newInstance(Oz,"vtkArrowSource");var ZC={newInstance:N_e,extend:Oz};function QC(t){const e=t.getPoints().getBounds(),r=[-(e[0]+e[1])*.5,-(e[2]+e[3])*.5,-(e[4]+e[5])*.5];$i.buildFromDegree().translate(...r).apply(t.getPoints().getData())}function e3(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],$i.buildFromDegree().translate(...i).apply(t.getPoints().getData())}function t3(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=ZC.newInstance({direction:[1,0,0],...i}).getOutputData();e.config.recenter?QC(o):e3(o,0,i.invert),t3(o,...i.color),i={...e.config,...e.yConfig};const a=ZC.newInstance({direction:[0,1,0],...i}).getOutputData();e.config.recenter?QC(a):e3(a,1,i.invert),t3(a,...i.color),i={...e.config,...e.zConfig};const s=ZC.newInstance({direction:[0,0,1],...i}).getOutputData();e.config.recenter?QC(s):e3(s,2,i.invert),t3(s,...i.color);const c=bz.newInstance();c.setInputData(o),c.addInputData(a),c.addInputData(s),r.setInputConnection(c.getOutputPort())},t.update();const n=Q.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 V_e(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 Mz(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};yc.extend(t,e,V_e(r)),Q.setGet(t,e,["config","xConfig","yConfig","zConfig"]),k_e(t,e)}const F_e=Q.newInstance(Mz,"vtkAxesActor");var U_e={newInstance:F_e,extend:Mz},V5;(function(t){t[t.ANNOTATED_CUBE=1]="ANNOTATED_CUBE",t[t.AXES=2]="AXES",t[t.CUSTOM=3]="CUSTOM"})(V5||(V5={}));const Hc=class Hc extends hi{constructor(e={},r={configuration:{orientationWidget:{enabled:!0,viewportCorner:M7.Corners.BOTTOM_RIGHT,viewportSize:.15,minPixelSize:100,maxPixelSize:300},overlayMarkerType:Hc.OVERLAY_MARKER_TYPES.ANNOTATED_CUBE,overlayConfiguration:{[Hc.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}},[Hc.OVERLAY_MARKER_TYPES.AXES]:{},[Hc.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=()=>ti(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}=Ci(n,i),{element:a}=o;a.removeEventListener(Xe.VOLUME_VIEWPORT_NEW_VOLUME,this.initViewports.bind(this)),this._resizeObservers.get(n).unobserve(a)})};He.removeEventListener(B.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}=Ci(n,i),{element:a}=o;this.initViewports(),a.addEventListener(Xe.VOLUME_VIEWPORT_NEW_VOLUME,this.initViewports.bind(this));const s=new ResizeObserver(()=>{setTimeout(()=>{const c=Ci(n,i);if(!c)return;const{viewport:l}=c;this.resize(n),l.render()},100)});s.observe(a),this._resizeObservers.set(n,s)})};e(),He.addEventListener(B.TOOLGROUP_VIEWPORT_ADDED,r=>{r.detail.toolGroupId===this.toolGroupId&&(e(),this.initViewports())})}cleanUpData(){Go()[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=Go()[0];if(!r)return;let n=r.getViewports();n=jw(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=U_e.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=M7.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[V5.CUSTOM].polyDataURL,n=await(await fetch(e)).arrayBuffer(),i=CV.newInstance();i.parseAsArrayBuffer(n),i.update();const o=Nr.newInstance();o.shallowCopy(i.getOutputData()),o.getPointData().setActiveScalars("Color");const a=ya.newInstance();a.setInputData(o),a.setColorModeToDirectScalars();const s=yc.newInstance();return s.setMapper(a),s.rotateZ(180),s}createAnnotationCube(e){const r=P7.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=P7.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}};Hc.CUBE=1,Hc.AXIS=2,Hc.VTPFILE=3,Hc.OVERLAY_MARKER_TYPES=V5;let F5=Hc;F5.toolName="OrientationMarker";const qp=class qp extends hi{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{hoverTimeout:100,mode:qp.SelectMode.Border,searchRadius:6}}){super(e,r),this.mouseMoveCallback=n=>{if(this.mode===Nn.Active)return 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(ze.isInteractingWithTool)return;const{element:r,currentPoints:n}=e.detail,i=n.world,o=Ee(r);if(!o)return;const{viewport:a}=o,s=yu(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===qp.SelectMode.Inside?s=N8(o,r,{viewport:n}):a.Labelmap?s=hW(o,r,{viewport:n,searchRadius:this.configuration.searchRadius}):a.Contour?s=pW(o):a.Surface,!s||s===0)return;M5(o,s);const l=n.getRenderingEngine().getViewports().map(f=>f.id);ns(o),Ne(l)}};qp.SelectMode={Inside:"Inside",Border:"Border"};let U5=qp;U5.toolName="SegmentSelectTool";const X0=class X0 extends zm{constructor(e={}){super(e),this.renderAnnotation=(r,n)=>{let i=!0;const{viewport:o}=r,{element:a}=o,s=o.id;let c=cn(this.getToolName(),a);if(!(c!=null&&c.length)||(c=this.filterInteractableAnnotationsForElement(a,c),!(c!=null&&c.length)))return i;const l=this.getTargetId(o),f=o.getRenderingEngine(),u={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:r.viewport.id};for(let d=0;do.worldToCanvas(pe));u.annotationUID=g;const{segmentIndex:w,segmentationId:x}=h.metadata,{lineWidth:C,lineDash:S,shadow:T}=this.getAnnotationStyle({annotation:h,styleSpecifier:u}),E=`rgb(${gu(s,x,w).slice(0,3).join(",")})`;if(!p.cachedStats[l]||p.cachedStats[l].unit==null?(p.cachedStats[l]={length:null,width:null,unit:null},this._calculateCachedStats(h,f,r)):h.invalidated&&this._throttledCalculateCachedStats(h,f,r),!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;let b;if(!Kr(g))continue;!ai(g)&&!this.editData&&y!==null&&(b=[m[y]]),b&&nr(n,g,"0",b,{color:E});const D=`${g}-line-1`,O=`${g}-line-2`;mn(n,g,"0",m[0],m[1],{color:E,lineWidth:C,lineDash:S,shadow:T},D),mn(n,g,"1",m[2],m[3],{color:E,lineWidth:C,lineDash:S,shadow:T},O),i=!0;const k=this.getLinkedTextBoxStyle(u,h);if(!k.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}k.color=E;const G=this.configuration.getTextLines(p,l);if(!G||G.length===0)continue;let j;p.handles.textBox.hasMoved||(j=Ia(m),p.handles.textBox.worldPosition=o.canvasToWorld(j));const F=o.worldToCanvas(p.handles.textBox.worldPosition),W=ao(n,g,"1",G,F,m,{},k),{x:J,y:te,width:le,height:ve}=W;p.handles.textBox.worldBoundingBox={topLeft:o.canvasToWorld([J,te]),topRight:o.canvasToWorld([J+le,te]),bottomLeft:o.canvasToWorld([J,te+ve]),bottomRight:o.canvasToWorld([J+le,te+ve])}}return i}}addNewAnnotation(e){const r=e.detail,{currentPoints:n,element:i}=r,o=n.world,a=Ee(i),{viewport:s}=a;this.isDrawing=!0;const c=s.getCamera(),{viewPlaneNormal:l,viewUp:f}=c,u=this.getReferencedImageId(s,o,l,f),d=s.getFrameOfReferenceUID(),h={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...l],viewUp:[...f],FrameOfReferenceUID:d,referencedImageId:u,...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:{}}};on(h,i);const g=Ct(i,this.getToolName());return this.editData={annotation:h,viewportIdsToRender:g,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(i),Mt(i),e.preventDefault(),Ne(g),h}};X0.toolName="SegmentBidirectional",X0.hydrate=(e,r,n)=>{const i=Bn(e);if(!i)return;const{viewport:o}=i,c=E1().filter(T=>T.metadata.toolName==="SegmentBidirectional").find(T=>{const{metadata:_}=T;return _.segmentIndex===(n==null?void 0:n.segmentIndex)&&_.segmentationId===(n==null?void 0:n.segmentationId)});c&&fn(c.annotationUID);const{FrameOfReferenceUID:l,referencedImageId:f,viewPlaneNormal:u,instance:d}=X0.hydrateBase(X0,i,r[0],n),[h,g]=r,[p,v]=h,[y,m]=g,w=[p,v,y,m],{toolInstance:x,...C}=n||{},S={annotationUID:(n==null?void 0:n.annotationUID)||Tn(),data:{handles:{points:w,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:n==null?void 0:n.segmentIndex,segmentationId:n==null?void 0:n.segmentationId,toolName:d.getToolName(),viewPlaneNormal:u,FrameOfReferenceUID:l,referencedImageId:f,...C}};return on(S,o.element),Ne([o.id]),S};let RT=X0;class Pz extends hi{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]}}}}},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{hoverTimeout:100,searchRadius:6}}){super(e,r),this.mouseMoveCallback=n=>(this.hoverTimer&&clearTimeout(this.hoverTimer),this.hoverTimer=setTimeout(()=>{this._setHoveredSegment(n),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(ze.isInteractingWithTool)return;const{element:r,currentPoints:n}=e.detail,i=n.world,o=Ee(r);if(!o)return;const{viewport:a}=o,s=yu(a.id);s&&this._setHoveredSegmentForType(s,i,a)}_setHoveredSegmentForType(e,r,n){if(!n.getImageData())return;const{segmentationId:o}=e,a=N8(o,r,{viewport:n}),s=e.segments[a],c=s==null?void 0:s.label,l=n.worldToCanvas(r);if(this._editData={hoveredSegmentIndex:a,hoveredSegmentLabel:c,canvasCoordinates:l,worldPoint:r},!a||a===0)return;const u=n.getRenderingEngine().getViewports().map(d=>d.id);ns(o),Ne(u)}renderAnnotation(e,r){if(!this._editData)return;const{viewport:n}=e,{hoveredSegmentIndex:i,hoveredSegmentLabel:o,canvasCoordinates:a,worldPoint:s}=this._editData;if(!i)return;const c=n.worldToCanvas(s),l=ao(r,"segmentSelectLabelAnnotation","segmentSelectLabelTextBox",[o||"(unnamed segment)"],c,[a],{},{}),f=a[0],u=a[1],{width:d,height:h}=l;this.data.handles.textBox.worldBoundingBox={topLeft:n.canvasToWorld([f,u]),topRight:n.canvasToWorld([f+d,u]),bottomLeft:n.canvasToWorld([f,u+h]),bottomRight:n.canvasToWorld([f+d,u+h])}}}Pz.toolName="SegmentLabelTool";const Mo=class Mo extends ml{constructor(e={}){const r=Li({configuration:{calculateStats:!1,allowOpenContours:!1}},e);super(r),this.onViewportAddedToToolGroupBinded=this.onViewportAddedToToolGroup.bind(this),this.onSegmentationModifiedBinded=this.onSegmentationModified.bind(this)}initializeListeners(){Mo.annotationsToViewportMap.clear(),Mo.viewportIdsChecked=[],He.addEventListener(B.ANNOTATION_MODIFIED,this.annotationModified),He.addEventListener(B.ANNOTATION_COMPLETED,this.annotationCompleted),He.addEventListener(B.TOOLGROUP_VIEWPORT_ADDED,this.onViewportAddedToToolGroupBinded),He.addEventListener(B.SEGMENTATION_MODIFIED,this.onSegmentationModifiedBinded)}cleanUpListeners(){Mo.annotationsToViewportMap.clear(),Mo.viewportIdsChecked=[],He.removeEventListener(B.ANNOTATION_MODIFIED,this.annotationModified),He.removeEventListener(B.ANNOTATION_COMPLETED,this.annotationCompleted),He.removeEventListener(B.TOOLGROUP_VIEWPORT_ADDED,this.onViewportAddedToToolGroup.bind(this)),He.removeEventListener(B.SEGMENTATION_MODIFIED,this.onSegmentationModified.bind(this))}async checkContourSegmentation(e){if(Mo.viewportIdsChecked.includes(e))return;const r=Fd(e);if(!r)return console.log("No active segmentation detected"),!1;const n=r.segmentationId;return r.representationData.Contour?Mo.viewportIdsChecked.push(e):(Mo.viewportIdsChecked.push(e),await k8(e,[{segmentationId:n,type:Et.Contour}]),jE({segmentationId:n,type:Et.Contour,data:{}})),!0}onViewportAddedToToolGroup(e){const{toolGroupId:r,viewportId:n}=e.detail;r===this.toolGroupId&&this.checkContourSegmentation(n)}onSegmentationModified(e){const{segmentationId:r}=e.detail||{};if(!r)return;const n=wU(r);n&&n.forEach(async({viewportId:i})=>await this.checkContourSegmentation(i))}onSetToolEnabled(){this.initializeListeners()}onSetToolActive(){this.initializeListeners()}onSetToolDisabled(){this.cleanUpListeners()}annotationModified(e){var a;const{annotation:r,renderingEngineId:n,viewportId:i}=e.detail,o=(a=jr(n))==null?void 0:a.getViewport(i);o&&Mo.annotationsToViewportMap.set(r.annotationUID,o)}annotationCompleted(e){var i,o;const{annotation:r}=e.detail,{polyline:n}=((i=r.data)==null?void 0:i.contour)||{};if(((o=r==null?void 0:r.metadata)==null?void 0:o.toolName)===Mo.toolName&&n&&Mo.annotationsToViewportMap.has(r.annotationUID)){const a=Mo.annotationsToViewportMap.get(r.annotationUID);n.length>3&&sx.viewportContoursToLabelmap(a)}}};Mo.toolName="LabelMapEditWithContour",Mo.annotationsToViewportMap=new Map,Mo.viewportIdsChecked=[];let LT=Mo;const _b=class _b extends or{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=Ee(o),{viewport:c}=s;this.isDrawing=!0;const l=this.constructor.createAnnotationForViewport(c,{data:{handles:{points:[[...a],[...a],[...a],[...a]]}}});on(l,o);const f=Ct(o,this.getToolName(),!1);return this.editData={annotation:l,viewportUIDsToRender:f,handleIndex:3,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),Mt(o),r.preventDefault(),Ne(f),l},this.getHandleNearImagePoint=(r,n,i,o)=>{const a=Ee(r),{viewport:s}=a,{data:c}=n,{points:l}=c.handles;for(let f=0;f{const a=Ee(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:y}=d;if(s8([g,p,v,y],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=Ct(a,this.getToolName(),!1);this.editData={annotation:n,viewportUIDsToRender:c},this._activateModify(a),Mt(a),Ne(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=Ct(s,this.getToolName(),!1);this.editData={annotation:n,viewportUIDsToRender:f,handleIndex:l},this._activateModify(s),Mt(s),Ne(f),r.preventDefault()},this._endCallback=r=>{const n=r.detail,{element:i}=n,{annotation:o,viewportUIDsToRender:a,newAnnotation:s,hasMoved:c}=this.editData,{data:l}=o;s&&!c||(this.doneEditMemo(),l.active=!1,l.handles.activeHandleIndex=null,this._deactivateModify(i),this._deactivateDraw(i),jt(i),this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&fn(o.annotationUID),Ne(a))},this._dragCallback=r=>{this.isDrawing=!0;const n=r.detail,{element:i}=n,{annotation:o,viewportUIDsToRender:a,handleIndex:s,newAnnotation:c}=this.editData;this.createMemo(i,o,{newAnnotation:c});const{data:l}=o;if(s===void 0){const{deltaPoints:f}=n,u=f.world,{points:d}=l.handles;d.forEach(h=>{h[0]+=u[0],h[1]+=u[1],h[2]+=u[2]}),l.invalidated=!0}else{const{currentPoints:f}=n,u=Ee(i),{worldToCanvas:d,canvasToWorld:h}=u.viewport,g=f.world,{points:p}=l.handles;p[s]=[...g];let v,y,m,w,x,C,S,T;switch(s){case 0:case 3:v=d(p[0]),w=d(p[3]),y=[w[0],v[1]],m=[v[0],w[1]],C=h(y),S=h(m),p[1]=C,p[2]=S;break;case 1:case 2:y=d(p[1]),m=d(p[2]),v=[m[0],y[1]],w=[y[0],m[1]],x=h(v),T=h(w),p[0]=x,p[3]=T;break}l.invalidated=!0}this.editData.hasMoved=!0,Ee(i),Ne(a)},this._activateDraw=r=>{ze.isInteractingWithTool=!0,r.addEventListener(B.MOUSE_UP,this._endCallback),r.addEventListener(B.MOUSE_DRAG,this._dragCallback),r.addEventListener(B.MOUSE_MOVE,this._dragCallback),r.addEventListener(B.MOUSE_CLICK,this._endCallback),r.addEventListener(B.TOUCH_END,this._endCallback),r.addEventListener(B.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=r=>{ze.isInteractingWithTool=!1,r.removeEventListener(B.MOUSE_UP,this._endCallback),r.removeEventListener(B.MOUSE_DRAG,this._dragCallback),r.removeEventListener(B.MOUSE_MOVE,this._dragCallback),r.removeEventListener(B.MOUSE_CLICK,this._endCallback),r.removeEventListener(B.TOUCH_END,this._endCallback),r.removeEventListener(B.TOUCH_DRAG,this._dragCallback)},this._activateModify=r=>{ze.isInteractingWithTool=!0,r.addEventListener(B.MOUSE_UP,this._endCallback),r.addEventListener(B.MOUSE_DRAG,this._dragCallback),r.addEventListener(B.MOUSE_CLICK,this._endCallback),r.addEventListener(B.TOUCH_END,this._endCallback),r.addEventListener(B.TOUCH_DRAG,this._dragCallback)},this._deactivateModify=r=>{ze.isInteractingWithTool=!1,r.removeEventListener(B.MOUSE_UP,this._endCallback),r.removeEventListener(B.MOUSE_DRAG,this._dragCallback),r.removeEventListener(B.MOUSE_CLICK,this._endCallback),r.removeEventListener(B.TOUCH_END,this._endCallback),r.removeEventListener(B.TOUCH_DRAG,this._dragCallback)},this.renderAnnotation=(r,n)=>{const{viewport:o}=r,{element:a}=o;let s=cn(this.getToolName(),a);if(!(s!=null&&s.length)||(s=this.filterInteractableAnnotationsForElement(a,s),!(s!=null&&s.length)))return!1;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),y=this.getStyle("lineDash",c,f),m=this.getStyle("color",c,f);if(!o.getRenderingEngine()){console.warn("Rendering Engine has been destroyed");return}let w;!this.editData&&g!==null&&(w=[p[g]]),w&&nr(n,u,"0",w,{color:m}),eB(n,u,"0",p[0],p[3],{color:"black",lineDash:y,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 v=0;vfr(r,i)&&fr(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=zo(this._calculateCachedStats,100,{trailing:!0})}cancel(e){if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),jt(e);const{annotation:r,viewportUIDsToRender:n}=this.editData,{data:i}=r;return i.active=!1,i.handles.activeHandleIndex=null,Ne(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=ke.getVolume(e);return{imageVolume:n,viewport:i}}_getTargetStackUID(e){return`stackTarget:${e.uid}`}};_b.toolName="VideoRedaction";let AT=_b;const Rz=Object.freeze(Object.defineProperty({__proto__:null,AdvancedMagnifyTool:Xm,AngleTool:TT,AnnotationDisplayTool:Af,AnnotationTool:or,ArrowAnnotateTool:Ef,BaseTool:hi,BidirectionalTool:zm,BrushTool:sx,CONSTANTS:mwe,CircleROIStartEndThresholdTool:yz,CircleROITool:R5,CircleScissorsTool:mz,CobbAngleTool:_T,CrosshairsTool:qc,DragProbeTool:wT,ETDRSGridTool:xT,EllipticalROITool:zd,Enums:gF,EraserTool:hz,HeightTool:yT,KeyImageTool:OT,LabelMapEditWithContourTool:LT,LabelTool:P5,LabelmapBaseTool:Gd,LengthTool:_f,LivewireContourSegmentationTool:ST,LivewireContourTool:N5,MIPJumpToClickTool:rz,MagnifyTool:iz,OrientationMarkerTool:F5,OverlayGridTool:oz,PaintFillTool:wz,PanTool:uf,PlanarFreehandContourSegmentationTool:ml,PlanarFreehandROITool:Tf,PlanarRotateTool:Bh,ProbeTool:mu,RectangleROIStartEndThresholdTool:P8,RectangleROIThresholdTool:R8,RectangleROITool:pu,RectangleScissorsTool:pz,ReferenceCursors:Wa,ReferenceLinesTool:_d,RegionSegmentPlusTool:PT,RegionSegmentTool:MT,ScaleOverlayTool:lz,SculptorTool:Gh,SegmentBidirectionalTool:RT,SegmentLabelTool:Pz,SegmentSelectTool:U5,SegmentationIntersectionTool:az,SphereScissorsTool:vz,SplineContourSegmentationTool:CT,SplineROITool:L5,StackScrollTool:Wd,Synchronizer:D8,SynchronizerManager:pG,ToolGroupManager:OF,TrackballRotateTool:tz,Types:WSe,UltrasoundDirectionalTool:ET,UltrasoundPleuraBLineTool:IT,VideoRedactionTool:AT,VolumeRotateTool:fz,WholeBodySegmentTool:gz,WindowLevelRegionTool:nz,WindowLevelTool:Uh,ZoomTool:Jl,addTool:Mi,annotation:yye,cancelActiveManipulations:gG,cursors:mpe,destroy:hwe,drawing:G1e,init:mG,removeTool:kF,segmentation:cTe,splines:hTe,get state(){return ze},store:dwe,synchronizers:Vwe,utilities:GSe,version:vwe},Symbol.toStringTag,{value:"Module"}));function Lz(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 r3(t,e,r){const n=t[`${e}PaletteColorLookupTableData`];if(n)return Promise.resolve(n);const i=lt("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 Vz(t,e,r){const n=t.columns*t.rows,i=t.pixelData;Promise.all([r3(t,"red",null),r3(t,"green",null),r3(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=n3(o,d),g=n3(a,d),p=n3(s,d);if(r){for(let v=0;vu+c-1?y=c-1:y-=u,e[f++]=h[y],e[f++]=g[y],e[f++]=p[y],e[f++]=255}return}for(let v=0;vu+c-1?y=c-1:y-=u,e[f++]=h[y],e[f++]=g[y],e[f++]=p[y]}})}function i3(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 o3(t,e,r){const n=[],i=t.elements[e];for(let o=0;o0?0:t.uint16("x00280103")}function Sc(t,e,r){const n=[],i=t.string(e);if(!i)return;const o=i.split("\\");if(!(r&&o.lengthce.byteArray.length-ce.position&&(vt=ce.byteArray.length-ce.position),fe.fragments.push({offset:ce.position-de-8,position:ce.position,length:vt}),ce.seek(vt),void(fe.length=ce.position-fe.dataOffset);fe.fragments.push({offset:ce.position-de-8,position:ce.position,length:vt}),ce.seek(vt)}Se&&Se.push("pixel data element ".concat(fe.tag," missing sequence delimiter tag xfffee0dd"))}function T(ce,fe){if(ce===void 0)throw"dicomParser.findAndSetUNElementLength: missing required parameter 'byteStream'";for(var Se=ce.byteArray.length-8;ce.position<=Se;)if(ce.readUint16()===65534){var he=ce.readUint16();if(he===57565)return ce.readUint32()!==0&&ce.warnings("encountered non zero length following item delimiter at position ".concat(ce.position-4," while reading element of undefined length with tag ").concat(fe.tag)),void(fe.length=ce.position-fe.dataOffset)}fe.length=ce.byteArray.length-fe.dataOffset,ce.seek(ce.byteArray.length-ce.position)}function _(ce,fe,Se){if(Se<0)throw"dicomParser.readFixedString - length cannot be less than 0";if(fe+Se>ce.length)throw"dicomParser.readFixedString: attempt to read past end of buffer";for(var he,xe="",qe=0;qefe.byteArray.length)throw"dicomParser.parseDicomDataSetExplicit: invalid value for parameter 'maxP osition'";for(var xe=ce.elements;fe.positionSe)throw"dicomParser:parseDicomDataSetExplicit: buffer overrun"}function le(ce,fe,Se){var he=3fe.byteArray.length)throw"dicomParser.parseDicomDataSetImplicit: invalid value for parameter 'maxPosition'";for(var xe=ce.elements;fe.positionce.length)throw"bigEndianByteArrayParser.readUint16: attempt to read past end of buffer";return(ce[fe]<<8)+ce[fe+1]},readInt16:function(ce,fe){if(fe<0)throw"bigEndianByteArrayParser.readInt16: position cannot be less than 0";if(fe+2>ce.length)throw"bigEndianByteArrayParser.readInt16: attempt to read past end of buffer";return fe=(ce[fe]<<8)+ce[fe+1],fe=32768&fe?fe-65535-1:fe},readUint32:function(ce,fe){if(fe<0)throw"bigEndianByteArrayParser.readUint32: position cannot be less than 0";if(fe+4>ce.length)throw"bigEndianByteArrayParser.readUint32: attempt to read past end of buffer";return 256*(256*(256*ce[fe]+ce[fe+1])+ce[fe+2])+ce[fe+3]},readInt32:function(ce,fe){if(fe<0)throw"bigEndianByteArrayParser.readInt32: position cannot be less than 0";if(fe+4>ce.length)throw"bigEndianByteArrayParser.readInt32: attempt to read past end of buffer";return(ce[fe]<<24)+(ce[fe+1]<<16)+(ce[fe+2]<<8)+ce[fe+3]},readFloat:function(ce,fe){if(fe<0)throw"bigEndianByteArrayParser.readFloat: position cannot be less than 0";if(fe+4>ce.length)throw"bigEndianByteArrayParser.readFloat: attempt to read past end of buffer";var Se=new Uint8Array(4);return Se[3]=ce[fe],Se[2]=ce[fe+1],Se[1]=ce[fe+2],Se[0]=ce[fe+3],new Float32Array(Se.buffer)[0]},readDouble:function(ce,fe){if(fe<0)throw"bigEndianByteArrayParser.readDouble: position cannot be less than 0";if(fe+8>ce.length)throw"bigEndianByteArrayParser.readDouble: attempt to read past end of buffer";var Se=new Uint8Array(8);return Se[7]=ce[fe],Se[6]=ce[fe+1],Se[5]=ce[fe+2],Se[4]=ce[fe+3],Se[3]=ce[fe+4],Se[2]=ce[fe+5],Se[1]=ce[fe+6],Se[0]=ce[fe+7],new Float64Array(Se.buffer)[0]}};function Ie(ce,fe,Se){if(typeof Buffer<"u"&&ce instanceof Buffer)return ce.slice(fe,fe+Se);if(ce instanceof Uint8Array)return new Uint8Array(ce.buffer,ce.byteOffset+fe,Se);throw"dicomParser.from: unknown type for byteArray"}function Le(ce,fe){for(var Se=0;Se"u"||!(xe instanceof Buffer)))throw"dicomParser.ByteStream: parameter byteArray is not of type Uint8Array or Buffer";if(qe<0)throw"dicomParser.ByteStream: parameter 'position' cannot be less than 0";if(qe>=xe.length)throw"dicomParser.ByteStream: parameter 'position' cannot be greater than or equal to 'byteArray' length";this.byteArrayParser=he,this.byteArray=xe,this.position=qe||0,this.warnings=[]}var fe,Se;return fe=ce,(Se=[{key:"seek",value:function(he){if(this.position+he<0)throw"dicomParser.ByteStream.prototype.seek: cannot seek to position < 0";this.position+=he}},{key:"readByteStream",value:function(he){if(this.position+he>this.byteArray.length)throw"dicomParser.ByteStream.prototype.readByteStream: readByteStream - buffer overread";var xe=Ie(this.byteArray,this.position,he);return this.position+=he,new ce(this.byteArrayParser,xe)}},{key:"getSize",value:function(){return this.byteArray.length}},{key:"readUint16",value:function(){var he=this.byteArrayParser.readUint16(this.byteArray,this.position);return this.position+=2,he}},{key:"readUint32",value:function(){var he=this.byteArrayParser.readUint32(this.byteArray,this.position);return this.position+=4,he}},{key:"readFixedString",value:function(he){var xe=_(this.byteArray,this.position,he);return this.position+=he,xe}}])&&Le(fe.prototype,Se),Object.defineProperty(fe,"prototype",{writable:!1}),ce}(),$={readUint16:function(ce,fe){if(fe<0)throw"littleEndianByteArrayParser.readUint16: position cannot be less than 0";if(fe+2>ce.length)throw"littleEndianByteArrayParser.readUint16: attempt to read past end of buffer";return ce[fe]+256*ce[fe+1]},readInt16:function(ce,fe){if(fe<0)throw"littleEndianByteArrayParser.readInt16: position cannot be less than 0";if(fe+2>ce.length)throw"littleEndianByteArrayParser.readInt16: attempt to read past end of buffer";return fe=ce[fe]+(ce[fe+1]<<8),fe=32768&fe?fe-65535-1:fe},readUint32:function(ce,fe){if(fe<0)throw"littleEndianByteArrayParser.readUint32: position cannot be less than 0";if(fe+4>ce.length)throw"littleEndianByteArrayParser.readUint32: attempt to read past end of buffer";return ce[fe]+256*ce[fe+1]+256*ce[fe+2]*256+256*ce[fe+3]*256*256},readInt32:function(ce,fe){if(fe<0)throw"littleEndianByteArrayParser.readInt32: position cannot be less than 0";if(fe+4>ce.length)throw"littleEndianByteArrayParser.readInt32: attempt to read past end of buffer";return ce[fe]+(ce[fe+1]<<8)+(ce[fe+2]<<16)+(ce[fe+3]<<24)},readFloat:function(ce,fe){if(fe<0)throw"littleEndianByteArrayParser.readFloat: position cannot be less than 0";if(fe+4>ce.length)throw"littleEndianByteArrayParser.readFloat: attempt to read past end of buffer";var Se=new Uint8Array(4);return Se[0]=ce[fe],Se[1]=ce[fe+1],Se[2]=ce[fe+2],Se[3]=ce[fe+3],new Float32Array(Se.buffer)[0]},readDouble:function(ce,fe){if(fe<0)throw"littleEndianByteArrayParser.readDouble: position cannot be less than 0";if(fe+8>ce.length)throw"littleEndianByteArrayParser.readDouble: attempt to read past end of buffer";var Se=new Uint8Array(8);return Se[0]=ce[fe],Se[1]=ce[fe+1],Se[2]=ce[fe+2],Se[3]=ce[fe+3],Se[4]=ce[fe+4],Se[5]=ce[fe+5],Se[6]=ce[fe+6],Se[7]=ce[fe+7],new Float64Array(Se.buffer)[0]}};function R(ce){var fe=1"u")throw"dicomParser.parseDicom: no inflater available to handle deflate transfer syntax";return it=ce.slice(Me),rt=pako.inflateRaw(it),(it=ve(ce,rt.length+Me)).set(ce.slice(0,Me),0),it.set(rt,Me),new be($,it,0)}(ht,vt.position),vt=new D(ht.byteArrayParser,ht.byteArray,{});vt.warnings=ht.warnings;try{(de?te:le)(vt,ht,ht.byteArray.length,fe)}catch(gt){throw{exception:gt,dataSet:vt}}return vt}return function(qe,de){for(var ht in qe.elements)qe.elements.hasOwnProperty(ht)&&(de.elements[ht]=qe.elements[ht]);return qe.warnings!==void 0&&(de.warnings=qe.warnings.concat(de.warnings)),de}(Se=R(ce,fe),xe(Se))}var Z=function(ce,fe,Se){for(var he=0,xe=fe;xe= 0";if(Se>=de.fragments.length)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragmentIndex' must be < number of fragments";if(he<1)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'numFragments' must be > 0";if(Se+he>de.fragments.length)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragment' + 'numFragments' < number of fragments";var qe=new be(ce.byteArrayParser,ce.byteArray,de.dataOffset),de=k(qe);if(de.tag!=="xfffee000")throw"dicomParser.readEncapsulatedPixelData: missing basic offset table xfffee000";qe.seek(de.length);var ht=qe.position;if(he===1)return Ie(qe.byteArray,ht+xe[Se].offset+8,xe[Se].length);for(var de=Z(xe,Se,he),vt=ve(qe.byteArray,de),gt=0,Me=Se;Me= 0";if(Se>=he.length)throw"dicomParser.readEncapsulatedImageFrame: parameter 'frameIndex' must be < basicOffsetTable.length";var qe=he[Se],qe=oe(xe,qe);if(qe===void 0)throw"dicomParser.readEncapsulatedImageFrame: unable to find fragment that matches basic offset table entry";return ie(ce,fe,qe,Te(Se,he,xe,qe),xe)}var Ve=!1;function Ge(ce,fe,Se){if(Ve||(Ve=!0,console&&console.log&&console.log("WARNING: dicomParser.readEncapsulatedPixelData() has been deprecated")),ce===void 0)throw"dicomParser.readEncapsulatedPixelData: missing required parameter 'dataSet'";if(fe===void 0)throw"dicomParser.readEncapsulatedPixelData: missing required parameter 'element'";if(Se===void 0)throw"dicomParser.readEncapsulatedPixelData: missing required parameter 'frame'";if(fe.tag!=="x7fe00010")throw"dicomParser.readEncapsulatedPixelData: parameter 'element' refers to non pixel data tag (expected tag = x7fe00010)";if(fe.encapsulatedPixelData!==!0||fe.hadUndefinedLength!==!0||fe.basicOffsetTable===void 0||fe.fragments===void 0)throw"dicomParser.readEncapsulatedPixelData: parameter 'element' refers to pixel data element that does not have encapsulated pixel data";if(Se<0)throw"dicomParser.readEncapsulatedPixelData: parameter 'frame' must be >= 0";return fe.basicOffsetTable.length!==0?Oe(ce,fe,Se):ie(ce,fe,0,fe.fragments.length)}s.default={isStringVr:f,isPrivateTag:u,parsePN:d,parseTM:h,parseDA:p,explicitElementToString:v,explicitDataSetToJS:y,createJPEGBasicOffsetTable:x,parseDicomDataSetExplicit:te,parseDicomDataSetImplicit:le,readFixedString:_,alloc:ve,version:pe,bigEndianByteArrayParser:ye,ByteStream:be,sharedCopy:Ie,DataSet:D,findAndSetUNElementLength:T,findEndOfEncapsulatedElement:S,findItemDelimitationItemAndSetElementLength:O,littleEndianByteArrayParser:$,parseDicom:K,readDicomElementExplicit:J,readDicomElementImplicit:P,readEncapsulatedImageFrame:Oe,readEncapsulatedPixelData:Ge,readEncapsulatedPixelDataFromFragments:ie,readPart10Header:R,readSequenceItemsExplicit:U,readSequenceItemsImplicit:j,readSequenceItem:k,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})})(Bz);var wr=Bz.exports;function U1(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 kT={open(t,e){t.open("get",e,!0)},beforeSend(){},beforeProcessing(t){return Promise.resolve(t.response)},imageCreated(){},strict:!1};function Gz(t){kT=Object.assign(kT,t)}function B1(){return kT}function ux(t,e,r={},n={}){const i=B1(),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),nt(He,"cornerstoneimageloadstart",{url:t,imageId:e})},a.onloadend=function(d){i.onloadend&&i.onloadend(d,n),nt(He,"cornerstoneimageloadend",{url:t,imageId:e})},a.onreadystatechange=function(d){i.onreadystatechange&&i.onreadystatechange(d,n),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){const h=d.loaded;let g,p;d.lengthComputable&&(g=d.total,p=Math.round(h/g*100)),nt(He,"cornerstoneimageloadprogress",{url:t,imageId:e,loaded:h,total:g,percentComplete:p}),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 j_e(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 X8e("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 y=v.body.getReader(),m=v.headers,w=m.get("content-type"),x=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 y.read();if(S=q8e(S,E),!S){if(C)throw new Error(`Done but no image frame available ${e}`);continue}if(C=_||S.byteLength===x,!C&&S.lengthr-i&&(console.log(`Truncated fragment, changing fragment length from ${n.length} to ${r-i}`),n.length=r-i)}return t}function Z8e(t){let e=br.parseDicom(t,{untilTag:"x7fe00010"});e.elements.x7fe00010||console.warn("Pixel data not found!");let r;try{r=br.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=J8e(e),e}async function zj(t,e,r){const n=Z8e(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),zj(h,e,r)},n}function Q8e(t,e){if(!t)return;const{NumberOfFrames:r,PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:i}=Hj(t);if(n||r>1){const{shared:o,perFrame:a}=jj(n,i,e);return{NumberOfFrames:r,PerFrameFunctionalInformation:a,SharedFunctionalInformation:o}}return{NumberOfFrames:r}}function jj(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 Hj(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 ebe(t,e){if(!e)return;const{NumberOfFrames:r,PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:i,otherElements:o}=Hj(e);if(n||r>1){const{shared:a,perFrame:s}=jj(n,i,t),c={elements:{...o,...a,...s}},l=Object.create(e);return Object.assign(l,c)}return e}let ro={};const tbe=()=>{ro={}};function lD(t){if(ro[t])return ro[t]}function nbe(t){const e=lD(t);return Kj(e)}function Kj(t){if(!t)return!1;const e=t.intString("x00280008");return e&&e>1}function rbe(t){return t.indexOf("&frame=")}function ibe(t){const e=rbe(t),r=e===-1?t:t.slice(0,e),n=parseInt(t.slice(e+7),10)||1;let i;return ro[r]?i=ro[r].dataSet:i=void 0,{dataSet:i,frame:n}}function obe(t){const e=[],r=lD(t);if(Kj(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 Xj={_get:lD,generateMultiframeWADOURIs:obe,retrieveMultiframeDataset:ibe,isMultiframeDataset:nbe};let Tg=0,xd={};function abe(t){return ro[t]!==void 0}function sbe(t){let e;if(t.includes("&frame=")){const{frame:r,dataSet:n}=Xj.retrieveMultiframeDataset(t);e=ebe(r,n)}else ro[t]&&(e=ro[t].dataSet);return e}function cbe(t,e){const r=ro[t];if(!r){console.error(`No loaded dataSet for uri ${t}`);return}Tg-=r.dataSet.byteArray.length,r.dataSet=e,Tg+=e.byteArray.length,nt(ze,"datasetscachechanged",{uri:t,action:"updated",cacheInfo:Zx()})}function lbe(t,e=Jx,r){if(ro[t])return new Promise(o=>{ro[t].cacheCount++,o(ro[t].dataSet)});if(xd[t])return xd[t].cacheCount++,xd[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 zj(l,e,{uri:t,imageId:r,fileTotalLength:c.fileTotalLength}):f=br.parseDicom(l)}catch(u){return a(u)}ro[t]={dataSet:f,cacheCount:i.cacheCount},Tg+=f.byteArray.length,o(f),nt(ze,"datasetscachechanged",{uri:t,action:"loaded",cacheInfo:Zx()})},a).then(()=>{delete xd[t]},()=>{delete xd[t]})});return i.cacheCount=1,xd[t]=i,i}function ube(t){ro[t]&&(ro[t].cacheCount--,ro[t].cacheCount===0&&(Tg-=ro[t].dataSet.byteArray.length,delete ro[t],nt(ze,"datasetscachechanged",{uri:t,action:"unloaded",cacheInfo:Zx()})))}function Zx(){return{cacheSizeInBytes:Tg,numberOfDataSetsCached:Object.keys(ro).length}}function fbe(){tbe(),xd={},Tg=0}const Kh={isLoaded:abe,load:lbe,unload:ube,getInfo:Zx,purge:fbe,get:sbe,update:cbe};function dbe(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 np(t){return t==="RECON TOMO"||t==="RECON GATED TOMO"}function uD(t,e){const r=t.string("x00080008");if(r){const n=r.split("\\");if(n.length>e)return n[e]}}function hbe(t){let e;const r=t.string("x00080060");if(r!=null&&r.includes("NM")){const n=uD(t,2);n&&np(n)&&t.elements.x00540022&&(e=kc(t.elements.x00540022.items[0].dataSet,"x00200037",6))}return e}function gbe(t){let e;const r=t.string("x00080060");if(r!=null&&r.includes("NM")){const n=uD(t,2);n&&np(n)&&t.elements.x00540022&&(e=kc(t.elements.x00540022.items[0].dataSet,"x00200032",3))}return e}function YM(t){let e=kc(t,"x00200037",6);return!e&&t.elements.x00209116&&(e=kc(t.elements.x00209116.items[0].dataSet,"x00200037",6)),e||(e=hbe(t)),e}function JM(t){let e=kc(t,"x00200032",3);return!e&&t.elements.x00209113&&(e=kc(t.elements.x00209113.items[0].dataSet,"x00200032",3)),e||(e=gbe(t)),e}function ZM(t){let e=kc(t,"x00280030",2);return!e&&t.elements.x00289110&&(e=kc(t.elements.x00289110.items[0].dataSet,"x00280030",2)),e}function QM(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 qj(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=pbe(s);a[c]=o[s]}Object.assign(n,a)}}catch(o){console.error(`Error retrieving ${i} data:`,o)}return n}const pbe=t=>t.charAt(0).toUpperCase()+t.slice(1),Yj=["multiframeModule","generalSeriesModule","patientStudyModule","imagePlaneModule","nmMultiframeGeometryModule","imagePixelModule","modalityLutModule","voiLutModule","sopCommonModule","petIsotopeModule","overlayPlaneModule","transferSyntax","petSeriesModule","petImageModule"];function eO(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"),y=n.dataSet.uint16("x00186014"),m=n.dataSet.uint16("x00186016"),w=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:y,regionFlags:m,transducerFrequency:w}})}function fD(t,e){const{MetadataModules:r}=ka;if(Array.isArray(e))return;const n=Ev(e);if(t===r.MULTIFRAME){const a=Xj.retrieveMultiframeDataset(n.url);return a.dataSet?Q8e(a.dataSet,a.frame):void 0}let i=n.url;n.frame&&(i=`${i}&frame=${n.frame}`);const o=Kh.get(i);if(o)return Jj(t,e,o)}function Jj(t,e,r){const{MetadataModules:n}=ka;if(t===n.GENERAL_STUDY)return{studyDescription:r.string("x00081030"),studyDate:br.parseDA(r.string("x00080020")),studyTime:br.parseTM(r.string("x00080030")||""),accessionNumber:r.string("x00080050")};if(t===n.GENERAL_SERIES)return{modality:r.string("x00080060"),seriesInstanceUID:r.string("x0020000e"),seriesDescription:r.string("x0008103e"),seriesNumber:r.intString("x00200011"),studyInstanceUID:r.string("x0020000d"),seriesDate:br.parseDA(r.string("x00080021")),seriesTime:br.parseTM(r.string("x00080031")||""),acquisitionDate:br.parseDA(r.string("x00080022")),acquisitionTime:br.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=uD(r,2);return{modality:i,imageType:r.string("x00080008"),imageSubType:o,imageOrientationPatient:YM(r),imagePositionPatient:JM(r),sliceThickness:QM(r),pixelSpacing:ZM(r),numberOfFrames:r.uint16("x00280008"),isNMReconstructable:np(o)&&i.includes("NM")}}if(t===n.IMAGE_PLANE){const i=YM(r),o=JM(r),a=ZM(r),s=QM(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 Uj(r);if(t===n.VOI_LUT){const i=Bj(r);return{windowCenter:kc(r,"x00281050",1),windowWidth:kc(r,"x00281051",1),voiLUTSequence:H_(i,r.elements.x00283010),voiLUTFunction:r.string("x00281056")}}if(t===n.MODALITY_LUT)return{rescaleIntercept:r.floatString("x00281052"),rescaleSlope:r.floatString("x00281053"),rescaleType:r.string("x00281054"),modalityLUTSequence:H_(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:br.parseTM(o.string("x00181072")||""),radionuclideTotalDose:o.floatString("x00181074"),radionuclideHalfLife:o.floatString("x00181075")}}}if(t===n.OVERLAY_PLANE)return dbe(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 eO(r);if(t===n.CALIBRATION&&r.string("x00080060")==="US")return{sequenceOfUltrasoundRegions:eO(r)};if(t==="instance")return qj(e,fD,Yj)}let Qx=[];function mbe(t){return`dicomfile:${Qx.push(t)-1}`}function vbe(t){return Qx[t]}function ybe(t){Qx[t]=void 0}function wbe(){Qx=[]}const Zj={add:mbe,get:vbe,remove:ybe,purge:wbe};function xbe(t){const e=t.intString("x00280008"),r=t.elements.x7fe00010;return e!==r.fragments.length}function Qj(t,e){if(t.elements.x7fe00010&&t.elements.x7fe00010.basicOffsetTable.length)return br.readEncapsulatedImageFrame(t,t.elements.x7fe00010,e);if(xbe(t)){const l=br.createJPEGBasicOffsetTable(t,t.elements.x7fe00010);return br.readEncapsulatedImageFrame(t,t.elements.x7fe00010,e,l)}const r=t.elements.x7fe00010.fragments,n=new br.ByteStream(t.byteArrayParser,t.byteArray,t.elements.x7fe00010.dataOffset),i=br.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 Cbe(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 eH(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 nH(t){const e=Ev(t),r=parseInt(e.url,10),n=Zj.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 dD(t,e=0){const r=t.elements.x7fe00010||t.elements.x7fe00008;return r?r.encapsulatedPixelData?Qj(t,e):tH(t,e):null}function eC(t){let e=t[0],r=t[0],n;const i=t.length;for(let o=1;o{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=eC(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(_be(s.result))}`:c.src=`data:image/jpeg;base64,${window.btoa(s.result)}`},s.onerror=c=>{a(c)}})}function _a(t,e,r,n,i){const o={...n};delete o.loader,delete o.streamingData;const a=Fl(),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 bbe(t,e,r,n,i={},o){switch(e){case"1.2.840.10008.1.2":return _a(t,e,r,i,o);case"1.2.840.10008.1.2.1":return _a(t,e,r,i,o);case"1.2.840.10008.1.2.2":return _a(t,e,r,i,o);case"1.2.840.10008.1.2.1.99":return _a(t,e,r,i,o);case"1.2.840.10008.1.2.5":return _a(t,e,r,i,o);case"1.2.840.10008.1.2.4.50":return t.bitsAllocated===8&&(t.samplesPerPixel===3||t.samplesPerPixel===4)?iH(t,r,n):_a(t,e,r,i,o);case"1.2.840.10008.1.2.4.51":return _a(t,e,r,i,o);case"1.2.840.10008.1.2.4.57":return _a(t,e,r,i,o);case"1.2.840.10008.1.2.4.70":return _a(t,e,r,i,o);case"1.2.840.10008.1.2.4.80":return _a(t,e,r,i,o);case"1.2.840.10008.1.2.4.81":return _a(t,e,r,i,o);case"1.2.840.10008.1.2.4.90":return _a(t,e,r,i,o);case"1.2.840.10008.1.2.4.91":return _a(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 _a(t,e,r,i,o)}return Promise.reject(new Error(`No decoder for transfer syntax ${e}`))}function oH(t){const e=ut("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 Dbe(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},...i==="RTDOSE"&&{doseGridScaling:a.DoseGridScaling,doseSummation:a.DoseSummation,doseType:a.DoseType,doseUnit:a.DoseUnit}}}function hD(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"}function Ibe(t,e){const r=t.length/4;let n=0,i=0;for(let o=0;o=0?e<=255?r=Uint8Array:e<=65535?r=Uint16Array:e<=4294967295&&(r=Uint32Array):t>=-128&&e<=127?r=Int8Array:t>=-32768&&e<=32767&&(r=Int16Array)),r||Float32Array}function Obe(t,e,r){return gD(t,e)===r}function Pbe(t){const e=t.smallestPixelValue,r=t.largestPixelValue,n=gD(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")}let tO="";function tC(t,e,r,n={}){const i=n.useRGBA;if(n.preScale={enabled:n.preScale&&n.preScale.enabled!==void 0?n.preScale.enabled:!0},!(e!=null&&e.length))return Promise.reject(new Error("The pixel data is missing"));const{MetadataModules:o}=ka,a=document.createElement("canvas"),s=oH(t);if(s.decodeLevel=n.decodeLevel,n.allowFloatRendering=$w(),n.preScale.enabled){const u=Dbe(o8,t);u&&(n.preScale={...n.preScale,scalingParameters:u})}const{decodeConfig:c}=bv();Object.keys(s).forEach(u=>{(typeof s[u]=="function"||s[u]instanceof Promise)&&delete s[u]});const l=bbe(s,r,e,a,n,c),f=hD(s.photometricInterpretation);return new Promise((u,d)=>{l.then(function(h){let g=!1;if(n.targetBuffer&&n.targetBuffer.type&&!f){const{arrayBuffer:E,type:b,offset:D=0,length:I}=n.targetBuffer,P=h.pixelDataLength,M=D,L=I??P-M,B={Uint8Array,Uint16Array,Int16Array,Float32Array,Uint32Array};if(L!==h.pixelDataLength)throw new Error(`target array for image does not have the same length (${L}) as the decoded image length (${h.pixelDataLength}).`);const j=B[b],V=E?new j(E,M,L):new j(h.pixelData);if(L!==h.pixelDataLength)throw new Error("target array for image does not have the same length as the decoded image length.");h.pixelData=V,g=!0}g||Pbe(h);const p=ut(o.IMAGE_PLANE,t)||{},v=ut(o.VOI_LUT,t)||{},y=ut(o.MODALITY_LUT,t)||{},m=ut(o.SOP_COMMON,t)||{},w=ut(o.CALIBRATION,t)||{},{rows:x,columns:C}=h;if(f){if(Tbe(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)}),rH(h,D.data,i),h.imageData=D,h.pixelData=D.data,h.pixelDataLength=D.data.length}else if(!i&&h.pixelDataLength===4*x*C){const b=new Uint8Array(h.pixelData.length/4*3);h.pixelData=Ibe(h.pixelData,b),h.pixelDataLength=h.pixelData.length}const E=eC(h.pixelData);h.smallestPixelValue=E.min,h.largestPixelValue=E.max}let S=h.samplesPerPixel;h.photometricInterpretation==="PALETTE COLOR"&&(S=i?4:3);const T=Rc.createImageVoxelManager({scalarData:h.pixelData,width:h.columns,height:h.rows,numberOfComponents:S}),_={imageId:t,dataType:h.pixelData.constructor.name,color:f,calibration:w,columnPixelSpacing:p.columnPixelSpacing,columns:h.columns,height:h.rows,preScale:h.preScale,intercept:y.rescaleIntercept?y.rescaleIntercept:0,slope:y.rescaleSlope?y.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:T,rgba:f&&i,getPixelData:()=>h.pixelData,getCanvas:void 0,numberOfComponents:S};if(_.color&&(_.getCanvas=function(){if(tO===t)return a;const E=_.columns,b=_.rows;a.height=b,a.width=E;const D=a.getContext("2d"),I=D.createImageData(E,b),P=h.pixelData;if(P.length===E*b*4)for(let M=0;M0&&Mbe(m.sopClassUID)&&(_.modalityLUT=y.modalityLUTSequence[0]),v.voiLUTSequence&&v.voiLUTSequence.length>0&&(_.voiLUT=v.voiLUTSequence[0]),_.color&&(_.windowWidth=256,_.windowCenter=128),_.windowCenter===void 0||_.windowWidth===void 0){const E=Rg(_.imageFrame.smallestPixelValue,_.imageFrame.largestPixelValue);_.windowWidth=E.windowWidth,_.windowCenter=E.windowCenter}u(_)},d)})}const{ImageQualityStatus:aH}=ka;function Rbe(t,e){t.decache=function(){const r=Ev(e);Kh.unload(r.url)}}function sH(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=dD(f,r),d=f.string("x00020010"),h=new Date().getTime(),g=tC(e,u,d,i);Rbe(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,p.imageQualityStatus=aH.FULL_RESOLUTION,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 Abe(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=dD(t,r),d=t.string("x00020010");f=tC(e,u,d,i)}catch(u){c({error:u,dataSet:t});return}f.then(u=>{u=u,u.data=t;const d=new Date().getTime();u.loadTimeInMS=l-o,u.totalTimeInMS=d-o,u.imageQualityStatus=aH.FULL_RESOLUTION,s(u)},c)}),cancelFn:void 0}}function cH(t){if(t==="dicomweb"||t==="wadouri")return Jx;if(t==="dicomfile")return nH}function Ay(t,e={}){const r=Ev(t);e=Object.assign({},e),delete e.loader;const n=cH(r.scheme);if(Kh.isLoaded(r.url)){const o=Kh.get(r.url,n,t);return Abe(o,t,r.pixelDataFrame,r.url,e)}const i=Kh.load(r.url,n,t);return sH(i,t,r.frame,r.url,e)}function lH(){zd("dicomweb",Ay),zd("wadouri",Ay),zd("dicomfile",Ay),Ng(fD)}const Lbe={getImagePixelModule:Uj,getLUTs:H_,getModalityLUTOutputPixelRepresentation:Bj,getNumberValues:kc,metaDataProvider:fD,metadataForDataset:Jj},Nbe={metaData:Lbe,dataSetCacheManager:Kh,fileManager:Zj,getEncapsulatedImageFrame:Qj,getUncompressedImageFrame:tH,loadFileRequest:nH,loadImageFromPromise:sH,getLoaderForScheme:cH,getPixelData:dD,loadImage:Ay,parseImageId:Ev,unpackBinaryFrame:eH,register:lH};function sn(t,e,r){return e=e||0,!t||!t.Value||Array.isArray(t.Value)&&t.Value.length<=e?r:t.Value[e]}function kbe(t,e,r){const n=sn(t,e,r);if(n!==void 0)return parseFloat(String(n))}function Zn(t,e){const r=sn(t,e);if(r!==void 0)return parseFloat(r)}function zo(t,e){if(!t||!t.Value||!Array.isArray(t.Value)||e&&t.Value.length>s&1}e.push({rows:Zn(t[`${n}0010`]),columns:Zn(t[`${n}0011`]),type:sn(t[`${n}0040`]),x:Zn(t[`${n}0050`],1)-1,y:Zn(t[`${n}0050`],0)-1,pixelData:o,description:sn(t[`${n}0022`]),label:sn(t[`${n}1500`]),roiArea:sn(t[`${n}1301`]),roiMean:sn(t[`${n}1302`]),roiStandardDeviation:sn(t[`${n}1303`])})}return{overlays:e}}function nC(t){const e=t.indexOf(":");return t.substring(e+1)}function Xh(t,e=!0){return t&&t.Value?t.Value[0]&&e?t.Value[0]:t.Value:t}function uH(t,e,r){const n=(e?Object.values(e[0]):[]).map(o=>{var a;return(a=o.Value)==null?void 0:a[0]}).filter(o=>o!==void 0&&typeof o=="object"),i=(t?Object.values(t[r-1]):[]).map(o=>{var a;return(a=o.Value)==null?void 0:a[0]}).filter(o=>o!==void 0&&typeof o=="object");return{shared:n,perFrame:i}}function fH(t){let{52009230:e,52009229:r,"00280008":n,...i}=t;return e=Xh(e,!1),r=Xh(r,!1),n=Xh(n),{PerFrameFunctionalGroupsSequence:e,SharedFunctionalGroupsSequence:r,NumberOfFrames:n,rest:i}}function Fbe(t,e){const{PerFrameFunctionalGroupsSequence:r,SharedFunctionalGroupsSequence:n,NumberOfFrames:i,rest:o}=fH(e);if(r||i>1){const{shared:a,perFrame:s}=uH(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 Dv=[],bw={};function dH(t){const e=t.indexOf("/frames/")+8,r=t.slice(0,e),n=parseInt(t.slice(e),10);return{metadata:Dv[`${r}1`],frame:n}}function Ube(t){const e=nC(t);return dH(e)}function Bbe(t){if(t[52009230]!==void 0||t[52009229]!==void 0)return!0;const e=sn(t["00280008"]);return e&&e>1}function Gbe(t,e){const r=nC(t);Object.defineProperty(e,"isMultiframe",{value:Bbe(e),enumerable:!1}),Dv[r]=e}function Wbe(t){const e=nC(t),r=Dv[e];if(r&&!(r!=null&&r.isMultiframe))return r;const n=bw[e];if(n)return n;const i=dH(e);if(!i||!i.metadata)return;const{metadata:o,frame:a}=i;if(o){const s=Fbe(a,o);return bw[e]=s,s}}function $be(t){const e=nC(t);Dv[e]=void 0,bw[e]=void 0}function zbe(){Dv=[],bw={}}const pD={add:Gbe,get:Wbe,remove:$be,purge:zbe};function hH(t){return sn(t["00080060"]).includes("NM")}function mD(t,e){const r=Xh(t["00080008"],!1);if(r)return r[e]}function jbe(t){let e;const r=mD(t,2);if(r&&np(r)){const n=Xh(t["00540022"]);n&&(e=zo(n["00200037"],6))}return e}function Hbe(t){let e;const r=mD(t,2);if(r&&np(r)){const n=Xh(t["00540022"]);n&&(e=zo(n["00200032"],3))}return e}function nO(t){let e=zo(t["00200037"],6);return!e&&hH(t)&&(e=jbe(t)),e}function rO(t){let e=zo(t["00200032"],3);return!e&&hH(t)&&(e=Hbe(t)),e}function Bo(t,e){const r=zo(t[e]);return r?r[0]:null}function Kbe(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 iO(t){const e=Kbe(t["00186011"]);return!e||!e.length?null:e.map(n=>{const i=Bo(n,"0018602C"),o=Bo(n,"0018602E"),a=Bo(n,"00186024"),s=Bo(n,"00186026"),c=Bo(n,"0018601A"),l=Bo(n,"0018601E"),f=Bo(n,"00186018"),u=Bo(n,"0018601C"),d=Bo(n,"00186020"),h=Bo(n,"00186022"),g=Bo(n,"0018602A"),p=Bo(n,"00186028"),v=Bo(n,"00186012"),y=Bo(n,"00186014"),m=Bo(n,"00186016"),w=Bo(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:y,regionFlags:m,transducerFrequency:w}})}function vD(t,e){const{MetadataModules:r}=ka;if(t===r.MULTIFRAME){const{metadata:i,frame:o}=Ube(e);if(!i)return;const{PerFrameFunctionalGroupsSequence:a,SharedFunctionalGroupsSequence:s,NumberOfFrames:c}=fH(i);if(a||c>1){const{shared:l,perFrame:f}=uH(a,s,o);return{NumberOfFrames:c,PerFrameFunctionalInformation:f,SharedFunctionalInformation:l}}return{NumberOfFrames:c}}const n=pD.get(e);if(n){if(t===r.GENERAL_STUDY)return{studyDescription:sn(n["00081030"]),studyDate:br.parseDA(sn(n["00080020"])),studyTime:br.parseTM(sn(n["00080030"],0,"")),accessionNumber:sn(n["00080050"])};if(t===r.GENERAL_SERIES)return{modality:sn(n["00080060"]),seriesInstanceUID:sn(n["0020000E"]),seriesDescription:sn(n["0008103E"]),seriesNumber:Zn(n["00200011"]),studyInstanceUID:sn(n["0020000D"]),seriesDate:br.parseDA(sn(n["00080021"])),seriesTime:br.parseTM(sn(n["00080031"],0,"")),acquisitionDate:br.parseDA(sn(n["00080022"])),acquisitionTime:br.parseTM(sn(n["00080032"],0,""))};if(t===r.GENERAL_IMAGE)return{sopInstanceUID:sn(n["00080018"]),instanceNumber:Zn(n["00200013"]),lossyImageCompression:sn(n["00282110"]),lossyImageCompressionRatio:Zn(n["00282112"]),lossyImageCompressionMethod:sn(n["00282114"])};if(t===r.PATIENT)return{patientID:sn(n["00100020"]),patientName:sn(n["00100010"])};if(t===r.PATIENT_STUDY)return{patientAge:Zn(n["00101010"]),patientSize:Zn(n["00101020"]),patientSex:sn(n["00100040"]),patientWeight:Zn(n["00101030"])};if(t===r.NM_MULTIFRAME_GEOMETRY){const i=sn(n["00080060"]),o=mD(n,2);return{modality:i,imageType:sn(n["00080008"]),imageSubType:o,imageOrientationPatient:nO(n),imagePositionPatient:rO(n),sliceThickness:Zn(n["00180050"]),spacingBetweenSlices:Zn(n["00180088"]),pixelSpacing:zo(n["00280030"],2),numberOfFrames:Zn(n["00280008"]),isNMReconstructable:np(o)&&i.includes("NM")}}if(t===r.IMAGE_PLANE){let i=nO(n),o=rO(n);const a=zo(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=[1,0,0],f=[0,1,0],u=!0,i=[...l,...f]),o||(o=[0,0,0],u=!0),{frameOfReferenceUID:sn(n["00200052"]),rows:Zn(n["00280010"]),columns:Zn(n["00280011"]),imageOrientationPatient:i,rowCosines:l,columnCosines:f,imagePositionPatient:o,sliceThickness:Zn(n["00180050"]),sliceLocation:Zn(n["00201041"]),pixelSpacing:a,rowPixelSpacing:c,columnPixelSpacing:s,usingDefaultValues:u}}if(t===r.ULTRASOUND_ENHANCED_REGION)return iO(n);if(t===r.CALIBRATION&&sn(n["00080060"])==="US")return{sequenceOfUltrasoundRegions:iO(n)};if(t===r.IMAGE_URL)return Xbe(e,n);if(t===r.CINE)return qbe(e,n);if(t===r.IMAGE_PIXEL)return{samplesPerPixel:Zn(n["00280002"]),photometricInterpretation:sn(n["00280004"]),rows:Zn(n["00280010"]),columns:Zn(n["00280011"]),bitsAllocated:Zn(n["00280100"]),bitsStored:Zn(n["00280101"]),highBit:sn(n["00280102"]),pixelRepresentation:Zn(n["00280103"]),planarConfiguration:Zn(n["00280006"]),pixelAspectRatio:sn(n["00280034"]),smallestPixelValue:Zn(n["00280106"]),largestPixelValue:Zn(n["00280107"]),redPaletteColorLookupTableDescriptor:zo(n["00281101"]),greenPaletteColorLookupTableDescriptor:zo(n["00281102"]),bluePaletteColorLookupTableDescriptor:zo(n["00281103"]),redPaletteColorLookupTableData:zo(n["00281201"]),greenPaletteColorLookupTableData:zo(n["00281202"]),bluePaletteColorLookupTableData:zo(n["00281203"])};if(t===r.VOI_LUT)return{windowCenter:zo(n["00281050"],1),windowWidth:zo(n["00281051"],1),voiLUTFunction:sn(n["00281056"])};if(t===r.MODALITY_LUT)return{rescaleIntercept:Zn(n["00281052"]),rescaleSlope:Zn(n["00281053"]),rescaleType:sn(n["00281054"])};if(t===r.SOP_COMMON)return{sopClassUID:sn(n["00080016"]),sopInstanceUID:sn(n["00080018"])};if(t===r.PET_ISOTOPE){const i=sn(n["00540016"]);return i===void 0?void 0:{radiopharmaceuticalInfo:{radiopharmaceuticalStartTime:br.parseTM(sn(i["00181072"],0,"")),radiopharmaceuticalStartDateTime:sn(i["00181078"],0,""),radionuclideTotalDose:Zn(i["00181074"]),radionuclideHalfLife:Zn(i["00181075"])}}}if(t===r.OVERLAY_PLANE)return Vbe(n);if(t==="transferSyntax")return gH(e,n);if(t===r.PET_SERIES)return{correctedImage:sn(n["00280051"]),units:sn(n["00541001"]),decayCorrection:sn(n["00541102"])};if(t===r.PET_IMAGE)return{frameReferenceTime:Zn(n["00541300"]),actualFrameDuration:Zn(n["00181242"])};if(t==="instance")return qj(e,vD,Yj)}}function Xbe(t,e){const{transferSyntaxUID:r}=gH(t,e),n=EU(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 qbe(t,e){return{cineRate:sn(e["00180040"]),numberOfFrames:Zn(e["00280008"])}}function gH(t,e){return{transferSyntaxUID:sn(e["00020010"])||sn(e["00083002"])}}function Ybe(t,e,r={},n={}){const i=bv(),{retrieveOptions:o={},streamingData:a}=n,s=a.chunkSize||Zbe(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=Qbe(a,o),{encodedData:g,responseHeaders:p}=await Jbe(t,d,h,a),v=p.get("content-type"),{totalBytes:y}=a,m=y===g.byteLength,w=sD(v,g,{isPartial:!0}),x=cD(o,m||w.extractDone===!0);f({...w,imageQualityStatus:x,percentComplete:w.extractDone?100:s*100/y})}catch(h){c(h),console.error(h),u(h)}})}async function Jbe(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 yD(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 Ybe(s,e,a,n);if(o.streaming)return $j(s,e,a,n);const c=Jx(s,e,a),{xhr:l}=c;return c.then(function(f){const u=l.getResponseHeader("Content-Type")||"application/octet-stream",d=sD(u,new Uint8Array(f));return d.imageQualityStatus=cD(o,!0),d})}const{ProgressiveIterator:oO}=Dn,{ImageQualityStatus:aO}=ka,eDe=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 tDe(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 nDe(){return Ug}const rDe="multipart/related; type=application/octet-stream; transfer-syntax=*";function pH(t,e={}){const r=nDe(),n=new Date().getTime(),i=new oO("decompress");async function o(f,u,d){i.generate(async h=>{var v;const g=oO.as(yD(f,u,d,e));let p=10;for await(const y of g){const{pixelData:m,imageQualityStatus:w=aO.FULL_RESOLUTION,percentComplete:x,done:C=!0,extractDone:S=!0}=y,T=tDe(y.contentType);if(!S&&!eDe.has(T))continue;const _=y.decodeLevel??(w===aO.FULL_RESOLUTION?0:iDe(x,(v=e.retrieveOptions)==null?void 0:v.decodeLevel));if(!(!C&&p<=_))try{const E={...e,decodeLevel:_},b=await tC(u,m,T,E),D=new Date().getTime();b.loadTimeInMS=D-n,b.transferSyntaxUID=T,b.imageQualityStatus=w,h.add(b,C),p=_}catch(E){if(S)throw console.warn("Couldn't decode",E),E}}})}const a=e.requestType||gn.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,rDe),a,s,c),{promise:i.getDonePromise(),cancelFn:void 0}}function iDe(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 mH(){zd("wadors",pH),Ng(vD)}const oDe={getNumberString:kbe,getNumberValue:Zn,getNumberValues:zo,getValue:sn,metaDataProvider:vD},aDe={metaData:oDe,findIndexOfString:X_,getPixelData:yD,loadImage:pH,metaDataManager:pD,register:mH};function sDe(){mH(),lH()}const cDe=()=>new Worker(new URL("/static/dv3d/assets/decodeImageFrameWorker-CBEukZji.js",import.meta.url),{type:"module"});function vH(t={}){Wj(t),sDe();const e=Fl(),r=(t==null?void 0:t.maxWebWorkers)||lDe();e.registerWorker("dicomImageLoader",cDe,{maxWorkerInstances:r})}function lDe(){return typeof navigator<"u"&&navigator.hardwareConcurrency?Math.max(1,Math.floor(navigator.hardwareConcurrency/2)):1}function uDe(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 fDe={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"},dDe=Object.freeze(Object.defineProperty({__proto__:null,transferSyntaxes:fDe},Symbol.toStringTag,{value:"Module"}));function hDe(t,e){const{rows:r,columns:n,data:i}=t,{rows:o,columns:a,data:s}=e,c=[],l=[],f=[];for(let u=0;u>8&255}async function mDe(t,e){if(t.bitsAllocated===16){let r=e.buffer,n=e.byteOffset;const i=e.length;n%2&&(r=r.slice(n),n=0),t.pixelRepresentation===0?t.pixelData=new Uint16Array(r,n,i/2):t.pixelData=new Int16Array(r,n,i/2);for(let o=0;o=0&&g<=127)for(let p=0;p=-127){const p=a[u++];for(let v=0;v<-g+1&&c=0&&g<=127)for(let p=0;p=-127){const p=a[u++];for(let v=0;v<-g+1&&c=0&&g<=127)for(let p=0;p=-127){const p=a[d++];for(let v=0;v<-g+1&&f{var n=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(n=n||__filename),function(i){i=i||{};var o=typeof i<"u"?i:{},a,s;o.ready=new Promise(function(R,A){a=R,s=A});var c=Object.assign({},o),l="./this.program",f=(R,A)=>{throw A},u=typeof window=="object",d=typeof importScripts=="function",h=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",g="";function p(R){return o.locateFile?o.locateFile(R,g):g+R}var v,y,m;function w(R){if(R instanceof Je)return;T("exiting due to exception: "+R)}if(h){var x=Dl,C=Dl;d?g=C.dirname(g)+"/":g=__dirname+"/",v=(R,A)=>(R=fe(R)?new URL(R):C.normalize(R),x.readFileSync(R,A?void 0:"utf8")),m=R=>{var A=v(R,!0);return A.buffer||(A=new Uint8Array(A)),A},y=(R,A,$)=>{R=fe(R)?new URL(R):C.normalize(R),x.readFile(R,function(ee,he){ee?$(ee):A(he.buffer)})},process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",function(R){if(!(R instanceof Je))throw R}),process.on("unhandledRejection",function(R){throw R}),f=(R,A)=>{if(K())throw process.exitCode=R,A;w(A),process.exit(R)},o.inspect=function(){return"[Emscripten Module object]"}}else(u||d)&&(d?g=self.location.href:typeof document<"u"&&document.currentScript&&(g=document.currentScript.src),n&&(g=n),g.indexOf("blob:")!==0?g=g.substr(0,g.replace(/[?#].*/,"").lastIndexOf("/")+1):g="",v=R=>{var A=new XMLHttpRequest;return A.open("GET",R,!1),A.send(null),A.responseText},d&&(m=R=>{var A=new XMLHttpRequest;return A.open("GET",R,!1),A.responseType="arraybuffer",A.send(null),new Uint8Array(A.response)}),y=(R,A,$)=>{var ee=new XMLHttpRequest;ee.open("GET",R,!0),ee.responseType="arraybuffer",ee.onload=()=>{if(ee.status==200||ee.status==0&&ee.response){A(ee.response);return}$()},ee.onerror=$,ee.send(null)});var S=o.print||console.log.bind(console),T=o.printErr||console.warn.bind(console);Object.assign(o,c),c=null,o.arguments&&o.arguments,o.thisProgram&&(l=o.thisProgram),o.quit&&(f=o.quit);var _;o.wasmBinary&&(_=o.wasmBinary);var E=o.noExitRuntime||!0;typeof WebAssembly!="object"&&pe("no native wasm support detected");var b,D=!1;function I(R,A){R||pe(A)}var P=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function M(R,A,$){for(var ee=A+$,he=A;R[he]&&!(he>=ee);)++he;if(he-A>16&&R.buffer&&P)return P.decode(R.subarray(A,he));for(var ve="";A>10,56320|Fe&1023)}}return ve}function L(R,A){return R?M(X,R,A):""}function B(R,A,$,ee){if(!(ee>0))return 0;for(var he=$,ve=$+ee-1,Ce=0;Ce=55296&&we<=57343){var Me=R.charCodeAt(++Ce);we=65536+((we&1023)<<10)|Me&1023}if(we<=127){if($>=ve)break;A[$++]=we}else if(we<=2047){if($+1>=ve)break;A[$++]=192|we>>6,A[$++]=128|we&63}else if(we<=65535){if($+2>=ve)break;A[$++]=224|we>>12,A[$++]=128|we>>6&63,A[$++]=128|we&63}else{if($+3>=ve)break;A[$++]=240|we>>18,A[$++]=128|we>>12&63,A[$++]=128|we>>6&63,A[$++]=128|we&63}}return A[$]=0,$-he}function j(R,A,$){return B(R,X,A,$)}function V(R){for(var A=0,$=0;$=55296&&ee<=57343?(A+=4,++$):A+=3}return A}var F,G,X,ne,ue,me,ge,ye,Ie;function Pe(R){F=R,o.HEAP8=G=new Int8Array(R),o.HEAP16=ne=new Int16Array(R),o.HEAP32=me=new Int32Array(R),o.HEAPU8=X=new Uint8Array(R),o.HEAPU16=ue=new Uint16Array(R),o.HEAPU32=ge=new Uint32Array(R),o.HEAPF32=ye=new Float32Array(R),o.HEAPF64=Ie=new Float64Array(R)}o.INITIAL_MEMORY;var Ee,H=[],O=[],Y=[];function K(){return E}function Z(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)_e(o.preRun.shift());at(H)}function ae(){at(O)}function oe(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)Ge(o.postRun.shift());at(Y)}function _e(R){H.unshift(R)}function Oe(R){O.unshift(R)}function Ge(R){Y.unshift(R)}var $e=0,le=null;function de(R){$e++,o.monitorRunDependencies&&o.monitorRunDependencies($e)}function be(R){if($e--,o.monitorRunDependencies&&o.monitorRunDependencies($e),$e==0&&le){var A=le;le=null,A()}}function pe(R){o.onAbort&&o.onAbort(R),R="Aborted("+R+")",T(R),D=!0,R+=". Build with -sASSERTIONS for more info.";var A=new WebAssembly.RuntimeError(R);throw s(A),A}var Te="data:application/octet-stream;base64,";function Ye(R){return R.startsWith(Te)}function fe(R){return R.startsWith("file://")}var ft;ft="libjpegturbowasm_decode.wasm",Ye(ft)||(ft=p(ft));function gt(R){try{if(R==ft&&_)return new Uint8Array(_);if(m)return m(R);throw"both async and sync fetching of the wasm failed"}catch(A){pe(A)}}function mt(){if(!_&&(u||d)){if(typeof fetch=="function"&&!fe(ft))return fetch(ft,{credentials:"same-origin"}).then(function(R){if(!R.ok)throw"failed to load wasm binary file at '"+ft+"'";return R.arrayBuffer()}).catch(function(){return gt(ft)});if(y)return new Promise(function(R,A){y(ft,function($){R(new Uint8Array($))},A)})}return Promise.resolve().then(function(){return gt(ft)})}function Re(){var R={a:Ut};function A(Ce,we){var Me=Ce.exports;o.asm=Me,b=o.asm.K,Pe(b.buffer),Ee=o.asm.M,Oe(o.asm.L),be()}de();function $(Ce){A(Ce.instance)}function ee(Ce){return mt().then(function(we){return WebAssembly.instantiate(we,R)}).then(function(we){return we}).then(Ce,function(we){T("failed to asynchronously prepare wasm: "+we),pe(we)})}function he(){return!_&&typeof WebAssembly.instantiateStreaming=="function"&&!Ye(ft)&&!fe(ft)&&!h&&typeof fetch=="function"?fetch(ft,{credentials:"same-origin"}).then(function(Ce){var we=WebAssembly.instantiateStreaming(Ce,R);return we.then($,function(Me){return T("wasm streaming compile failed: "+Me),T("falling back to ArrayBuffer instantiation"),ee($)})}):ee($)}if(o.instantiateWasm)try{var ve=o.instantiateWasm(R,A);return ve}catch(Ce){T("Module.instantiateWasm callback failed with error: "+Ce),s(Ce)}return he().catch(s),{}}function Je(R){this.name="ExitStatus",this.message="Program terminated with exit("+R+")",this.status=R}function at(R){for(;R.length>0;)R.shift()(o)}function tt(R){this.excPtr=R,this.ptr=R-24,this.set_type=function(A){ge[this.ptr+4>>2]=A},this.get_type=function(){return ge[this.ptr+4>>2]},this.set_destructor=function(A){ge[this.ptr+8>>2]=A},this.get_destructor=function(){return ge[this.ptr+8>>2]},this.set_refcount=function(A){me[this.ptr>>2]=A},this.set_caught=function(A){A=A?1:0,G[this.ptr+12>>0]=A},this.get_caught=function(){return G[this.ptr+12>>0]!=0},this.set_rethrown=function(A){A=A?1:0,G[this.ptr+13>>0]=A},this.get_rethrown=function(){return G[this.ptr+13>>0]!=0},this.init=function(A,$){this.set_adjusted_ptr(0),this.set_type(A),this.set_destructor($),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var A=me[this.ptr>>2];me[this.ptr>>2]=A+1},this.release_ref=function(){var A=me[this.ptr>>2];return me[this.ptr>>2]=A-1,A===1},this.set_adjusted_ptr=function(A){ge[this.ptr+16>>2]=A},this.get_adjusted_ptr=function(){return ge[this.ptr+16>>2]},this.get_exception_ptr=function(){var A=ct(this.get_type());if(A)return ge[this.excPtr>>2];var $=this.get_adjusted_ptr();return $!==0?$:this.excPtr}}function wt(R,A,$){var ee=new tt(R);throw ee.init(A,$),R}var Bt={};function Ct(R){for(;R.length;){var A=R.pop(),$=R.pop();$(A)}}function Ht(R){return this.fromWireType(me[R>>2])}var $t={},dn={},Nn={},Kt=48,qn=57;function Cr(R){if(R===void 0)return"_unknown";R=R.replace(/[^a-zA-Z0-9_]/g,"$");var A=R.charCodeAt(0);return A>=Kt&&A<=qn?"_"+R:R}function pr(R,A){return R=Cr(R),new Function("body","return function "+R+`() { +`)),o===-1)throw new Error("invalid response - no multipart mime header");if(!s&&(a=X_e(n,0,o).split(`\r +`),s=K_e(a),!s))throw new Error("invalid response - no boundary marker");const l=o+4,f=VT(n,s,l);if(f===-1&&!i)throw new Error("invalid response - terminating boundary not found");return c||(c=q_e(a)),r.tokenIndex=o,r.boundary=s,r.responseHeaders=a,r.multipartContentType=c,r.isPartial=f===-1,{contentType:c,extractDone:!i||f!==-1,tokenIndex:o,responseHeaders:a,boundary:s,multipartContentType:c,pixelData:e.slice(l,f-2)}}function K_e(t){for(let e=0;e{if(typeof i.errorInterceptor=="function"){const u=new Error("request failed");i.errorInterceptor(u)}},l=new Y_e("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 y=v.body.getReader(),m=v.headers,w=m.get("content-type"),x=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 y.read();if(S=J_e(S,E),!S){if(C)throw new Error(`Done but no image frame available ${e}`);continue}if(C=_||S.byteLength===x,!C&&S.lengthr-i&&(console.log(`Truncated fragment, changing fragment length from ${n.length} to ${r-i}`),n.length=r-i)}return t}function e4e(t){let e=wr.parseDicom(t,{untilTag:"x7fe00010"});e.elements.x7fe00010||console.warn("Pixel data not found!");let r;try{r=wr.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=Q_e(e),e}async function zz(t,e,r){const n=e4e(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),zz(h,e,r)},n}function t4e(t,e){if(!t)return;const{NumberOfFrames:r,PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:i}=jz(t);if(n||r>1){const{shared:o,perFrame:a}=$z(n,i,e);return{NumberOfFrames:r,PerFrameFunctionalInformation:a,SharedFunctionalInformation:o}}return{NumberOfFrames:r}}function $z(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 jz(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 n4e(t,e){if(!e)return;const{NumberOfFrames:r,PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:i,otherElements:o}=jz(e);if(n||r>1){const{shared:a,perFrame:s}=$z(n,i,t),c={elements:{...o,...a,...s}},l=Object.create(e);return Object.assign(l,c)}return e}let ji={};const r4e=()=>{ji={}};function J8(t){if(ji[t])return ji[t]}function i4e(t){const e=J8(t);return Hz(e)}function Hz(t){if(!t)return!1;const e=t.intString("x00280008");return e&&e>1}function o4e(t){return t.indexOf("&frame=")}function a4e(t){const e=o4e(t),r=e===-1?t:t.slice(0,e),n=parseInt(t.slice(e+7),10)||1;let i;return ji[r]?i=ji[r].dataSet:i=void 0,{dataSet:i,frame:n}}function s4e(t){const e=[],r=J8(t);if(Hz(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 Kz={_get:J8,generateMultiframeWADOURIs:s4e,retrieveMultiframeDataset:a4e,isMultiframeDataset:i4e};let zh=0,Qf={};function c4e(t){return ji[t]!==void 0}function l4e(t){let e;if(t.includes("&frame=")){const{frame:r,dataSet:n}=Kz.retrieveMultiframeDataset(t);e=n4e(r,n)}else ji[t]&&(e=ji[t].dataSet);return e}function u4e(t,e){const r=ji[t];if(!r){console.error(`No loaded dataSet for uri ${t}`);return}zh-=r.dataSet.byteArray.length,r.dataSet=e,zh+=e.byteArray.length,nt(He,"datasetscachechanged",{uri:t,action:"updated",cacheInfo:fx()})}function f4e(t,e=ux,r){if(ji[t])return new Promise(o=>{ji[t].cacheCount++,o(ji[t].dataSet)});if(Qf[t])return Qf[t].cacheCount++,Qf[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 zz(l,e,{uri:t,imageId:r,fileTotalLength:c.fileTotalLength}):f=wr.parseDicom(l)}catch(u){return a(u)}ji[t]={dataSet:f,cacheCount:i.cacheCount},zh+=f.byteArray.length,o(f),nt(He,"datasetscachechanged",{uri:t,action:"loaded",cacheInfo:fx()})},a).then(()=>{delete Qf[t]},()=>{delete Qf[t]})});return i.cacheCount=1,Qf[t]=i,i}function d4e(t){ji[t]&&(ji[t].cacheCount--,ji[t].cacheCount===0&&(zh-=ji[t].dataSet.byteArray.length,delete ji[t],nt(He,"datasetscachechanged",{uri:t,action:"unloaded",cacheInfo:fx()})))}function fx(){return{cacheSizeInBytes:zh,numberOfDataSetsCached:Object.keys(ji).length}}function h4e(){r4e(),Qf={},zh=0}const vh={isLoaded:c4e,load:f4e,unload:d4e,getInfo:fx,purge:h4e,get:l4e,update:u4e};function g4e(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 wg(t){return t==="RECON TOMO"||t==="RECON GATED TOMO"}function Z8(t,e){const r=t.string("x00080008");if(r){const n=r.split("\\");if(n.length>e)return n[e]}}function p4e(t){let e;const r=t.string("x00080060");if(r!=null&&r.includes("NM")){const n=Z8(t,2);n&&wg(n)&&t.elements.x00540022&&(e=Sc(t.elements.x00540022.items[0].dataSet,"x00200037",6))}return e}function m4e(t){let e;const r=t.string("x00080060");if(r!=null&&r.includes("NM")){const n=Z8(t,2);n&&wg(n)&&t.elements.x00540022&&(e=Sc(t.elements.x00540022.items[0].dataSet,"x00200032",3))}return e}function A7(t){let e=Sc(t,"x00200037",6);return!e&&t.elements.x00209116&&(e=Sc(t.elements.x00209116.items[0].dataSet,"x00200037",6)),e||(e=p4e(t)),e}function N7(t){let e=Sc(t,"x00200032",3);return!e&&t.elements.x00209113&&(e=Sc(t.elements.x00209113.items[0].dataSet,"x00200032",3)),e||(e=m4e(t)),e}function k7(t){let e=Sc(t,"x00280030",2);return!e&&t.elements.x00289110&&(e=Sc(t.elements.x00289110.items[0].dataSet,"x00280030",2)),e}function V7(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 qz(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=v4e(s);a[c]=o[s]}Object.assign(n,a)}}catch(o){console.error(`Error retrieving ${i} data:`,o)}return n}const v4e=t=>t.charAt(0).toUpperCase()+t.slice(1),Xz=["multiframeModule","generalSeriesModule","patientStudyModule","imagePlaneModule","nmMultiframeGeometryModule","imagePixelModule","modalityLutModule","voiLutModule","sopCommonModule","petIsotopeModule","overlayPlaneModule","transferSyntax","petSeriesModule","petImageModule"];function F7(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"),y=n.dataSet.uint16("x00186014"),m=n.dataSet.uint16("x00186016"),w=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:y,regionFlags:m,transducerFrequency:w}})}function Q8(t,e){const{MetadataModules:r}=ts;if(Array.isArray(e))return;const n=U1(e);if(t===r.MULTIFRAME){const a=Kz.retrieveMultiframeDataset(n.url);return a.dataSet?t4e(a.dataSet,a.frame):void 0}let i=n.url;n.frame&&(i=`${i}&frame=${n.frame}`);const o=vh.get(i);if(o)return Yz(t,e,o)}function Yz(t,e,r){const{MetadataModules:n}=ts;if(t===n.GENERAL_STUDY)return{studyDescription:r.string("x00081030"),studyDate:wr.parseDA(r.string("x00080020")),studyTime:wr.parseTM(r.string("x00080030")||""),accessionNumber:r.string("x00080050")};if(t===n.GENERAL_SERIES)return{modality:r.string("x00080060"),seriesInstanceUID:r.string("x0020000e"),seriesDescription:r.string("x0008103e"),seriesNumber:r.intString("x00200011"),studyInstanceUID:r.string("x0020000d"),seriesDate:wr.parseDA(r.string("x00080021")),seriesTime:wr.parseTM(r.string("x00080031")||""),acquisitionDate:wr.parseDA(r.string("x00080022")),acquisitionTime:wr.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=Z8(r,2);return{modality:i,imageType:r.string("x00080008"),imageSubType:o,imageOrientationPatient:A7(r),imagePositionPatient:N7(r),sliceThickness:V7(r),pixelSpacing:k7(r),numberOfFrames:r.uint16("x00280008"),isNMReconstructable:wg(o)&&i.includes("NM")}}if(t===n.IMAGE_PLANE){const i=A7(r),o=N7(r),a=k7(r),s=V7(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 Fz(r);if(t===n.VOI_LUT){const i=Uz(r);return{windowCenter:Sc(r,"x00281050",1),windowWidth:Sc(r,"x00281051",1),voiLUTSequence:NT(i,r.elements.x00283010),voiLUTFunction:r.string("x00281056")}}if(t===n.MODALITY_LUT)return{rescaleIntercept:r.floatString("x00281052"),rescaleSlope:r.floatString("x00281053"),rescaleType:r.string("x00281054"),modalityLUTSequence:NT(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:wr.parseTM(o.string("x00181072")||""),radionuclideTotalDose:o.floatString("x00181074"),radionuclideHalfLife:o.floatString("x00181075")}}}if(t===n.OVERLAY_PLANE)return g4e(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 F7(r);if(t===n.CALIBRATION&&r.string("x00080060")==="US")return{sequenceOfUltrasoundRegions:F7(r)};if(t==="instance")return qz(e,Q8,Xz)}let dx=[];function y4e(t){return`dicomfile:${dx.push(t)-1}`}function w4e(t){return dx[t]}function x4e(t){dx[t]=void 0}function C4e(){dx=[]}const Jz={add:y4e,get:w4e,remove:x4e,purge:C4e};function S4e(t){const e=t.intString("x00280008"),r=t.elements.x7fe00010;return e!==r.fragments.length}function Zz(t,e){if(t.elements.x7fe00010&&t.elements.x7fe00010.basicOffsetTable.length)return wr.readEncapsulatedImageFrame(t,t.elements.x7fe00010,e);if(S4e(t)){const l=wr.createJPEGBasicOffsetTable(t,t.elements.x7fe00010);return wr.readEncapsulatedImageFrame(t,t.elements.x7fe00010,e,l)}const r=t.elements.x7fe00010.fragments,n=new wr.ByteStream(t.byteArrayParser,t.byteArray,t.elements.x7fe00010.dataOffset),i=wr.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 T4e(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 Qz(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 t$(t){const e=U1(t),r=parseInt(e.url,10),n=Jz.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 eb(t,e=0){const r=t.elements.x7fe00010||t.elements.x7fe00008;return r?r.encapsulatedPixelData?Zz(t,e):e$(t,e):null}function hx(t){let e=t[0],r=t[0],n;const i=t.length;for(let o=1;o{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=hx(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(b4e(s.result))}`:c.src=`data:image/jpeg;base64,${window.btoa(s.result)}`},s.onerror=c=>{a(c)}})}function ga(t,e,r,n,i){const o={...n};delete o.loader,delete o.streamingData;const a=xl(),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 I4e(t,e,r,n,i={},o){switch(e){case"1.2.840.10008.1.2":return ga(t,e,r,i,o);case"1.2.840.10008.1.2.1":return ga(t,e,r,i,o);case"1.2.840.10008.1.2.2":return ga(t,e,r,i,o);case"1.2.840.10008.1.2.1.99":return ga(t,e,r,i,o);case"1.2.840.10008.1.2.5":return ga(t,e,r,i,o);case"1.2.840.10008.1.2.4.50":return t.bitsAllocated===8&&(t.samplesPerPixel===3||t.samplesPerPixel===4)?r$(t,r,n):ga(t,e,r,i,o);case"1.2.840.10008.1.2.4.51":return ga(t,e,r,i,o);case"1.2.840.10008.1.2.4.57":return ga(t,e,r,i,o);case"1.2.840.10008.1.2.4.70":return ga(t,e,r,i,o);case"1.2.840.10008.1.2.4.80":return ga(t,e,r,i,o);case"1.2.840.10008.1.2.4.81":return ga(t,e,r,i,o);case"1.2.840.10008.1.2.4.90":return ga(t,e,r,i,o);case"1.2.840.10008.1.2.4.91":return ga(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 ga(t,e,r,i,o)}return Promise.reject(new Error(`No decoder for transfer syntax ${e}`))}function i$(t){const e=lt("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 O4e(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},...i==="RTDOSE"&&{doseGridScaling:a.DoseGridScaling,doseSummation:a.DoseSummation,doseType:a.DoseType,doseUnit:a.DoseUnit}}}function tb(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"}function M4e(t,e){const r=t.length/4;let n=0,i=0;for(let o=0;o=0?e<=255?r=Uint8Array:e<=65535?r=Uint16Array:e<=4294967295&&(r=Uint32Array):t>=-128&&e<=127?r=Int8Array:t>=-32768&&e<=32767&&(r=Int16Array)),r||Float32Array}function R4e(t,e,r){return nb(t,e)===r}function L4e(t){const e=t.smallestPixelValue,r=t.largestPixelValue,n=nb(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")}let U7="";function gx(t,e,r,n={}){const i=n.useRGBA;if(n.preScale={enabled:n.preScale&&n.preScale.enabled!==void 0?n.preScale.enabled:!0},!(e!=null&&e.length))return Promise.reject(new Error("The pixel data is missing"));const{MetadataModules:o}=ts,a=document.createElement("canvas"),s=i$(t);if(s.decodeLevel=n.decodeLevel,n.allowFloatRendering=ww(),n.preScale.enabled){const u=O4e(G4,t);u&&(n.preScale={...n.preScale,scalingParameters:u})}const{decodeConfig:c}=B1();Object.keys(s).forEach(u=>{(typeof s[u]=="function"||s[u]instanceof Promise)&&delete s[u]});const l=I4e(s,r,e,a,n,c),f=tb(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:b=0,length:D}=n.targetBuffer,O=h.pixelDataLength,L=b,P=D??O-L,k={Uint8Array,Uint16Array,Int16Array,Float32Array,Uint32Array};if(P!==h.pixelDataLength)throw new Error(`target array for image does not have the same length (${P}) as the decoded image length (${h.pixelDataLength}).`);const G=k[E],j=_?new G(_,L,P):new G(h.pixelData);if(P!==h.pixelDataLength)throw new Error("target array for image does not have the same length as the decoded image length.");h.pixelData=j,g=!0}g||L4e(h);const p=lt(o.IMAGE_PLANE,t)||{},v=lt(o.VOI_LUT,t)||{},y=lt(o.MODALITY_LUT,t)||{},m=lt(o.SOP_COMMON,t)||{},w=lt(o.CALIBRATION,t)||{},{rows:x,columns:C}=h;if(f){if(E4e(h)){a.height=h.rows,a.width=h.columns;let b=a.getContext("2d").createImageData(h.columns,h.rows);i||(b={...b,data:new Uint8ClampedArray(3*h.columns*h.rows)}),n$(h,b.data,i),h.imageData=b,h.pixelData=b.data,h.pixelDataLength=b.data.length}else if(!i&&h.pixelDataLength===4*x*C){const E=new Uint8Array(h.pixelData.length/4*3);h.pixelData=M4e(h.pixelData,E),h.pixelDataLength=h.pixelData.length}const _=hx(h.pixelData);h.smallestPixelValue=_.min,h.largestPixelValue=_.max}const S=wc.createImageVoxelManager({scalarData:h.pixelData,width:h.columns,height:h.rows,numberOfComponents:h.samplesPerPixel}),T={imageId:t,dataType:h.pixelData.constructor.name,color:f,calibration:w,columnPixelSpacing:p.columnPixelSpacing,columns:h.columns,height:h.rows,preScale:h.preScale,intercept:y.rescaleIntercept?y.rescaleIntercept:0,slope:y.rescaleSlope?y.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(U7===t)return a;const _=T.columns,E=T.rows;a.height=E,a.width=_;const b=a.getContext("2d"),D=b.createImageData(_,E),O=h.pixelData;if(O.length===_*E*4)for(let L=0;L0&&P4e(m.sopClassUID)&&(T.modalityLUT=y.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)})}const{ImageQualityStatus:o$}=ts;function A4e(t,e){t.decache=function(){const r=U1(e);vh.unload(r.url)}}function a$(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=eb(f,r),d=f.string("x00020010"),h=new Date().getTime(),g=gx(e,u,d,i);A4e(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,p.imageQualityStatus=o$.FULL_RESOLUTION,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 N4e(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=eb(t,r),d=t.string("x00020010");f=gx(e,u,d,i)}catch(u){c({error:u,dataSet:t});return}f.then(u=>{u=u,u.data=t;const d=new Date().getTime();u.loadTimeInMS=l-o,u.totalTimeInMS=d-o,u.imageQualityStatus=o$.FULL_RESOLUTION,s(u)},c)}),cancelFn:void 0}}function s$(t){if(t==="dicomweb"||t==="wadouri")return ux;if(t==="dicomfile")return t$}function Kv(t,e={}){const r=U1(t);e=Object.assign({},e),delete e.loader;const n=s$(r.scheme);if(vh.isLoaded(r.url)){const o=vh.get(r.url,n,t);return N4e(o,t,r.pixelDataFrame,r.url,e)}const i=vh.load(r.url,n,t);return a$(i,t,r.frame,r.url,e)}function c$(){yd("dicomweb",Kv),yd("wadouri",Kv),yd("dicomfile",Kv),Zh(Q8)}const k4e={getImagePixelModule:Fz,getLUTs:NT,getModalityLUTOutputPixelRepresentation:Uz,getNumberValues:Sc,metaDataProvider:Q8,metadataForDataset:Yz},V4e={metaData:k4e,dataSetCacheManager:vh,fileManager:Jz,getEncapsulatedImageFrame:Zz,getUncompressedImageFrame:e$,loadFileRequest:t$,loadImageFromPromise:a$,getLoaderForScheme:s$,getPixelData:eb,loadImage:Kv,parseImageId:U1,unpackBinaryFrame:Qz,register:c$};function nn(t,e,r){return e=e||0,!t||!t.Value||Array.isArray(t.Value)&&t.Value.length<=e?r:t.Value[e]}function F4e(t,e,r){const n=nn(t,e,r);if(n!==void 0)return parseFloat(String(n))}function Xn(t,e){const r=nn(t,e);if(r!==void 0)return parseFloat(r)}function Ro(t,e){if(!t||!t.Value||!Array.isArray(t.Value)||e&&t.Value.length>s&1}e.push({rows:Xn(t[`${n}0010`]),columns:Xn(t[`${n}0011`]),type:nn(t[`${n}0040`]),x:Xn(t[`${n}0050`],1)-1,y:Xn(t[`${n}0050`],0)-1,pixelData:o,description:nn(t[`${n}0022`]),label:nn(t[`${n}1500`]),roiArea:nn(t[`${n}1301`]),roiMean:nn(t[`${n}1302`]),roiStandardDeviation:nn(t[`${n}1303`])})}return{overlays:e}}function px(t){const e=t.indexOf(":");return t.substring(e+1)}function yh(t,e=!0){return t&&t.Value?t.Value[0]&&e?t.Value[0]:t.Value:t}function l$(t,e,r){const n=(e?Object.values(e[0]):[]).map(o=>{var a;return(a=o.Value)==null?void 0:a[0]}).filter(o=>o!==void 0&&typeof o=="object"),i=(t?Object.values(t[r-1]):[]).map(o=>{var a;return(a=o.Value)==null?void 0:a[0]}).filter(o=>o!==void 0&&typeof o=="object");return{shared:n,perFrame:i}}function u$(t){let{52009230:e,52009229:r,"00280008":n,...i}=t;return e=yh(e,!1),r=yh(r,!1),n=yh(n),{PerFrameFunctionalGroupsSequence:e,SharedFunctionalGroupsSequence:r,NumberOfFrames:n,rest:i}}function B4e(t,e){const{PerFrameFunctionalGroupsSequence:r,SharedFunctionalGroupsSequence:n,NumberOfFrames:i,rest:o}=u$(e);if(r||i>1){const{shared:a,perFrame:s}=l$(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 G1=[],B5={};function f$(t){const e=t.indexOf("/frames/")+8,r=t.slice(0,e),n=parseInt(t.slice(e),10);return{metadata:G1[`${r}1`],frame:n}}function G4e(t){const e=px(t);return f$(e)}function W4e(t){if(t[52009230]!==void 0||t[52009229]!==void 0)return!0;const e=nn(t["00280008"]);return e&&e>1}function z4e(t,e){const r=px(t);Object.defineProperty(e,"isMultiframe",{value:W4e(e),enumerable:!1}),G1[r]=e}function $4e(t){const e=px(t),r=G1[e];if(r&&!(r!=null&&r.isMultiframe))return r;const n=B5[e];if(n)return n;const i=f$(e);if(!i||!i.metadata)return;const{metadata:o,frame:a}=i;if(o){const s=B4e(a,o);return B5[e]=s,s}}function j4e(t){const e=px(t);G1[e]=void 0,B5[e]=void 0}function H4e(){G1=[],B5={}}const rb={add:z4e,get:$4e,remove:j4e,purge:H4e};function d$(t){return nn(t["00080060"]).includes("NM")}function ib(t,e){const r=yh(t["00080008"],!1);if(r)return r[e]}function K4e(t){let e;const r=ib(t,2);if(r&&wg(r)){const n=yh(t["00540022"]);n&&(e=Ro(n["00200037"],6))}return e}function q4e(t){let e;const r=ib(t,2);if(r&&wg(r)){const n=yh(t["00540022"]);n&&(e=Ro(n["00200032"],3))}return e}function B7(t){let e=Ro(t["00200037"],6);return!e&&d$(t)&&(e=K4e(t)),e}function G7(t){let e=Ro(t["00200032"],3);return!e&&d$(t)&&(e=q4e(t)),e}function Oo(t,e){const r=Ro(t[e]);return r?r[0]:null}function X4e(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 W7(t){const e=X4e(t["00186011"]);return!e||!e.length?null:e.map(n=>{const i=Oo(n,"0018602C"),o=Oo(n,"0018602E"),a=Oo(n,"00186024"),s=Oo(n,"00186026"),c=Oo(n,"0018601A"),l=Oo(n,"0018601E"),f=Oo(n,"00186018"),u=Oo(n,"0018601C"),d=Oo(n,"00186020"),h=Oo(n,"00186022"),g=Oo(n,"0018602A"),p=Oo(n,"00186028"),v=Oo(n,"00186012"),y=Oo(n,"00186014"),m=Oo(n,"00186016"),w=Oo(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:y,regionFlags:m,transducerFrequency:w}})}function ob(t,e){const{MetadataModules:r}=ts;if(t===r.MULTIFRAME){const{metadata:i,frame:o}=G4e(e);if(!i)return;const{PerFrameFunctionalGroupsSequence:a,SharedFunctionalGroupsSequence:s,NumberOfFrames:c}=u$(i);if(a||c>1){const{shared:l,perFrame:f}=l$(a,s,o);return{NumberOfFrames:c,PerFrameFunctionalInformation:f,SharedFunctionalInformation:l}}return{NumberOfFrames:c}}const n=rb.get(e);if(n){if(t===r.GENERAL_STUDY)return{studyDescription:nn(n["00081030"]),studyDate:wr.parseDA(nn(n["00080020"])),studyTime:wr.parseTM(nn(n["00080030"],0,"")),accessionNumber:nn(n["00080050"])};if(t===r.GENERAL_SERIES)return{modality:nn(n["00080060"]),seriesInstanceUID:nn(n["0020000E"]),seriesDescription:nn(n["0008103E"]),seriesNumber:Xn(n["00200011"]),studyInstanceUID:nn(n["0020000D"]),seriesDate:wr.parseDA(nn(n["00080021"])),seriesTime:wr.parseTM(nn(n["00080031"],0,"")),acquisitionDate:wr.parseDA(nn(n["00080022"])),acquisitionTime:wr.parseTM(nn(n["00080032"],0,""))};if(t===r.GENERAL_IMAGE)return{sopInstanceUID:nn(n["00080018"]),instanceNumber:Xn(n["00200013"]),lossyImageCompression:nn(n["00282110"]),lossyImageCompressionRatio:Xn(n["00282112"]),lossyImageCompressionMethod:nn(n["00282114"])};if(t===r.PATIENT)return{patientID:nn(n["00100020"]),patientName:nn(n["00100010"])};if(t===r.PATIENT_STUDY)return{patientAge:Xn(n["00101010"]),patientSize:Xn(n["00101020"]),patientSex:nn(n["00100040"]),patientWeight:Xn(n["00101030"])};if(t===r.NM_MULTIFRAME_GEOMETRY){const i=nn(n["00080060"]),o=ib(n,2);return{modality:i,imageType:nn(n["00080008"]),imageSubType:o,imageOrientationPatient:B7(n),imagePositionPatient:G7(n),sliceThickness:Xn(n["00180050"]),spacingBetweenSlices:Xn(n["00180088"]),pixelSpacing:Ro(n["00280030"],2),numberOfFrames:Xn(n["00280008"]),isNMReconstructable:wg(o)&&i.includes("NM")}}if(t===r.IMAGE_PLANE){let i=B7(n),o=G7(n);const a=Ro(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=[1,0,0],f=[0,1,0],u=!0,i=[...l,...f]),o||(o=[0,0,0],u=!0),{frameOfReferenceUID:nn(n["00200052"]),rows:Xn(n["00280010"]),columns:Xn(n["00280011"]),imageOrientationPatient:i,rowCosines:l,columnCosines:f,imagePositionPatient:o,sliceThickness:Xn(n["00180050"]),sliceLocation:Xn(n["00201041"]),pixelSpacing:a,rowPixelSpacing:c,columnPixelSpacing:s,usingDefaultValues:u}}if(t===r.ULTRASOUND_ENHANCED_REGION)return W7(n);if(t===r.CALIBRATION&&nn(n["00080060"])==="US")return{sequenceOfUltrasoundRegions:W7(n)};if(t===r.IMAGE_URL)return Y4e(e,n);if(t===r.CINE)return J4e(e,n);if(t===r.IMAGE_PIXEL)return{samplesPerPixel:Xn(n["00280002"]),photometricInterpretation:nn(n["00280004"]),rows:Xn(n["00280010"]),columns:Xn(n["00280011"]),bitsAllocated:Xn(n["00280100"]),bitsStored:Xn(n["00280101"]),highBit:nn(n["00280102"]),pixelRepresentation:Xn(n["00280103"]),planarConfiguration:Xn(n["00280006"]),pixelAspectRatio:nn(n["00280034"]),smallestPixelValue:Xn(n["00280106"]),largestPixelValue:Xn(n["00280107"]),redPaletteColorLookupTableDescriptor:Ro(n["00281101"]),greenPaletteColorLookupTableDescriptor:Ro(n["00281102"]),bluePaletteColorLookupTableDescriptor:Ro(n["00281103"]),redPaletteColorLookupTableData:Ro(n["00281201"]),greenPaletteColorLookupTableData:Ro(n["00281202"]),bluePaletteColorLookupTableData:Ro(n["00281203"])};if(t===r.VOI_LUT)return{windowCenter:Ro(n["00281050"],1),windowWidth:Ro(n["00281051"],1),voiLUTFunction:nn(n["00281056"])};if(t===r.MODALITY_LUT)return{rescaleIntercept:Xn(n["00281052"]),rescaleSlope:Xn(n["00281053"]),rescaleType:nn(n["00281054"])};if(t===r.SOP_COMMON)return{sopClassUID:nn(n["00080016"]),sopInstanceUID:nn(n["00080018"])};if(t===r.PET_ISOTOPE){const i=nn(n["00540016"]);return i===void 0?void 0:{radiopharmaceuticalInfo:{radiopharmaceuticalStartTime:wr.parseTM(nn(i["00181072"],0,"")),radiopharmaceuticalStartDateTime:nn(i["00181078"],0,""),radionuclideTotalDose:Xn(i["00181074"]),radionuclideHalfLife:Xn(i["00181075"])}}}if(t===r.OVERLAY_PLANE)return U4e(n);if(t==="transferSyntax")return h$(e,n);if(t===r.PET_SERIES)return{correctedImage:nn(n["00280051"]),units:nn(n["00541001"]),decayCorrection:nn(n["00541102"])};if(t===r.PET_IMAGE)return{frameReferenceTime:Xn(n["00541300"]),actualFrameDuration:Xn(n["00181242"])};if(t==="instance")return qz(e,ob,Xz)}}function Y4e(t,e){const{transferSyntaxUID:r}=h$(t,e),n=AV(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 J4e(t,e){return{cineRate:nn(e["00180040"]),numberOfFrames:Xn(e["00280008"])}}function h$(t,e){return{transferSyntaxUID:nn(e["00020010"])||nn(e["00083002"])}}function Z4e(t,e,r={},n={}){const i=B1(),{retrieveOptions:o={},streamingData:a}=n,s=a.chunkSize||eEe(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=tEe(a,o),{encodedData:g,responseHeaders:p}=await Q4e(t,d,h,a),v=p.get("content-type"),{totalBytes:y}=a,m=y===g.byteLength,w=X8(v,g,{isPartial:!0}),x=Y8(o,m||w.extractDone);f({...w,imageQualityStatus:x,percentComplete:w.extractDone?100:s*100/y})}catch(h){c(h),console.error(h),u(h)}})}async function Q4e(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 ab(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 Z4e(s,e,a,n);if(o.streaming)return Wz(s,e,a,n);const c=ux(s,e,a),{xhr:l}=c;return c.then(function(f){const u=l.getResponseHeader("Content-Type")||"application/octet-stream",d=X8(u,new Uint8Array(f));return d.imageQualityStatus=Y8(o,!0),d})}const{ProgressiveIterator:z7}=_n,{ImageQualityStatus:$7}=ts,nEe=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 rEe(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 iEe(){return rg}const oEe="multipart/related; type=application/octet-stream; transfer-syntax=*";function g$(t,e={}){const r=iEe(),n=new Date().getTime(),i=new z7("decompress");async function o(f,u,d){i.generate(async h=>{var v;const g=z7.as(ab(f,u,d,e));let p=10;for await(const y of g){const{pixelData:m,imageQualityStatus:w=$7.FULL_RESOLUTION,percentComplete:x,done:C=!0,extractDone:S=!0}=y,T=rEe(y.contentType);if(!S&&!nEe.has(T))continue;const _=y.decodeLevel??(w===$7.FULL_RESOLUTION?0:aEe(x,(v=e.retrieveOptions)==null?void 0:v.decodeLevel));if(!(!C&&p<=_))try{const E={...e,decodeLevel:_},b=await gx(u,m,T,E),D=new Date().getTime();b.loadTimeInMS=D-n,b.transferSyntaxUID=T,b.imageQualityStatus=w,h.add(b,C),p=_}catch(E){if(S)throw console.warn("Couldn't decode",E),E}}})}const a=e.requestType||un.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,oEe),a,s,c),{promise:i.getDonePromise(),cancelFn:void 0}}function aEe(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 p$(){yd("wadors",g$),Zh(ob)}const sEe={getNumberString:F4e,getNumberValue:Xn,getNumberValues:Ro,getValue:nn,metaDataProvider:ob},cEe={metaData:sEe,findIndexOfString:VT,getPixelData:ab,loadImage:g$,metaDataManager:rb,register:p$};function lEe(){p$(),c$()}const uEe=()=>new Worker(new URL("/static/dv3d/assets/decodeImageFrameWorker-DhtpjVX0.js",import.meta.url),{type:"module"});function m$(t={}){Gz(t),lEe();const e=xl(),r=(t==null?void 0:t.maxWebWorkers)||fEe();e.registerWorker("dicomImageLoader",uEe,{maxWorkerInstances:r})}function fEe(){return typeof navigator<"u"&&navigator.hardwareConcurrency?Math.max(1,Math.floor(navigator.hardwareConcurrency/2)):1}function dEe(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 hEe={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"},gEe=Object.freeze(Object.defineProperty({__proto__:null,transferSyntaxes:hEe},Symbol.toStringTag,{value:"Module"}));function pEe(t,e){const{rows:r,columns:n,data:i}=t,{rows:o,columns:a,data:s}=e,c=[],l=[],f=[];for(let u=0;u>8&255}async function yEe(t,e){if(t.bitsAllocated===16){let r=e.buffer,n=e.byteOffset;const i=e.length;n%2&&(r=r.slice(n),n=0),t.pixelRepresentation===0?t.pixelData=new Uint16Array(r,n,i/2):t.pixelData=new Int16Array(r,n,i/2);for(let o=0;o=0&&g<=127)for(let p=0;p=-127){const p=a[u++];for(let v=0;v<-g+1&&c=0&&g<=127)for(let p=0;p=-127){const p=a[u++];for(let v=0;v<-g+1&&c=0&&g<=127)for(let p=0;p=-127){const p=a[d++];for(let v=0;v<-g+1&&f{var n=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(n=n||__filename),function(i){i=i||{};var o=typeof i<"u"?i:{},a,s;o.ready=new Promise(function(I,M){a=I,s=M});var c=Object.assign({},o),l="./this.program",f=(I,M)=>{throw M},u=typeof window=="object",d=typeof importScripts=="function",h=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",g="";function p(I){return o.locateFile?o.locateFile(I,g):g+I}var v,y,m;if(h){var w=ll,x=ll;d?g=x.dirname(g)+"/":g=__dirname+"/",v=(I,M)=>(I=he(I)?new URL(I):x.normalize(I),w.readFileSync(I,M?void 0:"utf8")),m=I=>{var M=v(I,!0);return M.buffer||(M=new Uint8Array(M)),M},y=(I,M,V)=>{I=he(I)?new URL(I):x.normalize(I),w.readFile(I,function(H,q){H?V(H):M(q.buffer)})},process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",function(I){if(!(I instanceof vt))throw I}),process.on("unhandledRejection",function(I){throw I}),f=(I,M)=>{throw process.exitCode=I,M},o.inspect=function(){return"[Emscripten Module object]"}}else(u||d)&&(d?g=self.location.href:typeof document<"u"&&document.currentScript&&(g=document.currentScript.src),n&&(g=n),g.indexOf("blob:")!==0?g=g.substr(0,g.replace(/[?#].*/,"").lastIndexOf("/")+1):g="",v=I=>{var M=new XMLHttpRequest;return M.open("GET",I,!1),M.send(null),M.responseText},d&&(m=I=>{var M=new XMLHttpRequest;return M.open("GET",I,!1),M.responseType="arraybuffer",M.send(null),new Uint8Array(M.response)}),y=(I,M,V)=>{var H=new XMLHttpRequest;H.open("GET",I,!0),H.responseType="arraybuffer",H.onload=()=>{if(H.status==200||H.status==0&&H.response){M(H.response);return}V()},H.onerror=V,H.send(null)});var C=o.print||console.log.bind(console),S=o.printErr||console.warn.bind(console);Object.assign(o,c),c=null,o.arguments&&o.arguments,o.thisProgram&&(l=o.thisProgram),o.quit&&(f=o.quit);var T;o.wasmBinary&&(T=o.wasmBinary),o.noExitRuntime,typeof WebAssembly!="object"&&ce("no native wasm support detected");var _,E=!1;function b(I,M){I||ce(M)}var D=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function O(I,M,V){for(var H=M+V,q=M;I[q]&&!(q>=H);)++q;if(q-M>16&&I.buffer&&D)return D.decode(I.subarray(M,q));for(var Y="";M>10,56320|_e&1023)}}return Y}function L(I,M){return I?O(U,I,M):""}function P(I,M,V,H){if(!(H>0))return 0;for(var q=V,Y=V+H-1,ue=0;ue=55296&&ge<=57343){var me=I.charCodeAt(++ue);ge=65536+((ge&1023)<<10)|me&1023}if(ge<=127){if(V>=Y)break;M[V++]=ge}else if(ge<=2047){if(V+1>=Y)break;M[V++]=192|ge>>6,M[V++]=128|ge&63}else if(ge<=65535){if(V+2>=Y)break;M[V++]=224|ge>>12,M[V++]=128|ge>>6&63,M[V++]=128|ge&63}else{if(V+3>=Y)break;M[V++]=240|ge>>18,M[V++]=128|ge>>12&63,M[V++]=128|ge>>6&63,M[V++]=128|ge&63}}return M[V]=0,V-q}function k(I,M,V){return P(I,U,M,V)}function G(I){for(var M=0,V=0;V=55296&&H<=57343?(M+=4,++V):M+=3}return M}var j,F,U,W,J,te,le,ve,pe;function ye(I){j=I,o.HEAP8=F=new Int8Array(I),o.HEAP16=W=new Int16Array(I),o.HEAP32=te=new Int32Array(I),o.HEAPU8=U=new Uint8Array(I),o.HEAPU16=J=new Uint16Array(I),o.HEAPU32=le=new Uint32Array(I),o.HEAPF32=ve=new Float32Array(I),o.HEAPF64=pe=new Float64Array(I)}o.INITIAL_MEMORY;var Ie,Le=[],be=[],$=[];function R(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)Z(o.preRun.shift());gt(Le)}function X(){gt(be)}function K(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)oe(o.postRun.shift());gt($)}function Z(I){Le.unshift(I)}function ie(I){be.unshift(I)}function oe(I){$.unshift(I)}var Te=0,Oe=null;function Ve(I){Te++,o.monitorRunDependencies&&o.monitorRunDependencies(Te)}function Ge(I){if(Te--,o.monitorRunDependencies&&o.monitorRunDependencies(Te),Te==0&&Oe){var M=Oe;Oe=null,M()}}function ce(I){o.onAbort&&o.onAbort(I),I="Aborted("+I+")",S(I),E=!0,I+=". Build with -sASSERTIONS for more info.";var M=new WebAssembly.RuntimeError(I);throw s(M),M}var fe="data:application/octet-stream;base64,";function Se(I){return I.startsWith(fe)}function he(I){return I.startsWith("file://")}var xe;xe="libjpegturbowasm_decode.wasm",Se(xe)||(xe=p(xe));function qe(I){try{if(I==xe&&T)return new Uint8Array(T);if(m)return m(I);throw"both async and sync fetching of the wasm failed"}catch(M){ce(M)}}function de(){if(!T&&(u||d)){if(typeof fetch=="function"&&!he(xe))return fetch(xe,{credentials:"same-origin"}).then(function(I){if(!I.ok)throw"failed to load wasm binary file at '"+xe+"'";return I.arrayBuffer()}).catch(function(){return qe(xe)});if(y)return new Promise(function(I,M){y(xe,function(V){I(new Uint8Array(V))},M)})}return Promise.resolve().then(function(){return qe(xe)})}function ht(){var I={a:Je};function M(ue,ge){var me=ue.exports;o.asm=me,_=o.asm.K,ye(_.buffer),Ie=o.asm.M,ie(o.asm.L),Ge()}Ve();function V(ue){M(ue.instance)}function H(ue){return de().then(function(ge){return WebAssembly.instantiate(ge,I)}).then(function(ge){return ge}).then(ue,function(ge){S("failed to asynchronously prepare wasm: "+ge),ce(ge)})}function q(){return!T&&typeof WebAssembly.instantiateStreaming=="function"&&!Se(xe)&&!he(xe)&&!h&&typeof fetch=="function"?fetch(xe,{credentials:"same-origin"}).then(function(ue){var ge=WebAssembly.instantiateStreaming(ue,I);return ge.then(V,function(me){return S("wasm streaming compile failed: "+me),S("falling back to ArrayBuffer instantiation"),H(V)})}):H(V)}if(o.instantiateWasm)try{var Y=o.instantiateWasm(I,M);return Y}catch(ue){S("Module.instantiateWasm callback failed with error: "+ue),s(ue)}return q().catch(s),{}}function vt(I){this.name="ExitStatus",this.message="Program terminated with exit("+I+")",this.status=I}function gt(I){for(;I.length>0;)I.shift()(o)}function Me(I){this.excPtr=I,this.ptr=I-24,this.set_type=function(M){le[this.ptr+4>>2]=M},this.get_type=function(){return le[this.ptr+4>>2]},this.set_destructor=function(M){le[this.ptr+8>>2]=M},this.get_destructor=function(){return le[this.ptr+8>>2]},this.set_refcount=function(M){te[this.ptr>>2]=M},this.set_caught=function(M){M=M?1:0,F[this.ptr+12>>0]=M},this.get_caught=function(){return F[this.ptr+12>>0]!=0},this.set_rethrown=function(M){M=M?1:0,F[this.ptr+13>>0]=M},this.get_rethrown=function(){return F[this.ptr+13>>0]!=0},this.init=function(M,V){this.set_adjusted_ptr(0),this.set_type(M),this.set_destructor(V),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var M=te[this.ptr>>2];te[this.ptr>>2]=M+1},this.release_ref=function(){var M=te[this.ptr>>2];return te[this.ptr>>2]=M-1,M===1},this.set_adjusted_ptr=function(M){le[this.ptr+16>>2]=M},this.get_adjusted_ptr=function(){return le[this.ptr+16>>2]},this.get_exception_ptr=function(){var M=we(this.get_type());if(M)return le[this.excPtr>>2];var V=this.get_adjusted_ptr();return V!==0?V:this.excPtr}}function Ze(I,M,V){var H=new Me(I);throw H.init(M,V),I}var it={};function rt(I){for(;I.length;){var M=I.pop(),V=I.pop();V(M)}}function ut(I){return this.fromWireType(te[I>>2])}var Dt={},wt={},kt={},qt=48,In=57;function Vn(I){if(I===void 0)return"_unknown";I=I.replace(/[^a-zA-Z0-9_]/g,"$");var M=I.charCodeAt(0);return M>=qt&&M<=In?"_"+I:I}function zt(I,M){return I=Vn(I),new Function("body","return function "+I+`() { "use strict"; return body.apply(this, arguments); }; -`)(A)}function Ke(R,A){var $=pr(A,function(ee){this.name=A,this.message=ee;var he=new Error(ee).stack;he!==void 0&&(this.stack=this.toString()+` -`+he.replace(/^Error(:[^\n]*)?\n/,""))});return $.prototype=Object.create(R.prototype),$.prototype.constructor=$,$.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},$}var dt=void 0;function zt(R){throw new dt(R)}function Tn(R,A,$){R.forEach(function(we){Nn[we]=A});function ee(we){var Me=$(we);Me.length!==R.length&&zt("Mismatched type converter count");for(var Fe=0;Fe{dn.hasOwnProperty(we)?he[Me]=dn[we]:(ve.push(we),$t.hasOwnProperty(we)||($t[we]=[]),$t[we].push(()=>{he[Me]=dn[we],++Ce,Ce===ve.length&&ee(he)}))}),ve.length===0&&ee(he)}function Fr(R){var A=Bt[R];delete Bt[R];var $=A.rawConstructor,ee=A.rawDestructor,he=A.fields,ve=he.map(Ce=>Ce.getterReturnType).concat(he.map(Ce=>Ce.setterArgumentType));Tn([R],ve,Ce=>{var we={};return he.forEach((Me,Fe)=>{var Be=Me.fieldName,Qe=Ce[Fe],et=Me.getter,yt=Me.getterContext,It=Ce[Fe+he.length],Tt=Me.setter,Mt=Me.setterContext;we[Be]={read:Ot=>Qe.fromWireType(et(yt,Ot)),write:(Ot,In)=>{var lt=[];Tt(Mt,Ot,It.toWireType(lt,In)),Ct(lt)}}}),[{name:A.name,fromWireType:function(Me){var Fe={};for(var Be in we)Fe[Be]=we[Be].read(Me);return ee(Me),Fe},toWireType:function(Me,Fe){for(var Be in we)if(!(Be in Fe))throw new TypeError('Missing field: "'+Be+'"');var Qe=$();for(Be in we)we[Be].write(Qe,Fe[Be]);return Me!==null&&Me.push(ee,Qe),Qe},argPackAdvance:8,readValueFromPointer:Ht,destructorFunction:ee}]})}function qt(R,A,$,ee,he){}function Sr(R){switch(R){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+R)}}function Rn(){for(var R=new Array(256),A=0;A<256;++A)R[A]=String.fromCharCode(A);yi=R}var yi=void 0;function mr(R){for(var A="",$=R;X[$];)A+=yi[X[$++]];return A}var yo=void 0;function hn(R){throw new yo(R)}function _n(R,A,$={}){if(!("argPackAdvance"in A))throw new TypeError("registerType registeredInstance requires argPackAdvance");var ee=A.name;if(R||hn('type "'+ee+'" must have a positive integer typeid pointer'),dn.hasOwnProperty(R)){if($.ignoreDuplicateRegistrations)return;hn("Cannot register type '"+ee+"' twice")}if(dn[R]=A,delete Nn[R],$t.hasOwnProperty(R)){var he=$t[R];delete $t[R],he.forEach(ve=>ve())}}function fs(R,A,$,ee,he){var ve=Sr($);A=mr(A),_n(R,{name:A,fromWireType:function(Ce){return!!Ce},toWireType:function(Ce,we){return we?ee:he},argPackAdvance:8,readValueFromPointer:function(Ce){var we;if($===1)we=G;else if($===2)we=ne;else if($===4)we=me;else throw new TypeError("Unknown boolean type size: "+A);return this.fromWireType(we[Ce>>ve])},destructorFunction:null})}function Ai(R){if(!(this instanceof Or)||!(R instanceof Or))return!1;for(var A=this.$$.ptrType.registeredClass,$=this.$$.ptr,ee=R.$$.ptrType.registeredClass,he=R.$$.ptr;A.baseClass;)$=A.upcast($),A=A.baseClass;for(;ee.baseClass;)he=ee.upcast(he),ee=ee.baseClass;return A===ee&&$===he}function Ur(R){return{count:R.count,deleteScheduled:R.deleteScheduled,preservePointerOnDelete:R.preservePointerOnDelete,ptr:R.ptr,ptrType:R.ptrType,smartPtr:R.smartPtr,smartPtrType:R.smartPtrType}}function Tr(R){function A($){return $.$$.ptrType.registeredClass.name}hn(A(R)+" instance already deleted")}var ht=!1;function ri(R){}function oo(R){R.smartPtr?R.smartPtrType.rawDestructor(R.smartPtr):R.ptrType.registeredClass.rawDestructor(R.ptr)}function ta(R){R.count.value-=1;var A=R.count.value===0;A&&oo(R)}function Br(R,A,$){if(A===$)return R;if($.baseClass===void 0)return null;var ee=Br(R,A,$.baseClass);return ee===null?null:$.downcast(ee)}var na={};function wo(){return Object.keys(wa).length}function ao(){var R=[];for(var A in wa)wa.hasOwnProperty(A)&&R.push(wa[A]);return R}var ya=[];function ji(){for(;ya.length;){var R=ya.pop();R.$$.deleteScheduled=!1,R.delete()}}var xo=void 0;function Fa(R){xo=R,ya.length&&xo&&xo(ji)}function Hi(){o.getInheritedInstanceCount=wo,o.getLiveInheritedInstances=ao,o.flushPendingDeletes=ji,o.setDelayFunction=Fa}var wa={};function jt(R,A){for(A===void 0&&hn("ptr should not be undefined");R.baseClass;)A=R.upcast(A),R=R.baseClass;return A}function ds(R,A){return A=jt(R,A),wa[A]}function No(R,A){(!A.ptrType||!A.ptr)&&zt("makeClassHandle requires ptr and ptrType");var $=!!A.smartPtrType,ee=!!A.smartPtr;return $!==ee&&zt("Both smartPtrType and smartPtr must be specified"),A.count={value:1},Ei(Object.create(R,{$$:{value:A}}))}function Bc(R){var A=this.getPointee(R);if(!A)return this.destructor(R),null;var $=ds(this.registeredClass,A);if($!==void 0){if($.$$.count.value===0)return $.$$.ptr=A,$.$$.smartPtr=R,$.clone();var ee=$.clone();return this.destructor(R),ee}function he(){return this.isSmartPointer?No(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:A,smartPtrType:this,smartPtr:R}):No(this.registeredClass.instancePrototype,{ptrType:this,ptr:R})}var ve=this.registeredClass.getActualType(A),Ce=na[ve];if(!Ce)return he.call(this);var we;this.isConst?we=Ce.constPointerType:we=Ce.pointerType;var Me=Br(A,this.registeredClass,we.registeredClass);return Me===null?he.call(this):this.isSmartPointer?No(we.registeredClass.instancePrototype,{ptrType:we,ptr:Me,smartPtrType:this,smartPtr:R}):No(we.registeredClass.instancePrototype,{ptrType:we,ptr:Me})}function Ei(R){return typeof FinalizationRegistry>"u"?(Ei=A=>A,R):(ht=new FinalizationRegistry(A=>{ta(A.$$)}),Ei=A=>{var $=A.$$,ee=!!$.smartPtr;if(ee){var he={$$:$};ht.register(A,he,A)}return A},ri=A=>ht.unregister(A),Ei(R))}function Li(){if(this.$$.ptr||Tr(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var R=Ei(Object.create(Object.getPrototypeOf(this),{$$:{value:Ur(this.$$)}}));return R.$$.count.value+=1,R.$$.deleteScheduled=!1,R}function so(){this.$$.ptr||Tr(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&hn("Object already scheduled for deletion"),ri(this),ta(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function hs(){return!this.$$.ptr}function vn(){return this.$$.ptr||Tr(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&hn("Object already scheduled for deletion"),ya.push(this),ya.length===1&&xo&&xo(ji),this.$$.deleteScheduled=!0,this}function Co(){Or.prototype.isAliasOf=Ai,Or.prototype.clone=Li,Or.prototype.delete=so,Or.prototype.isDeleted=hs,Or.prototype.deleteLater=vn}function Or(){}function Ua(R,A,$){if(R[A].overloadTable===void 0){var ee=R[A];R[A]=function(){return R[A].overloadTable.hasOwnProperty(arguments.length)||hn("Function '"+$+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+R[A].overloadTable+")!"),R[A].overloadTable[arguments.length].apply(this,arguments)},R[A].overloadTable=[],R[A].overloadTable[ee.argCount]=ee}}function Ki(R,A,$){o.hasOwnProperty(R)?(hn("Cannot register public name '"+R+"' twice"),Ua(o,R,R),o.hasOwnProperty($)&&hn("Cannot register multiple overloads of a function with the same number of arguments ("+$+")!"),o[R].overloadTable[$]=A):o[R]=A}function Fs(R,A,$,ee,he,ve,Ce,we){this.name=R,this.constructor=A,this.instancePrototype=$,this.rawDestructor=ee,this.baseClass=he,this.getActualType=ve,this.upcast=Ce,this.downcast=we,this.pureVirtualFunctions=[]}function So(R,A,$){for(;A!==$;)A.upcast||hn("Expected null or instance of "+$.name+", got an instance of "+A.name),R=A.upcast(R),A=A.baseClass;return R}function Us(R,A){if(A===null)return this.isReference&&hn("null is not a valid "+this.name),0;A.$$||hn('Cannot pass "'+ko(A)+'" as a '+this.name),A.$$.ptr||hn("Cannot pass deleted object as a pointer of type "+this.name);var $=A.$$.ptrType.registeredClass,ee=So(A.$$.ptr,$,this.registeredClass);return ee}function Xr(R,A){var $;if(A===null)return this.isReference&&hn("null is not a valid "+this.name),this.isSmartPointer?($=this.rawConstructor(),R!==null&&R.push(this.rawDestructor,$),$):0;A.$$||hn('Cannot pass "'+ko(A)+'" as a '+this.name),A.$$.ptr||hn("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&A.$$.ptrType.isConst&&hn("Cannot convert argument of type "+(A.$$.smartPtrType?A.$$.smartPtrType.name:A.$$.ptrType.name)+" to parameter type "+this.name);var ee=A.$$.ptrType.registeredClass;if($=So(A.$$.ptr,ee,this.registeredClass),this.isSmartPointer)switch(A.$$.smartPtr===void 0&&hn("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:A.$$.smartPtrType===this?$=A.$$.smartPtr:hn("Cannot convert argument of type "+(A.$$.smartPtrType?A.$$.smartPtrType.name:A.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:$=A.$$.smartPtr;break;case 2:if(A.$$.smartPtrType===this)$=A.$$.smartPtr;else{var he=A.clone();$=this.rawShare($,To.toHandle(function(){he.delete()})),R!==null&&R.push(this.rawDestructor,$)}break;default:hn("Unsupporting sharing policy")}return $}function gs(R,A){if(A===null)return this.isReference&&hn("null is not a valid "+this.name),0;A.$$||hn('Cannot pass "'+ko(A)+'" as a '+this.name),A.$$.ptr||hn("Cannot pass deleted object as a pointer of type "+this.name),A.$$.ptrType.isConst&&hn("Cannot convert argument of type "+A.$$.ptrType.name+" to parameter type "+this.name);var $=A.$$.ptrType.registeredClass,ee=So(A.$$.ptr,$,this.registeredClass);return ee}function co(R){return this.rawGetPointee&&(R=this.rawGetPointee(R)),R}function ra(R){this.rawDestructor&&this.rawDestructor(R)}function ps(R){R!==null&&R.delete()}function Ba(){Ni.prototype.getPointee=co,Ni.prototype.destructor=ra,Ni.prototype.argPackAdvance=8,Ni.prototype.readValueFromPointer=Ht,Ni.prototype.deleteObject=ps,Ni.prototype.fromWireType=Bc}function Ni(R,A,$,ee,he,ve,Ce,we,Me,Fe,Be){this.name=R,this.registeredClass=A,this.isReference=$,this.isConst=ee,this.isSmartPointer=he,this.pointeeType=ve,this.sharingPolicy=Ce,this.rawGetPointee=we,this.rawConstructor=Me,this.rawShare=Fe,this.rawDestructor=Be,!he&&A.baseClass===void 0?ee?(this.toWireType=Us,this.destructorFunction=null):(this.toWireType=gs,this.destructorFunction=null):this.toWireType=Xr}function Xi(R,A,$){o.hasOwnProperty(R)||zt("Replacing nonexistant public symbol"),o[R].overloadTable!==void 0&&$!==void 0?o[R].overloadTable[$]=A:(o[R]=A,o[R].argCount=$)}function Gc(R,A,$){var ee=o["dynCall_"+R];return $&&$.length?ee.apply(null,[A].concat($)):ee.call(null,A)}var ii=[];function bi(R){var A=ii[R];return A||(R>=ii.length&&(ii.length=R+1),ii[R]=A=Ee.get(R)),A}function Bs(R,A,$){if(R.includes("j"))return Gc(R,A,$);var ee=bi(A).apply(null,$);return ee}function oi(R,A){var $=[];return function(){return $.length=0,Object.assign($,arguments),Bs(R,A,$)}}function Di(R,A){R=mr(R);function $(){return R.includes("j")?oi(R,A):bi(A)}var ee=$();return typeof ee!="function"&&hn("unknown function pointer with signature "+R+": "+A),ee}var xa=void 0;function Gs(R){var A=re(R),$=mr(A);return Xt(A),$}function Ca(R,A){var $=[],ee={};function he(ve){if(!ee[ve]&&!dn[ve]){if(Nn[ve]){Nn[ve].forEach(he);return}$.push(ve),ee[ve]=!0}}throw A.forEach(he),new xa(R+": "+$.map(Gs).join([", "]))}function wi(R,A,$,ee,he,ve,Ce,we,Me,Fe,Be,Qe,et){Be=mr(Be),ve=Di(he,ve),we&&(we=Di(Ce,we)),Fe&&(Fe=Di(Me,Fe)),et=Di(Qe,et);var yt=Cr(Be);Ki(yt,function(){Ca("Cannot construct "+Be+" due to unbound types",[ee])}),Tn([R,A,$],ee?[ee]:[],function(It){It=It[0];var Tt,Mt;ee?(Tt=It.registeredClass,Mt=Tt.instancePrototype):Mt=Or.prototype;var Ot=pr(yt,function(){if(Object.getPrototypeOf(this)!==In)throw new yo("Use 'new' to construct "+Be);if(lt.constructor_body===void 0)throw new yo(Be+" has no accessible constructor");var si=lt.constructor_body[arguments.length];if(si===void 0)throw new yo("Tried to invoke ctor of "+Be+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(lt.constructor_body).toString()+") parameters instead!");return si.apply(this,arguments)}),In=Object.create(Mt,{constructor:{value:Ot}});Ot.prototype=In;var lt=new Fs(Be,Ot,In,et,Tt,ve,we,Fe),Rt=new Ni(Be,lt,!0,!1,!1),tn=new Ni(Be+"*",lt,!1,!1,!1),rr=new Ni(Be+" const*",lt,!1,!0,!1);return na[R]={pointerType:tn,constPointerType:rr},Xi(yt,Ot),[Rt,tn,rr]})}function Pr(R,A){for(var $=[],ee=0;ee>2]);return $}function Ga(R,A){if(!(R instanceof Function))throw new TypeError("new_ called with constructor type "+typeof R+" which is not a function");var $=pr(R.name||"unknownFunctionName",function(){});$.prototype=R.prototype;var ee=new $,he=R.apply(ee,A);return he instanceof Object?he:ee}function ai(R,A,$,ee,he){var ve=A.length;ve<2&&hn("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var Ce=A[1]!==null&&$!==null,we=!1,Me=1;Me{wt.hasOwnProperty(ge)?q[me]=wt[ge]:(Y.push(ge),Dt.hasOwnProperty(ge)||(Dt[ge]=[]),Dt[ge].push(()=>{q[me]=wt[ge],++ue,ue===Y.length&&H(q)}))}),Y.length===0&&H(q)}function dt(I){var M=it[I];delete it[I];var V=M.rawConstructor,H=M.rawDestructor,q=M.fields,Y=q.map(ue=>ue.getterReturnType).concat(q.map(ue=>ue.setterArgumentType));We([I],Y,ue=>{var ge={};return q.forEach((me,_e)=>{var De=me.fieldName,Fe=ue[_e],je=me.getter,Ke=me.getterContext,tt=ue[_e+q.length],ct=me.setter,yt=me.setterContext;ge[De]={read:Zt=>Fe.fromWireType(je(Ke,Zt)),write:(Zt,Vt)=>{var Rt=[];ct(yt,Zt,tt.toWireType(Rt,Vt)),rt(Rt)}}}),[{name:M.name,fromWireType:function(me){var _e={};for(var De in ge)_e[De]=ge[De].read(me);return H(me),_e},toWireType:function(me,_e){for(var De in ge)if(!(De in _e))throw new TypeError('Missing field: "'+De+'"');var Fe=V();for(De in ge)ge[De].write(Fe,_e[De]);return me!==null&&me.push(H,Fe),Fe},argPackAdvance:8,readValueFromPointer:ut,destructorFunction:H}]})}function Ut(I,M,V,H,q){}function En(I){switch(I){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+I)}}function qr(){for(var I=new Array(256),M=0;M<256;++M)I[M]=String.fromCharCode(M);Gt=I}var Gt=void 0;function Mn(I){for(var M="",V=I;U[V];)M+=Gt[U[V++]];return M}var sn=void 0;function tn(I){throw new sn(I)}function Ti(I,M,V={}){if(!("argPackAdvance"in M))throw new TypeError("registerType registeredInstance requires argPackAdvance");var H=M.name;if(I||tn('type "'+H+'" must have a positive integer typeid pointer'),wt.hasOwnProperty(I)){if(V.ignoreDuplicateRegistrations)return;tn("Cannot register type '"+H+"' twice")}if(wt[I]=M,delete kt[I],Dt.hasOwnProperty(I)){var q=Dt[I];delete Dt[I],q.forEach(Y=>Y())}}function Xi(I,M,V,H,q){var Y=En(V);M=Mn(M),Ti(I,{name:M,fromWireType:function(ue){return!!ue},toWireType:function(ue,ge){return ge?H:q},argPackAdvance:8,readValueFromPointer:function(ue){var ge;if(V===1)ge=F;else if(V===2)ge=W;else if(V===4)ge=te;else throw new TypeError("Unknown boolean type size: "+M);return this.fromWireType(ge[ue>>Y])},destructorFunction:null})}function $o(I){if(!(this instanceof ki)||!(I instanceof ki))return!1;for(var M=this.$$.ptrType.registeredClass,V=this.$$.ptr,H=I.$$.ptrType.registeredClass,q=I.$$.ptr;M.baseClass;)V=M.upcast(V),M=M.baseClass;for(;H.baseClass;)q=H.upcast(q),H=H.baseClass;return M===H&&V===q}function Jn(I){return{count:I.count,deleteScheduled:I.deleteScheduled,preservePointerOnDelete:I.preservePointerOnDelete,ptr:I.ptr,ptrType:I.ptrType,smartPtr:I.smartPtr,smartPtrType:I.smartPtrType}}function Co(I){function M(V){return V.$$.ptrType.registeredClass.name}tn(M(I)+" instance already deleted")}var gi=!1;function Oa(I){}function Kn(I){I.smartPtr?I.smartPtrType.rawDestructor(I.smartPtr):I.ptrType.registeredClass.rawDestructor(I.ptr)}function _t(I){I.count.value-=1;var M=I.count.value===0;M&&Kn(I)}function ln(I,M,V){if(M===V)return I;if(V.baseClass===void 0)return null;var H=ln(I,M,V.baseClass);return H===null?null:V.downcast(H)}var mr={};function la(){return Object.keys(so).length}function Vr(){var I=[];for(var M in so)so.hasOwnProperty(M)&&I.push(so[M]);return I}var So=[];function Ni(){for(;So.length;){var I=So.pop();I.$$.deleteScheduled=!1,I.delete()}}var Xr=void 0;function Os(I){Xr=I,So.length&&Xr&&Xr(Ni)}function To(){o.getInheritedInstanceCount=la,o.getLiveInheritedInstances=Vr,o.flushPendingDeletes=Ni,o.setDelayFunction=Os}var so={};function Ma(I,M){for(M===void 0&&tn("ptr should not be undefined");I.baseClass;)M=I.upcast(M),I=I.baseClass;return M}function _i(I,M){return M=Ma(I,M),so[M]}function Pa(I,M){(!M.ptrType||!M.ptr)&&kr("makeClassHandle requires ptr and ptrType");var V=!!M.smartPtrType,H=!!M.smartPtr;return V!==H&&kr("Both smartPtrType and smartPtr must be specified"),M.count={value:1},Yi(Object.create(I,{$$:{value:M}}))}function Ht(I){var M=this.getPointee(I);if(!M)return this.destructor(I),null;var V=_i(this.registeredClass,M);if(V!==void 0){if(V.$$.count.value===0)return V.$$.ptr=M,V.$$.smartPtr=I,V.clone();var H=V.clone();return this.destructor(I),H}function q(){return this.isSmartPointer?Pa(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:M,smartPtrType:this,smartPtr:I}):Pa(this.registeredClass.instancePrototype,{ptrType:this,ptr:I})}var Y=this.registeredClass.getActualType(M),ue=mr[Y];if(!ue)return q.call(this);var ge;this.isConst?ge=ue.constPointerType:ge=ue.pointerType;var me=ln(M,this.registeredClass,ge.registeredClass);return me===null?q.call(this):this.isSmartPointer?Pa(ge.registeredClass.instancePrototype,{ptrType:ge,ptr:me,smartPtrType:this,smartPtr:I}):Pa(ge.registeredClass.instancePrototype,{ptrType:ge,ptr:me})}function Yi(I){return typeof FinalizationRegistry>"u"?(Yi=M=>M,I):(gi=new FinalizationRegistry(M=>{_t(M.$$)}),Yi=M=>{var V=M.$$,H=!!V.smartPtr;if(H){var q={$$:V};gi.register(M,q,M)}return M},Oa=M=>gi.unregister(M),Yi(I))}function Ms(){if(this.$$.ptr||Co(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var I=Yi(Object.create(Object.getPrototypeOf(this),{$$:{value:Jn(this.$$)}}));return I.$$.count.value+=1,I.$$.deleteScheduled=!1,I}function ua(){this.$$.ptr||Co(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&tn("Object already scheduled for deletion"),Oa(this),_t(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function co(){return!this.$$.ptr}function _o(){return this.$$.ptr||Co(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&tn("Object already scheduled for deletion"),So.push(this),So.length===1&&Xr&&Xr(Ni),this.$$.deleteScheduled=!0,this}function ci(){ki.prototype.isAliasOf=$o,ki.prototype.clone=Ms,ki.prototype.delete=ua,ki.prototype.isDeleted=co,ki.prototype.deleteLater=_o}function ki(){}function vn(I,M,V){if(I[M].overloadTable===void 0){var H=I[M];I[M]=function(){return I[M].overloadTable.hasOwnProperty(arguments.length)||tn("Function '"+V+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+I[M].overloadTable+")!"),I[M].overloadTable[arguments.length].apply(this,arguments)},I[M].overloadTable=[],I[M].overloadTable[H.argCount]=H}}function Ei(I,M,V){o.hasOwnProperty(I)?(tn("Cannot register public name '"+I+"' twice"),vn(o,I,I),o.hasOwnProperty(V)&&tn("Cannot register multiple overloads of a function with the same number of arguments ("+V+")!"),o[I].overloadTable[V]=M):o[I]=M}function jo(I,M,V,H,q,Y,ue,ge){this.name=I,this.constructor=M,this.instancePrototype=V,this.rawDestructor=H,this.baseClass=q,this.getActualType=Y,this.upcast=ue,this.downcast=ge,this.pureVirtualFunctions=[]}function Ji(I,M,V){for(;M!==V;)M.upcast||tn("Expected null or instance of "+V.name+", got an instance of "+M.name),I=M.upcast(I),M=M.baseClass;return I}function Vi(I,M){if(M===null)return this.isReference&&tn("null is not a valid "+this.name),0;M.$$||tn('Cannot pass "'+Na(M)+'" as a '+this.name),M.$$.ptr||tn("Cannot pass deleted object as a pointer of type "+this.name);var V=M.$$.ptrType.registeredClass,H=Ji(M.$$.ptr,V,this.registeredClass);return H}function Ps(I,M){var V;if(M===null)return this.isReference&&tn("null is not a valid "+this.name),this.isSmartPointer?(V=this.rawConstructor(),I!==null&&I.push(this.rawDestructor,V),V):0;M.$$||tn('Cannot pass "'+Na(M)+'" as a '+this.name),M.$$.ptr||tn("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&M.$$.ptrType.isConst&&tn("Cannot convert argument of type "+(M.$$.smartPtrType?M.$$.smartPtrType.name:M.$$.ptrType.name)+" to parameter type "+this.name);var H=M.$$.ptrType.registeredClass;if(V=Ji(M.$$.ptr,H,this.registeredClass),this.isSmartPointer)switch(M.$$.smartPtr===void 0&&tn("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:M.$$.smartPtrType===this?V=M.$$.smartPtr:tn("Cannot convert argument of type "+(M.$$.smartPtrType?M.$$.smartPtrType.name:M.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:V=M.$$.smartPtr;break;case 2:if(M.$$.smartPtrType===this)V=M.$$.smartPtr;else{var q=M.clone();V=this.rawShare(V,eo.toHandle(function(){q.delete()})),I!==null&&I.push(this.rawDestructor,V)}break;default:tn("Unsupporting sharing policy")}return V}function Ho(I,M){if(M===null)return this.isReference&&tn("null is not a valid "+this.name),0;M.$$||tn('Cannot pass "'+Na(M)+'" as a '+this.name),M.$$.ptr||tn("Cannot pass deleted object as a pointer of type "+this.name),M.$$.ptrType.isConst&&tn("Cannot convert argument of type "+M.$$.ptrType.name+" to parameter type "+this.name);var V=M.$$.ptrType.registeredClass,H=Ji(M.$$.ptr,V,this.registeredClass);return H}function Rs(I){return this.rawGetPointee&&(I=this.rawGetPointee(I)),I}function lo(I){this.rawDestructor&&this.rawDestructor(I)}function Zi(I){I!==null&&I.delete()}function Qi(){Fr.prototype.getPointee=Rs,Fr.prototype.destructor=lo,Fr.prototype.argPackAdvance=8,Fr.prototype.readValueFromPointer=ut,Fr.prototype.deleteObject=Zi,Fr.prototype.fromWireType=Ht}function Fr(I,M,V,H,q,Y,ue,ge,me,_e,De){this.name=I,this.registeredClass=M,this.isReference=V,this.isConst=H,this.isSmartPointer=q,this.pointeeType=Y,this.sharingPolicy=ue,this.rawGetPointee=ge,this.rawConstructor=me,this.rawShare=_e,this.rawDestructor=De,!q&&M.baseClass===void 0?H?(this.toWireType=Vi,this.destructorFunction=null):(this.toWireType=Ho,this.destructorFunction=null):this.toWireType=Ps}function bc(I,M,V){o.hasOwnProperty(I)||kr("Replacing nonexistant public symbol"),o[I].overloadTable!==void 0&&V!==void 0||(o[I]=M,o[I].argCount=V)}function Ko(I,M,V){var H=o["dynCall_"+I];return V&&V.length?H.apply(null,[M].concat(V)):H.call(null,M)}var qo=[];function Ir(I){var M=qo[I];return M||(I>=qo.length&&(qo.length=I+1),qo[I]=M=Ie.get(I)),M}function Dc(I,M,V){if(I.includes("j"))return Ko(I,M,V);var H=Ir(M).apply(null,V);return H}function bi(I,M){var V=[];return function(){return V.length=0,Object.assign(V,arguments),Dc(I,M,V)}}function Ur(I,M){I=Mn(I);function V(){return I.includes("j")?bi(I,M):Ir(M)}var H=V();return typeof H!="function"&&tn("unknown function pointer with signature "+I+": "+M),H}var rs=void 0;function Eo(I){var M=Lt(I),V=Mn(M);return pt(M),V}function pi(I,M){var V=[],H={};function q(Y){if(!H[Y]&&!wt[Y]){if(kt[Y]){kt[Y].forEach(q);return}V.push(Y),H[Y]=!0}}throw M.forEach(q),new rs(I+": "+V.map(Eo).join([", "]))}function fa(I,M,V,H,q,Y,ue,ge,me,_e,De,Fe,je){De=Mn(De),Y=Ur(q,Y),ge&&(ge=Ur(ue,ge)),_e&&(_e=Ur(me,_e)),je=Ur(Fe,je);var Ke=Vn(De);Ei(Ke,function(){pi("Cannot construct "+De+" due to unbound types",[H])}),We([I,M,V],H?[H]:[],function(tt){tt=tt[0];var ct,yt;H?(ct=tt.registeredClass,yt=ct.instancePrototype):yt=ki.prototype;var Zt=zt(Ke,function(){if(Object.getPrototypeOf(this)!==Vt)throw new sn("Use 'new' to construct "+De);if(Rt.constructor_body===void 0)throw new sn(De+" has no accessible constructor");var Tt=Rt.constructor_body[arguments.length];if(Tt===void 0)throw new sn("Tried to invoke ctor of "+De+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(Rt.constructor_body).toString()+") parameters instead!");return Tt.apply(this,arguments)}),Vt=Object.create(yt,{constructor:{value:Zt}});Zt.prototype=Vt;var Rt=new jo(De,Zt,Vt,je,ct,Y,ge,_e),Nt=new Fr(De,Rt,!0,!1,!1),Rn=new Fr(De+"*",Rt,!1,!1,!1),ft=new Fr(De+" const*",Rt,!1,!0,!1);return mr[I]={pointerType:Rn,constPointerType:ft},bc(Ke,Zt),[Nt,Rn,ft]})}function Ls(I,M){for(var V=[],H=0;H>2]);return V}function is(I,M){if(!(I instanceof Function))throw new TypeError("new_ called with constructor type "+typeof I+" which is not a function");var V=zt(I.name||"unknownFunctionName",function(){});V.prototype=I.prototype;var H=new V,q=I.apply(H,M);return q instanceof Object?q:H}function Ra(I,M,V,H,q){var Y=M.length;Y<2&&tn("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var ue=M[1]!==null&&V!==null,ge=!1,me=1;me0?", ":"")+Qe),et+=(Fe?"var rv = ":"")+"invoker(fn"+(Qe.length>0?", ":"")+Qe+`); -`,we)et+=`runDestructors(destructors); -`;else for(var Me=Ce?1:2;Me0?", ":"")+Fe),je+=(_e?"var rv = ":"")+"invoker(fn"+(Fe.length>0?", ":"")+Fe+`); +`,ge)je+=`runDestructors(destructors); +`;else for(var me=ue?1:2;me0);var Ce=Pr(A,$);he=Di(ee,he),Tn([],[R],function(we){we=we[0];var Me="constructor "+we.name;if(we.registeredClass.constructor_body===void 0&&(we.registeredClass.constructor_body=[]),we.registeredClass.constructor_body[A-1]!==void 0)throw new yo("Cannot register multiple constructors with identical number of parameters ("+(A-1)+") for class '"+we.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return we.registeredClass.constructor_body[A-1]=()=>{Ca("Cannot construct "+we.name+" due to unbound types",Ce)},Tn([],Ce,function(Fe){return Fe.splice(1,0,null),we.registeredClass.constructor_body[A-1]=ai(Me,Fe,null,he,ve),[]}),[]})}function $s(R,A,$,ee,he,ve,Ce,we){var Me=Pr($,ee);A=mr(A),ve=Di(he,ve),Tn([],[R],function(Fe){Fe=Fe[0];var Be=Fe.name+"."+A;A.startsWith("@@")&&(A=Symbol[A.substring(2)]),we&&Fe.registeredClass.pureVirtualFunctions.push(A);function Qe(){Ca("Cannot call "+Be+" due to unbound types",Me)}var et=Fe.registeredClass.instancePrototype,yt=et[A];return yt===void 0||yt.overloadTable===void 0&&yt.className!==Fe.name&&yt.argCount===$-2?(Qe.argCount=$-2,Qe.className=Fe.name,et[A]=Qe):(Ua(et,A,Be),et[A].overloadTable[$-2]=Qe),Tn([],Me,function(It){var Tt=ai(Be,It,Fe,ve,Ce);return et[A].overloadTable===void 0?(Tt.argCount=$-2,et[A]=Tt):et[A].overloadTable[$-2]=Tt,[]}),[]})}var Ii=[],qr=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function kn(R){R>4&&--qr[R].refcount===0&&(qr[R]=void 0,Ii.push(R))}function zs(){for(var R=0,A=5;A(R||hn("Cannot use deleted val. handle = "+R),qr[R].value),toHandle:R=>{switch(R){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:{var A=Ii.length?Ii.pop():qr.length;return qr[A]={refcount:1,value:R},A}}}};function Wc(R,A){A=mr(A),_n(R,{name:A,fromWireType:function($){var ee=To.toValue($);return kn($),ee},toWireType:function($,ee){return To.toHandle(ee)},argPackAdvance:8,readValueFromPointer:Ht,destructorFunction:null})}function ko(R){if(R===null)return"null";var A=typeof R;return A==="object"||A==="array"||A==="function"?R.toString():""+R}function $c(R,A){switch(A){case 2:return function($){return this.fromWireType(ye[$>>2])};case 3:return function($){return this.fromWireType(Ie[$>>3])};default:throw new TypeError("Unknown float type: "+R)}}function lo(R,A,$){var ee=Sr($);A=mr(A),_n(R,{name:A,fromWireType:function(he){return he},toWireType:function(he,ve){return ve},argPackAdvance:8,readValueFromPointer:$c(A,ee),destructorFunction:null})}function zc(R,A,$){switch(A){case 0:return $?function(he){return G[he]}:function(he){return X[he]};case 1:return $?function(he){return ne[he>>1]}:function(he){return ue[he>>1]};case 2:return $?function(he){return me[he>>2]}:function(he){return ge[he>>2]};default:throw new TypeError("Unknown integer type: "+R)}}function js(R,A,$,ee,he){A=mr(A);var ve=Sr($),Ce=Qe=>Qe;if(ee===0){var we=32-8*$;Ce=Qe=>Qe<>>we}var Me=A.includes("unsigned"),Fe=(Qe,et)=>{},Be;Me?Be=function(Qe,et){return Fe(et,this.name),et>>>0}:Be=function(Qe,et){return Fe(et,this.name),et},_n(R,{name:A,fromWireType:Ce,toWireType:Be,argPackAdvance:8,readValueFromPointer:zc(A,ve,ee!==0),destructorFunction:null})}function jc(R,A,$){var ee=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],he=ee[A];function ve(Ce){Ce=Ce>>2;var we=ge,Me=we[Ce],Fe=we[Ce+1];return new he(F,Fe,Me)}$=mr($),_n(R,{name:$,fromWireType:ve,argPackAdvance:8,readValueFromPointer:ve},{ignoreDuplicateRegistrations:!0})}function $l(R,A){A=mr(A);var $=A==="std::string";_n(R,{name:A,fromWireType:function(ee){var he=ge[ee>>2],ve=ee+4,Ce;if($)for(var we=ve,Me=0;Me<=he;++Me){var Fe=ve+Me;if(Me==he||X[Fe]==0){var Be=Fe-we,Qe=L(we,Be);Ce===void 0?Ce=Qe:(Ce+="\0",Ce+=Qe),we=Fe+1}}else{for(var et=new Array(he),Me=0;Me>2]=ve,$&&Ce)j(he,Me,ve+1);else if(Ce)for(var Fe=0;Fe255&&(Xt(Me),hn("String has UTF-16 code units that do not fit in 8 bits")),X[Me+Fe]=Be}else for(var Fe=0;Fe>1,he=ee+A/2;!(ee>=he)&&ue[ee];)++ee;if($=ee<<1,$-R>32&&Hc)return Hc.decode(X.subarray(R,$));for(var ve="",Ce=0;!(Ce>=A/2);++Ce){var we=ne[R+Ce*2>>1];if(we==0)break;ve+=String.fromCharCode(we)}return ve}function jl(R,A,$){if($===void 0&&($=2147483647),$<2)return 0;$-=2;for(var ee=A,he=$>1]=Ce,A+=2}return ne[A>>1]=0,A-ee}function Hl(R){return R.length*2}function Hs(R,A){for(var $=0,ee="";!($>=A/4);){var he=me[R+$*4>>2];if(he==0)break;if(++$,he>=65536){var ve=he-65536;ee+=String.fromCharCode(55296|ve>>10,56320|ve&1023)}else ee+=String.fromCharCode(he)}return ee}function Kc(R,A,$){if($===void 0&&($=2147483647),$<4)return 0;for(var ee=A,he=ee+$-4,ve=0;ve=55296&&Ce<=57343){var we=R.charCodeAt(++ve);Ce=65536+((Ce&1023)<<10)|we&1023}if(me[A>>2]=Ce,A+=4,A+4>he)break}return me[A>>2]=0,A-ee}function Xc(R){for(var A=0,$=0;$=55296&&ee<=57343&&++$,A+=4}return A}function Kl(R,A,$){$=mr($);var ee,he,ve,Ce,we;A===2?(ee=zl,he=jl,Ce=Hl,ve=()=>ue,we=1):A===4&&(ee=Hs,he=Kc,Ce=Xc,ve=()=>ge,we=2),_n(R,{name:$,fromWireType:function(Me){for(var Fe=ge[Me>>2],Be=ve(),Qe,et=Me+4,yt=0;yt<=Fe;++yt){var It=Me+4+yt*A;if(yt==Fe||Be[It>>we]==0){var Tt=It-et,Mt=ee(et,Tt);Qe===void 0?Qe=Mt:(Qe+="\0",Qe+=Mt),et=It+A}}return Xt(Me),Qe},toWireType:function(Me,Fe){typeof Fe!="string"&&hn("Cannot pass non-string to C++ string type "+$);var Be=Ce(Fe),Qe=Jt(4+Be+A);return ge[Qe>>2]=Be>>we,he(Fe,Qe+4,Be+A),Me!==null&&Me.push(Xt,Qe),Qe},argPackAdvance:8,readValueFromPointer:Ht,destructorFunction:function(Me){Xt(Me)}})}function Ks(R,A,$,ee,he,ve){Bt[R]={name:mr(A),rawConstructor:Di($,ee),rawDestructor:Di(he,ve),fields:[]}}function Xs(R,A,$,ee,he,ve,Ce,we,Me,Fe){Bt[R].fields.push({fieldName:mr(A),getterReturnType:$,getter:Di(ee,he),getterContext:ve,setterArgumentType:Ce,setter:Di(we,Me),setterContext:Fe})}function qc(R,A){A=mr(A),_n(R,{isVoid:!0,name:A,argPackAdvance:0,fromWireType:function(){},toWireType:function($,ee){}})}function qs(){throw 1/0}var Ys={};function Js(R){var A=Ys[R];return A===void 0?mr(R):A}function ms(){return typeof globalThis=="object"?globalThis:function(){return Function}()("return this")()}function Yc(R){return R===0?To.toHandle(ms()):(R=Js(R),To.toHandle(ms()[R]))}function Jc(R){R>4&&(qr[R].refcount+=1)}function Zs(R,A){var $=dn[R];return $===void 0&&hn(A+" has unknown type "+Gs(R)),$}function Qs(R){for(var A="",$=0;$ge,he="return function emval_allocator_"+R+`(constructor, argTypes, args) { +`),je+=`} +`,tt.push(je);var Zt=is(Function,tt).apply(null,ct);return Zt}function qn(I,M,V,H,q,Y){b(M>0);var ue=Ls(M,V);q=Ur(H,q),We([],[I],function(ge){ge=ge[0];var me="constructor "+ge.name;if(ge.registeredClass.constructor_body===void 0&&(ge.registeredClass.constructor_body=[]),ge.registeredClass.constructor_body[M-1]!==void 0)throw new sn("Cannot register multiple constructors with identical number of parameters ("+(M-1)+") for class '"+ge.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return ge.registeredClass.constructor_body[M-1]=()=>{pi("Cannot construct "+ge.name+" due to unbound types",ue)},We([],ue,function(_e){return _e.splice(1,0,null),ge.registeredClass.constructor_body[M-1]=Ra(me,_e,null,q,Y),[]}),[]})}function La(I,M,V,H,q,Y,ue,ge){var me=Ls(V,H);M=Mn(M),Y=Ur(q,Y),We([],[I],function(_e){_e=_e[0];var De=_e.name+"."+M;M.startsWith("@@")&&(M=Symbol[M.substring(2)]),ge&&_e.registeredClass.pureVirtualFunctions.push(M);function Fe(){pi("Cannot call "+De+" due to unbound types",me)}var je=_e.registeredClass.instancePrototype,Ke=je[M];return Ke===void 0||Ke.overloadTable===void 0&&Ke.className!==_e.name&&Ke.argCount===V-2?(Fe.argCount=V-2,Fe.className=_e.name,je[M]=Fe):(vn(je,M,De),je[M].overloadTable[V-2]=Fe),We([],me,function(tt){var ct=Ra(De,tt,_e,Y,ue);return je[M].overloadTable===void 0?(ct.argCount=V-2,je[M]=ct):je[M].overloadTable[V-2]=ct,[]}),[]})}var li=[],Br=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function Ic(I){I>4&&--Br[I].refcount===0&&(Br[I]=void 0,li.push(I))}function mi(){for(var I=0,M=5;M(I||tn("Cannot use deleted val. handle = "+I),Br[I].value),toHandle:I=>{switch(I){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:{var M=li.length?li.pop():Br.length;return Br[M]={refcount:1,value:I},M}}}};function Aa(I,M){M=Mn(M),Ti(I,{name:M,fromWireType:function(V){var H=eo.toValue(V);return Ic(V),H},toWireType:function(V,H){return eo.toHandle(H)},argPackAdvance:8,readValueFromPointer:ut,destructorFunction:null})}function Na(I){if(I===null)return"null";var M=typeof I;return M==="object"||M==="array"||M==="function"?I.toString():""+I}function Fi(I,M){switch(M){case 2:return function(V){return this.fromWireType(ve[V>>2])};case 3:return function(V){return this.fromWireType(pe[V>>3])};default:throw new TypeError("Unknown float type: "+I)}}function As(I,M,V){var H=En(V);M=Mn(M),Ti(I,{name:M,fromWireType:function(q){return q},toWireType:function(q,Y){return Y},argPackAdvance:8,readValueFromPointer:Fi(M,H),destructorFunction:null})}function da(I,M,V){switch(M){case 0:return V?function(q){return F[q]}:function(q){return U[q]};case 1:return V?function(q){return W[q>>1]}:function(q){return J[q>>1]};case 2:return V?function(q){return te[q>>2]}:function(q){return le[q>>2]};default:throw new TypeError("Unknown integer type: "+I)}}function Oc(I,M,V,H,q){M=Mn(M);var Y=En(V),ue=Fe=>Fe;if(H===0){var ge=32-8*V;ue=Fe=>Fe<>>ge}var me=M.includes("unsigned"),_e=(Fe,je)=>{},De;me?De=function(Fe,je){return _e(je,this.name),je>>>0}:De=function(Fe,je){return _e(je,this.name),je},Ti(I,{name:M,fromWireType:ue,toWireType:De,argPackAdvance:8,readValueFromPointer:da(M,Y,H!==0),destructorFunction:null})}function Xo(I,M,V){var H=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],q=H[M];function Y(ue){ue=ue>>2;var ge=le,me=ge[ue],_e=ge[ue+1];return new q(j,_e,me)}V=Mn(V),Ti(I,{name:V,fromWireType:Y,argPackAdvance:8,readValueFromPointer:Y},{ignoreDuplicateRegistrations:!0})}function ka(I,M){M=Mn(M);var V=M==="std::string";Ti(I,{name:M,fromWireType:function(H){var q=le[H>>2],Y=H+4,ue;if(V)for(var ge=Y,me=0;me<=q;++me){var _e=Y+me;if(me==q||U[_e]==0){var De=_e-ge,Fe=L(ge,De);ue===void 0?ue=Fe:(ue+="\0",ue+=Fe),ge=_e+1}}else{for(var je=new Array(q),me=0;me>2]=Y,V&&ue)k(q,me,Y+1);else if(ue)for(var _e=0;_e255&&(pt(me),tn("String has UTF-16 code units that do not fit in 8 bits")),U[me+_e]=De}else for(var _e=0;_e>1,q=H+M/2;!(H>=q)&&J[H];)++H;if(V=H<<1,V-I>32&&Mc)return Mc.decode(U.subarray(I,V));for(var Y="",ue=0;!(ue>=M/2);++ue){var ge=W[I+ue*2>>1];if(ge==0)break;Y+=String.fromCharCode(ge)}return Y}function _l(I,M,V){if(V===void 0&&(V=2147483647),V<2)return 0;V-=2;for(var H=M,q=V>1]=ue,M+=2}return W[M>>1]=0,M-H}function El(I){return I.length*2}function bl(I,M){for(var V=0,H="";!(V>=M/4);){var q=te[I+V*4>>2];if(q==0)break;if(++V,q>=65536){var Y=q-65536;H+=String.fromCharCode(55296|Y>>10,56320|Y&1023)}else H+=String.fromCharCode(q)}return H}function Dl(I,M,V){if(V===void 0&&(V=2147483647),V<4)return 0;for(var H=M,q=H+V-4,Y=0;Y=55296&&ue<=57343){var ge=I.charCodeAt(++Y);ue=65536+((ue&1023)<<10)|ge&1023}if(te[M>>2]=ue,M+=4,M+4>q)break}return te[M>>2]=0,M-H}function Il(I){for(var M=0,V=0;V=55296&&H<=57343&&++V,M+=4}return M}function Ns(I,M,V){V=Mn(V);var H,q,Y,ue,ge;M===2?(H=as,q=_l,ue=El,Y=()=>J,ge=1):M===4&&(H=bl,q=Dl,ue=Il,Y=()=>le,ge=2),Ti(I,{name:V,fromWireType:function(me){for(var _e=le[me>>2],De=Y(),Fe,je=me+4,Ke=0;Ke<=_e;++Ke){var tt=me+4+Ke*M;if(Ke==_e||De[tt>>ge]==0){var ct=tt-je,yt=H(je,ct);Fe===void 0?Fe=yt:(Fe+="\0",Fe+=yt),je=tt+M}}return pt(me),Fe},toWireType:function(me,_e){typeof _e!="string"&&tn("Cannot pass non-string to C++ string type "+V);var De=ue(_e),Fe=at(4+De+M);return le[Fe>>2]=De>>ge,q(_e,Fe+4,De+M),me!==null&&me.push(pt,Fe),Fe},argPackAdvance:8,readValueFromPointer:ut,destructorFunction:function(me){pt(me)}})}function Ol(I,M,V,H,q,Y){it[I]={name:Mn(M),rawConstructor:Ur(V,H),rawDestructor:Ur(q,Y),fields:[]}}function ks(I,M,V,H,q,Y,ue,ge,me,_e){it[I].fields.push({fieldName:Mn(M),getterReturnType:V,getter:Ur(H,q),getterContext:Y,setterArgumentType:ue,setter:Ur(ge,me),setterContext:_e})}function Ml(I,M){M=Mn(M),Ti(I,{isVoid:!0,name:M,argPackAdvance:0,fromWireType:function(){},toWireType:function(V,H){}})}function Vs(){throw 1/0}var Fs={};function Pc(I){var M=Fs[I];return M===void 0?Mn(I):M}function ss(){return typeof globalThis=="object"?globalThis:function(){return Function}()("return this")()}function Us(I){return I===0?eo.toHandle(ss()):(I=Pc(I),eo.toHandle(ss()[I]))}function Bs(I){I>4&&(Br[I].refcount+=1)}function cs(I,M){var V=wt[I];return V===void 0&&tn(M+" has unknown type "+Eo(I)),V}function Rc(I){for(var M="",V=0;Vle,q="return function emval_allocator_"+I+`(constructor, argTypes, args) { var HEAPU32 = getMemory(); -`,$=0;$>2)], 'parameter "+$+`'); -var arg`+$+" = argType"+$+`.readValueFromPointer(args); -args += argType`+$+`['argPackAdvance']; +`,V=0;V>2)], 'parameter "+V+`'); +var arg`+V+" = argType"+V+`.readValueFromPointer(args); +args += argType`+V+`['argPackAdvance']; argTypes += 4; -`;return he+="var obj = new constructor("+A+`); +`;return q+="var obj = new constructor("+M+`); return valueToHandle(obj); } -`,new Function("requireRegisteredType","Module","valueToHandle","getMemory",he)(Zs,o,To.toHandle,ee)}var ec={};function Zc(R,A,$,ee){R=To.toValue(R);var he=ec[A];return he||(he=Qs(A),ec[A]=he),he(R,$,ee)}function Qc(R,A){R=Zs(R,"_emval_take_value");var $=R.readValueFromPointer(A);return To.toHandle($)}function el(){pe("")}function vs(R,A,$){X.copyWithin(R,A,A+$)}function tl(){return 2147483648}function Vo(R){try{return b.grow(R-F.byteLength+65535>>>16),Pe(b.buffer),1}catch{}}function tc(R){var A=X.length;R=R>>>0;var $=tl();if(R>$)return!1;let ee=(Me,Fe)=>Me+(Fe-Me%Fe)%Fe;for(var he=1;he<=4;he*=2){var ve=A*(1+.2/he);ve=Math.min(ve,R+100663296);var Ce=Math.min($,ee(Math.max(R,ve),65536)),we=Vo(Ce);if(we)return!0}return!1}var ki={};function nc(){return l||"./this.program"}function oa(){if(!oa.strings){var R=(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:R,_:nc()};for(var $ in ki)ki[$]===void 0?delete A[$]:A[$]=ki[$];var ee=[];for(var $ in A)ee.push($+"="+A[$]);oa.strings=ee}return oa.strings}function ys(R,A,$){for(var ee=0;ee>0]=R.charCodeAt(ee);G[A>>0]=0}function rc(R,A){var $=0;return oa().forEach(function(ee,he){var ve=A+$;ge[R+he*4>>2]=ve,ys(ee,ve),$+=ee.length+1}),0}function Wa(R,A){var $=oa();ge[R>>2]=$.length;var ee=0;return $.forEach(function(he){ee+=he.length+1}),ge[A>>2]=ee,0}function ic(R){K()||(o.onExit&&o.onExit(R),D=!0),f(R,new Je(R))}function se(R,A){ic(R)}var ce=se;function Se(R){return 52}function We(R,A,$,ee,he){return 70}var Xe=[null,[],[]];function rt(R,A){var $=Xe[R];A===0||A===10?((R===1?S:T)(M($,0)),$.length=0):$.push(A)}function it(R,A,$,ee){for(var he=0,ve=0;ve<$;ve++){var Ce=ge[A>>2],we=ge[A+4>>2];A+=8;for(var Me=0;Me>2]=he,0}function Ze(R){var A=o["_"+R];return A}function st(R,A){G.set(R,A)}function xt(R,A,$,ee,he){var ve={string:It=>{var Tt=0;if(It!=null&&It!==0){var Mt=(It.length<<2)+1;Tt=He(Mt),j(It,Tt,Mt)}return Tt},array:It=>{var Tt=He(It.length);return st(It,Tt),Tt}};function Ce(It){return A==="string"?L(It):A==="boolean"?!!It:It}var we=Ze(R),Me=[],Fe=0;if(ee)for(var Be=0;Be0||(Z(),$e>0))return;function A(){q||(q=!0,o.calledRun=!0,!D&&(ae(),a(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),oe()))}o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),A()},1)):A()}if(o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return J(),i.ready}})();t.exports=r})(yH);var CDe=yH.exports;const SDe=Vl(CDe),TDe=new URL("/static/dv3d/libjpegturbowasm_decode.wasm",import.meta.url),Ly={codec:void 0,decoder:void 0};function _De(){if(Ly.codec)return Promise.resolve();const t=SDe({locateFile:e=>e.endsWith(".wasm")?TDe.toString():e});return new Promise((e,r)=>{t.then(n=>{Ly.codec=n,Ly.decoder=new n.JPEGDecoder,e()},r)})}async function EDe(t,e){await _De();const r=Ly.decoder;r.getEncodedBuffer(t.length).set(t),r.decode();const i=r.getFrameInfo(),o=r.getDecodedBuffer(),a={columns:i.width,rows:i.height,bitsPerPixel:i.bitsPerSample,signed:e.signed,bytesPerPixel:e.bytesPerPixel,componentsPerPixel:i.componentCount},s=bDe(i,o),c={frameInfo:i};return{...e,pixelData:s,imageInfo:a,encodeOptions:c,...c,...a}}function bDe(t,e){return t.isSigned?new Int8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}const DDe="modulepreload",IDe=function(t){return"/static/dv3d/"+t},cO={},wH=function(e,r,n){let i=Promise.resolve();if(r&&r.length>0){document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),s=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));i=Promise.allSettled(r.map(c=>{if(c=IDe(c),c in cO)return;cO[c]=!0;const l=c.endsWith(".css"),f=l?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${f}`))return;const u=document.createElement("link");if(u.rel=l?"stylesheet":DDe,l||(u.as="script"),u.crossOrigin="",u.href=c,s&&u.setAttribute("nonce",s),document.head.appendChild(u),l)return new Promise((d,h)=>{u.addEventListener("load",d),u.addEventListener("error",()=>h(new Error(`Unable to preload CSS for ${c}`)))})}))}function o(a){const s=new Event("vite:preloadError",{cancelable:!0});if(s.payload=a,window.dispatchEvent(s),!s.defaultPrevented)throw a}return i.then(a=>{for(const s of a||[])s.status==="rejected"&&o(s.reason);return e().catch(o)})},x1={JpegImage:void 0,decodeConfig:{}};function MDe(t){return x1.decodeConfig=t,x1.JpegImage?Promise.resolve():new Promise((e,r)=>{wH(()=>import("./jpeg.js"),[]).then(n=>{x1.JpegImage=n.default,e()}).catch(r)})}async function ODe(t,e){if(await MDe(),typeof x1.JpegImage>"u")throw new Error("No JPEG Baseline decoder loaded");const r=new x1.JpegImage;if(r.parse(e),r.colorTransform=!1,t.bitsAllocated===8)return t.pixelData=r.getData(t.columns,t.rows),t;if(t.bitsAllocated===16)return t.pixelData=r.getData16(t.columns,t.rows),t}const C1={DecoderClass:void 0,decodeConfig:{}};function PDe(t){return C1.decodeConfig=t,C1.DecoderClass?Promise.resolve():new Promise((e,r)=>{wH(async()=>{const{Decoder:n}=await import("./lossless.js");return{Decoder:n}},[]).then(({Decoder:n})=>{C1.DecoderClass=n,e()},r)})}async function lO(t,e){if(await PDe(),typeof C1.DecoderClass>"u")throw new Error("No JPEG Lossless decoder loaded");const r=new C1.DecoderClass,n=t.bitsAllocated<=8?1:2,i=e.buffer,o=r.decode(i,e.byteOffset,e.length,n);return t.pixelRepresentation===0?t.bitsAllocated===16?(t.pixelData=new Uint16Array(o.buffer),t):(t.pixelData=new Uint8Array(o.buffer),t):(t.pixelData=new Int16Array(o.buffer),t)}var xH={exports:{}};(function(t,e){var r=(()=>{var n=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(n=n||__filename),function(i){i=i||{};var o=typeof i<"u"?i:{},a,s;o.ready=new Promise(function(se,ce){a=se,s=ce});var c=Object.assign({},o),l=typeof window=="object",f=typeof importScripts=="function",u=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",d="";function h(se){return o.locateFile?o.locateFile(se,d):d+se}var g,p,v;if(u){var y=Dl,m=Dl;f?d=m.dirname(d)+"/":d=__dirname+"/",g=(se,ce)=>(se=le(se)?new URL(se):m.normalize(se),y.readFileSync(se,ce?void 0:"utf8")),v=se=>{var ce=g(se,!0);return ce.buffer||(ce=new Uint8Array(ce)),ce},p=(se,ce,Se)=>{se=le(se)?new URL(se):m.normalize(se),y.readFile(se,function(We,Xe){We?Se(We):ce(Xe.buffer)})},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),process.on("uncaughtException",function(se){if(!(se instanceof Ye))throw se}),process.on("unhandledRejection",function(se){throw se}),o.inspect=function(){return"[Emscripten Module object]"}}else(l||f)&&(f?d=self.location.href:typeof document<"u"&&document.currentScript&&(d=document.currentScript.src),n&&(d=n),d.indexOf("blob:")!==0?d=d.substr(0,d.replace(/[?#].*/,"").lastIndexOf("/")+1):d="",g=se=>{var ce=new XMLHttpRequest;return ce.open("GET",se,!1),ce.send(null),ce.responseText},f&&(v=se=>{var ce=new XMLHttpRequest;return ce.open("GET",se,!1),ce.responseType="arraybuffer",ce.send(null),new Uint8Array(ce.response)}),p=(se,ce,Se)=>{var We=new XMLHttpRequest;We.open("GET",se,!0),We.responseType="arraybuffer",We.onload=()=>{if(We.status==200||We.status==0&&We.response){ce(We.response);return}Se()},We.onerror=Se,We.send(null)});o.print||console.log.bind(console);var w=o.printErr||console.warn.bind(console);Object.assign(o,c),c=null,o.arguments&&o.arguments,o.thisProgram&&o.thisProgram,o.quit&&o.quit;var x;o.wasmBinary&&(x=o.wasmBinary),o.noExitRuntime,typeof WebAssembly!="object"&&Oe("no native wasm support detected");var C,S=!1;function T(se,ce){se||Oe(ce)}var _=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function E(se,ce,Se){for(var We=ce+Se,Xe=ce;se[Xe]&&!(Xe>=We);)++Xe;if(Xe-ce>16&&se.buffer&&_)return _.decode(se.subarray(ce,Xe));for(var rt="";ce>10,56320|xt&1023)}}return rt}function b(se,ce){return se?E(B,se,ce):""}function D(se,ce,Se,We){if(!(We>0))return 0;for(var Xe=Se,rt=Se+We-1,it=0;it=55296&&Ze<=57343){var st=se.charCodeAt(++it);Ze=65536+((Ze&1023)<<10)|st&1023}if(Ze<=127){if(Se>=rt)break;ce[Se++]=Ze}else if(Ze<=2047){if(Se+1>=rt)break;ce[Se++]=192|Ze>>6,ce[Se++]=128|Ze&63}else if(Ze<=65535){if(Se+2>=rt)break;ce[Se++]=224|Ze>>12,ce[Se++]=128|Ze>>6&63,ce[Se++]=128|Ze&63}else{if(Se+3>=rt)break;ce[Se++]=240|Ze>>18,ce[Se++]=128|Ze>>12&63,ce[Se++]=128|Ze>>6&63,ce[Se++]=128|Ze&63}}return ce[Se]=0,Se-Xe}function I(se,ce,Se){return D(se,B,ce,Se)}function P(se){for(var ce=0,Se=0;Se=55296&&We<=57343?(ce+=4,++Se):ce+=3}return ce}var M,L,B,j,V,F,G,X,ne;function ue(se){M=se,o.HEAP8=L=new Int8Array(se),o.HEAP16=j=new Int16Array(se),o.HEAP32=F=new Int32Array(se),o.HEAPU8=B=new Uint8Array(se),o.HEAPU16=V=new Uint16Array(se),o.HEAPU32=G=new Uint32Array(se),o.HEAPF32=X=new Float32Array(se),o.HEAPF64=ne=new Float64Array(se)}o.INITIAL_MEMORY;var me,ge=[],ye=[],Ie=[];function Pe(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)O(o.preRun.shift());fe(ge)}function Ee(){fe(ye)}function H(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)K(o.postRun.shift());fe(Ie)}function O(se){ge.unshift(se)}function Y(se){ye.unshift(se)}function K(se){Ie.unshift(se)}var Z=0,ae=null;function oe(se){Z++,o.monitorRunDependencies&&o.monitorRunDependencies(Z)}function _e(se){if(Z--,o.monitorRunDependencies&&o.monitorRunDependencies(Z),Z==0&&ae){var ce=ae;ae=null,ce()}}function Oe(se){o.onAbort&&o.onAbort(se),se="Aborted("+se+")",w(se),S=!0,se+=". Build with -sASSERTIONS for more info.";var ce=new WebAssembly.RuntimeError(se);throw s(ce),ce}var Ge="data:application/octet-stream;base64,";function $e(se){return se.startsWith(Ge)}function le(se){return se.startsWith("file://")}var de;de="charlswasm_decode.wasm",$e(de)||(de=h(de));function be(se){try{if(se==de&&x)return new Uint8Array(x);if(v)return v(se);throw"both async and sync fetching of the wasm failed"}catch(ce){Oe(ce)}}function pe(){if(!x&&(l||f)){if(typeof fetch=="function"&&!le(de))return fetch(de,{credentials:"same-origin"}).then(function(se){if(!se.ok)throw"failed to load wasm binary file at '"+de+"'";return se.arrayBuffer()}).catch(function(){return be(de)});if(p)return new Promise(function(se,ce){p(de,function(Se){se(new Uint8Array(Se))},ce)})}return Promise.resolve().then(function(){return be(de)})}function Te(){var se={a:tl};function ce(it,Ze){var st=it.exports;o.asm=st,C=o.asm.z,ue(C.buffer),me=o.asm.C,Y(o.asm.A),_e()}oe();function Se(it){ce(it.instance)}function We(it){return pe().then(function(Ze){return WebAssembly.instantiate(Ze,se)}).then(function(Ze){return Ze}).then(it,function(Ze){w("failed to asynchronously prepare wasm: "+Ze),Oe(Ze)})}function Xe(){return!x&&typeof WebAssembly.instantiateStreaming=="function"&&!$e(de)&&!le(de)&&!u&&typeof fetch=="function"?fetch(de,{credentials:"same-origin"}).then(function(it){var Ze=WebAssembly.instantiateStreaming(it,se);return Ze.then(Se,function(st){return w("wasm streaming compile failed: "+st),w("falling back to ArrayBuffer instantiation"),We(Se)})}):We(Se)}if(o.instantiateWasm)try{var rt=o.instantiateWasm(se,ce);return rt}catch(it){w("Module.instantiateWasm callback failed with error: "+it),s(it)}return Xe().catch(s),{}}function Ye(se){this.name="ExitStatus",this.message="Program terminated with exit("+se+")",this.status=se}function fe(se){for(;se.length>0;)se.shift()(o)}function ft(se){this.excPtr=se,this.ptr=se-24,this.set_type=function(ce){G[this.ptr+4>>2]=ce},this.get_type=function(){return G[this.ptr+4>>2]},this.set_destructor=function(ce){G[this.ptr+8>>2]=ce},this.get_destructor=function(){return G[this.ptr+8>>2]},this.set_refcount=function(ce){F[this.ptr>>2]=ce},this.set_caught=function(ce){ce=ce?1:0,L[this.ptr+12>>0]=ce},this.get_caught=function(){return L[this.ptr+12>>0]!=0},this.set_rethrown=function(ce){ce=ce?1:0,L[this.ptr+13>>0]=ce},this.get_rethrown=function(){return L[this.ptr+13>>0]!=0},this.init=function(ce,Se){this.set_adjusted_ptr(0),this.set_type(ce),this.set_destructor(Se),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var ce=F[this.ptr>>2];F[this.ptr>>2]=ce+1},this.release_ref=function(){var ce=F[this.ptr>>2];return F[this.ptr>>2]=ce-1,ce===1},this.set_adjusted_ptr=function(ce){G[this.ptr+16>>2]=ce},this.get_adjusted_ptr=function(){return G[this.ptr+16>>2]},this.get_exception_ptr=function(){var ce=rc(this.get_type());if(ce)return G[this.excPtr>>2];var Se=this.get_adjusted_ptr();return Se!==0?Se:this.excPtr}}function gt(se,ce,Se){var We=new ft(se);throw We.init(ce,Se),se}var mt={};function Re(se){for(;se.length;){var ce=se.pop(),Se=se.pop();Se(ce)}}function Je(se){return this.fromWireType(F[se>>2])}var at={},tt={},wt={},Bt=48,Ct=57;function Ht(se){if(se===void 0)return"_unknown";se=se.replace(/[^a-zA-Z0-9_]/g,"$");var ce=se.charCodeAt(0);return ce>=Bt&&ce<=Ct?"_"+se:se}function $t(se,ce){return se=Ht(se),new Function("body","return function "+se+`() { +`,new Function("requireRegisteredType","Module","valueToHandle","getMemory",q)(cs,o,eo.toHandle,H)}var Gs={};function Lc(I,M,V,H){I=eo.toValue(I);var q=Gs[M];return q||(q=Rc(M),Gs[M]=q),q(I,V,H)}function Ws(I,M){I=cs(I,"_emval_take_value");var V=I.readValueFromPointer(M);return eo.toHandle(V)}function Ac(){ce("")}function Nc(I,M,V){U.copyWithin(I,M,M+V)}function kc(){return 2147483648}function Vc(I){try{return _.grow(I-j.byteLength+65535>>>16),ye(_.buffer),1}catch{}}function ls(I){var M=U.length;I=I>>>0;var V=kc();if(I>V)return!1;let H=(me,_e)=>me+(_e-me%_e)%_e;for(var q=1;q<=4;q*=2){var Y=M*(1+.2/q);Y=Math.min(Y,I+100663296);var ue=Math.min(V,H(Math.max(I,Y),65536)),ge=Vc(ue);if(ge)return!0}return!1}var us={};function bo(){return l||"./this.program"}function Yo(){if(!Yo.strings){var I=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",M={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:I,_:bo()};for(var V in us)us[V]===void 0?delete M[V]:M[V]=us[V];var H=[];for(var V in M)H.push(V+"="+M[V]);Yo.strings=H}return Yo.strings}function to(I,M,V){for(var H=0;H>0]=I.charCodeAt(H);F[M>>0]=0}function zs(I,M){var V=0;return Yo().forEach(function(H,q){var Y=M+V;le[I+q*4>>2]=Y,to(H,Y),V+=H.length+1}),0}function $s(I,M){var V=Yo();le[I>>2]=V.length;var H=0;return V.forEach(function(q){H+=q.length+1}),le[M>>2]=H,0}function fs(I){f(I,new vt(I))}function js(I,M){fs(I)}var Va=js;function Hs(I){return 52}function ae(I,M,V,H,q){return 70}var se=[null,[],[]];function Ce(I,M){var V=se[I];M===0||M===10?((I===1?C:S)(O(V,0)),V.length=0):V.push(M)}function Ue(I,M,V,H){for(var q=0,Y=0;Y>2],ge=le[M+4>>2];M+=8;for(var me=0;me>2]=q,0}function Ye(I){var M=o["_"+I];return M}function Qe(I,M){F.set(I,M)}function et(I,M,V,H,q){var Y={string:tt=>{var ct=0;if(tt!=null&&tt!==0){var yt=(tt.length<<2)+1;ct=ee(yt),k(tt,ct,yt)}return ct},array:tt=>{var ct=ee(tt.length);return Qe(tt,ct),ct}};function ue(tt){return M==="string"?L(tt):M==="boolean"?!!tt:tt}var ge=Ye(I),me=[],_e=0;if(H)for(var De=0;De0||(R(),Te>0))return;function M(){A||(A=!0,o.calledRun=!0,!E&&(X(),a(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),K()))}o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),M()},1)):M()}if(o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return N(),i.ready}})();t.exports=r})(v$);var TEe=v$.exports;const _Ee=yl(TEe),EEe=new URL("/static/dv3d/libjpegturbowasm_decode.wasm",import.meta.url),qv={codec:void 0,decoder:void 0};function bEe(){if(qv.codec)return Promise.resolve();const t=_Ee({locateFile:e=>e.endsWith(".wasm")?EEe.toString():e});return new Promise((e,r)=>{t.then(n=>{qv.codec=n,qv.decoder=new n.JPEGDecoder,e()},r)})}async function DEe(t,e){await bEe();const r=qv.decoder;r.getEncodedBuffer(t.length).set(t),r.decode();const i=r.getFrameInfo(),o=r.getDecodedBuffer(),a={columns:i.width,rows:i.height,bitsPerPixel:i.bitsPerSample,signed:e.signed,bytesPerPixel:e.bytesPerPixel,componentsPerPixel:i.componentCount},s=IEe(i,o),c={frameInfo:i};return{...e,pixelData:s,imageInfo:a,encodeOptions:c,...c,...a}}function IEe(t,e){return t.isSigned?new Int8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}const OEe="modulepreload",MEe=function(t){return"/static/dv3d/"+t},H7={},y$=function(e,r,n){let i=Promise.resolve();if(r&&r.length>0){document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),s=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));i=Promise.allSettled(r.map(c=>{if(c=MEe(c),c in H7)return;H7[c]=!0;const l=c.endsWith(".css"),f=l?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${f}`))return;const u=document.createElement("link");if(u.rel=l?"stylesheet":OEe,l||(u.as="script"),u.crossOrigin="",u.href=c,s&&u.setAttribute("nonce",s),document.head.appendChild(u),l)return new Promise((d,h)=>{u.addEventListener("load",d),u.addEventListener("error",()=>h(new Error(`Unable to preload CSS for ${c}`)))})}))}function o(a){const s=new Event("vite:preloadError",{cancelable:!0});if(s.payload=a,window.dispatchEvent(s),!s.defaultPrevented)throw a}return i.then(a=>{for(const s of a||[])s.status==="rejected"&&o(s.reason);return e().catch(o)})},Vp={JpegImage:void 0,decodeConfig:{}};function PEe(t){return Vp.decodeConfig=t,Vp.JpegImage?Promise.resolve():new Promise((e,r)=>{y$(()=>import("./jpeg.js"),[]).then(n=>{Vp.JpegImage=n.default,e()}).catch(r)})}async function REe(t,e){if(await PEe(),typeof Vp.JpegImage>"u")throw new Error("No JPEG Baseline decoder loaded");const r=new Vp.JpegImage;if(r.parse(e),r.colorTransform=!1,t.bitsAllocated===8)return t.pixelData=r.getData(t.columns,t.rows),t;if(t.bitsAllocated===16)return t.pixelData=r.getData16(t.columns,t.rows),t}const Fp={jpeg:void 0,decodeConfig:{}};function LEe(t){return Fp.decodeConfig=t,Fp.jpeg?Promise.resolve():new Promise((e,r)=>{y$(async()=>{const{Decoder:n}=await import("./lossless.js");return{Decoder:n}},[]).then(({Decoder:n})=>{const i=new n;Fp.jpeg=i,e()},r)})}async function K7(t,e){if(await LEe(),typeof Fp.jpeg>"u")throw new Error("No JPEG Lossless decoder loaded");const r=t.bitsAllocated<=8?1:2,n=e.buffer,i=Fp.jpeg.decode(n,e.byteOffset,e.length,r);return t.pixelRepresentation===0?t.bitsAllocated===16?(t.pixelData=new Uint16Array(i.buffer),t):(t.pixelData=new Uint8Array(i.buffer),t):(t.pixelData=new Int16Array(i.buffer),t)}var w$={exports:{}};(function(t,e){var r=(()=>{var n=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(n=n||__filename),function(i){i=i||{};var o=typeof i<"u"?i:{},a,s;o.ready=new Promise(function(ae,se){a=ae,s=se});var c=Object.assign({},o),l=typeof window=="object",f=typeof importScripts=="function",u=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",d="";function h(ae){return o.locateFile?o.locateFile(ae,d):d+ae}var g,p,v;if(u){var y=ll,m=ll;f?d=m.dirname(d)+"/":d=__dirname+"/",g=(ae,se)=>(ae=ce(ae)?new URL(ae):m.normalize(ae),y.readFileSync(ae,se?void 0:"utf8")),v=ae=>{var se=g(ae,!0);return se.buffer||(se=new Uint8Array(se)),se},p=(ae,se,Ce)=>{ae=ce(ae)?new URL(ae):m.normalize(ae),y.readFile(ae,function(Ue,Ye){Ue?Ce(Ue):se(Ye.buffer)})},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),process.on("uncaughtException",function(ae){if(!(ae instanceof qe))throw ae}),process.on("unhandledRejection",function(ae){throw ae}),o.inspect=function(){return"[Emscripten Module object]"}}else(l||f)&&(f?d=self.location.href:typeof document<"u"&&document.currentScript&&(d=document.currentScript.src),n&&(d=n),d.indexOf("blob:")!==0?d=d.substr(0,d.replace(/[?#].*/,"").lastIndexOf("/")+1):d="",g=ae=>{var se=new XMLHttpRequest;return se.open("GET",ae,!1),se.send(null),se.responseText},f&&(v=ae=>{var se=new XMLHttpRequest;return se.open("GET",ae,!1),se.responseType="arraybuffer",se.send(null),new Uint8Array(se.response)}),p=(ae,se,Ce)=>{var Ue=new XMLHttpRequest;Ue.open("GET",ae,!0),Ue.responseType="arraybuffer",Ue.onload=()=>{if(Ue.status==200||Ue.status==0&&Ue.response){se(Ue.response);return}Ce()},Ue.onerror=Ce,Ue.send(null)});o.print||console.log.bind(console);var w=o.printErr||console.warn.bind(console);Object.assign(o,c),c=null,o.arguments&&o.arguments,o.thisProgram&&o.thisProgram,o.quit&&o.quit;var x;o.wasmBinary&&(x=o.wasmBinary),o.noExitRuntime,typeof WebAssembly!="object"&&Oe("no native wasm support detected");var C,S=!1;function T(ae,se){ae||Oe(se)}var _=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function E(ae,se,Ce){for(var Ue=se+Ce,Ye=se;ae[Ye]&&!(Ye>=Ue);)++Ye;if(Ye-se>16&&ae.buffer&&_)return _.decode(ae.subarray(se,Ye));for(var Qe="";se>10,56320|pt&1023)}}return Qe}function b(ae,se){return ae?E(G,ae,se):""}function D(ae,se,Ce,Ue){if(!(Ue>0))return 0;for(var Ye=Ce,Qe=Ce+Ue-1,et=0;et=55296&&Je<=57343){var at=ae.charCodeAt(++et);Je=65536+((Je&1023)<<10)|at&1023}if(Je<=127){if(Ce>=Qe)break;se[Ce++]=Je}else if(Je<=2047){if(Ce+1>=Qe)break;se[Ce++]=192|Je>>6,se[Ce++]=128|Je&63}else if(Je<=65535){if(Ce+2>=Qe)break;se[Ce++]=224|Je>>12,se[Ce++]=128|Je>>6&63,se[Ce++]=128|Je&63}else{if(Ce+3>=Qe)break;se[Ce++]=240|Je>>18,se[Ce++]=128|Je>>12&63,se[Ce++]=128|Je>>6&63,se[Ce++]=128|Je&63}}return se[Ce]=0,Ce-Ye}function O(ae,se,Ce){return D(ae,G,se,Ce)}function L(ae){for(var se=0,Ce=0;Ce=55296&&Ue<=57343?(se+=4,++Ce):se+=3}return se}var P,k,G,j,F,U,W,J,te;function le(ae){P=ae,o.HEAP8=k=new Int8Array(ae),o.HEAP16=j=new Int16Array(ae),o.HEAP32=U=new Int32Array(ae),o.HEAPU8=G=new Uint8Array(ae),o.HEAPU16=F=new Uint16Array(ae),o.HEAPU32=W=new Uint32Array(ae),o.HEAPF32=J=new Float32Array(ae),o.HEAPF64=te=new Float64Array(ae)}o.INITIAL_MEMORY;var ve,pe=[],ye=[],Ie=[];function Le(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)R(o.preRun.shift());de(pe)}function be(){de(ye)}function $(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)K(o.postRun.shift());de(Ie)}function R(ae){pe.unshift(ae)}function X(ae){ye.unshift(ae)}function K(ae){Ie.unshift(ae)}var Z=0,ie=null;function oe(ae){Z++,o.monitorRunDependencies&&o.monitorRunDependencies(Z)}function Te(ae){if(Z--,o.monitorRunDependencies&&o.monitorRunDependencies(Z),Z==0&&ie){var se=ie;ie=null,se()}}function Oe(ae){o.onAbort&&o.onAbort(ae),ae="Aborted("+ae+")",w(ae),S=!0,ae+=". Build with -sASSERTIONS for more info.";var se=new WebAssembly.RuntimeError(ae);throw s(se),se}var Ve="data:application/octet-stream;base64,";function Ge(ae){return ae.startsWith(Ve)}function ce(ae){return ae.startsWith("file://")}var fe;fe="charlswasm_decode.wasm",Ge(fe)||(fe=h(fe));function Se(ae){try{if(ae==fe&&x)return new Uint8Array(x);if(v)return v(ae);throw"both async and sync fetching of the wasm failed"}catch(se){Oe(se)}}function he(){if(!x&&(l||f)){if(typeof fetch=="function"&&!ce(fe))return fetch(fe,{credentials:"same-origin"}).then(function(ae){if(!ae.ok)throw"failed to load wasm binary file at '"+fe+"'";return ae.arrayBuffer()}).catch(function(){return Se(fe)});if(p)return new Promise(function(ae,se){p(fe,function(Ce){ae(new Uint8Array(Ce))},se)})}return Promise.resolve().then(function(){return Se(fe)})}function xe(){var ae={a:us};function se(et,Je){var at=et.exports;o.asm=at,C=o.asm.z,le(C.buffer),ve=o.asm.C,X(o.asm.A),Te()}oe();function Ce(et){se(et.instance)}function Ue(et){return he().then(function(Je){return WebAssembly.instantiate(Je,ae)}).then(function(Je){return Je}).then(et,function(Je){w("failed to asynchronously prepare wasm: "+Je),Oe(Je)})}function Ye(){return!x&&typeof WebAssembly.instantiateStreaming=="function"&&!Ge(fe)&&!ce(fe)&&!u&&typeof fetch=="function"?fetch(fe,{credentials:"same-origin"}).then(function(et){var Je=WebAssembly.instantiateStreaming(et,ae);return Je.then(Ce,function(at){return w("wasm streaming compile failed: "+at),w("falling back to ArrayBuffer instantiation"),Ue(Ce)})}):Ue(Ce)}if(o.instantiateWasm)try{var Qe=o.instantiateWasm(ae,se);return Qe}catch(et){w("Module.instantiateWasm callback failed with error: "+et),s(et)}return Ye().catch(s),{}}function qe(ae){this.name="ExitStatus",this.message="Program terminated with exit("+ae+")",this.status=ae}function de(ae){for(;ae.length>0;)ae.shift()(o)}function ht(ae){this.excPtr=ae,this.ptr=ae-24,this.set_type=function(se){W[this.ptr+4>>2]=se},this.get_type=function(){return W[this.ptr+4>>2]},this.set_destructor=function(se){W[this.ptr+8>>2]=se},this.get_destructor=function(){return W[this.ptr+8>>2]},this.set_refcount=function(se){U[this.ptr>>2]=se},this.set_caught=function(se){se=se?1:0,k[this.ptr+12>>0]=se},this.get_caught=function(){return k[this.ptr+12>>0]!=0},this.set_rethrown=function(se){se=se?1:0,k[this.ptr+13>>0]=se},this.get_rethrown=function(){return k[this.ptr+13>>0]!=0},this.init=function(se,Ce){this.set_adjusted_ptr(0),this.set_type(se),this.set_destructor(Ce),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var se=U[this.ptr>>2];U[this.ptr>>2]=se+1},this.release_ref=function(){var se=U[this.ptr>>2];return U[this.ptr>>2]=se-1,se===1},this.set_adjusted_ptr=function(se){W[this.ptr+16>>2]=se},this.get_adjusted_ptr=function(){return W[this.ptr+16>>2]},this.get_exception_ptr=function(){var se=js(this.get_type());if(se)return W[this.excPtr>>2];var Ce=this.get_adjusted_ptr();return Ce!==0?Ce:this.excPtr}}function vt(ae,se,Ce){var Ue=new ht(ae);throw Ue.init(se,Ce),ae}var gt={};function Me(ae){for(;ae.length;){var se=ae.pop(),Ce=ae.pop();Ce(se)}}function Ze(ae){return this.fromWireType(U[ae>>2])}var it={},rt={},ut={},Dt=48,wt=57;function kt(ae){if(ae===void 0)return"_unknown";ae=ae.replace(/[^a-zA-Z0-9_]/g,"$");var se=ae.charCodeAt(0);return se>=Dt&&se<=wt?"_"+ae:ae}function qt(ae,se){return ae=kt(ae),new Function("body","return function "+ae+`() { "use strict"; return body.apply(this, arguments); }; -`)(ce)}function dn(se,ce){var Se=$t(ce,function(We){this.name=ce,this.message=We;var Xe=new Error(We).stack;Xe!==void 0&&(this.stack=this.toString()+` -`+Xe.replace(/^Error(:[^\n]*)?\n/,""))});return Se.prototype=Object.create(se.prototype),Se.prototype.constructor=Se,Se.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},Se}var Nn=void 0;function Kt(se){throw new Nn(se)}function qn(se,ce,Se){se.forEach(function(Ze){wt[Ze]=ce});function We(Ze){var st=Se(Ze);st.length!==se.length&&Kt("Mismatched type converter count");for(var xt=0;xt{tt.hasOwnProperty(Ze)?Xe[st]=tt[Ze]:(rt.push(Ze),at.hasOwnProperty(Ze)||(at[Ze]=[]),at[Ze].push(()=>{Xe[st]=tt[Ze],++it,it===rt.length&&We(Xe)}))}),rt.length===0&&We(Xe)}function Cr(se){var ce=mt[se];delete mt[se];var Se=ce.rawConstructor,We=ce.rawDestructor,Xe=ce.fields,rt=Xe.map(it=>it.getterReturnType).concat(Xe.map(it=>it.setterArgumentType));qn([se],rt,it=>{var Ze={};return Xe.forEach((st,xt)=>{var Ut=st.fieldName,Jt=it[xt],Xt=st.getter,re=st.getterContext,te=it[xt+Xe.length],xe=st.setter,Ae=st.setterContext;Ze[Ut]={read:He=>Jt.fromWireType(Xt(re,He)),write:(He,ct)=>{var z=[];xe(Ae,He,te.toWireType(z,ct)),Re(z)}}}),[{name:ce.name,fromWireType:function(st){var xt={};for(var Ut in Ze)xt[Ut]=Ze[Ut].read(st);return We(st),xt},toWireType:function(st,xt){for(var Ut in Ze)if(!(Ut in xt))throw new TypeError('Missing field: "'+Ut+'"');var Jt=Se();for(Ut in Ze)Ze[Ut].write(Jt,xt[Ut]);return st!==null&&st.push(We,Jt),Jt},argPackAdvance:8,readValueFromPointer:Je,destructorFunction:We}]})}function pr(se,ce,Se,We,Xe){}function Ke(se){switch(se){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+se)}}function dt(){for(var se=new Array(256),ce=0;ce<256;++ce)se[ce]=String.fromCharCode(ce);zt=se}var zt=void 0;function Tn(se){for(var ce="",Se=se;B[Se];)ce+=zt[B[Se++]];return ce}var Fr=void 0;function qt(se){throw new Fr(se)}function Sr(se,ce,Se={}){if(!("argPackAdvance"in ce))throw new TypeError("registerType registeredInstance requires argPackAdvance");var We=ce.name;if(se||qt('type "'+We+'" must have a positive integer typeid pointer'),tt.hasOwnProperty(se)){if(Se.ignoreDuplicateRegistrations)return;qt("Cannot register type '"+We+"' twice")}if(tt[se]=ce,delete wt[se],at.hasOwnProperty(se)){var Xe=at[se];delete at[se],Xe.forEach(rt=>rt())}}function Rn(se,ce,Se,We,Xe){var rt=Ke(Se);ce=Tn(ce),Sr(se,{name:ce,fromWireType:function(it){return!!it},toWireType:function(it,Ze){return Ze?We:Xe},argPackAdvance:8,readValueFromPointer:function(it){var Ze;if(Se===1)Ze=L;else if(Se===2)Ze=j;else if(Se===4)Ze=F;else throw new TypeError("Unknown boolean type size: "+ce);return this.fromWireType(Ze[it>>rt])},destructorFunction:null})}function yi(se){if(!(this instanceof Ei)||!(se instanceof Ei))return!1;for(var ce=this.$$.ptrType.registeredClass,Se=this.$$.ptr,We=se.$$.ptrType.registeredClass,Xe=se.$$.ptr;ce.baseClass;)Se=ce.upcast(Se),ce=ce.baseClass;for(;We.baseClass;)Xe=We.upcast(Xe),We=We.baseClass;return ce===We&&Se===Xe}function mr(se){return{count:se.count,deleteScheduled:se.deleteScheduled,preservePointerOnDelete:se.preservePointerOnDelete,ptr:se.ptr,ptrType:se.ptrType,smartPtr:se.smartPtr,smartPtrType:se.smartPtrType}}function yo(se){function ce(Se){return Se.$$.ptrType.registeredClass.name}qt(ce(se)+" instance already deleted")}var hn=!1;function _n(se){}function fs(se){se.smartPtr?se.smartPtrType.rawDestructor(se.smartPtr):se.ptrType.registeredClass.rawDestructor(se.ptr)}function Ai(se){se.count.value-=1;var ce=se.count.value===0;ce&&fs(se)}function Ur(se,ce,Se){if(ce===Se)return se;if(Se.baseClass===void 0)return null;var We=Ur(se,ce,Se.baseClass);return We===null?null:Se.downcast(We)}var Tr={};function ht(){return Object.keys(ao).length}function ri(){var se=[];for(var ce in ao)ao.hasOwnProperty(ce)&&se.push(ao[ce]);return se}var oo=[];function ta(){for(;oo.length;){var se=oo.pop();se.$$.deleteScheduled=!1,se.delete()}}var Br=void 0;function na(se){Br=se,oo.length&&Br&&Br(ta)}function wo(){o.getInheritedInstanceCount=ht,o.getLiveInheritedInstances=ri,o.flushPendingDeletes=ta,o.setDelayFunction=na}var ao={};function ya(se,ce){for(ce===void 0&&qt("ptr should not be undefined");se.baseClass;)ce=se.upcast(ce),se=se.baseClass;return ce}function ji(se,ce){return ce=ya(se,ce),ao[ce]}function xo(se,ce){(!ce.ptrType||!ce.ptr)&&Kt("makeClassHandle requires ptr and ptrType");var Se=!!ce.smartPtrType,We=!!ce.smartPtr;return Se!==We&&Kt("Both smartPtrType and smartPtr must be specified"),ce.count={value:1},Hi(Object.create(se,{$$:{value:ce}}))}function Fa(se){var ce=this.getPointee(se);if(!ce)return this.destructor(se),null;var Se=ji(this.registeredClass,ce);if(Se!==void 0){if(Se.$$.count.value===0)return Se.$$.ptr=ce,Se.$$.smartPtr=se,Se.clone();var We=Se.clone();return this.destructor(se),We}function Xe(){return this.isSmartPointer?xo(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:ce,smartPtrType:this,smartPtr:se}):xo(this.registeredClass.instancePrototype,{ptrType:this,ptr:se})}var rt=this.registeredClass.getActualType(ce),it=Tr[rt];if(!it)return Xe.call(this);var Ze;this.isConst?Ze=it.constPointerType:Ze=it.pointerType;var st=Ur(ce,this.registeredClass,Ze.registeredClass);return st===null?Xe.call(this):this.isSmartPointer?xo(Ze.registeredClass.instancePrototype,{ptrType:Ze,ptr:st,smartPtrType:this,smartPtr:se}):xo(Ze.registeredClass.instancePrototype,{ptrType:Ze,ptr:st})}function Hi(se){return typeof FinalizationRegistry>"u"?(Hi=ce=>ce,se):(hn=new FinalizationRegistry(ce=>{Ai(ce.$$)}),Hi=ce=>{var Se=ce.$$,We=!!Se.smartPtr;if(We){var Xe={$$:Se};hn.register(ce,Xe,ce)}return ce},_n=ce=>hn.unregister(ce),Hi(se))}function wa(){if(this.$$.ptr||yo(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var se=Hi(Object.create(Object.getPrototypeOf(this),{$$:{value:mr(this.$$)}}));return se.$$.count.value+=1,se.$$.deleteScheduled=!1,se}function jt(){this.$$.ptr||yo(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&qt("Object already scheduled for deletion"),_n(this),Ai(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function ds(){return!this.$$.ptr}function No(){return this.$$.ptr||yo(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&qt("Object already scheduled for deletion"),oo.push(this),oo.length===1&&Br&&Br(ta),this.$$.deleteScheduled=!0,this}function Bc(){Ei.prototype.isAliasOf=yi,Ei.prototype.clone=wa,Ei.prototype.delete=jt,Ei.prototype.isDeleted=ds,Ei.prototype.deleteLater=No}function Ei(){}function Li(se,ce,Se){if(se[ce].overloadTable===void 0){var We=se[ce];se[ce]=function(){return se[ce].overloadTable.hasOwnProperty(arguments.length)||qt("Function '"+Se+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+se[ce].overloadTable+")!"),se[ce].overloadTable[arguments.length].apply(this,arguments)},se[ce].overloadTable=[],se[ce].overloadTable[We.argCount]=We}}function so(se,ce,Se){o.hasOwnProperty(se)?((Se===void 0||o[se].overloadTable!==void 0&&o[se].overloadTable[Se]!==void 0)&&qt("Cannot register public name '"+se+"' twice"),Li(o,se,se),o.hasOwnProperty(Se)&&qt("Cannot register multiple overloads of a function with the same number of arguments ("+Se+")!"),o[se].overloadTable[Se]=ce):(o[se]=ce,Se!==void 0&&(o[se].numArguments=Se))}function hs(se,ce,Se,We,Xe,rt,it,Ze){this.name=se,this.constructor=ce,this.instancePrototype=Se,this.rawDestructor=We,this.baseClass=Xe,this.getActualType=rt,this.upcast=it,this.downcast=Ze,this.pureVirtualFunctions=[]}function vn(se,ce,Se){for(;ce!==Se;)ce.upcast||qt("Expected null or instance of "+Se.name+", got an instance of "+ce.name),se=ce.upcast(se),ce=ce.baseClass;return se}function Co(se,ce){if(ce===null)return this.isReference&&qt("null is not a valid "+this.name),0;ce.$$||qt('Cannot pass "'+kn(ce)+'" as a '+this.name),ce.$$.ptr||qt("Cannot pass deleted object as a pointer of type "+this.name);var Se=ce.$$.ptrType.registeredClass,We=vn(ce.$$.ptr,Se,this.registeredClass);return We}function Or(se,ce){var Se;if(ce===null)return this.isReference&&qt("null is not a valid "+this.name),this.isSmartPointer?(Se=this.rawConstructor(),se!==null&&se.push(this.rawDestructor,Se),Se):0;ce.$$||qt('Cannot pass "'+kn(ce)+'" as a '+this.name),ce.$$.ptr||qt("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&ce.$$.ptrType.isConst&&qt("Cannot convert argument of type "+(ce.$$.smartPtrType?ce.$$.smartPtrType.name:ce.$$.ptrType.name)+" to parameter type "+this.name);var We=ce.$$.ptrType.registeredClass;if(Se=vn(ce.$$.ptr,We,this.registeredClass),this.isSmartPointer)switch(ce.$$.smartPtr===void 0&&qt("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:ce.$$.smartPtrType===this?Se=ce.$$.smartPtr:qt("Cannot convert argument of type "+(ce.$$.smartPtrType?ce.$$.smartPtrType.name:ce.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:Se=ce.$$.smartPtr;break;case 2:if(ce.$$.smartPtrType===this)Se=ce.$$.smartPtr;else{var Xe=ce.clone();Se=this.rawShare(Se,Ii.toHandle(function(){Xe.delete()})),se!==null&&se.push(this.rawDestructor,Se)}break;default:qt("Unsupporting sharing policy")}return Se}function Ua(se,ce){if(ce===null)return this.isReference&&qt("null is not a valid "+this.name),0;ce.$$||qt('Cannot pass "'+kn(ce)+'" as a '+this.name),ce.$$.ptr||qt("Cannot pass deleted object as a pointer of type "+this.name),ce.$$.ptrType.isConst&&qt("Cannot convert argument of type "+ce.$$.ptrType.name+" to parameter type "+this.name);var Se=ce.$$.ptrType.registeredClass,We=vn(ce.$$.ptr,Se,this.registeredClass);return We}function Ki(se){return this.rawGetPointee&&(se=this.rawGetPointee(se)),se}function Fs(se){this.rawDestructor&&this.rawDestructor(se)}function So(se){se!==null&&se.delete()}function Us(){Xr.prototype.getPointee=Ki,Xr.prototype.destructor=Fs,Xr.prototype.argPackAdvance=8,Xr.prototype.readValueFromPointer=Je,Xr.prototype.deleteObject=So,Xr.prototype.fromWireType=Fa}function Xr(se,ce,Se,We,Xe,rt,it,Ze,st,xt,Ut){this.name=se,this.registeredClass=ce,this.isReference=Se,this.isConst=We,this.isSmartPointer=Xe,this.pointeeType=rt,this.sharingPolicy=it,this.rawGetPointee=Ze,this.rawConstructor=st,this.rawShare=xt,this.rawDestructor=Ut,!Xe&&ce.baseClass===void 0?We?(this.toWireType=Co,this.destructorFunction=null):(this.toWireType=Ua,this.destructorFunction=null):this.toWireType=Or}function gs(se,ce,Se){o.hasOwnProperty(se)||Kt("Replacing nonexistant public symbol"),o[se].overloadTable!==void 0&&Se!==void 0?o[se].overloadTable[Se]=ce:(o[se]=ce,o[se].argCount=Se)}function co(se,ce,Se){var We=o["dynCall_"+se];return Se&&Se.length?We.apply(null,[ce].concat(Se)):We.call(null,ce)}var ra=[];function ps(se){var ce=ra[se];return ce||(se>=ra.length&&(ra.length=se+1),ra[se]=ce=me.get(se)),ce}function Ba(se,ce,Se){if(se.includes("j"))return co(se,ce,Se);var We=ps(ce).apply(null,Se);return We}function Ni(se,ce){var Se=[];return function(){return Se.length=0,Object.assign(Se,arguments),Ba(se,ce,Se)}}function Xi(se,ce){se=Tn(se);function Se(){return se.includes("j")?Ni(se,ce):ps(ce)}var We=Se();return typeof We!="function"&&qt("unknown function pointer with signature "+se+": "+ce),We}var Gc=void 0;function ii(se){var ce=tc(se),Se=Tn(ce);return ki(ce),Se}function bi(se,ce){var Se=[],We={};function Xe(rt){if(!We[rt]&&!tt[rt]){if(wt[rt]){wt[rt].forEach(Xe);return}Se.push(rt),We[rt]=!0}}throw ce.forEach(Xe),new Gc(se+": "+Se.map(ii).join([", "]))}function Bs(se,ce,Se,We,Xe,rt,it,Ze,st,xt,Ut,Jt,Xt){Ut=Tn(Ut),rt=Xi(Xe,rt),Ze&&(Ze=Xi(it,Ze)),xt&&(xt=Xi(st,xt)),Xt=Xi(Jt,Xt);var re=Ht(Ut);so(re,function(){bi("Cannot construct "+Ut+" due to unbound types",[We])}),qn([se,ce,Se],We?[We]:[],function(te){te=te[0];var xe,Ae;We?(xe=te.registeredClass,Ae=xe.instancePrototype):Ae=Ei.prototype;var He=$t(re,function(){if(Object.getPrototypeOf(this)!==ct)throw new Fr("Use 'new' to construct "+Ut);if(z.constructor_body===void 0)throw new Fr(Ut+" has no accessible constructor");var W=z.constructor_body[arguments.length];if(W===void 0)throw new Fr("Tried to invoke ctor of "+Ut+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(z.constructor_body).toString()+") parameters instead!");return W.apply(this,arguments)}),ct=Object.create(Ae,{constructor:{value:He}});He.prototype=ct;var z=new hs(Ut,He,ct,Xt,xe,rt,Ze,xt),ie=new Xr(Ut,z,!0,!1,!1),N=new Xr(Ut+"*",z,!1,!1,!1),k=new Xr(Ut+" const*",z,!1,!0,!1);return Tr[se]={pointerType:N,constPointerType:k},gs(re,He),[ie,N,k]})}function oi(se,ce){for(var Se=[],We=0;We>2]);return Se}function Di(se,ce){if(!(se instanceof Function))throw new TypeError("new_ called with constructor type "+typeof se+" which is not a function");var Se=$t(se.name||"unknownFunctionName",function(){});Se.prototype=se.prototype;var We=new Se,Xe=se.apply(We,ce);return Xe instanceof Object?Xe:We}function xa(se,ce,Se,We,Xe){var rt=ce.length;rt<2&&qt("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var it=ce[1]!==null&&Se!==null,Ze=!1,st=1;st{rt.hasOwnProperty(Je)?Ye[at]=rt[Je]:(Qe.push(Je),it.hasOwnProperty(Je)||(it[Je]=[]),it[Je].push(()=>{Ye[at]=rt[Je],++et,et===Qe.length&&Ue(Ye)}))}),Qe.length===0&&Ue(Ye)}function qi(ae){var se=gt[ae];delete gt[ae];var Ce=se.rawConstructor,Ue=se.rawDestructor,Ye=se.fields,Qe=Ye.map(et=>et.getterReturnType).concat(Ye.map(et=>et.setterArgumentType));On([ae],Qe,et=>{var Je={};return Ye.forEach((at,pt)=>{var Lt=at.fieldName,Bt=et[pt],$t=at.getter,ne=at.getterContext,ee=et[pt+Ye.length],we=at.setter,Ae=at.setterContext;Je[Lt]={read:$e=>Bt.fromWireType($t(ne,$e)),write:($e,st)=>{var z=[];we(Ae,$e,ee.toWireType(z,st)),Me(z)}}}),[{name:se.name,fromWireType:function(at){var pt={};for(var Lt in Je)pt[Lt]=Je[Lt].read(at);return Ue(at),pt},toWireType:function(at,pt){for(var Lt in Je)if(!(Lt in pt))throw new TypeError('Missing field: "'+Lt+'"');var Bt=Ce();for(Lt in Je)Je[Lt].write(Bt,pt[Lt]);return at!==null&&at.push(Ue,Bt),Bt},argPackAdvance:8,readValueFromPointer:Ze,destructorFunction:Ue}]})}function kr(ae,se,Ce,Ue,Ye){}function We(ae){switch(ae){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+ae)}}function dt(){for(var ae=new Array(256),se=0;se<256;++se)ae[se]=String.fromCharCode(se);Ut=ae}var Ut=void 0;function En(ae){for(var se="",Ce=ae;G[Ce];)se+=Ut[G[Ce++]];return se}var qr=void 0;function Gt(ae){throw new qr(ae)}function Mn(ae,se,Ce={}){if(!("argPackAdvance"in se))throw new TypeError("registerType registeredInstance requires argPackAdvance");var Ue=se.name;if(ae||Gt('type "'+Ue+'" must have a positive integer typeid pointer'),rt.hasOwnProperty(ae)){if(Ce.ignoreDuplicateRegistrations)return;Gt("Cannot register type '"+Ue+"' twice")}if(rt[ae]=se,delete ut[ae],it.hasOwnProperty(ae)){var Ye=it[ae];delete it[ae],Ye.forEach(Qe=>Qe())}}function sn(ae,se,Ce,Ue,Ye){var Qe=We(Ce);se=En(se),Mn(ae,{name:se,fromWireType:function(et){return!!et},toWireType:function(et,Je){return Je?Ue:Ye},argPackAdvance:8,readValueFromPointer:function(et){var Je;if(Ce===1)Je=k;else if(Ce===2)Je=j;else if(Ce===4)Je=U;else throw new TypeError("Unknown boolean type size: "+se);return this.fromWireType(Je[et>>Qe])},destructorFunction:null})}function tn(ae){if(!(this instanceof co)||!(ae instanceof co))return!1;for(var se=this.$$.ptrType.registeredClass,Ce=this.$$.ptr,Ue=ae.$$.ptrType.registeredClass,Ye=ae.$$.ptr;se.baseClass;)Ce=se.upcast(Ce),se=se.baseClass;for(;Ue.baseClass;)Ye=Ue.upcast(Ye),Ue=Ue.baseClass;return se===Ue&&Ce===Ye}function Ti(ae){return{count:ae.count,deleteScheduled:ae.deleteScheduled,preservePointerOnDelete:ae.preservePointerOnDelete,ptr:ae.ptr,ptrType:ae.ptrType,smartPtr:ae.smartPtr,smartPtrType:ae.smartPtrType}}function Xi(ae){function se(Ce){return Ce.$$.ptrType.registeredClass.name}Gt(se(ae)+" instance already deleted")}var $o=!1;function Jn(ae){}function Co(ae){ae.smartPtr?ae.smartPtrType.rawDestructor(ae.smartPtr):ae.ptrType.registeredClass.rawDestructor(ae.ptr)}function gi(ae){ae.count.value-=1;var se=ae.count.value===0;se&&Co(ae)}function Oa(ae,se,Ce){if(se===Ce)return ae;if(Ce.baseClass===void 0)return null;var Ue=Oa(ae,se,Ce.baseClass);return Ue===null?null:Ce.downcast(Ue)}var Kn={};function _t(){return Object.keys(Xr).length}function ln(){var ae=[];for(var se in Xr)Xr.hasOwnProperty(se)&&ae.push(Xr[se]);return ae}var mr=[];function la(){for(;mr.length;){var ae=mr.pop();ae.$$.deleteScheduled=!1,ae.delete()}}var Vr=void 0;function So(ae){Vr=ae,mr.length&&Vr&&Vr(la)}function Ni(){o.getInheritedInstanceCount=_t,o.getLiveInheritedInstances=ln,o.flushPendingDeletes=la,o.setDelayFunction=So}var Xr={};function Os(ae,se){for(se===void 0&&Gt("ptr should not be undefined");ae.baseClass;)se=ae.upcast(se),ae=ae.baseClass;return se}function To(ae,se){return se=Os(ae,se),Xr[se]}function so(ae,se){(!se.ptrType||!se.ptr)&&zt("makeClassHandle requires ptr and ptrType");var Ce=!!se.smartPtrType,Ue=!!se.smartPtr;return Ce!==Ue&&zt("Both smartPtrType and smartPtr must be specified"),se.count={value:1},_i(Object.create(ae,{$$:{value:se}}))}function Ma(ae){var se=this.getPointee(ae);if(!se)return this.destructor(ae),null;var Ce=To(this.registeredClass,se);if(Ce!==void 0){if(Ce.$$.count.value===0)return Ce.$$.ptr=se,Ce.$$.smartPtr=ae,Ce.clone();var Ue=Ce.clone();return this.destructor(ae),Ue}function Ye(){return this.isSmartPointer?so(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:se,smartPtrType:this,smartPtr:ae}):so(this.registeredClass.instancePrototype,{ptrType:this,ptr:ae})}var Qe=this.registeredClass.getActualType(se),et=Kn[Qe];if(!et)return Ye.call(this);var Je;this.isConst?Je=et.constPointerType:Je=et.pointerType;var at=Oa(se,this.registeredClass,Je.registeredClass);return at===null?Ye.call(this):this.isSmartPointer?so(Je.registeredClass.instancePrototype,{ptrType:Je,ptr:at,smartPtrType:this,smartPtr:ae}):so(Je.registeredClass.instancePrototype,{ptrType:Je,ptr:at})}function _i(ae){return typeof FinalizationRegistry>"u"?(_i=se=>se,ae):($o=new FinalizationRegistry(se=>{gi(se.$$)}),_i=se=>{var Ce=se.$$,Ue=!!Ce.smartPtr;if(Ue){var Ye={$$:Ce};$o.register(se,Ye,se)}return se},Jn=se=>$o.unregister(se),_i(ae))}function Pa(){if(this.$$.ptr||Xi(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var ae=_i(Object.create(Object.getPrototypeOf(this),{$$:{value:Ti(this.$$)}}));return ae.$$.count.value+=1,ae.$$.deleteScheduled=!1,ae}function Ht(){this.$$.ptr||Xi(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Gt("Object already scheduled for deletion"),Jn(this),gi(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Yi(){return!this.$$.ptr}function Ms(){return this.$$.ptr||Xi(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Gt("Object already scheduled for deletion"),mr.push(this),mr.length===1&&Vr&&Vr(la),this.$$.deleteScheduled=!0,this}function ua(){co.prototype.isAliasOf=tn,co.prototype.clone=Pa,co.prototype.delete=Ht,co.prototype.isDeleted=Yi,co.prototype.deleteLater=Ms}function co(){}function _o(ae,se,Ce){if(ae[se].overloadTable===void 0){var Ue=ae[se];ae[se]=function(){return ae[se].overloadTable.hasOwnProperty(arguments.length)||Gt("Function '"+Ce+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+ae[se].overloadTable+")!"),ae[se].overloadTable[arguments.length].apply(this,arguments)},ae[se].overloadTable=[],ae[se].overloadTable[Ue.argCount]=Ue}}function ci(ae,se,Ce){o.hasOwnProperty(ae)?((Ce===void 0||o[ae].overloadTable!==void 0&&o[ae].overloadTable[Ce]!==void 0)&&Gt("Cannot register public name '"+ae+"' twice"),_o(o,ae,ae),o.hasOwnProperty(Ce)&&Gt("Cannot register multiple overloads of a function with the same number of arguments ("+Ce+")!"),o[ae].overloadTable[Ce]=se):(o[ae]=se,Ce!==void 0&&(o[ae].numArguments=Ce))}function ki(ae,se,Ce,Ue,Ye,Qe,et,Je){this.name=ae,this.constructor=se,this.instancePrototype=Ce,this.rawDestructor=Ue,this.baseClass=Ye,this.getActualType=Qe,this.upcast=et,this.downcast=Je,this.pureVirtualFunctions=[]}function vn(ae,se,Ce){for(;se!==Ce;)se.upcast||Gt("Expected null or instance of "+Ce.name+", got an instance of "+se.name),ae=se.upcast(ae),se=se.baseClass;return ae}function Ei(ae,se){if(se===null)return this.isReference&&Gt("null is not a valid "+this.name),0;se.$$||Gt('Cannot pass "'+Pn(se)+'" as a '+this.name),se.$$.ptr||Gt("Cannot pass deleted object as a pointer of type "+this.name);var Ce=se.$$.ptrType.registeredClass,Ue=vn(se.$$.ptr,Ce,this.registeredClass);return Ue}function jo(ae,se){var Ce;if(se===null)return this.isReference&&Gt("null is not a valid "+this.name),this.isSmartPointer?(Ce=this.rawConstructor(),ae!==null&&ae.push(this.rawDestructor,Ce),Ce):0;se.$$||Gt('Cannot pass "'+Pn(se)+'" as a '+this.name),se.$$.ptr||Gt("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&se.$$.ptrType.isConst&&Gt("Cannot convert argument of type "+(se.$$.smartPtrType?se.$$.smartPtrType.name:se.$$.ptrType.name)+" to parameter type "+this.name);var Ue=se.$$.ptrType.registeredClass;if(Ce=vn(se.$$.ptr,Ue,this.registeredClass),this.isSmartPointer)switch(se.$$.smartPtr===void 0&&Gt("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:se.$$.smartPtrType===this?Ce=se.$$.smartPtr:Gt("Cannot convert argument of type "+(se.$$.smartPtrType?se.$$.smartPtrType.name:se.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:Ce=se.$$.smartPtr;break;case 2:if(se.$$.smartPtrType===this)Ce=se.$$.smartPtr;else{var Ye=se.clone();Ce=this.rawShare(Ce,mi.toHandle(function(){Ye.delete()})),ae!==null&&ae.push(this.rawDestructor,Ce)}break;default:Gt("Unsupporting sharing policy")}return Ce}function Ji(ae,se){if(se===null)return this.isReference&&Gt("null is not a valid "+this.name),0;se.$$||Gt('Cannot pass "'+Pn(se)+'" as a '+this.name),se.$$.ptr||Gt("Cannot pass deleted object as a pointer of type "+this.name),se.$$.ptrType.isConst&&Gt("Cannot convert argument of type "+se.$$.ptrType.name+" to parameter type "+this.name);var Ce=se.$$.ptrType.registeredClass,Ue=vn(se.$$.ptr,Ce,this.registeredClass);return Ue}function Vi(ae){return this.rawGetPointee&&(ae=this.rawGetPointee(ae)),ae}function Ps(ae){this.rawDestructor&&this.rawDestructor(ae)}function Ho(ae){ae!==null&&ae.delete()}function Rs(){lo.prototype.getPointee=Vi,lo.prototype.destructor=Ps,lo.prototype.argPackAdvance=8,lo.prototype.readValueFromPointer=Ze,lo.prototype.deleteObject=Ho,lo.prototype.fromWireType=Ma}function lo(ae,se,Ce,Ue,Ye,Qe,et,Je,at,pt,Lt){this.name=ae,this.registeredClass=se,this.isReference=Ce,this.isConst=Ue,this.isSmartPointer=Ye,this.pointeeType=Qe,this.sharingPolicy=et,this.rawGetPointee=Je,this.rawConstructor=at,this.rawShare=pt,this.rawDestructor=Lt,!Ye&&se.baseClass===void 0?Ue?(this.toWireType=Ei,this.destructorFunction=null):(this.toWireType=Ji,this.destructorFunction=null):this.toWireType=jo}function Zi(ae,se,Ce){o.hasOwnProperty(ae)||zt("Replacing nonexistant public symbol"),o[ae].overloadTable!==void 0&&Ce!==void 0?o[ae].overloadTable[Ce]=se:(o[ae]=se,o[ae].argCount=Ce)}function Qi(ae,se,Ce){var Ue=o["dynCall_"+ae];return Ce&&Ce.length?Ue.apply(null,[se].concat(Ce)):Ue.call(null,se)}var Fr=[];function bc(ae){var se=Fr[ae];return se||(ae>=Fr.length&&(Fr.length=ae+1),Fr[ae]=se=ve.get(ae)),se}function Ko(ae,se,Ce){if(ae.includes("j"))return Qi(ae,se,Ce);var Ue=bc(se).apply(null,Ce);return Ue}function qo(ae,se){var Ce=[];return function(){return Ce.length=0,Object.assign(Ce,arguments),Ko(ae,se,Ce)}}function Ir(ae,se){ae=En(ae);function Ce(){return ae.includes("j")?qo(ae,se):bc(se)}var Ue=Ce();return typeof Ue!="function"&&Gt("unknown function pointer with signature "+ae+": "+se),Ue}var Dc=void 0;function bi(ae){var se=Yo(ae),Ce=En(se);return to(se),Ce}function Ur(ae,se){var Ce=[],Ue={};function Ye(Qe){if(!Ue[Qe]&&!rt[Qe]){if(ut[Qe]){ut[Qe].forEach(Ye);return}Ce.push(Qe),Ue[Qe]=!0}}throw se.forEach(Ye),new Dc(ae+": "+Ce.map(bi).join([", "]))}function rs(ae,se,Ce,Ue,Ye,Qe,et,Je,at,pt,Lt,Bt,$t){Lt=En(Lt),Qe=Ir(Ye,Qe),Je&&(Je=Ir(et,Je)),pt&&(pt=Ir(at,pt)),$t=Ir(Bt,$t);var ne=kt(Lt);ci(ne,function(){Ur("Cannot construct "+Lt+" due to unbound types",[Ue])}),On([ae,se,Ce],Ue?[Ue]:[],function(ee){ee=ee[0];var we,Ae;Ue?(we=ee.registeredClass,Ae=we.instancePrototype):Ae=co.prototype;var $e=qt(ne,function(){if(Object.getPrototypeOf(this)!==st)throw new qr("Use 'new' to construct "+Lt);if(z.constructor_body===void 0)throw new qr(Lt+" has no accessible constructor");var I=z.constructor_body[arguments.length];if(I===void 0)throw new qr("Tried to invoke ctor of "+Lt+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(z.constructor_body).toString()+") parameters instead!");return I.apply(this,arguments)}),st=Object.create(Ae,{constructor:{value:$e}});$e.prototype=st;var z=new ki(Lt,$e,st,$t,we,Qe,Je,pt),re=new lo(Lt,z,!0,!1,!1),A=new lo(Lt+"*",z,!1,!1,!1),N=new lo(Lt+" const*",z,!1,!0,!1);return Kn[ae]={pointerType:A,constPointerType:N},Zi(ne,$e),[re,A,N]})}function Eo(ae,se){for(var Ce=[],Ue=0;Ue>2]);return Ce}function pi(ae,se){if(!(ae instanceof Function))throw new TypeError("new_ called with constructor type "+typeof ae+" which is not a function");var Ce=qt(ae.name||"unknownFunctionName",function(){});Ce.prototype=ae.prototype;var Ue=new Ce,Ye=ae.apply(Ue,se);return Ye instanceof Object?Ye:Ue}function fa(ae,se,Ce,Ue,Ye){var Qe=se.length;Qe<2&&Gt("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var et=se[1]!==null&&Ce!==null,Je=!1,at=1;at0?", ":"")+Jt),Xt+=(xt?"var rv = ":"")+"invoker(fn"+(Jt.length>0?", ":"")+Jt+`); -`,Ze)Xt+=`runDestructors(destructors); -`;else for(var st=it?1:2;st0?", ":"")+Bt),$t+=(pt?"var rv = ":"")+"invoker(fn"+(Bt.length>0?", ":"")+Bt+`); +`,Je)$t+=`runDestructors(destructors); +`;else for(var at=et?1:2;at0);var it=oi(ce,Se);Xe=Xi(We,Xe),qn([],[se],function(Ze){Ze=Ze[0];var st="constructor "+Ze.name;if(Ze.registeredClass.constructor_body===void 0&&(Ze.registeredClass.constructor_body=[]),Ze.registeredClass.constructor_body[ce-1]!==void 0)throw new Fr("Cannot register multiple constructors with identical number of parameters ("+(ce-1)+") for class '"+Ze.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return Ze.registeredClass.constructor_body[ce-1]=()=>{bi("Cannot construct "+Ze.name+" due to unbound types",it)},qn([],it,function(xt){return xt.splice(1,0,null),Ze.registeredClass.constructor_body[ce-1]=xa(st,xt,null,Xe,rt),[]}),[]})}function Ca(se,ce,Se,We,Xe,rt,it,Ze){var st=oi(Se,We);ce=Tn(ce),rt=Xi(Xe,rt),qn([],[se],function(xt){xt=xt[0];var Ut=xt.name+"."+ce;ce.startsWith("@@")&&(ce=Symbol[ce.substring(2)]),Ze&&xt.registeredClass.pureVirtualFunctions.push(ce);function Jt(){bi("Cannot call "+Ut+" due to unbound types",st)}var Xt=xt.registeredClass.instancePrototype,re=Xt[ce];return re===void 0||re.overloadTable===void 0&&re.className!==xt.name&&re.argCount===Se-2?(Jt.argCount=Se-2,Jt.className=xt.name,Xt[ce]=Jt):(Li(Xt,ce,Ut),Xt[ce].overloadTable[Se-2]=Jt),qn([],st,function(te){var xe=xa(Ut,te,xt,rt,it);return Xt[ce].overloadTable===void 0?(xe.argCount=Se-2,Xt[ce]=xe):Xt[ce].overloadTable[Se-2]=xe,[]}),[]})}var wi=[],Pr=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function Ga(se){se>4&&--Pr[se].refcount===0&&(Pr[se]=void 0,wi.push(se))}function ai(){for(var se=0,ce=5;ce(se||qt("Cannot use deleted val. handle = "+se),Pr[se].value),toHandle:se=>{switch(se){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:{var ce=wi.length?wi.pop():Pr.length;return Pr[ce]={refcount:1,value:se},ce}}}};function qr(se,ce){ce=Tn(ce),Sr(se,{name:ce,fromWireType:function(Se){var We=Ii.toValue(Se);return Ga(Se),We},toWireType:function(Se,We){return Ii.toHandle(We)},argPackAdvance:8,readValueFromPointer:Je,destructorFunction:null})}function kn(se){if(se===null)return"null";var ce=typeof se;return ce==="object"||ce==="array"||ce==="function"?se.toString():""+se}function zs(se,ce){switch(ce){case 2:return function(Se){return this.fromWireType(X[Se>>2])};case 3:return function(Se){return this.fromWireType(ne[Se>>3])};default:throw new TypeError("Unknown float type: "+se)}}function ia(se,ce,Se){var We=Ke(Se);ce=Tn(ce),Sr(se,{name:ce,fromWireType:function(Xe){return Xe},toWireType:function(Xe,rt){return rt},argPackAdvance:8,readValueFromPointer:zs(ce,We),destructorFunction:null})}function qi(se,ce,Se,We,Xe,rt){var it=oi(ce,Se);se=Tn(se),Xe=Xi(We,Xe),so(se,function(){bi("Cannot call "+se+" due to unbound types",it)},ce-1),qn([],it,function(Ze){var st=[Ze[0],null].concat(Ze.slice(1));return gs(se,xa(se,st,null,Xe,rt),ce-1),[]})}function To(se,ce,Se){switch(ce){case 0:return Se?function(Xe){return L[Xe]}:function(Xe){return B[Xe]};case 1:return Se?function(Xe){return j[Xe>>1]}:function(Xe){return V[Xe>>1]};case 2:return Se?function(Xe){return F[Xe>>2]}:function(Xe){return G[Xe>>2]};default:throw new TypeError("Unknown integer type: "+se)}}function Wc(se,ce,Se,We,Xe){ce=Tn(ce);var rt=Ke(Se),it=Jt=>Jt;if(We===0){var Ze=32-8*Se;it=Jt=>Jt<>>Ze}var st=ce.includes("unsigned"),xt=(Jt,Xt)=>{},Ut;st?Ut=function(Jt,Xt){return xt(Xt,this.name),Xt>>>0}:Ut=function(Jt,Xt){return xt(Xt,this.name),Xt},Sr(se,{name:ce,fromWireType:it,toWireType:Ut,argPackAdvance:8,readValueFromPointer:To(ce,rt,We!==0),destructorFunction:null})}function ko(se,ce,Se){var We=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],Xe=We[ce];function rt(it){it=it>>2;var Ze=G,st=Ze[it],xt=Ze[it+1];return new Xe(M,xt,st)}Se=Tn(Se),Sr(se,{name:Se,fromWireType:rt,argPackAdvance:8,readValueFromPointer:rt},{ignoreDuplicateRegistrations:!0})}function $c(se,ce){ce=Tn(ce);var Se=ce==="std::string";Sr(se,{name:ce,fromWireType:function(We){var Xe=G[We>>2],rt=We+4,it;if(Se)for(var Ze=rt,st=0;st<=Xe;++st){var xt=rt+st;if(st==Xe||B[xt]==0){var Ut=xt-Ze,Jt=b(Ze,Ut);it===void 0?it=Jt:(it+="\0",it+=Jt),Ze=xt+1}}else{for(var Xt=new Array(Xe),st=0;st>2]=rt,Se&&it)I(Xe,st,rt+1);else if(it)for(var xt=0;xt255&&(ki(st),qt("String has UTF-16 code units that do not fit in 8 bits")),B[st+xt]=Ut}else for(var xt=0;xt>1,Xe=We+ce/2;!(We>=Xe)&&V[We];)++We;if(Se=We<<1,Se-se>32&&lo)return lo.decode(B.subarray(se,Se));for(var rt="",it=0;!(it>=ce/2);++it){var Ze=j[se+it*2>>1];if(Ze==0)break;rt+=String.fromCharCode(Ze)}return rt}function js(se,ce,Se){if(Se===void 0&&(Se=2147483647),Se<2)return 0;Se-=2;for(var We=ce,Xe=Se>1]=it,ce+=2}return j[ce>>1]=0,ce-We}function jc(se){return se.length*2}function $l(se,ce){for(var Se=0,We="";!(Se>=ce/4);){var Xe=F[se+Se*4>>2];if(Xe==0)break;if(++Se,Xe>=65536){var rt=Xe-65536;We+=String.fromCharCode(55296|rt>>10,56320|rt&1023)}else We+=String.fromCharCode(Xe)}return We}function Hc(se,ce,Se){if(Se===void 0&&(Se=2147483647),Se<4)return 0;for(var We=ce,Xe=We+Se-4,rt=0;rt=55296&&it<=57343){var Ze=se.charCodeAt(++rt);it=65536+((it&1023)<<10)|Ze&1023}if(F[ce>>2]=it,ce+=4,ce+4>Xe)break}return F[ce>>2]=0,ce-We}function zl(se){for(var ce=0,Se=0;Se=55296&&We<=57343&&++Se,ce+=4}return ce}function jl(se,ce,Se){Se=Tn(Se);var We,Xe,rt,it,Ze;ce===2?(We=zc,Xe=js,it=jc,rt=()=>V,Ze=1):ce===4&&(We=$l,Xe=Hc,it=zl,rt=()=>G,Ze=2),Sr(se,{name:Se,fromWireType:function(st){for(var xt=G[st>>2],Ut=rt(),Jt,Xt=st+4,re=0;re<=xt;++re){var te=st+4+re*ce;if(re==xt||Ut[te>>Ze]==0){var xe=te-Xt,Ae=We(Xt,xe);Jt===void 0?Jt=Ae:(Jt+="\0",Jt+=Ae),Xt=te+ce}}return ki(st),Jt},toWireType:function(st,xt){typeof xt!="string"&&qt("Cannot pass non-string to C++ string type "+Se);var Ut=it(xt),Jt=Vo(4+Ut+ce);return G[Jt>>2]=Ut>>Ze,Xe(xt,Jt+4,Ut+ce),st!==null&&st.push(ki,Jt),Jt},argPackAdvance:8,readValueFromPointer:Je,destructorFunction:function(st){ki(st)}})}function Hl(se,ce,Se,We,Xe,rt){mt[se]={name:Tn(ce),rawConstructor:Xi(Se,We),rawDestructor:Xi(Xe,rt),fields:[]}}function Hs(se,ce,Se,We,Xe,rt,it,Ze,st,xt){mt[se].fields.push({fieldName:Tn(ce),getterReturnType:Se,getter:Xi(We,Xe),getterContext:rt,setterArgumentType:it,setter:Xi(Ze,st),setterContext:xt})}function Kc(se,ce){ce=Tn(ce),Sr(se,{isVoid:!0,name:ce,argPackAdvance:0,fromWireType:function(){},toWireType:function(Se,We){}})}var Xc={};function Kl(se){var ce=Xc[se];return ce===void 0?Tn(se):ce}function Ks(){return typeof globalThis=="object"?globalThis:function(){return Function}()("return this")()}function Xs(se){return se===0?Ii.toHandle(Ks()):(se=Kl(se),Ii.toHandle(Ks()[se]))}function qc(se){se>4&&(Pr[se].refcount+=1)}function qs(se,ce){var Se=tt[se];return Se===void 0&&qt(ce+" has unknown type "+ii(se)),Se}function Ys(se){for(var ce="",Se=0;SeG,Xe="return function emval_allocator_"+se+`(constructor, argTypes, args) { +`),$t+=`} +`,ee.push($t);var $e=pi(Function,ee).apply(null,we);return $e}function Ls(ae,se,Ce,Ue,Ye,Qe){T(se>0);var et=Eo(se,Ce);Ye=Ir(Ue,Ye),On([],[ae],function(Je){Je=Je[0];var at="constructor "+Je.name;if(Je.registeredClass.constructor_body===void 0&&(Je.registeredClass.constructor_body=[]),Je.registeredClass.constructor_body[se-1]!==void 0)throw new qr("Cannot register multiple constructors with identical number of parameters ("+(se-1)+") for class '"+Je.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return Je.registeredClass.constructor_body[se-1]=()=>{Ur("Cannot construct "+Je.name+" due to unbound types",et)},On([],et,function(pt){return pt.splice(1,0,null),Je.registeredClass.constructor_body[se-1]=fa(at,pt,null,Ye,Qe),[]}),[]})}function is(ae,se,Ce,Ue,Ye,Qe,et,Je){var at=Eo(Ce,Ue);se=En(se),Qe=Ir(Ye,Qe),On([],[ae],function(pt){pt=pt[0];var Lt=pt.name+"."+se;se.startsWith("@@")&&(se=Symbol[se.substring(2)]),Je&&pt.registeredClass.pureVirtualFunctions.push(se);function Bt(){Ur("Cannot call "+Lt+" due to unbound types",at)}var $t=pt.registeredClass.instancePrototype,ne=$t[se];return ne===void 0||ne.overloadTable===void 0&&ne.className!==pt.name&&ne.argCount===Ce-2?(Bt.argCount=Ce-2,Bt.className=pt.name,$t[se]=Bt):(_o($t,se,Lt),$t[se].overloadTable[Ce-2]=Bt),On([],at,function(ee){var we=fa(Lt,ee,pt,Qe,et);return $t[se].overloadTable===void 0?(we.argCount=Ce-2,$t[se]=we):$t[se].overloadTable[Ce-2]=we,[]}),[]})}var Ra=[],qn=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function La(ae){ae>4&&--qn[ae].refcount===0&&(qn[ae]=void 0,Ra.push(ae))}function li(){for(var ae=0,se=5;se(ae||Gt("Cannot use deleted val. handle = "+ae),qn[ae].value),toHandle:ae=>{switch(ae){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:{var se=Ra.length?Ra.pop():qn.length;return qn[se]={refcount:1,value:ae},se}}}};function os(ae,se){se=En(se),Mn(ae,{name:se,fromWireType:function(Ce){var Ue=mi.toValue(Ce);return La(Ce),Ue},toWireType:function(Ce,Ue){return mi.toHandle(Ue)},argPackAdvance:8,readValueFromPointer:Ze,destructorFunction:null})}function Pn(ae){if(ae===null)return"null";var se=typeof ae;return se==="object"||se==="array"||se==="function"?ae.toString():""+ae}function eo(ae,se){switch(se){case 2:return function(Ce){return this.fromWireType(J[Ce>>2])};case 3:return function(Ce){return this.fromWireType(te[Ce>>3])};default:throw new TypeError("Unknown float type: "+ae)}}function Aa(ae,se,Ce){var Ue=We(Ce);se=En(se),Mn(ae,{name:se,fromWireType:function(Ye){return Ye},toWireType:function(Ye,Qe){return Qe},argPackAdvance:8,readValueFromPointer:eo(se,Ue),destructorFunction:null})}function Na(ae,se,Ce,Ue,Ye,Qe){var et=Eo(se,Ce);ae=En(ae),Ye=Ir(Ue,Ye),ci(ae,function(){Ur("Cannot call "+ae+" due to unbound types",et)},se-1),On([],et,function(Je){var at=[Je[0],null].concat(Je.slice(1));return Zi(ae,fa(ae,at,null,Ye,Qe),se-1),[]})}function Fi(ae,se,Ce){switch(se){case 0:return Ce?function(Ye){return k[Ye]}:function(Ye){return G[Ye]};case 1:return Ce?function(Ye){return j[Ye>>1]}:function(Ye){return F[Ye>>1]};case 2:return Ce?function(Ye){return U[Ye>>2]}:function(Ye){return W[Ye>>2]};default:throw new TypeError("Unknown integer type: "+ae)}}function As(ae,se,Ce,Ue,Ye){se=En(se);var Qe=We(Ce),et=Bt=>Bt;if(Ue===0){var Je=32-8*Ce;et=Bt=>Bt<>>Je}var at=se.includes("unsigned"),pt=(Bt,$t)=>{},Lt;at?Lt=function(Bt,$t){return pt($t,this.name),$t>>>0}:Lt=function(Bt,$t){return pt($t,this.name),$t},Mn(ae,{name:se,fromWireType:et,toWireType:Lt,argPackAdvance:8,readValueFromPointer:Fi(se,Qe,Ue!==0),destructorFunction:null})}function da(ae,se,Ce){var Ue=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],Ye=Ue[se];function Qe(et){et=et>>2;var Je=W,at=Je[et],pt=Je[et+1];return new Ye(P,pt,at)}Ce=En(Ce),Mn(ae,{name:Ce,fromWireType:Qe,argPackAdvance:8,readValueFromPointer:Qe},{ignoreDuplicateRegistrations:!0})}function Oc(ae,se){se=En(se);var Ce=se==="std::string";Mn(ae,{name:se,fromWireType:function(Ue){var Ye=W[Ue>>2],Qe=Ue+4,et;if(Ce)for(var Je=Qe,at=0;at<=Ye;++at){var pt=Qe+at;if(at==Ye||G[pt]==0){var Lt=pt-Je,Bt=b(Je,Lt);et===void 0?et=Bt:(et+="\0",et+=Bt),Je=pt+1}}else{for(var $t=new Array(Ye),at=0;at>2]=Qe,Ce&&et)O(Ye,at,Qe+1);else if(et)for(var pt=0;pt255&&(to(at),Gt("String has UTF-16 code units that do not fit in 8 bits")),G[at+pt]=Lt}else for(var pt=0;pt>1,Ye=Ue+se/2;!(Ue>=Ye)&&F[Ue];)++Ue;if(Ce=Ue<<1,Ce-ae>32&&Xo)return Xo.decode(G.subarray(ae,Ce));for(var Qe="",et=0;!(et>=se/2);++et){var Je=j[ae+et*2>>1];if(Je==0)break;Qe+=String.fromCharCode(Je)}return Qe}function Mc(ae,se,Ce){if(Ce===void 0&&(Ce=2147483647),Ce<2)return 0;Ce-=2;for(var Ue=se,Ye=Ce>1]=et,se+=2}return j[se>>1]=0,se-Ue}function as(ae){return ae.length*2}function _l(ae,se){for(var Ce=0,Ue="";!(Ce>=se/4);){var Ye=U[ae+Ce*4>>2];if(Ye==0)break;if(++Ce,Ye>=65536){var Qe=Ye-65536;Ue+=String.fromCharCode(55296|Qe>>10,56320|Qe&1023)}else Ue+=String.fromCharCode(Ye)}return Ue}function El(ae,se,Ce){if(Ce===void 0&&(Ce=2147483647),Ce<4)return 0;for(var Ue=se,Ye=Ue+Ce-4,Qe=0;Qe=55296&&et<=57343){var Je=ae.charCodeAt(++Qe);et=65536+((et&1023)<<10)|Je&1023}if(U[se>>2]=et,se+=4,se+4>Ye)break}return U[se>>2]=0,se-Ue}function bl(ae){for(var se=0,Ce=0;Ce=55296&&Ue<=57343&&++Ce,se+=4}return se}function Dl(ae,se,Ce){Ce=En(Ce);var Ue,Ye,Qe,et,Je;se===2?(Ue=ka,Ye=Mc,et=as,Qe=()=>F,Je=1):se===4&&(Ue=_l,Ye=El,et=bl,Qe=()=>W,Je=2),Mn(ae,{name:Ce,fromWireType:function(at){for(var pt=W[at>>2],Lt=Qe(),Bt,$t=at+4,ne=0;ne<=pt;++ne){var ee=at+4+ne*se;if(ne==pt||Lt[ee>>Je]==0){var we=ee-$t,Ae=Ue($t,we);Bt===void 0?Bt=Ae:(Bt+="\0",Bt+=Ae),$t=ee+se}}return to(at),Bt},toWireType:function(at,pt){typeof pt!="string"&&Gt("Cannot pass non-string to C++ string type "+Ce);var Lt=et(pt),Bt=bo(4+Lt+se);return W[Bt>>2]=Lt>>Je,Ye(pt,Bt+4,Lt+se),at!==null&&at.push(to,Bt),Bt},argPackAdvance:8,readValueFromPointer:Ze,destructorFunction:function(at){to(at)}})}function Il(ae,se,Ce,Ue,Ye,Qe){gt[ae]={name:En(se),rawConstructor:Ir(Ce,Ue),rawDestructor:Ir(Ye,Qe),fields:[]}}function Ns(ae,se,Ce,Ue,Ye,Qe,et,Je,at,pt){gt[ae].fields.push({fieldName:En(se),getterReturnType:Ce,getter:Ir(Ue,Ye),getterContext:Qe,setterArgumentType:et,setter:Ir(Je,at),setterContext:pt})}function Ol(ae,se){se=En(se),Mn(ae,{isVoid:!0,name:se,argPackAdvance:0,fromWireType:function(){},toWireType:function(Ce,Ue){}})}var ks={};function Ml(ae){var se=ks[ae];return se===void 0?En(ae):se}function Vs(){return typeof globalThis=="object"?globalThis:function(){return Function}()("return this")()}function Fs(ae){return ae===0?mi.toHandle(Vs()):(ae=Ml(ae),mi.toHandle(Vs()[ae]))}function Pc(ae){ae>4&&(qn[ae].refcount+=1)}function ss(ae,se){var Ce=rt[ae];return Ce===void 0&&Gt(se+" has unknown type "+bi(ae)),Ce}function Us(ae){for(var se="",Ce=0;CeW,Ye="return function emval_allocator_"+ae+`(constructor, argTypes, args) { var HEAPU32 = getMemory(); -`,Se=0;Se>2)], 'parameter "+Se+`'); -var arg`+Se+" = argType"+Se+`.readValueFromPointer(args); -args += argType`+Se+`['argPackAdvance']; +`,Ce=0;Ce>2)], 'parameter "+Ce+`'); +var arg`+Ce+" = argType"+Ce+`.readValueFromPointer(args); +args += argType`+Ce+`['argPackAdvance']; argTypes += 4; -`;return Xe+="var obj = new constructor("+ce+`); +`;return Ye+="var obj = new constructor("+se+`); return valueToHandle(obj); } -`,new Function("requireRegisteredType","Module","valueToHandle","getMemory",Xe)(qs,o,Ii.toHandle,We)}var Js={};function ms(se,ce,Se,We){se=Ii.toValue(se);var Xe=Js[ce];return Xe||(Xe=Ys(ce),Js[ce]=Xe),Xe(se,Se,We)}function Yc(se,ce){se=qs(se,"_emval_take_value");var Se=se.readValueFromPointer(ce);return Ii.toHandle(Se)}function Jc(){Oe("")}function Zs(se,ce,Se){B.copyWithin(se,ce,ce+Se)}function Qs(){return 2147483648}function ec(se){try{return C.grow(se-M.byteLength+65535>>>16),ue(C.buffer),1}catch{}}function Zc(se){var ce=B.length;se=se>>>0;var Se=Qs();if(se>Se)return!1;let We=(st,xt)=>st+(xt-st%xt)%xt;for(var Xe=1;Xe<=4;Xe*=2){var rt=ce*(1+.2/Xe);rt=Math.min(rt,se+100663296);var it=Math.min(Se,We(Math.max(se,rt),65536)),Ze=ec(it);if(Ze)return!0}return!1}function Qc(se){var ce=o["_"+se];return ce}function el(se,ce){L.set(se,ce)}function vs(se,ce,Se,We,Xe){var rt={string:te=>{var xe=0;if(te!=null&&te!==0){var Ae=(te.length<<2)+1;xe=ys(Ae),I(te,xe,Ae)}return xe},array:te=>{var xe=ys(te.length);return el(te,xe),xe}};function it(te){return ce==="string"?b(te):ce==="boolean"?!!te:te}var Ze=Qc(se),st=[],xt=0;if(We)for(var Ut=0;Ut0||(Pe(),Z>0))return;function ce(){Wa||(Wa=!0,o.calledRun=!0,!S&&(Ee(),a(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),H()))}o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),ce()},1)):ce()}if(o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return ic(),i.ready}})();t.exports=r})(xH);var RDe=xH.exports;const ADe=Vl(RDe),LDe=new URL("/static/dv3d/charlswasm_decode.wasm",import.meta.url),mh={codec:void 0,decoder:void 0,decodeConfig:{}};function NDe(t){return typeof t=="number"?mh.codec.getExceptionMessage(t):t}function kDe(t){if(mh.decodeConfig=t,mh.codec)return Promise.resolve();const e=ADe({locateFile:r=>r.endsWith(".wasm")?LDe.toString():r});return new Promise((r,n)=>{e.then(i=>{mh.codec=i,mh.decoder=new i.JpegLSDecoder,r()},n)})}async function uO(t,e){try{await kDe();const r=mh.decoder;r.getEncodedBuffer(t.length).set(t),r.decode();const i=r.getFrameInfo(),o=r.getInterleaveMode(),a=r.getNearLossless(),s=r.getDecodedBuffer(),c={columns:i.width,rows:i.height,bitsPerPixel:i.bitsPerSample,signed:e.signed,bytesPerPixel:e.bytesPerPixel,componentsPerPixel:i.componentCount},l=VDe(i,s,e.signed),f={nearLossless:a,interleaveMode:o,frameInfo:i};return{...e,pixelData:l,imageInfo:c,encodeOptions:f,...f,...c}}catch(r){throw NDe(r)}}function VDe(t,e,r){return t.bitsPerSample>8?r?new Int16Array(e.buffer,e.byteOffset,e.byteLength/2):new Uint16Array(e.buffer,e.byteOffset,e.byteLength/2):r?new Int8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}var CH={exports:{}};(function(t,e){var r=(()=>{var n=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(n=n||__filename),function(i){i=i||{};var o=typeof i<"u"?i:{},a,s;o.ready=new Promise(function(re,te){a=re,s=te});var c=Object.assign({},o),l="./this.program",f=typeof window=="object",u=typeof importScripts=="function",d=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",h="";function g(re){return o.locateFile?o.locateFile(re,h):h+re}var p,v,y;if(d){var m=Dl,w=Dl;u?h=w.dirname(h)+"/":h=__dirname+"/",p=(re,te)=>(re=be(re)?new URL(re):w.normalize(re),m.readFileSync(re,te?void 0:"utf8")),y=re=>{var te=p(re,!0);return te.buffer||(te=new Uint8Array(te)),te},v=(re,te,xe)=>{re=be(re)?new URL(re):w.normalize(re),m.readFile(re,function(Ae,He){Ae?xe(Ae):te(He.buffer)})},process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",function(re){if(!(re instanceof ft))throw re}),process.on("unhandledRejection",function(re){throw re}),o.inspect=function(){return"[Emscripten Module object]"}}else(f||u)&&(u?h=self.location.href:typeof document<"u"&&document.currentScript&&(h=document.currentScript.src),n&&(h=n),h.indexOf("blob:")!==0?h=h.substr(0,h.replace(/[?#].*/,"").lastIndexOf("/")+1):h="",p=re=>{var te=new XMLHttpRequest;return te.open("GET",re,!1),te.send(null),te.responseText},u&&(y=re=>{var te=new XMLHttpRequest;return te.open("GET",re,!1),te.responseType="arraybuffer",te.send(null),new Uint8Array(te.response)}),v=(re,te,xe)=>{var Ae=new XMLHttpRequest;Ae.open("GET",re,!0),Ae.responseType="arraybuffer",Ae.onload=()=>{if(Ae.status==200||Ae.status==0&&Ae.response){te(Ae.response);return}xe()},Ae.onerror=xe,Ae.send(null)});var x=o.print||console.log.bind(console),C=o.printErr||console.warn.bind(console);Object.assign(o,c),c=null,o.arguments&&o.arguments,o.thisProgram&&(l=o.thisProgram),o.quit&&o.quit;var S;o.wasmBinary&&(S=o.wasmBinary),o.noExitRuntime,typeof WebAssembly!="object"&&$e("no native wasm support detected");var T,_=!1;function E(re,te){re||$e(te)}var b=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function D(re,te,xe){for(var Ae=te+xe,He=te;re[He]&&!(He>=Ae);)++He;if(He-te>16&&re.buffer&&b)return b.decode(re.subarray(te,He));for(var ct="";te>10,56320|k&1023)}}return ct}function I(re,te){return re?D(V,re,te):""}function P(re,te,xe,Ae){if(!(Ae>0))return 0;for(var He=xe,ct=xe+Ae-1,z=0;z=55296&&ie<=57343){var N=re.charCodeAt(++z);ie=65536+((ie&1023)<<10)|N&1023}if(ie<=127){if(xe>=ct)break;te[xe++]=ie}else if(ie<=2047){if(xe+1>=ct)break;te[xe++]=192|ie>>6,te[xe++]=128|ie&63}else if(ie<=65535){if(xe+2>=ct)break;te[xe++]=224|ie>>12,te[xe++]=128|ie>>6&63,te[xe++]=128|ie&63}else{if(xe+3>=ct)break;te[xe++]=240|ie>>18,te[xe++]=128|ie>>12&63,te[xe++]=128|ie>>6&63,te[xe++]=128|ie&63}}return te[xe]=0,xe-He}function M(re,te,xe){return P(re,V,te,xe)}function L(re){for(var te=0,xe=0;xe=55296&&Ae<=57343?(te+=4,++xe):te+=3}return te}var B,j,V,F,G,X,ne,ue,me;function ge(re){B=re,o.HEAP8=j=new Int8Array(re),o.HEAP16=F=new Int16Array(re),o.HEAP32=X=new Int32Array(re),o.HEAPU8=V=new Uint8Array(re),o.HEAPU16=G=new Uint16Array(re),o.HEAPU32=ne=new Uint32Array(re),o.HEAPF32=ue=new Float32Array(re),o.HEAPF64=me=new Float64Array(re)}o.INITIAL_MEMORY;var ye,Ie=[],Pe=[],Ee=[];function H(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)K(o.preRun.shift());gt(Ie)}function O(){gt(Pe)}function Y(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)ae(o.postRun.shift());gt(Ee)}function K(re){Ie.unshift(re)}function Z(re){Pe.unshift(re)}function ae(re){Ee.unshift(re)}var oe=0,_e=null;function Oe(re){oe++,o.monitorRunDependencies&&o.monitorRunDependencies(oe)}function Ge(re){if(oe--,o.monitorRunDependencies&&o.monitorRunDependencies(oe),oe==0&&_e){var te=_e;_e=null,te()}}function $e(re){o.onAbort&&o.onAbort(re),re="Aborted("+re+")",C(re),_=!0,re+=". Build with -sASSERTIONS for more info.";var te=new WebAssembly.RuntimeError(re);throw s(te),te}var le="data:application/octet-stream;base64,";function de(re){return re.startsWith(le)}function be(re){return re.startsWith("file://")}var pe;pe="openjpegwasm_decode.wasm",de(pe)||(pe=g(pe));function Te(re){try{if(re==pe&&S)return new Uint8Array(S);if(y)return y(re);throw"both async and sync fetching of the wasm failed"}catch(te){$e(te)}}function Ye(){if(!S&&(f||u)){if(typeof fetch=="function"&&!be(pe))return fetch(pe,{credentials:"same-origin"}).then(function(re){if(!re.ok)throw"failed to load wasm binary file at '"+pe+"'";return re.arrayBuffer()}).catch(function(){return Te(pe)});if(v)return new Promise(function(re,te){v(pe,function(xe){re(new Uint8Array(xe))},te)})}return Promise.resolve().then(function(){return Te(pe)})}function fe(){var re={a:We};function te(z,ie){var N=z.exports;o.asm=N,T=o.asm.E,ge(T.buffer),ye=o.asm.G,Z(o.asm.F),Ge()}Oe();function xe(z){te(z.instance)}function Ae(z){return Ye().then(function(ie){return WebAssembly.instantiate(ie,re)}).then(function(ie){return ie}).then(z,function(ie){C("failed to asynchronously prepare wasm: "+ie),$e(ie)})}function He(){return!S&&typeof WebAssembly.instantiateStreaming=="function"&&!de(pe)&&!be(pe)&&!d&&typeof fetch=="function"?fetch(pe,{credentials:"same-origin"}).then(function(z){var ie=WebAssembly.instantiateStreaming(z,re);return ie.then(xe,function(N){return C("wasm streaming compile failed: "+N),C("falling back to ArrayBuffer instantiation"),Ae(xe)})}):Ae(xe)}if(o.instantiateWasm)try{var ct=o.instantiateWasm(re,te);return ct}catch(z){C("Module.instantiateWasm callback failed with error: "+z),s(z)}return He().catch(s),{}}function ft(re){this.name="ExitStatus",this.message="Program terminated with exit("+re+")",this.status=re}function gt(re){for(;re.length>0;)re.shift()(o)}function mt(re){this.excPtr=re,this.ptr=re-24,this.set_type=function(te){ne[this.ptr+4>>2]=te},this.get_type=function(){return ne[this.ptr+4>>2]},this.set_destructor=function(te){ne[this.ptr+8>>2]=te},this.get_destructor=function(){return ne[this.ptr+8>>2]},this.set_refcount=function(te){X[this.ptr>>2]=te},this.set_caught=function(te){te=te?1:0,j[this.ptr+12>>0]=te},this.get_caught=function(){return j[this.ptr+12>>0]!=0},this.set_rethrown=function(te){te=te?1:0,j[this.ptr+13>>0]=te},this.get_rethrown=function(){return j[this.ptr+13>>0]!=0},this.init=function(te,xe){this.set_adjusted_ptr(0),this.set_type(te),this.set_destructor(xe),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var te=X[this.ptr>>2];X[this.ptr>>2]=te+1},this.release_ref=function(){var te=X[this.ptr>>2];return X[this.ptr>>2]=te-1,te===1},this.set_adjusted_ptr=function(te){ne[this.ptr+16>>2]=te},this.get_adjusted_ptr=function(){return ne[this.ptr+16>>2]},this.get_exception_ptr=function(){var te=Ut(this.get_type());if(te)return ne[this.excPtr>>2];var xe=this.get_adjusted_ptr();return xe!==0?xe:this.excPtr}}function Re(re,te,xe){var Ae=new mt(re);throw Ae.init(te,xe),re}var Je={};function at(re){for(;re.length;){var te=re.pop(),xe=re.pop();xe(te)}}function tt(re){return this.fromWireType(X[re>>2])}var wt={},Bt={},Ct={},Ht=48,$t=57;function dn(re){if(re===void 0)return"_unknown";re=re.replace(/[^a-zA-Z0-9_]/g,"$");var te=re.charCodeAt(0);return te>=Ht&&te<=$t?"_"+re:re}function Nn(re,te){return re=dn(re),new Function("body","return function "+re+`() { +`,new Function("requireRegisteredType","Module","valueToHandle","getMemory",Ye)(ss,o,mi.toHandle,Ue)}var Bs={};function cs(ae,se,Ce,Ue){ae=mi.toValue(ae);var Ye=Bs[se];return Ye||(Ye=Us(se),Bs[se]=Ye),Ye(ae,Ce,Ue)}function Rc(ae,se){ae=ss(ae,"_emval_take_value");var Ce=ae.readValueFromPointer(se);return mi.toHandle(Ce)}function Gs(){Oe("")}function Lc(ae,se,Ce){G.copyWithin(ae,se,se+Ce)}function Ws(){return 2147483648}function Ac(ae){try{return C.grow(ae-P.byteLength+65535>>>16),le(C.buffer),1}catch{}}function Nc(ae){var se=G.length;ae=ae>>>0;var Ce=Ws();if(ae>Ce)return!1;let Ue=(at,pt)=>at+(pt-at%pt)%pt;for(var Ye=1;Ye<=4;Ye*=2){var Qe=se*(1+.2/Ye);Qe=Math.min(Qe,ae+100663296);var et=Math.min(Ce,Ue(Math.max(ae,Qe),65536)),Je=Ac(et);if(Je)return!0}return!1}function kc(ae){var se=o["_"+ae];return se}function Vc(ae,se){k.set(ae,se)}function ls(ae,se,Ce,Ue,Ye){var Qe={string:ee=>{var we=0;if(ee!=null&&ee!==0){var Ae=(ee.length<<2)+1;we=fs(Ae),O(ee,we,Ae)}return we},array:ee=>{var we=fs(ee.length);return Vc(ee,we),we}};function et(ee){return se==="string"?b(ee):se==="boolean"?!!ee:ee}var Je=kc(ae),at=[],pt=0;if(Ue)for(var Lt=0;Lt0||(Le(),Z>0))return;function se(){Va||(Va=!0,o.calledRun=!0,!S&&(be(),a(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),$()))}o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),se()},1)):se()}if(o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return Hs(),i.ready}})();t.exports=r})(w$);var AEe=w$.exports;const NEe=yl(AEe),kEe=new URL("/static/dv3d/charlswasm_decode.wasm",import.meta.url),U0={codec:void 0,decoder:void 0,decodeConfig:{}};function VEe(t){return typeof t=="number"?U0.codec.getExceptionMessage(t):t}function FEe(t){if(U0.decodeConfig=t,U0.codec)return Promise.resolve();const e=NEe({locateFile:r=>r.endsWith(".wasm")?kEe.toString():r});return new Promise((r,n)=>{e.then(i=>{U0.codec=i,U0.decoder=new i.JpegLSDecoder,r()},n)})}async function q7(t,e){try{await FEe();const r=U0.decoder;r.getEncodedBuffer(t.length).set(t),r.decode();const i=r.getFrameInfo(),o=r.getInterleaveMode(),a=r.getNearLossless(),s=r.getDecodedBuffer(),c={columns:i.width,rows:i.height,bitsPerPixel:i.bitsPerSample,signed:e.signed,bytesPerPixel:e.bytesPerPixel,componentsPerPixel:i.componentCount},l=UEe(i,s,e.signed),f={nearLossless:a,interleaveMode:o,frameInfo:i};return{...e,pixelData:l,imageInfo:c,encodeOptions:f,...f,...c}}catch(r){throw VEe(r)}}function UEe(t,e,r){return t.bitsPerSample>8?r?new Int16Array(e.buffer,e.byteOffset,e.byteLength/2):new Uint16Array(e.buffer,e.byteOffset,e.byteLength/2):r?new Int8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}var x$={exports:{}};(function(t,e){var r=(()=>{var n=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(n=n||__filename),function(i){i=i||{};var o=typeof i<"u"?i:{},a,s;o.ready=new Promise(function(ne,ee){a=ne,s=ee});var c=Object.assign({},o),l="./this.program",f=typeof window=="object",u=typeof importScripts=="function",d=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",h="";function g(ne){return o.locateFile?o.locateFile(ne,h):h+ne}var p,v,y;if(d){var m=ll,w=ll;u?h=w.dirname(h)+"/":h=__dirname+"/",p=(ne,ee)=>(ne=Se(ne)?new URL(ne):w.normalize(ne),m.readFileSync(ne,ee?void 0:"utf8")),y=ne=>{var ee=p(ne,!0);return ee.buffer||(ee=new Uint8Array(ee)),ee},v=(ne,ee,we)=>{ne=Se(ne)?new URL(ne):w.normalize(ne),m.readFile(ne,function(Ae,$e){Ae?we(Ae):ee($e.buffer)})},process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",function(ne){if(!(ne instanceof ht))throw ne}),process.on("unhandledRejection",function(ne){throw ne}),o.inspect=function(){return"[Emscripten Module object]"}}else(f||u)&&(u?h=self.location.href:typeof document<"u"&&document.currentScript&&(h=document.currentScript.src),n&&(h=n),h.indexOf("blob:")!==0?h=h.substr(0,h.replace(/[?#].*/,"").lastIndexOf("/")+1):h="",p=ne=>{var ee=new XMLHttpRequest;return ee.open("GET",ne,!1),ee.send(null),ee.responseText},u&&(y=ne=>{var ee=new XMLHttpRequest;return ee.open("GET",ne,!1),ee.responseType="arraybuffer",ee.send(null),new Uint8Array(ee.response)}),v=(ne,ee,we)=>{var Ae=new XMLHttpRequest;Ae.open("GET",ne,!0),Ae.responseType="arraybuffer",Ae.onload=()=>{if(Ae.status==200||Ae.status==0&&Ae.response){ee(Ae.response);return}we()},Ae.onerror=we,Ae.send(null)});var x=o.print||console.log.bind(console),C=o.printErr||console.warn.bind(console);Object.assign(o,c),c=null,o.arguments&&o.arguments,o.thisProgram&&(l=o.thisProgram),o.quit&&o.quit;var S;o.wasmBinary&&(S=o.wasmBinary),o.noExitRuntime,typeof WebAssembly!="object"&&Ge("no native wasm support detected");var T,_=!1;function E(ne,ee){ne||Ge(ee)}var b=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function D(ne,ee,we){for(var Ae=ee+we,$e=ee;ne[$e]&&!($e>=Ae);)++$e;if($e-ee>16&&ne.buffer&&b)return b.decode(ne.subarray(ee,$e));for(var st="";ee<$e;){var z=ne[ee++];if(!(z&128)){st+=String.fromCharCode(z);continue}var re=ne[ee++]&63;if((z&224)==192){st+=String.fromCharCode((z&31)<<6|re);continue}var A=ne[ee++]&63;if((z&240)==224?z=(z&15)<<12|re<<6|A:z=(z&7)<<18|re<<12|A<<6|ne[ee++]&63,z<65536)st+=String.fromCharCode(z);else{var N=z-65536;st+=String.fromCharCode(55296|N>>10,56320|N&1023)}}return st}function O(ne,ee){return ne?D(F,ne,ee):""}function L(ne,ee,we,Ae){if(!(Ae>0))return 0;for(var $e=we,st=we+Ae-1,z=0;z=55296&&re<=57343){var A=ne.charCodeAt(++z);re=65536+((re&1023)<<10)|A&1023}if(re<=127){if(we>=st)break;ee[we++]=re}else if(re<=2047){if(we+1>=st)break;ee[we++]=192|re>>6,ee[we++]=128|re&63}else if(re<=65535){if(we+2>=st)break;ee[we++]=224|re>>12,ee[we++]=128|re>>6&63,ee[we++]=128|re&63}else{if(we+3>=st)break;ee[we++]=240|re>>18,ee[we++]=128|re>>12&63,ee[we++]=128|re>>6&63,ee[we++]=128|re&63}}return ee[we]=0,we-$e}function P(ne,ee,we){return L(ne,F,ee,we)}function k(ne){for(var ee=0,we=0;we=55296&&Ae<=57343?(ee+=4,++we):ee+=3}return ee}var G,j,F,U,W,J,te,le,ve;function pe(ne){G=ne,o.HEAP8=j=new Int8Array(ne),o.HEAP16=U=new Int16Array(ne),o.HEAP32=J=new Int32Array(ne),o.HEAPU8=F=new Uint8Array(ne),o.HEAPU16=W=new Uint16Array(ne),o.HEAPU32=te=new Uint32Array(ne),o.HEAPF32=le=new Float32Array(ne),o.HEAPF64=ve=new Float64Array(ne)}o.INITIAL_MEMORY;var ye,Ie=[],Le=[],be=[];function $(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)K(o.preRun.shift());vt(Ie)}function R(){vt(Le)}function X(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)ie(o.postRun.shift());vt(be)}function K(ne){Ie.unshift(ne)}function Z(ne){Le.unshift(ne)}function ie(ne){be.unshift(ne)}var oe=0,Te=null;function Oe(ne){oe++,o.monitorRunDependencies&&o.monitorRunDependencies(oe)}function Ve(ne){if(oe--,o.monitorRunDependencies&&o.monitorRunDependencies(oe),oe==0&&Te){var ee=Te;Te=null,ee()}}function Ge(ne){o.onAbort&&o.onAbort(ne),ne="Aborted("+ne+")",C(ne),_=!0,ne+=". Build with -sASSERTIONS for more info.";var ee=new WebAssembly.RuntimeError(ne);throw s(ee),ee}var ce="data:application/octet-stream;base64,";function fe(ne){return ne.startsWith(ce)}function Se(ne){return ne.startsWith("file://")}var he;he="openjpegwasm_decode.wasm",fe(he)||(he=g(he));function xe(ne){try{if(ne==he&&S)return new Uint8Array(S);if(y)return y(ne);throw"both async and sync fetching of the wasm failed"}catch(ee){Ge(ee)}}function qe(){if(!S&&(f||u)){if(typeof fetch=="function"&&!Se(he))return fetch(he,{credentials:"same-origin"}).then(function(ne){if(!ne.ok)throw"failed to load wasm binary file at '"+he+"'";return ne.arrayBuffer()}).catch(function(){return xe(he)});if(v)return new Promise(function(ne,ee){v(he,function(we){ne(new Uint8Array(we))},ee)})}return Promise.resolve().then(function(){return xe(he)})}function de(){var ne={a:Ue};function ee(z,re){var A=z.exports;o.asm=A,T=o.asm.E,pe(T.buffer),ye=o.asm.G,Z(o.asm.F),Ve()}Oe();function we(z){ee(z.instance)}function Ae(z){return qe().then(function(re){return WebAssembly.instantiate(re,ne)}).then(function(re){return re}).then(z,function(re){C("failed to asynchronously prepare wasm: "+re),Ge(re)})}function $e(){return!S&&typeof WebAssembly.instantiateStreaming=="function"&&!fe(he)&&!Se(he)&&!d&&typeof fetch=="function"?fetch(he,{credentials:"same-origin"}).then(function(z){var re=WebAssembly.instantiateStreaming(z,ne);return re.then(we,function(A){return C("wasm streaming compile failed: "+A),C("falling back to ArrayBuffer instantiation"),Ae(we)})}):Ae(we)}if(o.instantiateWasm)try{var st=o.instantiateWasm(ne,ee);return st}catch(z){C("Module.instantiateWasm callback failed with error: "+z),s(z)}return $e().catch(s),{}}function ht(ne){this.name="ExitStatus",this.message="Program terminated with exit("+ne+")",this.status=ne}function vt(ne){for(;ne.length>0;)ne.shift()(o)}function gt(ne){this.excPtr=ne,this.ptr=ne-24,this.set_type=function(ee){te[this.ptr+4>>2]=ee},this.get_type=function(){return te[this.ptr+4>>2]},this.set_destructor=function(ee){te[this.ptr+8>>2]=ee},this.get_destructor=function(){return te[this.ptr+8>>2]},this.set_refcount=function(ee){J[this.ptr>>2]=ee},this.set_caught=function(ee){ee=ee?1:0,j[this.ptr+12>>0]=ee},this.get_caught=function(){return j[this.ptr+12>>0]!=0},this.set_rethrown=function(ee){ee=ee?1:0,j[this.ptr+13>>0]=ee},this.get_rethrown=function(){return j[this.ptr+13>>0]!=0},this.init=function(ee,we){this.set_adjusted_ptr(0),this.set_type(ee),this.set_destructor(we),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var ee=J[this.ptr>>2];J[this.ptr>>2]=ee+1},this.release_ref=function(){var ee=J[this.ptr>>2];return J[this.ptr>>2]=ee-1,ee===1},this.set_adjusted_ptr=function(ee){te[this.ptr+16>>2]=ee},this.get_adjusted_ptr=function(){return te[this.ptr+16>>2]},this.get_exception_ptr=function(){var ee=Lt(this.get_type());if(ee)return te[this.excPtr>>2];var we=this.get_adjusted_ptr();return we!==0?we:this.excPtr}}function Me(ne,ee,we){var Ae=new gt(ne);throw Ae.init(ee,we),ne}var Ze={};function it(ne){for(;ne.length;){var ee=ne.pop(),we=ne.pop();we(ee)}}function rt(ne){return this.fromWireType(J[ne>>2])}var ut={},Dt={},wt={},kt=48,qt=57;function In(ne){if(ne===void 0)return"_unknown";ne=ne.replace(/[^a-zA-Z0-9_]/g,"$");var ee=ne.charCodeAt(0);return ee>=kt&&ee<=qt?"_"+ne:ne}function Vn(ne,ee){return ne=In(ne),new Function("body","return function "+ne+`() { "use strict"; return body.apply(this, arguments); }; -`)(te)}function Kt(re,te){var xe=Nn(te,function(Ae){this.name=te,this.message=Ae;var He=new Error(Ae).stack;He!==void 0&&(this.stack=this.toString()+` -`+He.replace(/^Error(:[^\n]*)?\n/,""))});return xe.prototype=Object.create(re.prototype),xe.prototype.constructor=xe,xe.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},xe}var qn=void 0;function Cr(re){throw new qn(re)}function pr(re,te,xe){re.forEach(function(ie){Ct[ie]=te});function Ae(ie){var N=xe(ie);N.length!==re.length&&Cr("Mismatched type converter count");for(var k=0;k{Bt.hasOwnProperty(ie)?He[N]=Bt[ie]:(ct.push(ie),wt.hasOwnProperty(ie)||(wt[ie]=[]),wt[ie].push(()=>{He[N]=Bt[ie],++z,z===ct.length&&Ae(He)}))}),ct.length===0&&Ae(He)}function Ke(re){var te=Je[re];delete Je[re];var xe=te.rawConstructor,Ae=te.rawDestructor,He=te.fields,ct=He.map(z=>z.getterReturnType).concat(He.map(z=>z.setterArgumentType));pr([re],ct,z=>{var ie={};return He.forEach((N,k)=>{var W=N.fieldName,q=z[k],J=N.getter,R=N.getterContext,A=z[k+He.length],$=N.setter,ee=N.setterContext;ie[W]={read:he=>q.fromWireType(J(R,he)),write:(he,ve)=>{var Ce=[];$(ee,he,A.toWireType(Ce,ve)),at(Ce)}}}),[{name:te.name,fromWireType:function(N){var k={};for(var W in ie)k[W]=ie[W].read(N);return Ae(N),k},toWireType:function(N,k){for(var W in ie)if(!(W in k))throw new TypeError('Missing field: "'+W+'"');var q=xe();for(W in ie)ie[W].write(q,k[W]);return N!==null&&N.push(Ae,q),q},argPackAdvance:8,readValueFromPointer:tt,destructorFunction:Ae}]})}function dt(re,te,xe,Ae,He){}function zt(re){switch(re){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+re)}}function Tn(){for(var re=new Array(256),te=0;te<256;++te)re[te]=String.fromCharCode(te);Fr=re}var Fr=void 0;function qt(re){for(var te="",xe=re;V[xe];)te+=Fr[V[xe++]];return te}var Sr=void 0;function Rn(re){throw new Sr(re)}function yi(re,te,xe={}){if(!("argPackAdvance"in te))throw new TypeError("registerType registeredInstance requires argPackAdvance");var Ae=te.name;if(re||Rn('type "'+Ae+'" must have a positive integer typeid pointer'),Bt.hasOwnProperty(re)){if(xe.ignoreDuplicateRegistrations)return;Rn("Cannot register type '"+Ae+"' twice")}if(Bt[re]=te,delete Ct[re],wt.hasOwnProperty(re)){var He=wt[re];delete wt[re],He.forEach(ct=>ct())}}function mr(re,te,xe,Ae,He){var ct=zt(xe);te=qt(te),yi(re,{name:te,fromWireType:function(z){return!!z},toWireType:function(z,ie){return ie?Ae:He},argPackAdvance:8,readValueFromPointer:function(z){var ie;if(xe===1)ie=j;else if(xe===2)ie=F;else if(xe===4)ie=X;else throw new TypeError("Unknown boolean type size: "+te);return this.fromWireType(ie[z>>ct])},destructorFunction:null})}function yo(re){if(!(this instanceof so)||!(re instanceof so))return!1;for(var te=this.$$.ptrType.registeredClass,xe=this.$$.ptr,Ae=re.$$.ptrType.registeredClass,He=re.$$.ptr;te.baseClass;)xe=te.upcast(xe),te=te.baseClass;for(;Ae.baseClass;)He=Ae.upcast(He),Ae=Ae.baseClass;return te===Ae&&xe===He}function hn(re){return{count:re.count,deleteScheduled:re.deleteScheduled,preservePointerOnDelete:re.preservePointerOnDelete,ptr:re.ptr,ptrType:re.ptrType,smartPtr:re.smartPtr,smartPtrType:re.smartPtrType}}function _n(re){function te(xe){return xe.$$.ptrType.registeredClass.name}Rn(te(re)+" instance already deleted")}var fs=!1;function Ai(re){}function Ur(re){re.smartPtr?re.smartPtrType.rawDestructor(re.smartPtr):re.ptrType.registeredClass.rawDestructor(re.ptr)}function Tr(re){re.count.value-=1;var te=re.count.value===0;te&&Ur(re)}function ht(re,te,xe){if(te===xe)return re;if(xe.baseClass===void 0)return null;var Ae=ht(re,te,xe.baseClass);return Ae===null?null:xe.downcast(Ae)}var ri={};function oo(){return Object.keys(ji).length}function ta(){var re=[];for(var te in ji)ji.hasOwnProperty(te)&&re.push(ji[te]);return re}var Br=[];function na(){for(;Br.length;){var re=Br.pop();re.$$.deleteScheduled=!1,re.delete()}}var wo=void 0;function ao(re){wo=re,Br.length&&wo&&wo(na)}function ya(){o.getInheritedInstanceCount=oo,o.getLiveInheritedInstances=ta,o.flushPendingDeletes=na,o.setDelayFunction=ao}var ji={};function xo(re,te){for(te===void 0&&Rn("ptr should not be undefined");re.baseClass;)te=re.upcast(te),re=re.baseClass;return te}function Fa(re,te){return te=xo(re,te),ji[te]}function Hi(re,te){(!te.ptrType||!te.ptr)&&Cr("makeClassHandle requires ptr and ptrType");var xe=!!te.smartPtrType,Ae=!!te.smartPtr;return xe!==Ae&&Cr("Both smartPtrType and smartPtr must be specified"),te.count={value:1},jt(Object.create(re,{$$:{value:te}}))}function wa(re){var te=this.getPointee(re);if(!te)return this.destructor(re),null;var xe=Fa(this.registeredClass,te);if(xe!==void 0){if(xe.$$.count.value===0)return xe.$$.ptr=te,xe.$$.smartPtr=re,xe.clone();var Ae=xe.clone();return this.destructor(re),Ae}function He(){return this.isSmartPointer?Hi(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:te,smartPtrType:this,smartPtr:re}):Hi(this.registeredClass.instancePrototype,{ptrType:this,ptr:re})}var ct=this.registeredClass.getActualType(te),z=ri[ct];if(!z)return He.call(this);var ie;this.isConst?ie=z.constPointerType:ie=z.pointerType;var N=ht(te,this.registeredClass,ie.registeredClass);return N===null?He.call(this):this.isSmartPointer?Hi(ie.registeredClass.instancePrototype,{ptrType:ie,ptr:N,smartPtrType:this,smartPtr:re}):Hi(ie.registeredClass.instancePrototype,{ptrType:ie,ptr:N})}function jt(re){return typeof FinalizationRegistry>"u"?(jt=te=>te,re):(fs=new FinalizationRegistry(te=>{Tr(te.$$)}),jt=te=>{var xe=te.$$,Ae=!!xe.smartPtr;if(Ae){var He={$$:xe};fs.register(te,He,te)}return te},Ai=te=>fs.unregister(te),jt(re))}function ds(){if(this.$$.ptr||_n(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var re=jt(Object.create(Object.getPrototypeOf(this),{$$:{value:hn(this.$$)}}));return re.$$.count.value+=1,re.$$.deleteScheduled=!1,re}function No(){this.$$.ptr||_n(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Rn("Object already scheduled for deletion"),Ai(this),Tr(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Bc(){return!this.$$.ptr}function Ei(){return this.$$.ptr||_n(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Rn("Object already scheduled for deletion"),Br.push(this),Br.length===1&&wo&&wo(na),this.$$.deleteScheduled=!0,this}function Li(){so.prototype.isAliasOf=yo,so.prototype.clone=ds,so.prototype.delete=No,so.prototype.isDeleted=Bc,so.prototype.deleteLater=Ei}function so(){}function hs(re,te,xe){if(re[te].overloadTable===void 0){var Ae=re[te];re[te]=function(){return re[te].overloadTable.hasOwnProperty(arguments.length)||Rn("Function '"+xe+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+re[te].overloadTable+")!"),re[te].overloadTable[arguments.length].apply(this,arguments)},re[te].overloadTable=[],re[te].overloadTable[Ae.argCount]=Ae}}function vn(re,te,xe){o.hasOwnProperty(re)?(Rn("Cannot register public name '"+re+"' twice"),hs(o,re,re),o.hasOwnProperty(xe)&&Rn("Cannot register multiple overloads of a function with the same number of arguments ("+xe+")!"),o[re].overloadTable[xe]=te):o[re]=te}function Co(re,te,xe,Ae,He,ct,z,ie){this.name=re,this.constructor=te,this.instancePrototype=xe,this.rawDestructor=Ae,this.baseClass=He,this.getActualType=ct,this.upcast=z,this.downcast=ie,this.pureVirtualFunctions=[]}function Or(re,te,xe){for(;te!==xe;)te.upcast||Rn("Expected null or instance of "+xe.name+", got an instance of "+te.name),re=te.upcast(re),te=te.baseClass;return re}function Ua(re,te){if(te===null)return this.isReference&&Rn("null is not a valid "+this.name),0;te.$$||Rn('Cannot pass "'+ia(te)+'" as a '+this.name),te.$$.ptr||Rn("Cannot pass deleted object as a pointer of type "+this.name);var xe=te.$$.ptrType.registeredClass,Ae=Or(te.$$.ptr,xe,this.registeredClass);return Ae}function Ki(re,te){var xe;if(te===null)return this.isReference&&Rn("null is not a valid "+this.name),this.isSmartPointer?(xe=this.rawConstructor(),re!==null&&re.push(this.rawDestructor,xe),xe):0;te.$$||Rn('Cannot pass "'+ia(te)+'" as a '+this.name),te.$$.ptr||Rn("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&te.$$.ptrType.isConst&&Rn("Cannot convert argument of type "+(te.$$.smartPtrType?te.$$.smartPtrType.name:te.$$.ptrType.name)+" to parameter type "+this.name);var Ae=te.$$.ptrType.registeredClass;if(xe=Or(te.$$.ptr,Ae,this.registeredClass),this.isSmartPointer)switch(te.$$.smartPtr===void 0&&Rn("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:te.$$.smartPtrType===this?xe=te.$$.smartPtr:Rn("Cannot convert argument of type "+(te.$$.smartPtrType?te.$$.smartPtrType.name:te.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:xe=te.$$.smartPtr;break;case 2:if(te.$$.smartPtrType===this)xe=te.$$.smartPtr;else{var He=te.clone();xe=this.rawShare(xe,kn.toHandle(function(){He.delete()})),re!==null&&re.push(this.rawDestructor,xe)}break;default:Rn("Unsupporting sharing policy")}return xe}function Fs(re,te){if(te===null)return this.isReference&&Rn("null is not a valid "+this.name),0;te.$$||Rn('Cannot pass "'+ia(te)+'" as a '+this.name),te.$$.ptr||Rn("Cannot pass deleted object as a pointer of type "+this.name),te.$$.ptrType.isConst&&Rn("Cannot convert argument of type "+te.$$.ptrType.name+" to parameter type "+this.name);var xe=te.$$.ptrType.registeredClass,Ae=Or(te.$$.ptr,xe,this.registeredClass);return Ae}function So(re){return this.rawGetPointee&&(re=this.rawGetPointee(re)),re}function Us(re){this.rawDestructor&&this.rawDestructor(re)}function Xr(re){re!==null&&re.delete()}function gs(){co.prototype.getPointee=So,co.prototype.destructor=Us,co.prototype.argPackAdvance=8,co.prototype.readValueFromPointer=tt,co.prototype.deleteObject=Xr,co.prototype.fromWireType=wa}function co(re,te,xe,Ae,He,ct,z,ie,N,k,W){this.name=re,this.registeredClass=te,this.isReference=xe,this.isConst=Ae,this.isSmartPointer=He,this.pointeeType=ct,this.sharingPolicy=z,this.rawGetPointee=ie,this.rawConstructor=N,this.rawShare=k,this.rawDestructor=W,!He&&te.baseClass===void 0?Ae?(this.toWireType=Ua,this.destructorFunction=null):(this.toWireType=Fs,this.destructorFunction=null):this.toWireType=Ki}function ra(re,te,xe){o.hasOwnProperty(re)||Cr("Replacing nonexistant public symbol"),o[re].overloadTable!==void 0&&xe!==void 0?o[re].overloadTable[xe]=te:(o[re]=te,o[re].argCount=xe)}function ps(re,te,xe){var Ae=o["dynCall_"+re];return xe&&xe.length?Ae.apply(null,[te].concat(xe)):Ae.call(null,te)}var Ba=[];function Ni(re){var te=Ba[re];return te||(re>=Ba.length&&(Ba.length=re+1),Ba[re]=te=ye.get(re)),te}function Xi(re,te,xe){if(re.includes("j"))return ps(re,te,xe);var Ae=Ni(te).apply(null,xe);return Ae}function Gc(re,te){var xe=[];return function(){return xe.length=0,Object.assign(xe,arguments),Xi(re,te,xe)}}function ii(re,te){re=qt(re);function xe(){return re.includes("j")?Gc(re,te):Ni(te)}var Ae=xe();return typeof Ae!="function"&&Rn("unknown function pointer with signature "+re+": "+te),Ae}var bi=void 0;function Bs(re){var te=it(re),xe=qt(te);return rt(te),xe}function oi(re,te){var xe=[],Ae={};function He(ct){if(!Ae[ct]&&!Bt[ct]){if(Ct[ct]){Ct[ct].forEach(He);return}xe.push(ct),Ae[ct]=!0}}throw te.forEach(He),new bi(re+": "+xe.map(Bs).join([", "]))}function Di(re,te,xe,Ae,He,ct,z,ie,N,k,W,q,J){W=qt(W),ct=ii(He,ct),ie&&(ie=ii(z,ie)),k&&(k=ii(N,k)),J=ii(q,J);var R=dn(W);vn(R,function(){oi("Cannot construct "+W+" due to unbound types",[Ae])}),pr([re,te,xe],Ae?[Ae]:[],function(A){A=A[0];var $,ee;Ae?($=A.registeredClass,ee=$.instancePrototype):ee=so.prototype;var he=Nn(R,function(){if(Object.getPrototypeOf(this)!==ve)throw new Sr("Use 'new' to construct "+W);if(Ce.constructor_body===void 0)throw new Sr(W+" has no accessible constructor");var Be=Ce.constructor_body[arguments.length];if(Be===void 0)throw new Sr("Tried to invoke ctor of "+W+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(Ce.constructor_body).toString()+") parameters instead!");return Be.apply(this,arguments)}),ve=Object.create(ee,{constructor:{value:he}});he.prototype=ve;var Ce=new Co(W,he,ve,J,$,ct,ie,k),we=new co(W,Ce,!0,!1,!1),Me=new co(W+"*",Ce,!1,!1,!1),Fe=new co(W+" const*",Ce,!1,!0,!1);return ri[re]={pointerType:Me,constPointerType:Fe},ra(R,he),[we,Me,Fe]})}function xa(re,te){for(var xe=[],Ae=0;Ae>2]);return xe}function Gs(re,te){if(!(re instanceof Function))throw new TypeError("new_ called with constructor type "+typeof re+" which is not a function");var xe=Nn(re.name||"unknownFunctionName",function(){});xe.prototype=re.prototype;var Ae=new xe,He=re.apply(Ae,te);return He instanceof Object?He:Ae}function Ca(re,te,xe,Ae,He){var ct=te.length;ct<2&&Rn("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var z=te[1]!==null&&xe!==null,ie=!1,N=1;N{Dt.hasOwnProperty(re)?$e[A]=Dt[re]:(st.push(re),ut.hasOwnProperty(re)||(ut[re]=[]),ut[re].push(()=>{$e[A]=Dt[re],++z,z===st.length&&Ae($e)}))}),st.length===0&&Ae($e)}function We(ne){var ee=Ze[ne];delete Ze[ne];var we=ee.rawConstructor,Ae=ee.rawDestructor,$e=ee.fields,st=$e.map(z=>z.getterReturnType).concat($e.map(z=>z.setterArgumentType));kr([ne],st,z=>{var re={};return $e.forEach((A,N)=>{var I=A.fieldName,M=z[N],V=A.getter,H=A.getterContext,q=z[N+$e.length],Y=A.setter,ue=A.setterContext;re[I]={read:ge=>M.fromWireType(V(H,ge)),write:(ge,me)=>{var _e=[];Y(ue,ge,q.toWireType(_e,me)),it(_e)}}}),[{name:ee.name,fromWireType:function(A){var N={};for(var I in re)N[I]=re[I].read(A);return Ae(A),N},toWireType:function(A,N){for(var I in re)if(!(I in N))throw new TypeError('Missing field: "'+I+'"');var M=we();for(I in re)re[I].write(M,N[I]);return A!==null&&A.push(Ae,M),M},argPackAdvance:8,readValueFromPointer:rt,destructorFunction:Ae}]})}function dt(ne,ee,we,Ae,$e){}function Ut(ne){switch(ne){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+ne)}}function En(){for(var ne=new Array(256),ee=0;ee<256;++ee)ne[ee]=String.fromCharCode(ee);qr=ne}var qr=void 0;function Gt(ne){for(var ee="",we=ne;F[we];)ee+=qr[F[we++]];return ee}var Mn=void 0;function sn(ne){throw new Mn(ne)}function tn(ne,ee,we={}){if(!("argPackAdvance"in ee))throw new TypeError("registerType registeredInstance requires argPackAdvance");var Ae=ee.name;if(ne||sn('type "'+Ae+'" must have a positive integer typeid pointer'),Dt.hasOwnProperty(ne)){if(we.ignoreDuplicateRegistrations)return;sn("Cannot register type '"+Ae+"' twice")}if(Dt[ne]=ee,delete wt[ne],ut.hasOwnProperty(ne)){var $e=ut[ne];delete ut[ne],$e.forEach(st=>st())}}function Ti(ne,ee,we,Ae,$e){var st=Ut(we);ee=Gt(ee),tn(ne,{name:ee,fromWireType:function(z){return!!z},toWireType:function(z,re){return re?Ae:$e},argPackAdvance:8,readValueFromPointer:function(z){var re;if(we===1)re=j;else if(we===2)re=U;else if(we===4)re=J;else throw new TypeError("Unknown boolean type size: "+ee);return this.fromWireType(re[z>>st])},destructorFunction:null})}function Xi(ne){if(!(this instanceof ci)||!(ne instanceof ci))return!1;for(var ee=this.$$.ptrType.registeredClass,we=this.$$.ptr,Ae=ne.$$.ptrType.registeredClass,$e=ne.$$.ptr;ee.baseClass;)we=ee.upcast(we),ee=ee.baseClass;for(;Ae.baseClass;)$e=Ae.upcast($e),Ae=Ae.baseClass;return ee===Ae&&we===$e}function $o(ne){return{count:ne.count,deleteScheduled:ne.deleteScheduled,preservePointerOnDelete:ne.preservePointerOnDelete,ptr:ne.ptr,ptrType:ne.ptrType,smartPtr:ne.smartPtr,smartPtrType:ne.smartPtrType}}function Jn(ne){function ee(we){return we.$$.ptrType.registeredClass.name}sn(ee(ne)+" instance already deleted")}var Co=!1;function gi(ne){}function Oa(ne){ne.smartPtr?ne.smartPtrType.rawDestructor(ne.smartPtr):ne.ptrType.registeredClass.rawDestructor(ne.ptr)}function Kn(ne){ne.count.value-=1;var ee=ne.count.value===0;ee&&Oa(ne)}function _t(ne,ee,we){if(ee===we)return ne;if(we.baseClass===void 0)return null;var Ae=_t(ne,ee,we.baseClass);return Ae===null?null:we.downcast(Ae)}var ln={};function mr(){return Object.keys(To).length}function la(){var ne=[];for(var ee in To)To.hasOwnProperty(ee)&&ne.push(To[ee]);return ne}var Vr=[];function So(){for(;Vr.length;){var ne=Vr.pop();ne.$$.deleteScheduled=!1,ne.delete()}}var Ni=void 0;function Xr(ne){Ni=ne,Vr.length&&Ni&&Ni(So)}function Os(){o.getInheritedInstanceCount=mr,o.getLiveInheritedInstances=la,o.flushPendingDeletes=So,o.setDelayFunction=Xr}var To={};function so(ne,ee){for(ee===void 0&&sn("ptr should not be undefined");ne.baseClass;)ee=ne.upcast(ee),ne=ne.baseClass;return ee}function Ma(ne,ee){return ee=so(ne,ee),To[ee]}function _i(ne,ee){(!ee.ptrType||!ee.ptr)&&qi("makeClassHandle requires ptr and ptrType");var we=!!ee.smartPtrType,Ae=!!ee.smartPtr;return we!==Ae&&qi("Both smartPtrType and smartPtr must be specified"),ee.count={value:1},Ht(Object.create(ne,{$$:{value:ee}}))}function Pa(ne){var ee=this.getPointee(ne);if(!ee)return this.destructor(ne),null;var we=Ma(this.registeredClass,ee);if(we!==void 0){if(we.$$.count.value===0)return we.$$.ptr=ee,we.$$.smartPtr=ne,we.clone();var Ae=we.clone();return this.destructor(ne),Ae}function $e(){return this.isSmartPointer?_i(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:ee,smartPtrType:this,smartPtr:ne}):_i(this.registeredClass.instancePrototype,{ptrType:this,ptr:ne})}var st=this.registeredClass.getActualType(ee),z=ln[st];if(!z)return $e.call(this);var re;this.isConst?re=z.constPointerType:re=z.pointerType;var A=_t(ee,this.registeredClass,re.registeredClass);return A===null?$e.call(this):this.isSmartPointer?_i(re.registeredClass.instancePrototype,{ptrType:re,ptr:A,smartPtrType:this,smartPtr:ne}):_i(re.registeredClass.instancePrototype,{ptrType:re,ptr:A})}function Ht(ne){return typeof FinalizationRegistry>"u"?(Ht=ee=>ee,ne):(Co=new FinalizationRegistry(ee=>{Kn(ee.$$)}),Ht=ee=>{var we=ee.$$,Ae=!!we.smartPtr;if(Ae){var $e={$$:we};Co.register(ee,$e,ee)}return ee},gi=ee=>Co.unregister(ee),Ht(ne))}function Yi(){if(this.$$.ptr||Jn(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var ne=Ht(Object.create(Object.getPrototypeOf(this),{$$:{value:$o(this.$$)}}));return ne.$$.count.value+=1,ne.$$.deleteScheduled=!1,ne}function Ms(){this.$$.ptr||Jn(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&sn("Object already scheduled for deletion"),gi(this),Kn(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function ua(){return!this.$$.ptr}function co(){return this.$$.ptr||Jn(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&sn("Object already scheduled for deletion"),Vr.push(this),Vr.length===1&&Ni&&Ni(So),this.$$.deleteScheduled=!0,this}function _o(){ci.prototype.isAliasOf=Xi,ci.prototype.clone=Yi,ci.prototype.delete=Ms,ci.prototype.isDeleted=ua,ci.prototype.deleteLater=co}function ci(){}function ki(ne,ee,we){if(ne[ee].overloadTable===void 0){var Ae=ne[ee];ne[ee]=function(){return ne[ee].overloadTable.hasOwnProperty(arguments.length)||sn("Function '"+we+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+ne[ee].overloadTable+")!"),ne[ee].overloadTable[arguments.length].apply(this,arguments)},ne[ee].overloadTable=[],ne[ee].overloadTable[Ae.argCount]=Ae}}function vn(ne,ee,we){o.hasOwnProperty(ne)?(sn("Cannot register public name '"+ne+"' twice"),ki(o,ne,ne),o.hasOwnProperty(we)&&sn("Cannot register multiple overloads of a function with the same number of arguments ("+we+")!"),o[ne].overloadTable[we]=ee):o[ne]=ee}function Ei(ne,ee,we,Ae,$e,st,z,re){this.name=ne,this.constructor=ee,this.instancePrototype=we,this.rawDestructor=Ae,this.baseClass=$e,this.getActualType=st,this.upcast=z,this.downcast=re,this.pureVirtualFunctions=[]}function jo(ne,ee,we){for(;ee!==we;)ee.upcast||sn("Expected null or instance of "+we.name+", got an instance of "+ee.name),ne=ee.upcast(ne),ee=ee.baseClass;return ne}function Ji(ne,ee){if(ee===null)return this.isReference&&sn("null is not a valid "+this.name),0;ee.$$||sn('Cannot pass "'+Aa(ee)+'" as a '+this.name),ee.$$.ptr||sn("Cannot pass deleted object as a pointer of type "+this.name);var we=ee.$$.ptrType.registeredClass,Ae=jo(ee.$$.ptr,we,this.registeredClass);return Ae}function Vi(ne,ee){var we;if(ee===null)return this.isReference&&sn("null is not a valid "+this.name),this.isSmartPointer?(we=this.rawConstructor(),ne!==null&&ne.push(this.rawDestructor,we),we):0;ee.$$||sn('Cannot pass "'+Aa(ee)+'" as a '+this.name),ee.$$.ptr||sn("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&ee.$$.ptrType.isConst&&sn("Cannot convert argument of type "+(ee.$$.smartPtrType?ee.$$.smartPtrType.name:ee.$$.ptrType.name)+" to parameter type "+this.name);var Ae=ee.$$.ptrType.registeredClass;if(we=jo(ee.$$.ptr,Ae,this.registeredClass),this.isSmartPointer)switch(ee.$$.smartPtr===void 0&&sn("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:ee.$$.smartPtrType===this?we=ee.$$.smartPtr:sn("Cannot convert argument of type "+(ee.$$.smartPtrType?ee.$$.smartPtrType.name:ee.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:we=ee.$$.smartPtr;break;case 2:if(ee.$$.smartPtrType===this)we=ee.$$.smartPtr;else{var $e=ee.clone();we=this.rawShare(we,Pn.toHandle(function(){$e.delete()})),ne!==null&&ne.push(this.rawDestructor,we)}break;default:sn("Unsupporting sharing policy")}return we}function Ps(ne,ee){if(ee===null)return this.isReference&&sn("null is not a valid "+this.name),0;ee.$$||sn('Cannot pass "'+Aa(ee)+'" as a '+this.name),ee.$$.ptr||sn("Cannot pass deleted object as a pointer of type "+this.name),ee.$$.ptrType.isConst&&sn("Cannot convert argument of type "+ee.$$.ptrType.name+" to parameter type "+this.name);var we=ee.$$.ptrType.registeredClass,Ae=jo(ee.$$.ptr,we,this.registeredClass);return Ae}function Ho(ne){return this.rawGetPointee&&(ne=this.rawGetPointee(ne)),ne}function Rs(ne){this.rawDestructor&&this.rawDestructor(ne)}function lo(ne){ne!==null&&ne.delete()}function Zi(){Qi.prototype.getPointee=Ho,Qi.prototype.destructor=Rs,Qi.prototype.argPackAdvance=8,Qi.prototype.readValueFromPointer=rt,Qi.prototype.deleteObject=lo,Qi.prototype.fromWireType=Pa}function Qi(ne,ee,we,Ae,$e,st,z,re,A,N,I){this.name=ne,this.registeredClass=ee,this.isReference=we,this.isConst=Ae,this.isSmartPointer=$e,this.pointeeType=st,this.sharingPolicy=z,this.rawGetPointee=re,this.rawConstructor=A,this.rawShare=N,this.rawDestructor=I,!$e&&ee.baseClass===void 0?Ae?(this.toWireType=Ji,this.destructorFunction=null):(this.toWireType=Ps,this.destructorFunction=null):this.toWireType=Vi}function Fr(ne,ee,we){o.hasOwnProperty(ne)||qi("Replacing nonexistant public symbol"),o[ne].overloadTable!==void 0&&we!==void 0||(o[ne]=ee,o[ne].argCount=we)}function bc(ne,ee,we){var Ae=o["dynCall_"+ne];return we&&we.length?Ae.apply(null,[ee].concat(we)):Ae.call(null,ee)}var Ko=[];function qo(ne){var ee=Ko[ne];return ee||(ne>=Ko.length&&(Ko.length=ne+1),Ko[ne]=ee=ye.get(ne)),ee}function Ir(ne,ee,we){if(ne.includes("j"))return bc(ne,ee,we);var Ae=qo(ee).apply(null,we);return Ae}function Dc(ne,ee){var we=[];return function(){return we.length=0,Object.assign(we,arguments),Ir(ne,ee,we)}}function bi(ne,ee){ne=Gt(ne);function we(){return ne.includes("j")?Dc(ne,ee):qo(ee)}var Ae=we();return typeof Ae!="function"&&sn("unknown function pointer with signature "+ne+": "+ee),Ae}var Ur=void 0;function rs(ne){var ee=et(ne),we=Gt(ee);return Qe(ee),we}function Eo(ne,ee){var we=[],Ae={};function $e(st){if(!Ae[st]&&!Dt[st]){if(wt[st]){wt[st].forEach($e);return}we.push(st),Ae[st]=!0}}throw ee.forEach($e),new Ur(ne+": "+we.map(rs).join([", "]))}function pi(ne,ee,we,Ae,$e,st,z,re,A,N,I,M,V){I=Gt(I),st=bi($e,st),re&&(re=bi(z,re)),N&&(N=bi(A,N)),V=bi(M,V);var H=In(I);vn(H,function(){Eo("Cannot construct "+I+" due to unbound types",[Ae])}),kr([ne,ee,we],Ae?[Ae]:[],function(q){q=q[0];var Y,ue;Ae?(Y=q.registeredClass,ue=Y.instancePrototype):ue=ci.prototype;var ge=Vn(H,function(){if(Object.getPrototypeOf(this)!==me)throw new Mn("Use 'new' to construct "+I);if(_e.constructor_body===void 0)throw new Mn(I+" has no accessible constructor");var Ke=_e.constructor_body[arguments.length];if(Ke===void 0)throw new Mn("Tried to invoke ctor of "+I+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(_e.constructor_body).toString()+") parameters instead!");return Ke.apply(this,arguments)}),me=Object.create(ue,{constructor:{value:ge}});ge.prototype=me;var _e=new Ei(I,ge,me,V,Y,st,re,N),De=new Qi(I,_e,!0,!1,!1),Fe=new Qi(I+"*",_e,!1,!1,!1),je=new Qi(I+" const*",_e,!1,!0,!1);return ln[ne]={pointerType:Fe,constPointerType:je},Fr(H,ge),[De,Fe,je]})}function fa(ne,ee){for(var we=[],Ae=0;Ae>2]);return we}function Ls(ne,ee){if(!(ne instanceof Function))throw new TypeError("new_ called with constructor type "+typeof ne+" which is not a function");var we=Vn(ne.name||"unknownFunctionName",function(){});we.prototype=ne.prototype;var Ae=new we,$e=ne.apply(Ae,ee);return $e instanceof Object?$e:Ae}function is(ne,ee,we,Ae,$e){var st=ee.length;st<2&&sn("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var z=ee[1]!==null&&we!==null,re=!1,A=1;A0?", ":"")+q),J+=(k?"var rv = ":"")+"invoker(fn"+(q.length>0?", ":"")+q+`); -`,ie)J+=`runDestructors(destructors); -`;else for(var N=z?1:2;N0?", ":"")+M),V+=(N?"var rv = ":"")+"invoker(fn"+(M.length>0?", ":"")+M+`); +`,re)V+=`runDestructors(destructors); +`;else for(var A=z?1:2;A0);var z=xa(te,xe);He=ii(Ae,He),pr([],[re],function(ie){ie=ie[0];var N="constructor "+ie.name;if(ie.registeredClass.constructor_body===void 0&&(ie.registeredClass.constructor_body=[]),ie.registeredClass.constructor_body[te-1]!==void 0)throw new Sr("Cannot register multiple constructors with identical number of parameters ("+(te-1)+") for class '"+ie.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return ie.registeredClass.constructor_body[te-1]=()=>{oi("Cannot construct "+ie.name+" due to unbound types",z)},pr([],z,function(k){return k.splice(1,0,null),ie.registeredClass.constructor_body[te-1]=Ca(N,k,null,He,ct),[]}),[]})}function Pr(re,te,xe,Ae,He,ct,z,ie){var N=xa(xe,Ae);te=qt(te),ct=ii(He,ct),pr([],[re],function(k){k=k[0];var W=k.name+"."+te;te.startsWith("@@")&&(te=Symbol[te.substring(2)]),ie&&k.registeredClass.pureVirtualFunctions.push(te);function q(){oi("Cannot call "+W+" due to unbound types",N)}var J=k.registeredClass.instancePrototype,R=J[te];return R===void 0||R.overloadTable===void 0&&R.className!==k.name&&R.argCount===xe-2?(q.argCount=xe-2,q.className=k.name,J[te]=q):(hs(J,te,W),J[te].overloadTable[xe-2]=q),pr([],N,function(A){var $=Ca(W,A,k,ct,z);return J[te].overloadTable===void 0?($.argCount=xe-2,J[te]=$):J[te].overloadTable[xe-2]=$,[]}),[]})}var Ga=[],ai=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function Ws(re){re>4&&--ai[re].refcount===0&&(ai[re]=void 0,Ga.push(re))}function $s(){for(var re=0,te=5;te(re||Rn("Cannot use deleted val. handle = "+re),ai[re].value),toHandle:re=>{switch(re){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:{var te=Ga.length?Ga.pop():ai.length;return ai[te]={refcount:1,value:re},te}}}};function zs(re,te){te=qt(te),yi(re,{name:te,fromWireType:function(xe){var Ae=kn.toValue(xe);return Ws(xe),Ae},toWireType:function(xe,Ae){return kn.toHandle(Ae)},argPackAdvance:8,readValueFromPointer:tt,destructorFunction:null})}function ia(re){if(re===null)return"null";var te=typeof re;return te==="object"||te==="array"||te==="function"?re.toString():""+re}function qi(re,te){switch(te){case 2:return function(xe){return this.fromWireType(ue[xe>>2])};case 3:return function(xe){return this.fromWireType(me[xe>>3])};default:throw new TypeError("Unknown float type: "+re)}}function To(re,te,xe){var Ae=zt(xe);te=qt(te),yi(re,{name:te,fromWireType:function(He){return He},toWireType:function(He,ct){return ct},argPackAdvance:8,readValueFromPointer:qi(te,Ae),destructorFunction:null})}function Wc(re,te,xe){switch(te){case 0:return xe?function(He){return j[He]}:function(He){return V[He]};case 1:return xe?function(He){return F[He>>1]}:function(He){return G[He>>1]};case 2:return xe?function(He){return X[He>>2]}:function(He){return ne[He>>2]};default:throw new TypeError("Unknown integer type: "+re)}}function ko(re,te,xe,Ae,He){te=qt(te);var ct=zt(xe),z=q=>q;if(Ae===0){var ie=32-8*xe;z=q=>q<>>ie}var N=te.includes("unsigned"),k=(q,J)=>{},W;N?W=function(q,J){return k(J,this.name),J>>>0}:W=function(q,J){return k(J,this.name),J},yi(re,{name:te,fromWireType:z,toWireType:W,argPackAdvance:8,readValueFromPointer:Wc(te,ct,Ae!==0),destructorFunction:null})}function $c(re,te,xe){var Ae=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],He=Ae[te];function ct(z){z=z>>2;var ie=ne,N=ie[z],k=ie[z+1];return new He(B,k,N)}xe=qt(xe),yi(re,{name:xe,fromWireType:ct,argPackAdvance:8,readValueFromPointer:ct},{ignoreDuplicateRegistrations:!0})}function lo(re,te){te=qt(te);var xe=te==="std::string";yi(re,{name:te,fromWireType:function(Ae){var He=ne[Ae>>2],ct=Ae+4,z;if(xe)for(var ie=ct,N=0;N<=He;++N){var k=ct+N;if(N==He||V[k]==0){var W=k-ie,q=I(ie,W);z===void 0?z=q:(z+="\0",z+=q),ie=k+1}}else{for(var J=new Array(He),N=0;N>2]=ct,xe&&z)M(He,N,ct+1);else if(z)for(var k=0;k255&&(rt(N),Rn("String has UTF-16 code units that do not fit in 8 bits")),V[N+k]=W}else for(var k=0;k>1,He=Ae+te/2;!(Ae>=He)&&G[Ae];)++Ae;if(xe=Ae<<1,xe-re>32&&zc)return zc.decode(V.subarray(re,xe));for(var ct="",z=0;!(z>=te/2);++z){var ie=F[re+z*2>>1];if(ie==0)break;ct+=String.fromCharCode(ie)}return ct}function jc(re,te,xe){if(xe===void 0&&(xe=2147483647),xe<2)return 0;xe-=2;for(var Ae=te,He=xe>1]=z,te+=2}return F[te>>1]=0,te-Ae}function $l(re){return re.length*2}function Hc(re,te){for(var xe=0,Ae="";!(xe>=te/4);){var He=X[re+xe*4>>2];if(He==0)break;if(++xe,He>=65536){var ct=He-65536;Ae+=String.fromCharCode(55296|ct>>10,56320|ct&1023)}else Ae+=String.fromCharCode(He)}return Ae}function zl(re,te,xe){if(xe===void 0&&(xe=2147483647),xe<4)return 0;for(var Ae=te,He=Ae+xe-4,ct=0;ct=55296&&z<=57343){var ie=re.charCodeAt(++ct);z=65536+((z&1023)<<10)|ie&1023}if(X[te>>2]=z,te+=4,te+4>He)break}return X[te>>2]=0,te-Ae}function jl(re){for(var te=0,xe=0;xe=55296&&Ae<=57343&&++xe,te+=4}return te}function Hl(re,te,xe){xe=qt(xe);var Ae,He,ct,z,ie;te===2?(Ae=js,He=jc,z=$l,ct=()=>G,ie=1):te===4&&(Ae=Hc,He=zl,z=jl,ct=()=>ne,ie=2),yi(re,{name:xe,fromWireType:function(N){for(var k=ne[N>>2],W=ct(),q,J=N+4,R=0;R<=k;++R){var A=N+4+R*te;if(R==k||W[A>>ie]==0){var $=A-J,ee=Ae(J,$);q===void 0?q=ee:(q+="\0",q+=ee),J=A+te}}return rt(N),q},toWireType:function(N,k){typeof k!="string"&&Rn("Cannot pass non-string to C++ string type "+xe);var W=z(k),q=Xe(4+W+te);return ne[q>>2]=W>>ie,He(k,q+4,W+te),N!==null&&N.push(rt,q),q},argPackAdvance:8,readValueFromPointer:tt,destructorFunction:function(N){rt(N)}})}function Hs(re,te,xe,Ae,He,ct){Je[re]={name:qt(te),rawConstructor:ii(xe,Ae),rawDestructor:ii(He,ct),fields:[]}}function Kc(re,te,xe,Ae,He,ct,z,ie,N,k){Je[re].fields.push({fieldName:qt(te),getterReturnType:xe,getter:ii(Ae,He),getterContext:ct,setterArgumentType:z,setter:ii(ie,N),setterContext:k})}function Xc(re,te){te=qt(te),yi(re,{isVoid:!0,name:te,argPackAdvance:0,fromWireType:function(){},toWireType:function(xe,Ae){}})}var Kl={};function Ks(re){var te=Kl[re];return te===void 0?qt(re):te}function Xs(){return typeof globalThis=="object"?globalThis:function(){return Function}()("return this")()}function qc(re){return re===0?kn.toHandle(Xs()):(re=Ks(re),kn.toHandle(Xs()[re]))}function qs(re){re>4&&(ai[re].refcount+=1)}function Ys(re,te){var xe=Bt[re];return xe===void 0&&Rn(te+" has unknown type "+Bs(re)),xe}function Js(re){for(var te="",xe=0;xene,He="return function emval_allocator_"+re+`(constructor, argTypes, args) { +`),V+=`} +`,q.push(V);var ge=Ls(Function,q).apply(null,Y);return ge}function Ra(ne,ee,we,Ae,$e,st){E(ee>0);var z=fa(ee,we);$e=bi(Ae,$e),kr([],[ne],function(re){re=re[0];var A="constructor "+re.name;if(re.registeredClass.constructor_body===void 0&&(re.registeredClass.constructor_body=[]),re.registeredClass.constructor_body[ee-1]!==void 0)throw new Mn("Cannot register multiple constructors with identical number of parameters ("+(ee-1)+") for class '"+re.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return re.registeredClass.constructor_body[ee-1]=()=>{Eo("Cannot construct "+re.name+" due to unbound types",z)},kr([],z,function(N){return N.splice(1,0,null),re.registeredClass.constructor_body[ee-1]=is(A,N,null,$e,st),[]}),[]})}function qn(ne,ee,we,Ae,$e,st,z,re){var A=fa(we,Ae);ee=Gt(ee),st=bi($e,st),kr([],[ne],function(N){N=N[0];var I=N.name+"."+ee;ee.startsWith("@@")&&(ee=Symbol[ee.substring(2)]),re&&N.registeredClass.pureVirtualFunctions.push(ee);function M(){Eo("Cannot call "+I+" due to unbound types",A)}var V=N.registeredClass.instancePrototype,H=V[ee];return H===void 0||H.overloadTable===void 0&&H.className!==N.name&&H.argCount===we-2?(M.argCount=we-2,M.className=N.name,V[ee]=M):(ki(V,ee,I),V[ee].overloadTable[we-2]=M),kr([],A,function(q){var Y=is(I,q,N,st,z);return V[ee].overloadTable===void 0?(Y.argCount=we-2,V[ee]=Y):V[ee].overloadTable[we-2]=Y,[]}),[]})}var La=[],li=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function Br(ne){ne>4&&--li[ne].refcount===0&&(li[ne]=void 0,La.push(ne))}function Ic(){for(var ne=0,ee=5;ee(ne||sn("Cannot use deleted val. handle = "+ne),li[ne].value),toHandle:ne=>{switch(ne){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:{var ee=La.length?La.pop():li.length;return li[ee]={refcount:1,value:ne},ee}}}};function eo(ne,ee){ee=Gt(ee),tn(ne,{name:ee,fromWireType:function(we){var Ae=Pn.toValue(we);return Br(we),Ae},toWireType:function(we,Ae){return Pn.toHandle(Ae)},argPackAdvance:8,readValueFromPointer:rt,destructorFunction:null})}function Aa(ne){if(ne===null)return"null";var ee=typeof ne;return ee==="object"||ee==="array"||ee==="function"?ne.toString():""+ne}function Na(ne,ee){switch(ee){case 2:return function(we){return this.fromWireType(le[we>>2])};case 3:return function(we){return this.fromWireType(ve[we>>3])};default:throw new TypeError("Unknown float type: "+ne)}}function Fi(ne,ee,we){var Ae=Ut(we);ee=Gt(ee),tn(ne,{name:ee,fromWireType:function($e){return $e},toWireType:function($e,st){return st},argPackAdvance:8,readValueFromPointer:Na(ee,Ae),destructorFunction:null})}function As(ne,ee,we){switch(ee){case 0:return we?function($e){return j[$e]}:function($e){return F[$e]};case 1:return we?function($e){return U[$e>>1]}:function($e){return W[$e>>1]};case 2:return we?function($e){return J[$e>>2]}:function($e){return te[$e>>2]};default:throw new TypeError("Unknown integer type: "+ne)}}function da(ne,ee,we,Ae,$e){ee=Gt(ee);var st=Ut(we),z=M=>M;if(Ae===0){var re=32-8*we;z=M=>M<>>re}var A=ee.includes("unsigned"),N=(M,V)=>{},I;A?I=function(M,V){return N(V,this.name),V>>>0}:I=function(M,V){return N(V,this.name),V},tn(ne,{name:ee,fromWireType:z,toWireType:I,argPackAdvance:8,readValueFromPointer:As(ee,st,Ae!==0),destructorFunction:null})}function Oc(ne,ee,we){var Ae=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],$e=Ae[ee];function st(z){z=z>>2;var re=te,A=re[z],N=re[z+1];return new $e(G,N,A)}we=Gt(we),tn(ne,{name:we,fromWireType:st,argPackAdvance:8,readValueFromPointer:st},{ignoreDuplicateRegistrations:!0})}function Xo(ne,ee){ee=Gt(ee);var we=ee==="std::string";tn(ne,{name:ee,fromWireType:function(Ae){var $e=te[Ae>>2],st=Ae+4,z;if(we)for(var re=st,A=0;A<=$e;++A){var N=st+A;if(A==$e||F[N]==0){var I=N-re,M=O(re,I);z===void 0?z=M:(z+="\0",z+=M),re=N+1}}else{for(var V=new Array($e),A=0;A<$e;++A)V[A]=String.fromCharCode(F[st+A]);z=V.join("")}return Qe(Ae),z},toWireType:function(Ae,$e){$e instanceof ArrayBuffer&&($e=new Uint8Array($e));var st,z=typeof $e=="string";z||$e instanceof Uint8Array||$e instanceof Uint8ClampedArray||$e instanceof Int8Array||sn("Cannot pass non-string to std::string"),we&&z?st=k($e):st=$e.length;var re=Ye(4+st+1),A=re+4;if(te[re>>2]=st,we&&z)P($e,A,st+1);else if(z)for(var N=0;N255&&(Qe(A),sn("String has UTF-16 code units that do not fit in 8 bits")),F[A+N]=I}else for(var N=0;N>1,$e=Ae+ee/2;!(Ae>=$e)&&W[Ae];)++Ae;if(we=Ae<<1,we-ne>32&&ka)return ka.decode(F.subarray(ne,we));for(var st="",z=0;!(z>=ee/2);++z){var re=U[ne+z*2>>1];if(re==0)break;st+=String.fromCharCode(re)}return st}function as(ne,ee,we){if(we===void 0&&(we=2147483647),we<2)return 0;we-=2;for(var Ae=ee,$e=we>1]=z,ee+=2}return U[ee>>1]=0,ee-Ae}function _l(ne){return ne.length*2}function El(ne,ee){for(var we=0,Ae="";!(we>=ee/4);){var $e=J[ne+we*4>>2];if($e==0)break;if(++we,$e>=65536){var st=$e-65536;Ae+=String.fromCharCode(55296|st>>10,56320|st&1023)}else Ae+=String.fromCharCode($e)}return Ae}function bl(ne,ee,we){if(we===void 0&&(we=2147483647),we<4)return 0;for(var Ae=ee,$e=Ae+we-4,st=0;st=55296&&z<=57343){var re=ne.charCodeAt(++st);z=65536+((z&1023)<<10)|re&1023}if(J[ee>>2]=z,ee+=4,ee+4>$e)break}return J[ee>>2]=0,ee-Ae}function Dl(ne){for(var ee=0,we=0;we=55296&&Ae<=57343&&++we,ee+=4}return ee}function Il(ne,ee,we){we=Gt(we);var Ae,$e,st,z,re;ee===2?(Ae=Mc,$e=as,z=_l,st=()=>W,re=1):ee===4&&(Ae=El,$e=bl,z=Dl,st=()=>te,re=2),tn(ne,{name:we,fromWireType:function(A){for(var N=te[A>>2],I=st(),M,V=A+4,H=0;H<=N;++H){var q=A+4+H*ee;if(H==N||I[q>>re]==0){var Y=q-V,ue=Ae(V,Y);M===void 0?M=ue:(M+="\0",M+=ue),V=q+ee}}return Qe(A),M},toWireType:function(A,N){typeof N!="string"&&sn("Cannot pass non-string to C++ string type "+we);var I=z(N),M=Ye(4+I+ee);return te[M>>2]=I>>re,$e(N,M+4,I+ee),A!==null&&A.push(Qe,M),M},argPackAdvance:8,readValueFromPointer:rt,destructorFunction:function(A){Qe(A)}})}function Ns(ne,ee,we,Ae,$e,st){Ze[ne]={name:Gt(ee),rawConstructor:bi(we,Ae),rawDestructor:bi($e,st),fields:[]}}function Ol(ne,ee,we,Ae,$e,st,z,re,A,N){Ze[ne].fields.push({fieldName:Gt(ee),getterReturnType:we,getter:bi(Ae,$e),getterContext:st,setterArgumentType:z,setter:bi(re,A),setterContext:N})}function ks(ne,ee){ee=Gt(ee),tn(ne,{isVoid:!0,name:ee,argPackAdvance:0,fromWireType:function(){},toWireType:function(we,Ae){}})}var Ml={};function Vs(ne){var ee=Ml[ne];return ee===void 0?Gt(ne):ee}function Fs(){return typeof globalThis=="object"?globalThis:function(){return Function}()("return this")()}function Pc(ne){return ne===0?Pn.toHandle(Fs()):(ne=Vs(ne),Pn.toHandle(Fs()[ne]))}function ss(ne){ne>4&&(li[ne].refcount+=1)}function Us(ne,ee){var we=Dt[ne];return we===void 0&&sn(ee+" has unknown type "+rs(ne)),we}function Bs(ne){for(var ee="",we=0;wete,$e="return function emval_allocator_"+ne+`(constructor, argTypes, args) { var HEAPU32 = getMemory(); -`,xe=0;xe>2)], 'parameter "+xe+`'); -var arg`+xe+" = argType"+xe+`.readValueFromPointer(args); -args += argType`+xe+`['argPackAdvance']; +`,we=0;we>2)], 'parameter "+we+`'); +var arg`+we+" = argType"+we+`.readValueFromPointer(args); +args += argType`+we+`['argPackAdvance']; argTypes += 4; -`;return He+="var obj = new constructor("+te+`); +`;return $e+="var obj = new constructor("+ee+`); return valueToHandle(obj); } -`,new Function("requireRegisteredType","Module","valueToHandle","getMemory",He)(Ys,o,kn.toHandle,Ae)}var ms={};function Yc(re,te,xe,Ae){re=kn.toValue(re);var He=ms[te];return He||(He=Js(te),ms[te]=He),He(re,xe,Ae)}function Jc(re,te){re=Ys(re,"_emval_take_value");var xe=re.readValueFromPointer(te);return kn.toHandle(xe)}function Zs(){$e("")}function Qs(){return 2147483648}function ec(){return Qs()}function Zc(re,te,xe){V.copyWithin(re,te,te+xe)}function Qc(re){try{return T.grow(re-B.byteLength+65535>>>16),ge(T.buffer),1}catch{}}function el(re){var te=V.length;re=re>>>0;var xe=Qs();if(re>xe)return!1;let Ae=(N,k)=>N+(k-N%k)%k;for(var He=1;He<=4;He*=2){var ct=te*(1+.2/He);ct=Math.min(ct,re+100663296);var z=Math.min(xe,Ae(Math.max(re,ct),65536)),ie=Qc(z);if(ie)return!0}return!1}var vs={};function tl(){return l||"./this.program"}function Vo(){if(!Vo.strings){var re=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",te={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:re,_:tl()};for(var xe in vs)vs[xe]===void 0?delete te[xe]:te[xe]=vs[xe];var Ae=[];for(var xe in te)Ae.push(xe+"="+te[xe]);Vo.strings=Ae}return Vo.strings}function tc(re,te,xe){for(var Ae=0;Ae>0]=re.charCodeAt(Ae);j[te>>0]=0}function ki(re,te){var xe=0;return Vo().forEach(function(Ae,He){var ct=te+xe;ne[re+He*4>>2]=ct,tc(Ae,ct),xe+=Ae.length+1}),0}function nc(re,te){var xe=Vo();ne[re>>2]=xe.length;var Ae=0;return xe.forEach(function(He){Ae+=He.length+1}),ne[te>>2]=Ae,0}function oa(re){return 52}function ys(re,te,xe,Ae,He){return 70}var rc=[null,[],[]];function Wa(re,te){var xe=rc[re];te===0||te===10?((re===1?x:C)(D(xe,0)),xe.length=0):xe.push(te)}function ic(re,te,xe,Ae){for(var He=0,ct=0;ct>2],ie=ne[te+4>>2];te+=8;for(var N=0;N>2]=He,0}function se(re){var te=o["_"+re];return te}function ce(re,te){j.set(re,te)}function Se(re,te,xe,Ae,He){var ct={string:A=>{var $=0;if(A!=null&&A!==0){var ee=(A.length<<2)+1;$=xt(ee),M(A,$,ee)}return $},array:A=>{var $=xt(A.length);return ce(A,$),$}};function z(A){return te==="string"?I(A):te==="boolean"?!!A:A}var ie=se(re),N=[],k=0;if(Ae)for(var W=0;W0||(H(),oe>0))return;function te(){Jt||(Jt=!0,o.calledRun=!0,!_&&(O(),a(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),Y()))}o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),te()},1)):te()}if(o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return Xt(),i.ready}})();t.exports=r})(CH);var FDe=CH.exports;const UDe=Vl(FDe),BDe=new URL("/static/dv3d/openjpegwasm_decode.wasm",import.meta.url),Xp={codec:void 0,decoder:void 0,decodeConfig:{}};function GDe(t){if(Xp.decodeConfig=t,Xp.codec)return Promise.resolve();const e=UDe({locateFile:r=>r.endsWith(".wasm")?BDe.toString():r});return new Promise((r,n)=>{e.then(i=>{Xp.codec=i,Xp.decoder=new i.J2KDecoder,r()},n)})}async function fO(t,e){await GDe();const r=Xp.decoder,n=r.getEncodedBuffer(t.length);n.set(t),r.decode();const i=r.getFrameInfo(),o=r.getDecodedBuffer();new Uint8Array(o.length).set(o);const s=`x: ${r.getImageOffset().x}, y: ${r.getImageOffset().y}`,c=r.getNumDecompositions(),l=r.getNumLayers(),f=["unknown","LRCP","RLCP","RPCL","PCRL","CPRL"][r.getProgressionOrder()+1],u=r.getIsReversible(),d=`${r.getBlockDimensions().width} x ${r.getBlockDimensions().height}`,h=`${r.getTileSize().width} x ${r.getTileSize().height}`,g=`${r.getTileOffset().x}, ${r.getTileOffset().y}`,p=r.getColorSpace(),v=`${o.length.toLocaleString()} bytes`,y=`${(o.length/n.length).toFixed(2)}:1`,m={columns:i.width,rows:i.height,bitsPerPixel:i.bitsPerSample,signed:i.isSigned,bytesPerPixel:e.bytesPerPixel,componentsPerPixel:i.componentCount},w=WDe(i,o),x={imageOffset:s,numDecompositions:c,numLayers:l,progessionOrder:f,reversible:u,blockDimensions:d,tileSize:h,tileOffset:g,colorTransform:p,decodedSize:v,compressionRatio:y};return{...e,pixelData:w,imageInfo:m,encodeOptions:x,...x,...m}}function WDe(t,e){return t.bitsPerSample>8?t.isSigned?new Int16Array(e.buffer,e.byteOffset,e.byteLength/2):new Uint16Array(e.buffer,e.byteOffset,e.byteLength/2):t.isSigned?new Int8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}var SH={exports:{}};(function(t,e){var r=(()=>{var n=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(n=n||__filename),function(o){o=o||{};var o=typeof o<"u"?o:{},a,s;o.ready=new Promise(function(N,k){a=N,s=k});var c=Object.assign({},o),l=typeof window=="object",f=typeof importScripts=="function",u=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",d="";function h(N){return o.locateFile?o.locateFile(N,d):d+N}var g,p,v;if(u){var y=Dl,m=Dl;f?d=m.dirname(d)+"/":d=__dirname+"/",g=(N,k)=>(N=de(N)?new URL(N):m.normalize(N),y.readFileSync(N,k?void 0:"utf8")),v=N=>{var k=g(N,!0);return k.buffer||(k=new Uint8Array(k)),k},p=(N,k,W)=>{N=de(N)?new URL(N):m.normalize(N),y.readFile(N,function(q,J){q?W(q):k(J.buffer)})},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),process.on("uncaughtException",function(N){if(!(N instanceof fe))throw N}),process.on("unhandledRejection",function(N){throw N}),o.inspect=function(){return"[Emscripten Module object]"}}else(l||f)&&(f?d=self.location.href:typeof document<"u"&&document.currentScript&&(d=document.currentScript.src),n&&(d=n),d.indexOf("blob:")!==0?d=d.substr(0,d.replace(/[?#].*/,"").lastIndexOf("/")+1):d="",g=N=>{var k=new XMLHttpRequest;return k.open("GET",N,!1),k.send(null),k.responseText},f&&(v=N=>{var k=new XMLHttpRequest;return k.open("GET",N,!1),k.responseType="arraybuffer",k.send(null),new Uint8Array(k.response)}),p=(N,k,W)=>{var q=new XMLHttpRequest;q.open("GET",N,!0),q.responseType="arraybuffer",q.onload=()=>{if(q.status==200||q.status==0&&q.response){k(q.response);return}W()},q.onerror=W,q.send(null)});var w=o.print||console.log.bind(console),x=o.printErr||console.warn.bind(console);Object.assign(o,c),c=null,o.arguments&&o.arguments,o.thisProgram&&o.thisProgram,o.quit&&o.quit;var C;o.wasmBinary&&(C=o.wasmBinary),o.noExitRuntime,typeof WebAssembly!="object"&&Ge("no native wasm support detected");var S,T=!1;function _(N,k){N||Ge(k)}var E=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function b(N,k,W){for(var q=k+W,J=k;N[J]&&!(J>=q);)++J;if(J-k>16&&N.buffer&&E)return E.decode(N.subarray(k,J));for(var R="";k>10,56320|he&1023)}}return R}function D(N,k){return N?b(j,N,k):""}function I(N,k,W,q){if(!(q>0))return 0;for(var J=W,R=W+q-1,A=0;A=55296&&$<=57343){var ee=N.charCodeAt(++A);$=65536+(($&1023)<<10)|ee&1023}if($<=127){if(W>=R)break;k[W++]=$}else if($<=2047){if(W+1>=R)break;k[W++]=192|$>>6,k[W++]=128|$&63}else if($<=65535){if(W+2>=R)break;k[W++]=224|$>>12,k[W++]=128|$>>6&63,k[W++]=128|$&63}else{if(W+3>=R)break;k[W++]=240|$>>18,k[W++]=128|$>>12&63,k[W++]=128|$>>6&63,k[W++]=128|$&63}}return k[W]=0,W-J}function P(N,k,W){return I(N,j,k,W)}function M(N){for(var k=0,W=0;W=55296&&q<=57343?(k+=4,++W):k+=3}return k}var L,B,j,V,F,G,X,ne,ue;function me(N){L=N,o.HEAP8=B=new Int8Array(N),o.HEAP16=V=new Int16Array(N),o.HEAP32=G=new Int32Array(N),o.HEAPU8=j=new Uint8Array(N),o.HEAPU16=F=new Uint16Array(N),o.HEAPU32=X=new Uint32Array(N),o.HEAPF32=ne=new Float32Array(N),o.HEAPF64=ue=new Float64Array(N)}o.INITIAL_MEMORY;var ge,ye=[],Ie=[],Pe=[];function Ee(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)Y(o.preRun.shift());ft(ye)}function H(){ft(Ie)}function O(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)Z(o.postRun.shift());ft(Pe)}function Y(N){ye.unshift(N)}function K(N){Ie.unshift(N)}function Z(N){Pe.unshift(N)}var ae=0,oe=null;function _e(N){ae++,o.monitorRunDependencies&&o.monitorRunDependencies(ae)}function Oe(N){if(ae--,o.monitorRunDependencies&&o.monitorRunDependencies(ae),ae==0&&oe){var k=oe;oe=null,k()}}function Ge(N){o.onAbort&&o.onAbort(N),N="Aborted("+N+")",x(N),T=!0,N+=". Build with -sASSERTIONS for more info.";var k=new WebAssembly.RuntimeError(N);throw s(k),k}var $e="data:application/octet-stream;base64,";function le(N){return N.startsWith($e)}function de(N){return N.startsWith("file://")}var be;be="openjphjs.wasm",le(be)||(be=h(be));function pe(N){try{if(N==be&&C)return new Uint8Array(C);if(v)return v(N);throw"both async and sync fetching of the wasm failed"}catch(k){Ge(k)}}function Te(){if(!C&&(l||f)){if(typeof fetch=="function"&&!de(be))return fetch(be,{credentials:"same-origin"}).then(function(N){if(!N.ok)throw"failed to load wasm binary file at '"+be+"'";return N.arrayBuffer()}).catch(function(){return pe(be)});if(p)return new Promise(function(N,k){p(be,function(W){N(new Uint8Array(W))},k)})}return Promise.resolve().then(function(){return pe(be)})}function Ye(){var N={a:ic};function k(A,$){var ee=A.exports;o.asm=ee,S=o.asm.P,me(S.buffer),ge=o.asm.T,K(o.asm.Q),Oe()}_e();function W(A){k(A.instance)}function q(A){return Te().then(function($){return WebAssembly.instantiate($,N)}).then(function($){return $}).then(A,function($){x("failed to asynchronously prepare wasm: "+$),Ge($)})}function J(){return!C&&typeof WebAssembly.instantiateStreaming=="function"&&!le(be)&&!de(be)&&!u&&typeof fetch=="function"?fetch(be,{credentials:"same-origin"}).then(function(A){var $=WebAssembly.instantiateStreaming(A,N);return $.then(W,function(ee){return x("wasm streaming compile failed: "+ee),x("falling back to ArrayBuffer instantiation"),q(W)})}):q(W)}if(o.instantiateWasm)try{var R=o.instantiateWasm(N,k);return R}catch(A){x("Module.instantiateWasm callback failed with error: "+A),s(A)}return J().catch(s),{}}function fe(N){this.name="ExitStatus",this.message="Program terminated with exit("+N+")",this.status=N}function ft(N){for(;N.length>0;)N.shift()(o)}var gt=[];function mt(N){N.add_ref()}function Re(N){var k=new Ct(N);return k.get_caught()||k.set_caught(!0),k.set_rethrown(!1),gt.push(k),mt(k),k.get_exception_ptr()}var Je=0,at=[];function tt(N){var k=at[N];return k||(N>=at.length&&(at.length=N+1),at[N]=k=ge.get(N)),k}function wt(N){if(N.release_ref()&&!N.get_rethrown()){var k=N.get_destructor();k&&tt(k)(N.excPtr),ce(N.excPtr)}}function Bt(){_setThrew(0);var N=gt.pop();wt(N),Je=0}function Ct(N){this.excPtr=N,this.ptr=N-24,this.set_type=function(k){X[this.ptr+4>>2]=k},this.get_type=function(){return X[this.ptr+4>>2]},this.set_destructor=function(k){X[this.ptr+8>>2]=k},this.get_destructor=function(){return X[this.ptr+8>>2]},this.set_refcount=function(k){G[this.ptr>>2]=k},this.set_caught=function(k){k=k?1:0,B[this.ptr+12>>0]=k},this.get_caught=function(){return B[this.ptr+12>>0]!=0},this.set_rethrown=function(k){k=k?1:0,B[this.ptr+13>>0]=k},this.get_rethrown=function(){return B[this.ptr+13>>0]!=0},this.init=function(k,W){this.set_adjusted_ptr(0),this.set_type(k),this.set_destructor(W),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var k=G[this.ptr>>2];G[this.ptr>>2]=k+1},this.release_ref=function(){var k=G[this.ptr>>2];return G[this.ptr>>2]=k-1,k===1},this.set_adjusted_ptr=function(k){X[this.ptr+16>>2]=k},this.get_adjusted_ptr=function(){return X[this.ptr+16>>2]},this.get_exception_ptr=function(){var k=xt(this.get_type());if(k)return X[this.excPtr>>2];var W=this.get_adjusted_ptr();return W!==0?W:this.excPtr}}function Ht(N){throw Je||(Je=N),N}function $t(){var N=Je;if(!N)return Xe(0),0;var k=new Ct(N);k.set_adjusted_ptr(N);var W=k.get_type();if(!W)return Xe(0),N;for(var q=0;q>2])}var pr={},Ke={},dt={},zt=48,Tn=57;function Fr(N){if(N===void 0)return"_unknown";N=N.replace(/[^a-zA-Z0-9_]/g,"$");var k=N.charCodeAt(0);return k>=zt&&k<=Tn?"_"+N:N}function qt(N,k){return N=Fr(N),new Function("body","return function "+N+`() { +`,new Function("requireRegisteredType","Module","valueToHandle","getMemory",$e)(Us,o,Pn.toHandle,Ae)}var cs={};function Rc(ne,ee,we,Ae){ne=Pn.toValue(ne);var $e=cs[ee];return $e||($e=Bs(ee),cs[ee]=$e),$e(ne,we,Ae)}function Gs(ne,ee){ne=Us(ne,"_emval_take_value");var we=ne.readValueFromPointer(ee);return Pn.toHandle(we)}function Lc(){Ge("")}function Ws(){return 2147483648}function Ac(){return Ws()}function Nc(ne,ee,we){F.copyWithin(ne,ee,ee+we)}function kc(ne){try{return T.grow(ne-G.byteLength+65535>>>16),pe(T.buffer),1}catch{}}function Vc(ne){var ee=F.length;ne=ne>>>0;var we=Ws();if(ne>we)return!1;let Ae=(A,N)=>A+(N-A%N)%N;for(var $e=1;$e<=4;$e*=2){var st=ee*(1+.2/$e);st=Math.min(st,ne+100663296);var z=Math.min(we,Ae(Math.max(ne,st),65536)),re=kc(z);if(re)return!0}return!1}var ls={};function us(){return l||"./this.program"}function bo(){if(!bo.strings){var ne=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",ee={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:ne,_:us()};for(var we in ls)ls[we]===void 0?delete ee[we]:ee[we]=ls[we];var Ae=[];for(var we in ee)Ae.push(we+"="+ee[we]);bo.strings=Ae}return bo.strings}function Yo(ne,ee,we){for(var Ae=0;Ae>0]=ne.charCodeAt(Ae);j[ee>>0]=0}function to(ne,ee){var we=0;return bo().forEach(function(Ae,$e){var st=ee+we;te[ne+$e*4>>2]=st,Yo(Ae,st),we+=Ae.length+1}),0}function zs(ne,ee){var we=bo();te[ne>>2]=we.length;var Ae=0;return we.forEach(function($e){Ae+=$e.length+1}),te[ee>>2]=Ae,0}function $s(ne){return 52}function fs(ne,ee,we,Ae,$e){return 70}var js=[null,[],[]];function Va(ne,ee){var we=js[ne];ee===0||ee===10?((ne===1?x:C)(D(we,0)),we.length=0):we.push(ee)}function Hs(ne,ee,we,Ae){for(var $e=0,st=0;st>2],re=te[ee+4>>2];ee+=8;for(var A=0;A>2]=$e,0}function ae(ne){var ee=o["_"+ne];return ee}function se(ne,ee){j.set(ne,ee)}function Ce(ne,ee,we,Ae,$e){var st={string:q=>{var Y=0;if(q!=null&&q!==0){var ue=(q.length<<2)+1;Y=pt(ue),P(q,Y,ue)}return Y},array:q=>{var Y=pt(q.length);return se(q,Y),Y}};function z(q){return ee==="string"?O(q):ee==="boolean"?!!q:q}var re=ae(ne),A=[],N=0;if(Ae)for(var I=0;I0||($(),oe>0))return;function ee(){Bt||(Bt=!0,o.calledRun=!0,!_&&(R(),a(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),X()))}o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),ee()},1)):ee()}if(o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return $t(),i.ready}})();t.exports=r})(x$);var BEe=x$.exports;const GEe=yl(BEe),WEe=new URL("/static/dv3d/openjpegwasm_decode.wasm",import.meta.url),dp={codec:void 0,decoder:void 0,decodeConfig:{}};function zEe(t){if(dp.decodeConfig=t,dp.codec)return Promise.resolve();const e=GEe({locateFile:r=>r.endsWith(".wasm")?WEe.toString():r});return new Promise((r,n)=>{e.then(i=>{dp.codec=i,dp.decoder=new i.J2KDecoder,r()},n)})}async function X7(t,e){await zEe();const r=dp.decoder,n=r.getEncodedBuffer(t.length);n.set(t),r.decode();const i=r.getFrameInfo(),o=r.getDecodedBuffer();new Uint8Array(o.length).set(o);const s=`x: ${r.getImageOffset().x}, y: ${r.getImageOffset().y}`,c=r.getNumDecompositions(),l=r.getNumLayers(),f=["unknown","LRCP","RLCP","RPCL","PCRL","CPRL"][r.getProgressionOrder()+1],u=r.getIsReversible(),d=`${r.getBlockDimensions().width} x ${r.getBlockDimensions().height}`,h=`${r.getTileSize().width} x ${r.getTileSize().height}`,g=`${r.getTileOffset().x}, ${r.getTileOffset().y}`,p=r.getColorSpace(),v=`${o.length.toLocaleString()} bytes`,y=`${(o.length/n.length).toFixed(2)}:1`,m={columns:i.width,rows:i.height,bitsPerPixel:i.bitsPerSample,signed:i.isSigned,bytesPerPixel:e.bytesPerPixel,componentsPerPixel:i.componentCount},w=$Ee(i,o),x={imageOffset:s,numDecompositions:c,numLayers:l,progessionOrder:f,reversible:u,blockDimensions:d,tileSize:h,tileOffset:g,colorTransform:p,decodedSize:v,compressionRatio:y};return{...e,pixelData:w,imageInfo:m,encodeOptions:x,...x,...m}}function $Ee(t,e){return t.bitsPerSample>8?t.isSigned?new Int16Array(e.buffer,e.byteOffset,e.byteLength/2):new Uint16Array(e.buffer,e.byteOffset,e.byteLength/2):t.isSigned?new Int8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}var C$={exports:{}};(function(t,e){var r=(()=>{var n=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(n=n||__filename),function(o){o=o||{};var o=typeof o<"u"?o:{},a,s;o.ready=new Promise(function(A,N){a=A,s=N});var c=Object.assign({},o),l=typeof window=="object",f=typeof importScripts=="function",u=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",d="";function h(A){return o.locateFile?o.locateFile(A,d):d+A}var g,p,v;if(u){var y=ll,m=ll;f?d=m.dirname(d)+"/":d=__dirname+"/",g=(A,N)=>(A=fe(A)?new URL(A):m.normalize(A),y.readFileSync(A,N?void 0:"utf8")),v=A=>{var N=g(A,!0);return N.buffer||(N=new Uint8Array(N)),N},p=(A,N,I)=>{A=fe(A)?new URL(A):m.normalize(A),y.readFile(A,function(M,V){M?I(M):N(V.buffer)})},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),process.on("uncaughtException",function(A){if(!(A instanceof de))throw A}),process.on("unhandledRejection",function(A){throw A}),o.inspect=function(){return"[Emscripten Module object]"}}else(l||f)&&(f?d=self.location.href:typeof document<"u"&&document.currentScript&&(d=document.currentScript.src),n&&(d=n),d.indexOf("blob:")!==0?d=d.substr(0,d.replace(/[?#].*/,"").lastIndexOf("/")+1):d="",g=A=>{var N=new XMLHttpRequest;return N.open("GET",A,!1),N.send(null),N.responseText},f&&(v=A=>{var N=new XMLHttpRequest;return N.open("GET",A,!1),N.responseType="arraybuffer",N.send(null),new Uint8Array(N.response)}),p=(A,N,I)=>{var M=new XMLHttpRequest;M.open("GET",A,!0),M.responseType="arraybuffer",M.onload=()=>{if(M.status==200||M.status==0&&M.response){N(M.response);return}I()},M.onerror=I,M.send(null)});var w=o.print||console.log.bind(console),x=o.printErr||console.warn.bind(console);Object.assign(o,c),c=null,o.arguments&&o.arguments,o.thisProgram&&o.thisProgram,o.quit&&o.quit;var C;o.wasmBinary&&(C=o.wasmBinary),o.noExitRuntime,typeof WebAssembly!="object"&&Ve("no native wasm support detected");var S,T=!1;function _(A,N){A||Ve(N)}var E=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function b(A,N,I){for(var M=N+I,V=N;A[V]&&!(V>=M);)++V;if(V-N>16&&A.buffer&&E)return E.decode(A.subarray(N,V));for(var H="";N>10,56320|ge&1023)}}return H}function D(A,N){return A?b(j,A,N):""}function O(A,N,I,M){if(!(M>0))return 0;for(var V=I,H=I+M-1,q=0;q=55296&&Y<=57343){var ue=A.charCodeAt(++q);Y=65536+((Y&1023)<<10)|ue&1023}if(Y<=127){if(I>=H)break;N[I++]=Y}else if(Y<=2047){if(I+1>=H)break;N[I++]=192|Y>>6,N[I++]=128|Y&63}else if(Y<=65535){if(I+2>=H)break;N[I++]=224|Y>>12,N[I++]=128|Y>>6&63,N[I++]=128|Y&63}else{if(I+3>=H)break;N[I++]=240|Y>>18,N[I++]=128|Y>>12&63,N[I++]=128|Y>>6&63,N[I++]=128|Y&63}}return N[I]=0,I-V}function L(A,N,I){return O(A,j,N,I)}function P(A){for(var N=0,I=0;I=55296&&M<=57343?(N+=4,++I):N+=3}return N}var k,G,j,F,U,W,J,te,le;function ve(A){k=A,o.HEAP8=G=new Int8Array(A),o.HEAP16=F=new Int16Array(A),o.HEAP32=W=new Int32Array(A),o.HEAPU8=j=new Uint8Array(A),o.HEAPU16=U=new Uint16Array(A),o.HEAPU32=J=new Uint32Array(A),o.HEAPF32=te=new Float32Array(A),o.HEAPF64=le=new Float64Array(A)}o.INITIAL_MEMORY;var pe,ye=[],Ie=[],Le=[];function be(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)X(o.preRun.shift());ht(ye)}function $(){ht(Ie)}function R(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)Z(o.postRun.shift());ht(Le)}function X(A){ye.unshift(A)}function K(A){Ie.unshift(A)}function Z(A){Le.unshift(A)}var ie=0,oe=null;function Te(A){ie++,o.monitorRunDependencies&&o.monitorRunDependencies(ie)}function Oe(A){if(ie--,o.monitorRunDependencies&&o.monitorRunDependencies(ie),ie==0&&oe){var N=oe;oe=null,N()}}function Ve(A){o.onAbort&&o.onAbort(A),A="Aborted("+A+")",x(A),T=!0,A+=". Build with -sASSERTIONS for more info.";var N=new WebAssembly.RuntimeError(A);throw s(N),N}var Ge="data:application/octet-stream;base64,";function ce(A){return A.startsWith(Ge)}function fe(A){return A.startsWith("file://")}var Se;Se="openjphjs.wasm",ce(Se)||(Se=h(Se));function he(A){try{if(A==Se&&C)return new Uint8Array(C);if(v)return v(A);throw"both async and sync fetching of the wasm failed"}catch(N){Ve(N)}}function xe(){if(!C&&(l||f)){if(typeof fetch=="function"&&!fe(Se))return fetch(Se,{credentials:"same-origin"}).then(function(A){if(!A.ok)throw"failed to load wasm binary file at '"+Se+"'";return A.arrayBuffer()}).catch(function(){return he(Se)});if(p)return new Promise(function(A,N){p(Se,function(I){A(new Uint8Array(I))},N)})}return Promise.resolve().then(function(){return he(Se)})}function qe(){var A={env:ae,wasi_snapshot_preview1:ae};function N(q,Y){var ue=q.exports;o.asm=ue,S=o.asm.memory,ve(S.buffer),pe=o.asm.__indirect_function_table,K(o.asm.__wasm_call_ctors),Oe()}Te();function I(q){N(q.instance)}function M(q){return xe().then(function(Y){return WebAssembly.instantiate(Y,A)}).then(function(Y){return Y}).then(q,function(Y){x("failed to asynchronously prepare wasm: "+Y),Ve(Y)})}function V(){return!C&&typeof WebAssembly.instantiateStreaming=="function"&&!ce(Se)&&!fe(Se)&&!u&&typeof fetch=="function"?fetch(Se,{credentials:"same-origin"}).then(function(q){var Y=WebAssembly.instantiateStreaming(q,A);return Y.then(I,function(ue){return x("wasm streaming compile failed: "+ue),x("falling back to ArrayBuffer instantiation"),M(I)})}):M(I)}if(o.instantiateWasm)try{var H=o.instantiateWasm(A,N);return H}catch(q){x("Module.instantiateWasm callback failed with error: "+q),s(q)}return V().catch(s),{}}function de(A){this.name="ExitStatus",this.message="Program terminated with exit("+A+")",this.status=A}function ht(A){for(;A.length>0;)A.shift()(o)}function vt(A,N,I,M){Ve("Assertion failed: "+D(A)+", at: "+[N?D(N):"unknown filename",I,M?D(M):"unknown function"])}var gt=[];function Me(A){A.add_ref()}function Ze(A){var N=new kt(A);return N.get_caught()||N.set_caught(!0),N.set_rethrown(!1),gt.push(N),Me(N),N.get_exception_ptr()}var it=0,rt=[];function ut(A){var N=rt[A];return N||(A>=rt.length&&(rt.length=A+1),rt[A]=N=pe.get(A)),N}function Dt(A){if(A.release_ref()&&!A.get_rethrown()){var N=A.get_destructor();N&&ut(N)(A.excPtr),Ue(A.excPtr)}}function wt(){_setThrew(0);var A=gt.pop();Dt(A),it=0}function kt(A){this.excPtr=A,this.ptr=A-24,this.set_type=function(N){J[this.ptr+4>>2]=N},this.get_type=function(){return J[this.ptr+4>>2]},this.set_destructor=function(N){J[this.ptr+8>>2]=N},this.get_destructor=function(){return J[this.ptr+8>>2]},this.set_refcount=function(N){W[this.ptr>>2]=N},this.set_caught=function(N){N=N?1:0,G[this.ptr+12>>0]=N},this.get_caught=function(){return G[this.ptr+12>>0]!=0},this.set_rethrown=function(N){N=N?1:0,G[this.ptr+13>>0]=N},this.get_rethrown=function(){return G[this.ptr+13>>0]!=0},this.init=function(N,I){this.set_adjusted_ptr(0),this.set_type(N),this.set_destructor(I),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var N=W[this.ptr>>2];W[this.ptr>>2]=N+1},this.release_ref=function(){var N=W[this.ptr>>2];return W[this.ptr>>2]=N-1,N===1},this.set_adjusted_ptr=function(N){J[this.ptr+16>>2]=N},this.get_adjusted_ptr=function(){return J[this.ptr+16>>2]},this.get_exception_ptr=function(){var N=Lt(this.get_type());if(N)return J[this.excPtr>>2];var I=this.get_adjusted_ptr();return I!==0?I:this.excPtr}}function qt(A){throw it||(it=A),A}function In(){var A=it;if(!A)return Qe(0),0;var N=new kt(A);N.set_adjusted_ptr(A);var I=N.get_type();if(!I)return Qe(0),A;for(var M=0;M>2])}var We={},dt={},Ut={},En=48,qr=57;function Gt(A){if(A===void 0)return"_unknown";A=A.replace(/[^a-zA-Z0-9_]/g,"$");var N=A.charCodeAt(0);return N>=En&&N<=qr?"_"+A:A}function Mn(A,N){return A=Gt(A),new Function("body","return function "+A+`() { "use strict"; return body.apply(this, arguments); }; -`)(k)}function Sr(N,k){var W=qt(k,function(q){this.name=k,this.message=q;var J=new Error(q).stack;J!==void 0&&(this.stack=this.toString()+` -`+J.replace(/^Error(:[^\n]*)?\n/,""))});return W.prototype=Object.create(N.prototype),W.prototype.constructor=W,W.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},W}var Rn=void 0;function yi(N){throw new Rn(N)}function mr(N,k,W){N.forEach(function($){dt[$]=k});function q($){var ee=W($);ee.length!==N.length&&yi("Mismatched type converter count");for(var he=0;he{Ke.hasOwnProperty($)?J[ee]=Ke[$]:(R.push($),pr.hasOwnProperty($)||(pr[$]=[]),pr[$].push(()=>{J[ee]=Ke[$],++A,A===R.length&&q(J)}))}),R.length===0&&q(J)}function yo(N){var k=Kt[N];delete Kt[N];var W=k.rawConstructor,q=k.rawDestructor,J=k.fields,R=J.map(A=>A.getterReturnType).concat(J.map(A=>A.setterArgumentType));mr([N],R,A=>{var $={};return J.forEach((ee,he)=>{var ve=ee.fieldName,Ce=A[he],we=ee.getter,Me=ee.getterContext,Fe=A[he+J.length],Be=ee.setter,Qe=ee.setterContext;$[ve]={read:et=>Ce.fromWireType(we(Me,et)),write:(et,yt)=>{var It=[];Be(Qe,et,Fe.toWireType(It,yt)),qn(It)}}}),[{name:k.name,fromWireType:function(ee){var he={};for(var ve in $)he[ve]=$[ve].read(ee);return q(ee),he},toWireType:function(ee,he){for(var ve in $)if(!(ve in he))throw new TypeError('Missing field: "'+ve+'"');var Ce=W();for(ve in $)$[ve].write(Ce,he[ve]);return ee!==null&&ee.push(q,Ce),Ce},argPackAdvance:8,readValueFromPointer:Cr,destructorFunction:q}]})}function hn(N,k,W,q,J){}function _n(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 fs(){for(var N=new Array(256),k=0;k<256;++k)N[k]=String.fromCharCode(k);Ai=N}var Ai=void 0;function Ur(N){for(var k="",W=N;j[W];)k+=Ai[j[W++]];return k}var Tr=void 0;function ht(N){throw new Tr(N)}function ri(N,k,W={}){if(!("argPackAdvance"in k))throw new TypeError("registerType registeredInstance requires argPackAdvance");var q=k.name;if(N||ht('type "'+q+'" must have a positive integer typeid pointer'),Ke.hasOwnProperty(N)){if(W.ignoreDuplicateRegistrations)return;ht("Cannot register type '"+q+"' twice")}if(Ke[N]=k,delete dt[N],pr.hasOwnProperty(N)){var J=pr[N];delete pr[N],J.forEach(R=>R())}}function oo(N,k,W,q,J){var R=_n(W);k=Ur(k),ri(N,{name:k,fromWireType:function(A){return!!A},toWireType:function(A,$){return $?q:J},argPackAdvance:8,readValueFromPointer:function(A){var $;if(W===1)$=B;else if(W===2)$=V;else if(W===4)$=G;else throw new TypeError("Unknown boolean type size: "+k);return this.fromWireType($[A>>R])},destructorFunction:null})}function ta(N){if(!(this instanceof Xr)||!(N instanceof Xr))return!1;for(var k=this.$$.ptrType.registeredClass,W=this.$$.ptr,q=N.$$.ptrType.registeredClass,J=N.$$.ptr;k.baseClass;)W=k.upcast(W),k=k.baseClass;for(;q.baseClass;)J=q.upcast(J),q=q.baseClass;return k===q&&W===J}function Br(N){return{count:N.count,deleteScheduled:N.deleteScheduled,preservePointerOnDelete:N.preservePointerOnDelete,ptr:N.ptr,ptrType:N.ptrType,smartPtr:N.smartPtr,smartPtrType:N.smartPtrType}}function na(N){function k(W){return W.$$.ptrType.registeredClass.name}ht(k(N)+" instance already deleted")}var wo=!1;function ao(N){}function ya(N){N.smartPtr?N.smartPtrType.rawDestructor(N.smartPtr):N.ptrType.registeredClass.rawDestructor(N.ptr)}function ji(N){N.count.value-=1;var k=N.count.value===0;k&&ya(N)}function xo(N,k,W){if(k===W)return N;if(W.baseClass===void 0)return null;var q=xo(N,k,W.baseClass);return q===null?null:W.downcast(q)}var Fa={};function Hi(){return Object.keys(Li).length}function wa(){var N=[];for(var k in Li)Li.hasOwnProperty(k)&&N.push(Li[k]);return N}var jt=[];function ds(){for(;jt.length;){var N=jt.pop();N.$$.deleteScheduled=!1,N.delete()}}var No=void 0;function Bc(N){No=N,jt.length&&No&&No(ds)}function Ei(){o.getInheritedInstanceCount=Hi,o.getLiveInheritedInstances=wa,o.flushPendingDeletes=ds,o.setDelayFunction=Bc}var Li={};function so(N,k){for(k===void 0&&ht("ptr should not be undefined");N.baseClass;)k=N.upcast(k),N=N.baseClass;return k}function hs(N,k){return k=so(N,k),Li[k]}function vn(N,k){(!k.ptrType||!k.ptr)&&yi("makeClassHandle requires ptr and ptrType");var W=!!k.smartPtrType,q=!!k.smartPtr;return W!==q&&yi("Both smartPtrType and smartPtr must be specified"),k.count={value:1},Or(Object.create(N,{$$:{value:k}}))}function Co(N){var k=this.getPointee(N);if(!k)return this.destructor(N),null;var W=hs(this.registeredClass,k);if(W!==void 0){if(W.$$.count.value===0)return W.$$.ptr=k,W.$$.smartPtr=N,W.clone();var q=W.clone();return this.destructor(N),q}function J(){return this.isSmartPointer?vn(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:k,smartPtrType:this,smartPtr:N}):vn(this.registeredClass.instancePrototype,{ptrType:this,ptr:N})}var R=this.registeredClass.getActualType(k),A=Fa[R];if(!A)return J.call(this);var $;this.isConst?$=A.constPointerType:$=A.pointerType;var ee=xo(k,this.registeredClass,$.registeredClass);return ee===null?J.call(this):this.isSmartPointer?vn($.registeredClass.instancePrototype,{ptrType:$,ptr:ee,smartPtrType:this,smartPtr:N}):vn($.registeredClass.instancePrototype,{ptrType:$,ptr:ee})}function Or(N){return typeof FinalizationRegistry>"u"?(Or=k=>k,N):(wo=new FinalizationRegistry(k=>{ji(k.$$)}),Or=k=>{var W=k.$$,q=!!W.smartPtr;if(q){var J={$$:W};wo.register(k,J,k)}return k},ao=k=>wo.unregister(k),Or(N))}function Ua(){if(this.$$.ptr||na(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var N=Or(Object.create(Object.getPrototypeOf(this),{$$:{value:Br(this.$$)}}));return N.$$.count.value+=1,N.$$.deleteScheduled=!1,N}function Ki(){this.$$.ptr||na(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ht("Object already scheduled for deletion"),ao(this),ji(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Fs(){return!this.$$.ptr}function So(){return this.$$.ptr||na(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ht("Object already scheduled for deletion"),jt.push(this),jt.length===1&&No&&No(ds),this.$$.deleteScheduled=!0,this}function Us(){Xr.prototype.isAliasOf=ta,Xr.prototype.clone=Ua,Xr.prototype.delete=Ki,Xr.prototype.isDeleted=Fs,Xr.prototype.deleteLater=So}function Xr(){}function gs(N,k,W){if(N[k].overloadTable===void 0){var q=N[k];N[k]=function(){return N[k].overloadTable.hasOwnProperty(arguments.length)||ht("Function '"+W+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+N[k].overloadTable+")!"),N[k].overloadTable[arguments.length].apply(this,arguments)},N[k].overloadTable=[],N[k].overloadTable[q.argCount]=q}}function co(N,k,W){o.hasOwnProperty(N)?((W===void 0||o[N].overloadTable!==void 0&&o[N].overloadTable[W]!==void 0)&&ht("Cannot register public name '"+N+"' twice"),gs(o,N,N),o.hasOwnProperty(W)&&ht("Cannot register multiple overloads of a function with the same number of arguments ("+W+")!"),o[N].overloadTable[W]=k):(o[N]=k,W!==void 0&&(o[N].numArguments=W))}function ra(N,k,W,q,J,R,A,$){this.name=N,this.constructor=k,this.instancePrototype=W,this.rawDestructor=q,this.baseClass=J,this.getActualType=R,this.upcast=A,this.downcast=$,this.pureVirtualFunctions=[]}function ps(N,k,W){for(;k!==W;)k.upcast||ht("Expected null or instance of "+W.name+", got an instance of "+k.name),N=k.upcast(N),k=k.baseClass;return N}function Ba(N,k){if(k===null)return this.isReference&&ht("null is not a valid "+this.name),0;k.$$||ht('Cannot pass "'+js(k)+'" as a '+this.name),k.$$.ptr||ht("Cannot pass deleted object as a pointer of type "+this.name);var W=k.$$.ptrType.registeredClass,q=ps(k.$$.ptr,W,this.registeredClass);return q}function Ni(N,k){var W;if(k===null)return this.isReference&&ht("null is not a valid "+this.name),this.isSmartPointer?(W=this.rawConstructor(),N!==null&&N.push(this.rawDestructor,W),W):0;k.$$||ht('Cannot pass "'+js(k)+'" as a '+this.name),k.$$.ptr||ht("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&k.$$.ptrType.isConst&&ht("Cannot convert argument of type "+(k.$$.smartPtrType?k.$$.smartPtrType.name:k.$$.ptrType.name)+" to parameter type "+this.name);var q=k.$$.ptrType.registeredClass;if(W=ps(k.$$.ptr,q,this.registeredClass),this.isSmartPointer)switch(k.$$.smartPtr===void 0&&ht("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:k.$$.smartPtrType===this?W=k.$$.smartPtr:ht("Cannot convert argument of type "+(k.$$.smartPtrType?k.$$.smartPtrType.name:k.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:W=k.$$.smartPtr;break;case 2:if(k.$$.smartPtrType===this)W=k.$$.smartPtr;else{var J=k.clone();W=this.rawShare(W,lo.toHandle(function(){J.delete()})),N!==null&&N.push(this.rawDestructor,W)}break;default:ht("Unsupporting sharing policy")}return W}function Xi(N,k){if(k===null)return this.isReference&&ht("null is not a valid "+this.name),0;k.$$||ht('Cannot pass "'+js(k)+'" as a '+this.name),k.$$.ptr||ht("Cannot pass deleted object as a pointer of type "+this.name),k.$$.ptrType.isConst&&ht("Cannot convert argument of type "+k.$$.ptrType.name+" to parameter type "+this.name);var W=k.$$.ptrType.registeredClass,q=ps(k.$$.ptr,W,this.registeredClass);return q}function Gc(N){return this.rawGetPointee&&(N=this.rawGetPointee(N)),N}function ii(N){this.rawDestructor&&this.rawDestructor(N)}function bi(N){N!==null&&N.delete()}function Bs(){oi.prototype.getPointee=Gc,oi.prototype.destructor=ii,oi.prototype.argPackAdvance=8,oi.prototype.readValueFromPointer=Cr,oi.prototype.deleteObject=bi,oi.prototype.fromWireType=Co}function oi(N,k,W,q,J,R,A,$,ee,he,ve){this.name=N,this.registeredClass=k,this.isReference=W,this.isConst=q,this.isSmartPointer=J,this.pointeeType=R,this.sharingPolicy=A,this.rawGetPointee=$,this.rawConstructor=ee,this.rawShare=he,this.rawDestructor=ve,!J&&k.baseClass===void 0?q?(this.toWireType=Ba,this.destructorFunction=null):(this.toWireType=Xi,this.destructorFunction=null):this.toWireType=Ni}function Di(N,k,W){o.hasOwnProperty(N)||yi("Replacing nonexistant public symbol"),o[N].overloadTable!==void 0&&W!==void 0?o[N].overloadTable[W]=k:(o[N]=k,o[N].argCount=W)}function xa(N,k,W){var q=o["dynCall_"+N];return W&&W.length?q.apply(null,[k].concat(W)):q.call(null,k)}function Gs(N,k,W){if(N.includes("j"))return xa(N,k,W);var q=tt(k).apply(null,W);return q}function Ca(N,k){var W=[];return function(){return W.length=0,Object.assign(W,arguments),Gs(N,k,W)}}function wi(N,k){N=Ur(N);function W(){return N.includes("j")?Ca(N,k):tt(k)}var q=W();return typeof q!="function"&&ht("unknown function pointer with signature "+N+": "+k),q}var Pr=void 0;function Ga(N){var k=We(N),W=Ur(k);return Se(k),W}function ai(N,k){var W=[],q={};function J(R){if(!q[R]&&!Ke[R]){if(dt[R]){dt[R].forEach(J);return}W.push(R),q[R]=!0}}throw k.forEach(J),new Pr(N+": "+W.map(Ga).join([", "]))}function Ws(N,k,W,q,J,R,A,$,ee,he,ve,Ce,we){ve=Ur(ve),R=wi(J,R),$&&($=wi(A,$)),he&&(he=wi(ee,he)),we=wi(Ce,we);var Me=Fr(ve);co(Me,function(){ai("Cannot construct "+ve+" due to unbound types",[q])}),mr([N,k,W],q?[q]:[],function(Fe){Fe=Fe[0];var Be,Qe;q?(Be=Fe.registeredClass,Qe=Be.instancePrototype):Qe=Xr.prototype;var et=qt(Me,function(){if(Object.getPrototypeOf(this)!==yt)throw new Tr("Use 'new' to construct "+ve);if(It.constructor_body===void 0)throw new Tr(ve+" has no accessible constructor");var In=It.constructor_body[arguments.length];if(In===void 0)throw new Tr("Tried to invoke ctor of "+ve+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(It.constructor_body).toString()+") parameters instead!");return In.apply(this,arguments)}),yt=Object.create(Qe,{constructor:{value:et}});et.prototype=yt;var It=new ra(ve,et,yt,we,Be,R,$,he),Tt=new oi(ve,It,!0,!1,!1),Mt=new oi(ve+"*",It,!1,!1,!1),Ot=new oi(ve+" const*",It,!1,!0,!1);return Fa[N]={pointerType:Mt,constPointerType:Ot},Di(Me,et),[Tt,Mt,Ot]})}function $s(N,k){for(var W=[],q=0;q>2]);return W}function Ii(N,k){if(!(N instanceof Function))throw new TypeError("new_ called with constructor type "+typeof N+" which is not a function");var W=qt(N.name||"unknownFunctionName",function(){});W.prototype=N.prototype;var q=new W,J=N.apply(q,k);return J instanceof Object?J:q}function qr(N,k,W,q,J){var R=k.length;R<2&&ht("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var A=k[1]!==null&&W!==null,$=!1,ee=1;ee{dt.hasOwnProperty(Y)?V[ue]=dt[Y]:(H.push(Y),We.hasOwnProperty(Y)||(We[Y]=[]),We[Y].push(()=>{V[ue]=dt[Y],++q,q===H.length&&M(V)}))}),H.length===0&&M(V)}function $o(A){var N=On[A];delete On[A];var I=N.rawConstructor,M=N.rawDestructor,V=N.fields,H=V.map(q=>q.getterReturnType).concat(V.map(q=>q.setterArgumentType));Xi([A],H,q=>{var Y={};return V.forEach((ue,ge)=>{var me=ue.fieldName,_e=q[ge],De=ue.getter,Fe=ue.getterContext,je=q[ge+V.length],Ke=ue.setter,tt=ue.setterContext;Y[me]={read:ct=>_e.fromWireType(De(Fe,ct)),write:(ct,yt)=>{var Zt=[];Ke(tt,ct,je.toWireType(Zt,yt)),qi(Zt)}}}),[{name:N.name,fromWireType:function(ue){var ge={};for(var me in Y)ge[me]=Y[me].read(ue);return M(ue),ge},toWireType:function(ue,ge){for(var me in Y)if(!(me in ge))throw new TypeError('Missing field: "'+me+'"');var _e=I();for(me in Y)Y[me].write(_e,ge[me]);return ue!==null&&ue.push(M,_e),_e},argPackAdvance:8,readValueFromPointer:kr,destructorFunction:M}]})}function Jn(A,N,I,M,V){}function Co(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 gi(){for(var A=new Array(256),N=0;N<256;++N)A[N]=String.fromCharCode(N);Oa=A}var Oa=void 0;function Kn(A){for(var N="",I=A;j[I];)N+=Oa[j[I++]];return N}var _t=void 0;function ln(A){throw new _t(A)}function mr(A,N,I={}){if(!("argPackAdvance"in N))throw new TypeError("registerType registeredInstance requires argPackAdvance");var M=N.name;if(A||ln('type "'+M+'" must have a positive integer typeid pointer'),dt.hasOwnProperty(A)){if(I.ignoreDuplicateRegistrations)return;ln("Cannot register type '"+M+"' twice")}if(dt[A]=N,delete Ut[A],We.hasOwnProperty(A)){var V=We[A];delete We[A],V.forEach(H=>H())}}function la(A,N,I,M,V){var H=Co(I);N=Kn(N),mr(A,{name:N,fromWireType:function(q){return!!q},toWireType:function(q,Y){return Y?M:V},argPackAdvance:8,readValueFromPointer:function(q){var Y;if(I===1)Y=G;else if(I===2)Y=F;else if(I===4)Y=W;else throw new TypeError("Unknown boolean type size: "+N);return this.fromWireType(Y[q>>H])},destructorFunction:null})}function Vr(A){if(!(this instanceof Zi)||!(A instanceof Zi))return!1;for(var N=this.$$.ptrType.registeredClass,I=this.$$.ptr,M=A.$$.ptrType.registeredClass,V=A.$$.ptr;N.baseClass;)I=N.upcast(I),N=N.baseClass;for(;M.baseClass;)V=M.upcast(V),M=M.baseClass;return N===M&&I===V}function So(A){return{count:A.count,deleteScheduled:A.deleteScheduled,preservePointerOnDelete:A.preservePointerOnDelete,ptr:A.ptr,ptrType:A.ptrType,smartPtr:A.smartPtr,smartPtrType:A.smartPtrType}}function Ni(A){function N(I){return I.$$.ptrType.registeredClass.name}ln(N(A)+" instance already deleted")}var Xr=!1;function Os(A){}function To(A){A.smartPtr?A.smartPtrType.rawDestructor(A.smartPtr):A.ptrType.registeredClass.rawDestructor(A.ptr)}function so(A){A.count.value-=1;var N=A.count.value===0;N&&To(A)}function Ma(A,N,I){if(N===I)return A;if(I.baseClass===void 0)return null;var M=Ma(A,N,I.baseClass);return M===null?null:I.downcast(M)}var _i={};function Pa(){return Object.keys(ci).length}function Ht(){var A=[];for(var N in ci)ci.hasOwnProperty(N)&&A.push(ci[N]);return A}var Yi=[];function Ms(){for(;Yi.length;){var A=Yi.pop();A.$$.deleteScheduled=!1,A.delete()}}var ua=void 0;function co(A){ua=A,Yi.length&&ua&&ua(Ms)}function _o(){o.getInheritedInstanceCount=Pa,o.getLiveInheritedInstances=Ht,o.flushPendingDeletes=Ms,o.setDelayFunction=co}var ci={};function ki(A,N){for(N===void 0&&ln("ptr should not be undefined");A.baseClass;)N=A.upcast(N),A=A.baseClass;return N}function vn(A,N){return N=ki(A,N),ci[N]}function Ei(A,N){(!N.ptrType||!N.ptr)&&Ti("makeClassHandle requires ptr and ptrType");var I=!!N.smartPtrType,M=!!N.smartPtr;return I!==M&&Ti("Both smartPtrType and smartPtr must be specified"),N.count={value:1},Ji(Object.create(A,{$$:{value:N}}))}function jo(A){var N=this.getPointee(A);if(!N)return this.destructor(A),null;var I=vn(this.registeredClass,N);if(I!==void 0){if(I.$$.count.value===0)return I.$$.ptr=N,I.$$.smartPtr=A,I.clone();var M=I.clone();return this.destructor(A),M}function V(){return this.isSmartPointer?Ei(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:N,smartPtrType:this,smartPtr:A}):Ei(this.registeredClass.instancePrototype,{ptrType:this,ptr:A})}var H=this.registeredClass.getActualType(N),q=_i[H];if(!q)return V.call(this);var Y;this.isConst?Y=q.constPointerType:Y=q.pointerType;var ue=Ma(N,this.registeredClass,Y.registeredClass);return ue===null?V.call(this):this.isSmartPointer?Ei(Y.registeredClass.instancePrototype,{ptrType:Y,ptr:ue,smartPtrType:this,smartPtr:A}):Ei(Y.registeredClass.instancePrototype,{ptrType:Y,ptr:ue})}function Ji(A){return typeof FinalizationRegistry>"u"?(Ji=N=>N,A):(Xr=new FinalizationRegistry(N=>{so(N.$$)}),Ji=N=>{var I=N.$$,M=!!I.smartPtr;if(M){var V={$$:I};Xr.register(N,V,N)}return N},Os=N=>Xr.unregister(N),Ji(A))}function Vi(){if(this.$$.ptr||Ni(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var A=Ji(Object.create(Object.getPrototypeOf(this),{$$:{value:So(this.$$)}}));return A.$$.count.value+=1,A.$$.deleteScheduled=!1,A}function Ps(){this.$$.ptr||Ni(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ln("Object already scheduled for deletion"),Os(this),so(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Ho(){return!this.$$.ptr}function Rs(){return this.$$.ptr||Ni(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ln("Object already scheduled for deletion"),Yi.push(this),Yi.length===1&&ua&&ua(Ms),this.$$.deleteScheduled=!0,this}function lo(){Zi.prototype.isAliasOf=Vr,Zi.prototype.clone=Vi,Zi.prototype.delete=Ps,Zi.prototype.isDeleted=Ho,Zi.prototype.deleteLater=Rs}function Zi(){}function Qi(A,N,I){if(A[N].overloadTable===void 0){var M=A[N];A[N]=function(){return A[N].overloadTable.hasOwnProperty(arguments.length)||ln("Function '"+I+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+A[N].overloadTable+")!"),A[N].overloadTable[arguments.length].apply(this,arguments)},A[N].overloadTable=[],A[N].overloadTable[M.argCount]=M}}function Fr(A,N,I){o.hasOwnProperty(A)?((I===void 0||o[A].overloadTable!==void 0&&o[A].overloadTable[I]!==void 0)&&ln("Cannot register public name '"+A+"' twice"),Qi(o,A,A),o.hasOwnProperty(I)&&ln("Cannot register multiple overloads of a function with the same number of arguments ("+I+")!"),o[A].overloadTable[I]=N):(o[A]=N,I!==void 0&&(o[A].numArguments=I))}function bc(A,N,I,M,V,H,q,Y){this.name=A,this.constructor=N,this.instancePrototype=I,this.rawDestructor=M,this.baseClass=V,this.getActualType=H,this.upcast=q,this.downcast=Y,this.pureVirtualFunctions=[]}function Ko(A,N,I){for(;N!==I;)N.upcast||ln("Expected null or instance of "+I.name+", got an instance of "+N.name),A=N.upcast(A),N=N.baseClass;return A}function qo(A,N){if(N===null)return this.isReference&&ln("null is not a valid "+this.name),0;N.$$||ln('Cannot pass "'+as(N)+'" as a '+this.name),N.$$.ptr||ln("Cannot pass deleted object as a pointer of type "+this.name);var I=N.$$.ptrType.registeredClass,M=Ko(N.$$.ptr,I,this.registeredClass);return M}function Ir(A,N){var I;if(N===null)return this.isReference&&ln("null is not a valid "+this.name),this.isSmartPointer?(I=this.rawConstructor(),A!==null&&A.push(this.rawDestructor,I),I):0;N.$$||ln('Cannot pass "'+as(N)+'" as a '+this.name),N.$$.ptr||ln("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&N.$$.ptrType.isConst&&ln("Cannot convert argument of type "+(N.$$.smartPtrType?N.$$.smartPtrType.name:N.$$.ptrType.name)+" to parameter type "+this.name);var M=N.$$.ptrType.registeredClass;if(I=Ko(N.$$.ptr,M,this.registeredClass),this.isSmartPointer)switch(N.$$.smartPtr===void 0&&ln("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:N.$$.smartPtrType===this?I=N.$$.smartPtr:ln("Cannot convert argument of type "+(N.$$.smartPtrType?N.$$.smartPtrType.name:N.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:I=N.$$.smartPtr;break;case 2:if(N.$$.smartPtrType===this)I=N.$$.smartPtr;else{var V=N.clone();I=this.rawShare(I,ka.toHandle(function(){V.delete()})),A!==null&&A.push(this.rawDestructor,I)}break;default:ln("Unsupporting sharing policy")}return I}function Dc(A,N){if(N===null)return this.isReference&&ln("null is not a valid "+this.name),0;N.$$||ln('Cannot pass "'+as(N)+'" as a '+this.name),N.$$.ptr||ln("Cannot pass deleted object as a pointer of type "+this.name),N.$$.ptrType.isConst&&ln("Cannot convert argument of type "+N.$$.ptrType.name+" to parameter type "+this.name);var I=N.$$.ptrType.registeredClass,M=Ko(N.$$.ptr,I,this.registeredClass);return M}function bi(A){return this.rawGetPointee&&(A=this.rawGetPointee(A)),A}function Ur(A){this.rawDestructor&&this.rawDestructor(A)}function rs(A){A!==null&&A.delete()}function Eo(){pi.prototype.getPointee=bi,pi.prototype.destructor=Ur,pi.prototype.argPackAdvance=8,pi.prototype.readValueFromPointer=kr,pi.prototype.deleteObject=rs,pi.prototype.fromWireType=jo}function pi(A,N,I,M,V,H,q,Y,ue,ge,me){this.name=A,this.registeredClass=N,this.isReference=I,this.isConst=M,this.isSmartPointer=V,this.pointeeType=H,this.sharingPolicy=q,this.rawGetPointee=Y,this.rawConstructor=ue,this.rawShare=ge,this.rawDestructor=me,!V&&N.baseClass===void 0?M?(this.toWireType=qo,this.destructorFunction=null):(this.toWireType=Dc,this.destructorFunction=null):this.toWireType=Ir}function fa(A,N,I){o.hasOwnProperty(A)||Ti("Replacing nonexistant public symbol"),o[A].overloadTable!==void 0&&I!==void 0?o[A].overloadTable[I]=N:(o[A]=N,o[A].argCount=I)}function Ls(A,N,I){var M=o["dynCall_"+A];return I&&I.length?M.apply(null,[N].concat(I)):M.call(null,N)}function is(A,N,I){if(A.includes("j"))return Ls(A,N,I);var M=ut(N).apply(null,I);return M}function Ra(A,N){var I=[];return function(){return I.length=0,Object.assign(I,arguments),is(A,N,I)}}function qn(A,N){A=Kn(A);function I(){return A.includes("j")?Ra(A,N):ut(N)}var M=I();return typeof M!="function"&&ln("unknown function pointer with signature "+A+": "+N),M}var La=void 0;function li(A){var N=Ye(A),I=Kn(N);return Ce(N),I}function Br(A,N){var I=[],M={};function V(H){if(!M[H]&&!dt[H]){if(Ut[H]){Ut[H].forEach(V);return}I.push(H),M[H]=!0}}throw N.forEach(V),new La(A+": "+I.map(li).join([", "]))}function Ic(A,N,I,M,V,H,q,Y,ue,ge,me,_e,De){me=Kn(me),H=qn(V,H),Y&&(Y=qn(q,Y)),ge&&(ge=qn(ue,ge)),De=qn(_e,De);var Fe=Gt(me);Fr(Fe,function(){Br("Cannot construct "+me+" due to unbound types",[M])}),Xi([A,N,I],M?[M]:[],function(je){je=je[0];var Ke,tt;M?(Ke=je.registeredClass,tt=Ke.instancePrototype):tt=Zi.prototype;var ct=Mn(Fe,function(){if(Object.getPrototypeOf(this)!==yt)throw new _t("Use 'new' to construct "+me);if(Zt.constructor_body===void 0)throw new _t(me+" has no accessible constructor");var Rn=Zt.constructor_body[arguments.length];if(Rn===void 0)throw new _t("Tried to invoke ctor of "+me+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(Zt.constructor_body).toString()+") parameters instead!");return Rn.apply(this,arguments)}),yt=Object.create(tt,{constructor:{value:ct}});ct.prototype=yt;var Zt=new bc(me,ct,yt,De,Ke,H,Y,ge),Vt=new pi(me,Zt,!0,!1,!1),Rt=new pi(me+"*",Zt,!1,!1,!1),Nt=new pi(me+" const*",Zt,!1,!0,!1);return _i[A]={pointerType:Rt,constPointerType:Nt},fa(Fe,ct),[Vt,Rt,Nt]})}function mi(A,N){for(var I=[],M=0;M>2]);return I}function os(A,N){if(!(A instanceof Function))throw new TypeError("new_ called with constructor type "+typeof A+" which is not a function");var I=Mn(A.name||"unknownFunctionName",function(){});I.prototype=A.prototype;var M=new I,V=A.apply(M,N);return V instanceof Object?V:M}function Pn(A,N,I,M,V){var H=N.length;H<2&&ln("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var q=N[1]!==null&&I!==null,Y=!1,ue=1;ue0?", ":"")+Ce),we+=(he?"var rv = ":"")+"invoker(fn"+(Ce.length>0?", ":"")+Ce+`); -`,$)we+=`runDestructors(destructors); -`;else for(var ee=A?1:2;ee0?", ":"")+_e),De+=(ge?"var rv = ":"")+"invoker(fn"+(_e.length>0?", ":"")+_e+`); +`,Y)De+=`runDestructors(destructors); +`;else for(var ue=q?1:2;ue0);var A=$s(k,W);J=wi(q,J),mr([],[N],function($){$=$[0];var ee="constructor "+$.name;if($.registeredClass.constructor_body===void 0&&($.registeredClass.constructor_body=[]),$.registeredClass.constructor_body[k-1]!==void 0)throw new Tr("Cannot register multiple constructors with identical number of parameters ("+(k-1)+") for class '"+$.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return $.registeredClass.constructor_body[k-1]=()=>{ai("Cannot construct "+$.name+" due to unbound types",A)},mr([],A,function(he){return he.splice(1,0,null),$.registeredClass.constructor_body[k-1]=qr(ee,he,null,J,R),[]}),[]})}function zs(N,k,W,q,J,R,A,$){var ee=$s(W,q);k=Ur(k),R=wi(J,R),mr([],[N],function(he){he=he[0];var ve=he.name+"."+k;k.startsWith("@@")&&(k=Symbol[k.substring(2)]),$&&he.registeredClass.pureVirtualFunctions.push(k);function Ce(){ai("Cannot call "+ve+" due to unbound types",ee)}var we=he.registeredClass.instancePrototype,Me=we[k];return Me===void 0||Me.overloadTable===void 0&&Me.className!==he.name&&Me.argCount===W-2?(Ce.argCount=W-2,Ce.className=he.name,we[k]=Ce):(gs(we,k,ve),we[k].overloadTable[W-2]=Ce),mr([],ee,function(Fe){var Be=qr(ve,Fe,he,R,A);return we[k].overloadTable===void 0?(Be.argCount=W-2,we[k]=Be):we[k].overloadTable[W-2]=Be,[]}),[]})}var ia=[],qi=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function To(N){N>4&&--qi[N].refcount===0&&(qi[N]=void 0,ia.push(N))}function Wc(){for(var N=0,k=5;k(N||ht("Cannot use deleted val. handle = "+N),qi[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 k=ia.length?ia.pop():qi.length;return qi[k]={refcount:1,value:N},k}}}};function zc(N,k){k=Ur(k),ri(N,{name:k,fromWireType:function(W){var q=lo.toValue(W);return To(W),q},toWireType:function(W,q){return lo.toHandle(q)},argPackAdvance:8,readValueFromPointer:Cr,destructorFunction:null})}function js(N){if(N===null)return"null";var k=typeof N;return k==="object"||k==="array"||k==="function"?N.toString():""+N}function jc(N,k){switch(k){case 2:return function(W){return this.fromWireType(ne[W>>2])};case 3:return function(W){return this.fromWireType(ue[W>>3])};default:throw new TypeError("Unknown float type: "+N)}}function $l(N,k,W){var q=_n(W);k=Ur(k),ri(N,{name:k,fromWireType:function(J){return J},toWireType:function(J,R){return R},argPackAdvance:8,readValueFromPointer:jc(k,q),destructorFunction:null})}function Hc(N,k,W,q,J,R){var A=$s(k,W);N=Ur(N),J=wi(q,J),co(N,function(){ai("Cannot call "+N+" due to unbound types",A)},k-1),mr([],A,function($){var ee=[$[0],null].concat($.slice(1));return Di(N,qr(N,ee,null,J,R),k-1),[]})}function zl(N,k,W){switch(k){case 0:return W?function(J){return B[J]}:function(J){return j[J]};case 1:return W?function(J){return V[J>>1]}:function(J){return F[J>>1]};case 2:return W?function(J){return G[J>>2]}:function(J){return X[J>>2]};default:throw new TypeError("Unknown integer type: "+N)}}function jl(N,k,W,q,J){k=Ur(k);var R=_n(W),A=Ce=>Ce;if(q===0){var $=32-8*W;A=Ce=>Ce<<$>>>$}var ee=k.includes("unsigned"),he=(Ce,we)=>{},ve;ee?ve=function(Ce,we){return he(we,this.name),we>>>0}:ve=function(Ce,we){return he(we,this.name),we},ri(N,{name:k,fromWireType:A,toWireType:ve,argPackAdvance:8,readValueFromPointer:zl(k,R,q!==0),destructorFunction:null})}function Hl(N,k,W){var q=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],J=q[k];function R(A){A=A>>2;var $=X,ee=$[A],he=$[A+1];return new J(L,he,ee)}W=Ur(W),ri(N,{name:W,fromWireType:R,argPackAdvance:8,readValueFromPointer:R},{ignoreDuplicateRegistrations:!0})}function Hs(N,k){k=Ur(k);var W=k==="std::string";ri(N,{name:k,fromWireType:function(q){var J=X[q>>2],R=q+4,A;if(W)for(var $=R,ee=0;ee<=J;++ee){var he=R+ee;if(ee==J||j[he]==0){var ve=he-$,Ce=D($,ve);A===void 0?A=Ce:(A+="\0",A+=Ce),$=he+1}}else{for(var we=new Array(J),ee=0;ee>2]=R,W&&A)P(J,ee,R+1);else if(A)for(var he=0;he255&&(Se(ee),ht("String has UTF-16 code units that do not fit in 8 bits")),j[ee+he]=ve}else for(var he=0;he>1,J=q+k/2;!(q>=J)&&F[q];)++q;if(W=q<<1,W-N>32&&Kc)return Kc.decode(j.subarray(N,W));for(var R="",A=0;!(A>=k/2);++A){var $=V[N+A*2>>1];if($==0)break;R+=String.fromCharCode($)}return R}function Kl(N,k,W){if(W===void 0&&(W=2147483647),W<2)return 0;W-=2;for(var q=k,J=W>1]=A,k+=2}return V[k>>1]=0,k-q}function Ks(N){return N.length*2}function Xs(N,k){for(var W=0,q="";!(W>=k/4);){var J=G[N+W*4>>2];if(J==0)break;if(++W,J>=65536){var R=J-65536;q+=String.fromCharCode(55296|R>>10,56320|R&1023)}else q+=String.fromCharCode(J)}return q}function qc(N,k,W){if(W===void 0&&(W=2147483647),W<4)return 0;for(var q=k,J=q+W-4,R=0;R=55296&&A<=57343){var $=N.charCodeAt(++R);A=65536+((A&1023)<<10)|$&1023}if(G[k>>2]=A,k+=4,k+4>J)break}return G[k>>2]=0,k-q}function qs(N){for(var k=0,W=0;W=55296&&q<=57343&&++W,k+=4}return k}function Ys(N,k,W){W=Ur(W);var q,J,R,A,$;k===2?(q=Xc,J=Kl,A=Ks,R=()=>F,$=1):k===4&&(q=Xs,J=qc,A=qs,R=()=>X,$=2),ri(N,{name:W,fromWireType:function(ee){for(var he=X[ee>>2],ve=R(),Ce,we=ee+4,Me=0;Me<=he;++Me){var Fe=ee+4+Me*k;if(Me==he||ve[Fe>>$]==0){var Be=Fe-we,Qe=q(we,Be);Ce===void 0?Ce=Qe:(Ce+="\0",Ce+=Qe),we=Fe+k}}return Se(ee),Ce},toWireType:function(ee,he){typeof he!="string"&&ht("Cannot pass non-string to C++ string type "+W);var ve=A(he),Ce=se(4+ve+k);return X[Ce>>2]=ve>>$,J(he,Ce+4,ve+k),ee!==null&&ee.push(Se,Ce),Ce},argPackAdvance:8,readValueFromPointer:Cr,destructorFunction:function(ee){Se(ee)}})}function Js(N,k,W,q,J,R){Kt[N]={name:Ur(k),rawConstructor:wi(W,q),rawDestructor:wi(J,R),fields:[]}}function ms(N,k,W,q,J,R,A,$,ee,he){Kt[N].fields.push({fieldName:Ur(k),getterReturnType:W,getter:wi(q,J),getterContext:R,setterArgumentType:A,setter:wi($,ee),setterContext:he})}function Yc(N,k){k=Ur(k),ri(N,{isVoid:!0,name:k,argPackAdvance:0,fromWireType:function(){},toWireType:function(W,q){}})}function Jc(N){N>4&&(qi[N].refcount+=1)}function Zs(N,k){var W=Ke[N];return W===void 0&&ht(k+" has unknown type "+Ga(N)),W}function Qs(N,k){N=Zs(N,"_emval_take_value");var W=N.readValueFromPointer(k);return lo.toHandle(W)}function ec(){Ge("")}function Zc(N,k,W){j.copyWithin(N,k,k+W)}function Qc(){return 2147483648}function el(N){try{return S.grow(N-L.byteLength+65535>>>16),me(S.buffer),1}catch{}}function vs(N){var k=j.length;N=N>>>0;var W=Qc();if(N>W)return!1;let q=(ee,he)=>ee+(he-ee%he)%he;for(var J=1;J<=4;J*=2){var R=k*(1+.2/J);R=Math.min(R,N+100663296);var A=Math.min(W,q(Math.max(N,R),65536)),$=el(A);if($)return!0}return!1}function tl(N){return 52}function Vo(N,k,W,q,J){return 70}var tc=[null,[],[]];function ki(N,k){var W=tc[N];k===0||k===10?((N===1?w:x)(b(W,0)),W.length=0):W.push(k)}function nc(N,k,W,q){for(var J=0,R=0;R>2],$=X[k+4>>2];k+=8;for(var ee=0;ee<$;ee++)ki(N,j[A+ee]);J+=$}return X[q>>2]=J,0}function oa(N){return N}function ys(N){var k=o["_"+N];return k}function rc(N,k){B.set(N,k)}function Wa(N,k,W,q,J){var R={string:Fe=>{var Be=0;if(Fe!=null&&Fe!==0){var Qe=(Fe.length<<2)+1;Be=Ze(Qe),P(Fe,Be,Qe)}return Be},array:Fe=>{var Be=Ze(Fe.length);return rc(Fe,Be),Be}};function A(Fe){return k==="string"?D(Fe):k==="boolean"?!!Fe:Fe}var $=ys(N),ee=[],he=0;if(q)for(var ve=0;ve0||(Ee(),ae>0))return;function k(){z||(z=!0,o.calledRun=!0,!T&&(H(),a(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),O()))}o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),k()},1)):k()}if(o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return ie(),o.ready}})();t.exports=r})(SH);var $De=SH.exports;const zDe=Vl($De),jDe=new URL("/static/dv3d/openjphjs.wasm",import.meta.url),qp={codec:void 0,decoder:void 0,decodeConfig:{}};function HDe(t,e,r){const n={width:e,height:r};for(;t>0;)n.width=Math.ceil(n.width/2),n.height=Math.ceil(n.height/2),t--;return n}function KDe(t){if(qp.decodeConfig=t,qp.codec)return Promise.resolve();const e=zDe({locateFile:r=>r.endsWith(".wasm")?jDe.toString():r});return new Promise((r,n)=>{e.then(i=>{qp.codec=i,qp.decoder=new i.HTJ2KDecoder,r()},n)})}async function XDe(t,e){await KDe();const r=new qp.codec.HTJ2KDecoder,n=r.getEncodedBuffer(t.length);n.set(t);const i=e.decodeLevel||0;r.decodeSubResolution(i);const o=r.getFrameInfo();if(e.decodeLevel>0){const{width:E,height:b}=HDe(e.decodeLevel,o.width,o.height);o.width=E,o.height=b}const a=r.getDecodedBuffer();new Uint8Array(a.length).set(a);const c=`x: ${r.getImageOffset().x}, y: ${r.getImageOffset().y}`,l=r.getNumDecompositions(),f=r.getNumLayers(),u=["unknown","LRCP","RLCP","RPCL","PCRL","CPRL"][r.getProgressionOrder()+1],d=r.getIsReversible(),h=`${r.getBlockDimensions().width} x ${r.getBlockDimensions().height}`,g=`${r.getTileSize().width} x ${r.getTileSize().height}`,p=`${r.getTileOffset().x}, ${r.getTileOffset().y}`,v=`${a.length.toLocaleString()} bytes`,y=`${(a.length/n.length).toFixed(2)}:1`,m={columns:o.width,rows:o.height,bitsPerPixel:o.bitsPerSample,signed:o.isSigned,bytesPerPixel:e.bytesPerPixel,componentsPerPixel:o.componentCount};let w=qDe(o,a);const{buffer:x,byteOffset:C,byteLength:S}=w,T=x.slice(C,C+S);w=new w.constructor(T);const _={imageOffset:c,numDecompositions:l,numLayers:f,progessionOrder:u,reversible:d,blockDimensions:h,tileSize:g,tileOffset:p,decodedSize:v,compressionRatio:y};return{...e,pixelData:w,imageInfo:m,encodeOptions:_,..._,...m}}function qDe(t,e){return t.bitsPerSample>8?t.isSigned?new Int16Array(e.buffer,e.byteOffset,e.byteLength/2):new Uint16Array(e.buffer,e.byteOffset,e.byteLength/2):t.isSigned?new Int8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}function YDe(t,e){const r=t.length,{rescaleSlope:n,rescaleIntercept:i,suvbw:o,doseGridScaling:a}=e;if(e.modality==="PT"&&typeof o=="number"&&!isNaN(o))for(let s=0;s>o;let a=t.pixelData;t.pixelDataLength=t.pixelData.length;const{min:s,max:c}=eC(t.pixelData),l=typeof e.allowFloatRendering<"u"?e.allowFloatRendering:!0;let f=hD(t.photometricInterpretation)&&((m=e.targetBuffer)==null?void 0:m.offset)===void 0;const d=((w=e.preScale)==null?void 0:w.enabled)&&Object.values(e.preScale.scalingParameters).some(C=>typeof C=="number"&&!Number.isInteger(C)),h=!e.preScale.enabled||!l&&d,g=(x=e.targetBuffer)==null?void 0:x.type;if(g&&e.preScale.enabled&&!h){const C=e.preScale.scalingParameters,S=q_(s,c,C);f=!Obe(S.min,S.max,dO[g])}g&&!f?a=eIe(e,t,dO,a):e.preScale.enabled&&!h?a=tIe(e,s,c,t):a=TH(s,c,t);let p=s,v=c;if(e.preScale.enabled&&!h){const C=e.preScale.scalingParameters;if(_H(C),QDe(C)){YDe(a,C),t.preScale={...e.preScale,scaled:!0};const T=q_(s,c,C);p=T.min,v=T.max}}else h&&(t.preScale={enabled:!0,scaled:!1},p=s,v=c);t.pixelData=a,t.smallestPixelValue=p,t.largestPixelValue=v;const y=new Date().getTime();return t.decodeTimeInMS=y-r,t}function QDe(t){const{rescaleSlope:e,rescaleIntercept:r,modality:n,doseGridScaling:i,suvbw:o}=t;return typeof e=="number"&&typeof r=="number"||n==="RTDOSE"&&typeof i=="number"||n==="PT"&&typeof o=="number"}function eIe(t,e,r,n){const{arrayBuffer:i,type:o,offset:a=0,length:s,rows:c}=t.targetBuffer,l=r[o];if(!l)throw new Error(`target array ${o} is not supported, or doesn't exist.`);c&&c!=e.rows&&rIe(e,t.targetBuffer,l);const f=e.pixelDataLength,u=a,d=s??f-u,h=e.pixelData;if(d!==h.length)throw new Error(`target array for image does not have the same length (${d}) as the decoded image length (${h.length}).`);const g=i?new l(i,u,d):new l(d);return g.set(h,0),n=g,n}function tIe(t,e,r,n){const i=t.preScale.scalingParameters;_H(i);const o=q_(e,r,i);return TH(o.min,o.max,n)}function TH(t,e,r){const n=gD(t,e),i=new n(r.pixelData.length);return i.set(r.pixelData,0),i}function q_(t,e,r){const{rescaleSlope:n,rescaleIntercept:i,modality:o,doseGridScaling:a,suvbw:s}=r;return o==="PT"&&typeof s=="number"&&!isNaN(s)?{min:s*(t*n+i),max:s*(e*n+i)}:o==="RTDOSE"&&typeof a=="number"&&!isNaN(a)?{min:t*a,max:e*a}:typeof n=="number"&&typeof i=="number"?{min:n*t+i,max:n*e+i}:{min:t,max:e}}function _H(t){if(!t)throw new Error("options.preScale.scalingParameters must be defined if preScale.enabled is true, and scalingParameters cannot be derived from the metadata providers.")}function nIe(t,e,r){const{samplesPerPixel:n}=t,{rows:i,columns:o}=e,a=i*o*n,s=new r(a),c=s.byteLength/a;return{pixelData:s,rows:i,columns:o,frameInfo:{...t.frameInfo,rows:i,columns:o},imageInfo:{...t.imageInfo,rows:i,columns:o,bytesPerPixel:c}}}function rIe(t,e,r){const n=nIe(t,e,r),{scalingType:i="replicate"}=e;return JDe[i](t,n),Object.assign(t,n),t.pixelDataLength=t.pixelData.length,t}async function EH(t,e,r,n,i,o){const a=new Date().getTime();let s=null,c;switch(e){case"1.2.840.10008.1.2":case"1.2.840.10008.1.2.1":s=sO(t,r);break;case"1.2.840.10008.1.2.2":s=mDe(t,r);break;case"1.2.840.10008.1.2.1.99":s=sO(t,r);break;case"1.2.840.10008.1.2.5":s=vDe(t,r);break;case"1.2.840.10008.1.2.4.50":c={...t},s=EDe(r,c);break;case"1.2.840.10008.1.2.4.51":s=ODe(t,r);break;case"1.2.840.10008.1.2.4.57":s=lO(t,r);break;case"1.2.840.10008.1.2.4.70":s=lO(t,r);break;case"1.2.840.10008.1.2.4.80":c={signed:t.pixelRepresentation===1,bytesPerPixel:t.bitsAllocated<=8?1:2,...t},s=uO(r,c);break;case"1.2.840.10008.1.2.4.81":c={signed:t.pixelRepresentation===1,bytesPerPixel:t.bitsAllocated<=8?1:2,...t},s=uO(r,c);break;case"1.2.840.10008.1.2.4.90":c={...t},s=fO(r,c);break;case"1.2.840.10008.1.2.4.91":c={...t},s=fO(r,c);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":c={...t},s=XDe(r,c);break;default:throw new Error(`no decoder for transfer syntax ${e}`)}if(!s)throw new Error("decodePromise not defined");const l=await s,f=ZDe(l,i,a);return o==null||o(f),f}const iIe={decodeTask({imageFrame:t,transferSyntax:e,decodeConfig:r,options:n,pixelData:i,callbackFn:o}){return EH(t,e,i,r,n,o)}};jE(iIe);const tu={constants:dDe,convertRGBColorByPixel:Lj,convertRGBColorByPlane:Nj,convertYBRFullByPixel:kj,convertYBRFullByPlane:Vj,convertPALETTECOLOR:Fj,wadouri:Nbe,wadors:aDe,init:vH,convertColorSpace:rH,createImage:tC,decodeJPEGBaseline8BitColor:iH,getImageFrame:oH,getPixelData:yD,getMinMax:eC,isColorImage:hD,isJPEGBaseline8BitColor:uDe,internal:Y8e,decodeImageFrame:EH};class _g extends Kf{}VD(_g,"toolName","NoLabelArrowAnnotate");function hO(t,e){const r=ut("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=Aj;window.cornerstone3d=y1e;window.cornerstoneDICOMImageLoader=tu;const{MouseBindings:Ip,KeyboardBindings:gO}=sB,{IMAGE_RENDERED:Mp}=qe,oIe=[{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}],pO=t=>{const e=(t||"").toUpperCase(),r=[{name:"Reset to default",action:"reset"},{name:"Auto level",action:"autolevel"}];return e!=="CT"?r:[...r,...oIe.map(n=>({name:n.name,action:"preset",center:n.center,width:n.width}))]},q0=[{label:"Window/Level",value:wg.toolName,icon:"🌓"},{label:"Pan",value:Nf.toolName,icon:"✋"},{label:"Zoom",value:vu.toolName,icon:"🔍"},{label:"Stack Scroll",value:g0.toolName,icon:"📚"},{label:"Rotate",value:xg.toolName,icon:"↺"},{label:"Length",value:Hf.toolName,icon:"📏"},{label:"Probe",value:Vu.toolName,icon:"🔎"},{label:"Arrow (No Label)",value:_g.toolName,icon:"➡️"},{label:"Arrow Annotate",value:Kf.toolName,icon:"✈️"},{label:"Rectangle ROI",value:ku.toolName,icon:"▭"},{label:"Ellipse ROI",value:p0.toolName,icon:"◯"},{label:"Freehand ROI",value:jf.toolName,icon:"✏️"},{label:"Freehand Contour Segmentation",value:Nl.toolName,icon:"🖊️"},{label:"Sculptor",value:Cg.toolName,icon:"🔧"},{label:"Reference Cursors",value:Xa.toolName,icon:"⦿"}],aIe=3,sIe=220;function cIe(t){if(!t)return"🔖";const e=q0.find(r=>r.value===t||r.label===t);return(e==null?void 0:e.icon)||"🔖"}function lc(t){return t?t.startsWith("wadouri:")?t.replace(/^wadouri:+/,"").replace(/^:+/,""):t:""}function Y_(t){return/([?&])frame=\d+/i.test(t)}function mO(t,e){const r=Math.max(1,Math.floor(e));return Y_(t)?t.replace(/([?&])frame=\d+/i,`$1frame=${r}`):`${t}&frame=${r}`}function vO(t){const e=t.match(/[?&]frame=(\d+)/i);if(!e)return null;const r=Number(e[1]);return Number.isFinite(r)&&r>0?Math.floor(r):null}function yO(t){return t?t.split(/\\|,/).map(e=>Number(e.trim())).filter(e=>Number.isFinite(e)):[]}function j0(t){return t.startsWith("wadouri:")||t.startsWith("external:")?t:`wadouri:${t}`}function nS(t){const e=new Set,r=[];for(const n of t)!n||e.has(n)||(e.add(n),r.push(n));return r}function lIe(t){try{const e=t.getContext("2d",{willReadFrequently:!0});if(!e)return!0;const r=t.width||160,n=t.height||160,o=e.getImageData(0,0,r,n).data;let a=255,s=0,c=0,l=0;for(let d=0;d0&&w>12&&(c+=1),a=Math.min(a,w),s=Math.max(s,w),l+=1}if(l===0)return!0;const f=c/l,u=s-a;return f>.015||u>8}catch{return!0}}const wO=[{label:"Left",value:"Primary"},{label:"Middle",value:"Auxiliary"},{label:"Right",value:"Secondary"}],H2=[{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 uIe({container_id:t,imageStacks:e,autoCacheStack:r,annotationJson:n,viewerState:i,...o}){var Xs,qc,qs,Ys,Js,ms,Yc,Jc,Zs,Qs,ec,Zc,Qc,el,vs,tl,Vo,tc,ki,nc,oa,ys,rc,Wa,ic,se,ce,Se,We,Xe,rt,it,Ze,st,xt,Ut,Jt,Xt,re,te,xe,Ae,He,ct;const a=ot.useRef(null),s=ot.useRef(null),c=ot.useRef(!1),l="dv3d_mouseToolBindings",f="dv3d_ctrlMouseToolBindings",[u,d]=ot.useState(!1),[h,g]=ot.useState(!1),[p,v]=ot.useState(320),y=`dv3d_stackPanelWidth_${t||"default"}`,m=ot.useRef({resizing:!1,startX:0,startWidth:320}),w=240,x=720,C=220,S=40,T=14,_=ot.useRef(null),[E,b]=ot.useState(null),[D,I]=ot.useState(null),[P,M]=ot.useState(!1),L=9,B="renderingEngine_"+t,j="TOOL_GROUP_"+t,V=ot.useRef(null),F=ot.useRef(!1),[G,X]=ot.useState(!0),[ne,ue]=ot.useState(!1),[me,ge]=ot.useState([]),[ye,Ie]=ot.useState(0),[Pe,Ee]=ot.useState(null),[H,O]=ot.useState(!1),[Y,K]=ot.useState(null),[Z,ae]=ot.useState(()=>Array(L).fill([])),oe=z=>{typeof z=="function"?ae(ie=>{const N=z(ie);return console.log("setViewportImageIds (fn):",N),N}):(console.log("setViewportImageIds:",z),ae(z))},[_e,Oe]=ot.useState(()=>Array(L).fill(0)),[Ge,$e]=ot.useState(()=>Array(L).fill(null).map(()=>[])),[le,de]=ot.useState(()=>Array(L).fill(0)),[be,pe]=ot.useState(()=>Array(L).fill(!1)),[Te,Ye]=ot.useState(()=>Array(L).fill(12)),[fe,ft]=ot.useState(()=>Array(L).fill(!1)),gt=ot.useRef({}),mt=ot.useRef({}),[Re,Je]=ot.useState({}),at=ot.useRef({}),tt=ot.useRef({}),wt=ot.useCallback((z,ie)=>{Je(N=>{const k=N[z];if(k&&k!==ie&&k.startsWith("blob:"))try{URL.revokeObjectURL(k)}catch{}const W={...N,[z]:ie};return at.current=W,W})},[]);ot.useEffect(()=>{at.current=Re},[Re]),ot.useEffect(()=>()=>{Object.values(at.current).forEach(z=>{if(typeof z=="string"&&z.startsWith("blob:"))try{URL.revokeObjectURL(z)}catch{}})},[]),ot.useEffect(()=>{try{const z=localStorage.getItem(y);if(z){const ie=Number(z);Number.isNaN(ie)||v(Math.max(w,Math.min(x,Math.round(ie))))}}catch{}},[y]),ot.useEffect(()=>{try{localStorage.setItem(y,String(Math.round(p)))}catch{}},[y,p]);function Bt(z){if(!z)return null;try{if(z.tagName&&z.tagName.toLowerCase()==="canvas")return z}catch{}try{const ie=z.querySelector&&z.querySelector("canvas");if(ie)return ie}catch{}try{const ie=z.children||[];for(let N=0;NMath.min(tn,Math.max(Rt,lt)),ve=()=>{ie.style.transform=`translate(${J}px, ${R}px) scale(${q})`};let Ce=!0,we=!0;const Me=lt=>{if(!we)return;lt.preventDefault();const Rt=ie.getBoundingClientRect(),tn=lt.clientX-Rt.left,rr=lt.clientY-Rt.top,si=-lt.deltaY,nl=1+(si>0?.1:-.1)*Math.min(4,Math.abs(si)/100),nd=he(q*nl,.1,10);J=(J-tn)*(nd/q)+tn,R=(R-rr)*(nd/q)+rr,q=nd,ve()},Fe=lt=>{lt.button===0&&Ce&&(A=!0,$=lt.clientX,ee=lt.clientY,ie.style.cursor="grabbing",lt.preventDefault())},Be=lt=>{if(!A)return;const Rt=lt.clientX-$,tn=lt.clientY-ee;J+=Rt,R+=tn,$=lt.clientX,ee=lt.clientY,ve()},Qe=lt=>{A&&(A=!1,ie.style.cursor="grab")},et=lt=>{q=1,J=0,R=0,ve()};let yt=0;const It=(lt,Rt)=>Math.hypot(Rt.clientX-lt.clientX,Rt.clientY-lt.clientY),Tt=lt=>{lt.touches.length===1?Ce&&(A=!0,$=lt.touches[0].clientX,ee=lt.touches[0].clientY):lt.touches.length===2&&(yt=It(lt.touches[0],lt.touches[1]))},Mt=lt=>{if(lt.touches.length===1&&A){const Rt=lt.touches[0].clientX-$,tn=lt.touches[0].clientY-ee;J+=Rt,R+=tn,$=lt.touches[0].clientX,ee=lt.touches[0].clientY,ve()}else if(lt.touches.length===2&&we){const Rt=It(lt.touches[0],lt.touches[1]);if(yt>0){const tn=Rt/yt,rr=ie.getBoundingClientRect(),si=(lt.touches[0].clientX+lt.touches[1].clientX)/2-rr.left,nl=(lt.touches[0].clientY+lt.touches[1].clientY)/2-rr.top,nd=he(q*tn,.1,10);J=(J-si)*(nd/q)+si,R=(R-nl)*(nd/q)+nl,q=nd,ve()}yt=Rt}lt.preventDefault()},Ot=lt=>{lt.touches.length===0&&(A=!1,yt=0)};return z.addEventListener("wheel",Me,{passive:!1}),z.addEventListener("mousedown",Fe),window.addEventListener("mousemove",Be),window.addEventListener("mouseup",Qe),ie.addEventListener("dblclick",et),z.addEventListener("touchstart",Tt,{passive:!1}),z.addEventListener("touchmove",Mt,{passive:!1}),z.addEventListener("touchend",Ot),{cleanup:()=>{z.removeEventListener("wheel",Me),z.removeEventListener("mousedown",Fe),window.removeEventListener("mousemove",Be),window.removeEventListener("mouseup",Qe),ie.removeEventListener("dblclick",et),z.removeEventListener("touchstart",Tt),z.removeEventListener("touchmove",Mt),z.removeEventListener("touchend",Ot),ie.style.transform="",ie.style.cursor="",ie.style.willChange=""},setAllowPan:lt=>{Ce=lt},setAllowZoom:lt=>{we=lt}}}const[$t,dn]=ot.useState(!1),[Nn,Kt]=ot.useState(null),[qn,Cr]=ot.useState(!1),[pr,Ke]=ot.useState(null);ot.useEffect(()=>{const z=N=>{try{const k=N&&N.message?String(N.message):"";(k.includes("releaseGraphicsResources")||k.includes("openGLTexture")||k.includes("getDefaultActor")||k.includes("setColormapGPU")||k.includes(`can't access property "actor"`)||k.toLowerCase().includes("webgl")||k.toLowerCase().includes("colormap"))&&(console.error("Detected graphics/rendering error:",N),Ke(k||null),Cr(!0))}catch{}},ie=N=>{try{const k=N&&N.reason||"",W=typeof k=="string"?k:k&&k.message?k.message:String(k);(W.includes("releaseGraphicsResources")||W.includes("openGLTexture")||W.includes("getDefaultActor")||W.includes("setColormapGPU")||W.includes(`can't access property "actor"`)||W.toLowerCase().includes("webgl")||W.toLowerCase().includes("colormap"))&&(console.error("Detected graphics/rendering rejection:",N),Ke(W||null),Cr(!0))}catch{}};return window.addEventListener("error",z),window.addEventListener("unhandledrejection",ie),()=>{window.removeEventListener("error",z),window.removeEventListener("unhandledrejection",ie)}},[]),ot.useEffect(()=>{let z=!1;if(n||i){Kt(n?"annotations":"viewerState");const ie=setTimeout(()=>{if(z)return;const N=t||"default";if(n)try{const k=window[`importAnnotations_${N}`]||window.importAnnotations;typeof k=="function"&&k(n)}catch(k){console.error("Failed to import annotations from prop:",k)}if(i)try{const k=window[`importViewerState_${N}`]||window.importViewerState;typeof k=="function"&&k(i)}catch(k){console.error("Failed to import viewer state from prop:",k)}Kt(null)},2e3);return()=>{z=!0,clearTimeout(ie),Kt(null)}}},[n,i,t]),ot.useEffect(()=>{let z=!0;return e().then(async ie=>{var W;if(!z)return;const N=Array.isArray(ie)?ie:[],k=await Promise.all(N.map(async q=>{if(Array.isArray(q)){const ee=await Ai(q),he=await Tr(ee);return{imageIds:ee,seriesGroups:he}}const J=Array.isArray(q.imageIds)?q.imageIds:Array.isArray(q.i)?q.i:[],R=await Ai(J);let A;if(Array.isArray(q.series)){const he=(await Promise.all(q.series.map(async(ve,Ce)=>{const we=Array.isArray(ve==null?void 0:ve.imageIds)?ve.imageIds:Array.isArray(ve==null?void 0:ve.i)?ve.i:[],Me=await Ai(we),Be=(typeof(ve==null?void 0:ve.name)=="string"?ve.name:"").trim()||`Series ${Ce+1}`;return{key:String((ve==null?void 0:ve.seriesInstanceUID)||(ve==null?void 0:ve.seriesId)||`SERIES_${Ce}`),label:Be,imageIds:Me,seriesInstanceUID:ve==null?void 0:ve.seriesInstanceUID,bValue:Number.isFinite(Number(ve==null?void 0:ve.bValue))?Number(ve.bValue):null}}))).filter(ve=>ve.imageIds.length>0);he.length>0&&(A=he)}(!A||A.length===0)&&(A=await Tr(R));let $=q.studyInstanceUID;if(!$&&R.length>0)try{const ee=R[0];if(typeof fetch=="function"&&typeof window.dicomParser<"u"&&ee.startsWith("wadouri:")){const he=lc(ee),Ce=await(await fetch(he)).arrayBuffer();$=window.dicomParser.parseDicom(new Uint8Array(Ce)).string("x0020000d")}}catch{}return{imageIds:R,seriesGroups:A,studyInstanceUID:$,studyId:q.studyId,name:q.name,caseId:q.caseId}}));if(ge(k),k[0]){const q=k[0];let J=q.seriesGroups||[];J.length===0&&(await _n(q.imageIds,{force:!0}),J=await Tr(q.imageIds),k[0]={...q,seriesGroups:J},ge([...k]));const R=((W=J[0])==null?void 0:W.imageIds)||q.imageIds;await _n(R),oe(Array(L).fill(R||[])),$e(Array(L).fill(null).map(()=>J)),de(Array(L).fill(0))}else oe(Array(L).fill([])),$e(Array(L).fill(null).map(()=>[])),de(Array(L).fill(0))}).catch(ie=>{console.error("Failed to load imageStacks:",ie),ge([]),oe(Array(L).fill([]))}),()=>{z=!1}},[]);const dt=async(z,ie)=>{var R,A,$,ee,he;const N=me[ie];if(!N)return;let k=N.imageIds;console.log("[handleLoadStack] Starting with imageIds:",k.length,"ids. First:",(R=k[0])==null?void 0:R.slice(0,80));const W=await Ai(k);console.log("[handleLoadStack] After expansion:",W.length,"ids. First:",(A=W[0])==null?void 0:A.slice(0,80)),k=W,await _n(k,{force:!0});const q=await Tr(k);console.log("[handleLoadStack] Derived series groups:",q.length,"groups. First group has",($=q[0])==null?void 0:$.imageIds.length,"images"),ge(ve=>{const Ce=[...ve];return Ce[ie]?(Ce[ie]={...Ce[ie],seriesGroups:q,imageIds:k},Ce):ve});const J=((ee=q[0])==null?void 0:ee.imageIds)||k;console.log("[handleLoadStack] Setting viewport to primarySeries with",J.length,"ids. First:",(he=J[0])==null?void 0:he.slice(0,80)),Kt("displayset");try{Co(ve=>{const Ce=[...ve];return Ce[z]="stack",Ce}),oe(ve=>{const Ce=[...ve];return Ce[z]=J,Ce}),Oe(ve=>{const Ce=[...ve];return Ce[z]=ie,Ce}),$e(ve=>{const Ce=[...ve];return Ce[z]=q||[],Ce}),de(ve=>{const Ce=[...ve];return Ce[z]=0,Ce}),await _n(J)}finally{Kt(null)}},[zt,Tn]=ot.useState(!1),[Fr,qt]=ot.useState(!0),[Sr,Rn]=ot.useState(!1),[yi,mr]=ot.useState(!1),yo=()=>{console.log("Sorting viewport imageIds by slice location"),oe(z=>{const ie=z.map((N,k)=>{if(!N||N.length===0)return N;const J=[...N.map(R=>{const A=ut("imagePlaneModule",R);let $=null;return A&&(A.sliceLocation!==void 0?$=Number(A.sliceLocation):A.imagePositionPatient&&Array.isArray(A.imagePositionPatient)&&A.imagePositionPatient.length===3&&($=Number(A.imagePositionPatient[2]))),{imageId:R,sortKey:$}})].sort((R,A)=>R.sortKey!==null&&A.sortKey!==null?R.sortKey-A.sortKey:R.imageId.localeCompare(A.imageId)).map(R=>R.imageId);return JSON.stringify(J)===JSON.stringify(N)?N:J});return dn(!0),ie})},hn=ot.useCallback(async(z,ie,N=0)=>{if(!ie||Re[z]||tt.current[z])return;if(Ct(ie)){try{const J=new Image;J.crossOrigin="anonymous";const R=ie.replace(/^external:/,"");J.src=R,await new Promise((he,ve)=>{J.onload=()=>he(!0),J.onerror=Ce=>ve(Ce)});const A=document.createElement("canvas"),$=160;A.width=$,A.height=$;const ee=A.getContext("2d");if(ee){const he=Math.min($/J.width,$/J.height),ve=J.width*he,Ce=J.height*he,we=($-ve)/2,Me=($-Ce)/2;ee.fillStyle="#000",ee.fillRect(0,0,$,$),ee.drawImage(J,we,Me,ve,Ce),wt(z,A.toDataURL("image/png"))}else wt(z,"BROKEN")}catch{wt(z,"BROKEN")}return}const k=V.current;if(!k)return;tt.current[z]=!0;const W=`THUMB_${t||"main"}_${z}`,q=document.createElement("div");q.style.width="160px",q.style.height="160px",q.style.position="absolute",q.style.left="-9999px",q.style.top="0",document.body.appendChild(q);try{k.enableElement({viewportId:W,type:Jn.STACK,element:q});const J=k.getViewport(W);if(!J)return;try{J.setStack([ie])}catch{}await new Promise(A=>{let $=!1;const ee=setTimeout(()=>{$||($=!0,A(!1))},2e3),he=()=>{$||($=!0,clearTimeout(ee),A(!0))};try{if(J&&J.element&&J.element.addEventListener(Mp,he,{once:!0}),typeof J.render=="function")try{const ve=J.render();ve&&typeof ve.then=="function"&&ve.catch(()=>{})}catch{}}catch{clearTimeout(ee),A(!1)}});let R=Bt(q)||(J&&J.element?Bt(J.element):null);if(R||(await new Promise(A=>setTimeout(A,150)),R=Bt(q)||(J&&J.element?Bt(J.element):null)),R){if(!lIe(R)&&N{hn(z,ie,N+1)},$);return}try{if(typeof R.toBlob=="function"){const $=await new Promise(ee=>{R.toBlob(he=>{if(!he){ee(null);return}ee(URL.createObjectURL(he))},"image/png")});$?wt(z,$):wt(z,R.toDataURL("image/png"))}else wt(z,R.toDataURL("image/png"))}catch{wt(z,"BROKEN")}}else wt(z,"BROKEN")}catch{try{wt(z,"BROKEN")}catch{}}finally{try{k.disableElement(W)}catch{}q&&q.parentNode&&q.parentNode.removeChild(q)}},[t,Re,wt]);ot.useEffect(()=>{!me||me.length===0||!V.current||me.forEach((ie,N)=>{const k=Array.isArray(ie.imageIds)?ie.imageIds:[],W=Math.floor(k.length/2),q=k[W]||k[0]||null;!Re[N]&&!tt.current[N]&&hn(N,q)})},[me,hn,Re]);const _n=async(z,ie)=>{console.log("Setting loaded imageIds:",z),console.log("autoCacheStack:",r);const N=[];if(!!(r||ie!=null&&ie.force)){const W=new Set;for(const q of z)if(q.startsWith("wadouri:"))try{const J=lc(q).replace(/[?&]frame=\d+/gi,"");J&&W.add(J)}catch(J){console.warn(`Failed to cache metadata for ${q}:`,J)}for(const q of W)if(tu.wadouri.dataSetCacheManager){const J=tu.wadouri.dataSetCacheManager.load(q);J&&typeof J.then=="function"&&N.push(J)}else console.warn("MetaDataManager not found. Unable to cache metadata.");await Promise.all(N),ao&&(console.log("Sorting viewport imageIds by slice location"),yo())}},fs=ot.useCallback(async z=>{var J;if(!z.startsWith("wadouri:")||Y_(z))return 1;const ie=j0(z),N=lc(ie),k=`wadouri:${N}`,W=gt.current[k];if(W!==void 0)return console.log("[getNumberOfFramesForImageId] Cache hit:",k.slice(0,60),"->",W),W;const q=R=>{if(!R||typeof R.intString!="function")return 1;const A=Number(R.intString("x00280008"));return Number.isFinite(A)&&A>1?Math.floor(A):1};try{const R=ut("multiframeModule",ie),A=Number(R==null?void 0:R.numberOfFrames);if(Number.isFinite(A)&&A>1)return console.log("[getNumberOfFramesForImageId] Found in metadata:",A),gt.current[k]=Math.floor(A),Math.floor(A)}catch{}try{const R=(J=tu==null?void 0:tu.wadouri)==null?void 0:J.dataSetCacheManager;if(R!=null&&R.get){const A=R.get(N),$=q(A);return console.log("[getNumberOfFramesForImageId] Found in cache manager:",$),gt.current[k]=$,$}}catch{}try{console.log("[getNumberOfFramesForImageId] Fetching:",N.slice(0,80));const A=await(await fetch(N)).arrayBuffer(),$=br.parseDicom(new Uint8Array(A)),ee=q($);return console.log("[getNumberOfFramesForImageId] Found via fetch:",ee),gt.current[k]=ee,ee}catch(R){return console.log("[getNumberOfFramesForImageId] Fetch failed, returning 1:",R),gt.current[k]=1,1}},[]),Ai=ot.useCallback(async z=>{const ie=[];console.log("[expandMultiframeImageIds] Input:",z.length,"imageIds");for(const k of z||[]){const W=j0(k);if(!W.startsWith("wadouri:")||Y_(W)){ie.push(W);continue}const q=await fs(W);if(console.log("[expandMultiframeImageIds] frameCount for",W.slice(0,80),":",q),q<=1){ie.push(W);continue}for(let J=1;J<=q;J++)ie.push(mO(W,J));console.log("[expandMultiframeImageIds] Expanded to",q,"frames")}const N=nS(ie);return console.log("[expandMultiframeImageIds] Output:",N.length,"total imageIds"),N},[fs]),Ur=ot.useCallback(async z=>{var q;if(!z.startsWith("wadouri:"))return[];const ie=j0(z),N=lc(ie).replace(/[?&]frame=\d+/i,""),k=mt.current[N];if(k)return k;const W=J=>{if(!J||typeof J.string!="function")return[];const R=yO(J.string("x00189087"));if(R.length>0)return R;const A=yO(J.string("x20011003"));return A.length>0?A:[]};try{const J=(q=tu==null?void 0:tu.wadouri)==null?void 0:q.dataSetCacheManager;if(J!=null&&J.get){const R=J.get(N),A=W(R);if(A.length>0)return mt.current[N]=A,A}}catch{}try{const R=await(await fetch(N)).arrayBuffer(),A=br.parseDicom(new Uint8Array(R)),$=W(A);return mt.current[N]=$,$}catch{return mt.current[N]=[],[]}},[]),Tr=ot.useCallback(async z=>{if(!Array.isArray(z)||z.length===0)return[];const ie=new Map;z.forEach(q=>{const J=lc(j0(q)).replace(/[?&]frame=\d+/i,""),R=ie.get(J)||[];R.push(q),ie.set(J,R)}),ie.forEach((q,J)=>{q.sort((R,A)=>{const $=vO(R)||1,ee=vO(A)||1;return $-ee}),ie.set(J,q)});const N=new Map;await Promise.all(Array.from(ie.keys()).map(async q=>{const J=`wadouri:${q}`,R=await Ur(J);N.set(q,R)}));const k=new Map;return z.forEach(q=>{const J=ut("generalSeriesModule",q)||{},R=ut("generalImageModule",q)||{},A=ut("mrImageModule",q)||{},$=(J.seriesInstanceUID||"").trim(),ee=(J.seriesDescription||"").trim(),he=Number(J.seriesNumber),ve=Number(R.temporalPositionIdentifier),Ce=Number(R.triggerTime);let we=Number(A.diffusionBValue??A.diffusionbValue??A.bValue),Me=Number.isFinite(we)?we:null;if(Me===null){const It=lc(j0(q)).replace(/[?&]frame=\d+/i,""),Tt=N.get(It)||[];if(Tt.length>0){const Mt=ie.get(It)||[q],Ot=Math.max(0,Mt.indexOf(q)),In=Math.max(1,Mt.length);if(Tt.length===1)Me=Tt[0];else if(Tt.length===In)Me=Tt[Math.min(Tt.length-1,Ot)];else if(Tt.length===2&&In%2===0)Me=Ot{const A=[];J.seriesDescription&&A.push(J.seriesDescription),J.seriesNumber!==void 0&&A.push(`#${J.seriesNumber}`),J.bValue!==null&&J.bValue!==void 0&&A.push(`b=${Math.round(J.bValue)}`);const $=A.length>0?A.join(" • "):`Series ${R+1}`;return{key:q,label:$,imageIds:nS(J.imageIds),seriesInstanceUID:J.seriesInstanceUID,bValue:J.bValue}})},[Ur]),[ht,ri]=ot.useState({rows:1,cols:1}),[oo,ta]=ot.useState(!1),Br=ot.useRef([]),na=ot.useRef({}),wo=ot.useRef({}),[ao,ya]=ot.useState(!1),[ji,xo]=ot.useState(!0),Fa=ot.useCallback(z=>{const ie=z.currentTarget.getBoundingClientRect(),N=z.clientX-ie.left,k=z.clientY-ie.top,W=ie.width,q=ie.height,J=Math.min(W,q)*.24,R=[{zone:"left",distance:N},{zone:"right",distance:W-N},{zone:"top",distance:k},{zone:"bottom",distance:q-k}];return R.sort((A,$)=>A.distance-$.distance),R[0].distance<=J?R[0].zone:"center"},[]),Hi=ot.useCallback(z=>z==="left"||z==="right"?ht.cols<3?z:"center":(z==="top"||z==="bottom")&&ht.rows<3?z:"center",[ht]),wa=[];for(let z=1;z<=3;z++)for(let ie=1;ie<=3;ie++)wa.push({rows:z,cols:ie});const[jt,ds]=ot.useState(()=>Array(ht.rows*ht.cols).fill({index:0,total:0,windowCenter:"",windowWidth:"",slicePosition:"",modality:"",orientation:"",resolution:"",spacing:"",focalPoint:""})),[No,Bc]=ot.useState(()=>Array(L).fill(null).map(()=>[])),Ei=ot.useRef(Array(L).fill("")),Li=ot.useRef(Array(L).fill(null)),so=ot.useRef(Array(L).fill(null)),hs=ot.useRef(Array(L).fill(null)),[vn,Co]=ot.useState(()=>Array(L).fill("stack")),[Or,Ua]=ot.useState(()=>Array(ht.rows*ht.cols).fill(!1)),[Ki,Fs]=ot.useState({Primary:g0.toolName,Auxiliary:Nf.toolName,Secondary:wg.toolName,Primary_and_Secondary:vu.toolName,Fourth_Button:xg.toolName,Wheel:g0.toolName}),[So,Us]=ot.useState({Primary:Hf.toolName,Auxiliary:Vu.toolName,Secondary:_g.toolName}),[Xr,gs]=ot.useState(!1);ot.useEffect(()=>{const z=N=>{N.ctrlKey&&gs(!0)},ie=N=>{N.ctrlKey||gs(!1)};return window.addEventListener("keydown",z),window.addEventListener("keyup",ie),()=>{window.removeEventListener("keydown",z),window.removeEventListener("keyup",ie)}},[]);const[co,ra]=ot.useState(!1),[ps,Ba]=ot.useState(null),Ni=(z,ie)=>{ha&&ha(ie),Xc(N=>{const k=[...N];return k[z]=ie,k})},Xi=(z,ie,N)=>{const k=wr.getAllAnnotations()||[];k.forEach(q=>{q.annotationUID===ie&&(q.isSelected=!1)}),wr.removeAnnotation(ie),V.current.render();const W=N.filter(q=>q.annotationUID!==ie);Xc(q=>{const J=[...q],R=W.length>0?W[0].annotationUID:null;return J[z]=R,k.forEach(A=>{A.isSelected=A.annotationUID===R}),ha(R),V.current.render(),J})},Gc=()=>{const z=Z.findIndex(W=>W&&W.length>0);if(z===-1){Ba("No images loaded."),ra(!0);return}const ie=Z[z][0],N=["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"],k={};N.forEach(W=>{const q=ut(W,ie);q!==void 0&&(k[W]=q)}),Ba(Ne.jsx("pre",{style:{maxHeight:600,overflow:"auto",fontSize:13,color:"#fff"},children:JSON.stringify(k,null,2)})),ra(!0)};ot.useEffect(()=>{try{const z=localStorage.getItem(l),ie=localStorage.getItem(f);z&&Fs(JSON.parse(z)),ie&&Us(JSON.parse(ie))}catch{}},[]),ot.useEffect(()=>{try{localStorage.setItem(l,JSON.stringify(Ki))}catch{}},[Ki]),ot.useEffect(()=>{try{localStorage.setItem(f,JSON.stringify(So))}catch{}},[So]),ot.useEffect(()=>(window.loadDicomStackFromFiles=z=>{const ie=Array.from(z);qr({target:{files:ie}})},()=>{window.loadDicomStackFromFiles=void 0}),[]),ot.useEffect(()=>{const z=()=>{O(!1),K(null),Ee(null)};return document.addEventListener("dragend",z),()=>document.removeEventListener("dragend",z)},[]);const[ii,bi]=ot.useState(!1),[Bs,oi]=ot.useState(!1);ot.useEffect(()=>{const z=kr(j);z&&["ArrowAnnotate","NoLabelArrowAnnotate","Length","RectangleROI","EllipticalROI","PlanarFreehandROI","PlanarFreehandContourSegmentation"].forEach(ie=>{z.setToolConfiguration(ie,{color:"#00e676",selectedColor:"#ffeb3b"})})},[j]),ot.useEffect(()=>{const z=k=>{k.altKey&&bi(!0),k.shiftKey&&oi(!0)},ie=k=>{k.altKey||bi(!1),k.shiftKey||oi(!1)},N=()=>{bi(!1),oi(!1)};return window.addEventListener("keydown",z),window.addEventListener("keyup",ie),window.addEventListener("blur",N),()=>{window.removeEventListener("keydown",z),window.removeEventListener("keyup",ie),window.removeEventListener("blur",N)}},[]),ot.useEffect(()=>{const z=kr(j);if(!z)return;if(Bs||ji&&ii){const N=ht.rows*ht.cols;Z.slice(0,N).filter((W,q)=>vn[q]==="stack"&&Array.isArray(W)&&W.length>0).forEach(W=>{_n(W,{force:!0}).catch(q=>{console.warn("Reference cursor metadata warm-up failed:",q)})}),z.hasTool(Xa.toolName)||z.addTool(Xa.toolName),z.setToolEnabled(Xa.toolName),z.setToolActive(Xa.toolName)}else z.hasTool(Xa.toolName)&&z.setToolDisabled(Xa.toolName)},[ii,Bs,ji,ht.rows,ht.cols,Z,vn,_n]);const Di=ot.useCallback(()=>{[kr(j)].forEach(ie=>{if(ie){q0.forEach(k=>{ie.setToolPassive(k.value,{removeAllBindings:!0})}),ie.setToolDisabled(Xa.toolName);const N={};Object.entries(Ki).forEach(([k,W])=>{N[W]||(N[W]=[]);const q=H2.find(J=>J.value===k);q?N[W].push({mouseButton:q.mask}):Ip[k]&&N[W].push({mouseButton:Ip[k]})}),Object.entries(So).forEach(([k,W])=>{if(!W)return;N[W]||(N[W]=[]);const q=H2.find(J=>J.value===k);q?N[W].push({mouseButton:q.mask,modifierKey:gO.Ctrl}):Ip[k]&&N[W].push({mouseButton:Ip[k],modifierKey:gO.Ctrl})}),Object.entries(N).forEach(([k,W])=>{ie.setToolActive(k,{bindings:W})});try{const k=Ki.Primary,W=Ki.Wheel,q=Ki.Auxiliary,J=k===Nf.toolName||q===Nf.toolName,R=k===vu.toolName||W===vu.toolName||Ki.Primary_and_Secondary===vu.toolName;Br.current.forEach(A=>{if(!A)return;const $=A._externalPanZoom;$&&(typeof $.setAllowPan=="function"&&$.setAllowPan(!!J),typeof $.setAllowZoom=="function"&&$.setAllowZoom(!!R))})}catch{}}})},[Ki,So]),[xa,Gs]=ot.useState(!1),[Ca,wi]=ot.useState("add"),Pr=ot.useRef(null),Ga=ot.useCallback(z=>{h&&(z.preventDefault(),z.stopPropagation(),m.current={resizing:!0,startX:z.clientX,startWidth:p},document.body.style.cursor="col-resize",document.body.style.userSelect="none")},[h,p]);ot.useEffect(()=>{const z=N=>{if(!m.current.resizing)return;const k=m.current.startX-N.clientX,W=Math.max(w,Math.min(x,m.current.startWidth+k));v(W)},ie=()=>{m.current.resizing&&(m.current.resizing=!1,document.body.style.cursor="",document.body.style.userSelect="")};return window.addEventListener("mousemove",z),window.addEventListener("mouseup",ie),()=>{window.removeEventListener("mousemove",z),window.removeEventListener("mouseup",ie),document.body.style.cursor="",document.body.style.userSelect=""}},[]);const ai=xa?C-S/2:-S+T;ot.useEffect(()=>{try{Pr.current&&(Pr.current.setAttribute("webkitdirectory","true"),Pr.current.setAttribute("directory",""),Pr.current.setAttribute("mozdirectory",""))}catch{}},[]);async function Ws(z,ie=""){const N=[],k=z.entries?z.entries():z.values();for await(const W of k)try{let q,J;if(Array.isArray(W)&&W.length>=2?(J=W[0],q=W[1]):(q=W,J=q.name),!q)continue;if(q.kind==="file"){const R=await q.getFile();try{Object.defineProperty(R,"webkitRelativePath",{value:ie+(J||q.name),configurable:!0})}catch{}N.push(R)}else if(q.kind==="directory"){const R=await Ws(q,ie+(J||q.name)+"/");N.push(...R)}}catch(q){console.debug("collectFilesFromDirectoryHandle: skipping entry due to error",q)}return N}const $s=async()=>{var z;if(window.showDirectoryPicker)try{const ie=await window.showDirectoryPicker(),N=await Ws(ie);N&&N.length>0?await qr({target:{files:N}}):alert("No files found in selected folder.");return}catch(ie){console.warn("showDirectoryPicker failed or cancelled",ie)}(z=Pr.current)==null||z.click()},Ii=ot.useRef(null),qr=async z=>{const ie=z.target.files;if(!ie||ie.length===0)return;ya(!1);const N=Array.from(ie).sort((J,R)=>J.name.localeCompare(R.name)),k=await Promise.all(N.map(async J=>{const R=J.type&&J.type.startsWith("image/");let A,$,ee,he,ve=1,Ce=!1;if(!R)try{const Me=await J.arrayBuffer(),Fe=br.parseDicom(new Uint8Array(Me));A=Fe.string("x0020000d"),$=Fe.string("x0020000e");const Be=Fe.string("x00200013");Be!=null&&Be!==""&&(ee=parseInt(Be,10));const Qe=Fe.string("x00201041")||Fe.string("x00201040");Qe!=null&&Qe!==""&&(he=parseFloat(Qe));const et=Fe.string("x00280008");if(et!=null&&et!==""){const yt=Number(et);Number.isFinite(yt)&&yt>1&&(ve=Math.floor(yt))}Ce=!0}catch{Ce=!1}const we=R?`external:${URL.createObjectURL(J)}`:`wadouri:${URL.createObjectURL(J)}`;return{file:J,imageId:we,studyInstanceUID:A,seriesInstanceUID:$,instanceNumber:ee,sliceLocation:he,numberOfFrames:ve,isImage:R,parsedSuccessfully:Ce}})),W=new Map;for(const J of k){if(!J.isImage&&!J.parsedSuccessfully){console.debug("Skipping non-DICOM/non-image file:",J.file.name);continue}const R=J.seriesInstanceUID||J.studyInstanceUID||(J.file.webkitRelativePath?J.file.webkitRelativePath.split("/")[0]:J.file.name);W.has(R)||W.set(R,{entries:[],studyInstanceUID:J.studyInstanceUID,seriesInstanceUID:J.seriesInstanceUID}),W.get(R).entries.push(J)}const q=[];for(const[J,R]of W.entries()){const A=R.entries;A.sort((he,ve)=>ao&&he.sliceLocation!==void 0&&ve.sliceLocation!==void 0?he.sliceLocation-ve.sliceLocation:he.instanceNumber!==void 0&&ve.instanceNumber!==void 0?he.instanceNumber-ve.instanceNumber:(he.file.webkitRelativePath||he.file.name).localeCompare(ve.file.webkitRelativePath||ve.file.name));const $=A.flatMap(he=>{if(he.isImage||!Number.isFinite(he.numberOfFrames)||he.numberOfFrames<=1)return[he.imageId];const ve=[];for(let Ce=1;Ce<=he.numberOfFrames;Ce++)ve.push(mO(he.imageId,Ce));return ve}),ee=await Tr($);q.push({imageIds:$,studyInstanceUID:R.studyInstanceUID,seriesInstanceUID:R.seriesInstanceUID,seriesGroups:ee})}if(q.length!==0)if(Ca==="replace"){try{const J=V.current;if(J)for(let R=0;R{var R,A;const J=Array(L).fill([]);for(let $=0;${const J=Array(L).fill(null).map(()=>[]);for(let R=0;R{const R=[...J,...q];oe(A=>{var he,ve;const $=[...A],ee=q[q.length-1];return $[0]=((ve=(he=ee.seriesGroups)==null?void 0:he[0])==null?void 0:ve.imageIds)||ee.imageIds,$}),Oe(A=>{const $=[...A];return $[0]=R.length-1,$}),$e(A=>{var ee;const $=[...A];return $[0]=((ee=q[q.length-1])==null?void 0:ee.seriesGroups)||[],$}),de(A=>{const $=[...A];return $[0]=0,$});for(const A of q)_n(A.imageIds);return R})},kn=ot.useCallback((z,ie)=>{var we,Me;if(!ie)return;let N=0,k=0,W="",q="",J="",R="",A="",$="",ee="",he="",ve,Ce;if(vn[z]==="stack"){N=typeof ie.getCurrentImageIdIndex=="function"?ie.getCurrentImageIdIndex():0;const Fe=typeof ie.getImageIds=="function"?ie.getImageIds():[];k=Fe.length;const Be=Fe[N];if(Be){if(console.log("[updateOverlay] Current image:",Be.slice(0,80),"frameIndex status:",ve,"totalFrames:",Ce),Be.includes("&frame=")){const Tt=Be.match(/&frame=(\d+)/);if(Tt){ve=parseInt(Tt[1],10),console.log("[updateOverlay] Frame detected:",ve);const Mt=Be.split("&frame=")[0],Ot=ut("multiframeModule",Mt);if(Ot!=null&&Ot.numberOfFrames)Ce=Ot.numberOfFrames,console.log("[updateOverlay] Total frames from metadata:",Ce);else{const In=Fe.map(lt=>{const Rt=lt.match(/&frame=(\d+)/);return Rt?parseInt(Rt[1],10):null}).filter(lt=>lt!==null&&typeof lt=="number");In.length>0&&(Ce=Math.max(...In),console.log("[updateOverlay] Total frames from imageIds:",Ce))}}}else console.log("[updateOverlay] No frame query in imageId. imageIds.length:",Fe.length);const Qe=ut("generalSeriesModule",Be),et=ut("imagePlaneModule",Be),yt=ut("imagePixelModule",Be);R=(Qe==null?void 0:Qe.modality)||"",yt!=null&&yt.rows&&(yt!=null&&yt.columns)&&($=`${yt.columns} x ${yt.rows}`);const It=[et==null?void 0:et.columnPixelSpacing,et==null?void 0:et.rowPixelSpacing,et==null?void 0:et.sliceThickness].filter(Tt=>Tt!=null&&Tt!=="");It.length>0&&(ee=It.join(" x "))}if(typeof ie.getCamera=="function"){const Qe=ie.getCamera();Qe!=null&&Qe.focalPoint&&Array.isArray(Qe.focalPoint)&&(he=Qe.focalPoint.map(et=>et.toFixed(1)).join(", "))}if(N>=0&&Bc(Qe=>{const et=[...Qe],yt=new Set(et[z]||[]);return yt.has(N)?Qe:(yt.add(N),et[z]=Array.from(yt).sort((It,Tt)=>It-Tt),et)}),typeof ie.getProperties=="function"){const Qe=ie.getProperties();if(Qe.voiRange){const{lower:et,upper:yt}=Qe.voiRange;W=((yt+et)/2).toFixed(0),q=(yt-et).toFixed(0),Li.current[z]===null&&(Li.current[z]={lower:et,upper:yt})}}}else if(vn[z]==="volume"){if(typeof ie.getSliceIndex=="function"&&(N=ie.getSliceIndex()),typeof ie.getNumberOfSlices=="function"&&(k=ie.getNumberOfSlices()),typeof ie.getProperties=="function"){let Be;if(ie.volumeIds&&ie.volumeIds.size>0){const Qe=Array.from(ie.volumeIds)[0];Be=ie.getProperties(Qe)}else Be=ie.getProperties();if(Be&&Be.voiRange){const{lower:Qe,upper:et}=Be.voiRange;W=((et+Qe)/2).toFixed(0),q=(et-Qe).toFixed(0),Li.current[z]===null&&(Li.current[z]={lower:Qe,upper:et})}}if(typeof ie.getSlicePlaneCoordinates=="function"){const Be=ie.getSlicePlaneCoordinates();Be&&typeof Be.position=="number"&&(J=Be.position.toFixed(2)+" mm")}const Fe=(we=Z[z])==null?void 0:we[0];if(Fe){const Be=ut("generalSeriesModule",Fe),Qe=ut("imagePlaneModule",Fe),et=ut("imagePixelModule",Fe);R=(Be==null?void 0:Be.modality)||"",A=String(((Me=ie.viewportProperties)==null?void 0:Me.orientation)||"").toUpperCase(),et!=null&&et.rows&&(et!=null&&et.columns)&&($=`${et.columns} x ${et.rows}`);const yt=[Qe==null?void 0:Qe.columnPixelSpacing,Qe==null?void 0:Qe.rowPixelSpacing,Qe==null?void 0:Qe.sliceThickness].filter(It=>It!=null&&It!=="");yt.length>0&&(ee=yt.join(" x "))}if(typeof ie.getCamera=="function"){const Be=ie.getCamera();Be!=null&&Be.focalPoint&&Array.isArray(Be.focalPoint)&&(he=Be.focalPoint.map(Qe=>Qe.toFixed(1)).join(", "))}}ds(Fe=>{const Be=[...Fe];return Be[z]={index:N+1,total:k,windowCenter:W,windowWidth:q,slicePosition:J,modality:R,orientation:A,resolution:$,spacing:ee,focalPoint:he,frameIndex:ve,totalFrames:Ce},Be})},[vn,Z]);ot.useEffect(()=>{Bc(z=>{let ie=!1;const N=[...z];for(let k=0;k{var In;const W=await Ai(ie.map(j0));if(W.length===0)return;await _n(W,{force:!0});const q=await Tr(W),J=((In=q[0])==null?void 0:In.imageIds)||W;let R=-1,A=-1;ge(lt=>(R=lt.findIndex(Rt=>Rt.imageIds.length===W.length&&Rt.imageIds.every((tn,rr)=>tn===W[rr])),R!==-1?lt:(A=lt.length,[...lt,{imageIds:W,name:N,seriesGroups:q}])));const $=R!==-1?R:A,ee=Hi(k);if(ee==="center"){Kt("displayset");try{Co(lt=>{const Rt=[...lt];return Rt[z]="stack",Rt}),oe(lt=>{const Rt=[...lt];return Rt[z]=J,Rt}),Oe(lt=>{const Rt=[...lt];return Rt[z]=$,Rt}),$e(lt=>{const Rt=[...lt];return Rt[z]=q,Rt}),de(lt=>{const Rt=[...lt];return Rt[z]=0,Rt}),Ie(z),await _n(J)}finally{Kt(null)}return}const he=ht.rows,ve=ht.cols,Ce=Math.floor(z/ve),we=z%ve,Me=ee==="top"||ee==="bottom"?he+1:he,Fe=ee==="left"||ee==="right"?ve+1:ve;if(Me>3||Fe>3||Me*Fe>L){Kt("displayset");try{Co(lt=>{const Rt=[...lt];return Rt[z]="stack",Rt}),oe(lt=>{const Rt=[...lt];return Rt[z]=W,Rt}),Oe(lt=>{const Rt=[...lt];return Rt[z]=$,Rt}),Ie(z),await _n(W)}finally{Kt(null)}return}const Be=ee==="top"?Ce:ee==="bottom"?Ce+1:Ce,Qe=ee==="left"?we:ee==="right"?we+1:we,et=Be*Fe+Qe,yt=Array(L).fill([]),It=Array(L).fill("stack"),Tt=Array(L).fill(0),Mt=Array(L).fill(null).map(()=>[]),Ot=Array(L).fill(0);for(let lt=0;ltwe||ee==="left"?tn+1:tn),(ee==="top"||ee==="bottom")&&tn===we&&(rr=RtCe||ee==="top"?Rt+1:Rt);const nl=rr*Fe+si;yt[nl]=Z[lt]||[],It[nl]=vn[lt]||"stack",Tt[nl]=_e[lt]??0,Mt[nl]=Ge[lt]||[],Ot[nl]=le[lt]??0}yt[et]=J,It[et]="stack",Tt[et]=A,Mt[et]=q,Ot[et]=0,Kt("displayset");try{zs(),ri({rows:Me,cols:Fe}),oe(yt),Co(It),Oe(Tt),$e(Mt),de(Ot),Ie(et),await _n(J)}finally{Kt(null)}},qi=async(z,ie,N)=>{var Mt;const k=me[ie];if(!k)return;let W=k.imageIds||[];W=await Ai(W),await _n(W,{force:!0});const J=await Tr(W);ge(Ot=>{const In=[...Ot];return In[ie]?(In[ie]={...In[ie],seriesGroups:J,imageIds:W},In):Ot});const R=((Mt=J[0])==null?void 0:Mt.imageIds)||W,A=Hi(N);if(A==="center"){await dt(z,ie),Ie(z);return}const $=ht.rows,ee=ht.cols,he=Math.floor(z/ee),ve=z%ee,Ce=A==="top"||A==="bottom"?$+1:$,we=A==="left"||A==="right"?ee+1:ee;if(Ce>3||we>3||Ce*we>L){await dt(z,ie),Ie(z);return}const Me=Array(L).fill([]),Fe=Array(L).fill("stack"),Be=Array(L).fill(0),Qe=Array(L).fill(null).map(()=>[]),et=Array(L).fill(0),yt=A==="top"?he:A==="bottom"?he+1:he,It=A==="left"?ve:A==="right"?ve+1:ve,Tt=yt*we+It;for(let Ot=0;Ot<$*ee;Ot++){const In=Math.floor(Ot/ee),lt=Ot%ee;let Rt=In,tn=lt;(A==="left"||A==="right")&&In===he&&(ltve?tn=lt+1:tn=A==="left"?lt+1:lt),(A==="top"||A==="bottom")&<===ve&&(Inhe?Rt=In+1:Rt=A==="top"?In+1:In);const rr=Rt*we+tn;Me[rr]=Z[Ot]||[],Fe[rr]=vn[Ot]||"stack",Be[rr]=_e[Ot]??0,Qe[rr]=Ge[Ot]||[],et[rr]=le[Ot]??0}Me[Tt]=R,Fe[Tt]="stack",Be[Tt]=ie,Qe[Tt]=J||[],et[Tt]=0,Kt("displayset");try{zs(),ri({rows:Ce,cols:we}),oe(Me),Co(Fe),Oe(Be),$e(Qe),de(et),Ie(Tt),await _n(R)}finally{Kt(null)}};ot.useEffect(()=>{const z=async()=>{var q;if(console.log("setup"),!c.current){c.current=!0,await QR(),await d$(),vH();try{zd("external",J=>({promise:(async()=>{const A=J.replace(/^external:/,""),$=new Image;$.crossOrigin="anonymous",$.src=A,await new Promise((Fe,Be)=>{$.onload=()=>Fe(!0),$.onerror=Qe=>Be(Qe)});const ee=$.naturalWidth||$.width,he=$.naturalHeight||$.height,ve=document.createElement("canvas");ve.width=ee,ve.height=he;const Ce=ve.getContext("2d");if(!Ce)throw new Error("Unable to create canvas context");Ce.drawImage($,0,0,ee,he);const we=Ce.getImageData(0,0,ee,he);return{imageId:J,minPixelValue:0,maxPixelValue:255,slope:1,intercept:0,rows:he,columns:ee,height:he,width:ee,color:!0,rgba:!0,sizeInBytes:we.data.length,getPixelData:()=>we.data,getImageData:()=>we,getCanvas:()=>ve}})()}))}catch(J){console.warn("Failed to register external image loader",J)}}let N=V.current;if(!N){N=new jF(B),V.current=N;try{me&&me.length>0&&me.forEach((J,R)=>{const A=Array.isArray(J.imageIds)?J.imageIds:[],$=Math.floor(A.length/2),ee=A[$]||A[0]||null;ee&&!Re[R]&&!tt.current[R]&&hn(R,ee)})}catch{}}let k=kr(j);k||(k=fIe(j)),vn.slice(0,ht.rows*ht.cols).filter(J=>J==="volume").length,jc(k);for(let J=0;J{if($.offsetWidth>0&&$.offsetHeight>0){N.resize();const we=N.getViewport(A);we&&typeof we.resize=="function"&&we.resize(),we&&typeof we.render=="function"&&we.render()}});Ce.observe($),$._resizeObserver=Ce}if(vn[J]==="stack"){if(R&&R.length>0){const Ce=R[0];if(Ct(Ce))try{try{const Fe=$._externalPanZoom;Fe&&typeof Fe.cleanup=="function"&&Fe.cleanup()}catch{}$.innerHTML="";const we=document.createElement("img");we.style.width="100%",we.style.height="100%",we.style.objectFit="contain",we.style.display="block",we.src=Ce.replace(/^external:/,""),we.setAttribute("draggable","false"),$.appendChild(we);const Me=Ht($,we);$._externalPanZoom=Me,k.removeViewports(B,A)}catch(we){console.warn("Failed to render external image in viewport",we)}else try{he.setStack(R)}catch(we){console.warn("viewport.setStack failed",we)}}zt?k.removeViewports(B,A):k.addViewport(A,B)}else if(vn[J]==="volume"){k.addViewport(A,B);const Ce=`myVolumeId_${J}`;(await am(Ce,{imageIds:R})).load(),he.setVolumes([{volumeId:Ce}]),he.render(),$._overlayListener&&he.element.removeEventListener(Mp,$._overlayListener);const Me=()=>kn(J,he);he.element.addEventListener(Mp,Me),$._overlayListener=Me,kn(J,he);continue}if(he.render(),!F.current){wo.current[J]!==void 0&&typeof he.setImageIdIndex=="function"&&Wo(he.element,{imageIndex:wo.current[J]});const Ce=na.current[J];if(Ce&&typeof he.setProperties=="function"){const{voiRange:we,invert:Me,interpolationType:Fe,VOILUTFunction:Be,colormap:Qe}=Ce,et={};we&&we.lower!==void 0&&we.upper!==void 0&&(et.voiRange=we),Me!==void 0&&(et.invert=Me),Fe!==void 0&&(et.interpolationType=Fe),Be&&(et.VOILUTFunction=Be),Qe!=null&&(typeof Qe=="string"||typeof Qe=="object"&&!("actor"in Qe))&&(et.colormap=Qe),setTimeout(()=>{console.log("Restoring properties (timeout) for viewport",J,et),he.setProperties(et),he.render()},100)}}$._overlayListener&&he.element.removeEventListener(Mp,$._overlayListener);const ve=()=>kn(J,he);he.element.addEventListener(Mp,ve),$._overlayListener=ve,kn(J,he)}for(let J=0;J=2?(k.hasTool(dl.toolName)||k.addTool(dl.toolName),k.setToolEnabled(dl.toolName),k.setToolConfiguration(dl.toolName,{}),k.setToolActive(dl.toolName,{bindings:[{mouseButton:Ip.Primary}]})):k.hasTool(dl.toolName)&&k.setToolDisabled(dl.toolName)),Di()},ie=requestAnimationFrame(()=>{z()});return()=>{Br.current.forEach(N=>{N&&N._resizeObserver&&(N._resizeObserver.disconnect(),delete N._resizeObserver)}),cancelAnimationFrame(ie)}},[s,kn,ht,vn,Z]);const To=ot.useCallback(z=>{const ie=`CT_${z}`,k=V.current.getViewport(ie);k&&typeof k.resetCamera=="function"&&(k.resetCamera(),console.log("Restoring viewport properties for viewport",z),k.resetProperties(),k.render())},[]),Wc=ot.useCallback((z,ie,N)=>{const k=`CT_${z}`;try{const W=V.current;if(W){const q=W.getViewport(k);q&&typeof q.setProperties=="function"&&(console.log(`Applying preset to viewport ${z}: center=${ie}, width=${N}`),q.setProperties({voiRange:{lower:ie-N/2,upper:ie+N/2}}),q.render(),kn(z,q))}}catch{}},[kn]),ko=ot.useCallback((z,ie=!1)=>{const N=`CT_${z}`;try{const k=V.current,W=k==null?void 0:k.getViewport(N);if(!W)return!1;const q=typeof W.getImageIds=="function"?W.getImageIds():Z[z]||[],J=typeof W.getCurrentImageIdIndex=="function"?W.getCurrentImageIdIndex():0,R=q[J]||q[0],A=Li.current[z],$=R?ut("voiLutModule",R)||{}:{},ee=R?ut("imagePixelModule",R)||{}:{},he=R?ut("modalityLutModule",R)||{}:{},ve=Array.isArray($.windowCenter)?$.windowCenter[0]:$.windowCenter,Ce=Array.isArray($.windowWidth)?$.windowWidth[0]:$.windowWidth,we=Number(ee.smallestPixelValue??ee.smallestImagePixelValue),Me=Number(ee.largestPixelValue??ee.largestImagePixelValue),Fe=Number(he.rescaleSlope??1),Be=Number(he.rescaleIntercept??0);if(A)W.setProperties({voiRange:A});else if(Number.isFinite(Number(ve))&&Number.isFinite(Number(Ce))&&Number(Ce)>0){const Qe=Number(ve),et=Number(Ce);W.setProperties({voiRange:{lower:Qe-et/2,upper:Qe+et/2}})}else Number.isFinite(we)&&Number.isFinite(Me)&&Me>we?W.setProperties({voiRange:{lower:we*Fe+Be,upper:Me*Fe+Be}}):typeof W.resetProperties=="function"&&W.resetProperties();return ie&&typeof W.resetCamera=="function"&&W.resetCamera(),W.render(),kn(z,W),!0}catch(k){return console.warn("Failed to apply default window level",k),!1}},[kn,Z]),$c=ot.useCallback(z=>{const ie=`CT_${z}`;(async()=>{const N=V.current;if(!N)return;const k=N.getViewport(ie);if(!k)return;const W=typeof k.getImageIds=="function"?k.getImageIds():Z[z]||[],q=typeof k.getCurrentImageIdIndex=="function"?k.getCurrentImageIdIndex():0,J=W[q]||W[0];if(!J){ko(z);return}const R=ut("imagePixelModule",J)||{},A=ut("modalityLutModule",J)||{},$=ut("voiLutModule",J)||{},ee=Li.current[z];let he=Number(R.smallestPixelValue??R.smallestImagePixelValue),ve=Number(R.largestPixelValue??R.largestImagePixelValue),Ce=Number(A.rescaleSlope??1),we=Number(A.rescaleIntercept??0);if(!Number.isFinite(he)||!Number.isFinite(ve)||ve<=he)try{const Be=await ks(J);he=Number(Be==null?void 0:Be.minPixelValue),ve=Number(Be==null?void 0:Be.maxPixelValue),Ce=Number((Be==null?void 0:Be.slope)??Ce),we=Number((Be==null?void 0:Be.intercept)??we)}catch{const Qe=W.filter(et=>!!et).slice(0,6);for(const et of Qe)try{const yt=await ks(et);if(he=Number(yt==null?void 0:yt.minPixelValue),ve=Number(yt==null?void 0:yt.maxPixelValue),Ce=Number((yt==null?void 0:yt.slope)??Ce),we=Number((yt==null?void 0:yt.intercept)??we),Number.isFinite(he)&&Number.isFinite(ve)&&ve>he)break}catch{}}const Me=Array.isArray($.windowCenter)?$.windowCenter[0]:$.windowCenter,Fe=Array.isArray($.windowWidth)?$.windowWidth[0]:$.windowWidth;if(Number.isFinite(he)&&Number.isFinite(ve)&&ve>he)k.setProperties({voiRange:{lower:he*Ce+we,upper:ve*Ce+we}});else if(Number.isFinite(Number(Me))&&Number.isFinite(Number(Fe))&&Number(Fe)>0){const Be=Number(Me),Qe=Number(Fe);k.setProperties({voiRange:{lower:Be-Qe/2,upper:Be+Qe/2}})}else if(ee)k.setProperties({voiRange:ee});else{ko(z);return}k.render(),kn(z,k)})().catch(()=>{ko(z)})},[ko,kn,Z]),lo=ot.useCallback((z,ie,N=!0,k=!0)=>{if(N&&(so.current[z]=ie),ie.action==="reset"){ko(z,k);return}if(ie.action==="autolevel"){$c(z);return}const W=ie;Wc(z,W.center,W.width)},[ko,Wc,$c]);ot.useEffect(()=>{const z=()=>{const N=V.current;if(!N)return;const k=ht.rows*ht.cols;for(let W=0;Wwindow.clearTimeout(ie)},[lo,jt,ht,vn]),ot.useEffect(()=>{const z=ie=>{var R,A;const N=ie.target;if(N){const $=(R=N.tagName)==null?void 0:R.toLowerCase(),ee=N.getAttribute("contenteditable")==="true";if($==="input"||$==="textarea"||$==="select"||ee)return}if(ie.ctrlKey||ie.altKey||ie.metaKey||ye===null)return;const k=(A=jt[ye])==null?void 0:A.modality,W=pO(k);if(ie.key==="0"){const $=W.find(ee=>ee.action==="reset");$&&(lo(ye,$),ie.preventDefault());return}if(!/^[1-9]$/.test(ie.key))return;const q=Number(ie.key)-1,J=W.filter($=>$.action==="preset");q>=J.length||(lo(ye,J[q]),ie.preventDefault())};return window.addEventListener("keydown",z),()=>window.removeEventListener("keydown",z)},[ye,lo,jt]);const zc=ot.useCallback((z,ie)=>{const N=Ge[z]||[];if(N.length<=1)return;const k=Math.max(0,Math.min(N.length-1,ie)),W=N[k];if(!W||W.imageIds.length===0)return;const q=V.current,J=q==null?void 0:q.getViewport(`CT_${z}`);let R=0;if(J&&typeof J.getCurrentImageIdIndex=="function"){const $=(Z[z]||[]).length,ee=J.getCurrentImageIdIndex(),he=$>1?ee/($-1):0;R=Math.max(0,Math.min(W.imageIds.length-1,Math.round(he*Math.max(0,W.imageIds.length-1))))}de(A=>{const $=[...A];return $[z]=k,$}),oe(A=>{const $=[...A];return $[z]=W.imageIds,$}),_n(W.imageIds,{force:!0}),window.setTimeout(()=>{var $;const A=($=V.current)==null?void 0:$.getViewport(`CT_${z}`);!A||typeof A.setImageIdIndex!="function"||(Wo(A.element,{imageIndex:R}),A.render(),kn(z,A))},25)},[Ge,_n,kn,Z]);ot.useEffect(()=>{const z=[],ie=ht.rows*ht.cols;for(let N=0;N{var ve,Ce;const R=(ve=V.current)==null?void 0:ve.getViewport(`CT_${N}`);if(!R||typeof R.getCurrentImageIdIndex!="function"||typeof R.setImageIdIndex!="function")return;const $=(((Ce=R.getImageIds)==null?void 0:Ce.call(R))||k).length;if($<2)return;const he=(R.getCurrentImageIdIndex()+1)%$;Wo(R.element,{imageIndex:he}),R.render()},q);z.push(J)}return()=>{z.forEach(N=>window.clearInterval(N))}},[Te,be,ht,Z,vn]);const js=ot.useCallback(()=>{const z=a.current;z&&(document.fullscreenElement===z?document.exitFullscreen():z.requestFullscreen?z.requestFullscreen():z.webkitRequestFullscreen?z.webkitRequestFullscreen():z.msRequestFullscreen&&z.msRequestFullscreen())},[]);ot.useEffect(()=>{ds(Array(ht.rows*ht.cols).fill({index:0,total:0,windowCenter:"",windowWidth:"",slicePosition:"",modality:"",orientation:"",resolution:"",spacing:"",focalPoint:""})),Ua(Array(ht.rows*ht.cols).fill(!1)),ft(Array(L).fill(!1))},[ht]),ot.useEffect(()=>{Di()},[Ki,So,Xr,Di]),ot.useEffect(()=>{if(!Or.some(Boolean))return;const z=ie=>{const N=document.querySelector(".preset-menu");N&&!N.contains(ie.target)&&Ua(k=>k.map(()=>!1))};return document.addEventListener("mousedown",z),()=>document.removeEventListener("mousedown",z)},[Or]),ot.useEffect(()=>{if(!oo)return;const z=ie=>{const N=_.current;N&&!N.contains(ie.target)&&(ta(!1),M(!1))};return document.addEventListener("mousedown",z),()=>document.removeEventListener("mousedown",z)},[oo]),ot.useEffect(()=>{const z=ie=>{if(ie.button===3||ie.button===4)return ie.preventDefault(),!1};return window.addEventListener("mousedown",z,!0),window.addEventListener("mouseup",z,!0),window.addEventListener("auxclick",z,!0),()=>{window.removeEventListener("mousedown",z,!0),window.removeEventListener("mouseup",z,!0),window.removeEventListener("auxclick",z,!0)}},[]),ot.useEffect(()=>{const z=a.current;if(!z)return;const ie=N=>{N.preventDefault()};return z.addEventListener("contextmenu",ie),()=>{z.removeEventListener("contextmenu",ie)}},[]),ot.useEffect(()=>{if(!Fr)return;const z=kr(j);jc(z)},[ye,Fr]),ot.useEffect(()=>{Ii.current&&(Ii.current.setAttribute("webkitdirectory","true"),Ii.current.setAttribute("directory","true"))},[]),ot.useEffect(()=>(window.loadDicomStackFromWadouriList=async z=>{var q;if(!z||z.length===0)return;const ie=await Ai(z);await _n(ie,{force:!0});const N=await Tr(ie),k=((q=N[0])==null?void 0:q.imageIds)||ie;let W;try{const J=ie[0];if(J&&J.startsWith("wadouri:")){const R=lc(J),$=await(await fetch(R)).arrayBuffer();W=br.parseDicom(new Uint8Array($)).string("x0020000d")}}catch{}ge(J=>{const R=[...J,{imageIds:ie,studyInstanceUID:W,seriesGroups:N}];return oe(A=>{const $=[...A];return $[0]=k,$}),Oe(A=>{const $=[...A];return $[0]=R.length-1,$}),$e(A=>{const $=[...A];return $[0]=N,$}),de(A=>{const $=[...A];return $[0]=0,$}),_n(k),R})},()=>{window.loadDicomStackFromWadouriList=void 0}),[Tr,Ai,ge,_n,Oe,oe]),ot.useEffect(()=>{!ao||!Z.every(ie=>!ie||ie.length===0||ie.every(N=>!!ut("imagePlaneModule",N)))||oe(ie=>{let N=!1;const k=ie.map(W=>{if(!W||W.length===0)return W;const R=[...W.map(A=>({imageId:A,sliceLoc:(()=>{const $=ut("imagePlaneModule",A);return $&&$.sliceLocation!==void 0?Number($.sliceLocation):null})()}))].sort((A,$)=>A.sliceLoc!==null&&$.sliceLoc!==null?A.sliceLoc-$.sliceLoc:A.imageId.localeCompare($.imageId)).map(A=>A.imageId);return JSON.stringify(R)!==JSON.stringify(W)?(N=!0,R):W});return N&&dn(!0),k})},[ao,me]);function jc(z){if(!z)return;const ie=`CT_${ye}`;Fr?(z.setToolEnabled(Jd.toolName),z.setToolConfiguration(Jd.toolName,{sourceViewportId:ie})):z.setToolDisabled(Jd.toolName)}function $l(){var ie,N,k;const z=V.current;if(z)for(let W=0;W[])),de(Array(L).fill(0)),pe(Array(L).fill(!1)),ft(Array(L).fill(!1)),Co(Array(L).fill("stack")),Object.values(at.current).forEach(ie=>{if(typeof ie=="string"&&ie.startsWith("blob:"))try{URL.revokeObjectURL(ie)}catch{}}),at.current={},Je({}),tt.current={},dn(!1),Ie(0)}function zl(z,ie){var J,R;if(console.log("Truncating stack from",z,"to",ie),console.log($t),ht.rows!==1||ht.cols!==1||me.length!==1||!Z[0]||Z[0].length===0||$t)return alert("Truncation is only allowed when a single stack is loaded in a single viewport (and the order has not been modified in the viewer)."),!1;const N=me[0],k=N.imageIds;if(z<0||ie>=k.length||z>=ie)return alert("Invalid truncation bounds."),!1;const W=k.slice(z,ie+1);ge([{...N,imageIds:W}]),oe([W]),Oe([0]);const q=V.current;if(q){const A=q.getViewport("CT_0");A&&typeof A.setStack=="function"&&(A.setStack(W),(J=A.setImageIdIndex)==null||J.call(A,0),(R=A.render)==null||R.call(A))}return!0}function jl(z=0){const ie=V.current;if(!ie)return null;const N=ie.getViewport(`CT_${z}`);return!N||typeof N.getCurrentImageIdIndex!="function"?null:N.getCurrentImageIdIndex()}ot.useEffect(()=>{const z=t||"default";function ie(k,W){const q=V.current;if(!q)return;const J=q.getViewport(`CT_${k}`);if(!J||typeof J.getImageIds!="function")return;const A=J.getImageIds().map(he=>lc(he)),$=lc(W),ee=A.indexOf($);ee!==-1&&typeof J.setImageIdIndex=="function"&&(Wo(J.element,{imageIndex:ee}),kn(k,J))}window[`getViewport_${z}`]=k=>{const W=V.current;if(W)return W.getViewport(`CT_${k}`)},window[`getAllViewports_${z}`]=()=>{const k=V.current;return k?Array.from({length:L},(W,q)=>k.getViewport(`CT_${q}`)).filter(Boolean):[]},window[`jumpToSliceByImageId_${z}`]=ie,window[`resetViewer_${z}`]=$l,window[`clearViewer_${z}`]=Hc,window[`truncateStack_${z}`]=zl,window[`getCurrentStackPosition_${z}`]=jl,window[`loadAdditionalStack_${z}`]=async(k,W)=>{var $,ee;if(!Array.isArray(k)||k.length===0)return;const q=await Ai(k);await _n(q,{force:!0});const J=await Tr(q),R=(($=J[0])==null?void 0:$.imageIds)||q;let A=W;if(!A&&((ee=q[0])!=null&&ee.startsWith("wadouri:")))try{const he=lc(q[0]),Ce=await(await fetch(he)).arrayBuffer();A=br.parseDicom(new Uint8Array(Ce)).string("x0020000d")}catch{}ge(he=>[...he,{imageIds:q,studyInstanceUID:A,seriesGroups:J}]),oe(he=>{const ve=[...he],Ce=ve.findIndex(we=>!we||we.length===0);return Ce!==-1&&(ve[Ce]=R,$e(we=>{const Me=[...we];return Me[Ce]=J,Me}),de(we=>{const Me=[...we];return Me[Ce]=0,Me})),ve}),_n(R)},window[`loadExternalStack_${z}`]=async(k,W)=>{!Array.isArray(k)||k.length===0||await ia(ye??0,k,W||"Series","center")},window[`loadExternalStackNewViewport_${z}`]=async(k,W)=>{if(!Array.isArray(k)||k.length===0)return;await ia(ye??0,k,W||"Series","right")},window[`exportViewerState_${z}`]=()=>{var we;const k=ht.rows*ht.cols,W=vn.slice(0,k),q=_e.slice(0,k),J=me.map(Me=>({i:Me.imageIds,u:Me.studyInstanceUID,g:Me.seriesGroups}));console.log("Exporting viewer state with",k,"active viewports"),console.log("modes",W);const R=V.current,A=[],$=[],ee=[],he=[],ve=[];for(let Me=0;Me{try{F.current=!0;const W=typeof k=="string"?JSON.parse(k):k;if(W.grid&&ri(W.grid),W.modes&&Co(W.modes),W.stacks&&ge(W.stacks.map(A=>({imageIds:A.i,studyInstanceUID:A.u,seriesGroups:Array.isArray(A.g)?A.g:void 0}))),W.stackIdx&&W.stacks){const A=W.stackIdx.map($=>{var ee;return((ee=W.stacks[$])==null?void 0:ee.i)||[]});oe(A),Oe(W.stackIdx),$e(()=>{const $=Array(L).fill(null).map(()=>[]);for(let ee=0;eerr===Rt[si])){console.warn(`Viewport ${Mt}: importedImageIds do not match viewportImageIds`,{importedImageIds:Rt,viewportImageIds:tn}),ee=!1;break}}catch{ee=!1}}if(!ee&&J{R()},500);return}for(let Mt=0;Mt<$;Mt++){console.log("Setting stack/volume for viewport",Mt);const Ot=A.getViewport(`CT_${Mt}`);if(!Ot)continue;const In=(Be=W.stackIdx)==null?void 0:Be[Mt],lt=(Qe=W.stacks)==null?void 0:Qe[In],Rt=(lt==null?void 0:lt.i)||[];if(Rt.length)if(console.log("mode",(et=W.modes)==null?void 0:et[Mt]),((yt=W.modes)==null?void 0:yt[Mt])==="volume"){try{const tn=`myVolumeId_${Mt}`;(await am(tn,{imageIds:Rt})).load(),Ot.setVolumes([{volumeId:tn}]),Ot.render()}catch(tn){console.warn("Failed to create/load volume for viewport",Mt,tn)}if(W.orientations&&W.orientations[Mt]&&typeof Ot.setOrientation=="function")try{Ot.setOrientation(W.orientations[Mt]),Ot.render()}catch{}W.volumeSliceIndices&&setTimeout(()=>{try{Wo(Ot.element,{imageIndex:W.volumeSliceIndices[Mt]})}catch{}},100)}else{try{Ot.setStack&&(Ot.setStack(Rt),Ot.render())}catch(tn){console.warn("Failed to set stack for viewport",Mt,tn)}if(W.stackPos&&typeof W.stackPos[Mt]=="number"&&typeof Ot.setImageIdIndex=="function")try{Dn&&Wo?Wo(Ot.element,{imageIndex:W.stackPos[Mt]}):Ot.setImageIdIndex(W.stackPos[Mt])}catch{}}}const he=1500;console.log(`Waiting ${he}ms before applying properties/camera to viewports`),await new Promise(Mt=>setTimeout(Mt,he));for(let Mt=0;Mt<$;Mt++){console.log("Applying props/camera for viewport",Mt);const Ot=A.getViewport(`CT_${Mt}`);if(!Ot)continue;const In=(It=W.stackIdx)==null?void 0:It[Mt],lt=(Tt=W.stacks)==null?void 0:Tt[In];if(((lt==null?void 0:lt.i)||[]).length){if(W.props&&W.props[Mt]&&typeof Ot.setProperties=="function"){console.log("Restoring properties for viewport",Mt,W.props[Mt]);const tn={...W.props[Mt]};if(tn.colormap!==void 0&&tn.colormap!==null){const rr=tn.colormap;if(typeof rr!="string")if(typeof rr=="object"){const si={};typeof rr.name=="string"&&(si.name=rr.name),rr.opacity!==void 0&&typeof rr.opacity=="number"&&(si.opacity=rr.opacity),Object.keys(si).length===0?delete tn.colormap:tn.colormap=si}else delete tn.colormap}try{Ot.setProperties(tn),Ot.render()}catch(rr){console.warn("viewport.setProperties failed, retrying without colormap",rr);try{const si={...tn};delete si.colormap,Ot.setProperties(si),Ot.render()}catch(si){console.error("Retrying viewport.setProperties without colormap also failed",si)}}}if(W.cam&&W.cam[Mt]&&typeof Ot.setCamera=="function")try{Ot.setCamera(W.cam[Mt]),Ot.render()}catch{}}}F.current=!1}setTimeout(()=>{R()},100)}catch(W){F.current=!1,alert("Failed to import viewer state: "+W)}},window[`exportAnnotations_${z}`]=()=>{try{let k=wr.getAllAnnotations();if(console.log("Exporting annotations:",k),Array.isArray(k)){const W=[Hf.toolName,_g.toolName,Kf.toolName,ku.toolName,p0.toolName,jf.toolName,Nl.toolName,Vu.toolName,Cg.toolName];k=k.filter(q=>W.includes(q.metadata.toolName))}else return"{}";return JSON.stringify(k,null,2)}catch(k){return alert("Failed to export annotations: "+k),"{}"}},window.__pendingImportAnnotations=window.__pendingImportAnnotations||{};const N=k=>{try{const W=window.__pendingImportAnnotations&&window.__pendingImportAnnotations[k];if(!W||!W.length)return;const q=wr;if(!q||typeof q.addAnnotation!="function")return;for(;(window.__pendingImportAnnotations[k]||[]).length;){const J=(window.__pendingImportAnnotations[k]||[]).shift();J&&Array.isArray(J)&&J.forEach(R=>{try{q.addAnnotation(R,R.annotationUID)}catch(A){console.error("Failed to add queued annotation",A,R)}})}V.current&&V.current.render()}catch(W){console.error("Error flushing pending annotations:",W)}};return window[`importAnnotations_${z}`]=k=>{try{const W=typeof k=="string"?JSON.parse(k):k,q=wr;if(!q||typeof q.addAnnotation!="function"){window.__pendingImportAnnotations[z]=window.__pendingImportAnnotations[z]||[],window.__pendingImportAnnotations[z].push(W),console.warn("importAnnotations: annotation state not ready, queued import",z),setTimeout(()=>N(z),500);return}if(q.removeAllAnnotations)try{q.removeAllAnnotations()}catch(J){console.warn("removeAllAnnotations failed",J)}Array.isArray(W)&&W.forEach(J=>{try{q.addAnnotation(J,J.annotationUID)}catch(R){console.error("Failed to add annotation",R,J)}}),V.current&&V.current.render()}catch(W){console.error("Failed to import annotations:",W,{apiKey:z,cornerstoneTools:!!Aj,renderingEngine:!!V.current});try{alert("Failed to import annotations: "+W)}catch{}}try{N(z)}catch{}},window[`importLegacyAnnotations_${z}`]=k=>{wr.removeAllAnnotations&&wr.removeAllAnnotations();let W;try{W=typeof k=="string"?JSON.parse(k):k}catch{alert("Invalid legacy annotation JSON");return}const q={ArrowAnnotate:"ArrowAnnotate"};Object.entries(W).forEach(([J,R])=>{console.log("Importing legacy annotations for imageId:",J),Object.entries(R).forEach(([A,$])=>{const ee=q[A]||A;$.data&&Array.isArray($.data)&&$.data.forEach(he=>{const ve=hO(J,{x:he.handles.start.y,y:he.handles.start.x}),Ce=hO(J,{x:he.handles.end.y,y:he.handles.end.x});console.log("Importing legacy annotation:"),console.log(" Image ID:",J),console.log(" Start World:",ve),console.log(" End World:",Ce);const we=ut("imagePlaneModule",J);console.log(o8);let Me=ut("frameOfReferenceUID",J);!Me&&we&&we.frameOfReferenceUID&&(Me=we.frameOfReferenceUID);const Fe=we!=null&&we.rowCosines&&(we!=null&&we.columnCosines)?[we.rowCosines[1]*we.columnCosines[2]-we.rowCosines[2]*we.columnCosines[1],we.rowCosines[2]*we.columnCosines[0]-we.rowCosines[0]*we.columnCosines[2],we.rowCosines[0]*we.columnCosines[1]-we.rowCosines[1]*we.columnCosines[0]]:void 0;Array.isArray(Fe)&&Fe.length,typeof he.rotation=="number"&&he.rotation;const Be={annotationUID:he.uuid,metadata:{toolName:ee,referencedImageId:J,FrameOfReferenceUID:Me,viewPlaneNormal:Fe},data:{handles:{points:[ve,Ce],textBox:he.handles.textBox},text:he.text||""},visibility:he.visible!==!1,active:he.active||!1};wr.addAnnotation(Be,Be.annotationUID)})})}),V.current&&V.current.render()},window[`importLegacyViewport_${z}`]=k=>{let W;try{W=typeof k=="string"?JSON.parse(k):k}catch{alert("Invalid legacy viewport JSON");return}const q=V.current;if(!q)return;const J=`CT_${ye??0}`,R=q.getViewport(J);if(!R)return;const A={};if(W.voi&&(A.voiRange={lower:W.voi.windowCenter-W.voi.windowWidth/2,upper:W.voi.windowCenter+W.voi.windowWidth/2}),typeof W.invert=="boolean"&&(A.invert=W.invert),typeof W.pixelReplication=="boolean"&&(A.interpolationType=W.pixelReplication?0:1),typeof W.hflip=="boolean"&&(A.hflip=W.hflip),typeof W.vflip=="boolean"&&(A.vflip=W.vflip),typeof R.setProperties=="function"&&R.setProperties(A),W.translation||W.scale){const $=R.getCamera?R.getCamera():{};W.translation&&($.translation={...$.translation,...W.translation}),W.scale&&($.parallelScale=200/W.scale),console.log("Applying legacy camera properties:",$),typeof R.setCamera=="function"&&R.setCamera($)}typeof W.rotation=="number"&&R.setRotation(W.rotation),R.render(),kn(ye??0,R)},()=>{window[`exportViewerState_${z}`]=void 0,window[`importViewerState_${z}`]=void 0,window[`exportAnnotations_${z}`]=void 0,window[`importAnnotations_${z}`]=void 0,window[`importLegacyAnnotations_${z}`]=void 0,window[`importLegacyViewport_${z}`]=void 0,window[`jumpToSliceByImageId_${z}`]=void 0,window[`resetViewer_${z}`]=void 0,window[`clearViewer_${z}`]=void 0,window[`truncateStack_${z}`]=void 0,window[`getCurrentStackPosition_${z}`]=void 0,window[`loadAdditionalStack_${z}`]=void 0,window[`loadExternalStack_${z}`]=void 0,window[`loadExternalStackNewViewport_${z}`]=void 0,window[`getViewport_${z}`]=void 0,window[`getAllViewports_${z}`]=void 0}},[ht,vn,_e,me,Z,ri,Co,Oe,ge,oe,ge,oe,_n]),ot.useEffect(()=>{const z=a.current;if(!z)return;function ie(N){if(console.log("Handling arrow key navigation",N.key),console.log("activeViewport",ye),ye===null)return;const k=V.current;if(!k)return;const W=k.getViewport(`CT_${ye}`);if(W){if(console.log(W),vn[ye]==="stack"){if(typeof W.getCurrentImageIdIndex!="function"||typeof W.setImageIdIndex!="function")return;const q=Z[ye];if(!q||q.length===0)return;N.key==="ArrowUp"||N.key==="ArrowRight"?(_c(W,{delta:-1}),N.preventDefault()):(N.key==="ArrowDown"||N.key==="ArrowLeft")&&(_c(W,{delta:1}),N.preventDefault())}vn[ye]==="volume"&&typeof W.getSliceIndex=="function"&&typeof W.getNumberOfSlices=="function"&&W.getNumberOfSlices()>1&&(N.key==="ArrowUp"||N.key==="ArrowRight"?(_c(W,{delta:-1}),N.preventDefault()):(N.key==="ArrowDown"||N.key==="ArrowLeft")&&(_c(W,{delta:1}),N.preventDefault()))}}return z.addEventListener("keydown",ie),()=>{z.removeEventListener("keydown",ie)}},[ye,vn,Z,kn]);const Hl=ye!==null?_e[ye]:0,Hs=me[Hl];Hs==null||Hs.studyInstanceUID;const[Kc,Xc]=ot.useState(()=>Array(L).fill(null)),Kl=ht.rows*ht.cols,Ks=[];for(let z=0;zBr.current[z]=W,style:{flex:1,border:ie?"1px solid #222":"none",background:"#000",minWidth:0,minHeight:0,position:"relative",overflow:"hidden",flexDirection:"column",gridRow:Math.floor(z/ht.cols)+1,gridColumn:z%ht.cols+1,height:"100%",boxShadow:ye===z?"0 0 0 4px #1976d2, 0 0 16px 4px #1976d2cc":void 0,zIndex:ye===z?10:1},onClick:()=>{Ie(z),ta(!1)},onDoubleClick:()=>To(z),onDragEnter:W=>{const q=W.dataTransfer.types,J=q.includes("text/stack-idx"),R=q.includes("text/dv3d-imageids");if(!J&&!R)return;W.preventDefault(),R&&O(!0);const A=Fa(W);K({viewportIdx:z,zone:A})},onDragOver:W=>{const q=W.dataTransfer.types,J=q.includes("text/stack-idx"),R=q.includes("text/dv3d-imageids");if(!J&&!R)return;W.preventDefault();const A=Fa(W),$=Hi(A);K({viewportIdx:z,zone:A}),W.dataTransfer.dropEffect=$===A?"copy":"move"},onDragLeave:W=>{if((Y==null?void 0:Y.viewportIdx)!==z)return;const q=W.relatedTarget;q&&W.currentTarget.contains(q)||K(null)},onDrop:W=>{W.preventDefault();const q=W.dataTransfer.getData("text/dv3d-imageids");if(q){const A=W.dataTransfer.getData("text/dv3d-stack-name")||"Series";try{const $=JSON.parse(q),ee=Fa(W);ia(z,$,A,ee).catch(he=>{console.error("Failed to apply external drop:",he)})}catch($){console.error("Invalid text/dv3d-imageids payload:",$)}K(null),O(!1);return}const J=W.dataTransfer.getData("text/stack-idx"),R=parseInt(J,10);if(!isNaN(R)){const A=Fa(W);qi(z,R,A).catch($=>{console.error("Failed to apply dropped stack:",$)})}K(null),Ee(null),O(!1)},children:[(Pe!==null||H)&&N&&Ne.jsx("div",{style:{position:"absolute",inset:0,zIndex:19,pointerEvents:"none",background:"rgba(0,0,0,0.08)"},children:Ne.jsx("div",{style:{position:"absolute",left:k==="left"?0:k==="right"?"50%":"20%",top:k==="top"?0:k==="bottom"?"50%":"20%",width:k==="left"||k==="right"?"50%":"60%",height:k==="top"||k==="bottom"?"50%":"60%",border:"2px solid #90caf9",boxShadow:"0 0 0 9999px rgba(17, 29, 45, 0.22)",background:"rgba(25, 118, 210, 0.28)",borderRadius:6,display:"flex",alignItems:"center",justifyContent:"center",color:"#fff",fontSize:12,fontWeight:700,textTransform:"uppercase",letterSpacing:.4},children:k==="center"?"Load Here":`Split ${k}`})}),Ne.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:()=>{Co(W=>{const q=[...W];return q[z]=W[z]==="stack"?"volume":"stack",q})},children:vn[z]==="stack"?"Volume":"Stack"}),vn[z]==="volume"&&Ne.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:[Ne.jsx("button",{style:{background:"#444",color:"#fff",border:"none",borderRadius:"3px",padding:"2px 8px",cursor:"pointer",fontSize:"12px",marginRight:"2px"},onClick:()=>{const W=V.current,q=W==null?void 0:W.getViewport(`CT_${z}`);q&&q.setOrientation&&(q.setOrientation("axial"),q.render())},children:"Axial"}),Ne.jsx("button",{style:{background:"#444",color:"#fff",border:"none",borderRadius:"3px",padding:"2px 8px",cursor:"pointer",fontSize:"12px",marginRight:"2px"},onClick:()=>{const W=V.current,q=W==null?void 0:W.getViewport(`CT_${z}`);q&&q.setOrientation&&(q.setOrientation("sagittal"),q.render())},children:"Sagittal"}),Ne.jsx("button",{style:{background:"#444",color:"#fff",border:"none",borderRadius:"3px",padding:"2px 8px",cursor:"pointer",fontSize:"12px"},onClick:()=>{const W=V.current,q=W==null?void 0:W.getViewport(`CT_${z}`);q&&q.setOrientation&&(q.setOrientation("coronal"),q.render())},children:"Coronal"})]}),Ne.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:W=>{W.stopPropagation();const q=Br.current[z];document.fullscreenElement===q?document.exitFullscreen():q!=null&&q.requestFullscreen?q.requestFullscreen():q!=null&&q.webkitRequestFullscreen?q.webkitRequestFullscreen():q!=null&&q.msRequestFullscreen&&q.msRequestFullscreen()},onMouseEnter:()=>b(z),onMouseLeave:()=>b(null),children:[Ne.jsx("span",{style:{fontSize:"18px",lineHeight:1},children:"⛶"}),E===z&&Ne.jsx("span",{style:{marginLeft:6},children:document.fullscreenElement===Br.current[z]?"Exit Fullscreen":"Fullscreen"})]}),vn[z]==="stack"&&G&&(()=>{var Ce;const W=Z[z],J=(wr.getAllAnnotations()||[]).filter(we=>we.metadata&&we.metadata.referencedImageId&&W.includes(we.metadata.referencedImageId)&&we.metadata.toolName!==Xa.toolName);if(!J.length)return null;const R=V.current,A=R==null?void 0:R.getViewport(`CT_${z}`),$=((Ce=A==null?void 0:A.getCurrentImageIdIndex)==null?void 0:Ce.call(A))??0,ee=W[$],he=J.filter(we=>we.metadata.referencedImageId===ee),ve=Kc[z];return Ne.jsxs("div",{style:{position:"absolute",left:"50%",bottom:60,transform:"translateX(-50%)",zIndex:30,display:"flex",gap:4,pointerEvents:"auto",alignItems:"center"},children:[Ne.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 we=V.current,Me=we==null?void 0:we.getViewport(`CT_${z}`);if(!Me||typeof Me.getCurrentImageIdIndex!="function")return;const Fe=Me.getCurrentImageIdIndex(),Be=xO(Fe,W,J,-1);if(Be!==null&&typeof Me.setImageIdIndex=="function"){Wo(Me.element,{imageIndex:Be}),kn(z,Me);const Qe=W[Be],et=J.filter(yt=>yt.metadata.referencedImageId===Qe);Ni(z,et.length>0?et[0].annotationUID:null)}},children:Ne.jsx("span",{"aria-hidden":"true",children:"◀"})}),Ne.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 we=V.current,Me=we==null?void 0:we.getViewport(`CT_${z}`);if(!Me||typeof Me.getCurrentImageIdIndex!="function")return;const Fe=Me.getCurrentImageIdIndex(),Be=xO(Fe,W,J,1);if(Be!==null&&typeof Me.setImageIdIndex=="function"){Wo(Me.element,{imageIndex:Be}),kn(z,Me);const Qe=W[Be],et=J.filter(yt=>yt.metadata.referencedImageId===Qe);Ni(z,et.length>0?et[0].annotationUID:null)}},children:Ne.jsx("span",{"aria-hidden":"true",children:"▶"})}),he.length>0&&Ne.jsx("div",{style:{display:"flex",gap:2,alignItems:"center"},children:he.map(we=>Ne.jsxs("div",{style:{display:"flex",alignItems:"center",background:ve===we.annotationUID?"rgb(4, 225, 0)":"#444",color:ve===we.annotationUID?"#222":"#fff",borderRadius:"4px",padding:"2px 6px",marginRight:2,cursor:"pointer",border:ve===we.annotationUID?"2px solid #1976d2":"none",fontWeight:ve===we.annotationUID?"bold":"normal"},onClick:()=>Ni(z,we.annotationUID),children:[Ne.jsxs("span",{style:{marginRight:4},title:we.metadata.toolName||"Annotation",children:[ve===we.annotationUID?"★ ":"",Ne.jsx("span",{style:{fontSize:14,lineHeight:1},children:cIe(we.metadata.toolName)})]}),Ne.jsx("button",{style:{background:"transparent",color:"#f44336",border:"1px solid #f44336",borderRadius:3,width:16,height:16,fontSize:10,lineHeight:1,cursor:"pointer",marginLeft:4,display:"flex",alignItems:"center",justifyContent:"center",opacity:.95,padding:0},title:"Delete this annotation","aria-label":"Delete annotation",onClick:Me=>{Me.stopPropagation(),Xi(z,we.annotationUID,he)},children:Ne.jsx("span",{"aria-hidden":"true",children:"✖"})})]},we.annotationUID))})]})})(),Ne.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:vn[z]==="stack"?Ne.jsxs(Ne.Fragment,{children:[Ne.jsxs("div",{children:["Image: ",(Xs=jt[z])==null?void 0:Xs.index," / ",(qc=jt[z])==null?void 0:qc.total,(qs=jt[z])!=null&&qs.frameIndex&&((Ys=jt[z])!=null&&Ys.totalFrames)?Ne.jsxs(Ne.Fragment,{children:["   [Frame: ",(Js=jt[z])==null?void 0:Js.frameIndex," / ",(ms=jt[z])==null?void 0:ms.totalFrames,"]"]}):null]}),Ne.jsxs("div",{children:["WC: ",(Yc=jt[z])==null?void 0:Yc.windowCenter,"   WW: ",(Jc=jt[z])==null?void 0:Jc.windowWidth]}),ne&&Ne.jsxs(Ne.Fragment,{children:[Ne.jsxs("div",{children:["Ori: ",((Zs=jt[z])==null?void 0:Zs.orientation)||"N/A"]}),((Qs=jt[z])==null?void 0:Qs.resolution)&&Ne.jsxs("div",{children:["Res: ",(ec=jt[z])==null?void 0:ec.resolution]}),((Zc=jt[z])==null?void 0:Zc.spacing)&&Ne.jsxs("div",{children:["Spacing: ",(Qc=jt[z])==null?void 0:Qc.spacing]}),((el=jt[z])==null?void 0:el.focalPoint)&&Ne.jsxs("div",{children:["Pos: ",(vs=jt[z])==null?void 0:vs.focalPoint]})]})]}):Ne.jsxs("div",{children:["Slice: ",(tl=jt[z])==null?void 0:tl.index," / ",(Vo=jt[z])==null?void 0:Vo.total,((tc=jt[z])==null?void 0:tc.slicePosition)&&Ne.jsxs("span",{children:["   (",(ki=jt[z])==null?void 0:ki.slicePosition,")"]}),Ne.jsx("br",{}),"WC: ",(nc=jt[z])==null?void 0:nc.windowCenter,"   WW: ",(oa=jt[z])==null?void 0:oa.windowWidth,ne&&Ne.jsxs(Ne.Fragment,{children:[Ne.jsx("br",{}),"Ori: ",((ys=jt[z])==null?void 0:ys.orientation)||"N/A",((rc=jt[z])==null?void 0:rc.resolution)&&Ne.jsxs(Ne.Fragment,{children:[Ne.jsx("br",{}),"Res: ",(Wa=jt[z])==null?void 0:Wa.resolution]}),((ic=jt[z])==null?void 0:ic.spacing)&&Ne.jsxs(Ne.Fragment,{children:[Ne.jsx("br",{}),"Spacing: ",(se=jt[z])==null?void 0:se.spacing]}),((ce=jt[z])==null?void 0:ce.focalPoint)&&Ne.jsxs(Ne.Fragment,{children:[Ne.jsx("br",{}),"Pos: ",(Se=jt[z])==null?void 0:Se.focalPoint]})]})]})}),Ne.jsxs("div",{style:{position:"absolute",right:8,bottom:8,zIndex:110,pointerEvents:"auto",display:"flex",alignItems:"flex-end",gap:6},children:[Ne.jsx("button",{style:{background:fe[z]?"rgba(30,120,200,0.95)":"rgba(0,0,0,0.7)",color:"#fff",border:"1px solid rgba(255,255,255,0.2)",borderRadius:"4px",fontSize:"12px",fontWeight:700,padding:"6px 9px",cursor:"pointer",minHeight:30},title:fe[z]?"Hide cine controls":"Show cine controls",onClick:W=>{W.stopPropagation(),ft(q=>{const J=[...q],R=!J[z];return J[z]=R,R||pe(A=>{const $=[...A];return $[z]=!1,$}),J})},children:"Cine"}),Ne.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:Or[z]?"0 2px 8px rgba(0,0,0,0.3)":void 0,pointerEvents:"auto"},onClick:W=>W.stopPropagation(),children:[Ne.jsxs("div",{style:{padding:"6px 12px",fontWeight:"bold",userSelect:"none"},onClick:W=>{W.stopPropagation(),Ua(q=>{const J=[...q];return J[z]=!J[z],J})},children:["Presets (",((We=jt[z])==null?void 0:We.modality)||"Unknown",")",Ne.jsx("span",{style:{float:"right",fontWeight:"normal"},children:Or[z]?"▲":"▼"})]}),Or[z]&&Ne.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:111,pointerEvents:"auto"},onClick:W=>W.stopPropagation(),children:(()=>{var J;const W=pO((J=jt[z])==null?void 0:J.modality);let q=0;return W.map(R=>{let A="";return R.action==="reset"?A="0":R.action==="preset"&&(q+=1,A=String(q)),Ne.jsxs("button",{title:A?`Shortcut: ${A}`:void 0,style:{display:"block",width:"100%",margin:"2px 0",background:R.action==="preset"?"#333":"#444",color:"#fff",border:"none",borderRadius:"3px",cursor:"pointer",padding:R.action==="preset"?"4px 0":"6px 0",fontSize:"13px",opacity:.9,fontWeight:R.action==="preset"?"normal":"600"},onClick:$=>{$.stopPropagation(),lo(z,R),Ua(ee=>{const he=[...ee];return he[z]=!1,he})},children:[R.name,A?` (${A})`:""]},R.name)})})()})]})]}),vn[z]==="stack"&&(fe[z]||(Ge[z]||[]).length>1||((Xe=jt[z])==null?void 0:Xe.frameIndex)&&((rt=jt[z])==null?void 0:rt.totalFrames))&&Ne.jsxs("div",{style:{position:"absolute",left:"50%",bottom:8,transform:"translateX(-50%)",zIndex:36,background:"rgba(15,15,15,0.82)",border:"1px solid rgba(255,255,255,0.18)",borderRadius:8,padding:"6px 10px",display:"flex",alignItems:"center",gap:8,pointerEvents:"auto",minWidth:200,maxWidth:"72%"},onClick:W=>W.stopPropagation(),children:[fe[z]&&((it=jt[z])==null?void 0:it.total)>1&&Ne.jsxs(Ne.Fragment,{children:[Ne.jsx("button",{style:{background:be[z]?"#d32f2f":"#2e7d32",color:"#fff",border:"none",borderRadius:4,fontSize:12,padding:"4px 8px",cursor:"pointer"},title:be[z]?"Pause cine":"Play cine",onClick:()=>{pe(W=>{const q=[...W];return q[z]=!q[z],q})},children:be[z]?"Pause":"Play"}),Ne.jsxs("label",{style:{color:"#ddd",fontSize:11,display:"flex",alignItems:"center",gap:4},children:["FPS",Ne.jsx("input",{type:"range",min:1,max:30,step:1,value:Math.max(1,Math.min(30,Math.round(Te[z]||12))),onChange:W=>{const q=Number(W.target.value);Ye(J=>{const R=[...J];return R[z]=q,R})}}),Ne.jsx("span",{style:{minWidth:22,textAlign:"right"},children:Math.round(Te[z]||12)})]})]}),((Ze=jt[z])==null?void 0:Ze.frameIndex)&&((st=jt[z])==null?void 0:st.totalFrames)&&((xt=jt[z])==null?void 0:xt.totalFrames)>1&&Ne.jsxs(Ne.Fragment,{children:[Ne.jsx("span",{style:{color:"#fff",fontSize:12,whiteSpace:"nowrap"},children:"Frame"}),Ne.jsx("input",{type:"range",min:1,max:((Ut=jt[z])==null?void 0:Ut.totalFrames)||1,step:1,value:Math.max(1,Math.min(((Jt=jt[z])==null?void 0:Jt.totalFrames)||1,((Xt=jt[z])==null?void 0:Xt.frameIndex)||1)),onChange:W=>{var A;const q=Number(W.target.value),R=(Z[z]||[]).findIndex($=>{const ee=$.match(/&frame=(\d+)/);return ee&&parseInt(ee[1],10)===q});if(R>=0){const $=(A=V.current)==null?void 0:A.getViewport(`CT_${z}`);$&&typeof Wo=="function"&&Wo($.element,{imageIndex:R})}},style:{width:100}}),Ne.jsxs("span",{style:{color:"#e0e0e0",fontSize:11,minWidth:50,textAlign:"right"},children:[(re=jt[z])==null?void 0:re.frameIndex," / ",(te=jt[z])==null?void 0:te.totalFrames]})]}),(Ge[z]||[]).length>1&&Ne.jsxs(Ne.Fragment,{children:[Ne.jsx("span",{style:{color:"#fff",fontSize:12,whiteSpace:"nowrap"},children:"Series"}),Ne.jsx("input",{type:"range",min:0,max:Math.max(0,(Ge[z]||[]).length-1),step:1,value:Math.max(0,Math.min((Ge[z]||[]).length-1,le[z]||0)),onChange:W=>{zc(z,Number(W.target.value))},style:{width:140}}),Ne.jsx("span",{style:{color:"#e0e0e0",fontSize:11,maxWidth:180,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:((Ae=(xe=Ge[z])==null?void 0:xe[le[z]||0])==null?void 0:Ae.label)||"",children:((ct=(He=Ge[z])==null?void 0:He[le[z]||0])==null?void 0:ct.label)||"Series"})]})]}),vn[z]==="stack"&&Z[z]&&Ne.jsx("div",{style:{position:"absolute",top:"10%",right:8,width:"14px",height:"80%",maxHeight:"100%",minHeight:0,zIndex:35,display:Z[z].length>0?"flex":"none",alignItems:"flex-start",justifyContent:"center",pointerEvents:"auto",flexDirection:"column",padding:0},children:(()=>{const W=Z[z]||[],q=W.length;if(q===0)return null;const J=V.current,R=J==null?void 0:J.getViewport(`CT_${z}`),A=R&&typeof R.getCurrentImageIdIndex=="function"?R.getCurrentImageIdIndex():-1,$=new Set(No[z]||[]),ee=W.map(Me=>Me.startsWith("external:")?!0:!!ut("imagePlaneModule",Me)||!!ut("generalSeriesModule",Me)),he=ee.reduce((Me,Fe)=>Me+(Fe?1:0),0),ve=W.reduce((Me,Fe,Be)=>Me+($.has(Be)?1:0),0),Ce=Math.min(q,180),we=Array.from({length:Ce},()=>({loaded:!1,viewed:!1,current:!1}));for(let Me=0;Me{var Tt;const Be=Me.currentTarget.getBoundingClientRect(),Qe=Math.min(Be.height,Math.max(0,Me.clientY-Be.top)),et=Be.height>0?Qe/Be.height:0,yt=Math.min(q-1,Math.max(0,Math.round(et*(q-1)))),It=(Tt=V.current)==null?void 0:Tt.getViewport(`CT_${z}`);It&&typeof It.setImageIdIndex=="function"&&vn[z]==="stack"&&(Wo(It.element,{imageIndex:yt}),kn(z,It))},children:[we.map((Me,Fe)=>{let Be="#3f3f3f";return Me.loaded&&(Be="#2e7d32"),Me.viewed&&(Be="#1565c0"),Me.current&&(Be="#fbc02d"),Ne.jsx("div",{style:{width:"100%",height:`${100/Ce}%`,minHeight:1,background:Be,opacity:Me.loaded||Me.viewed||Me.current?.95:.45,borderBottom:Fe=0&&q>Ce&&Ne.jsx("div",{style:{position:"absolute",left:0,right:0,top:`${A/Math.max(1,q-1)*100}%`,height:2,background:"#ffeb3b",boxShadow:"0 0 4px #ffeb3b",transform:"translateY(-1px)",pointerEvents:"none"}})]})})()}),vn[z]==="volume"&&(()=>{const W=V.current,q=W==null?void 0:W.getViewport(`CT_${z}`);let J=0,R=0;return q&&typeof q.getNumberOfSlices=="function"&&typeof q.getSliceIndex=="function"&&(J=q.getNumberOfSlices(),R=q.getSliceIndex()),J>1?Ne.jsx("div",{style:{position:"absolute",top:"10%",right:8,width:"12px",height:"80%",maxHeight:"100%",minHeight:0,zIndex:30,display:"flex",alignItems:"flex-start",justifyContent:"center",pointerEvents:"auto",flexDirection:"column",padding:0},children:Ne.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",cursor:"pointer"},onClick:A=>{const ee=A.currentTarget.getBoundingClientRect(),he=A.clientY-ee.top,ve=Math.floor(he/ee.height*J),Ce=V.current,we=Ce==null?void 0:Ce.getViewport(`CT_${z}`);we&&(Wo(we.element,{imageIndex:ve}),we.render(),kn(z,we))},children:Array.from({length:J}).map((A,$)=>{const ee=$===R;return Ne.jsx("div",{style:{width:"100%",height:`${100/J}%`,minHeight:ee?1:0,background:ee?"linear-gradient(to right, #ffeb3b 60%, #ff9800 100%)":"#444",opacity:ee?.95:.4,transition:"background 0.3s, opacity 0.3s",borderBottom:$1||!Z[z]||Z[z].length===0)&&Ne.jsx("div",{style:{position:"absolute",left:0,right:0,bottom:vn[z]==="stack"&&(fe[z]||(Ge[z]||[]).length>1)?56:8,zIndex:20,display:"flex",alignItems:"center",justifyContent:"center",pointerEvents:"auto",width:"100%",background:"none",borderRadius:"0",padding:0},children:Ne.jsxs("div",{style:{position:"relative"},children:[Ne.jsxs("button",{onClick:W=>{W.stopPropagation(),I(q=>q===z?null:z)},style:{padding:"6px 12px",background:"#333",color:"#fff",border:"1px solid #444",borderRadius:"4px",cursor:"pointer",pointerEvents:"auto",fontSize:13},title:"Choose stack",children:[(()=>{const W=Array.isArray(_e)?_e[z]:void 0,q=typeof W=="number"&&me[W]?me[W]:void 0,J=q&&Array.isArray(q.imageIds)?q.imageIds:[],R=q?q.name||(q.caseId?`Case: ${q.caseId}`:void 0):void 0;if(R)return R;if(J.length>0)return`Stack ${typeof W=="number"?W+1:"1"}`;const A=Z[z]||[];return A.length>0?`Stack (${A.length} images)`:"No stack"})(),Ne.jsx("span",{style:{marginLeft:8,opacity:.8},children:D===z?"▲":"▼"})]}),D===z&&Ne.jsx("div",{ref:W=>{W&&W.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:220,maxHeight:260,overflowY:"auto",overscrollBehavior:"contain",scrollbarWidth:"thin",padding:6},role:"listbox",onMouseDown:W=>W.stopPropagation(),onWheel:W=>{var J;try{W.stopPropagation()}catch{}try{W.preventDefault()}catch{}const q=W.currentTarget;if(q){const R=W.deltaY??((J=W.nativeEvent)==null?void 0:J.deltaY)??0;q.scrollTop+=R}},onBlur:W=>{const q=W.currentTarget;setTimeout(()=>{if(!q){I(null);return}q.contains(document.activeElement)||I(null)},0)},children:(()=>{const W={};return me.forEach((q,J)=>{const R=q.studyId||q.studyInstanceUID||"Unspecified";W[R]||(W[R]=[]),W[R].push({idx:J,stack:q})}),Object.keys(W).map(q=>Ne.jsxs("div",{style:{marginBottom:6},children:[Ne.jsx("div",{style:{fontSize:12,color:"#aaa",padding:"4px 8px",fontWeight:700},children:q==="Unspecified"?"Unspecified study":`Study: ${q}`}),Ne.jsx("div",{children:W[q].map(({idx:J,stack:R})=>{const A=Array.isArray(R.imageIds)?R.imageIds:[],$=R&&(R.name||R.caseId)?R.name||`Case: ${R.caseId}`:`Stack ${J+1}`,ee=A.length,he=!Array.isArray(A)||ee===0;return Ne.jsxs("button",{role:"option","aria-selected":!1,title:he?"Invalid stack descriptor":`${$} — ${ee} image${ee===1?"":"s"}${R!=null&&R.caseId?` — case ${R.caseId}`:""}`,style:{display:"flex",flexDirection:"column",alignItems:"flex-start",width:"100%",padding:"8px 12px",background:"transparent",color:"#fff",border:"none",textAlign:"left",cursor:he?"not-allowed":"pointer"},onClick:ve=>{if(ve.stopPropagation(),he){console.warn(`Attempted to select invalid stack at index ${J}`,R);return}dt(z,J).catch(Ce=>console.error("Failed to load stack:",Ce)),I(null)},children:[Ne.jsx("div",{style:{fontWeight:"600",fontSize:13},children:$}),Ne.jsxs("div",{style:{fontSize:12,opacity:.7},children:[ee," image",ee===1?"":"s",R!=null&&R.caseId?` • case ${R.caseId}`:""]})]},J)})})]},q))})()})]})})]},z))}return Ne.jsxs("div",{ref:a,style:{position:"relative",inset:0,width:"100%",height:"100%",boxSizing:"border-box",background:"#222",padding:"12px",overflow:"hidden"},children:[Nn&&Ne.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:Nn==="annotations"?"Loading Annotations...":Nn==="displayset"?"Loading Display Set...":"Loading Viewer State..."}),qn&&Ne.jsxs("div",{style:{position:"fixed",top:12,left:12,right:12,zIndex:1e4,background:"#fff3cd",color:"#856404",border:"1px solid #ffeeba",padding:"10px 14px",borderRadius:6,display:"flex",alignItems:"center",justifyContent:"space-between",gap:12},children:[Ne.jsxs("div",{style:{flex:1,fontSize:14},children:[Ne.jsx("strong",{children:"Graphics error:"})," The viewer encountered a WebGL/graphics error and may be unstable. Please reload the page.",pr?Ne.jsx("div",{style:{marginTop:6,fontSize:12,color:"#6b4f00"},children:pr}):null]}),Ne.jsxs("div",{style:{display:"flex",gap:8,alignItems:"center"},children:[Ne.jsx("button",{onClick:()=>window.location.reload(),style:{padding:"6px 10px"},children:"Reload"}),Ne.jsx("button",{onClick:()=>Cr(!1),style:{padding:"6px 10px"},children:"Dismiss"})]})]}),!h&&Ne.jsx("button",{onClick:()=>g(!0),"aria-pressed":!1,title:"Open stacks",style:{position:"absolute",right:8,top:76,zIndex:120,width:24,height:42,background:"#1976d2",color:"#fff",border:"none",borderRadius:5,cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",boxShadow:"0 2px 8px rgba(0,0,0,0.3)",pointerEvents:"auto"},children:"▶"}),Ne.jsxs("div",{children:[Ne.jsx("button",{style:{position:"absolute",top:"50%",transform:"translateY(-50%)",left:ai,zIndex:200,width:S,height:S,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:()=>Gs(z=>!z),"aria-label":"Open menu",children:"☰"}),xa&&Ne.jsx("div",{style:{position:"absolute",top:0,left:0,width:C,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:Ne.jsxs("div",{style:{flex:1,minHeight:0,overflowY:"auto",display:"flex",flexDirection:"column"},children:[Ne.jsxs("div",{style:{fontWeight:"bold",fontSize:18,marginBottom:24},children:["Menu",Ne.jsx("button",{style:{float:"right",background:"transparent",color:"#fff",border:"none",fontSize:"22px",cursor:"pointer"},onClick:()=>Gs(!1),"aria-label":"Close menu",children:"×"})]}),Ne.jsxs("div",{style:{display:"flex",gap:8,alignItems:"center",marginBottom:8},children:[Ne.jsxs("label",{style:{fontSize:13},children:[Ne.jsx("input",{type:"radio",name:"folderLoadMode",value:"add",checked:Ca==="add",onChange:()=>wi("add")})," Add (append)"]}),Ne.jsxs("label",{style:{fontSize:13},children:[Ne.jsx("input",{type:"radio",name:"folderLoadMode",value:"replace",checked:Ca==="replace",onChange:()=>wi("replace")})," Replace all"]})]}),Ne.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:$s,children:"Load DICOM Folder"}),Ne.jsx("input",{ref:Pr,type:"file",style:{display:"none"},multiple:!0,onChange:qr}),Ne.jsx("input",{ref:Ii,type:"file",style:{display:"none"},multiple:!0,onChange:qr,accept:".dcm,application/dicom"}),Ne.jsxs("div",{style:{marginBottom:"18px",display:"flex",alignItems:"center",gap:"8px"},children:[Ne.jsx("input",{type:"checkbox",id:"orderBySliceLocation",checked:ao,onChange:z=>ya(z.target.checked),style:{accentColor:"#666"}}),Ne.jsx("label",{htmlFor:"orderBySliceLocation",style:{fontSize:"15px",cursor:"pointer"},children:"Order by Slice Location"})]}),Ne.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:Gc,children:"Show DICOM Metadata"}),Ne.jsxs("button",{style:{padding:"10px 18px",background:zt?"#1976d2":"#333",color:"#fff",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",fontSize:"15px",marginBottom:"18px",width:"100%"},onClick:()=>Tn(z=>!z),children:[zt?"Disable":"Enable"," Cross Reference Lines"]}),Ne.jsxs("button",{style:{padding:"10px 18px",background:Fr?"#1976d2":"#333",color:"#fff",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",fontSize:"15px",marginBottom:"18px",width:"100%"},onClick:()=>qt(z=>!z),children:[Fr?"Disable":"Enable"," Reference Lines"]}),Ne.jsx("button",{onClick:yo,style:{margin:8,padding:8},children:"Sort All Viewports by Slice Location"}),Ne.jsx("button",{style:{padding:"10px 18px",background:ji?"#1976d2":"#333",color:"#fff",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",fontSize:"15px",marginBottom:"18px",width:"100%"},onClick:()=>xo(z=>!z),children:ji?"Disable Alt Key for Reference Cursors (Shift always works)":"Enable Alt Key for Reference Cursors (Shift always works)"}),Ne.jsxs("button",{style:{padding:"10px 18px",background:G?"#1976d2":"#333",color:"#fff",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",fontSize:"15px",marginBottom:"18px",width:"100%"},onClick:()=>X(z=>!z),children:[G?"Hide":"Show"," Annotation Navigation"]}),Ne.jsxs("button",{style:{padding:"10px 18px",background:ne?"#1976d2":"#333",color:"#fff",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",fontSize:"15px",marginBottom:"18px",width:"100%"},onClick:()=>ue(z=>!z),children:[ne?"Disable":"Enable"," Volume Diagnostics"]})]})})]}),Ne.jsxs("div",{ref:_,className:"grid-menu-hover-container",style:{position:"absolute",top:oo||P?8:-18,left:"50%",transform:"translateX(-50%)",zIndex:100,display:"flex",flexDirection:"row",alignItems:"flex-start",gap:8,width:"auto",pointerEvents:"auto",transition:"top 180ms ease",paddingTop:28,marginTop:-28,paddingBottom:12},onMouseEnter:()=>M(!0),onMouseLeave:()=>{oo||M(!1)},children:[Ne.jsxs("button",{style:{height:40,padding:"6px 12px 6px 10px",background:"#222",color:"#fff",border:"none",borderRadius:"0 0 4px 4px",fontWeight:"bold",cursor:"pointer",fontSize:"14px",boxShadow:"0 2px 8px rgba(0,0,0,0.2)",display:"inline-flex",alignItems:"center",gap:8},title:"Toggle viewer fullscreen",onFocus:()=>M(!0),onClick:()=>{M(!0),js()},children:[Ne.jsx("span",{style:{fontSize:16,lineHeight:1},children:"⛶"}),Ne.jsx("span",{children:"Fullscreen"})]}),Ne.jsxs("div",{style:{position:"relative",display:"flex",flexDirection:"column",alignItems:"stretch"},children:[Ne.jsxs("button",{className:"grid-menu-btn",style:{height:40,padding:"6px 14px 6px 10px",background:"#222",color:"#fff",border:"none",borderRadius:"0 0 4px 4px",fontWeight:"bold",cursor:"pointer",fontSize:"14px",boxShadow:"0 2px 8px rgba(0,0,0,0.2)",display:"inline-flex",alignItems:"center",gap:10,justifyContent:"space-between",minWidth:136},onFocus:()=>M(!0),onClick:()=>{M(!0),ta(z=>!z)},tabIndex:0,children:[Ne.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:8},children:[Ne.jsx("span",{style:{display:"grid",gridTemplateColumns:`repeat(${ht.cols}, 5px)`,gridTemplateRows:`repeat(${ht.rows}, 5px)`,gap:2,padding:1},children:Array.from({length:ht.rows*ht.cols}).map((z,ie)=>Ne.jsx("span",{style:{width:5,height:5,borderRadius:1,background:"#90caf9",display:"block"}},ie))}),Ne.jsxs("span",{children:[ht.rows,"x",ht.cols]})]}),Ne.jsx("span",{style:{opacity:.8},children:oo?"▲":"▼"})]}),oo&&Ne.jsx("div",{style:{position:"absolute",top:"calc(100% + 8px)",right:0,background:"#222",color:"#fff",borderRadius:"6px",boxShadow:"0 2px 12px rgba(0,0,0,0.4)",padding:"12px",display:"grid",gridTemplateColumns:"repeat(3, minmax(68px, 1fr))",gap:"8px",zIndex:200,pointerEvents:"auto"},onMouseDown:z=>z.stopPropagation(),children:wa.map(z=>Ne.jsxs("button",{style:{minWidth:"68px",height:"54px",background:z.rows===ht.rows&&z.cols===ht.cols?"#444":"#333",color:"#fff",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",fontSize:"13px",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:6},onClick:()=>{zs(),ri({rows:z.rows,cols:z.cols}),ta(!1),M(!1)},children:[Ne.jsx("span",{style:{display:"grid",gridTemplateColumns:`repeat(${z.cols}, 6px)`,gridTemplateRows:`repeat(${z.rows}, 6px)`,gap:2},children:Array.from({length:z.rows*z.cols}).map((ie,N)=>Ne.jsx("span",{style:{width:6,height:6,borderRadius:1,background:"#90caf9",display:"block"}},N))}),Ne.jsxs("span",{children:[z.rows,"x",z.cols]})]},`${z.rows}x${z.cols}`))})]})]}),Ne.jsxs("div",{style:{display:"flex",flexDirection:"row",height:"calc(100% - 48px)",gap:8},children:[Ne.jsxs("div",{style:{flex:1,display:"grid",margin:3,gridTemplateRows:`repeat(${ht.rows}, 1fr)`,gridTemplateColumns:`repeat(${ht.cols}, 1fr)`,gap:"5px",minHeight:0,minWidth:0,zIndex:1,position:"relative"},children:[Ks,Ne.jsx("button",{style:{position:"absolute",top:8,right:8,zIndex:2600,padding:"6px 12px",background:"#222",color:"#fff",border:"none",borderRadius:"4px",cursor:"pointer",opacity:.85,userSelect:"none"},onClick:()=>d(!0),children:"Settings"})]}),Ne.jsxs("div",{style:{width:h?p:0,transition:"width 220ms ease",display:"flex",flexDirection:"column",pointerEvents:h?"auto":"none",overflow:"hidden",position:"relative"},children:[h&&Ne.jsx("div",{onMouseDown:Ga,title:"Resize stacks panel",style:{position:"absolute",left:0,top:0,width:8,height:"100%",cursor:"col-resize",zIndex:2800,background:"linear-gradient(to right, rgba(100,181,246,0.25), rgba(100,181,246,0))"}}),Ne.jsx("div",{style:{pointerEvents:"auto",width:"100%",height:"100%"},children:Ne.jsxs("div",{style:{height:"100%",width:"100%",background:"#1f2428",color:"#fff",boxShadow:"0 2px 14px rgba(0,0,0,0.45)",borderLeft:"1px solid #2f3336",transform:"translateX(0)",transition:"transform 220ms ease",display:"flex",flexDirection:"column",overflow:"hidden"},children:[Ne.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"8px 12px",borderBottom:"1px solid #2b2f31"},children:[Ne.jsx("div",{style:{fontWeight:700},children:"Stacks"}),Ne.jsxs("div",{style:{fontSize:12,color:"#9bb4c8"},children:["Active VP: ",ye!==null?ye+1:"-"]}),Ne.jsx("div",{style:{display:"flex",gap:8,alignItems:"center"},children:Ne.jsx("button",{title:"Close",onClick:()=>{g(!1)},style:{background:"transparent",color:"#fff",border:"none",cursor:"pointer",fontSize:16},children:"×"})})]}),Ne.jsx("div",{style:{overflowY:"auto",padding:8,flex:1},children:me.length===0?Ne.jsx("div",{style:{color:"#999",padding:12},children:"No stacks available"}):Ne.jsx("div",{style:{display:"flex",flexDirection:"column",gap:6},children:me.map((z,ie)=>{const N=Array.isArray(z.imageIds)?z.imageIds:[],k=z.name||(z.caseId?`Case: ${z.caseId}`:`Stack ${ie+1}`),W=N.length,q=!Array.isArray(N)||W===0,J=_e.includes(ie),R=ye!==null&&_e[ye]===ie,A=Math.floor(N.length/2),$=N[A]||N[0],ee=$?lc($):null;return Ne.jsxs("div",{draggable:!q,onDragStart:he=>{q||(Ee(ie),K(null),he.dataTransfer.setData("text/stack-idx",String(ie)),he.dataTransfer.effectAllowed="copy")},onDragEnd:()=>{Ee(null),K(null)},onClick:()=>{if(q)return;dt(ye??0,ie)},style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"8px 10px",background:R?"#0d47a1":J?"#1976d2":"transparent",color:J?"#fff":"#ddd",border:R?"1px solid #64b5f6":"1px solid transparent",borderRadius:6,cursor:q?"not-allowed":"pointer"},children:[Ne.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[(()=>{const he=Re[ie],ve=he&&he!=="BROKEN"?he:null,Ce=ve||ee||null;return Ce?Ne.jsx("img",{"data-thumb-stack":ie,src:Ce,alt:k,style:{width:56,height:56,objectFit:"cover",borderRadius:4,background:"#111"},onError:()=>{if(console.warn("Thumbnail failed to load for stack",ie,Ce),!!ve){wt(ie,"BROKEN");return}tt.current[ie]||hn(ie,$)}}):Ne.jsx("div",{style:{width:56,height:56,borderRadius:4,background:"#111",display:"flex",alignItems:"center",justifyContent:"center",color:"#777"},children:"No Img"})})(),Ne.jsxs("div",{style:{display:"flex",flexDirection:"column"},children:[Ne.jsx("div",{style:{fontWeight:600},children:k}),Ne.jsxs("div",{style:{fontSize:12,opacity:.7},children:[W," img",W===1?"":"s"]})]})]}),Ne.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"flex-end",gap:4},children:[Ne.jsx("div",{style:{fontSize:12,opacity:.8},children:z.studyId||""}),R&&Ne.jsx("div",{style:{fontSize:11,color:"#bbdefb",fontWeight:700},children:"ACTIVE"})]})]},ie)})})})]})})]})]}),u&&Ne.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:()=>d(!1),children:Ne.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:z=>z.stopPropagation(),children:[Ne.jsx("div",{style:{fontSize:"20px",marginBottom:"16px"},children:"Settings"}),Ne.jsxs("div",{style:{marginBottom:"24px"},children:[Ne.jsx("div",{style:{marginBottom:12,fontWeight:"bold"},children:"Mouse Button Tool Bindings"}),wO.map(z=>Ne.jsxs("div",{style:{marginBottom:10},children:[Ne.jsxs("label",{style:{marginRight:8},children:[z.label," Button:"]}),Ne.jsx("select",{value:Ki[z.value],onChange:ie=>Fs(N=>({...N,[z.value]:ie.target.value})),style:{background:"#333",color:"#fff",border:"1px solid #444",borderRadius:"4px",padding:"4px 8px",fontSize:"14px"},children:q0.map(ie=>Ne.jsx("option",{value:ie.value,title:ie.label,children:`${ie.icon?`${ie.icon} `:""}${ie.label}`},ie.value))})]},z.value)),Ne.jsxs("div",{style:{margin:"12px 0"},children:[Ne.jsxs("button",{style:{background:"#333",color:"#fff",border:"none",borderRadius:"4px",padding:"4px 12px",cursor:"pointer",fontSize:"14px",marginBottom:"8px"},onClick:()=>Rn(z=>!z),children:[Sr?"Hide":"Show"," Advanced Mouse Bindings"]}),Sr&&Ne.jsx("div",{style:{marginTop:8},children:H2.slice(3).map(z=>Ne.jsxs("div",{style:{marginBottom:10},children:[Ne.jsxs("label",{style:{marginRight:8},children:[z.label,":"]}),Ne.jsxs("select",{value:Ki[z.value]||"",onChange:ie=>Fs(N=>({...N,[z.value]:ie.target.value})),style:{background:"#333",color:"#fff",border:"1px solid #444",borderRadius:"4px",padding:"4px 8px",fontSize:"14px"},children:[Ne.jsx("option",{value:"",children:"(None)"}),q0.map(ie=>Ne.jsx("option",{value:ie.value,title:ie.label,children:`${ie.icon?`${ie.icon} `:""}${ie.label}`},ie.value))]})]},z.value))})]}),Ne.jsx("div",{style:{margin:"18px 0 8px 0",fontWeight:"bold"},children:"Ctrl + Mouse Button Tool Bindings"}),wO.map(z=>Ne.jsxs("div",{style:{marginBottom:10},children:[Ne.jsxs("label",{style:{marginRight:8},children:[z.label," + Ctrl:"]}),Ne.jsxs("select",{value:So[z.value]||"",onChange:ie=>Us(N=>({...N,[z.value]:ie.target.value})),style:{background:"#333",color:"#fff",border:"1px solid #444",borderRadius:"4px",padding:"4px 8px",fontSize:"14px"},children:[Ne.jsx("option",{value:"",children:"(None)"}),q0.map(ie=>Ne.jsx("option",{value:ie.value,title:ie.label,children:`${ie.icon?`${ie.icon} `:""}${ie.label}`},ie.value))]})]},z.value+"_ctrl")),Ne.jsxs("div",{style:{margin:"12px 0"},children:[Ne.jsxs("button",{style:{background:"#333",color:"#fff",border:"none",borderRadius:"4px",padding:"4px 12px",cursor:"pointer",fontSize:"14px",marginBottom:"8px"},onClick:()=>mr(z=>!z),children:[yi?"Hide":"Show"," Advanced Ctrl + Mouse Bindings"]}),yi&&Ne.jsx("div",{style:{marginTop:8},children:H2.slice(3).map(z=>Ne.jsxs("div",{style:{marginBottom:10},children:[Ne.jsxs("label",{style:{marginRight:8},children:[z.label," + Ctrl:"]}),Ne.jsxs("select",{value:So[z.value]||"",onChange:ie=>Us(N=>({...N,[z.value]:ie.target.value})),style:{background:"#333",color:"#fff",border:"1px solid #444",borderRadius:"4px",padding:"4px 8px",fontSize:"14px"},children:[Ne.jsx("option",{value:"",children:"(None)"}),q0.map(ie=>Ne.jsx("option",{value:ie.value,title:ie.label,children:`${ie.icon?`${ie.icon} `:""}${ie.label}`},ie.value))]})]},z.value+"_ctrl"))})]})]}),Ne.jsx("button",{style:{position:"absolute",top:12,right:12,background:"transparent",color:"#fff",border:"none",fontSize:"20px",cursor:"pointer"},onClick:()=>d(!1),"aria-label":"Close",children:"×"})]})}),co&&Ne.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:()=>ra(!1),children:Ne.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:z=>z.stopPropagation(),children:[Ne.jsx("div",{style:{fontSize:"20px",marginBottom:"16px"},children:"DICOM Metadata"}),ps,Ne.jsx("button",{style:{position:"absolute",top:12,right:12,background:"transparent",color:"#fff",border:"none",fontSize:"20px",cursor:"pointer"},onClick:()=>ra(!1),"aria-label":"Close",children:"×"})]})})]})}function fIe(t){console.log("Setting up tools...",t),Ui(Nf),Ui(wg),Ui(g0),Ui(vu),Ui(xg),Ui(Hf),Ui(Vu),Ui(Kf),Ui(ku),Ui(p0),Ui(jf),Ui(Nl),Ui(Cg),Ui(Xa),Ui(dl),Ui(Jd),Ui(_g);let e=kr(t);return e||(e=wB(t),e.addTool(wg.toolName),e.addTool(Nf.toolName),e.addTool(vu.toolName),e.addTool(g0.toolName,{loop:!1}),e.addTool(xg.toolName),e.addTool(Hf.toolName),e.addTool(_g.toolName,{getTextCallback:()=>""}),e.addTool(Kf.toolName),e.addTool(Vu.toolName,{statsCalculator:()=>null}),e.addTool(ku.toolName,{calculateStats:!1,getTextCallback:()=>""}),e.addTool(p0.toolName,{getTextCallback:()=>""}),e.addTool(jf.toolName,{calculateStats:!1}),e.addTool(Nl.toolName,{}),e.addTool(Cg.toolName,{}),e.addTool(Jd.toolName),e.addTool(Xa.toolName)),e}function xO(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 rS=new WeakMap,hIe=t=>{const e=t.trim();return!e||e.startsWith("external:")||e.startsWith("wadors:")?e:e.startsWith("wadouri:")?`wadouri:${e.slice(8).replace(/^:+/,"")}`:`wadouri:${e.replace(/^:+/,"")}`},Nm=t=>t.map(hIe),CO=t=>t?{imageIds:Nm(t)}:{imageIds:[]},gIe=t=>{if(!t)return[];if(Array.isArray(t)&&t.length>0&&typeof t[0]=="string")return[CO(t)];if(!Array.isArray(t))return[];const e=[];return t.forEach((r,n)=>{if(r&&typeof r=="object"&&Array.isArray(r.stacks)){const i=r.caseId||r.caseUID||r.case||void 0,o=r.studyId||r.studyUID||r.studyInstanceUID||void 0;r.stacks.forEach((a,s)=>{let c=[];if(Array.isArray(a)?c=a:Array.isArray(a.imageIds)?c=a.imageIds:Array.isArray(a.i)&&(c=a.i),!Array.isArray(c)||c.length===0||!c.every(l=>typeof l=="string")){console.warn(`data-named-stacks: skipping invalid nested stack at parsed[${n}].stacks[${s}]`,a);return}e.push({imageIds:Nm(c),name:a.name||a.label||void 0,caseId:i,studyId:a.studyId||o})});return}if(r&&typeof r=="object"&&(Array.isArray(r.imageIds)||Array.isArray(r.i))){const i=Array.isArray(r.imageIds)?r.imageIds:r.i;if(!Array.isArray(i)||i.length===0||!i.every(o=>typeof o=="string")){console.warn(`data-named-stacks: skipping invalid stack object at parsed[${n}]`,r);return}e.push({imageIds:Nm(i),name:r.name||r.label||void 0,caseId:r.caseId||r.caseUID||void 0,studyId:r.studyId||r.studyUID||r.studyInstanceUID||void 0});return}if(Array.isArray(r)&&r.length>0&&typeof r[0]=="string"){e.push(CO(r));return}console.warn(`data-named-stacks: unknown or invalid entry at parsed[${n}] — skipping`,r)}),e},pIe=t=>JSON.stringify({id:t.id||"",empty:t.getAttribute("data-empty")||"",namedStacks:t.getAttribute("data-named-stacks")||"",images:t.getAttribute("data-images")||"",autoCache:t.getAttribute("data-auto-cache-stack")||"",annotation:t.getAttribute("data-annotationjson")||"",viewerState:t.getAttribute("data-viewerstate")||""}),SO=(t,e)=>!(e!=null&&e.containerIds)||e.containerIds.length===0?!0:e.containerIds.includes(t.id||""),TO=(t,e,r)=>{const n=pIe(t),i=rS.get(t);if(i&&!(r!=null&&r.force)&&i.signature===n)return;i&&(i.root.unmount(),rS.delete(t));const o=kR(t);o.render(Ne.jsx(uIe,{container_id:t.id||"",imageStacks:e,autoCacheStack:t.getAttribute("data-auto-cache-stack")==="true"||t.getAttribute("data-auto-cache-stack")==="1",annotationJson:t.getAttribute("data-annotationjson")||void 0,viewerState:t.getAttribute("data-viewerstate")||void 0})),rS.set(t,{root:o,signature:n})};function wD(t){document.querySelectorAll(".dicom-viewer-test-root").forEach(n=>{if(!SO(n,t))return;n.id,TO(n,()=>dIe(),t)}),document.querySelectorAll(".dicom-viewer-root").forEach(n=>{if(!SO(n,t))return;let i;const o=n.getAttribute("data-empty")==="true",a=n.getAttribute("data-named-stacks"),s=n.getAttribute("data-images");if(o)i=()=>Promise.resolve([]);else if(a){let c;try{c=JSON.parse(a)}catch(f){console.error("Invalid data-named-stacks JSON:",f),c=[]}const l=gIe(c);i=()=>Promise.resolve(l)}else if(s){let c;try{c=JSON.parse(s)}catch(l){console.error("Invalid data-images JSON:",l),c=[]}Array.isArray(c)&&c.length>0&&typeof c[0]=="string"?i=()=>Promise.resolve([Nm(c)]):Array.isArray(c)?i=()=>Promise.resolve(c.map(l=>Array.isArray(l)?Nm(l):[])):i=()=>Promise.resolve([[]])}else i=()=>Promise.resolve([]);TO(n,i,t)})}wD();window.mountDicomViewers=wD;window.remountDicomViewer=t=>{wD({force:!0,containerIds:[t]})}; +`),De+=`} +`,je.push(De);var ct=os(Function,je).apply(null,Ke);return ct}function eo(A,N,I,M,V,H){_(N>0);var q=mi(N,I);V=qn(M,V),Xi([],[A],function(Y){Y=Y[0];var ue="constructor "+Y.name;if(Y.registeredClass.constructor_body===void 0&&(Y.registeredClass.constructor_body=[]),Y.registeredClass.constructor_body[N-1]!==void 0)throw new _t("Cannot register multiple constructors with identical number of parameters ("+(N-1)+") for class '"+Y.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return Y.registeredClass.constructor_body[N-1]=()=>{Br("Cannot construct "+Y.name+" due to unbound types",q)},Xi([],q,function(ge){return ge.splice(1,0,null),Y.registeredClass.constructor_body[N-1]=Pn(ue,ge,null,V,H),[]}),[]})}function Aa(A,N,I,M,V,H,q,Y){var ue=mi(I,M);N=Kn(N),H=qn(V,H),Xi([],[A],function(ge){ge=ge[0];var me=ge.name+"."+N;N.startsWith("@@")&&(N=Symbol[N.substring(2)]),Y&&ge.registeredClass.pureVirtualFunctions.push(N);function _e(){Br("Cannot call "+me+" due to unbound types",ue)}var De=ge.registeredClass.instancePrototype,Fe=De[N];return Fe===void 0||Fe.overloadTable===void 0&&Fe.className!==ge.name&&Fe.argCount===I-2?(_e.argCount=I-2,_e.className=ge.name,De[N]=_e):(Qi(De,N,me),De[N].overloadTable[I-2]=_e),Xi([],ue,function(je){var Ke=Pn(me,je,ge,H,q);return De[N].overloadTable===void 0?(Ke.argCount=I-2,De[N]=Ke):De[N].overloadTable[I-2]=Ke,[]}),[]})}var Na=[],Fi=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function As(A){A>4&&--Fi[A].refcount===0&&(Fi[A]=void 0,Na.push(A))}function da(){for(var A=0,N=5;N(A||ln("Cannot use deleted val. handle = "+A),Fi[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 N=Na.length?Na.pop():Fi.length;return Fi[N]={refcount:1,value:A},N}}}};function Mc(A,N){N=Kn(N),mr(A,{name:N,fromWireType:function(I){var M=ka.toValue(I);return As(I),M},toWireType:function(I,M){return ka.toHandle(M)},argPackAdvance:8,readValueFromPointer:kr,destructorFunction:null})}function as(A){if(A===null)return"null";var N=typeof A;return N==="object"||N==="array"||N==="function"?A.toString():""+A}function _l(A,N){switch(N){case 2:return function(I){return this.fromWireType(te[I>>2])};case 3:return function(I){return this.fromWireType(le[I>>3])};default:throw new TypeError("Unknown float type: "+A)}}function El(A,N,I){var M=Co(I);N=Kn(N),mr(A,{name:N,fromWireType:function(V){return V},toWireType:function(V,H){return H},argPackAdvance:8,readValueFromPointer:_l(N,M),destructorFunction:null})}function bl(A,N,I,M,V,H){var q=mi(N,I);A=Kn(A),V=qn(M,V),Fr(A,function(){Br("Cannot call "+A+" due to unbound types",q)},N-1),Xi([],q,function(Y){var ue=[Y[0],null].concat(Y.slice(1));return fa(A,Pn(A,ue,null,V,H),N-1),[]})}function Dl(A,N,I){switch(N){case 0:return I?function(V){return G[V]}:function(V){return j[V]};case 1:return I?function(V){return F[V>>1]}:function(V){return U[V>>1]};case 2:return I?function(V){return W[V>>2]}:function(V){return J[V>>2]};default:throw new TypeError("Unknown integer type: "+A)}}function Il(A,N,I,M,V){N=Kn(N);var H=Co(I),q=_e=>_e;if(M===0){var Y=32-8*I;q=_e=>_e<>>Y}var ue=N.includes("unsigned"),ge=(_e,De)=>{},me;ue?me=function(_e,De){return ge(De,this.name),De>>>0}:me=function(_e,De){return ge(De,this.name),De},mr(A,{name:N,fromWireType:q,toWireType:me,argPackAdvance:8,readValueFromPointer:Dl(N,H,M!==0),destructorFunction:null})}function Ns(A,N,I){var M=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],V=M[N];function H(q){q=q>>2;var Y=J,ue=Y[q],ge=Y[q+1];return new V(k,ge,ue)}I=Kn(I),mr(A,{name:I,fromWireType:H,argPackAdvance:8,readValueFromPointer:H},{ignoreDuplicateRegistrations:!0})}function Ol(A,N){N=Kn(N);var I=N==="std::string";mr(A,{name:N,fromWireType:function(M){var V=J[M>>2],H=M+4,q;if(I)for(var Y=H,ue=0;ue<=V;++ue){var ge=H+ue;if(ue==V||j[ge]==0){var me=ge-Y,_e=D(Y,me);q===void 0?q=_e:(q+="\0",q+=_e),Y=ge+1}}else{for(var De=new Array(V),ue=0;ue>2]=H,I&&q)L(V,ue,H+1);else if(q)for(var ge=0;ge255&&(Ce(ue),ln("String has UTF-16 code units that do not fit in 8 bits")),j[ue+ge]=me}else for(var ge=0;ge>1,V=M+N/2;!(M>=V)&&U[M];)++M;if(I=M<<1,I-A>32&&ks)return ks.decode(j.subarray(A,I));for(var H="",q=0;!(q>=N/2);++q){var Y=F[A+q*2>>1];if(Y==0)break;H+=String.fromCharCode(Y)}return H}function Vs(A,N,I){if(I===void 0&&(I=2147483647),I<2)return 0;I-=2;for(var M=N,V=I>1]=q,N+=2}return F[N>>1]=0,N-M}function Fs(A){return A.length*2}function Pc(A,N){for(var I=0,M="";!(I>=N/4);){var V=W[A+I*4>>2];if(V==0)break;if(++I,V>=65536){var H=V-65536;M+=String.fromCharCode(55296|H>>10,56320|H&1023)}else M+=String.fromCharCode(V)}return M}function ss(A,N,I){if(I===void 0&&(I=2147483647),I<4)return 0;for(var M=N,V=M+I-4,H=0;H=55296&&q<=57343){var Y=A.charCodeAt(++H);q=65536+((q&1023)<<10)|Y&1023}if(W[N>>2]=q,N+=4,N+4>V)break}return W[N>>2]=0,N-M}function Us(A){for(var N=0,I=0;I=55296&&M<=57343&&++I,N+=4}return N}function Bs(A,N,I){I=Kn(I);var M,V,H,q,Y;N===2?(M=Ml,V=Vs,q=Fs,H=()=>U,Y=1):N===4&&(M=Pc,V=ss,q=Us,H=()=>J,Y=2),mr(A,{name:I,fromWireType:function(ue){for(var ge=J[ue>>2],me=H(),_e,De=ue+4,Fe=0;Fe<=ge;++Fe){var je=ue+4+Fe*N;if(Fe==ge||me[je>>Y]==0){var Ke=je-De,tt=M(De,Ke);_e===void 0?_e=tt:(_e+="\0",_e+=tt),De=je+N}}return Ce(ue),_e},toWireType:function(ue,ge){typeof ge!="string"&&ln("Cannot pass non-string to C++ string type "+I);var me=q(ge),_e=se(4+me+N);return J[_e>>2]=me>>Y,V(ge,_e+4,me+N),ue!==null&&ue.push(Ce,_e),_e},argPackAdvance:8,readValueFromPointer:kr,destructorFunction:function(ue){Ce(ue)}})}function cs(A,N,I,M,V,H){On[A]={name:Kn(N),rawConstructor:qn(I,M),rawDestructor:qn(V,H),fields:[]}}function Rc(A,N,I,M,V,H,q,Y,ue,ge){On[A].fields.push({fieldName:Kn(N),getterReturnType:I,getter:qn(M,V),getterContext:H,setterArgumentType:q,setter:qn(Y,ue),setterContext:ge})}function Gs(A,N){N=Kn(N),mr(A,{isVoid:!0,name:N,argPackAdvance:0,fromWireType:function(){},toWireType:function(I,M){}})}function Lc(A){A>4&&(Fi[A].refcount+=1)}function Ws(A,N){var I=dt[A];return I===void 0&&ln(N+" has unknown type "+li(A)),I}function Ac(A,N){A=Ws(A,"_emval_take_value");var I=A.readValueFromPointer(N);return ka.toHandle(I)}function Nc(){Ve("")}function kc(A,N,I){j.copyWithin(A,N,N+I)}function Vc(){return 2147483648}function ls(A){try{return S.grow(A-k.byteLength+65535>>>16),ve(S.buffer),1}catch{}}function us(A){var N=j.length;A=A>>>0;var I=Vc();if(A>I)return!1;let M=(ue,ge)=>ue+(ge-ue%ge)%ge;for(var V=1;V<=4;V*=2){var H=N*(1+.2/V);H=Math.min(H,A+100663296);var q=Math.min(I,M(Math.max(A,H),65536)),Y=ls(q);if(Y)return!0}return!1}function bo(A){return 52}function Yo(A,N,I,M,V){return 70}var to=[null,[],[]];function zs(A,N){var I=to[A];N===0||N===10?((A===1?w:x)(b(I,0)),I.length=0):I.push(N)}function $s(A,N,I,M){for(var V=0,H=0;H>2],Y=J[N+4>>2];N+=8;for(var ue=0;ue>2]=V,0}function fs(A){return A}function js(A){var N=o["_"+A];return N}function Va(A,N){G.set(A,N)}function Hs(A,N,I,M,V){var H={string:je=>{var Ke=0;if(je!=null&&je!==0){var tt=(je.length<<2)+1;Ke=at(tt),L(je,Ke,tt)}return Ke},array:je=>{var Ke=at(je.length);return Va(je,Ke),Ke}};function q(je){return N==="string"?D(je):N==="boolean"?!!je:je}var Y=js(A),ue=[],ge=0;if(M)for(var me=0;me0||(be(),ie>0))return;function N(){z||(z=!0,o.calledRun=!0,!T&&($(),a(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),R()))}o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),N()},1)):N()}if(o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return re(),o.ready}})();t.exports=r})(C$);var jEe=C$.exports;const HEe=yl(jEe),KEe=new URL("/static/dv3d/openjphjs.wasm",import.meta.url),hp={codec:void 0,decoder:void 0,decodeConfig:{}};function qEe(t,e,r){const n={width:e,height:r};for(;t>0;)n.width=Math.ceil(n.width/2),n.height=Math.ceil(n.height/2),t--;return n}function XEe(t){if(hp.decodeConfig=t,hp.codec)return Promise.resolve();const e=HEe({locateFile:r=>r.endsWith(".wasm")?KEe.toString():r});return new Promise((r,n)=>{e.then(i=>{hp.codec=i,hp.decoder=new i.HTJ2KDecoder,r()},n)})}async function YEe(t,e){await XEe();const r=new hp.codec.HTJ2KDecoder,n=r.getEncodedBuffer(t.length);n.set(t);const i=e.decodeLevel||0;r.decodeSubResolution(i);const o=r.getFrameInfo();if(e.decodeLevel>0){const{width:E,height:b}=qEe(e.decodeLevel,o.width,o.height);o.width=E,o.height=b}const a=r.getDecodedBuffer();new Uint8Array(a.length).set(a);const c=`x: ${r.getImageOffset().x}, y: ${r.getImageOffset().y}`,l=r.getNumDecompositions(),f=r.getNumLayers(),u=["unknown","LRCP","RLCP","RPCL","PCRL","CPRL"][r.getProgressionOrder()+1],d=r.getIsReversible(),h=`${r.getBlockDimensions().width} x ${r.getBlockDimensions().height}`,g=`${r.getTileSize().width} x ${r.getTileSize().height}`,p=`${r.getTileOffset().x}, ${r.getTileOffset().y}`,v=`${a.length.toLocaleString()} bytes`,y=`${(a.length/n.length).toFixed(2)}:1`,m={columns:o.width,rows:o.height,bitsPerPixel:o.bitsPerSample,signed:o.isSigned,bytesPerPixel:e.bytesPerPixel,componentsPerPixel:o.componentCount};let w=JEe(o,a);const{buffer:x,byteOffset:C,byteLength:S}=w,T=x.slice(C,C+S);w=new w.constructor(T);const _={imageOffset:c,numDecompositions:l,numLayers:f,progessionOrder:u,reversible:d,blockDimensions:h,tileSize:g,tileOffset:p,decodedSize:v,compressionRatio:y};return{...e,pixelData:w,imageInfo:m,encodeOptions:_,..._,...m}}function JEe(t,e){return t.bitsPerSample>8?t.isSigned?new Int16Array(e.buffer,e.byteOffset,e.byteLength/2):new Uint16Array(e.buffer,e.byteOffset,e.byteLength/2):t.isSigned?new Int8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}function ZEe(t,e){const r=t.length,{rescaleSlope:n,rescaleIntercept:i,suvbw:o,doseGridScaling:a}=e;if(e.modality==="PT"&&typeof o=="number"&&!isNaN(o))for(let s=0;s>o;let a=t.pixelData;t.pixelDataLength=t.pixelData.length;const{min:s,max:c}=hx(t.pixelData),l=typeof e.allowFloatRendering<"u"?e.allowFloatRendering:!0;let f=tb(t.photometricInterpretation)&&((m=e.targetBuffer)==null?void 0:m.offset)===void 0;const d=((w=e.preScale)==null?void 0:w.enabled)&&Object.values(e.preScale.scalingParameters).some(C=>typeof C=="number"&&!Number.isInteger(C)),h=!e.preScale.enabled||!l&&d,g=(x=e.targetBuffer)==null?void 0:x.type;if(g&&e.preScale.enabled&&!h){const C=e.preScale.scalingParameters,S=FT(s,c,C);f=!R4e(S.min,S.max,Y7[g])}g&&!f?a=n8e(e,t,Y7,a):e.preScale.enabled&&!h?a=r8e(e,s,c,t):a=S$(s,c,t);let p=s,v=c;if(e.preScale.enabled&&!h){const C=e.preScale.scalingParameters;if(T$(C),t8e(C)){ZEe(a,C),t.preScale={...e.preScale,scaled:!0};const T=FT(s,c,C);p=T.min,v=T.max}}else h&&(t.preScale={enabled:!0,scaled:!1},p=s,v=c);t.pixelData=a,t.smallestPixelValue=p,t.largestPixelValue=v;const y=new Date().getTime();return t.decodeTimeInMS=y-r,t}function t8e(t){const{rescaleSlope:e,rescaleIntercept:r,modality:n,doseGridScaling:i,suvbw:o}=t;return typeof e=="number"&&typeof r=="number"||n==="RTDOSE"&&typeof i=="number"||n==="PT"&&typeof o=="number"}function n8e(t,e,r,n){const{arrayBuffer:i,type:o,offset:a=0,length:s,rows:c}=t.targetBuffer,l=r[o];if(!l)throw new Error(`target array ${o} is not supported, or doesn't exist.`);c&&c!=e.rows&&o8e(e,t.targetBuffer,l);const f=e.pixelDataLength,u=a,d=s??f-u,h=e.pixelData;if(d!==h.length)throw new Error(`target array for image does not have the same length (${d}) as the decoded image length (${h.length}).`);const g=i?new l(i,u,d):new l(d);return g.set(h,0),n=g,n}function r8e(t,e,r,n){const i=t.preScale.scalingParameters;T$(i);const o=FT(e,r,i);return S$(o.min,o.max,n)}function S$(t,e,r){const n=nb(t,e),i=new n(r.pixelData.length);return i.set(r.pixelData,0),i}function FT(t,e,r){const{rescaleSlope:n,rescaleIntercept:i,modality:o,doseGridScaling:a,suvbw:s}=r;return o==="PT"&&typeof s=="number"&&!isNaN(s)?{min:s*(t*n+i),max:s*(e*n+i)}:o==="RTDOSE"&&typeof a=="number"&&!isNaN(a)?{min:t*a,max:e*a}:typeof n=="number"&&typeof i=="number"?{min:n*t+i,max:n*e+i}:{min:t,max:e}}function T$(t){if(!t)throw new Error("options.preScale.scalingParameters must be defined if preScale.enabled is true, and scalingParameters cannot be derived from the metadata providers.")}function i8e(t,e,r){const{samplesPerPixel:n}=t,{rows:i,columns:o}=e,a=i*o*n,s=new r(a),c=s.byteLength/a;return{pixelData:s,rows:i,columns:o,frameInfo:{...t.frameInfo,rows:i,columns:o},imageInfo:{...t.imageInfo,rows:i,columns:o,bytesPerPixel:c}}}function o8e(t,e,r){const n=i8e(t,e,r),{scalingType:i="replicate"}=e;return QEe[i](t,n),Object.assign(t,n),t.pixelDataLength=t.pixelData.length,t}async function _$(t,e,r,n,i,o){const a=new Date().getTime();let s=null,c;switch(e){case"1.2.840.10008.1.2":case"1.2.840.10008.1.2.1":s=j7(t,r);break;case"1.2.840.10008.1.2.2":s=yEe(t,r);break;case"1.2.840.10008.1.2.1.99":s=j7(t,r);break;case"1.2.840.10008.1.2.5":s=wEe(t,r);break;case"1.2.840.10008.1.2.4.50":c={...t},s=DEe(r,c);break;case"1.2.840.10008.1.2.4.51":s=REe(t,r);break;case"1.2.840.10008.1.2.4.57":s=K7(t,r);break;case"1.2.840.10008.1.2.4.70":s=K7(t,r);break;case"1.2.840.10008.1.2.4.80":c={signed:t.pixelRepresentation===1,bytesPerPixel:t.bitsAllocated<=8?1:2,...t},s=q7(r,c);break;case"1.2.840.10008.1.2.4.81":c={signed:t.pixelRepresentation===1,bytesPerPixel:t.bitsAllocated<=8?1:2,...t},s=q7(r,c);break;case"1.2.840.10008.1.2.4.90":c={...t},s=X7(r,c);break;case"1.2.840.10008.1.2.4.91":c={...t},s=X7(r,c);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":c={...t},s=YEe(r,c);break;default:throw new Error(`no decoder for transfer syntax ${e}`)}if(!s)throw new Error("decodePromise not defined");const l=await s,f=e8e(l,i,a);return o==null||o(f),f}const a8e={decodeTask({imageFrame:t,transferSyntax:e,decodeConfig:r,options:n,pixelData:i,callbackFn:o}){return _$(t,e,i,r,n,o)}};N4(a8e);const Vl={constants:gEe,convertRGBColorByPixel:Lz,convertRGBColorByPlane:Az,convertYBRFullByPixel:Nz,convertYBRFullByPlane:kz,convertPALETTECOLOR:Vz,wadouri:V4e,wadors:cEe,init:m$,convertColorSpace:n$,createImage:gx,decodeJPEGBaseline8BitColor:r$,getImageFrame:i$,getPixelData:ab,getMinMax:hx,isColorImage:tb,isJPEGBaseline8BitColor:dEe,internal:Z_e,decodeImageFrame:_$};class $h extends Ef{}Eb($h,"toolName","NoLabelArrowAnnotate");function J7(t,e){const r=lt("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=Rz;window.cornerstone3d=Yhe;window.cornerstoneDICOMImageLoader=Vl;const{MouseBindings:Hg,KeyboardBindings:Z7}=gF,{IMAGE_RENDERED:Kg}=Xe,s8e=[{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}],Q7=t=>{const e=(t||"").toUpperCase(),r=[{name:"Reset to default",action:"reset"},{name:"Auto level",action:"autolevel"}];return e!=="CT"?r:[...r,...s8e.map(n=>({name:n.name,action:"preset",center:n.center,width:n.width}))]},y0=[{label:"Window/Level",value:Uh.toolName,icon:"🌓"},{label:"Pan",value:uf.toolName,icon:"✋"},{label:"Zoom",value:Jl.toolName,icon:"🔍"},{label:"Stack Scroll",value:Wd.toolName,icon:"📚"},{label:"Rotate",value:Bh.toolName,icon:"↺"},{label:"Length",value:_f.toolName,icon:"📏"},{label:"Probe",value:mu.toolName,icon:"🔎"},{label:"Arrow (No Label)",value:$h.toolName,icon:"➡️"},{label:"Arrow Annotate",value:Ef.toolName,icon:"✈️"},{label:"Rectangle ROI",value:pu.toolName,icon:"▭"},{label:"Ellipse ROI",value:zd.toolName,icon:"◯"},{label:"Freehand ROI",value:Tf.toolName,icon:"✏️"},{label:"Freehand Contour Segmentation",value:ml.toolName,icon:"🖊️"},{label:"Sculptor",value:Gh.toolName,icon:"🔧"},{label:"Reference Cursors",value:Wa.toolName,icon:"⦿"}],c8e=3,l8e=220;function u8e(t){if(!t)return"🔖";const e=y0.find(r=>r.value===t||r.label===t);return(e==null?void 0:e.icon)||"🔖"}function Js(t){return t?t.startsWith("wadouri:")?t.replace(/^wadouri:+/,"").replace(/^:+/,""):t:""}function UT(t){return/([?&])frame=\d+/i.test(t)}function eO(t,e){const r=Math.max(1,Math.floor(e));return UT(t)?t.replace(/([?&])frame=\d+/i,`$1frame=${r}`):`${t}&frame=${r}`}function tO(t){const e=t.match(/[?&]frame=(\d+)/i);if(!e)return null;const r=Number(e[1]);return Number.isFinite(r)&&r>0?Math.floor(r):null}function nO(t){return t?t.split(/\\|,/).map(e=>Number(e.trim())).filter(e=>Number.isFinite(e)):[]}function p0(t){return t.startsWith("wadouri:")||t.startsWith("external:")?t:`wadouri:${t}`}function s3(t){const e=new Set,r=[];for(const n of t)!n||e.has(n)||(e.add(n),r.push(n));return r}function f8e(t){try{const e=t.getContext("2d",{willReadFrequently:!0});if(!e)return!0;const r=t.width||160,n=t.height||160,o=e.getImageData(0,0,r,n).data;let a=255,s=0,c=0,l=0;for(let d=0;d0&&w>12&&(c+=1),a=Math.min(a,w),s=Math.max(s,w),l+=1}if(l===0)return!0;const f=c/l,u=s-a;return f>.015||u>8}catch{return!0}}const rO=[{label:"Left",value:"Primary"},{label:"Middle",value:"Auxiliary"},{label:"Right",value:"Secondary"}],sv=[{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 d8e({container_id:t,imageStacks:e,autoCacheStack:r,annotationJson:n,viewerState:i,...o}){var Fs,Pc,ss,Us,Bs,cs,Rc,Gs,Lc,Ws,Ac,Nc,kc,Vc,ls,us,bo,Yo,to,zs,$s,fs,js,Va,Hs,ae,se,Ce,Ue,Ye,Qe,et,Je,at,pt,Lt,Bt,$t,ne,ee,we,Ae,$e,st;const a=ot.useRef(null),s=ot.useRef(null),c=ot.useRef(!1),l="dv3d_mouseToolBindings",f="dv3d_ctrlMouseToolBindings",[u,d]=ot.useState(!1),[h,g]=ot.useState(!1),[p,v]=ot.useState(320),y=`dv3d_stackPanelWidth_${t||"default"}`,m=ot.useRef({resizing:!1,startX:0,startWidth:320}),w=240,x=720,C=220,S=40,T=14,_=ot.useRef(null),[E,b]=ot.useState(null),[D,O]=ot.useState(null),[L,P]=ot.useState(!1),k=9,G="renderingEngine_"+t,j="TOOL_GROUP_"+t,F=ot.useRef(null),U=ot.useRef(!1),[W,J]=ot.useState(!0),[te,le]=ot.useState(!1),[ve,pe]=ot.useState([]),[ye,Ie]=ot.useState(0),[Le,be]=ot.useState(null),[$,R]=ot.useState(!1),[X,K]=ot.useState(null),[Z,ie]=ot.useState(()=>Array(k).fill([])),oe=z=>{typeof z=="function"?ie(re=>{const A=z(re);return console.log("setViewportImageIds (fn):",A),A}):(console.log("setViewportImageIds:",z),ie(z))},[Te,Oe]=ot.useState(()=>Array(k).fill(0)),[Ve,Ge]=ot.useState(()=>Array(k).fill(null).map(()=>[])),[ce,fe]=ot.useState(()=>Array(k).fill(0)),[Se,he]=ot.useState(()=>Array(k).fill(!1)),[xe,qe]=ot.useState(()=>Array(k).fill(12)),[de,ht]=ot.useState(()=>Array(k).fill(!1)),vt=ot.useRef({}),gt=ot.useRef({}),[Me,Ze]=ot.useState({}),it=ot.useRef({}),rt=ot.useRef({}),ut=ot.useCallback((z,re)=>{Ze(A=>{const N=A[z];if(N&&N!==re&&N.startsWith("blob:"))try{URL.revokeObjectURL(N)}catch{}const I={...A,[z]:re};return it.current=I,I})},[]);ot.useEffect(()=>{it.current=Me},[Me]),ot.useEffect(()=>()=>{Object.values(it.current).forEach(z=>{if(typeof z=="string"&&z.startsWith("blob:"))try{URL.revokeObjectURL(z)}catch{}})},[]),ot.useEffect(()=>{try{const z=localStorage.getItem(y);if(z){const re=Number(z);Number.isNaN(re)||v(Math.max(w,Math.min(x,Math.round(re))))}}catch{}},[y]),ot.useEffect(()=>{try{localStorage.setItem(y,String(Math.round(p)))}catch{}},[y,p]);function Dt(z){if(!z)return null;try{if(z.tagName&&z.tagName.toLowerCase()==="canvas")return z}catch{}try{const re=z.querySelector&&z.querySelector("canvas");if(re)return re}catch{}try{const re=z.children||[];for(let A=0;AMath.min(Qt,Math.max(Tt,ft)),me=()=>{re.style.transform=`translate(${V}px, ${H}px) scale(${M})`};let _e=!0,De=!0;const Fe=ft=>{if(!De)return;ft.preventDefault();const Tt=re.getBoundingClientRect(),Qt=ft.clientX-Tt.left,lr=ft.clientY-Tt.top,Di=-ft.deltaY,Fc=1+(Di>0?.1:-.1)*Math.min(4,Math.abs(Di)/100),Nf=ge(M*Fc,.1,10);V=(V-Qt)*(Nf/M)+Qt,H=(H-lr)*(Nf/M)+lr,M=Nf,me()},je=ft=>{ft.button===0&&_e&&(q=!0,Y=ft.clientX,ue=ft.clientY,re.style.cursor="grabbing",ft.preventDefault())},Ke=ft=>{if(!q)return;const Tt=ft.clientX-Y,Qt=ft.clientY-ue;V+=Tt,H+=Qt,Y=ft.clientX,ue=ft.clientY,me()},tt=ft=>{q&&(q=!1,re.style.cursor="grab")},ct=ft=>{M=1,V=0,H=0,me()};let yt=0;const Zt=(ft,Tt)=>Math.hypot(Tt.clientX-ft.clientX,Tt.clientY-ft.clientY),Vt=ft=>{ft.touches.length===1?_e&&(q=!0,Y=ft.touches[0].clientX,ue=ft.touches[0].clientY):ft.touches.length===2&&(yt=Zt(ft.touches[0],ft.touches[1]))},Rt=ft=>{if(ft.touches.length===1&&q){const Tt=ft.touches[0].clientX-Y,Qt=ft.touches[0].clientY-ue;V+=Tt,H+=Qt,Y=ft.touches[0].clientX,ue=ft.touches[0].clientY,me()}else if(ft.touches.length===2&&De){const Tt=Zt(ft.touches[0],ft.touches[1]);if(yt>0){const Qt=Tt/yt,lr=re.getBoundingClientRect(),Di=(ft.touches[0].clientX+ft.touches[1].clientX)/2-lr.left,Fc=(ft.touches[0].clientY+ft.touches[1].clientY)/2-lr.top,Nf=ge(M*Qt,.1,10);V=(V-Di)*(Nf/M)+Di,H=(H-Fc)*(Nf/M)+Fc,M=Nf,me()}yt=Tt}ft.preventDefault()},Nt=ft=>{ft.touches.length===0&&(q=!1,yt=0)};return z.addEventListener("wheel",Fe,{passive:!1}),z.addEventListener("mousedown",je),window.addEventListener("mousemove",Ke),window.addEventListener("mouseup",tt),re.addEventListener("dblclick",ct),z.addEventListener("touchstart",Vt,{passive:!1}),z.addEventListener("touchmove",Rt,{passive:!1}),z.addEventListener("touchend",Nt),{cleanup:()=>{z.removeEventListener("wheel",Fe),z.removeEventListener("mousedown",je),window.removeEventListener("mousemove",Ke),window.removeEventListener("mouseup",tt),re.removeEventListener("dblclick",ct),z.removeEventListener("touchstart",Vt),z.removeEventListener("touchmove",Rt),z.removeEventListener("touchend",Nt),re.style.transform="",re.style.cursor="",re.style.willChange=""},setAllowPan:ft=>{_e=ft},setAllowZoom:ft=>{De=ft}}}const[qt,In]=ot.useState(!1),[Vn,zt]=ot.useState(null),[On,qi]=ot.useState(!1),[kr,We]=ot.useState(null);ot.useEffect(()=>{const z=A=>{try{const N=A&&A.message?String(A.message):"";(N.includes("releaseGraphicsResources")||N.includes("openGLTexture")||N.includes("getDefaultActor")||N.includes("setColormapGPU")||N.includes(`can't access property "actor"`)||N.toLowerCase().includes("webgl")||N.toLowerCase().includes("colormap"))&&(console.error("Detected graphics/rendering error:",A),We(N||null),qi(!0))}catch{}},re=A=>{try{const N=A&&A.reason||"",I=typeof N=="string"?N:N&&N.message?N.message:String(N);(I.includes("releaseGraphicsResources")||I.includes("openGLTexture")||I.includes("getDefaultActor")||I.includes("setColormapGPU")||I.includes(`can't access property "actor"`)||I.toLowerCase().includes("webgl")||I.toLowerCase().includes("colormap"))&&(console.error("Detected graphics/rendering rejection:",A),We(I||null),qi(!0))}catch{}};return window.addEventListener("error",z),window.addEventListener("unhandledrejection",re),()=>{window.removeEventListener("error",z),window.removeEventListener("unhandledrejection",re)}},[]),ot.useEffect(()=>{let z=!1;if(n||i){zt(n?"annotations":"viewerState");const re=setTimeout(()=>{if(z)return;const A=t||"default";if(n)try{const N=window[`importAnnotations_${A}`]||window.importAnnotations;typeof N=="function"&&N(n)}catch(N){console.error("Failed to import annotations from prop:",N)}if(i)try{const N=window[`importViewerState_${A}`]||window.importViewerState;typeof N=="function"&&N(i)}catch(N){console.error("Failed to import viewer state from prop:",N)}zt(null)},2e3);return()=>{z=!0,clearTimeout(re),zt(null)}}},[n,i,t]),ot.useEffect(()=>{let z=!0;return e().then(async re=>{var I;if(!z)return;const A=Array.isArray(re)?re:[],N=await Promise.all(A.map(async M=>{if(Array.isArray(M)){const ue=await gi(M),ge=await Kn(ue);return{imageIds:ue,seriesGroups:ge}}const V=Array.isArray(M.imageIds)?M.imageIds:Array.isArray(M.i)?M.i:[],H=await gi(V);let q;if(Array.isArray(M.series)){const ge=(await Promise.all(M.series.map(async(me,_e)=>{const De=Array.isArray(me==null?void 0:me.imageIds)?me.imageIds:Array.isArray(me==null?void 0:me.i)?me.i:[],Fe=await gi(De),Ke=(typeof(me==null?void 0:me.name)=="string"?me.name:"").trim()||`Series ${_e+1}`;return{key:String((me==null?void 0:me.seriesInstanceUID)||(me==null?void 0:me.seriesId)||`SERIES_${_e}`),label:Ke,imageIds:Fe,seriesInstanceUID:me==null?void 0:me.seriesInstanceUID,bValue:Number.isFinite(Number(me==null?void 0:me.bValue))?Number(me.bValue):null}}))).filter(me=>me.imageIds.length>0);ge.length>0&&(q=ge)}(!q||q.length===0)&&(q=await Kn(H));let Y=M.studyInstanceUID;if(!Y&&H.length>0)try{const ue=H[0];if(typeof fetch=="function"&&typeof window.dicomParser<"u"&&ue.startsWith("wadouri:")){const ge=Js(ue),_e=await(await fetch(ge)).arrayBuffer();Y=window.dicomParser.parseDicom(new Uint8Array(_e)).string("x0020000d")}}catch{}return{imageIds:H,seriesGroups:q,studyInstanceUID:Y,studyId:M.studyId,name:M.name,caseId:M.caseId}}));if(pe(N),N[0]){const M=N[0];let V=M.seriesGroups||[];V.length===0&&(await Jn(M.imageIds,{force:!0}),V=await Kn(M.imageIds),N[0]={...M,seriesGroups:V},pe([...N]));const H=((I=V[0])==null?void 0:I.imageIds)||M.imageIds;await Jn(H),oe(Array(k).fill(H||[])),Ge(Array(k).fill(null).map(()=>V)),fe(Array(k).fill(0))}else oe(Array(k).fill([])),Ge(Array(k).fill(null).map(()=>[])),fe(Array(k).fill(0))}).catch(re=>{console.error("Failed to load imageStacks:",re),pe([]),oe(Array(k).fill([]))}),()=>{z=!1}},[]);const dt=async(z,re)=>{var H,q,Y,ue,ge;const A=ve[re];if(!A)return;let N=A.imageIds;console.log("[handleLoadStack] Starting with imageIds:",N.length,"ids. First:",(H=N[0])==null?void 0:H.slice(0,80));const I=await gi(N);console.log("[handleLoadStack] After expansion:",I.length,"ids. First:",(q=I[0])==null?void 0:q.slice(0,80)),N=I,await Jn(N,{force:!0});const M=await Kn(N);console.log("[handleLoadStack] Derived series groups:",M.length,"groups. First group has",(Y=M[0])==null?void 0:Y.imageIds.length,"images"),pe(me=>{const _e=[...me];return _e[re]?(_e[re]={..._e[re],seriesGroups:M,imageIds:N},_e):me});const V=((ue=M[0])==null?void 0:ue.imageIds)||N;console.log("[handleLoadStack] Setting viewport to primarySeries with",V.length,"ids. First:",(ge=V[0])==null?void 0:ge.slice(0,80)),zt("displayset");try{Ei(me=>{const _e=[...me];return _e[z]="stack",_e}),oe(me=>{const _e=[...me];return _e[z]=V,_e}),Oe(me=>{const _e=[...me];return _e[z]=re,_e}),Ge(me=>{const _e=[...me];return _e[z]=M||[],_e}),fe(me=>{const _e=[...me];return _e[z]=0,_e}),await Jn(V)}finally{zt(null)}},[Ut,En]=ot.useState(!1),[qr,Gt]=ot.useState(!0),[Mn,sn]=ot.useState(!1),[tn,Ti]=ot.useState(!1),Xi=()=>{console.log("Sorting viewport imageIds by slice location"),oe(z=>{const re=z.map((A,N)=>{if(!A||A.length===0)return A;const V=[...A.map(H=>{const q=lt("imagePlaneModule",H);let Y=null;return q&&(q.sliceLocation!==void 0?Y=Number(q.sliceLocation):q.imagePositionPatient&&Array.isArray(q.imagePositionPatient)&&q.imagePositionPatient.length===3&&(Y=Number(q.imagePositionPatient[2]))),{imageId:H,sortKey:Y}})].sort((H,q)=>H.sortKey!==null&&q.sortKey!==null?H.sortKey-q.sortKey:H.imageId.localeCompare(q.imageId)).map(H=>H.imageId);return JSON.stringify(V)===JSON.stringify(A)?A:V});return In(!0),re})},$o=ot.useCallback(async(z,re,A=0)=>{if(!re||Me[z]||rt.current[z])return;if(wt(re)){try{const V=new Image;V.crossOrigin="anonymous";const H=re.replace(/^external:/,"");V.src=H,await new Promise((ge,me)=>{V.onload=()=>ge(!0),V.onerror=_e=>me(_e)});const q=document.createElement("canvas"),Y=160;q.width=Y,q.height=Y;const ue=q.getContext("2d");if(ue){const ge=Math.min(Y/V.width,Y/V.height),me=V.width*ge,_e=V.height*ge,De=(Y-me)/2,Fe=(Y-_e)/2;ue.fillStyle="#000",ue.fillRect(0,0,Y,Y),ue.drawImage(V,De,Fe,me,_e),ut(z,q.toDataURL("image/png"))}else ut(z,"BROKEN")}catch{ut(z,"BROKEN")}return}const N=F.current;if(!N)return;rt.current[z]=!0;const I=`THUMB_${t||"main"}_${z}`,M=document.createElement("div");M.style.width="160px",M.style.height="160px",M.style.position="absolute",M.style.left="-9999px",M.style.top="0",document.body.appendChild(M);try{N.enableElement({viewportId:I,type:gr.STACK,element:M});const V=N.getViewport(I);if(!V)return;try{V.setStack([re])}catch{}await new Promise(q=>{let Y=!1;const ue=setTimeout(()=>{Y||(Y=!0,q(!1))},2e3),ge=()=>{Y||(Y=!0,clearTimeout(ue),q(!0))};try{if(V&&V.element&&V.element.addEventListener(Kg,ge,{once:!0}),typeof V.render=="function")try{const me=V.render();me&&typeof me.then=="function"&&me.catch(()=>{})}catch{}}catch{clearTimeout(ue),q(!1)}});let H=Dt(M)||(V&&V.element?Dt(V.element):null);if(H||(await new Promise(q=>setTimeout(q,150)),H=Dt(M)||(V&&V.element?Dt(V.element):null)),H){if(!f8e(H)&&A{$o(z,re,A+1)},Y);return}try{if(typeof H.toBlob=="function"){const Y=await new Promise(ue=>{H.toBlob(ge=>{if(!ge){ue(null);return}ue(URL.createObjectURL(ge))},"image/png")});Y?ut(z,Y):ut(z,H.toDataURL("image/png"))}else ut(z,H.toDataURL("image/png"))}catch{ut(z,"BROKEN")}}else ut(z,"BROKEN")}catch{try{ut(z,"BROKEN")}catch{}}finally{try{N.disableElement(I)}catch{}M&&M.parentNode&&M.parentNode.removeChild(M)}},[t,Me,ut]);ot.useEffect(()=>{!ve||ve.length===0||!F.current||ve.forEach((re,A)=>{const N=Array.isArray(re.imageIds)?re.imageIds:[],I=Math.floor(N.length/2),M=N[I]||N[0]||null;!Me[A]&&!rt.current[A]&&$o(A,M)})},[ve,$o,Me]);const Jn=async(z,re)=>{console.log("Setting loaded imageIds:",z),console.log("autoCacheStack:",r);const A=[];if(!!(r||re!=null&&re.force)){const I=new Set;for(const M of z)if(M.startsWith("wadouri:"))try{const V=Js(M).replace(/[?&]frame=\d+/gi,"");V&&I.add(V)}catch(V){console.warn(`Failed to cache metadata for ${M}:`,V)}for(const M of I)if(Vl.wadouri.dataSetCacheManager){const V=Vl.wadouri.dataSetCacheManager.load(M);V&&typeof V.then=="function"&&A.push(V)}else console.warn("MetaDataManager not found. Unable to cache metadata.");await Promise.all(A),Xr&&(console.log("Sorting viewport imageIds by slice location"),Xi())}},Co=ot.useCallback(async z=>{var V;if(!z.startsWith("wadouri:")||UT(z))return 1;const re=p0(z),A=Js(re),N=`wadouri:${A}`,I=vt.current[N];if(I!==void 0)return console.log("[getNumberOfFramesForImageId] Cache hit:",N.slice(0,60),"->",I),I;const M=H=>{if(!H||typeof H.intString!="function")return 1;const q=Number(H.intString("x00280008"));return Number.isFinite(q)&&q>1?Math.floor(q):1};try{const H=lt("multiframeModule",re),q=Number(H==null?void 0:H.numberOfFrames);if(Number.isFinite(q)&&q>1)return console.log("[getNumberOfFramesForImageId] Found in metadata:",q),vt.current[N]=Math.floor(q),Math.floor(q)}catch{}try{const H=(V=Vl==null?void 0:Vl.wadouri)==null?void 0:V.dataSetCacheManager;if(H!=null&&H.get){const q=H.get(A),Y=M(q);return console.log("[getNumberOfFramesForImageId] Found in cache manager:",Y),vt.current[N]=Y,Y}}catch{}try{console.log("[getNumberOfFramesForImageId] Fetching:",A.slice(0,80));const q=await(await fetch(A)).arrayBuffer(),Y=wr.parseDicom(new Uint8Array(q)),ue=M(Y);return console.log("[getNumberOfFramesForImageId] Found via fetch:",ue),vt.current[N]=ue,ue}catch(H){return console.log("[getNumberOfFramesForImageId] Fetch failed, returning 1:",H),vt.current[N]=1,1}},[]),gi=ot.useCallback(async z=>{const re=[];console.log("[expandMultiframeImageIds] Input:",z.length,"imageIds");for(const N of z||[]){const I=p0(N);if(!I.startsWith("wadouri:")||UT(I)){re.push(I);continue}const M=await Co(I);if(console.log("[expandMultiframeImageIds] frameCount for",I.slice(0,80),":",M),M<=1){re.push(I);continue}for(let V=1;V<=M;V++)re.push(eO(I,V));console.log("[expandMultiframeImageIds] Expanded to",M,"frames")}const A=s3(re);return console.log("[expandMultiframeImageIds] Output:",A.length,"total imageIds"),A},[Co]),Oa=ot.useCallback(async z=>{var M;if(!z.startsWith("wadouri:"))return[];const re=p0(z),A=Js(re).replace(/[?&]frame=\d+/i,""),N=gt.current[A];if(N)return N;const I=V=>{if(!V||typeof V.string!="function")return[];const H=nO(V.string("x00189087"));if(H.length>0)return H;const q=nO(V.string("x20011003"));return q.length>0?q:[]};try{const V=(M=Vl==null?void 0:Vl.wadouri)==null?void 0:M.dataSetCacheManager;if(V!=null&&V.get){const H=V.get(A),q=I(H);if(q.length>0)return gt.current[A]=q,q}}catch{}try{const H=await(await fetch(A)).arrayBuffer(),q=wr.parseDicom(new Uint8Array(H)),Y=I(q);return gt.current[A]=Y,Y}catch{return gt.current[A]=[],[]}},[]),Kn=ot.useCallback(async z=>{if(!Array.isArray(z)||z.length===0)return[];const re=new Map;z.forEach(M=>{const V=Js(p0(M)).replace(/[?&]frame=\d+/i,""),H=re.get(V)||[];H.push(M),re.set(V,H)}),re.forEach((M,V)=>{M.sort((H,q)=>{const Y=tO(H)||1,ue=tO(q)||1;return Y-ue}),re.set(V,M)});const A=new Map;await Promise.all(Array.from(re.keys()).map(async M=>{const V=`wadouri:${M}`,H=await Oa(V);A.set(M,H)}));const N=new Map;return z.forEach(M=>{const V=lt("generalSeriesModule",M)||{},H=lt("generalImageModule",M)||{},q=lt("mrImageModule",M)||{},Y=(V.seriesInstanceUID||"").trim(),ue=(V.seriesDescription||"").trim(),ge=Number(V.seriesNumber),me=Number(H.temporalPositionIdentifier),_e=Number(H.triggerTime);let De=Number(q.diffusionBValue??q.diffusionbValue??q.bValue),Fe=Number.isFinite(De)?De:null;if(Fe===null){const Zt=Js(p0(M)).replace(/[?&]frame=\d+/i,""),Vt=A.get(Zt)||[];if(Vt.length>0){const Rt=re.get(Zt)||[M],Nt=Math.max(0,Rt.indexOf(M)),Rn=Math.max(1,Rt.length);if(Vt.length===1)Fe=Vt[0];else if(Vt.length===Rn)Fe=Vt[Math.min(Vt.length-1,Nt)];else if(Vt.length===2&&Rn%2===0)Fe=Nt{const q=[];V.seriesDescription&&q.push(V.seriesDescription),V.seriesNumber!==void 0&&q.push(`#${V.seriesNumber}`),V.bValue!==null&&V.bValue!==void 0&&q.push(`b=${Math.round(V.bValue)}`);const Y=q.length>0?q.join(" • "):`Series ${H+1}`;return{key:M,label:Y,imageIds:s3(V.imageIds),seriesInstanceUID:V.seriesInstanceUID,bValue:V.bValue}})},[Oa]),[_t,ln]=ot.useState({rows:1,cols:1}),[mr,la]=ot.useState(!1),Vr=ot.useRef([]),So=ot.useRef({}),Ni=ot.useRef({}),[Xr,Os]=ot.useState(!1),[To,so]=ot.useState(!0),Ma=ot.useCallback(z=>{const re=z.currentTarget.getBoundingClientRect(),A=z.clientX-re.left,N=z.clientY-re.top,I=re.width,M=re.height,V=Math.min(I,M)*.24,H=[{zone:"left",distance:A},{zone:"right",distance:I-A},{zone:"top",distance:N},{zone:"bottom",distance:M-N}];return H.sort((q,Y)=>q.distance-Y.distance),H[0].distance<=V?H[0].zone:"center"},[]),_i=ot.useCallback(z=>z==="left"||z==="right"?_t.cols<3?z:"center":(z==="top"||z==="bottom")&&_t.rows<3?z:"center",[_t]),Pa=[];for(let z=1;z<=3;z++)for(let re=1;re<=3;re++)Pa.push({rows:z,cols:re});const[Ht,Yi]=ot.useState(()=>Array(_t.rows*_t.cols).fill({index:0,total:0,windowCenter:"",windowWidth:"",slicePosition:"",modality:"",orientation:"",resolution:"",spacing:"",focalPoint:""})),[Ms,ua]=ot.useState(()=>Array(k).fill(null).map(()=>[])),co=ot.useRef(Array(k).fill("")),_o=ot.useRef(Array(k).fill(null)),ci=ot.useRef(Array(k).fill(null)),ki=ot.useRef(Array(k).fill(null)),[vn,Ei]=ot.useState(()=>Array(k).fill("stack")),[jo,Ji]=ot.useState(()=>Array(_t.rows*_t.cols).fill(!1)),[Vi,Ps]=ot.useState({Primary:Wd.toolName,Auxiliary:uf.toolName,Secondary:Uh.toolName,Primary_and_Secondary:Jl.toolName,Fourth_Button:Bh.toolName,Wheel:Wd.toolName}),[Ho,Rs]=ot.useState({Primary:_f.toolName,Auxiliary:mu.toolName,Secondary:$h.toolName}),[lo,Zi]=ot.useState(!1);ot.useEffect(()=>{const z=A=>{A.ctrlKey&&Zi(!0)},re=A=>{A.ctrlKey||Zi(!1)};return window.addEventListener("keydown",z),window.addEventListener("keyup",re),()=>{window.removeEventListener("keydown",z),window.removeEventListener("keyup",re)}},[]);const[Qi,Fr]=ot.useState(!1),[bc,Ko]=ot.useState(null),qo=(z,re)=>{ia&&ia(re),ks(A=>{const N=[...A];return N[z]=re,N})},Ir=(z,re,A)=>{const N=hr.getAllAnnotations()||[];N.forEach(M=>{M.annotationUID===re&&(M.isSelected=!1)}),hr.removeAnnotation(re),F.current.render();const I=A.filter(M=>M.annotationUID!==re);ks(M=>{const V=[...M],H=I.length>0?I[0].annotationUID:null;return V[z]=H,N.forEach(q=>{q.isSelected=q.annotationUID===H}),ia(H),F.current.render(),V})},Dc=()=>{const z=Z.findIndex(I=>I&&I.length>0);if(z===-1){Ko("No images loaded."),Fr(!0);return}const re=Z[z][0],A=["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"],N={};A.forEach(I=>{const M=lt(I,re);M!==void 0&&(N[I]=M)}),Ko(Re.jsx("pre",{style:{maxHeight:600,overflow:"auto",fontSize:13,color:"#fff"},children:JSON.stringify(N,null,2)})),Fr(!0)};ot.useEffect(()=>{try{const z=localStorage.getItem(l),re=localStorage.getItem(f);z&&Ps(JSON.parse(z)),re&&Rs(JSON.parse(re))}catch{}},[]),ot.useEffect(()=>{try{localStorage.setItem(l,JSON.stringify(Vi))}catch{}},[Vi]),ot.useEffect(()=>{try{localStorage.setItem(f,JSON.stringify(Ho))}catch{}},[Ho]),ot.useEffect(()=>(window.loadDicomStackFromFiles=z=>{const re=Array.from(z);os({target:{files:re}})},()=>{window.loadDicomStackFromFiles=void 0}),[]),ot.useEffect(()=>{const z=()=>{R(!1),K(null),be(null)};return document.addEventListener("dragend",z),()=>document.removeEventListener("dragend",z)},[]);const[bi,Ur]=ot.useState(!1),[rs,Eo]=ot.useState(!1);ot.useEffect(()=>{const z=ti(j);z&&["ArrowAnnotate","NoLabelArrowAnnotate","Length","RectangleROI","EllipticalROI","PlanarFreehandROI","PlanarFreehandContourSegmentation"].forEach(re=>{z.setToolConfiguration(re,{color:"#00e676",selectedColor:"#ffeb3b"})})},[j]),ot.useEffect(()=>{const z=N=>{N.altKey&&Ur(!0),N.shiftKey&&Eo(!0)},re=N=>{N.altKey||Ur(!1),N.shiftKey||Eo(!1)},A=()=>{Ur(!1),Eo(!1)};return window.addEventListener("keydown",z),window.addEventListener("keyup",re),window.addEventListener("blur",A),()=>{window.removeEventListener("keydown",z),window.removeEventListener("keyup",re),window.removeEventListener("blur",A)}},[]),ot.useEffect(()=>{const z=ti(j);if(!z)return;if(rs||To&&bi){const A=_t.rows*_t.cols;Z.slice(0,A).filter((I,M)=>vn[M]==="stack"&&Array.isArray(I)&&I.length>0).forEach(I=>{Jn(I,{force:!0}).catch(M=>{console.warn("Reference cursor metadata warm-up failed:",M)})}),z.hasTool(Wa.toolName)||z.addTool(Wa.toolName),z.setToolEnabled(Wa.toolName),z.setToolActive(Wa.toolName)}else z.hasTool(Wa.toolName)&&z.setToolDisabled(Wa.toolName)},[bi,rs,To,_t.rows,_t.cols,Z,vn,Jn]);const pi=ot.useCallback(()=>{[ti(j)].forEach(re=>{if(re){y0.forEach(N=>{re.setToolPassive(N.value,{removeAllBindings:!0})}),re.setToolDisabled(Wa.toolName);const A={};Object.entries(Vi).forEach(([N,I])=>{A[I]||(A[I]=[]);const M=sv.find(V=>V.value===N);M?A[I].push({mouseButton:M.mask}):Hg[N]&&A[I].push({mouseButton:Hg[N]})}),Object.entries(Ho).forEach(([N,I])=>{if(!I)return;A[I]||(A[I]=[]);const M=sv.find(V=>V.value===N);M?A[I].push({mouseButton:M.mask,modifierKey:Z7.Ctrl}):Hg[N]&&A[I].push({mouseButton:Hg[N],modifierKey:Z7.Ctrl})}),Object.entries(A).forEach(([N,I])=>{re.setToolActive(N,{bindings:I})});try{const N=Vi.Primary,I=Vi.Wheel,M=Vi.Auxiliary,V=N===uf.toolName||M===uf.toolName,H=N===Jl.toolName||I===Jl.toolName||Vi.Primary_and_Secondary===Jl.toolName;Vr.current.forEach(q=>{if(!q)return;const Y=q._externalPanZoom;Y&&(typeof Y.setAllowPan=="function"&&Y.setAllowPan(!!V),typeof Y.setAllowZoom=="function"&&Y.setAllowZoom(!!H))})}catch{}}})},[Vi,Ho]),[fa,Ls]=ot.useState(!1),[is,Ra]=ot.useState("add"),qn=ot.useRef(null),La=ot.useCallback(z=>{h&&(z.preventDefault(),z.stopPropagation(),m.current={resizing:!0,startX:z.clientX,startWidth:p},document.body.style.cursor="col-resize",document.body.style.userSelect="none")},[h,p]);ot.useEffect(()=>{const z=A=>{if(!m.current.resizing)return;const N=m.current.startX-A.clientX,I=Math.max(w,Math.min(x,m.current.startWidth+N));v(I)},re=()=>{m.current.resizing&&(m.current.resizing=!1,document.body.style.cursor="",document.body.style.userSelect="")};return window.addEventListener("mousemove",z),window.addEventListener("mouseup",re),()=>{window.removeEventListener("mousemove",z),window.removeEventListener("mouseup",re),document.body.style.cursor="",document.body.style.userSelect=""}},[]);const li=fa?C-S/2:-S+T;ot.useEffect(()=>{try{qn.current&&(qn.current.setAttribute("webkitdirectory","true"),qn.current.setAttribute("directory",""),qn.current.setAttribute("mozdirectory",""))}catch{}},[]);async function Br(z,re=""){const A=[],N=z.entries?z.entries():z.values();for await(const I of N)try{let M,V;if(Array.isArray(I)&&I.length>=2?(V=I[0],M=I[1]):(M=I,V=M.name),!M)continue;if(M.kind==="file"){const H=await M.getFile();try{Object.defineProperty(H,"webkitRelativePath",{value:re+(V||M.name),configurable:!0})}catch{}A.push(H)}else if(M.kind==="directory"){const H=await Br(M,re+(V||M.name)+"/");A.push(...H)}}catch(M){console.debug("collectFilesFromDirectoryHandle: skipping entry due to error",M)}return A}const Ic=async()=>{var z;if(window.showDirectoryPicker)try{const re=await window.showDirectoryPicker(),A=await Br(re);A&&A.length>0?await os({target:{files:A}}):alert("No files found in selected folder.");return}catch(re){console.warn("showDirectoryPicker failed or cancelled",re)}(z=qn.current)==null||z.click()},mi=ot.useRef(null),os=async z=>{const re=z.target.files;if(!re||re.length===0)return;Os(!1);const A=Array.from(re).sort((V,H)=>V.name.localeCompare(H.name)),N=await Promise.all(A.map(async V=>{const H=V.type&&V.type.startsWith("image/");let q,Y,ue,ge,me=1,_e=!1;if(!H)try{const Fe=await V.arrayBuffer(),je=wr.parseDicom(new Uint8Array(Fe));q=je.string("x0020000d"),Y=je.string("x0020000e");const Ke=je.string("x00200013");Ke!=null&&Ke!==""&&(ue=parseInt(Ke,10));const tt=je.string("x00201041")||je.string("x00201040");tt!=null&&tt!==""&&(ge=parseFloat(tt));const ct=je.string("x00280008");if(ct!=null&&ct!==""){const yt=Number(ct);Number.isFinite(yt)&&yt>1&&(me=Math.floor(yt))}_e=!0}catch{_e=!1}const De=H?`external:${URL.createObjectURL(V)}`:`wadouri:${URL.createObjectURL(V)}`;return{file:V,imageId:De,studyInstanceUID:q,seriesInstanceUID:Y,instanceNumber:ue,sliceLocation:ge,numberOfFrames:me,isImage:H,parsedSuccessfully:_e}})),I=new Map;for(const V of N){if(!V.isImage&&!V.parsedSuccessfully){console.debug("Skipping non-DICOM/non-image file:",V.file.name);continue}const H=V.seriesInstanceUID||V.studyInstanceUID||(V.file.webkitRelativePath?V.file.webkitRelativePath.split("/")[0]:V.file.name);I.has(H)||I.set(H,{entries:[],studyInstanceUID:V.studyInstanceUID,seriesInstanceUID:V.seriesInstanceUID}),I.get(H).entries.push(V)}const M=[];for(const[V,H]of I.entries()){const q=H.entries;q.sort((ge,me)=>Xr&&ge.sliceLocation!==void 0&&me.sliceLocation!==void 0?ge.sliceLocation-me.sliceLocation:ge.instanceNumber!==void 0&&me.instanceNumber!==void 0?ge.instanceNumber-me.instanceNumber:(ge.file.webkitRelativePath||ge.file.name).localeCompare(me.file.webkitRelativePath||me.file.name));const Y=q.flatMap(ge=>{if(ge.isImage||!Number.isFinite(ge.numberOfFrames)||ge.numberOfFrames<=1)return[ge.imageId];const me=[];for(let _e=1;_e<=ge.numberOfFrames;_e++)me.push(eO(ge.imageId,_e));return me}),ue=await Kn(Y);M.push({imageIds:Y,studyInstanceUID:H.studyInstanceUID,seriesInstanceUID:H.seriesInstanceUID,seriesGroups:ue})}if(M.length!==0)if(is==="replace"){try{const V=F.current;if(V)for(let H=0;H{var H,q;const V=Array(k).fill([]);for(let Y=0;Y{const V=Array(k).fill(null).map(()=>[]);for(let H=0;H{const H=[...V,...M];oe(q=>{var ge,me;const Y=[...q],ue=M[M.length-1];return Y[0]=((me=(ge=ue.seriesGroups)==null?void 0:ge[0])==null?void 0:me.imageIds)||ue.imageIds,Y}),Oe(q=>{const Y=[...q];return Y[0]=H.length-1,Y}),Ge(q=>{var ue;const Y=[...q];return Y[0]=((ue=M[M.length-1])==null?void 0:ue.seriesGroups)||[],Y}),fe(q=>{const Y=[...q];return Y[0]=0,Y});for(const q of M)Jn(q.imageIds);return H})},Pn=ot.useCallback((z,re)=>{var De,Fe;if(!re)return;let A=0,N=0,I="",M="",V="",H="",q="",Y="",ue="",ge="",me,_e;if(vn[z]==="stack"){A=typeof re.getCurrentImageIdIndex=="function"?re.getCurrentImageIdIndex():0;const je=typeof re.getImageIds=="function"?re.getImageIds():[];N=je.length;const Ke=je[A];if(Ke){if(console.log("[updateOverlay] Current image:",Ke.slice(0,80),"frameIndex status:",me,"totalFrames:",_e),Ke.includes("&frame=")){const Vt=Ke.match(/&frame=(\d+)/);if(Vt){me=parseInt(Vt[1],10),console.log("[updateOverlay] Frame detected:",me);const Rt=Ke.split("&frame=")[0],Nt=lt("multiframeModule",Rt);if(Nt!=null&&Nt.numberOfFrames)_e=Nt.numberOfFrames,console.log("[updateOverlay] Total frames from metadata:",_e);else{const Rn=je.map(ft=>{const Tt=ft.match(/&frame=(\d+)/);return Tt?parseInt(Tt[1],10):null}).filter(ft=>ft!==null&&typeof ft=="number");Rn.length>0&&(_e=Math.max(...Rn),console.log("[updateOverlay] Total frames from imageIds:",_e))}}}else console.log("[updateOverlay] No frame query in imageId. imageIds.length:",je.length);const tt=lt("generalSeriesModule",Ke),ct=lt("imagePlaneModule",Ke),yt=lt("imagePixelModule",Ke);H=(tt==null?void 0:tt.modality)||"",yt!=null&&yt.rows&&(yt!=null&&yt.columns)&&(Y=`${yt.columns} x ${yt.rows}`);const Zt=[ct==null?void 0:ct.columnPixelSpacing,ct==null?void 0:ct.rowPixelSpacing,ct==null?void 0:ct.sliceThickness].filter(Vt=>Vt!=null&&Vt!=="");Zt.length>0&&(ue=Zt.join(" x "))}if(typeof re.getCamera=="function"){const tt=re.getCamera();tt!=null&&tt.focalPoint&&Array.isArray(tt.focalPoint)&&(ge=tt.focalPoint.map(ct=>ct.toFixed(1)).join(", "))}if(A>=0&&ua(tt=>{const ct=[...tt],yt=new Set(ct[z]||[]);return yt.has(A)?tt:(yt.add(A),ct[z]=Array.from(yt).sort((Zt,Vt)=>Zt-Vt),ct)}),typeof re.getProperties=="function"){const tt=re.getProperties();if(tt.voiRange){const{lower:ct,upper:yt}=tt.voiRange;I=((yt+ct)/2).toFixed(0),M=(yt-ct).toFixed(0),_o.current[z]===null&&(_o.current[z]={lower:ct,upper:yt})}}}else if(vn[z]==="volume"){if(typeof re.getSliceIndex=="function"&&(A=re.getSliceIndex()),typeof re.getNumberOfSlices=="function"&&(N=re.getNumberOfSlices()),typeof re.getProperties=="function"){let Ke;if(re.volumeIds&&re.volumeIds.size>0){const tt=Array.from(re.volumeIds)[0];Ke=re.getProperties(tt)}else Ke=re.getProperties();if(Ke&&Ke.voiRange){const{lower:tt,upper:ct}=Ke.voiRange;I=((ct+tt)/2).toFixed(0),M=(ct-tt).toFixed(0),_o.current[z]===null&&(_o.current[z]={lower:tt,upper:ct})}}if(typeof re.getSlicePlaneCoordinates=="function"){const Ke=re.getSlicePlaneCoordinates();Ke&&typeof Ke.position=="number"&&(V=Ke.position.toFixed(2)+" mm")}const je=(De=Z[z])==null?void 0:De[0];if(je){const Ke=lt("generalSeriesModule",je),tt=lt("imagePlaneModule",je),ct=lt("imagePixelModule",je);H=(Ke==null?void 0:Ke.modality)||"",q=String(((Fe=re.viewportProperties)==null?void 0:Fe.orientation)||"").toUpperCase(),ct!=null&&ct.rows&&(ct!=null&&ct.columns)&&(Y=`${ct.columns} x ${ct.rows}`);const yt=[tt==null?void 0:tt.columnPixelSpacing,tt==null?void 0:tt.rowPixelSpacing,tt==null?void 0:tt.sliceThickness].filter(Zt=>Zt!=null&&Zt!=="");yt.length>0&&(ue=yt.join(" x "))}if(typeof re.getCamera=="function"){const Ke=re.getCamera();Ke!=null&&Ke.focalPoint&&Array.isArray(Ke.focalPoint)&&(ge=Ke.focalPoint.map(tt=>tt.toFixed(1)).join(", "))}}Yi(je=>{const Ke=[...je];return Ke[z]={index:A+1,total:N,windowCenter:I,windowWidth:M,slicePosition:V,modality:H,orientation:q,resolution:Y,spacing:ue,focalPoint:ge,frameIndex:me,totalFrames:_e},Ke})},[vn,Z]);ot.useEffect(()=>{ua(z=>{let re=!1;const A=[...z];for(let N=0;N{var Rn;const I=await gi(re.map(p0));if(I.length===0)return;await Jn(I,{force:!0});const M=await Kn(I),V=((Rn=M[0])==null?void 0:Rn.imageIds)||I;let H=-1,q=-1;pe(ft=>(H=ft.findIndex(Tt=>Tt.imageIds.length===I.length&&Tt.imageIds.every((Qt,lr)=>Qt===I[lr])),H!==-1?ft:(q=ft.length,[...ft,{imageIds:I,name:A,seriesGroups:M}])));const Y=H!==-1?H:q,ue=_i(N);if(ue==="center"){zt("displayset");try{Ei(ft=>{const Tt=[...ft];return Tt[z]="stack",Tt}),oe(ft=>{const Tt=[...ft];return Tt[z]=V,Tt}),Oe(ft=>{const Tt=[...ft];return Tt[z]=Y,Tt}),Ge(ft=>{const Tt=[...ft];return Tt[z]=M,Tt}),fe(ft=>{const Tt=[...ft];return Tt[z]=0,Tt}),Ie(z),await Jn(V)}finally{zt(null)}return}const ge=_t.rows,me=_t.cols,_e=Math.floor(z/me),De=z%me,Fe=ue==="top"||ue==="bottom"?ge+1:ge,je=ue==="left"||ue==="right"?me+1:me;if(Fe>3||je>3||Fe*je>k){zt("displayset");try{Ei(ft=>{const Tt=[...ft];return Tt[z]="stack",Tt}),oe(ft=>{const Tt=[...ft];return Tt[z]=I,Tt}),Oe(ft=>{const Tt=[...ft];return Tt[z]=Y,Tt}),Ie(z),await Jn(I)}finally{zt(null)}return}const Ke=ue==="top"?_e:ue==="bottom"?_e+1:_e,tt=ue==="left"?De:ue==="right"?De+1:De,ct=Ke*je+tt,yt=Array(k).fill([]),Zt=Array(k).fill("stack"),Vt=Array(k).fill(0),Rt=Array(k).fill(null).map(()=>[]),Nt=Array(k).fill(0);for(let ft=0;ftDe||ue==="left"?Qt+1:Qt),(ue==="top"||ue==="bottom")&&Qt===De&&(lr=Tt<_e?Tt:Tt>_e||ue==="top"?Tt+1:Tt);const Fc=lr*je+Di;yt[Fc]=Z[ft]||[],Zt[Fc]=vn[ft]||"stack",Vt[Fc]=Te[ft]??0,Rt[Fc]=Ve[ft]||[],Nt[Fc]=ce[ft]??0}yt[ct]=V,Zt[ct]="stack",Vt[ct]=q,Rt[ct]=M,Nt[ct]=0,zt("displayset");try{eo(),ln({rows:Fe,cols:je}),oe(yt),Ei(Zt),Oe(Vt),Ge(Rt),fe(Nt),Ie(ct),await Jn(V)}finally{zt(null)}},Na=async(z,re,A)=>{var Rt;const N=ve[re];if(!N)return;let I=N.imageIds||[];I=await gi(I),await Jn(I,{force:!0});const V=await Kn(I);pe(Nt=>{const Rn=[...Nt];return Rn[re]?(Rn[re]={...Rn[re],seriesGroups:V,imageIds:I},Rn):Nt});const H=((Rt=V[0])==null?void 0:Rt.imageIds)||I,q=_i(A);if(q==="center"){await dt(z,re),Ie(z);return}const Y=_t.rows,ue=_t.cols,ge=Math.floor(z/ue),me=z%ue,_e=q==="top"||q==="bottom"?Y+1:Y,De=q==="left"||q==="right"?ue+1:ue;if(_e>3||De>3||_e*De>k){await dt(z,re),Ie(z);return}const Fe=Array(k).fill([]),je=Array(k).fill("stack"),Ke=Array(k).fill(0),tt=Array(k).fill(null).map(()=>[]),ct=Array(k).fill(0),yt=q==="top"?ge:q==="bottom"?ge+1:ge,Zt=q==="left"?me:q==="right"?me+1:me,Vt=yt*De+Zt;for(let Nt=0;Ntme?Qt=ft+1:Qt=q==="left"?ft+1:ft),(q==="top"||q==="bottom")&&ft===me&&(Rnge?Tt=Rn+1:Tt=q==="top"?Rn+1:Rn);const lr=Tt*De+Qt;Fe[lr]=Z[Nt]||[],je[lr]=vn[Nt]||"stack",Ke[lr]=Te[Nt]??0,tt[lr]=Ve[Nt]||[],ct[lr]=ce[Nt]??0}Fe[Vt]=H,je[Vt]="stack",Ke[Vt]=re,tt[Vt]=V||[],ct[Vt]=0,zt("displayset");try{eo(),ln({rows:_e,cols:De}),oe(Fe),Ei(je),Oe(Ke),Ge(tt),fe(ct),Ie(Vt),await Jn(H)}finally{zt(null)}};ot.useEffect(()=>{const z=async()=>{var M;if(console.log("setup"),!c.current){c.current=!0,await KA(),await mG(),m$();try{yd("external",V=>({promise:(async()=>{const q=V.replace(/^external:/,""),Y=new Image;Y.crossOrigin="anonymous",Y.src=q,await new Promise((je,Ke)=>{Y.onload=()=>je(!0),Y.onerror=tt=>Ke(tt)});const ue=Y.naturalWidth||Y.width,ge=Y.naturalHeight||Y.height,me=document.createElement("canvas");me.width=ue,me.height=ge;const _e=me.getContext("2d");if(!_e)throw new Error("Unable to create canvas context");_e.drawImage(Y,0,0,ue,ge);const De=_e.getImageData(0,0,ue,ge);return{imageId:V,minPixelValue:0,maxPixelValue:255,slope:1,intercept:0,rows:ge,columns:ue,height:ge,width:ue,color:!0,rgba:!0,sizeInBytes:De.data.length,getPixelData:()=>De.data,getImageData:()=>De,getCanvas:()=>me}})()}))}catch(V){console.warn("Failed to register external image loader",V)}}let A=F.current;if(!A){A=new hE(G),F.current=A;try{ve&&ve.length>0&&ve.forEach((V,H)=>{const q=Array.isArray(V.imageIds)?V.imageIds:[],Y=Math.floor(q.length/2),ue=q[Y]||q[0]||null;ue&&!Me[H]&&!rt.current[H]&&$o(H,ue)})}catch{}}let N=ti(j);N||(N=h8e(j)),vn.slice(0,_t.rows*_t.cols).filter(V=>V==="volume").length,as(N);for(let V=0;V{if(Y.offsetWidth>0&&Y.offsetHeight>0){A.resize();const De=A.getViewport(q);De&&typeof De.resize=="function"&&De.resize(),De&&typeof De.render=="function"&&De.render()}});_e.observe(Y),Y._resizeObserver=_e}if(vn[V]==="stack"){if(H&&H.length>0){const _e=H[0];if(wt(_e))try{try{const je=Y._externalPanZoom;je&&typeof je.cleanup=="function"&&je.cleanup()}catch{}Y.innerHTML="";const De=document.createElement("img");De.style.width="100%",De.style.height="100%",De.style.objectFit="contain",De.style.display="block",De.src=_e.replace(/^external:/,""),De.setAttribute("draggable","false"),Y.appendChild(De);const Fe=kt(Y,De);Y._externalPanZoom=Fe,N.removeViewports(G,q)}catch(De){console.warn("Failed to render external image in viewport",De)}else try{ge.setStack(H)}catch(De){console.warn("viewport.setStack failed",De)}}Ut?N.removeViewports(G,q):N.addViewport(q,G)}else if(vn[V]==="volume"){N.addViewport(q,G);const _e=`myVolumeId_${V}`;(await Tm(_e,{imageIds:H})).load(),ge.setVolumes([{volumeId:_e}]),ge.render(),Y._overlayListener&&ge.element.removeEventListener(Kg,Y._overlayListener);const Fe=()=>Pn(V,ge);ge.element.addEventListener(Kg,Fe),Y._overlayListener=Fe,Pn(V,ge);continue}if(ge.render(),!U.current){Ni.current[V]!==void 0&&typeof ge.setImageIdIndex=="function"&&Po(ge.element,{imageIndex:Ni.current[V]});const _e=So.current[V];if(_e&&typeof ge.setProperties=="function"){const{voiRange:De,invert:Fe,interpolationType:je,VOILUTFunction:Ke,colormap:tt}=_e,ct={};De&&De.lower!==void 0&&De.upper!==void 0&&(ct.voiRange=De),Fe!==void 0&&(ct.invert=Fe),je!==void 0&&(ct.interpolationType=je),Ke&&(ct.VOILUTFunction=Ke),tt!=null&&(typeof tt=="string"||typeof tt=="object"&&!("actor"in tt))&&(ct.colormap=tt),setTimeout(()=>{console.log("Restoring properties (timeout) for viewport",V,ct),ge.setProperties(ct),ge.render()},100)}}Y._overlayListener&&ge.element.removeEventListener(Kg,Y._overlayListener);const me=()=>Pn(V,ge);ge.element.addEventListener(Kg,me),Y._overlayListener=me,Pn(V,ge)}for(let V=0;V<_t.rows*_t.cols;V++){const H=`CT_${V}`;((M=F.current)==null?void 0:M.getViewport(H))&&vn[V]}const I=[];for(let V=0;V<_t.rows*_t.cols;V++)vn[V]==="volume"&&I.push(`CT_${V}`);N&&Ut&&(I.length>=2?(N.hasTool(qc.toolName)||N.addTool(qc.toolName),N.setToolEnabled(qc.toolName),N.setToolConfiguration(qc.toolName,{}),N.setToolActive(qc.toolName,{bindings:[{mouseButton:Hg.Primary}]})):N.hasTool(qc.toolName)&&N.setToolDisabled(qc.toolName)),pi()},re=requestAnimationFrame(()=>{z()});return()=>{Vr.current.forEach(A=>{A&&A._resizeObserver&&(A._resizeObserver.disconnect(),delete A._resizeObserver)}),cancelAnimationFrame(re)}},[s,Pn,_t,vn,Z]);const Fi=ot.useCallback(z=>{const re=`CT_${z}`,N=F.current.getViewport(re);N&&typeof N.resetCamera=="function"&&(N.resetCamera(),console.log("Restoring viewport properties for viewport",z),N.resetProperties(),N.render())},[]),As=ot.useCallback((z,re,A)=>{const N=`CT_${z}`;try{const I=F.current;if(I){const M=I.getViewport(N);M&&typeof M.setProperties=="function"&&(console.log(`Applying preset to viewport ${z}: center=${re}, width=${A}`),M.setProperties({voiRange:{lower:re-A/2,upper:re+A/2}}),M.render(),Pn(z,M))}}catch{}},[Pn]),da=ot.useCallback((z,re=!1)=>{const A=`CT_${z}`;try{const N=F.current,I=N==null?void 0:N.getViewport(A);if(!I)return!1;const M=typeof I.getImageIds=="function"?I.getImageIds():Z[z]||[],V=typeof I.getCurrentImageIdIndex=="function"?I.getCurrentImageIdIndex():0,H=M[V]||M[0],q=_o.current[z],Y=H?lt("voiLutModule",H)||{}:{},ue=H?lt("imagePixelModule",H)||{}:{},ge=H?lt("modalityLutModule",H)||{}:{},me=Array.isArray(Y.windowCenter)?Y.windowCenter[0]:Y.windowCenter,_e=Array.isArray(Y.windowWidth)?Y.windowWidth[0]:Y.windowWidth,De=Number(ue.smallestPixelValue??ue.smallestImagePixelValue),Fe=Number(ue.largestPixelValue??ue.largestImagePixelValue),je=Number(ge.rescaleSlope??1),Ke=Number(ge.rescaleIntercept??0);if(q)I.setProperties({voiRange:q});else if(Number.isFinite(Number(me))&&Number.isFinite(Number(_e))&&Number(_e)>0){const tt=Number(me),ct=Number(_e);I.setProperties({voiRange:{lower:tt-ct/2,upper:tt+ct/2}})}else Number.isFinite(De)&&Number.isFinite(Fe)&&Fe>De?I.setProperties({voiRange:{lower:De*je+Ke,upper:Fe*je+Ke}}):typeof I.resetProperties=="function"&&I.resetProperties();return re&&typeof I.resetCamera=="function"&&I.resetCamera(),I.render(),Pn(z,I),!0}catch(N){return console.warn("Failed to apply default window level",N),!1}},[Pn,Z]),Oc=ot.useCallback(z=>{const re=`CT_${z}`;(async()=>{const A=F.current;if(!A)return;const N=A.getViewport(re);if(!N)return;const I=typeof N.getImageIds=="function"?N.getImageIds():Z[z]||[],M=typeof N.getCurrentImageIdIndex=="function"?N.getCurrentImageIdIndex():0,V=I[M]||I[0];if(!V){da(z);return}const H=lt("imagePixelModule",V)||{},q=lt("modalityLutModule",V)||{},Y=lt("voiLutModule",V)||{},ue=_o.current[z];let ge=Number(H.smallestPixelValue??H.smallestImagePixelValue),me=Number(H.largestPixelValue??H.largestImagePixelValue),_e=Number(q.rescaleSlope??1),De=Number(q.rescaleIntercept??0);if(!Number.isFinite(ge)||!Number.isFinite(me)||me<=ge)try{const Ke=await Ds(V);ge=Number(Ke==null?void 0:Ke.minPixelValue),me=Number(Ke==null?void 0:Ke.maxPixelValue),_e=Number((Ke==null?void 0:Ke.slope)??_e),De=Number((Ke==null?void 0:Ke.intercept)??De)}catch{const tt=I.filter(ct=>!!ct).slice(0,6);for(const ct of tt)try{const yt=await Ds(ct);if(ge=Number(yt==null?void 0:yt.minPixelValue),me=Number(yt==null?void 0:yt.maxPixelValue),_e=Number((yt==null?void 0:yt.slope)??_e),De=Number((yt==null?void 0:yt.intercept)??De),Number.isFinite(ge)&&Number.isFinite(me)&&me>ge)break}catch{}}const Fe=Array.isArray(Y.windowCenter)?Y.windowCenter[0]:Y.windowCenter,je=Array.isArray(Y.windowWidth)?Y.windowWidth[0]:Y.windowWidth;if(Number.isFinite(ge)&&Number.isFinite(me)&&me>ge)N.setProperties({voiRange:{lower:ge*_e+De,upper:me*_e+De}});else if(Number.isFinite(Number(Fe))&&Number.isFinite(Number(je))&&Number(je)>0){const Ke=Number(Fe),tt=Number(je);N.setProperties({voiRange:{lower:Ke-tt/2,upper:Ke+tt/2}})}else if(ue)N.setProperties({voiRange:ue});else{da(z);return}N.render(),Pn(z,N)})().catch(()=>{da(z)})},[da,Pn,Z]),Xo=ot.useCallback((z,re,A=!0,N=!0)=>{if(A&&(ci.current[z]=re),re.action==="reset"){da(z,N);return}if(re.action==="autolevel"){Oc(z);return}const I=re;As(z,I.center,I.width)},[da,As,Oc]);ot.useEffect(()=>{const z=()=>{const A=F.current;if(!A)return;const N=_t.rows*_t.cols;for(let I=0;Iwindow.clearTimeout(re)},[Xo,Ht,_t,vn]),ot.useEffect(()=>{const z=re=>{var H,q;const A=re.target;if(A){const Y=(H=A.tagName)==null?void 0:H.toLowerCase(),ue=A.getAttribute("contenteditable")==="true";if(Y==="input"||Y==="textarea"||Y==="select"||ue)return}if(re.ctrlKey||re.altKey||re.metaKey||ye===null)return;const N=(q=Ht[ye])==null?void 0:q.modality,I=Q7(N);if(re.key==="0"){const Y=I.find(ue=>ue.action==="reset");Y&&(Xo(ye,Y),re.preventDefault());return}if(!/^[1-9]$/.test(re.key))return;const M=Number(re.key)-1,V=I.filter(Y=>Y.action==="preset");M>=V.length||(Xo(ye,V[M]),re.preventDefault())};return window.addEventListener("keydown",z),()=>window.removeEventListener("keydown",z)},[ye,Xo,Ht]);const ka=ot.useCallback((z,re)=>{const A=Ve[z]||[];if(A.length<=1)return;const N=Math.max(0,Math.min(A.length-1,re)),I=A[N];if(!I||I.imageIds.length===0)return;const M=F.current,V=M==null?void 0:M.getViewport(`CT_${z}`);let H=0;if(V&&typeof V.getCurrentImageIdIndex=="function"){const Y=(Z[z]||[]).length,ue=V.getCurrentImageIdIndex(),ge=Y>1?ue/(Y-1):0;H=Math.max(0,Math.min(I.imageIds.length-1,Math.round(ge*Math.max(0,I.imageIds.length-1))))}fe(q=>{const Y=[...q];return Y[z]=N,Y}),oe(q=>{const Y=[...q];return Y[z]=I.imageIds,Y}),Jn(I.imageIds,{force:!0}),window.setTimeout(()=>{var Y;const q=(Y=F.current)==null?void 0:Y.getViewport(`CT_${z}`);!q||typeof q.setImageIdIndex!="function"||(Po(q.element,{imageIndex:H}),q.render(),Pn(z,q))},25)},[Ve,Jn,Pn,Z]);ot.useEffect(()=>{const z=[],re=_t.rows*_t.cols;for(let A=0;A{var me,_e;const H=(me=F.current)==null?void 0:me.getViewport(`CT_${A}`);if(!H||typeof H.getCurrentImageIdIndex!="function"||typeof H.setImageIdIndex!="function")return;const Y=(((_e=H.getImageIds)==null?void 0:_e.call(H))||N).length;if(Y<2)return;const ge=(H.getCurrentImageIdIndex()+1)%Y;Po(H.element,{imageIndex:ge}),H.render()},M);z.push(V)}return()=>{z.forEach(A=>window.clearInterval(A))}},[xe,Se,_t,Z,vn]);const Mc=ot.useCallback(()=>{const z=a.current;z&&(document.fullscreenElement===z?document.exitFullscreen():z.requestFullscreen?z.requestFullscreen():z.webkitRequestFullscreen?z.webkitRequestFullscreen():z.msRequestFullscreen&&z.msRequestFullscreen())},[]);ot.useEffect(()=>{Yi(Array(_t.rows*_t.cols).fill({index:0,total:0,windowCenter:"",windowWidth:"",slicePosition:"",modality:"",orientation:"",resolution:"",spacing:"",focalPoint:""})),Ji(Array(_t.rows*_t.cols).fill(!1)),ht(Array(k).fill(!1))},[_t]),ot.useEffect(()=>{pi()},[Vi,Ho,lo,pi]),ot.useEffect(()=>{if(!jo.some(Boolean))return;const z=re=>{const A=document.querySelector(".preset-menu");A&&!A.contains(re.target)&&Ji(N=>N.map(()=>!1))};return document.addEventListener("mousedown",z),()=>document.removeEventListener("mousedown",z)},[jo]),ot.useEffect(()=>{if(!mr)return;const z=re=>{const A=_.current;A&&!A.contains(re.target)&&(la(!1),P(!1))};return document.addEventListener("mousedown",z),()=>document.removeEventListener("mousedown",z)},[mr]),ot.useEffect(()=>{const z=re=>{if(re.button===3||re.button===4)return re.preventDefault(),!1};return window.addEventListener("mousedown",z,!0),window.addEventListener("mouseup",z,!0),window.addEventListener("auxclick",z,!0),()=>{window.removeEventListener("mousedown",z,!0),window.removeEventListener("mouseup",z,!0),window.removeEventListener("auxclick",z,!0)}},[]),ot.useEffect(()=>{const z=a.current;if(!z)return;const re=A=>{A.preventDefault()};return z.addEventListener("contextmenu",re),()=>{z.removeEventListener("contextmenu",re)}},[]),ot.useEffect(()=>{if(!qr)return;const z=ti(j);as(z)},[ye,qr]),ot.useEffect(()=>{mi.current&&(mi.current.setAttribute("webkitdirectory","true"),mi.current.setAttribute("directory","true"))},[]),ot.useEffect(()=>(window.loadDicomStackFromWadouriList=async z=>{var M;if(!z||z.length===0)return;const re=await gi(z);await Jn(re,{force:!0});const A=await Kn(re),N=((M=A[0])==null?void 0:M.imageIds)||re;let I;try{const V=re[0];if(V&&V.startsWith("wadouri:")){const H=Js(V),Y=await(await fetch(H)).arrayBuffer();I=wr.parseDicom(new Uint8Array(Y)).string("x0020000d")}}catch{}pe(V=>{const H=[...V,{imageIds:re,studyInstanceUID:I,seriesGroups:A}];return oe(q=>{const Y=[...q];return Y[0]=N,Y}),Oe(q=>{const Y=[...q];return Y[0]=H.length-1,Y}),Ge(q=>{const Y=[...q];return Y[0]=A,Y}),fe(q=>{const Y=[...q];return Y[0]=0,Y}),Jn(N),H})},()=>{window.loadDicomStackFromWadouriList=void 0}),[Kn,gi,pe,Jn,Oe,oe]),ot.useEffect(()=>{!Xr||!Z.every(re=>!re||re.length===0||re.every(A=>!!lt("imagePlaneModule",A)))||oe(re=>{let A=!1;const N=re.map(I=>{if(!I||I.length===0)return I;const H=[...I.map(q=>({imageId:q,sliceLoc:(()=>{const Y=lt("imagePlaneModule",q);return Y&&Y.sliceLocation!==void 0?Number(Y.sliceLocation):null})()}))].sort((q,Y)=>q.sliceLoc!==null&&Y.sliceLoc!==null?q.sliceLoc-Y.sliceLoc:q.imageId.localeCompare(Y.imageId)).map(q=>q.imageId);return JSON.stringify(H)!==JSON.stringify(I)?(A=!0,H):I});return A&&In(!0),N})},[Xr,ve]);function as(z){if(!z)return;const re=`CT_${ye}`;qr?(z.setToolEnabled(_d.toolName),z.setToolConfiguration(_d.toolName,{sourceViewportId:re})):z.setToolDisabled(_d.toolName)}function _l(){var re,A,N;const z=F.current;if(z)for(let I=0;I[])),fe(Array(k).fill(0)),he(Array(k).fill(!1)),ht(Array(k).fill(!1)),Ei(Array(k).fill("stack")),Object.values(it.current).forEach(re=>{if(typeof re=="string"&&re.startsWith("blob:"))try{URL.revokeObjectURL(re)}catch{}}),it.current={},Ze({}),rt.current={},In(!1),Ie(0)}function bl(z,re){var V,H;if(console.log("Truncating stack from",z,"to",re),console.log(qt),_t.rows!==1||_t.cols!==1||ve.length!==1||!Z[0]||Z[0].length===0||qt)return alert("Truncation is only allowed when a single stack is loaded in a single viewport (and the order has not been modified in the viewer)."),!1;const A=ve[0],N=A.imageIds;if(z<0||re>=N.length||z>=re)return alert("Invalid truncation bounds."),!1;const I=N.slice(z,re+1);pe([{...A,imageIds:I}]),oe([I]),Oe([0]);const M=F.current;if(M){const q=M.getViewport("CT_0");q&&typeof q.setStack=="function"&&(q.setStack(I),(V=q.setImageIdIndex)==null||V.call(q,0),(H=q.render)==null||H.call(q))}return!0}function Dl(z=0){const re=F.current;if(!re)return null;const A=re.getViewport(`CT_${z}`);return!A||typeof A.getCurrentImageIdIndex!="function"?null:A.getCurrentImageIdIndex()}ot.useEffect(()=>{const z=t||"default";function re(N,I){const M=F.current;if(!M)return;const V=M.getViewport(`CT_${N}`);if(!V||typeof V.getImageIds!="function")return;const q=V.getImageIds().map(ge=>Js(ge)),Y=Js(I),ue=q.indexOf(Y);ue!==-1&&typeof V.setImageIdIndex=="function"&&(Po(V.element,{imageIndex:ue}),Pn(N,V))}window[`getViewport_${z}`]=N=>{const I=F.current;if(I)return I.getViewport(`CT_${N}`)},window[`getAllViewports_${z}`]=()=>{const N=F.current;return N?Array.from({length:k},(I,M)=>N.getViewport(`CT_${M}`)).filter(Boolean):[]},window[`jumpToSliceByImageId_${z}`]=re,window[`resetViewer_${z}`]=_l,window[`clearViewer_${z}`]=El,window[`truncateStack_${z}`]=bl,window[`getCurrentStackPosition_${z}`]=Dl,window[`loadAdditionalStack_${z}`]=async(N,I)=>{var Y,ue;if(!Array.isArray(N)||N.length===0)return;const M=await gi(N);await Jn(M,{force:!0});const V=await Kn(M),H=((Y=V[0])==null?void 0:Y.imageIds)||M;let q=I;if(!q&&((ue=M[0])!=null&&ue.startsWith("wadouri:")))try{const ge=Js(M[0]),_e=await(await fetch(ge)).arrayBuffer();q=wr.parseDicom(new Uint8Array(_e)).string("x0020000d")}catch{}pe(ge=>[...ge,{imageIds:M,studyInstanceUID:q,seriesGroups:V}]),oe(ge=>{const me=[...ge],_e=me.findIndex(De=>!De||De.length===0);return _e!==-1&&(me[_e]=H,Ge(De=>{const Fe=[...De];return Fe[_e]=V,Fe}),fe(De=>{const Fe=[...De];return Fe[_e]=0,Fe})),me}),Jn(H)},window[`loadExternalStack_${z}`]=async(N,I)=>{!Array.isArray(N)||N.length===0||await Aa(ye??0,N,I||"Series","center")},window[`loadExternalStackNewViewport_${z}`]=async(N,I)=>{if(!Array.isArray(N)||N.length===0)return;await Aa(ye??0,N,I||"Series","right")},window[`exportViewerState_${z}`]=()=>{var De;const N=_t.rows*_t.cols,I=vn.slice(0,N),M=Te.slice(0,N),V=ve.map(Fe=>({i:Fe.imageIds,u:Fe.studyInstanceUID,g:Fe.seriesGroups}));console.log("Exporting viewer state with",N,"active viewports"),console.log("modes",I);const H=F.current,q=[],Y=[],ue=[],ge=[],me=[];for(let Fe=0;Fe{try{U.current=!0;const I=typeof N=="string"?JSON.parse(N):N;if(I.grid&&ln(I.grid),I.modes&&Ei(I.modes),I.stacks&&pe(I.stacks.map(q=>({imageIds:q.i,studyInstanceUID:q.u,seriesGroups:Array.isArray(q.g)?q.g:void 0}))),I.stackIdx&&I.stacks){const q=I.stackIdx.map(Y=>{var ue;return((ue=I.stacks[Y])==null?void 0:ue.i)||[]});oe(q),Oe(I.stackIdx),Ge(()=>{const Y=Array(k).fill(null).map(()=>[]);for(let ue=0;uelr===Tt[Di])){console.warn(`Viewport ${Rt}: importedImageIds do not match viewportImageIds`,{importedImageIds:Tt,viewportImageIds:Qt}),ue=!1;break}}catch{ue=!1}}if(!ue&&V{H()},500);return}for(let Rt=0;Rt{try{Po(Nt.element,{imageIndex:I.volumeSliceIndices[Rt]})}catch{}},100)}else{try{Nt.setStack&&(Nt.setStack(Tt),Nt.render())}catch(Qt){console.warn("Failed to set stack for viewport",Rt,Qt)}if(I.stackPos&&typeof I.stackPos[Rt]=="number"&&typeof Nt.setImageIdIndex=="function")try{_n&&Po?Po(Nt.element,{imageIndex:I.stackPos[Rt]}):Nt.setImageIdIndex(I.stackPos[Rt])}catch{}}}const ge=1500;console.log(`Waiting ${ge}ms before applying properties/camera to viewports`),await new Promise(Rt=>setTimeout(Rt,ge));for(let Rt=0;Rt{H()},100)}catch(I){U.current=!1,alert("Failed to import viewer state: "+I)}},window[`exportAnnotations_${z}`]=()=>{try{let N=hr.getAllAnnotations();if(console.log("Exporting annotations:",N),Array.isArray(N)){const I=[_f.toolName,$h.toolName,Ef.toolName,pu.toolName,zd.toolName,Tf.toolName,ml.toolName,mu.toolName,Gh.toolName];N=N.filter(M=>I.includes(M.metadata.toolName))}else return"{}";return JSON.stringify(N,null,2)}catch(N){return alert("Failed to export annotations: "+N),"{}"}},window.__pendingImportAnnotations=window.__pendingImportAnnotations||{};const A=N=>{try{const I=window.__pendingImportAnnotations&&window.__pendingImportAnnotations[N];if(!I||!I.length)return;const M=hr;if(!M||typeof M.addAnnotation!="function")return;for(;(window.__pendingImportAnnotations[N]||[]).length;){const V=(window.__pendingImportAnnotations[N]||[]).shift();V&&Array.isArray(V)&&V.forEach(H=>{try{M.addAnnotation(H,H.annotationUID)}catch(q){console.error("Failed to add queued annotation",q,H)}})}F.current&&F.current.render()}catch(I){console.error("Error flushing pending annotations:",I)}};return window[`importAnnotations_${z}`]=N=>{try{const I=typeof N=="string"?JSON.parse(N):N,M=hr;if(!M||typeof M.addAnnotation!="function"){window.__pendingImportAnnotations[z]=window.__pendingImportAnnotations[z]||[],window.__pendingImportAnnotations[z].push(I),console.warn("importAnnotations: annotation state not ready, queued import",z),setTimeout(()=>A(z),500);return}if(M.removeAllAnnotations)try{M.removeAllAnnotations()}catch(V){console.warn("removeAllAnnotations failed",V)}Array.isArray(I)&&I.forEach(V=>{try{M.addAnnotation(V,V.annotationUID)}catch(H){console.error("Failed to add annotation",H,V)}}),F.current&&F.current.render()}catch(I){console.error("Failed to import annotations:",I,{apiKey:z,cornerstoneTools:!!Rz,renderingEngine:!!F.current});try{alert("Failed to import annotations: "+I)}catch{}}try{A(z)}catch{}},window[`importLegacyAnnotations_${z}`]=N=>{hr.removeAllAnnotations&&hr.removeAllAnnotations();let I;try{I=typeof N=="string"?JSON.parse(N):N}catch{alert("Invalid legacy annotation JSON");return}const M={ArrowAnnotate:"ArrowAnnotate"};Object.entries(I).forEach(([V,H])=>{console.log("Importing legacy annotations for imageId:",V),Object.entries(H).forEach(([q,Y])=>{const ue=M[q]||q;Y.data&&Array.isArray(Y.data)&&Y.data.forEach(ge=>{const me=J7(V,{x:ge.handles.start.y,y:ge.handles.start.x}),_e=J7(V,{x:ge.handles.end.y,y:ge.handles.end.x});console.log("Importing legacy annotation:"),console.log(" Image ID:",V),console.log(" Start World:",me),console.log(" End World:",_e);const De=lt("imagePlaneModule",V);console.log(G4);let Fe=lt("frameOfReferenceUID",V);!Fe&&De&&De.frameOfReferenceUID&&(Fe=De.frameOfReferenceUID);const je=De!=null&&De.rowCosines&&(De!=null&&De.columnCosines)?[De.rowCosines[1]*De.columnCosines[2]-De.rowCosines[2]*De.columnCosines[1],De.rowCosines[2]*De.columnCosines[0]-De.rowCosines[0]*De.columnCosines[2],De.rowCosines[0]*De.columnCosines[1]-De.rowCosines[1]*De.columnCosines[0]]:void 0;Array.isArray(je)&&je.length,typeof ge.rotation=="number"&&ge.rotation;const Ke={annotationUID:ge.uuid,metadata:{toolName:ue,referencedImageId:V,FrameOfReferenceUID:Fe,viewPlaneNormal:je},data:{handles:{points:[me,_e],textBox:ge.handles.textBox},text:ge.text||""},visibility:ge.visible!==!1,active:ge.active||!1};hr.addAnnotation(Ke,Ke.annotationUID)})})}),F.current&&F.current.render()},window[`importLegacyViewport_${z}`]=N=>{let I;try{I=typeof N=="string"?JSON.parse(N):N}catch{alert("Invalid legacy viewport JSON");return}const M=F.current;if(!M)return;const V=`CT_${ye??0}`,H=M.getViewport(V);if(!H)return;const q={};if(I.voi&&(q.voiRange={lower:I.voi.windowCenter-I.voi.windowWidth/2,upper:I.voi.windowCenter+I.voi.windowWidth/2}),typeof I.invert=="boolean"&&(q.invert=I.invert),typeof I.pixelReplication=="boolean"&&(q.interpolationType=I.pixelReplication?0:1),typeof I.hflip=="boolean"&&(q.hflip=I.hflip),typeof I.vflip=="boolean"&&(q.vflip=I.vflip),typeof H.setProperties=="function"&&H.setProperties(q),I.translation||I.scale){const Y=H.getCamera?H.getCamera():{};I.translation&&(Y.translation={...Y.translation,...I.translation}),I.scale&&(Y.parallelScale=200/I.scale),console.log("Applying legacy camera properties:",Y),typeof H.setCamera=="function"&&H.setCamera(Y)}typeof I.rotation=="number"&&H.setRotation(I.rotation),H.render(),Pn(ye??0,H)},()=>{window[`exportViewerState_${z}`]=void 0,window[`importViewerState_${z}`]=void 0,window[`exportAnnotations_${z}`]=void 0,window[`importAnnotations_${z}`]=void 0,window[`importLegacyAnnotations_${z}`]=void 0,window[`importLegacyViewport_${z}`]=void 0,window[`jumpToSliceByImageId_${z}`]=void 0,window[`resetViewer_${z}`]=void 0,window[`clearViewer_${z}`]=void 0,window[`truncateStack_${z}`]=void 0,window[`getCurrentStackPosition_${z}`]=void 0,window[`loadAdditionalStack_${z}`]=void 0,window[`loadExternalStack_${z}`]=void 0,window[`loadExternalStackNewViewport_${z}`]=void 0,window[`getViewport_${z}`]=void 0,window[`getAllViewports_${z}`]=void 0}},[_t,vn,Te,ve,Z,ln,Ei,Oe,pe,oe,pe,oe,Jn]),ot.useEffect(()=>{const z=a.current;if(!z)return;function re(A){if(console.log("Handling arrow key navigation",A.key),console.log("activeViewport",ye),ye===null)return;const N=F.current;if(!N)return;const I=N.getViewport(`CT_${ye}`);if(I){if(console.log(I),vn[ye]==="stack"){if(typeof I.getCurrentImageIdIndex!="function"||typeof I.setImageIdIndex!="function")return;const M=Z[ye];if(!M||M.length===0)return;A.key==="ArrowUp"||A.key==="ArrowRight"?(hc(I,{delta:-1}),A.preventDefault()):(A.key==="ArrowDown"||A.key==="ArrowLeft")&&(hc(I,{delta:1}),A.preventDefault())}vn[ye]==="volume"&&typeof I.getSliceIndex=="function"&&typeof I.getNumberOfSlices=="function"&&I.getNumberOfSlices()>1&&(A.key==="ArrowUp"||A.key==="ArrowRight"?(hc(I,{delta:-1}),A.preventDefault()):(A.key==="ArrowDown"||A.key==="ArrowLeft")&&(hc(I,{delta:1}),A.preventDefault()))}}return z.addEventListener("keydown",re),()=>{z.removeEventListener("keydown",re)}},[ye,vn,Z,Pn]);const Il=ye!==null?Te[ye]:0,Ns=ve[Il];Ns==null||Ns.studyInstanceUID;const[Ol,ks]=ot.useState(()=>Array(k).fill(null)),Ml=_t.rows*_t.cols,Vs=[];for(let z=0;zVr.current[z]=I,style:{flex:1,border:re?"1px solid #222":"none",background:"#000",minWidth:0,minHeight:0,position:"relative",overflow:"hidden",flexDirection:"column",gridRow:Math.floor(z/_t.cols)+1,gridColumn:z%_t.cols+1,height:"100%",boxShadow:ye===z?"0 0 0 4px #1976d2, 0 0 16px 4px #1976d2cc":void 0,zIndex:ye===z?10:1},onClick:()=>{Ie(z),la(!1)},onDoubleClick:()=>Fi(z),onDragEnter:I=>{const M=I.dataTransfer.types,V=M.includes("text/stack-idx"),H=M.includes("text/dv3d-imageids");if(!V&&!H)return;I.preventDefault(),H&&R(!0);const q=Ma(I);K({viewportIdx:z,zone:q})},onDragOver:I=>{const M=I.dataTransfer.types,V=M.includes("text/stack-idx"),H=M.includes("text/dv3d-imageids");if(!V&&!H)return;I.preventDefault();const q=Ma(I),Y=_i(q);K({viewportIdx:z,zone:q}),I.dataTransfer.dropEffect=Y===q?"copy":"move"},onDragLeave:I=>{if((X==null?void 0:X.viewportIdx)!==z)return;const M=I.relatedTarget;M&&I.currentTarget.contains(M)||K(null)},onDrop:I=>{I.preventDefault();const M=I.dataTransfer.getData("text/dv3d-imageids");if(M){const q=I.dataTransfer.getData("text/dv3d-stack-name")||"Series";try{const Y=JSON.parse(M),ue=Ma(I);Aa(z,Y,q,ue).catch(ge=>{console.error("Failed to apply external drop:",ge)})}catch(Y){console.error("Invalid text/dv3d-imageids payload:",Y)}K(null),R(!1);return}const V=I.dataTransfer.getData("text/stack-idx"),H=parseInt(V,10);if(!isNaN(H)){const q=Ma(I);Na(z,H,q).catch(Y=>{console.error("Failed to apply dropped stack:",Y)})}K(null),be(null),R(!1)},children:[(Le!==null||$)&&A&&Re.jsx("div",{style:{position:"absolute",inset:0,zIndex:19,pointerEvents:"none",background:"rgba(0,0,0,0.08)"},children:Re.jsx("div",{style:{position:"absolute",left:N==="left"?0:N==="right"?"50%":"20%",top:N==="top"?0:N==="bottom"?"50%":"20%",width:N==="left"||N==="right"?"50%":"60%",height:N==="top"||N==="bottom"?"50%":"60%",border:"2px solid #90caf9",boxShadow:"0 0 0 9999px rgba(17, 29, 45, 0.22)",background:"rgba(25, 118, 210, 0.28)",borderRadius:6,display:"flex",alignItems:"center",justifyContent:"center",color:"#fff",fontSize:12,fontWeight:700,textTransform:"uppercase",letterSpacing:.4},children:N==="center"?"Load Here":`Split ${N}`})}),Re.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:()=>{Ei(I=>{const M=[...I];return M[z]=I[z]==="stack"?"volume":"stack",M})},children:vn[z]==="stack"?"Volume":"Stack"}),vn[z]==="volume"&&Re.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:[Re.jsx("button",{style:{background:"#444",color:"#fff",border:"none",borderRadius:"3px",padding:"2px 8px",cursor:"pointer",fontSize:"12px",marginRight:"2px"},onClick:()=>{const I=F.current,M=I==null?void 0:I.getViewport(`CT_${z}`);M&&M.setOrientation&&(M.setOrientation("axial"),M.render())},children:"Axial"}),Re.jsx("button",{style:{background:"#444",color:"#fff",border:"none",borderRadius:"3px",padding:"2px 8px",cursor:"pointer",fontSize:"12px",marginRight:"2px"},onClick:()=>{const I=F.current,M=I==null?void 0:I.getViewport(`CT_${z}`);M&&M.setOrientation&&(M.setOrientation("sagittal"),M.render())},children:"Sagittal"}),Re.jsx("button",{style:{background:"#444",color:"#fff",border:"none",borderRadius:"3px",padding:"2px 8px",cursor:"pointer",fontSize:"12px"},onClick:()=>{const I=F.current,M=I==null?void 0:I.getViewport(`CT_${z}`);M&&M.setOrientation&&(M.setOrientation("coronal"),M.render())},children:"Coronal"})]}),Re.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:I=>{I.stopPropagation();const M=Vr.current[z];document.fullscreenElement===M?document.exitFullscreen():M!=null&&M.requestFullscreen?M.requestFullscreen():M!=null&&M.webkitRequestFullscreen?M.webkitRequestFullscreen():M!=null&&M.msRequestFullscreen&&M.msRequestFullscreen()},onMouseEnter:()=>b(z),onMouseLeave:()=>b(null),children:[Re.jsx("span",{style:{fontSize:"18px",lineHeight:1},children:"⛶"}),E===z&&Re.jsx("span",{style:{marginLeft:6},children:document.fullscreenElement===Vr.current[z]?"Exit Fullscreen":"Fullscreen"})]}),vn[z]==="stack"&&W&&(()=>{var _e;const I=Z[z],V=(hr.getAllAnnotations()||[]).filter(De=>De.metadata&&De.metadata.referencedImageId&&I.includes(De.metadata.referencedImageId)&&De.metadata.toolName!==Wa.toolName);if(!V.length)return null;const H=F.current,q=H==null?void 0:H.getViewport(`CT_${z}`),Y=((_e=q==null?void 0:q.getCurrentImageIdIndex)==null?void 0:_e.call(q))??0,ue=I[Y],ge=V.filter(De=>De.metadata.referencedImageId===ue),me=Ol[z];return Re.jsxs("div",{style:{position:"absolute",left:"50%",bottom:60,transform:"translateX(-50%)",zIndex:30,display:"flex",gap:4,pointerEvents:"auto",alignItems:"center"},children:[Re.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 De=F.current,Fe=De==null?void 0:De.getViewport(`CT_${z}`);if(!Fe||typeof Fe.getCurrentImageIdIndex!="function")return;const je=Fe.getCurrentImageIdIndex(),Ke=iO(je,I,V,-1);if(Ke!==null&&typeof Fe.setImageIdIndex=="function"){Po(Fe.element,{imageIndex:Ke}),Pn(z,Fe);const tt=I[Ke],ct=V.filter(yt=>yt.metadata.referencedImageId===tt);qo(z,ct.length>0?ct[0].annotationUID:null)}},children:Re.jsx("span",{"aria-hidden":"true",children:"◀"})}),Re.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 De=F.current,Fe=De==null?void 0:De.getViewport(`CT_${z}`);if(!Fe||typeof Fe.getCurrentImageIdIndex!="function")return;const je=Fe.getCurrentImageIdIndex(),Ke=iO(je,I,V,1);if(Ke!==null&&typeof Fe.setImageIdIndex=="function"){Po(Fe.element,{imageIndex:Ke}),Pn(z,Fe);const tt=I[Ke],ct=V.filter(yt=>yt.metadata.referencedImageId===tt);qo(z,ct.length>0?ct[0].annotationUID:null)}},children:Re.jsx("span",{"aria-hidden":"true",children:"▶"})}),ge.length>0&&Re.jsx("div",{style:{display:"flex",gap:2,alignItems:"center"},children:ge.map(De=>Re.jsxs("div",{style:{display:"flex",alignItems:"center",background:me===De.annotationUID?"rgb(4, 225, 0)":"#444",color:me===De.annotationUID?"#222":"#fff",borderRadius:"4px",padding:"2px 6px",marginRight:2,cursor:"pointer",border:me===De.annotationUID?"2px solid #1976d2":"none",fontWeight:me===De.annotationUID?"bold":"normal"},onClick:()=>qo(z,De.annotationUID),children:[Re.jsxs("span",{style:{marginRight:4},title:De.metadata.toolName||"Annotation",children:[me===De.annotationUID?"★ ":"",Re.jsx("span",{style:{fontSize:14,lineHeight:1},children:u8e(De.metadata.toolName)})]}),Re.jsx("button",{style:{background:"transparent",color:"#f44336",border:"1px solid #f44336",borderRadius:3,width:16,height:16,fontSize:10,lineHeight:1,cursor:"pointer",marginLeft:4,display:"flex",alignItems:"center",justifyContent:"center",opacity:.95,padding:0},title:"Delete this annotation","aria-label":"Delete annotation",onClick:Fe=>{Fe.stopPropagation(),Ir(z,De.annotationUID,ge)},children:Re.jsx("span",{"aria-hidden":"true",children:"✖"})})]},De.annotationUID))})]})})(),Re.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:vn[z]==="stack"?Re.jsxs(Re.Fragment,{children:[Re.jsxs("div",{children:["Image: ",(Fs=Ht[z])==null?void 0:Fs.index," / ",(Pc=Ht[z])==null?void 0:Pc.total,(ss=Ht[z])!=null&&ss.frameIndex&&((Us=Ht[z])!=null&&Us.totalFrames)?Re.jsxs(Re.Fragment,{children:["   [Frame: ",(Bs=Ht[z])==null?void 0:Bs.frameIndex," / ",(cs=Ht[z])==null?void 0:cs.totalFrames,"]"]}):null]}),Re.jsxs("div",{children:["WC: ",(Rc=Ht[z])==null?void 0:Rc.windowCenter,"   WW: ",(Gs=Ht[z])==null?void 0:Gs.windowWidth]}),te&&Re.jsxs(Re.Fragment,{children:[Re.jsxs("div",{children:["Ori: ",((Lc=Ht[z])==null?void 0:Lc.orientation)||"N/A"]}),((Ws=Ht[z])==null?void 0:Ws.resolution)&&Re.jsxs("div",{children:["Res: ",(Ac=Ht[z])==null?void 0:Ac.resolution]}),((Nc=Ht[z])==null?void 0:Nc.spacing)&&Re.jsxs("div",{children:["Spacing: ",(kc=Ht[z])==null?void 0:kc.spacing]}),((Vc=Ht[z])==null?void 0:Vc.focalPoint)&&Re.jsxs("div",{children:["Pos: ",(ls=Ht[z])==null?void 0:ls.focalPoint]})]})]}):Re.jsxs("div",{children:["Slice: ",(us=Ht[z])==null?void 0:us.index," / ",(bo=Ht[z])==null?void 0:bo.total,((Yo=Ht[z])==null?void 0:Yo.slicePosition)&&Re.jsxs("span",{children:["   (",(to=Ht[z])==null?void 0:to.slicePosition,")"]}),Re.jsx("br",{}),"WC: ",(zs=Ht[z])==null?void 0:zs.windowCenter,"   WW: ",($s=Ht[z])==null?void 0:$s.windowWidth,te&&Re.jsxs(Re.Fragment,{children:[Re.jsx("br",{}),"Ori: ",((fs=Ht[z])==null?void 0:fs.orientation)||"N/A",((js=Ht[z])==null?void 0:js.resolution)&&Re.jsxs(Re.Fragment,{children:[Re.jsx("br",{}),"Res: ",(Va=Ht[z])==null?void 0:Va.resolution]}),((Hs=Ht[z])==null?void 0:Hs.spacing)&&Re.jsxs(Re.Fragment,{children:[Re.jsx("br",{}),"Spacing: ",(ae=Ht[z])==null?void 0:ae.spacing]}),((se=Ht[z])==null?void 0:se.focalPoint)&&Re.jsxs(Re.Fragment,{children:[Re.jsx("br",{}),"Pos: ",(Ce=Ht[z])==null?void 0:Ce.focalPoint]})]})]})}),Re.jsxs("div",{style:{position:"absolute",right:8,bottom:8,zIndex:110,pointerEvents:"auto",display:"flex",alignItems:"flex-end",gap:6},children:[Re.jsx("button",{style:{background:de[z]?"rgba(30,120,200,0.95)":"rgba(0,0,0,0.7)",color:"#fff",border:"1px solid rgba(255,255,255,0.2)",borderRadius:"4px",fontSize:"12px",fontWeight:700,padding:"6px 9px",cursor:"pointer",minHeight:30},title:de[z]?"Hide cine controls":"Show cine controls",onClick:I=>{I.stopPropagation(),ht(M=>{const V=[...M],H=!V[z];return V[z]=H,H||he(q=>{const Y=[...q];return Y[z]=!1,Y}),V})},children:"Cine"}),Re.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:jo[z]?"0 2px 8px rgba(0,0,0,0.3)":void 0,pointerEvents:"auto"},onClick:I=>I.stopPropagation(),children:[Re.jsxs("div",{style:{padding:"6px 12px",fontWeight:"bold",userSelect:"none"},onClick:I=>{I.stopPropagation(),Ji(M=>{const V=[...M];return V[z]=!V[z],V})},children:["Presets (",((Ue=Ht[z])==null?void 0:Ue.modality)||"Unknown",")",Re.jsx("span",{style:{float:"right",fontWeight:"normal"},children:jo[z]?"▲":"▼"})]}),jo[z]&&Re.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:111,pointerEvents:"auto"},onClick:I=>I.stopPropagation(),children:(()=>{var V;const I=Q7((V=Ht[z])==null?void 0:V.modality);let M=0;return I.map(H=>{let q="";return H.action==="reset"?q="0":H.action==="preset"&&(M+=1,q=String(M)),Re.jsxs("button",{title:q?`Shortcut: ${q}`:void 0,style:{display:"block",width:"100%",margin:"2px 0",background:H.action==="preset"?"#333":"#444",color:"#fff",border:"none",borderRadius:"3px",cursor:"pointer",padding:H.action==="preset"?"4px 0":"6px 0",fontSize:"13px",opacity:.9,fontWeight:H.action==="preset"?"normal":"600"},onClick:Y=>{Y.stopPropagation(),Xo(z,H),Ji(ue=>{const ge=[...ue];return ge[z]=!1,ge})},children:[H.name,q?` (${q})`:""]},H.name)})})()})]})]}),vn[z]==="stack"&&(de[z]||(Ve[z]||[]).length>1||((Ye=Ht[z])==null?void 0:Ye.frameIndex)&&((Qe=Ht[z])==null?void 0:Qe.totalFrames))&&Re.jsxs("div",{style:{position:"absolute",left:"50%",bottom:8,transform:"translateX(-50%)",zIndex:36,background:"rgba(15,15,15,0.82)",border:"1px solid rgba(255,255,255,0.18)",borderRadius:8,padding:"6px 10px",display:"flex",alignItems:"center",gap:8,pointerEvents:"auto",minWidth:200,maxWidth:"72%"},onClick:I=>I.stopPropagation(),children:[de[z]&&((et=Ht[z])==null?void 0:et.total)>1&&Re.jsxs(Re.Fragment,{children:[Re.jsx("button",{style:{background:Se[z]?"#d32f2f":"#2e7d32",color:"#fff",border:"none",borderRadius:4,fontSize:12,padding:"4px 8px",cursor:"pointer"},title:Se[z]?"Pause cine":"Play cine",onClick:()=>{he(I=>{const M=[...I];return M[z]=!M[z],M})},children:Se[z]?"Pause":"Play"}),Re.jsxs("label",{style:{color:"#ddd",fontSize:11,display:"flex",alignItems:"center",gap:4},children:["FPS",Re.jsx("input",{type:"range",min:1,max:30,step:1,value:Math.max(1,Math.min(30,Math.round(xe[z]||12))),onChange:I=>{const M=Number(I.target.value);qe(V=>{const H=[...V];return H[z]=M,H})}}),Re.jsx("span",{style:{minWidth:22,textAlign:"right"},children:Math.round(xe[z]||12)})]})]}),((Je=Ht[z])==null?void 0:Je.frameIndex)&&((at=Ht[z])==null?void 0:at.totalFrames)&&((pt=Ht[z])==null?void 0:pt.totalFrames)>1&&Re.jsxs(Re.Fragment,{children:[Re.jsx("span",{style:{color:"#fff",fontSize:12,whiteSpace:"nowrap"},children:"Frame"}),Re.jsx("input",{type:"range",min:1,max:((Lt=Ht[z])==null?void 0:Lt.totalFrames)||1,step:1,value:Math.max(1,Math.min(((Bt=Ht[z])==null?void 0:Bt.totalFrames)||1,(($t=Ht[z])==null?void 0:$t.frameIndex)||1)),onChange:I=>{var q;const M=Number(I.target.value),H=(Z[z]||[]).findIndex(Y=>{const ue=Y.match(/&frame=(\d+)/);return ue&&parseInt(ue[1],10)===M});if(H>=0){const Y=(q=F.current)==null?void 0:q.getViewport(`CT_${z}`);Y&&typeof Po=="function"&&Po(Y.element,{imageIndex:H})}},style:{width:100}}),Re.jsxs("span",{style:{color:"#e0e0e0",fontSize:11,minWidth:50,textAlign:"right"},children:[(ne=Ht[z])==null?void 0:ne.frameIndex," / ",(ee=Ht[z])==null?void 0:ee.totalFrames]})]}),(Ve[z]||[]).length>1&&Re.jsxs(Re.Fragment,{children:[Re.jsx("span",{style:{color:"#fff",fontSize:12,whiteSpace:"nowrap"},children:"Series"}),Re.jsx("input",{type:"range",min:0,max:Math.max(0,(Ve[z]||[]).length-1),step:1,value:Math.max(0,Math.min((Ve[z]||[]).length-1,ce[z]||0)),onChange:I=>{ka(z,Number(I.target.value))},style:{width:140}}),Re.jsx("span",{style:{color:"#e0e0e0",fontSize:11,maxWidth:180,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:((Ae=(we=Ve[z])==null?void 0:we[ce[z]||0])==null?void 0:Ae.label)||"",children:((st=($e=Ve[z])==null?void 0:$e[ce[z]||0])==null?void 0:st.label)||"Series"})]})]}),vn[z]==="stack"&&Z[z]&&Re.jsx("div",{style:{position:"absolute",top:"10%",right:8,width:"14px",height:"80%",maxHeight:"100%",minHeight:0,zIndex:35,display:Z[z].length>0?"flex":"none",alignItems:"flex-start",justifyContent:"center",pointerEvents:"auto",flexDirection:"column",padding:0},children:(()=>{const I=Z[z]||[],M=I.length;if(M===0)return null;const V=F.current,H=V==null?void 0:V.getViewport(`CT_${z}`),q=H&&typeof H.getCurrentImageIdIndex=="function"?H.getCurrentImageIdIndex():-1,Y=new Set(Ms[z]||[]),ue=I.map(Fe=>Fe.startsWith("external:")?!0:!!lt("imagePlaneModule",Fe)||!!lt("generalSeriesModule",Fe)),ge=ue.reduce((Fe,je)=>Fe+(je?1:0),0),me=I.reduce((Fe,je,Ke)=>Fe+(Y.has(Ke)?1:0),0),_e=Math.min(M,180),De=Array.from({length:_e},()=>({loaded:!1,viewed:!1,current:!1}));for(let Fe=0;Fe{var Vt;const Ke=Fe.currentTarget.getBoundingClientRect(),tt=Math.min(Ke.height,Math.max(0,Fe.clientY-Ke.top)),ct=Ke.height>0?tt/Ke.height:0,yt=Math.min(M-1,Math.max(0,Math.round(ct*(M-1)))),Zt=(Vt=F.current)==null?void 0:Vt.getViewport(`CT_${z}`);Zt&&typeof Zt.setImageIdIndex=="function"&&vn[z]==="stack"&&(Po(Zt.element,{imageIndex:yt}),Pn(z,Zt))},children:[De.map((Fe,je)=>{let Ke="#3f3f3f";return Fe.loaded&&(Ke="#2e7d32"),Fe.viewed&&(Ke="#1565c0"),Fe.current&&(Ke="#fbc02d"),Re.jsx("div",{style:{width:"100%",height:`${100/_e}%`,minHeight:1,background:Ke,opacity:Fe.loaded||Fe.viewed||Fe.current?.95:.45,borderBottom:je<_e-1?"1px solid #222":"none",pointerEvents:"none"}},je)}),q>=0&&M>_e&&Re.jsx("div",{style:{position:"absolute",left:0,right:0,top:`${q/Math.max(1,M-1)*100}%`,height:2,background:"#ffeb3b",boxShadow:"0 0 4px #ffeb3b",transform:"translateY(-1px)",pointerEvents:"none"}})]})})()}),vn[z]==="volume"&&(()=>{const I=F.current,M=I==null?void 0:I.getViewport(`CT_${z}`);let V=0,H=0;return M&&typeof M.getNumberOfSlices=="function"&&typeof M.getSliceIndex=="function"&&(V=M.getNumberOfSlices(),H=M.getSliceIndex()),V>1?Re.jsx("div",{style:{position:"absolute",top:"10%",right:8,width:"12px",height:"80%",maxHeight:"100%",minHeight:0,zIndex:30,display:"flex",alignItems:"flex-start",justifyContent:"center",pointerEvents:"auto",flexDirection:"column",padding:0},children:Re.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",cursor:"pointer"},onClick:q=>{const ue=q.currentTarget.getBoundingClientRect(),ge=q.clientY-ue.top,me=Math.floor(ge/ue.height*V),_e=F.current,De=_e==null?void 0:_e.getViewport(`CT_${z}`);De&&(Po(De.element,{imageIndex:me}),De.render(),Pn(z,De))},children:Array.from({length:V}).map((q,Y)=>{const ue=Y===H;return Re.jsx("div",{style:{width:"100%",height:`${100/V}%`,minHeight:ue?1:0,background:ue?"linear-gradient(to right, #ffeb3b 60%, #ff9800 100%)":"#444",opacity:ue?.95:.4,transition:"background 0.3s, opacity 0.3s",borderBottom:Y1||!Z[z]||Z[z].length===0)&&Re.jsx("div",{style:{position:"absolute",left:0,right:0,bottom:vn[z]==="stack"&&(de[z]||(Ve[z]||[]).length>1)?56:8,zIndex:20,display:"flex",alignItems:"center",justifyContent:"center",pointerEvents:"auto",width:"100%",background:"none",borderRadius:"0",padding:0},children:Re.jsxs("div",{style:{position:"relative"},children:[Re.jsxs("button",{onClick:I=>{I.stopPropagation(),O(M=>M===z?null:z)},style:{padding:"6px 12px",background:"#333",color:"#fff",border:"1px solid #444",borderRadius:"4px",cursor:"pointer",pointerEvents:"auto",fontSize:13},title:"Choose stack",children:[(()=>{const I=Array.isArray(Te)?Te[z]:void 0,M=typeof I=="number"&&ve[I]?ve[I]:void 0,V=M&&Array.isArray(M.imageIds)?M.imageIds:[],H=M?M.name||(M.caseId?`Case: ${M.caseId}`:void 0):void 0;if(H)return H;if(V.length>0)return`Stack ${typeof I=="number"?I+1:"1"}`;const q=Z[z]||[];return q.length>0?`Stack (${q.length} images)`:"No stack"})(),Re.jsx("span",{style:{marginLeft:8,opacity:.8},children:D===z?"▲":"▼"})]}),D===z&&Re.jsx("div",{ref:I=>{I&&I.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:220,maxHeight:260,overflowY:"auto",overscrollBehavior:"contain",scrollbarWidth:"thin",padding:6},role:"listbox",onMouseDown:I=>I.stopPropagation(),onWheel:I=>{var V;try{I.stopPropagation()}catch{}try{I.preventDefault()}catch{}const M=I.currentTarget;if(M){const H=I.deltaY??((V=I.nativeEvent)==null?void 0:V.deltaY)??0;M.scrollTop+=H}},onBlur:I=>{const M=I.currentTarget;setTimeout(()=>{if(!M){O(null);return}M.contains(document.activeElement)||O(null)},0)},children:(()=>{const I={};return ve.forEach((M,V)=>{const H=M.studyId||M.studyInstanceUID||"Unspecified";I[H]||(I[H]=[]),I[H].push({idx:V,stack:M})}),Object.keys(I).map(M=>Re.jsxs("div",{style:{marginBottom:6},children:[Re.jsx("div",{style:{fontSize:12,color:"#aaa",padding:"4px 8px",fontWeight:700},children:M==="Unspecified"?"Unspecified study":`Study: ${M}`}),Re.jsx("div",{children:I[M].map(({idx:V,stack:H})=>{const q=Array.isArray(H.imageIds)?H.imageIds:[],Y=H&&(H.name||H.caseId)?H.name||`Case: ${H.caseId}`:`Stack ${V+1}`,ue=q.length,ge=!Array.isArray(q)||ue===0;return Re.jsxs("button",{role:"option","aria-selected":!1,title:ge?"Invalid stack descriptor":`${Y} — ${ue} image${ue===1?"":"s"}${H!=null&&H.caseId?` — case ${H.caseId}`:""}`,style:{display:"flex",flexDirection:"column",alignItems:"flex-start",width:"100%",padding:"8px 12px",background:"transparent",color:"#fff",border:"none",textAlign:"left",cursor:ge?"not-allowed":"pointer"},onClick:me=>{if(me.stopPropagation(),ge){console.warn(`Attempted to select invalid stack at index ${V}`,H);return}dt(z,V).catch(_e=>console.error("Failed to load stack:",_e)),O(null)},children:[Re.jsx("div",{style:{fontWeight:"600",fontSize:13},children:Y}),Re.jsxs("div",{style:{fontSize:12,opacity:.7},children:[ue," image",ue===1?"":"s",H!=null&&H.caseId?` • case ${H.caseId}`:""]})]},V)})})]},M))})()})]})})]},z))}return Re.jsxs("div",{ref:a,style:{position:"relative",inset:0,width:"100%",height:"100%",boxSizing:"border-box",background:"#222",padding:"12px",overflow:"hidden"},children:[Vn&&Re.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:Vn==="annotations"?"Loading Annotations...":Vn==="displayset"?"Loading Display Set...":"Loading Viewer State..."}),On&&Re.jsxs("div",{style:{position:"fixed",top:12,left:12,right:12,zIndex:1e4,background:"#fff3cd",color:"#856404",border:"1px solid #ffeeba",padding:"10px 14px",borderRadius:6,display:"flex",alignItems:"center",justifyContent:"space-between",gap:12},children:[Re.jsxs("div",{style:{flex:1,fontSize:14},children:[Re.jsx("strong",{children:"Graphics error:"})," The viewer encountered a WebGL/graphics error and may be unstable. Please reload the page.",kr?Re.jsx("div",{style:{marginTop:6,fontSize:12,color:"#6b4f00"},children:kr}):null]}),Re.jsxs("div",{style:{display:"flex",gap:8,alignItems:"center"},children:[Re.jsx("button",{onClick:()=>window.location.reload(),style:{padding:"6px 10px"},children:"Reload"}),Re.jsx("button",{onClick:()=>qi(!1),style:{padding:"6px 10px"},children:"Dismiss"})]})]}),!h&&Re.jsx("button",{onClick:()=>g(!0),"aria-pressed":!1,title:"Open stacks",style:{position:"absolute",right:8,top:76,zIndex:120,width:24,height:42,background:"#1976d2",color:"#fff",border:"none",borderRadius:5,cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",boxShadow:"0 2px 8px rgba(0,0,0,0.3)",pointerEvents:"auto"},children:"▶"}),Re.jsxs("div",{children:[Re.jsx("button",{style:{position:"absolute",top:"50%",transform:"translateY(-50%)",left:li,zIndex:200,width:S,height:S,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:()=>Ls(z=>!z),"aria-label":"Open menu",children:"☰"}),fa&&Re.jsx("div",{style:{position:"absolute",top:0,left:0,width:C,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:Re.jsxs("div",{style:{flex:1,minHeight:0,overflowY:"auto",display:"flex",flexDirection:"column"},children:[Re.jsxs("div",{style:{fontWeight:"bold",fontSize:18,marginBottom:24},children:["Menu",Re.jsx("button",{style:{float:"right",background:"transparent",color:"#fff",border:"none",fontSize:"22px",cursor:"pointer"},onClick:()=>Ls(!1),"aria-label":"Close menu",children:"×"})]}),Re.jsxs("div",{style:{display:"flex",gap:8,alignItems:"center",marginBottom:8},children:[Re.jsxs("label",{style:{fontSize:13},children:[Re.jsx("input",{type:"radio",name:"folderLoadMode",value:"add",checked:is==="add",onChange:()=>Ra("add")})," Add (append)"]}),Re.jsxs("label",{style:{fontSize:13},children:[Re.jsx("input",{type:"radio",name:"folderLoadMode",value:"replace",checked:is==="replace",onChange:()=>Ra("replace")})," Replace all"]})]}),Re.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:Ic,children:"Load DICOM Folder"}),Re.jsx("input",{ref:qn,type:"file",style:{display:"none"},multiple:!0,onChange:os}),Re.jsx("input",{ref:mi,type:"file",style:{display:"none"},multiple:!0,onChange:os,accept:".dcm,application/dicom"}),Re.jsxs("div",{style:{marginBottom:"18px",display:"flex",alignItems:"center",gap:"8px"},children:[Re.jsx("input",{type:"checkbox",id:"orderBySliceLocation",checked:Xr,onChange:z=>Os(z.target.checked),style:{accentColor:"#666"}}),Re.jsx("label",{htmlFor:"orderBySliceLocation",style:{fontSize:"15px",cursor:"pointer"},children:"Order by Slice Location"})]}),Re.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:Dc,children:"Show DICOM Metadata"}),Re.jsxs("button",{style:{padding:"10px 18px",background:Ut?"#1976d2":"#333",color:"#fff",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",fontSize:"15px",marginBottom:"18px",width:"100%"},onClick:()=>En(z=>!z),children:[Ut?"Disable":"Enable"," Cross Reference Lines"]}),Re.jsxs("button",{style:{padding:"10px 18px",background:qr?"#1976d2":"#333",color:"#fff",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",fontSize:"15px",marginBottom:"18px",width:"100%"},onClick:()=>Gt(z=>!z),children:[qr?"Disable":"Enable"," Reference Lines"]}),Re.jsx("button",{onClick:Xi,style:{margin:8,padding:8},children:"Sort All Viewports by Slice Location"}),Re.jsx("button",{style:{padding:"10px 18px",background:To?"#1976d2":"#333",color:"#fff",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",fontSize:"15px",marginBottom:"18px",width:"100%"},onClick:()=>so(z=>!z),children:To?"Disable Alt Key for Reference Cursors (Shift always works)":"Enable Alt Key for Reference Cursors (Shift always works)"}),Re.jsxs("button",{style:{padding:"10px 18px",background:W?"#1976d2":"#333",color:"#fff",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",fontSize:"15px",marginBottom:"18px",width:"100%"},onClick:()=>J(z=>!z),children:[W?"Hide":"Show"," Annotation Navigation"]}),Re.jsxs("button",{style:{padding:"10px 18px",background:te?"#1976d2":"#333",color:"#fff",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",fontSize:"15px",marginBottom:"18px",width:"100%"},onClick:()=>le(z=>!z),children:[te?"Disable":"Enable"," Volume Diagnostics"]})]})})]}),Re.jsxs("div",{ref:_,className:"grid-menu-hover-container",style:{position:"absolute",top:mr||L?8:-18,left:"50%",transform:"translateX(-50%)",zIndex:100,display:"flex",flexDirection:"row",alignItems:"flex-start",gap:8,width:"auto",pointerEvents:"auto",transition:"top 180ms ease",paddingTop:28,marginTop:-28,paddingBottom:12},onMouseEnter:()=>P(!0),onMouseLeave:()=>{mr||P(!1)},children:[Re.jsxs("button",{style:{height:40,padding:"6px 12px 6px 10px",background:"#222",color:"#fff",border:"none",borderRadius:"0 0 4px 4px",fontWeight:"bold",cursor:"pointer",fontSize:"14px",boxShadow:"0 2px 8px rgba(0,0,0,0.2)",display:"inline-flex",alignItems:"center",gap:8},title:"Toggle viewer fullscreen",onFocus:()=>P(!0),onClick:()=>{P(!0),Mc()},children:[Re.jsx("span",{style:{fontSize:16,lineHeight:1},children:"⛶"}),Re.jsx("span",{children:"Fullscreen"})]}),Re.jsxs("div",{style:{position:"relative",display:"flex",flexDirection:"column",alignItems:"stretch"},children:[Re.jsxs("button",{className:"grid-menu-btn",style:{height:40,padding:"6px 14px 6px 10px",background:"#222",color:"#fff",border:"none",borderRadius:"0 0 4px 4px",fontWeight:"bold",cursor:"pointer",fontSize:"14px",boxShadow:"0 2px 8px rgba(0,0,0,0.2)",display:"inline-flex",alignItems:"center",gap:10,justifyContent:"space-between",minWidth:136},onFocus:()=>P(!0),onClick:()=>{P(!0),la(z=>!z)},tabIndex:0,children:[Re.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:8},children:[Re.jsx("span",{style:{display:"grid",gridTemplateColumns:`repeat(${_t.cols}, 5px)`,gridTemplateRows:`repeat(${_t.rows}, 5px)`,gap:2,padding:1},children:Array.from({length:_t.rows*_t.cols}).map((z,re)=>Re.jsx("span",{style:{width:5,height:5,borderRadius:1,background:"#90caf9",display:"block"}},re))}),Re.jsxs("span",{children:[_t.rows,"x",_t.cols]})]}),Re.jsx("span",{style:{opacity:.8},children:mr?"▲":"▼"})]}),mr&&Re.jsx("div",{style:{position:"absolute",top:"calc(100% + 8px)",right:0,background:"#222",color:"#fff",borderRadius:"6px",boxShadow:"0 2px 12px rgba(0,0,0,0.4)",padding:"12px",display:"grid",gridTemplateColumns:"repeat(3, minmax(68px, 1fr))",gap:"8px",zIndex:200,pointerEvents:"auto"},onMouseDown:z=>z.stopPropagation(),children:Pa.map(z=>Re.jsxs("button",{style:{minWidth:"68px",height:"54px",background:z.rows===_t.rows&&z.cols===_t.cols?"#444":"#333",color:"#fff",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",fontSize:"13px",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:6},onClick:()=>{eo(),ln({rows:z.rows,cols:z.cols}),la(!1),P(!1)},children:[Re.jsx("span",{style:{display:"grid",gridTemplateColumns:`repeat(${z.cols}, 6px)`,gridTemplateRows:`repeat(${z.rows}, 6px)`,gap:2},children:Array.from({length:z.rows*z.cols}).map((re,A)=>Re.jsx("span",{style:{width:6,height:6,borderRadius:1,background:"#90caf9",display:"block"}},A))}),Re.jsxs("span",{children:[z.rows,"x",z.cols]})]},`${z.rows}x${z.cols}`))})]})]}),Re.jsxs("div",{style:{display:"flex",flexDirection:"row",height:"calc(100% - 48px)",gap:8},children:[Re.jsxs("div",{style:{flex:1,display:"grid",margin:3,gridTemplateRows:`repeat(${_t.rows}, 1fr)`,gridTemplateColumns:`repeat(${_t.cols}, 1fr)`,gap:"5px",minHeight:0,minWidth:0,zIndex:1,position:"relative"},children:[Vs,Re.jsx("button",{style:{position:"absolute",top:8,right:8,zIndex:2600,padding:"6px 12px",background:"#222",color:"#fff",border:"none",borderRadius:"4px",cursor:"pointer",opacity:.85,userSelect:"none"},onClick:()=>d(!0),children:"Settings"})]}),Re.jsxs("div",{style:{width:h?p:0,transition:"width 220ms ease",display:"flex",flexDirection:"column",pointerEvents:h?"auto":"none",overflow:"hidden",position:"relative"},children:[h&&Re.jsx("div",{onMouseDown:La,title:"Resize stacks panel",style:{position:"absolute",left:0,top:0,width:8,height:"100%",cursor:"col-resize",zIndex:2800,background:"linear-gradient(to right, rgba(100,181,246,0.25), rgba(100,181,246,0))"}}),Re.jsx("div",{style:{pointerEvents:"auto",width:"100%",height:"100%"},children:Re.jsxs("div",{style:{height:"100%",width:"100%",background:"#1f2428",color:"#fff",boxShadow:"0 2px 14px rgba(0,0,0,0.45)",borderLeft:"1px solid #2f3336",transform:"translateX(0)",transition:"transform 220ms ease",display:"flex",flexDirection:"column",overflow:"hidden"},children:[Re.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"8px 12px",borderBottom:"1px solid #2b2f31"},children:[Re.jsx("div",{style:{fontWeight:700},children:"Stacks"}),Re.jsxs("div",{style:{fontSize:12,color:"#9bb4c8"},children:["Active VP: ",ye!==null?ye+1:"-"]}),Re.jsx("div",{style:{display:"flex",gap:8,alignItems:"center"},children:Re.jsx("button",{title:"Close",onClick:()=>{g(!1)},style:{background:"transparent",color:"#fff",border:"none",cursor:"pointer",fontSize:16},children:"×"})})]}),Re.jsx("div",{style:{overflowY:"auto",padding:8,flex:1},children:ve.length===0?Re.jsx("div",{style:{color:"#999",padding:12},children:"No stacks available"}):Re.jsx("div",{style:{display:"flex",flexDirection:"column",gap:6},children:ve.map((z,re)=>{const A=Array.isArray(z.imageIds)?z.imageIds:[],N=z.name||(z.caseId?`Case: ${z.caseId}`:`Stack ${re+1}`),I=A.length,M=!Array.isArray(A)||I===0,V=Te.includes(re),H=ye!==null&&Te[ye]===re,q=Math.floor(A.length/2),Y=A[q]||A[0],ue=Y?Js(Y):null;return Re.jsxs("div",{draggable:!M,onDragStart:ge=>{M||(be(re),K(null),ge.dataTransfer.setData("text/stack-idx",String(re)),ge.dataTransfer.effectAllowed="copy")},onDragEnd:()=>{be(null),K(null)},onClick:()=>{if(M)return;dt(ye??0,re)},style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"8px 10px",background:H?"#0d47a1":V?"#1976d2":"transparent",color:V?"#fff":"#ddd",border:H?"1px solid #64b5f6":"1px solid transparent",borderRadius:6,cursor:M?"not-allowed":"pointer"},children:[Re.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[(()=>{const ge=Me[re],me=ge&&ge!=="BROKEN"?ge:null,_e=me||ue||null;return _e?Re.jsx("img",{"data-thumb-stack":re,src:_e,alt:N,style:{width:56,height:56,objectFit:"cover",borderRadius:4,background:"#111"},onError:()=>{if(console.warn("Thumbnail failed to load for stack",re,_e),!!me){ut(re,"BROKEN");return}rt.current[re]||$o(re,Y)}}):Re.jsx("div",{style:{width:56,height:56,borderRadius:4,background:"#111",display:"flex",alignItems:"center",justifyContent:"center",color:"#777"},children:"No Img"})})(),Re.jsxs("div",{style:{display:"flex",flexDirection:"column"},children:[Re.jsx("div",{style:{fontWeight:600},children:N}),Re.jsxs("div",{style:{fontSize:12,opacity:.7},children:[I," img",I===1?"":"s"]})]})]}),Re.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"flex-end",gap:4},children:[Re.jsx("div",{style:{fontSize:12,opacity:.8},children:z.studyId||""}),H&&Re.jsx("div",{style:{fontSize:11,color:"#bbdefb",fontWeight:700},children:"ACTIVE"})]})]},re)})})})]})})]})]}),u&&Re.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:()=>d(!1),children:Re.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:z=>z.stopPropagation(),children:[Re.jsx("div",{style:{fontSize:"20px",marginBottom:"16px"},children:"Settings"}),Re.jsxs("div",{style:{marginBottom:"24px"},children:[Re.jsx("div",{style:{marginBottom:12,fontWeight:"bold"},children:"Mouse Button Tool Bindings"}),rO.map(z=>Re.jsxs("div",{style:{marginBottom:10},children:[Re.jsxs("label",{style:{marginRight:8},children:[z.label," Button:"]}),Re.jsx("select",{value:Vi[z.value],onChange:re=>Ps(A=>({...A,[z.value]:re.target.value})),style:{background:"#333",color:"#fff",border:"1px solid #444",borderRadius:"4px",padding:"4px 8px",fontSize:"14px"},children:y0.map(re=>Re.jsx("option",{value:re.value,title:re.label,children:`${re.icon?`${re.icon} `:""}${re.label}`},re.value))})]},z.value)),Re.jsxs("div",{style:{margin:"12px 0"},children:[Re.jsxs("button",{style:{background:"#333",color:"#fff",border:"none",borderRadius:"4px",padding:"4px 12px",cursor:"pointer",fontSize:"14px",marginBottom:"8px"},onClick:()=>sn(z=>!z),children:[Mn?"Hide":"Show"," Advanced Mouse Bindings"]}),Mn&&Re.jsx("div",{style:{marginTop:8},children:sv.slice(3).map(z=>Re.jsxs("div",{style:{marginBottom:10},children:[Re.jsxs("label",{style:{marginRight:8},children:[z.label,":"]}),Re.jsxs("select",{value:Vi[z.value]||"",onChange:re=>Ps(A=>({...A,[z.value]:re.target.value})),style:{background:"#333",color:"#fff",border:"1px solid #444",borderRadius:"4px",padding:"4px 8px",fontSize:"14px"},children:[Re.jsx("option",{value:"",children:"(None)"}),y0.map(re=>Re.jsx("option",{value:re.value,title:re.label,children:`${re.icon?`${re.icon} `:""}${re.label}`},re.value))]})]},z.value))})]}),Re.jsx("div",{style:{margin:"18px 0 8px 0",fontWeight:"bold"},children:"Ctrl + Mouse Button Tool Bindings"}),rO.map(z=>Re.jsxs("div",{style:{marginBottom:10},children:[Re.jsxs("label",{style:{marginRight:8},children:[z.label," + Ctrl:"]}),Re.jsxs("select",{value:Ho[z.value]||"",onChange:re=>Rs(A=>({...A,[z.value]:re.target.value})),style:{background:"#333",color:"#fff",border:"1px solid #444",borderRadius:"4px",padding:"4px 8px",fontSize:"14px"},children:[Re.jsx("option",{value:"",children:"(None)"}),y0.map(re=>Re.jsx("option",{value:re.value,title:re.label,children:`${re.icon?`${re.icon} `:""}${re.label}`},re.value))]})]},z.value+"_ctrl")),Re.jsxs("div",{style:{margin:"12px 0"},children:[Re.jsxs("button",{style:{background:"#333",color:"#fff",border:"none",borderRadius:"4px",padding:"4px 12px",cursor:"pointer",fontSize:"14px",marginBottom:"8px"},onClick:()=>Ti(z=>!z),children:[tn?"Hide":"Show"," Advanced Ctrl + Mouse Bindings"]}),tn&&Re.jsx("div",{style:{marginTop:8},children:sv.slice(3).map(z=>Re.jsxs("div",{style:{marginBottom:10},children:[Re.jsxs("label",{style:{marginRight:8},children:[z.label," + Ctrl:"]}),Re.jsxs("select",{value:Ho[z.value]||"",onChange:re=>Rs(A=>({...A,[z.value]:re.target.value})),style:{background:"#333",color:"#fff",border:"1px solid #444",borderRadius:"4px",padding:"4px 8px",fontSize:"14px"},children:[Re.jsx("option",{value:"",children:"(None)"}),y0.map(re=>Re.jsx("option",{value:re.value,title:re.label,children:`${re.icon?`${re.icon} `:""}${re.label}`},re.value))]})]},z.value+"_ctrl"))})]})]}),Re.jsx("button",{style:{position:"absolute",top:12,right:12,background:"transparent",color:"#fff",border:"none",fontSize:"20px",cursor:"pointer"},onClick:()=>d(!1),"aria-label":"Close",children:"×"})]})}),Qi&&Re.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:()=>Fr(!1),children:Re.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:z=>z.stopPropagation(),children:[Re.jsx("div",{style:{fontSize:"20px",marginBottom:"16px"},children:"DICOM Metadata"}),bc,Re.jsx("button",{style:{position:"absolute",top:12,right:12,background:"transparent",color:"#fff",border:"none",fontSize:"20px",cursor:"pointer"},onClick:()=>Fr(!1),"aria-label":"Close",children:"×"})]})})]})}function h8e(t){console.log("Setting up tools...",t),Mi(uf),Mi(Uh),Mi(Wd),Mi(Jl),Mi(Bh),Mi(_f),Mi(mu),Mi(Ef),Mi(pu),Mi(zd),Mi(Tf),Mi(ml),Mi(Gh),Mi(Wa),Mi(qc),Mi(_d),Mi($h);let e=ti(t);return e||(e=EF(t),e.addTool(Uh.toolName),e.addTool(uf.toolName),e.addTool(Jl.toolName),e.addTool(Wd.toolName,{loop:!1}),e.addTool(Bh.toolName),e.addTool(_f.toolName),e.addTool($h.toolName,{getTextCallback:()=>""}),e.addTool(Ef.toolName),e.addTool(mu.toolName,{statsCalculator:()=>null}),e.addTool(pu.toolName,{calculateStats:!1,getTextCallback:()=>""}),e.addTool(zd.toolName,{getTextCallback:()=>""}),e.addTool(Tf.toolName,{calculateStats:!1}),e.addTool(ml.toolName,{}),e.addTool(Gh.toolName,{}),e.addTool(_d.toolName),e.addTool(Wa.toolName)),e}function iO(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 c3=new WeakMap,p8e=t=>{const e=t.trim();return!e||e.startsWith("external:")||e.startsWith("wadors:")?e:e.startsWith("wadouri:")?`wadouri:${e.slice(8).replace(/^:+/,"")}`:`wadouri:${e.replace(/^:+/,"")}`},Ym=t=>t.map(p8e),oO=t=>t?{imageIds:Ym(t)}:{imageIds:[]},m8e=t=>{if(!t)return[];if(Array.isArray(t)&&t.length>0&&typeof t[0]=="string")return[oO(t)];if(!Array.isArray(t))return[];const e=[];return t.forEach((r,n)=>{if(r&&typeof r=="object"&&Array.isArray(r.stacks)){const i=r.caseId||r.caseUID||r.case||void 0,o=r.studyId||r.studyUID||r.studyInstanceUID||void 0;r.stacks.forEach((a,s)=>{let c=[];if(Array.isArray(a)?c=a:Array.isArray(a.imageIds)?c=a.imageIds:Array.isArray(a.i)&&(c=a.i),!Array.isArray(c)||c.length===0||!c.every(l=>typeof l=="string")){console.warn(`data-named-stacks: skipping invalid nested stack at parsed[${n}].stacks[${s}]`,a);return}e.push({imageIds:Ym(c),name:a.name||a.label||void 0,caseId:i,studyId:a.studyId||o})});return}if(r&&typeof r=="object"&&(Array.isArray(r.imageIds)||Array.isArray(r.i))){const i=Array.isArray(r.imageIds)?r.imageIds:r.i;if(!Array.isArray(i)||i.length===0||!i.every(o=>typeof o=="string")){console.warn(`data-named-stacks: skipping invalid stack object at parsed[${n}]`,r);return}e.push({imageIds:Ym(i),name:r.name||r.label||void 0,caseId:r.caseId||r.caseUID||void 0,studyId:r.studyId||r.studyUID||r.studyInstanceUID||void 0});return}if(Array.isArray(r)&&r.length>0&&typeof r[0]=="string"){e.push(oO(r));return}console.warn(`data-named-stacks: unknown or invalid entry at parsed[${n}] — skipping`,r)}),e},v8e=t=>JSON.stringify({id:t.id||"",empty:t.getAttribute("data-empty")||"",namedStacks:t.getAttribute("data-named-stacks")||"",images:t.getAttribute("data-images")||"",autoCache:t.getAttribute("data-auto-cache-stack")||"",annotation:t.getAttribute("data-annotationjson")||"",viewerState:t.getAttribute("data-viewerstate")||""}),aO=(t,e)=>!(e!=null&&e.containerIds)||e.containerIds.length===0?!0:e.containerIds.includes(t.id||""),sO=(t,e,r)=>{const n=v8e(t),i=c3.get(t);if(i&&!(r!=null&&r.force)&&i.signature===n)return;i&&(i.root.unmount(),c3.delete(t));const o=xP(t);o.render(Re.jsx(d8e,{container_id:t.id||"",imageStacks:e,autoCacheStack:t.getAttribute("data-auto-cache-stack")==="true"||t.getAttribute("data-auto-cache-stack")==="1",annotationJson:t.getAttribute("data-annotationjson")||void 0,viewerState:t.getAttribute("data-viewerstate")||void 0})),c3.set(t,{root:o,signature:n})};function sb(t){document.querySelectorAll(".dicom-viewer-test-root").forEach(n=>{if(!aO(n,t))return;n.id,sO(n,()=>g8e(),t)}),document.querySelectorAll(".dicom-viewer-root").forEach(n=>{if(!aO(n,t))return;let i;const o=n.getAttribute("data-empty")==="true",a=n.getAttribute("data-named-stacks"),s=n.getAttribute("data-images");if(o)i=()=>Promise.resolve([]);else if(a){let c;try{c=JSON.parse(a)}catch(f){console.error("Invalid data-named-stacks JSON:",f),c=[]}const l=m8e(c);i=()=>Promise.resolve(l)}else if(s){let c;try{c=JSON.parse(s)}catch(l){console.error("Invalid data-images JSON:",l),c=[]}Array.isArray(c)&&c.length>0&&typeof c[0]=="string"?i=()=>Promise.resolve([Ym(c)]):Array.isArray(c)?i=()=>Promise.resolve(c.map(l=>Array.isArray(l)?Ym(l):[])):i=()=>Promise.resolve([[]])}else i=()=>Promise.resolve([]);sO(n,i,t)})}sb();window.mountDicomViewers=sb;window.remountDicomViewer=t=>{sb({force:!0,containerIds:[t]})};