@fnndsc/argus 0.23.3 → 0.23.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{Settings-GzkmWWpp.js → Settings-B6QHl8Cq.js} +1 -1
- package/dist/assets/{Texture-BK8qybqX.js → Texture-CuCw8VUM.js} +1 -1
- package/dist/assets/{addVolumesToViewports-B21LVAdr.js → addVolumesToViewports-LPwhnVA0.js} +1 -1
- package/dist/assets/{cornerstoneEngine-PxjQTsDK.js → cornerstoneEngine-DEyD4KaO.js} +2 -2
- package/dist/assets/{field-CRyntJWv.js → field-0Jgq4vD8.js} +3 -3
- package/dist/assets/{index-CQNfYaNb.js → index-4ZMQzJVR.js} +1 -1
- package/dist/assets/{index-CEx-_SAX.js → index-B9WLAsqD.js} +1 -1
- package/dist/assets/{index-C-8xfQih.js → index-BVfoYSjY.js} +1 -1
- package/dist/assets/{index-Dhh8YPtg.js → index-BwbBxS6Y.js} +1 -1
- package/dist/assets/{index-BOoICCjw.js → index-C2eROnzA.js} +1 -1
- package/dist/assets/{index-BT4gm0r5.js → index-CA03be_E.js} +1 -1
- package/dist/assets/{index-BHQ4AX5B.js → index-COZjVtig.js} +1 -1
- package/dist/assets/{index-DArXiPSI.js → index-CUnoBKAp.js} +1 -1
- package/dist/assets/{index-CStpenzi.js → index-CabsEn_w.js} +1 -1
- package/dist/assets/{index--aFgbfME.js → index-CfT1Xoj_.js} +1 -1
- package/dist/assets/{index-VdukRs41.js → index-DHek7wpi.js} +1 -1
- package/dist/assets/{index-BgAHm1nt.js → index-WoHrItR5.js} +1 -1
- package/dist/assets/{index-DiV5FUOB.js → index-ZdEeuQIq.js} +1 -1
- package/dist/assets/{index-BrfEx0gt.js → index-mv-N0aSo.js} +8 -8
- package/dist/assets/{niivueEngine-ICOKHrzZ.js → niivueEngine-DTNSUffe.js} +2 -2
- package/dist/assets/{slabScene-BZYJJJ62.js → slabScene-DGVJen-j.js} +1 -1
- package/dist/build.json +1 -1
- package/dist/index.html +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./cornerstoneEngine-
|
|
2
|
-
(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))s(i);new MutationObserver(i=>{for(const r of i)if(r.type==="childList")for(const a of r.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&s(a)}).observe(document,{childList:!0,subtree:!0});function t(i){const r={};return i.integrity&&(r.integrity=i.integrity),i.referrerPolicy&&(r.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?r.credentials="include":i.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function s(i){if(i.ep)return;i.ep=!0;const r=t(i);fetch(i.href,r)}})();const DM=450,Hu=12;function Fi(n,e,t=Date.now()){const s=Number(n.dataset.edgeAt??0);return n.dataset.edge===e&&t-s<DM?!1:(delete n.dataset.edge,n.offsetWidth,n.dataset.edge=e,n.dataset.edgeAt=String(t),!0)}function TM(n,e){return e?"▲ TOP":`▼ ${n} MORE`}function IM(n,e){const t=n.getBoundingClientRect().bottom;let s=0;for(const i of n.querySelectorAll(e)){const r=i.getBoundingClientRect();r.height>0&&r.top>=t-2&&(s+=1)}return s}function GM(n){const e=parseFloat(getComputedStyle(n).lineHeight)||16;return Math.max(0,Math.ceil((n.scrollHeight-n.scrollTop-n.clientHeight)/e))}function $s(n,e={}){n.dataset.more="wired",n.classList.add("holds-more");const t=document.createElement("button");t.type="button",t.className=`more-chip${e.className!==void 0?` ${e.className}`:""}`,t.hidden=!0;const s=e.label??TM,i=()=>n.scrollTop+n.clientHeight>=n.scrollHeight-2;t.addEventListener("click",l=>{if(l.stopPropagation(),e.press!==void 0){e.press();return}n.scrollBy({top:i()?-n.scrollHeight:Math.max(1,n.clientHeight-t.offsetHeight),behavior:"smooth"})});const r=e.mount??n;r.appendChild(t);let a=!1;const o=()=>{if(!a){a=!0;try{r===n&&n.lastElementChild!==t&&n.appendChild(t);const l=n.scrollHeight>n.clientHeight+2;if(t.hidden!==!l&&(t.hidden=!l),!l)return;const c=e.rows!==void 0?IM(n,e.rows):GM(n),d=s(c,i());t.textContent!==d&&(t.textContent=d)}finally{a=!1}}};return n.addEventListener("scroll",o,{passive:!0}),RM(n,i),typeof ResizeObserver<"u"&&new ResizeObserver(o).observe(n),new MutationObserver(o).observe(n,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["hidden","class","style"]}),o(),t}function RM(n,e){const t=()=>n.scrollHeight>n.clientHeight+2,s=()=>n.scrollTop<=0;let i=n.scrollTop;n.addEventListener("scrollend",()=>{const a=n.scrollTop!==i;i=n.scrollTop,!(!a||!t())&&(s()?Fi(n,"top"):e()&&Fi(n,"bottom"))}),n.addEventListener("wheel",a=>{!t()||a.deltaY===0||(a.deltaY<0&&s()?Fi(n,"top"):a.deltaY>0&&e()&&Fi(n,"bottom"))},{passive:!0});let r=null;n.addEventListener("touchstart",a=>{r=a.touches[0]?.clientY??null},{passive:!0}),n.addEventListener("touchmove",a=>{const o=a.touches[0]?.clientY;r===null||o===void 0||!t()||(o-r>Hu&&s()?(Fi(n,"top"),r=null):r-o>Hu&&e()&&(Fi(n,"bottom"),r=null))},{passive:!0}),n.addEventListener("animationend",a=>{a.target===n&&a.animationName.startsWith("edge-flare")&&delete n.dataset.edge})}const BM=["cold","cached","failed"];function NM(n){return n.state??(n.restored===!0?"cached":"cold")}const CM=["upload","download","pull","workflow","pipeline","group","task"],PM=["transfer","retrieve","workflow","inspection"],LM=["scanning","transferring","watching","retrying","reading","working","complete","failed"],WM=["files","bytes","series","jobs","nodes"],kM=["running","done","unconfirmed","stalled","timeout","error","unknown"],Tc=1,UM=new Set([".dcm",".png",".jpg",".jpeg",".gif",".bmp",".webp",".ico",".pdf",".zip",".tar",".gz",".bz2",".xz",".7z",".exe",".dll",".so",".bin",".mp3",".mp4",".avi",".wav",".nii",".mgz"]),FM=1024*1024;function sm(n){const e=n.split("/").pop()??n,t=e.lastIndexOf(".");return t>0?e.slice(t).toLowerCase():""}function jM(n){return!UM.has(sm(n))}var gt;(function(n){n.assertEqual=i=>{};function e(i){}n.assertIs=e;function t(i){throw new Error}n.assertNever=t,n.arrayToEnum=i=>{const r={};for(const a of i)r[a]=a;return r},n.getValidEnumValues=i=>{const r=n.objectKeys(i).filter(o=>typeof i[i[o]]!="number"),a={};for(const o of r)a[o]=i[o];return n.objectValues(a)},n.objectValues=i=>n.objectKeys(i).map(function(r){return i[r]}),n.objectKeys=typeof Object.keys=="function"?i=>Object.keys(i):i=>{const r=[];for(const a in i)Object.prototype.hasOwnProperty.call(i,a)&&r.push(a);return r},n.find=(i,r)=>{for(const a of i)if(r(a))return a},n.isInteger=typeof Number.isInteger=="function"?i=>Number.isInteger(i):i=>typeof i=="number"&&Number.isFinite(i)&&Math.floor(i)===i;function s(i,r=" | "){return i.map(a=>typeof a=="string"?`'${a}'`:a).join(r)}n.joinValues=s,n.jsonStringifyReplacer=(i,r)=>typeof r=="bigint"?r.toString():r})(gt||(gt={}));var qu;(function(n){n.mergeShapes=(e,t)=>({...e,...t})})(qu||(qu={}));const Ge=gt.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),kn=n=>{switch(typeof n){case"undefined":return Ge.undefined;case"string":return Ge.string;case"number":return Number.isNaN(n)?Ge.nan:Ge.number;case"boolean":return Ge.boolean;case"function":return Ge.function;case"bigint":return Ge.bigint;case"symbol":return Ge.symbol;case"object":return Array.isArray(n)?Ge.array:n===null?Ge.null:n.then&&typeof n.then=="function"&&n.catch&&typeof n.catch=="function"?Ge.promise:typeof Map<"u"&&n instanceof Map?Ge.map:typeof Set<"u"&&n instanceof Set?Ge.set:typeof Date<"u"&&n instanceof Date?Ge.date:Ge.object;default:return Ge.unknown}},Me=gt.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);class An extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=s=>{this.issues=[...this.issues,s]},this.addIssues=(s=[])=>{this.issues=[...this.issues,...s]};const t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e}format(e){const t=e||function(r){return r.message},s={_errors:[]},i=r=>{for(const a of r.issues)if(a.code==="invalid_union")a.unionErrors.map(i);else if(a.code==="invalid_return_type")i(a.returnTypeError);else if(a.code==="invalid_arguments")i(a.argumentsError);else if(a.path.length===0)s._errors.push(t(a));else{let o=s,l=0;for(;l<a.path.length;){const c=a.path[l];l===a.path.length-1?(o[c]=o[c]||{_errors:[]},o[c]._errors.push(t(a))):o[c]=o[c]||{_errors:[]},o=o[c],l++}}};return i(this),s}static assert(e){if(!(e instanceof An))throw new Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,gt.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=t=>t.message){const t={},s=[];for(const i of this.issues)if(i.path.length>0){const r=i.path[0];t[r]=t[r]||[],t[r].push(e(i))}else s.push(e(i));return{formErrors:s,fieldErrors:t}}get formErrors(){return this.flatten()}}An.create=n=>new An(n);const Ic=(n,e)=>{let t;switch(n.code){case Me.invalid_type:n.received===Ge.undefined?t="Required":t=`Expected ${n.expected}, received ${n.received}`;break;case Me.invalid_literal:t=`Invalid literal value, expected ${JSON.stringify(n.expected,gt.jsonStringifyReplacer)}`;break;case Me.unrecognized_keys:t=`Unrecognized key(s) in object: ${gt.joinValues(n.keys,", ")}`;break;case Me.invalid_union:t="Invalid input";break;case Me.invalid_union_discriminator:t=`Invalid discriminator value. Expected ${gt.joinValues(n.options)}`;break;case Me.invalid_enum_value:t=`Invalid enum value. Expected ${gt.joinValues(n.options)}, received '${n.received}'`;break;case Me.invalid_arguments:t="Invalid function arguments";break;case Me.invalid_return_type:t="Invalid function return type";break;case Me.invalid_date:t="Invalid date";break;case Me.invalid_string:typeof n.validation=="object"?"includes"in n.validation?(t=`Invalid input: must include "${n.validation.includes}"`,typeof n.validation.position=="number"&&(t=`${t} at one or more positions greater than or equal to ${n.validation.position}`)):"startsWith"in n.validation?t=`Invalid input: must start with "${n.validation.startsWith}"`:"endsWith"in n.validation?t=`Invalid input: must end with "${n.validation.endsWith}"`:gt.assertNever(n.validation):n.validation!=="regex"?t=`Invalid ${n.validation}`:t="Invalid";break;case Me.too_small:n.type==="array"?t=`Array must contain ${n.exact?"exactly":n.inclusive?"at least":"more than"} ${n.minimum} element(s)`:n.type==="string"?t=`String must contain ${n.exact?"exactly":n.inclusive?"at least":"over"} ${n.minimum} character(s)`:n.type==="number"?t=`Number must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${n.minimum}`:n.type==="bigint"?t=`Number must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${n.minimum}`:n.type==="date"?t=`Date must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(n.minimum))}`:t="Invalid input";break;case Me.too_big:n.type==="array"?t=`Array must contain ${n.exact?"exactly":n.inclusive?"at most":"less than"} ${n.maximum} element(s)`:n.type==="string"?t=`String must contain ${n.exact?"exactly":n.inclusive?"at most":"under"} ${n.maximum} character(s)`:n.type==="number"?t=`Number must be ${n.exact?"exactly":n.inclusive?"less than or equal to":"less than"} ${n.maximum}`:n.type==="bigint"?t=`BigInt must be ${n.exact?"exactly":n.inclusive?"less than or equal to":"less than"} ${n.maximum}`:n.type==="date"?t=`Date must be ${n.exact?"exactly":n.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(n.maximum))}`:t="Invalid input";break;case Me.custom:t="Invalid input";break;case Me.invalid_intersection_types:t="Intersection results could not be merged";break;case Me.not_multiple_of:t=`Number must be a multiple of ${n.multipleOf}`;break;case Me.not_finite:t="Number must be finite";break;default:t=e.defaultError,gt.assertNever(n)}return{message:t}};let $M=Ic;function VM(){return $M}const HM=n=>{const{data:e,path:t,errorMaps:s,issueData:i}=n,r=[...t,...i.path||[]],a={...i,path:r};if(i.message!==void 0)return{...i,path:r,message:i.message};let o="";const l=s.filter(c=>!!c).slice().reverse();for(const c of l)o=c(a,{data:e,defaultError:o}).message;return{...i,path:r,message:o}};function De(n,e){const t=VM(),s=HM({issueData:e,data:n.data,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,t,t===Ic?void 0:Ic].filter(i=>!!i)});n.common.issues.push(s)}class us{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,t){const s=[];for(const i of t){if(i.status==="aborted")return Ye;i.status==="dirty"&&e.dirty(),s.push(i.value)}return{status:e.value,value:s}}static async mergeObjectAsync(e,t){const s=[];for(const i of t){const r=await i.key,a=await i.value;s.push({key:r,value:a})}return us.mergeObjectSync(e,s)}static mergeObjectSync(e,t){const s={};for(const i of t){const{key:r,value:a}=i;if(r.status==="aborted"||a.status==="aborted")return Ye;r.status==="dirty"&&e.dirty(),a.status==="dirty"&&e.dirty(),r.value!=="__proto__"&&(typeof a.value<"u"||i.alwaysSet)&&(s[r.value]=a.value)}return{status:e.value,value:s}}}const Ye=Object.freeze({status:"aborted"}),ra=n=>({status:"dirty",value:n}),Bs=n=>({status:"valid",value:n}),Xu=n=>n.status==="aborted",Ku=n=>n.status==="dirty",vr=n=>n.status==="valid",Ro=n=>typeof Promise<"u"&&n instanceof Promise;var Pe;(function(n){n.errToObj=e=>typeof e=="string"?{message:e}:e||{},n.toString=e=>typeof e=="string"?e:e?.message})(Pe||(Pe={}));class an{constructor(e,t,s,i){this._cachedPath=[],this.parent=e,this.data=t,this._path=s,this._key=i}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const Yu=(n,e)=>{if(vr(e))return{success:!0,data:e.value};if(!n.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const t=new An(n.common.issues);return this._error=t,this._error}}};function st(n){if(!n)return{};const{errorMap:e,invalid_type_error:t,required_error:s,description:i}=n;if(e&&(t||s))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:i}:{errorMap:(a,o)=>{const{message:l}=n;return a.code==="invalid_enum_value"?{message:l??o.defaultError}:typeof o.data>"u"?{message:l??s??o.defaultError}:a.code!=="invalid_type"?{message:o.defaultError}:{message:l??t??o.defaultError}},description:i}}class lt{get description(){return this._def.description}_getType(e){return kn(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:kn(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new us,ctx:{common:e.parent.common,data:e.data,parsedType:kn(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){const t=this._parse(e);if(Ro(t))throw new Error("Synchronous parse encountered promise.");return t}_parseAsync(e){const t=this._parse(e);return Promise.resolve(t)}parse(e,t){const s=this.safeParse(e,t);if(s.success)return s.data;throw s.error}safeParse(e,t){const s={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:kn(e)},i=this._parseSync({data:e,path:s.path,parent:s});return Yu(s,i)}"~validate"(e){const t={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:kn(e)};if(!this["~standard"].async)try{const s=this._parseSync({data:e,path:[],parent:t});return vr(s)?{value:s.value}:{issues:t.common.issues}}catch(s){s?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(s=>vr(s)?{value:s.value}:{issues:t.common.issues})}async parseAsync(e,t){const s=await this.safeParseAsync(e,t);if(s.success)return s.data;throw s.error}async safeParseAsync(e,t){const s={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:kn(e)},i=this._parse({data:e,path:s.path,parent:s}),r=await(Ro(i)?i:Promise.resolve(i));return Yu(s,r)}refine(e,t){const s=i=>typeof t=="string"||typeof t>"u"?{message:t}:typeof t=="function"?t(i):t;return this._refinement((i,r)=>{const a=e(i),o=()=>r.addIssue({code:Me.custom,...s(i)});return typeof Promise<"u"&&a instanceof Promise?a.then(l=>l?!0:(o(),!1)):a?!0:(o(),!1)})}refinement(e,t){return this._refinement((s,i)=>e(s)?!0:(i.addIssue(typeof t=="function"?t(s,i):t),!1))}_refinement(e){return new Oi({schema:this,typeName:Ze.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:t=>this["~validate"](t)}}optional(){return On.create(this,this._def)}nullable(){return xi.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return sn.create(this)}promise(){return ko.create(this,this._def)}or(e){return No.create([this,e],this._def)}and(e){return Co.create(this,e,this._def)}transform(e){return new Oi({...st(this._def),schema:this,typeName:Ze.ZodEffects,effect:{type:"transform",transform:e}})}default(e){const t=typeof e=="function"?e:()=>e;return new Uo({...st(this._def),innerType:this,defaultValue:t,typeName:Ze.ZodDefault})}brand(){return new am({typeName:Ze.ZodBranded,type:this,...st(this._def)})}catch(e){const t=typeof e=="function"?e:()=>e;return new Fo({...st(this._def),innerType:this,catchValue:t,typeName:Ze.ZodCatch})}describe(e){const t=this.constructor;return new t({...this._def,description:e})}pipe(e){return Yd.create(this,e)}readonly(){return jo.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const qM=/^c[^\s-]{8,}$/i,XM=/^[0-9a-z]+$/,KM=/^[0-9A-HJKMNP-TV-Z]{26}$/i,YM=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,ZM=/^[a-z0-9_-]{21}$/i,QM=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,JM=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,eb=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,tb="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";let xl;const sb=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,nb=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ib=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,rb=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,ab=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,ob=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nm="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",lb=new RegExp(`^${nm}$`);function im(n){let e="[0-5]\\d";n.precision?e=`${e}\\.\\d{${n.precision}}`:n.precision==null&&(e=`${e}(\\.\\d+)?`);const t=n.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${t}`}function cb(n){return new RegExp(`^${im(n)}$`)}function db(n){let e=`${nm}T${im(n)}`;const t=[];return t.push(n.local?"Z?":"Z"),n.offset&&t.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${t.join("|")})`,new RegExp(`^${e}$`)}function ub(n,e){return!!((e==="v4"||!e)&&sb.test(n)||(e==="v6"||!e)&&ib.test(n))}function hb(n,e){if(!QM.test(n))return!1;try{const[t]=n.split(".");if(!t)return!1;const s=t.replace(/-/g,"+").replace(/_/g,"/").padEnd(t.length+(4-t.length%4)%4,"="),i=JSON.parse(atob(s));return!(typeof i!="object"||i===null||"typ"in i&&i?.typ!=="JWT"||!i.alg||e&&i.alg!==e)}catch{return!1}}function fb(n,e){return!!((e==="v4"||!e)&&nb.test(n)||(e==="v6"||!e)&&rb.test(n))}class yn extends lt{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==Ge.string){const r=this._getOrReturnCtx(e);return De(r,{code:Me.invalid_type,expected:Ge.string,received:r.parsedType}),Ye}const s=new us;let i;for(const r of this._def.checks)if(r.kind==="min")e.data.length<r.value&&(i=this._getOrReturnCtx(e,i),De(i,{code:Me.too_small,minimum:r.value,type:"string",inclusive:!0,exact:!1,message:r.message}),s.dirty());else if(r.kind==="max")e.data.length>r.value&&(i=this._getOrReturnCtx(e,i),De(i,{code:Me.too_big,maximum:r.value,type:"string",inclusive:!0,exact:!1,message:r.message}),s.dirty());else if(r.kind==="length"){const a=e.data.length>r.value,o=e.data.length<r.value;(a||o)&&(i=this._getOrReturnCtx(e,i),a?De(i,{code:Me.too_big,maximum:r.value,type:"string",inclusive:!0,exact:!0,message:r.message}):o&&De(i,{code:Me.too_small,minimum:r.value,type:"string",inclusive:!0,exact:!0,message:r.message}),s.dirty())}else if(r.kind==="email")eb.test(e.data)||(i=this._getOrReturnCtx(e,i),De(i,{validation:"email",code:Me.invalid_string,message:r.message}),s.dirty());else if(r.kind==="emoji")xl||(xl=new RegExp(tb,"u")),xl.test(e.data)||(i=this._getOrReturnCtx(e,i),De(i,{validation:"emoji",code:Me.invalid_string,message:r.message}),s.dirty());else if(r.kind==="uuid")YM.test(e.data)||(i=this._getOrReturnCtx(e,i),De(i,{validation:"uuid",code:Me.invalid_string,message:r.message}),s.dirty());else if(r.kind==="nanoid")ZM.test(e.data)||(i=this._getOrReturnCtx(e,i),De(i,{validation:"nanoid",code:Me.invalid_string,message:r.message}),s.dirty());else if(r.kind==="cuid")qM.test(e.data)||(i=this._getOrReturnCtx(e,i),De(i,{validation:"cuid",code:Me.invalid_string,message:r.message}),s.dirty());else if(r.kind==="cuid2")XM.test(e.data)||(i=this._getOrReturnCtx(e,i),De(i,{validation:"cuid2",code:Me.invalid_string,message:r.message}),s.dirty());else if(r.kind==="ulid")KM.test(e.data)||(i=this._getOrReturnCtx(e,i),De(i,{validation:"ulid",code:Me.invalid_string,message:r.message}),s.dirty());else if(r.kind==="url")try{new URL(e.data)}catch{i=this._getOrReturnCtx(e,i),De(i,{validation:"url",code:Me.invalid_string,message:r.message}),s.dirty()}else r.kind==="regex"?(r.regex.lastIndex=0,r.regex.test(e.data)||(i=this._getOrReturnCtx(e,i),De(i,{validation:"regex",code:Me.invalid_string,message:r.message}),s.dirty())):r.kind==="trim"?e.data=e.data.trim():r.kind==="includes"?e.data.includes(r.value,r.position)||(i=this._getOrReturnCtx(e,i),De(i,{code:Me.invalid_string,validation:{includes:r.value,position:r.position},message:r.message}),s.dirty()):r.kind==="toLowerCase"?e.data=e.data.toLowerCase():r.kind==="toUpperCase"?e.data=e.data.toUpperCase():r.kind==="startsWith"?e.data.startsWith(r.value)||(i=this._getOrReturnCtx(e,i),De(i,{code:Me.invalid_string,validation:{startsWith:r.value},message:r.message}),s.dirty()):r.kind==="endsWith"?e.data.endsWith(r.value)||(i=this._getOrReturnCtx(e,i),De(i,{code:Me.invalid_string,validation:{endsWith:r.value},message:r.message}),s.dirty()):r.kind==="datetime"?db(r).test(e.data)||(i=this._getOrReturnCtx(e,i),De(i,{code:Me.invalid_string,validation:"datetime",message:r.message}),s.dirty()):r.kind==="date"?lb.test(e.data)||(i=this._getOrReturnCtx(e,i),De(i,{code:Me.invalid_string,validation:"date",message:r.message}),s.dirty()):r.kind==="time"?cb(r).test(e.data)||(i=this._getOrReturnCtx(e,i),De(i,{code:Me.invalid_string,validation:"time",message:r.message}),s.dirty()):r.kind==="duration"?JM.test(e.data)||(i=this._getOrReturnCtx(e,i),De(i,{validation:"duration",code:Me.invalid_string,message:r.message}),s.dirty()):r.kind==="ip"?ub(e.data,r.version)||(i=this._getOrReturnCtx(e,i),De(i,{validation:"ip",code:Me.invalid_string,message:r.message}),s.dirty()):r.kind==="jwt"?hb(e.data,r.alg)||(i=this._getOrReturnCtx(e,i),De(i,{validation:"jwt",code:Me.invalid_string,message:r.message}),s.dirty()):r.kind==="cidr"?fb(e.data,r.version)||(i=this._getOrReturnCtx(e,i),De(i,{validation:"cidr",code:Me.invalid_string,message:r.message}),s.dirty()):r.kind==="base64"?ab.test(e.data)||(i=this._getOrReturnCtx(e,i),De(i,{validation:"base64",code:Me.invalid_string,message:r.message}),s.dirty()):r.kind==="base64url"?ob.test(e.data)||(i=this._getOrReturnCtx(e,i),De(i,{validation:"base64url",code:Me.invalid_string,message:r.message}),s.dirty()):gt.assertNever(r);return{status:s.value,value:e.data}}_regex(e,t,s){return this.refinement(i=>e.test(i),{validation:t,code:Me.invalid_string,...Pe.errToObj(s)})}_addCheck(e){return new yn({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...Pe.errToObj(e)})}url(e){return this._addCheck({kind:"url",...Pe.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...Pe.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...Pe.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...Pe.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...Pe.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...Pe.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...Pe.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...Pe.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...Pe.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...Pe.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...Pe.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...Pe.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...Pe.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...Pe.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...Pe.errToObj(e)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...Pe.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:t?.position,...Pe.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...Pe.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...Pe.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...Pe.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...Pe.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...Pe.errToObj(t)})}nonempty(e){return this.min(1,Pe.errToObj(e))}trim(){return new yn({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new yn({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new yn({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(const t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(const t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}}yn.create=n=>new yn({checks:[],typeName:Ze.ZodString,coerce:n?.coerce??!1,...st(n)});function pb(n,e){const t=(n.toString().split(".")[1]||"").length,s=(e.toString().split(".")[1]||"").length,i=t>s?t:s,r=Number.parseInt(n.toFixed(i).replace(".","")),a=Number.parseInt(e.toFixed(i).replace(".",""));return r%a/10**i}class Or extends lt{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==Ge.number){const r=this._getOrReturnCtx(e);return De(r,{code:Me.invalid_type,expected:Ge.number,received:r.parsedType}),Ye}let s;const i=new us;for(const r of this._def.checks)r.kind==="int"?gt.isInteger(e.data)||(s=this._getOrReturnCtx(e,s),De(s,{code:Me.invalid_type,expected:"integer",received:"float",message:r.message}),i.dirty()):r.kind==="min"?(r.inclusive?e.data<r.value:e.data<=r.value)&&(s=this._getOrReturnCtx(e,s),De(s,{code:Me.too_small,minimum:r.value,type:"number",inclusive:r.inclusive,exact:!1,message:r.message}),i.dirty()):r.kind==="max"?(r.inclusive?e.data>r.value:e.data>=r.value)&&(s=this._getOrReturnCtx(e,s),De(s,{code:Me.too_big,maximum:r.value,type:"number",inclusive:r.inclusive,exact:!1,message:r.message}),i.dirty()):r.kind==="multipleOf"?pb(e.data,r.value)!==0&&(s=this._getOrReturnCtx(e,s),De(s,{code:Me.not_multiple_of,multipleOf:r.value,message:r.message}),i.dirty()):r.kind==="finite"?Number.isFinite(e.data)||(s=this._getOrReturnCtx(e,s),De(s,{code:Me.not_finite,message:r.message}),i.dirty()):gt.assertNever(r);return{status:i.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,Pe.toString(t))}gt(e,t){return this.setLimit("min",e,!1,Pe.toString(t))}lte(e,t){return this.setLimit("max",e,!0,Pe.toString(t))}lt(e,t){return this.setLimit("max",e,!1,Pe.toString(t))}setLimit(e,t,s,i){return new Or({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:s,message:Pe.toString(i)}]})}_addCheck(e){return new Or({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:Pe.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:Pe.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:Pe.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:Pe.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:Pe.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:Pe.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:Pe.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:Pe.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:Pe.toString(e)})}get minValue(){let e=null;for(const t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(const t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find(e=>e.kind==="int"||e.kind==="multipleOf"&>.isInteger(e.value))}get isFinite(){let e=null,t=null;for(const s of this._def.checks){if(s.kind==="finite"||s.kind==="int"||s.kind==="multipleOf")return!0;s.kind==="min"?(t===null||s.value>t)&&(t=s.value):s.kind==="max"&&(e===null||s.value<e)&&(e=s.value)}return Number.isFinite(t)&&Number.isFinite(e)}}Or.create=n=>new Or({checks:[],typeName:Ze.ZodNumber,coerce:n?.coerce||!1,...st(n)});class ma extends lt{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==Ge.bigint)return this._getInvalidInput(e);let s;const i=new us;for(const r of this._def.checks)r.kind==="min"?(r.inclusive?e.data<r.value:e.data<=r.value)&&(s=this._getOrReturnCtx(e,s),De(s,{code:Me.too_small,type:"bigint",minimum:r.value,inclusive:r.inclusive,message:r.message}),i.dirty()):r.kind==="max"?(r.inclusive?e.data>r.value:e.data>=r.value)&&(s=this._getOrReturnCtx(e,s),De(s,{code:Me.too_big,type:"bigint",maximum:r.value,inclusive:r.inclusive,message:r.message}),i.dirty()):r.kind==="multipleOf"?e.data%r.value!==BigInt(0)&&(s=this._getOrReturnCtx(e,s),De(s,{code:Me.not_multiple_of,multipleOf:r.value,message:r.message}),i.dirty()):gt.assertNever(r);return{status:i.value,value:e.data}}_getInvalidInput(e){const t=this._getOrReturnCtx(e);return De(t,{code:Me.invalid_type,expected:Ge.bigint,received:t.parsedType}),Ye}gte(e,t){return this.setLimit("min",e,!0,Pe.toString(t))}gt(e,t){return this.setLimit("min",e,!1,Pe.toString(t))}lte(e,t){return this.setLimit("max",e,!0,Pe.toString(t))}lt(e,t){return this.setLimit("max",e,!1,Pe.toString(t))}setLimit(e,t,s,i){return new ma({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:s,message:Pe.toString(i)}]})}_addCheck(e){return new ma({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:Pe.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:Pe.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:Pe.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:Pe.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:Pe.toString(t)})}get minValue(){let e=null;for(const t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(const t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}}ma.create=n=>new ma({checks:[],typeName:Ze.ZodBigInt,coerce:n?.coerce??!1,...st(n)});class Gc extends lt{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==Ge.boolean){const s=this._getOrReturnCtx(e);return De(s,{code:Me.invalid_type,expected:Ge.boolean,received:s.parsedType}),Ye}return Bs(e.data)}}Gc.create=n=>new Gc({typeName:Ze.ZodBoolean,coerce:n?.coerce||!1,...st(n)});class Bo extends lt{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==Ge.date){const r=this._getOrReturnCtx(e);return De(r,{code:Me.invalid_type,expected:Ge.date,received:r.parsedType}),Ye}if(Number.isNaN(e.data.getTime())){const r=this._getOrReturnCtx(e);return De(r,{code:Me.invalid_date}),Ye}const s=new us;let i;for(const r of this._def.checks)r.kind==="min"?e.data.getTime()<r.value&&(i=this._getOrReturnCtx(e,i),De(i,{code:Me.too_small,message:r.message,inclusive:!0,exact:!1,minimum:r.value,type:"date"}),s.dirty()):r.kind==="max"?e.data.getTime()>r.value&&(i=this._getOrReturnCtx(e,i),De(i,{code:Me.too_big,message:r.message,inclusive:!0,exact:!1,maximum:r.value,type:"date"}),s.dirty()):gt.assertNever(r);return{status:s.value,value:new Date(e.data.getTime())}}_addCheck(e){return new Bo({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:Pe.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:Pe.toString(t)})}get minDate(){let e=null;for(const t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(const t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e!=null?new Date(e):null}}Bo.create=n=>new Bo({checks:[],coerce:n?.coerce||!1,typeName:Ze.ZodDate,...st(n)});class Zu extends lt{_parse(e){if(this._getType(e)!==Ge.symbol){const s=this._getOrReturnCtx(e);return De(s,{code:Me.invalid_type,expected:Ge.symbol,received:s.parsedType}),Ye}return Bs(e.data)}}Zu.create=n=>new Zu({typeName:Ze.ZodSymbol,...st(n)});class Rc extends lt{_parse(e){if(this._getType(e)!==Ge.undefined){const s=this._getOrReturnCtx(e);return De(s,{code:Me.invalid_type,expected:Ge.undefined,received:s.parsedType}),Ye}return Bs(e.data)}}Rc.create=n=>new Rc({typeName:Ze.ZodUndefined,...st(n)});class Bc extends lt{_parse(e){if(this._getType(e)!==Ge.null){const s=this._getOrReturnCtx(e);return De(s,{code:Me.invalid_type,expected:Ge.null,received:s.parsedType}),Ye}return Bs(e.data)}}Bc.create=n=>new Bc({typeName:Ze.ZodNull,...st(n)});class Qu extends lt{constructor(){super(...arguments),this._any=!0}_parse(e){return Bs(e.data)}}Qu.create=n=>new Qu({typeName:Ze.ZodAny,...st(n)});class Nc extends lt{constructor(){super(...arguments),this._unknown=!0}_parse(e){return Bs(e.data)}}Nc.create=n=>new Nc({typeName:Ze.ZodUnknown,...st(n)});class Qn extends lt{_parse(e){const t=this._getOrReturnCtx(e);return De(t,{code:Me.invalid_type,expected:Ge.never,received:t.parsedType}),Ye}}Qn.create=n=>new Qn({typeName:Ze.ZodNever,...st(n)});class Ju extends lt{_parse(e){if(this._getType(e)!==Ge.undefined){const s=this._getOrReturnCtx(e);return De(s,{code:Me.invalid_type,expected:Ge.void,received:s.parsedType}),Ye}return Bs(e.data)}}Ju.create=n=>new Ju({typeName:Ze.ZodVoid,...st(n)});class sn extends lt{_parse(e){const{ctx:t,status:s}=this._processInputParams(e),i=this._def;if(t.parsedType!==Ge.array)return De(t,{code:Me.invalid_type,expected:Ge.array,received:t.parsedType}),Ye;if(i.exactLength!==null){const a=t.data.length>i.exactLength.value,o=t.data.length<i.exactLength.value;(a||o)&&(De(t,{code:a?Me.too_big:Me.too_small,minimum:o?i.exactLength.value:void 0,maximum:a?i.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:i.exactLength.message}),s.dirty())}if(i.minLength!==null&&t.data.length<i.minLength.value&&(De(t,{code:Me.too_small,minimum:i.minLength.value,type:"array",inclusive:!0,exact:!1,message:i.minLength.message}),s.dirty()),i.maxLength!==null&&t.data.length>i.maxLength.value&&(De(t,{code:Me.too_big,maximum:i.maxLength.value,type:"array",inclusive:!0,exact:!1,message:i.maxLength.message}),s.dirty()),t.common.async)return Promise.all([...t.data].map((a,o)=>i.type._parseAsync(new an(t,a,t.path,o)))).then(a=>us.mergeArray(s,a));const r=[...t.data].map((a,o)=>i.type._parseSync(new an(t,a,t.path,o)));return us.mergeArray(s,r)}get element(){return this._def.type}min(e,t){return new sn({...this._def,minLength:{value:e,message:Pe.toString(t)}})}max(e,t){return new sn({...this._def,maxLength:{value:e,message:Pe.toString(t)}})}length(e,t){return new sn({...this._def,exactLength:{value:e,message:Pe.toString(t)}})}nonempty(e){return this.min(1,e)}}sn.create=(n,e)=>new sn({type:n,minLength:null,maxLength:null,exactLength:null,typeName:Ze.ZodArray,...st(e)});function pr(n){if(n instanceof jt){const e={};for(const t in n.shape){const s=n.shape[t];e[t]=On.create(pr(s))}return new jt({...n._def,shape:()=>e})}else return n instanceof sn?new sn({...n._def,type:pr(n.element)}):n instanceof On?On.create(pr(n.unwrap())):n instanceof xi?xi.create(pr(n.unwrap())):n instanceof yi?yi.create(n.items.map(e=>pr(e))):n}class jt extends lt{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const e=this._def.shape(),t=gt.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==Ge.object){const c=this._getOrReturnCtx(e);return De(c,{code:Me.invalid_type,expected:Ge.object,received:c.parsedType}),Ye}const{status:s,ctx:i}=this._processInputParams(e),{shape:r,keys:a}=this._getCached(),o=[];if(!(this._def.catchall instanceof Qn&&this._def.unknownKeys==="strip"))for(const c in i.data)a.includes(c)||o.push(c);const l=[];for(const c of a){const d=r[c],u=i.data[c];l.push({key:{status:"valid",value:c},value:d._parse(new an(i,u,i.path,c)),alwaysSet:c in i.data})}if(this._def.catchall instanceof Qn){const c=this._def.unknownKeys;if(c==="passthrough")for(const d of o)l.push({key:{status:"valid",value:d},value:{status:"valid",value:i.data[d]}});else if(c==="strict")o.length>0&&(De(i,{code:Me.unrecognized_keys,keys:o}),s.dirty());else if(c!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const c=this._def.catchall;for(const d of o){const u=i.data[d];l.push({key:{status:"valid",value:d},value:c._parse(new an(i,u,i.path,d)),alwaysSet:d in i.data})}}return i.common.async?Promise.resolve().then(async()=>{const c=[];for(const d of l){const u=await d.key,h=await d.value;c.push({key:u,value:h,alwaysSet:d.alwaysSet})}return c}).then(c=>us.mergeObjectSync(s,c)):us.mergeObjectSync(s,l)}get shape(){return this._def.shape()}strict(e){return Pe.errToObj,new jt({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(t,s)=>{const i=this._def.errorMap?.(t,s).message??s.defaultError;return t.code==="unrecognized_keys"?{message:Pe.errToObj(e).message??i}:{message:i}}}:{}})}strip(){return new jt({...this._def,unknownKeys:"strip"})}passthrough(){return new jt({...this._def,unknownKeys:"passthrough"})}extend(e){return new jt({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new jt({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:Ze.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new jt({...this._def,catchall:e})}pick(e){const t={};for(const s of gt.objectKeys(e))e[s]&&this.shape[s]&&(t[s]=this.shape[s]);return new jt({...this._def,shape:()=>t})}omit(e){const t={};for(const s of gt.objectKeys(this.shape))e[s]||(t[s]=this.shape[s]);return new jt({...this._def,shape:()=>t})}deepPartial(){return pr(this)}partial(e){const t={};for(const s of gt.objectKeys(this.shape)){const i=this.shape[s];e&&!e[s]?t[s]=i:t[s]=i.optional()}return new jt({...this._def,shape:()=>t})}required(e){const t={};for(const s of gt.objectKeys(this.shape))if(e&&!e[s])t[s]=this.shape[s];else{let r=this.shape[s];for(;r instanceof On;)r=r._def.innerType;t[s]=r}return new jt({...this._def,shape:()=>t})}keyof(){return rm(gt.objectKeys(this.shape))}}jt.create=(n,e)=>new jt({shape:()=>n,unknownKeys:"strip",catchall:Qn.create(),typeName:Ze.ZodObject,...st(e)});jt.strictCreate=(n,e)=>new jt({shape:()=>n,unknownKeys:"strict",catchall:Qn.create(),typeName:Ze.ZodObject,...st(e)});jt.lazycreate=(n,e)=>new jt({shape:n,unknownKeys:"strip",catchall:Qn.create(),typeName:Ze.ZodObject,...st(e)});class No extends lt{_parse(e){const{ctx:t}=this._processInputParams(e),s=this._def.options;function i(r){for(const o of r)if(o.result.status==="valid")return o.result;for(const o of r)if(o.result.status==="dirty")return t.common.issues.push(...o.ctx.common.issues),o.result;const a=r.map(o=>new An(o.ctx.common.issues));return De(t,{code:Me.invalid_union,unionErrors:a}),Ye}if(t.common.async)return Promise.all(s.map(async r=>{const a={...t,common:{...t.common,issues:[]},parent:null};return{result:await r._parseAsync({data:t.data,path:t.path,parent:a}),ctx:a}})).then(i);{let r;const a=[];for(const l of s){const c={...t,common:{...t.common,issues:[]},parent:null},d=l._parseSync({data:t.data,path:t.path,parent:c});if(d.status==="valid")return d;d.status==="dirty"&&!r&&(r={result:d,ctx:c}),c.common.issues.length&&a.push(c.common.issues)}if(r)return t.common.issues.push(...r.ctx.common.issues),r.result;const o=a.map(l=>new An(l));return De(t,{code:Me.invalid_union,unionErrors:o}),Ye}}get options(){return this._def.options}}No.create=(n,e)=>new No({options:n,typeName:Ze.ZodUnion,...st(e)});const gn=n=>n instanceof Lo?gn(n.schema):n instanceof Oi?gn(n.innerType()):n instanceof Wo?[n.value]:n instanceof vi?n.options:n instanceof Pc?gt.objectValues(n.enum):n instanceof Uo?gn(n._def.innerType):n instanceof Rc?[void 0]:n instanceof Bc?[null]:n instanceof On?[void 0,...gn(n.unwrap())]:n instanceof xi?[null,...gn(n.unwrap())]:n instanceof am||n instanceof jo?gn(n.unwrap()):n instanceof Fo?gn(n._def.innerType):[];class Kd extends lt{_parse(e){const{ctx:t}=this._processInputParams(e);if(t.parsedType!==Ge.object)return De(t,{code:Me.invalid_type,expected:Ge.object,received:t.parsedType}),Ye;const s=this.discriminator,i=t.data[s],r=this.optionsMap.get(i);return r?t.common.async?r._parseAsync({data:t.data,path:t.path,parent:t}):r._parseSync({data:t.data,path:t.path,parent:t}):(De(t,{code:Me.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[s]}),Ye)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,s){const i=new Map;for(const r of t){const a=gn(r.shape[e]);if(!a.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(const o of a){if(i.has(o))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(o)}`);i.set(o,r)}}return new Kd({typeName:Ze.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:i,...st(s)})}}function Cc(n,e){const t=kn(n),s=kn(e);if(n===e)return{valid:!0,data:n};if(t===Ge.object&&s===Ge.object){const i=gt.objectKeys(e),r=gt.objectKeys(n).filter(o=>i.indexOf(o)!==-1),a={...n,...e};for(const o of r){const l=Cc(n[o],e[o]);if(!l.valid)return{valid:!1};a[o]=l.data}return{valid:!0,data:a}}else if(t===Ge.array&&s===Ge.array){if(n.length!==e.length)return{valid:!1};const i=[];for(let r=0;r<n.length;r++){const a=n[r],o=e[r],l=Cc(a,o);if(!l.valid)return{valid:!1};i.push(l.data)}return{valid:!0,data:i}}else return t===Ge.date&&s===Ge.date&&+n==+e?{valid:!0,data:n}:{valid:!1}}class Co extends lt{_parse(e){const{status:t,ctx:s}=this._processInputParams(e),i=(r,a)=>{if(Xu(r)||Xu(a))return Ye;const o=Cc(r.value,a.value);return o.valid?((Ku(r)||Ku(a))&&t.dirty(),{status:t.value,value:o.data}):(De(s,{code:Me.invalid_intersection_types}),Ye)};return s.common.async?Promise.all([this._def.left._parseAsync({data:s.data,path:s.path,parent:s}),this._def.right._parseAsync({data:s.data,path:s.path,parent:s})]).then(([r,a])=>i(r,a)):i(this._def.left._parseSync({data:s.data,path:s.path,parent:s}),this._def.right._parseSync({data:s.data,path:s.path,parent:s}))}}Co.create=(n,e,t)=>new Co({left:n,right:e,typeName:Ze.ZodIntersection,...st(t)});class yi extends lt{_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==Ge.array)return De(s,{code:Me.invalid_type,expected:Ge.array,received:s.parsedType}),Ye;if(s.data.length<this._def.items.length)return De(s,{code:Me.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),Ye;!this._def.rest&&s.data.length>this._def.items.length&&(De(s,{code:Me.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),t.dirty());const r=[...s.data].map((a,o)=>{const l=this._def.items[o]||this._def.rest;return l?l._parse(new an(s,a,s.path,o)):null}).filter(a=>!!a);return s.common.async?Promise.all(r).then(a=>us.mergeArray(t,a)):us.mergeArray(t,r)}get items(){return this._def.items}rest(e){return new yi({...this._def,rest:e})}}yi.create=(n,e)=>{if(!Array.isArray(n))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new yi({items:n,typeName:Ze.ZodTuple,rest:null,...st(e)})};class Po extends lt{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==Ge.object)return De(s,{code:Me.invalid_type,expected:Ge.object,received:s.parsedType}),Ye;const i=[],r=this._def.keyType,a=this._def.valueType;for(const o in s.data)i.push({key:r._parse(new an(s,o,s.path,o)),value:a._parse(new an(s,s.data[o],s.path,o)),alwaysSet:o in s.data});return s.common.async?us.mergeObjectAsync(t,i):us.mergeObjectSync(t,i)}get element(){return this._def.valueType}static create(e,t,s){return t instanceof lt?new Po({keyType:e,valueType:t,typeName:Ze.ZodRecord,...st(s)}):new Po({keyType:yn.create(),valueType:e,typeName:Ze.ZodRecord,...st(t)})}}class eh extends lt{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==Ge.map)return De(s,{code:Me.invalid_type,expected:Ge.map,received:s.parsedType}),Ye;const i=this._def.keyType,r=this._def.valueType,a=[...s.data.entries()].map(([o,l],c)=>({key:i._parse(new an(s,o,s.path,[c,"key"])),value:r._parse(new an(s,l,s.path,[c,"value"]))}));if(s.common.async){const o=new Map;return Promise.resolve().then(async()=>{for(const l of a){const c=await l.key,d=await l.value;if(c.status==="aborted"||d.status==="aborted")return Ye;(c.status==="dirty"||d.status==="dirty")&&t.dirty(),o.set(c.value,d.value)}return{status:t.value,value:o}})}else{const o=new Map;for(const l of a){const c=l.key,d=l.value;if(c.status==="aborted"||d.status==="aborted")return Ye;(c.status==="dirty"||d.status==="dirty")&&t.dirty(),o.set(c.value,d.value)}return{status:t.value,value:o}}}}eh.create=(n,e,t)=>new eh({valueType:e,keyType:n,typeName:Ze.ZodMap,...st(t)});class ga extends lt{_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==Ge.set)return De(s,{code:Me.invalid_type,expected:Ge.set,received:s.parsedType}),Ye;const i=this._def;i.minSize!==null&&s.data.size<i.minSize.value&&(De(s,{code:Me.too_small,minimum:i.minSize.value,type:"set",inclusive:!0,exact:!1,message:i.minSize.message}),t.dirty()),i.maxSize!==null&&s.data.size>i.maxSize.value&&(De(s,{code:Me.too_big,maximum:i.maxSize.value,type:"set",inclusive:!0,exact:!1,message:i.maxSize.message}),t.dirty());const r=this._def.valueType;function a(l){const c=new Set;for(const d of l){if(d.status==="aborted")return Ye;d.status==="dirty"&&t.dirty(),c.add(d.value)}return{status:t.value,value:c}}const o=[...s.data.values()].map((l,c)=>r._parse(new an(s,l,s.path,c)));return s.common.async?Promise.all(o).then(l=>a(l)):a(o)}min(e,t){return new ga({...this._def,minSize:{value:e,message:Pe.toString(t)}})}max(e,t){return new ga({...this._def,maxSize:{value:e,message:Pe.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}ga.create=(n,e)=>new ga({valueType:n,minSize:null,maxSize:null,typeName:Ze.ZodSet,...st(e)});class Lo extends lt{get schema(){return this._def.getter()}_parse(e){const{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}}Lo.create=(n,e)=>new Lo({getter:n,typeName:Ze.ZodLazy,...st(e)});class Wo extends lt{_parse(e){if(e.data!==this._def.value){const t=this._getOrReturnCtx(e);return De(t,{received:t.data,code:Me.invalid_literal,expected:this._def.value}),Ye}return{status:"valid",value:e.data}}get value(){return this._def.value}}Wo.create=(n,e)=>new Wo({value:n,typeName:Ze.ZodLiteral,...st(e)});function rm(n,e){return new vi({values:n,typeName:Ze.ZodEnum,...st(e)})}class vi extends lt{_parse(e){if(typeof e.data!="string"){const t=this._getOrReturnCtx(e),s=this._def.values;return De(t,{expected:gt.joinValues(s),received:t.parsedType,code:Me.invalid_type}),Ye}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){const t=this._getOrReturnCtx(e),s=this._def.values;return De(t,{received:t.data,code:Me.invalid_enum_value,options:s}),Ye}return Bs(e.data)}get options(){return this._def.values}get enum(){const e={};for(const t of this._def.values)e[t]=t;return e}get Values(){const e={};for(const t of this._def.values)e[t]=t;return e}get Enum(){const e={};for(const t of this._def.values)e[t]=t;return e}extract(e,t=this._def){return vi.create(e,{...this._def,...t})}exclude(e,t=this._def){return vi.create(this.options.filter(s=>!e.includes(s)),{...this._def,...t})}}vi.create=rm;class Pc extends lt{_parse(e){const t=gt.getValidEnumValues(this._def.values),s=this._getOrReturnCtx(e);if(s.parsedType!==Ge.string&&s.parsedType!==Ge.number){const i=gt.objectValues(t);return De(s,{expected:gt.joinValues(i),received:s.parsedType,code:Me.invalid_type}),Ye}if(this._cache||(this._cache=new Set(gt.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){const i=gt.objectValues(t);return De(s,{received:s.data,code:Me.invalid_enum_value,options:i}),Ye}return Bs(e.data)}get enum(){return this._def.values}}Pc.create=(n,e)=>new Pc({values:n,typeName:Ze.ZodNativeEnum,...st(e)});class ko extends lt{unwrap(){return this._def.type}_parse(e){const{ctx:t}=this._processInputParams(e);if(t.parsedType!==Ge.promise&&t.common.async===!1)return De(t,{code:Me.invalid_type,expected:Ge.promise,received:t.parsedType}),Ye;const s=t.parsedType===Ge.promise?t.data:Promise.resolve(t.data);return Bs(s.then(i=>this._def.type.parseAsync(i,{path:t.path,errorMap:t.common.contextualErrorMap})))}}ko.create=(n,e)=>new ko({type:n,typeName:Ze.ZodPromise,...st(e)});class Oi extends lt{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Ze.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){const{status:t,ctx:s}=this._processInputParams(e),i=this._def.effect||null,r={addIssue:a=>{De(s,a),a.fatal?t.abort():t.dirty()},get path(){return s.path}};if(r.addIssue=r.addIssue.bind(r),i.type==="preprocess"){const a=i.transform(s.data,r);if(s.common.async)return Promise.resolve(a).then(async o=>{if(t.value==="aborted")return Ye;const l=await this._def.schema._parseAsync({data:o,path:s.path,parent:s});return l.status==="aborted"?Ye:l.status==="dirty"||t.value==="dirty"?ra(l.value):l});{if(t.value==="aborted")return Ye;const o=this._def.schema._parseSync({data:a,path:s.path,parent:s});return o.status==="aborted"?Ye:o.status==="dirty"||t.value==="dirty"?ra(o.value):o}}if(i.type==="refinement"){const a=o=>{const l=i.refinement(o,r);if(s.common.async)return Promise.resolve(l);if(l instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return o};if(s.common.async===!1){const o=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});return o.status==="aborted"?Ye:(o.status==="dirty"&&t.dirty(),a(o.value),{status:t.value,value:o.value})}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(o=>o.status==="aborted"?Ye:(o.status==="dirty"&&t.dirty(),a(o.value).then(()=>({status:t.value,value:o.value}))))}if(i.type==="transform")if(s.common.async===!1){const a=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});if(!vr(a))return Ye;const o=i.transform(a.value,r);if(o instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:o}}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(a=>vr(a)?Promise.resolve(i.transform(a.value,r)).then(o=>({status:t.value,value:o})):Ye);gt.assertNever(i)}}Oi.create=(n,e,t)=>new Oi({schema:n,typeName:Ze.ZodEffects,effect:e,...st(t)});Oi.createWithPreprocess=(n,e,t)=>new Oi({schema:e,effect:{type:"preprocess",transform:n},typeName:Ze.ZodEffects,...st(t)});class On extends lt{_parse(e){return this._getType(e)===Ge.undefined?Bs(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}On.create=(n,e)=>new On({innerType:n,typeName:Ze.ZodOptional,...st(e)});class xi extends lt{_parse(e){return this._getType(e)===Ge.null?Bs(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}xi.create=(n,e)=>new xi({innerType:n,typeName:Ze.ZodNullable,...st(e)});class Uo extends lt{_parse(e){const{ctx:t}=this._processInputParams(e);let s=t.data;return t.parsedType===Ge.undefined&&(s=this._def.defaultValue()),this._def.innerType._parse({data:s,path:t.path,parent:t})}removeDefault(){return this._def.innerType}}Uo.create=(n,e)=>new Uo({innerType:n,typeName:Ze.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...st(e)});class Fo extends lt{_parse(e){const{ctx:t}=this._processInputParams(e),s={...t,common:{...t.common,issues:[]}},i=this._def.innerType._parse({data:s.data,path:s.path,parent:{...s}});return Ro(i)?i.then(r=>({status:"valid",value:r.status==="valid"?r.value:this._def.catchValue({get error(){return new An(s.common.issues)},input:s.data})})):{status:"valid",value:i.status==="valid"?i.value:this._def.catchValue({get error(){return new An(s.common.issues)},input:s.data})}}removeCatch(){return this._def.innerType}}Fo.create=(n,e)=>new Fo({innerType:n,typeName:Ze.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...st(e)});class th extends lt{_parse(e){if(this._getType(e)!==Ge.nan){const s=this._getOrReturnCtx(e);return De(s,{code:Me.invalid_type,expected:Ge.nan,received:s.parsedType}),Ye}return{status:"valid",value:e.data}}}th.create=n=>new th({typeName:Ze.ZodNaN,...st(n)});class am extends lt{_parse(e){const{ctx:t}=this._processInputParams(e),s=t.data;return this._def.type._parse({data:s,path:t.path,parent:t})}unwrap(){return this._def.type}}class Yd extends lt{_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.common.async)return(async()=>{const r=await this._def.in._parseAsync({data:s.data,path:s.path,parent:s});return r.status==="aborted"?Ye:r.status==="dirty"?(t.dirty(),ra(r.value)):this._def.out._parseAsync({data:r.value,path:s.path,parent:s})})();{const i=this._def.in._parseSync({data:s.data,path:s.path,parent:s});return i.status==="aborted"?Ye:i.status==="dirty"?(t.dirty(),{status:"dirty",value:i.value}):this._def.out._parseSync({data:i.value,path:s.path,parent:s})}}static create(e,t){return new Yd({in:e,out:t,typeName:Ze.ZodPipeline})}}class jo extends lt{_parse(e){const t=this._def.innerType._parse(e),s=i=>(vr(i)&&(i.value=Object.freeze(i.value)),i);return Ro(t)?t.then(i=>s(i)):s(t)}unwrap(){return this._def.innerType}}jo.create=(n,e)=>new jo({innerType:n,typeName:Ze.ZodReadonly,...st(e)});var Ze;(function(n){n.ZodString="ZodString",n.ZodNumber="ZodNumber",n.ZodNaN="ZodNaN",n.ZodBigInt="ZodBigInt",n.ZodBoolean="ZodBoolean",n.ZodDate="ZodDate",n.ZodSymbol="ZodSymbol",n.ZodUndefined="ZodUndefined",n.ZodNull="ZodNull",n.ZodAny="ZodAny",n.ZodUnknown="ZodUnknown",n.ZodNever="ZodNever",n.ZodVoid="ZodVoid",n.ZodArray="ZodArray",n.ZodObject="ZodObject",n.ZodUnion="ZodUnion",n.ZodDiscriminatedUnion="ZodDiscriminatedUnion",n.ZodIntersection="ZodIntersection",n.ZodTuple="ZodTuple",n.ZodRecord="ZodRecord",n.ZodMap="ZodMap",n.ZodSet="ZodSet",n.ZodFunction="ZodFunction",n.ZodLazy="ZodLazy",n.ZodLiteral="ZodLiteral",n.ZodEnum="ZodEnum",n.ZodEffects="ZodEffects",n.ZodNativeEnum="ZodNativeEnum",n.ZodOptional="ZodOptional",n.ZodNullable="ZodNullable",n.ZodDefault="ZodDefault",n.ZodCatch="ZodCatch",n.ZodPromise="ZodPromise",n.ZodBranded="ZodBranded",n.ZodPipeline="ZodPipeline",n.ZodReadonly="ZodReadonly"})(Ze||(Ze={}));const k=yn.create,ce=Or.create,Nt=Gc.create,Zd=Nc.create;Qn.create;const at=sn.create,me=jt.create;No.create;const om=Kd.create;Co.create;const lm=yi.create,mb=Po.create,gb=Lo.create,pt=Wo.create,Wt=vi.create;ko.create;On.create;xi.create;const Mb=Wt(["ok","error"]),bb=me({type:Wt(["error","warning"]),message:k()}),_b=me({kind:k(),data:Zd()}),zb=me({input:k(),proposed:k(),validated:Nt(),executed:k().optional()}),cm=me({status:Mb,rendered:k(),renderedErr:k().optional(),model:_b.optional(),errors:at(bb).optional(),trace:zb.optional()}),wb=Wt(["data","err","status"]),yb=me({shellCommands:Nt(),hiddenInput:Nt().optional(),color:Nt().optional(),fileDelivery:Nt().optional(),localFilesystem:Nt().optional()}),vb=me({type:pt("attach"),protocolVersion:ce().int(),token:k(),session:k().optional(),capabilities:yb.optional()}),Ob=me({type:pt("execute"),id:k(),line:k(),instrument:Nt().optional()}),xb=me({type:pt("cancel"),id:k()}),Sb=me({type:pt("complete"),id:k(),prefix:k()}),Eb=me({type:pt("promptAnswer"),promptId:k(),answer:k()}),Ab=me({type:pt("promptError"),promptId:k(),reason:k()}),Db=me({type:pt("pipeResult"),pipeId:k(),output:k()}),Tb=me({type:pt("pipeError"),pipeId:k(),reason:k()}),Ib=me({type:pt("shellResult"),shellId:k(),exitCode:ce().int()}),Gb=me({type:pt("shellError"),shellId:k(),reason:k()}),Rb=me({type:pt("editResult"),editId:k(),content:k(),changed:Nt(),opened:Nt().optional()}),Bb=me({type:pt("editError"),editId:k(),reason:k()}),Nb=me({type:pt("deliverResult"),deliverId:k(),location:k(),bytes:ce().nonnegative()}),Cb=me({type:pt("deliverError"),deliverId:k(),reason:k()}),Pb=me({address:k(),modelKind:k().optional(),groupId:k(),paneId:k()}),dm=me({type:pt("regard"),regard:Pb}),Lb=me({type:pt("watch"),subject:k()}),Wb=me({type:pt("unwatch"),subject:k()}),kb=["live","settled","stale"],Ub=Wt(kb),Fb=me({type:pt("stale"),stale:Nt()}),jb=["restart","end","stop"],$b=me({type:pt("closing"),cause:Wt(jb)}),Vb=me({type:pt("watched"),subject:k(),state:Ub}),Hb=me({type:pt("numbered"),id:ce(),source:k(),rows:ce(),handles:at(me({kind:k(),ordinal:ce(),address:k()}))});om("type",[vb,Ob,xb,Sb,Eb,Ab,Db,Tb,Ib,Gb,Rb,Bb,Nb,Cb,dm,Lb,Wb]);const qb=me({type:pt("attached"),session:k(),surface:k().optional(),protocolVersion:ce().int(),stack:me({chell:k(),calypso:k(),build:k(),surface:me({git:k(),built:k()}).optional(),brasa:k().optional(),chili:k().optional(),salsa:k().optional(),cumin:k().optional()}).optional(),hostControl:at(k()).optional(),stale:Nt().optional()}),Xb=me({type:pt("result"),id:k(),envelopes:at(cm)}),Kb=me({type:pt("complete"),id:k(),prefix:k(),candidates:at(k())}),Yb=me({type:pt("output"),id:k(),channel:wb,chunk:k()}),Zb=Wt(CM).catch("task"),Qb=Wt(PM).catch(void 0),Jb=Wt(LM).catch("working"),e_=Wt(WM).catch(void 0),t_=Wt(kM).catch("unknown"),s_=me({type:pt("progress"),id:k(),operation:Zb,kind:Qb.optional(),phase:Jb,label:k().optional(),itemId:k().optional(),current:ce().nonnegative().optional(),total:ce().nonnegative().optional(),percent:ce().min(0).max(100).optional(),unit:e_.optional(),status:t_.optional(),path:k().optional(),reason:k().optional()}),n_=me({type:pt("session"),surface:k(),envelope:cm}),i_=me({type:pt("error"),id:k().optional(),reason:k()}),r_=["text","secret","confirm","path"],a_=Wt(r_).catch("text"),o_=me({anchor:k().optional(),wantsDirectory:Nt(),suggest:k().optional()}),l_=me({type:pt("prompt"),promptId:k(),message:k(),hidden:Nt(),wants:a_.optional(),path:o_.optional(),commit:k().optional()});function c_(n){return n.wants!==void 0?n.wants:n.hidden===!0?"secret":"text"}const d_=me({user:k(),uri:k(),cwd:k(),pacsserver:k().nullable(),physicalMode:Nt(),lastExitCode:ce(),lastCommandDurationMs:ce(),procWarmup:me({loaded:ce(),total:ce().optional(),restored:Nt().optional(),state:Wt(BM).optional(),sweeping:Nt().optional(),feed:me({id:ce(),loaded:ce(),total:ce(),failed:k().optional()}).optional(),feeds:at(me({id:ce(),loaded:ce(),total:ce(),failed:k().optional()})).optional(),arrived:at(ce()).optional(),landed:at(me({id:ce(),title:k().default(""),jobs:ce(),status:k(),chain:at(k()),groups:at(me({plugin:k(),count:ce(),errored:ce().default(0),status:k(),parent:ce().nullable()})).default([])})).optional(),roster:Wt(["delta","full"]).optional()}).optional(),procIndex:me({jobs:ce(),feeds:ce()}).optional(),warmupFailures:at(me({label:k(),message:k()})).optional()}),u_=me({type:pt("promptline"),context:d_}),h_=me({type:pt("pipe"),pipeId:k(),command:k(),input:k()}),f_=me({type:pt("shell"),shellId:k(),command:k()}),p_=me({type:pt("edit"),editId:k(),content:k(),extension:k().optional(),path:k().optional()}),m_=me({type:pt("deliver"),deliverId:k(),path:k(),filename:k(),destination:k().optional(),size:ce().nonnegative().optional(),contentType:k().optional()}),g_=me({type:pt("telemetry"),index:me({jobs:ce(),feeds:ce()}),lane:me({running:me({line:k(),sinceMs:ce(),surface:k()}).nullable(),waiting:ce()}).optional(),surfaces:at(me({id:k(),kind:Wt(["chell","browser"])})).optional(),cube:me({msPerPage:ce(),samples:ce()}).optional(),state:me({running:ce(),runningFeeds:ce(),scheduled:ce(),errored:ce(),erroredFeeds:ce()}).optional()}),um=om("type",[qb,Xb,Kb,Yb,s_,n_,i_,l_,u_,g_,h_,f_,p_,m_,dm,Vb,Fb,$b,Hb]);new Set(um.options.map(n=>n.shape.type.value));function M_(n){return n.issues.map(e=>{const t=e.path.join(".");return t?`${t}: ${e.message}`:e.message}).join("; ")}function b_(n,e){const t=n.safeParse(e);return t.success?{ok:!0,value:t.data}:{ok:!1,error:M_(t.error)}}function __(n){return b_(um,n)}const hm=me({id:k(),label:k(),parentIds:at(k()),joinParentIds:at(k())}),z_=me({name:k(),value:Zd()}),w_=hm.extend({pluginName:k(),pluginVersion:k().optional(),arguments:at(z_).optional()}),Qd=me({name:k(),pipelineId:ce().optional(),nodes:at(w_)}),y_=["created","waiting","scheduled","started","registeringFiles","finishedSuccessfully","finishedWithError","cancelled","unknown"],fm=Wt(y_).catch("unknown"),v_=me({count:ce(),done:ce(),error:ce(),running:ce(),other:ce(),anomalies:at(me({id:k(),status:fm})).optional()}),O_=me({computeSeconds:ce().optional(),dataBytes:ce().optional()}),x_=hm.extend({instanceId:ce(),pluginName:k(),pluginVersion:k().optional(),status:fm,vfsPath:k(),metrics:O_.optional(),tally:v_.optional(),computeResource:k().optional()}),Lc=me({feedId:ce(),feedName:k(),nodes:at(x_)}),S_=me({feedId:ce(),loaded:ce(),total:ce(),failed:k().optional()}),Vn={pipelineDiagram:"pipeline.diagram",feedDag:"feed.dag",feedIndexing:"feed.indexing"},E_=me({id:ce(),title:k(),owner:k(),status:k(),createdAt:k(),sizeBytes:ce().optional(),wallSeconds:ce().optional(),jobsDone:ce().optional(),jobsTotal:ce().optional(),jobsErrored:ce().optional(),tags:at(k()).optional()}),pm=me({feeds:at(E_)}),mm="feed.list",A_=me({plugin:k(),count:ce(),errored:ce().default(0),status:k(),parent:ce().nullable()}),D_=me({format:Wt(["dicom","nifti","mgz","jpeg","png","other","unknown"]),modality:k().optional(),seriesDescription:k().optional(),reason:k().optional(),sourceFeed:ce().optional()}),T_=me({id:ce(),title:k().default(""),jobs:ce(),status:k(),chain:at(k()),groups:at(A_).default([]),createdAt:k().default(""),data:D_.optional()}),gm=me({feeds:at(T_),whole:Nt()}),Mm="proc.universe",I_=me({name:k(),positions:mb(k(),lm([ce(),ce(),ce()])).nullable(),writtenAt:k().nullable(),laying:me({nodes:ce(),fraction:ce()}).nullable().optional()}),G_="proc.layout",R_=me({name:k(),type:k(),optional:Nt(),default:Zd().optional(),help:k().optional(),flag:k()}),B_=me({id:ce().optional(),name:k(),version:k(),type:k(),title:k().optional(),description:k().optional(),authors:k().optional(),documentation:k().optional(),category:k().optional(),parameters:at(R_),command:k().optional()}),N_="plugin.info",C_=me({seriesUID:k(),description:k(),modality:k(),fileCount:ce().optional(),vfsPath:k().optional(),pulled:Nt().optional(),pulledFiles:ce().optional(),folderPath:k().optional()}),P_=me({studyUID:k().optional(),server:k().optional(),vfsPath:k().optional(),description:k(),patientName:k(),patientId:k(),date:k(),modalities:k(),accession:k(),series:at(C_)}),bm=me({replayed:Nt(),answeredAt:k()}),L_=["found","none","unasked"],W_=Wt(L_).catch("unasked"),k_=me({patientId:k(),server:k().optional(),patientName:k().optional(),status:W_,studyCount:ce(),seriesCount:ce(),queryId:ce().optional(),provenance:bm.optional(),error:k().optional()}),U_=me({queryId:ce(),vfsPath:k(),pacsName:k(),expression:k(),studies:at(P_),provenance:bm.optional(),patients:at(k_).optional()}),F_=me({id:ce(),identifier:k(),active:Nt()}),j_=me({servers:at(F_)}),$_="pacs.servers",V_="pacs.query";function H_(n){return`pacs:patient:${n.server??"-"}:${n.patientId}`}const q_=["patient","study","series","image","equipment","meta","private","other"],_m=Wt(q_).catch("other"),zm=gb(()=>me({tag:k(),name:k(),vr:k(),value:k(),group:_m,phi:Nt(),decoded:k().optional(),items:at(at(zm)).optional()})),X_=me({tag:k(),name:k(),vr:k(),group:_m,phi:Nt(),distinct:ce(),first:k(),last:k(),values:at(me({path:k(),value:k().nullable()}))}),sh=me({path:k(),subject:Wt(["file","folder"]),read:ce(),of:ce(),refused:at(k()),constant:at(zm),varying:at(X_)}),K_=me({rows:ce(),columns:ce(),pixelSpacing:lm([ce(),ce()]).optional(),sliceThickness:ce().optional(),spacingBetweenSlices:ce().optional()}),nh=me({path:k(),seriesInstanceUID:k().optional(),studyInstanceUID:k().optional(),modality:k(),seriesDescription:k(),seriesNumber:ce().optional(),instances:ce(),frames:ce(),order:Wt(["filename","unknown"]),geometry:K_.optional(),transferSyntax:me({uid:k(),name:k().optional()}).optional(),bytes:ce(),header:k(),files:at(k()),annotations:at(k())}),Da={tags:"dicom.tags",series:"dicom.series"},Y_=me({path:k(),target:Wt(["series","volume"]),force:Nt().optional(),startAt:ce().int().positive().optional()}),Z_={view:"image.view"},Q_=me({state:Wt(["cold","warming","current"]),loaded:ce(),total:ce()});me({user:k(),surface:k(),feeds:me({total:ce(),own:ce(),shared:ce(),public:ce()}),jobs:me({total:ce(),finished:ce(),errored:ce(),cancelled:ce(),running:ce(),scheduled:ce()}),failureRate:ce().nullable(),index:Q_,fortune:k()});function ns(n){return n.groups.map(e=>`${e.parent??"r"}:${e.plugin}`).join(">")}function Hn(n,e){return`feed:${n}:${e}`}function wm(n){return`shape:${n}`}function xr(n){return Math.log2(Math.max(1,n)+1)}function Jd(n){if(!(n.errored<=0||n.count<=0))return Math.min(1,n.errored/n.count)}function va(n,e="jobs"){const t=[],s=new Set,i=[...n].sort((a,o)=>a.id-o.id),r=new Map;for(const a of i){if(a.groups.length===0)continue;const o=ns(a);r.set(o,(r.get(o)??0)+1)}for(const a of i){if(a.groups.length===0)continue;const o=ns(a),l=wm(o);s.has(o)||(s.add(o),t.push({id:l,label:dl(o),parentIds:[],joinParentIds:[],ghost:!0,halo:!0,metric:1,count:r.get(o)??1})),a.groups.forEach((c,d)=>{const u=Jd(c);t.push({id:Hn(a.id,d),label:c.plugin,parentIds:[c.parent===null?l:Hn(a.id,c.parent)],joinParentIds:[],status:c.status,metric:e==="jobs"?xr(c.count):1,...c.count>1?{count:c.count}:{},...u!==void 0?{share:u}:{}})})}return{nodes:t}}const Wc="plugin:";function J_(n){return`${Wc}${n}`}function kc(n){return n.startsWith(Wc)?n.slice(Wc.length):null}function eu(n,e="jobs"){const t=[],s=new Map,i=[...n].sort((r,a)=>r.id-a.id);for(const r of i)if(r.groups.length!==0){for(const a of new Set(r.groups.map(o=>o.plugin)))s.set(a,(s.get(a)??0)+1);r.groups.forEach((a,o)=>{const l=Jd(a);t.push({id:Hn(r.id,o),label:a.plugin,parentIds:a.parent===null?[]:[Hn(r.id,a.parent)],joinParentIds:[],status:a.status,metric:e==="jobs"?xr(a.count):1,attrs:{plugin:a.plugin},...a.count>1?{count:a.count}:{},...l!==void 0?{share:l}:{}})})}for(const[r,a]of[...s].sort((o,l)=>o[0]<l[0]?-1:1))t.push({id:J_(r),label:r,parentIds:[],joinParentIds:[],metric:1+Math.log(a),hue:"#e8f4ff",ring:!0,attrs:{kind:"star",plugin:r}});return{nodes:t}}function ih(n,e="jobs"){const t=new Map;for(const i of n){const r=i.createdAt===void 0?Number.NaN:Date.parse(i.createdAt);Number.isFinite(r)&&t.set(i.id,r)}return{nodes:eu(n,e).nodes.filter(i=>i.attrs?.kind!=="star").map(i=>{const r=t.get(Number(i.id.split(":")[1]));return r===void 0?i:{...i,attrs:{...i.attrs,createdAt:r}}})}}function dl(n){const e=[];for(const t of n.split(">")){const s=t.slice(t.indexOf(":")+1);s.length>0&&!e.includes(s)&&e.push(s)}return e.join(" > ")}const e0=.5,t0=5,s0=.02,Uc="data:",n0={dicom:"DICOM",nifti:"NIfTI",mgz:"MGZ",jpeg:"JPEG",png:"PNG",other:"OTHER",unknown:"UNREADABLE",unread:"NOT YET READ"};function i0(n){const e=n.toUpperCase().replace(/[_\-.,/\\()[\]:;+]+/g," ").split(/\s+/).filter(t=>t.length>0).filter(t=>!/^\d+$/.test(t)).filter(t=>!/^\d+X\d+$/.test(t)).filter(t=>!/^FOV\d*$/.test(t)).filter(t=>!/^\d+(\.\d+)?(MM|CM)$/.test(t));return[...new Set(e)]}function r0(n,e){if(n.length===0||e.length===0)return 0;const t=new Set(n);return e.filter(i=>t.has(i)).length/Math.min(n.length,e.length)}function ym(n){const e=new Map;for(const r of n)e.set(r,(e.get(r)??0)+1);const t=[...e.keys()].sort((r,a)=>(e.get(a)??0)-(e.get(r)??0)||(r<a?-1:1)),s=[],i=new Map;for(const r of t){const a=i0(r),o=a.length===0?void 0:s.find(l=>r0(l.words,a)>=e0);if(o!==void 0){i.set(r,o.name);continue}s.push({name:r,words:a}),i.set(r,r)}return i}function vm(n,e){const t=n.data?.format??"unread",s=[{key:t,label:n0[t]??t.toUpperCase()}];if(t!=="dicom")return s;const i=n.data?.modality??"NO MODALITY";s.push({key:`${t}/${i}`,label:i});const r=n.data?.seriesDescription,a=r===void 0?"NO DESCRIPTION":e.get(r)??r;return s.push({key:`${t}/${i}/${a}`,label:a}),s}function Sl(n){return`${Uc}${n}`}function Fc(n){return n.startsWith(Uc)?n.slice(Uc.length):null}function rh(n,e="jobs"){const t=[...n].filter(d=>d.groups.length>0).sort((d,u)=>d.id-u.id),s=ym(t.map(d=>d.data?.seriesDescription).filter(d=>d!==void 0)),i=new Map,r=[];for(const d of t){const u=vm(d,s);let h=null;for(const f of u){const b=i.get(f.key);b===void 0?i.set(f.key,{label:f.label,feeds:1,parent:h}):b.feeds+=1,h=f.key}const p=Sl(h);d.groups.forEach((f,b)=>{const g=Jd(f);r.push({id:Hn(d.id,b),label:f.plugin,parentIds:[f.parent===null?p:Hn(d.id,f.parent)],joinParentIds:[],status:f.status,metric:e==="jobs"?xr(f.count):1,...f.count>1?{count:f.count}:{},...g!==void 0?{share:g}:{}})})}const a=new Map;for(const d of t){const u=d.groups.findIndex(h=>h.parent===null);u>=0&&a.set(d.id,Hn(d.id,u))}const o=new Map(r.map(d=>[d.id,d]));for(const d of t){const u=d.data?.sourceFeed,h=u===void 0||u===d.id?void 0:a.get(u),p=a.get(d.id);if(h===void 0||p===void 0)continue;const f=o.get(p);f!==void 0&&(f.joinParentIds=[...f.joinParentIds,h],f.joinFaint=!0)}const l=(d,u)=>d.split("/").length<3||u>=Math.max(t0,s0*t.length);return{graph:{nodes:[...[...i].map(([d,u])=>({id:Sl(d),label:u.label,parentIds:u.parent===null?[]:[Sl(u.parent)],joinParentIds:[],ghost:!0,halo:!0,metric:1,count:u.feeds,...l(d,u.feeds)?{caption:`${u.label} · ${u.feeds.toLocaleString("en-US")}`}:{}})),...r]},hubs:new Map([...i].map(([d,u])=>[d,{label:u.label,feeds:u.feeds}]))}}function a0(n,e){const t=Fc(n);if(t===null)return null;const s=t.split("/"),i=s.map((a,o)=>e.get(s.slice(0,o+1).join("/"))?.label??s[o]??""),r=e.get(t)?.feeds??0;return`${i.join(" · ")} · ${r.toLocaleString("en-US")} feed${r===1?"":"s"}`}const jc=12,o0=240;function l0(n){return n<=o0?jc:void 0}function $c(n,e){return`fold:${n}:${e}`}function Om(n){const e=n.match(/^fold:(.+):\d+$/);return e===null?null:e[1]}function c0(n){const e=n.match(/^feed:(\d+):/);if(e!==null)return`feed:${e[1]}`;const t=Om(n);return t===null?null:`fold:${t}`}const d0=me({at:ce(),method:k(),family:k(),path:k(),status:ce(),ms:ce()}),u0=me({family:k(),count:ce(),ms:ce()});me({since:k(),total:ce(),ms:ce(),families:at(u0),last:at(d0)});const xm=24,Vc="argus.dormant";class h0{constructor(e=xm,t){this.cap=e,this.store=t,this.rehydrate()}cap;store;groups=new Map;add(e){for(this.groups.delete(e.id),this.groups.set(e.id,e);this.groups.size>this.cap;){const t=this.oldest_id();if(t===void 0)break;this.groups.delete(t)}this.persist()}list(){return[...this.groups.values()].sort((e,t)=>t.lastTouched-e.lastTouched)}get(e){return this.groups.get(e)}has(e){return this.groups.has(e)}dismiss(e){const t=this.groups.delete(e);return t&&this.persist(),t}oldest_id(){let e;for(const t of this.groups.values())(e===void 0||t.lastTouched<e.lastTouched)&&(e=t);return e?.id}persist(){if(this.store!==void 0)try{this.store.setItem(Vc,JSON.stringify([...this.groups.values()]))}catch{}}rehydrate(){if(this.store!==void 0)try{const e=this.store.getItem(Vc);if(e===null)return;const t=JSON.parse(e);if(!Array.isArray(t))return;for(const s of t)s!==null&&typeof s=="object"&&typeof s.id=="string"&&this.groups.set(s.id,s)}catch{}}}function ah(){try{const n=globalThis.localStorage;return n===void 0?void 0:(n.getItem(Vc),n)}catch{return}}class f0{constructor(e,t){this.host=t,this.grid=e.querySelector(".panes-grid"),this.empty=e.querySelector(".panes-empty"),this.grid.addEventListener("click",this.click_handle)}host;grid;empty;render(){const e=this.host.list();this.empty.hidden=e.length>0,this.grid.replaceChildren(...e.map(t=>this.card_build(t)))}card_build(e){const t=document.createElement("button");t.className="panes-card",t.dataset.restore=e.id,t.title=`restore ${e.label}`;const s=document.createElement("span");if(s.className="panes-card-figure",e.thumbnail!==void 0){const o=document.createElement("img");o.src=e.thumbnail,o.alt="",s.appendChild(o)}else s.classList.add("panes-card-glyph"),s.textContent=e.members.includes("files")&&!e.members.includes("viewer")?"▤":"▣";t.appendChild(s);const i=document.createElement("span");i.className="panes-card-label",i.textContent=e.label,t.appendChild(i);const r=document.createElement("span");r.className="panes-card-badges";for(const o of p0(e.members)){const l=document.createElement("span");l.className="panes-card-badge",l.textContent=o.toUpperCase(),r.appendChild(l)}t.appendChild(r);const a=document.createElement("button");return a.className="panes-card-dismiss",a.dataset.dismiss=e.id,a.title=`forget ${e.label}`,a.textContent="DISMISS",t.appendChild(a),t}click_handle=e=>{const t=e.target,s=t.closest("[data-dismiss]");if(s!==null){e.stopPropagation();const r=s.dataset.dismiss??"";this.host.dismiss(r),this.render();return}const i=t.closest("[data-restore]");i!==null&&this.host.restore(i.dataset.restore??"")}}function p0(n){return[...new Set(n)]}const m0="G1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtChtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjswOzE7Mm0gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjsxOzI7Mm0gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbQobWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsxOzFtIBtbMG0bWzM4OzI7MTsyOzNtIBtbMG0bWzM4OzI7MTsyOzNtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7NTsxMDsxNG0gG1swbRtbMzg7Mjs5OzE4OzI0bSAbWzBtG1szODsyOzU7MTA7MTNtIBtbMG0bWzM4OzI7MTQ7Mjc7MzdtIBtbMG0bWzM4OzI7Mzs3OzltIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MTsyOzJtIBtbMG0bWzM4OzI7MTsyOzNtIBtbMG0bWzM4OzI7MTsyOzJtIBtbMG0bWzM4OzI7MDsxOzFtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsybSAbWzBtG1szODsyOzE7MjszbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzk7MTc7MjRtIBtbMG0bWzM4OzI7MjM7NDU7NjJtLhtbMG0bWzM4OzI7NDE7Nzk7MTA5bTobWzBtG1szODsyOzU5OzExMzsxNTVtPRtbMG0bWzM4OzI7NzU7MTQ0OzE5NW0rG1swbRtbMzg7Mjs3NjsxNDQ7MTkzbSsbWzBtG1szODsyOzE0OzI3OzM3bSAbWzBtG1szODsyOzc1OzE0MjsxODltKxtbMG0bWzM4OzI7Nzc7MTQ1OzE5Mm0rG1swbRtbMzg7Mjs2NzsxMjY7MTY1bT0bWzBtG1szODsyOzU1OzEwMjsxMzRtLRtbMG0bWzM4OzI7NDE7Nzc7MTAwbTobWzBtG1szODsyOzI3OzUxOzY2bS4bWzBtG1szODsyOzE0OzI3OzM1bSAbWzBtG1szODsyOzQ7ODsxMW0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxOzI7Mm0gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbQobWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsxOzJtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7Mjs1OzhtIBtbMG0bWzM4OzI7MTQ7Mjc7MzltIBtbMG0bWzM4OzI7Mjk7NTc7ODFtOhtbMG0bWzM4OzI7NDU7ODk7MTI3bS0bWzBtG1szODsyOzYxOzEyMDsxNzBtPRtbMG0bWzM4OzI7NzU7MTQ1OzIwM20rG1swbRtbMzg7Mjs3OTsxNTM7MjExbSsbWzBtG1szODsyOzgwOzE1NDsyMTJtKxtbMG0bWzM4OzI7ODE7MTU2OzIxM20rG1swbRtbMzg7Mjs4MjsxNTg7MjEzbSsbWzBtG1szODsyOzg0OzE1OTsyMTRtKxtbMG0bWzM4OzI7Mzg7NzI7OTdtOhtbMG0bWzM4OzI7MzQ7NjU7ODZtOhtbMG0bWzM4OzI7ODc7MTY0OzIxNm0rG1swbRtbMzg7Mjs4OTsxNjY7MjE3bSsbWzBtG1szODsyOzkwOzE2NzsyMThtKxtbMG0bWzM4OzI7OTE7MTY5OzIxOW0rG1swbRtbMzg7Mjs5MjsxNzE7MjE5bSobWzBtG1szODsyOzkyOzE3MjsyMTltKhtbMG0bWzM4OzI7ODU7MTU3OzIwMG0rG1swbRtbMzg7Mjs3NDsxMzc7MTcybT0bWzBtG1szODsyOzYyOzExMzsxNDFtLRtbMG0bWzM4OzI7NDY7ODQ7MTA1bTobWzBtG1szODsyOzMxOzU3OzcxbTobWzBtG1szODsyOzE3OzMxOzM4bS4bWzBtG1szODsyOzY7MTA7MTNtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzIxOzQzOzY1bS4bWzBtG1szODsyOzM4Ozc2OzExM206G1swbRtbMzg7Mjs0OTs5OTsxNDVtLRtbMG0bWzM4OzI7NjI7MTI0OzE4MW09G1swbRtbMzg7Mjs3MzsxNDQ7MjA4bSsbWzBtG1szODsyOzc0OzE0NjsyMDhtKxtbMG0bWzM4OzI7NzU7MTQ3OzIwOW0rG1swbRtbMzg7Mjs3NjsxNDk7MjEwbSsbWzBtG1szODsyOzc4OzE1MTsyMTFtKxtbMG0bWzM4OzI7Nzg7MTUxOzIwOG0rG1swbRtbMzg7Mjs3ODsxNTE7MjA4bSsbWzBtG1szODsyOzgwOzE1NDsyMTBtKxtbMG0bWzM4OzI7ODE7MTU2OzIxMG0rG1swbRtbMzg7Mjs4MzsxNTc7MjEybSsbWzBtG1szODsyOzc4OzE0OTsxOThtKxtbMG0bWzM4OzI7MTE7MjI7MjltIBtbMG0bWzM4OzI7NzY7MTQ0OzE5MG0rG1swbRtbMzg7Mjs4ODsxNjY7MjE3bSsbWzBtG1szODsyOzg3OzE2MjsyMTJtKxtbMG0bWzM4OzI7ODk7MTY2OzIxNW0rG1swbRtbMzg7Mjs5MDsxNjg7MjE2bSsbWzBtG1szODsyOzkzOzE3MzsyMjBtKhtbMG0bWzM4OzI7OTQ7MTc0OzIyMW0qG1swbRtbMzg7Mjs5NjsxNzY7MjIxbSobWzBtG1szODsyOzk3OzE3ODsyMjJtKhtbMG0bWzM4OzI7OTg7MTc5OzIyM20qG1swbRtbMzg7Mjs5OTsxODE7MjI0bSobWzBtG1szODsyOzEwMTsxODM7MjI0bSobWzBtG1szODsyOzkzOzE2ODsyMDVtKxtbMG0bWzM4OzI7ODE7MTQ4OzE3OW0rG1swbRtbMzg7Mjs2ODsxMjM7MTQ4bT0bWzBtG1szODsyOzUxOzkzOzExMm0tG1swbRtbMzg7MjszNDs2MTs3M206G1swbRtbMzg7MjsyMjs0MDs0N20uG1swbRtbMzg7Mjs5OzE2OzE5bSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtChtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzI7M20gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsyOzU7OG0gG1swbRtbMzg7MjszNzs3NjsxMTVtOhtbMG0bWzM4OzI7Mjg7NTg7ODhtOhtbMG0bWzM4OzI7Mjg7NTY7ODRtOhtbMG0bWzM4OzI7NTM7MTA2OzE1OG0tG1swbRtbMzg7Mjs3MDsxNDE7MjA2bT0bWzBtG1szODsyOzcxOzE0MjsyMDdtKxtbMG0bWzM4OzI7NzM7MTQ0OzIwOG0rG1swbRtbMzg7Mjs3MTsxNDE7MjAybSsbWzBtG1szODsyOzczOzE0NDsyMDRtKxtbMG0bWzM4OzI7NzU7MTQ3OzIwOG0rG1swbRtbMzg7Mjs3NzsxNDk7MjA5bSsbWzBtG1szODsyOzc4OzE1MTsyMDltKxtbMG0bWzM4OzI7Nzk7MTUyOzIxMG0rG1swbRtbMzg7Mjs4MDsxNTU7MjEybSsbWzBtG1szODsyOzgyOzE1ODsyMTNtKxtbMG0bWzM4OzI7ODE7MTU1OzIwOW0rG1swbRtbMzg7Mjs4NTsxNjE7MjE1bSsbWzBtG1szODsyOzQyOzgwOzEwN206G1swbRtbMzg7MjsyODs1Mzs3MG0uG1swbRtbMzg7Mjs3NDsxNDA7MTgzbT0bWzBtG1szODsyOzkwOzE2NzsyMThtKxtbMG0bWzM4OzI7OTA7MTY4OzIxOG0rG1swbRtbMzg7Mjs5MDsxNjg7MjE1bSsbWzBtG1szODsyOzkxOzE3MDsyMTdtKhtbMG0bWzM4OzI7OTI7MTcxOzIxOG0qG1swbRtbMzg7Mjs5NDsxNzM7MjE4bSobWzBtG1szODsyOzk1OzE3NTsyMThtKhtbMG0bWzM4OzI7OTY7MTc2OzIxOW0qG1swbRtbMzg7Mjs5NzsxNzg7MjIxbSobWzBtG1szODsyOzEwMTsxODM7MjI0bSobWzBtG1szODsyOzEwMjsxODQ7MjI1bSobWzBtG1szODsyOzEwMzsxODY7MjI2bSobWzBtG1szODsyOzEwNDsxODg7MjI2bSobWzBtG1szODsyOzEwNTsxODk7MjI3bSobWzBtG1szODsyOzEwNzsxOTE7MjI4bSobWzBtG1szODsyOzk4OzE3NjsyMDltKhtbMG0bWzM4OzI7MjM7NDI7NTBtLhtbMG0bWzM4OzI7NzsxMzsxNm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbQobWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsyOzNtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MTE7MjM7MzVtIBtbMG0bWzM4OzI7NTE7MTA2OzE2M20tG1swbRtbMzg7Mjs2NTsxMzQ7MjAzbT0bWzBtG1szODsyOzY3OzEzNjsyMDRtPRtbMG0bWzM4OzI7NTM7MTA5OzE2Mm0tG1swbRtbMzg7MjsyOTs1OTs4N206G1swbRtbMzg7MjsyMzs0Nzs2OG0uG1swbRtbMzg7Mjs0Mzs4NzsxMjdtLRtbMG0bWzM4OzI7Njk7MTM3OzE5OW09G1swbRtbMzg7Mjs3NDsxNDY7MjA4bSsbWzBtG1szODsyOzc1OzE0NzsyMDltKxtbMG0bWzM4OzI7NzQ7MTQ2OzIwNm0rG1swbRtbMzg7Mjs3ODsxNTE7MjExbSsbWzBtG1szODsyOzc5OzE1MzsyMTFtKxtbMG0bWzM4OzI7ODA7MTU0OzIxMm0rG1swbRtbMzg7Mjs4MTsxNTY7MjEzbSsbWzBtG1szODsyOzgwOzE1NDsyMDhtKxtbMG0bWzM4OzI7ODQ7MTU5OzIxNG0rG1swbRtbMzg7Mjs4MzsxNTc7MjA5bSsbWzBtG1szODsyOzE0OzI2OzM1bSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzQzOzgxOzEwNm06G1swbRtbMzg7Mjs5MTsxNjk7MjE5bSsbWzBtG1szODsyOzkyOzE3MTsyMTltKhtbMG0bWzM4OzI7OTM7MTczOzIyMG0qG1swbRtbMzg7Mjs5NDsxNzQ7MjIxbSobWzBtG1szODsyOzk2OzE3NjsyMjFtKhtbMG0bWzM4OzI7OTU7MTc1OzIxOW0qG1swbRtbMzg7Mjs5NjsxNzY7MjIwbSobWzBtG1szODsyOzk4OzE4MDsyMjNtKhtbMG0bWzM4OzI7MTAwOzE4MjsyMjNtKhtbMG0bWzM4OzI7MTAxOzE4MjsyMjNtKhtbMG0bWzM4OzI7MTAxOzE4MzsyMjJtKhtbMG0bWzM4OzI7MTAwOzE4MTsyMThtKhtbMG0bWzM4OzI7MTA1OzE4OTsyMjdtKhtbMG0bWzM4OzI7ODc7MTU2OzE4Nm0rG1swbRtbMzg7MjsxODszMjszOG0uG1swbRtbMzg7Mjs3NTsxMzQ7MTU4bT0bWzBtG1szODsyOzM3OzY1Ozc3bTobWzBtG1szODsyOzQ3Ozg0Ozk4bTobWzBtG1szODsyOzE1OzI3OzMybSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzE7MzszbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtChtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsyMTs0NTs3MG0uG1swbRtbMzg7Mjs1OTsxMjM7MTkwbT0bWzBtG1szODsyOzY0OzEzMzsyMDNtPRtbMG0bWzM4OzI7NjM7MTMxOzE5OW09G1swbRtbMzg7Mjs2NjsxMzQ7MjAxbT0bWzBtG1szODsyOzY4OzEzODsyMDVtPRtbMG0bWzM4OzI7Njk7MTM5OzIwNm09G1swbRtbMzg7Mjs2MDsxMjI7MTc5bT0bWzBtG1szODsyOzM2OzcyOzEwNW06G1swbRtbMzg7MjsyNDs0ODs2OW0uG1swbRtbMzg7Mjs0MDs3OTsxMTNtOhtbMG0bWzM4OzI7Njc7MTMyOzE4OG09G1swbRtbMzg7Mjs3NjsxNDk7MjEwbSsbWzBtG1szODsyOzc2OzE0ODsyMDdtKxtbMG0bWzM4OzI7Njg7MTMyOzE4Mm09G1swbRtbMzg7Mjs2ODsxMzI7MTgybT0bWzBtG1szODsyOzc4OzE1MDsyMDVtKxtbMG0bWzM4OzI7ODI7MTU4OzIxM20rG1swbRtbMzg7Mjs3NzsxNDY7MTk3bSsbWzBtG1szODsyOzQyOzc5OzEwNm06G1swbRtbMzg7Mjs0Ozg7MTFtIBtbMG0bWzM4OzI7MTszOzRtIBtbMG0bWzM4OzI7NTsxMDsxM20gG1swbRtbMzg7MjsyNjs1MDs2NG0uG1swbRtbMzg7MjszODs3MTs5Mm06G1swbRtbMzg7Mjs0Nzs4NzsxMTJtLRtbMG0bWzM4OzI7NjM7MTE4OzE1MG09G1swbRtbMzg7Mjs4MTsxNTA7MTkxbSsbWzBtG1szODsyOzk2OzE3NjsyMjFtKhtbMG0bWzM4OzI7OTc7MTc4OzIyMm0qG1swbRtbMzg7Mjs5ODsxNzk7MjIzbSobWzBtG1szODsyOzk5OzE4MTsyMjRtKhtbMG0bWzM4OzI7MTAxOzE4MzsyMjRtKhtbMG0bWzM4OzI7MTAyOzE4NDsyMjVtKhtbMG0bWzM4OzI7MTAzOzE4NjsyMjZtKhtbMG0bWzM4OzI7MTA0OzE4ODsyMjdtKhtbMG0bWzM4OzI7Nzc7MTM5OzE2N209G1swbRtbMzg7MjsxNzszMTszN20uG1swbRtbMzg7Mjs3OTsxNDA7MTY3bT0bWzBtG1szODsyOzEwOTsxOTU7MjI5bSobWzBtG1szODsyOzQxOzczOzg2bTobWzBtG1szODsyOzYxOzEwOTsxMjdtLRtbMG0bWzM4OzI7MTAxOzE3NzsyMDZtKhtbMG0bWzM4OzI7MjA7MzY7NDFtLhtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MTszOzNtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzQ7ODsxNG0gG1swbRtbMzg7MjszODs4MTsxMjdtOhtbMG0bWzM4OzI7NjI7MTI5OzIwMW09G1swbRtbMzg7Mjs2MzsxMzE7MjAybT0bWzBtG1szODsyOzYzOzEzMDsyMDBtPRtbMG0bWzM4OzI7NjQ7MTMyOzIwMG09G1swbRtbMzg7Mjs2NTsxMzM7MjAwbT0bWzBtG1szODsyOzY2OzEzNTsyMDBtPRtbMG0bWzM4OzI7Njc7MTM1OzIwMG09G1swbRtbMzg7Mjs3MDsxNDE7MjA2bT0bWzBtG1szODsyOzcxOzE0MjsyMDdtKxtbMG0bWzM4OzI7NjY7MTMyOzE5MG09G1swbRtbMzg7Mjs0Mjs4MzsxMThtOhtbMG0bWzM4OzI7MjY7NTE7NzNtLhtbMG0bWzM4OzI7MzA7NjA7ODVtOhtbMG0bWzM4OzI7MTI7MjQ7MzNtIBtbMG0bWzM4OzI7MTsyOzRtIBtbMG0bWzM4OzI7MTsyOzNtIBtbMG0bWzM4OzI7MTA7MTk7MjZtIBtbMG0bWzM4OzI7MzI7NjE7ODNtOhtbMG0bWzM4OzI7Mjg7NTQ7NzNtLhtbMG0bWzM4OzI7NDg7OTE7MTIybS0bWzBtG1szODsyOzgwOzE1MzsyMDNtKxtbMG0bWzM4OzI7MjU7NDc7NjNtLhtbMG0bWzM4OzI7NDg7OTE7MTE5bS0bWzBtG1szODsyOzkwOzE2NzsyMThtKxtbMG0bWzM4OzI7ODI7MTUzOzE5OG0rG1swbRtbMzg7Mjs2ODsxMjc7MTYzbT0bWzBtG1szODsyOzUyOzk4OzEyNW0tG1swbRtbMzg7Mjs0MTs3Nzs5N206G1swbRtbMzg7MjszOTs3Mjs5MW06G1swbRtbMzg7Mjs0ODs4ODsxMTBtLRtbMG0bWzM4OzI7NjQ7MTE3OzE0Nm09G1swbRtbMzg7Mjs4MzsxNTI7MTg4bSsbWzBtG1szODsyOzEwMTsxODM7MjI0bSobWzBtG1szODsyOzEwMDsxODA7MjIwbSobWzBtG1szODsyOzg4OzE1OTsxOTRtKxtbMG0bWzM4OzI7Njg7MTI0OzE1MG09G1swbRtbMzg7MjsyNjs0Njs1Nm0uG1swbRtbMzg7Mjs5MTsxNjQ7MTk1bSsbWzBtG1szODsyOzEwODsxOTI7MjI5bSobWzBtG1szODsyOzEwODsxOTM7MjI3bSobWzBtG1szODsyOzY3OzExOTsxNDBtPRtbMG0bWzM4OzI7Mzc7NjY7NzdtOhtbMG0bWzM4OzI7MTEzOzE5OTsyMzFtKhtbMG0bWzM4OzI7MTA1OzE4NjsyMTVtKhtbMG0bWzM4OzI7MzU7NjI7NzFtOhtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MTsyOzJtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDsxbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzEzOzI3OzQzbSAbWzBtG1szODsyOzM1Ozc1OzExOG06G1swbRtbMzg7Mjs0Mzs5MTsxNDFtLRtbMG0bWzM4OzI7NTY7MTE2OzE3OW09G1swbRtbMzg7Mjs2NDsxMzI7MjAzbT0bWzBtG1szODsyOzY1OzEzNDsyMDNtPRtbMG0bWzM4OzI7Njc7MTM2OzIwNG09G1swbRtbMzg7Mjs2ODsxMzg7MjA1bT0bWzBtG1szODsyOzY5OzEzOTsyMDZtPRtbMG0bWzM4OzI7NzA7MTQxOzIwNm09G1swbRtbMzg7Mjs3MTsxNDI7MjA3bSsbWzBtG1szODsyOzczOzE0NDsyMDhtKxtbMG0bWzM4OzI7NzQ7MTQ2OzIwOG0rG1swbRtbMzg7Mjs1MjsxMDI7MTQ1bS0bWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzQ4OzkxOzEyM20tG1swbRtbMzg7Mjs4NTsxNjE7MjE1bSsbWzBtG1szODsyOzg2OzE2MzsyMTZtKxtbMG0bWzM4OzI7MzM7NjM7ODNtOhtbMG0bWzM4OzI7NDY7ODc7MTE0bS0bWzBtG1szODsyOzg4OzE2MzsyMTNtKxtbMG0bWzM4OzI7OTE7MTY5OzIxOW0rG1swbRtbMzg7Mjs5MjsxNzE7MjE5bSobWzBtG1szODsyOzkzOzE3MzsyMjBtKhtbMG0bWzM4OzI7OTQ7MTc0OzIyMW0qG1swbRtbMzg7Mjs4OTsxNjQ7MjA2bSsbWzBtG1szODsyOzc0OzEzNjsxNzBtPRtbMG0bWzM4OzI7NTc7MTA0OzEzMG0tG1swbRtbMzg7Mjs0NDs4MDsxMDBtOhtbMG0bWzM4OzI7Mzc7Njg7ODNtOhtbMG0bWzM4OzI7MTg7MzM7NDFtLhtbMG0bWzM4OzI7Mzs2OzdtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7NTU7OTk7MTE5bS0bWzBtG1szODsyOzk4OzE3NjsyMTBtKhtbMG0bWzM4OzI7OTk7MTc3OzIxMW0qG1swbRtbMzg7MjsxMDg7MTk0OzIyOG0qG1swbRtbMzg7Mjs2NTsxMTY7MTM3bT0bWzBtG1szODsyOzE2OzI4OzMzbSAbWzBtG1szODsyOzg0OzE0OTsxNzNtKxtbMG0bWzM4OzI7MTE0OzIwMTsyMzJtIxtbMG0bWzM4OzI7MTE1OzIwMzsyMzNtIxtbMG0bWzM4OzI7NTU7OTc7MTExbS0bWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtChtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MW0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxMTsyNDszOG0gG1swbRtbMzg7Mjs0Mzs5MTsxNDRtLRtbMG0bWzM4OzI7MzM7Njg7MTA3bTobWzBtG1szODsyOzI2OzU1Ozg1bS4bWzBtG1szODsyOzI2OzU1Ozg1bS4bWzBtG1szODsyOzM1OzczOzExMG06G1swbRtbMzg7Mjs0Mjs4NjsxMzBtLRtbMG0bWzM4OzI7MjM7NDc7NjltLhtbMG0bWzM4OzI7MjQ7NDg7NzFtLhtbMG0bWzM4OzI7NDk7OTk7MTQ1bS0bWzBtG1szODsyOzUwOzEwMTsxNDdtLRtbMG0bWzM4OzI7NDI7ODM7MTE5bTobWzBtG1szODsyOzM1OzcwOzEwMW06G1swbRtbMzg7MjsyMDs0MDs1N20uG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxOzI7NG0gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjszMDs1Nzs3OG06G1swbRtbMzg7Mjs4MzsxNTc7MjA5bSsbWzBtG1szODsyOzg2OzE2MzsyMTZtKxtbMG0bWzM4OzI7NDA7NzU7OTltOhtbMG0bWzM4OzI7NDM7ODA7MTA1bTobWzBtG1szODsyOzkwOzE2NzsyMThtKxtbMG0bWzM4OzI7ODk7MTY1OzIxNG0rG1swbRtbMzg7Mjs5MTsxNjk7MjE3bSsbWzBtG1szODsyOzkxOzE3MDsyMTdtKhtbMG0bWzM4OzI7OTM7MTcyOzIxOW0qG1swbRtbMzg7Mjs5NjsxNzY7MjIxbSobWzBtG1szODsyOzk3OzE3ODsyMjJtKhtbMG0bWzM4OzI7OTg7MTc5OzIyM20qG1swbRtbMzg7MjsxMDA7MTgxOzIyNG0qG1swbRtbMzg7Mjs4NTsxNTU7MTg5bSsbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzM7NTs3bSAbWzBtG1szODsyOzM4OzY5OzgzbTobWzBtG1szODsyOzQ5Ozg3OzEwNG0tG1swbRtbMzg7Mjs0Nzs4NDs5OW06G1swbRtbMzg7MjszNTs2Mzs3NG06G1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7Mjs1Mjs5MzsxMDdtLRtbMG0bWzM4OzI7ODg7MTU2OzE4MG0rG1swbRtbMzg7MjsxMDU7MTg1OzIxMm0qG1swbRtbMzg7Mjs2NDsxMTI7MTI3bS0bWzBtG1szODsyOzU7ODsxMG0gG1swbRtbMzg7MjsxOzM7M20gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbQobWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsxOzJtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7Mzk7ODM7MTMxbTobWzBtG1szODsyOzYyOzEyOTsyMDFtPRtbMG0bWzM4OzI7NjM7MTMxOzIwMm09G1swbRtbMzg7Mjs1NzsxMjA7MTgzbT0bWzBtG1szODsyOzQ3Ozk2OzE0NW0tG1swbRtbMzg7MjswOzI7M20gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjszOzc7MTFtIBtbMG0bWzM4OzI7NDE7ODI7MTIwbTobWzBtG1szODsyOzUwOzk5OzE0NG0tG1swbRtbMzg7Mjs1OTsxMTc7MTY4bT0bWzBtG1szODsyOzY4OzEzNDsxOTBtPRtbMG0bWzM4OzI7Mzc7NzM7MTAybTobWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzQ7NzsxMG0gG1swbRtbMzg7MjszMjs2Mjs4NG06G1swbRtbMzg7Mjs0Mjs3OTsxMDdtOhtbMG0bWzM4OzI7MzE7NTk7ODBtOhtbMG0bWzM4OzI7NDQ7ODQ7MTExbTobWzBtG1szODsyOzE4OzM1OzQ2bS4bWzBtG1szODsyOzEyOzIzOzMwbSAbWzBtG1szODsyOzYwOzExMjsxNDdtLRtbMG0bWzM4OzI7OTE7MTY5OzIxOW0rG1swbRtbMzg7Mjs5MDsxNjc7MjE0bSsbWzBtG1szODsyOzkyOzE3MjsyMTltKhtbMG0bWzM4OzI7OTQ7MTc0OzIyMW0qG1swbRtbMzg7Mjs5NTsxNzU7MjIwbSobWzBtG1szODsyOzk1OzE3NDsyMTdtKhtbMG0bWzM4OzI7OTg7MTc5OzIyM20qG1swbRtbMzg7Mjs5NzsxNzY7MjE3bSobWzBtG1szODsyOzM1OzY0Ozc5bTobWzBtG1szODsyOzQ2Ozg0OzEwM206G1swbRtbMzg7Mjs3NzsxNDA7MTcwbT0bWzBtG1szODsyOzg3OzE1ODsxOTBtKxtbMG0bWzM4OzI7MTA1OzE4OTsyMjdtKhtbMG0bWzM4OzI7MTA3OzE5MTsyMjhtKhtbMG0bWzM4OzI7MTA4OzE5MzsyMjltKhtbMG0bWzM4OzI7OTE7MTYyOzE5Mm0rG1swbRtbMzg7MjszMTs1Njs2NW0uG1swbRtbMzg7MjszOzY7N20gG1swbRtbMzg7MjsyNzs0OTs1N20uG1swbRtbMzg7Mjs2NjsxMTc7MTM1bT0bWzBtG1szODsyOzU4OzEwMzsxMThtLRtbMG0bWzM4OzI7NTA7ODg7MTAwbS0bWzBtG1szODsyOzYzOzExMTsxMjZtLRtbMG0bWzM4OzI7MjQ7NDQ7NDltLhtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsxOzFtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzQ7ODsxM20gG1swbRtbMzg7Mjs1NTsxMTU7MTc5bT0bWzBtG1szODsyOzYyOzEyOTsxOTltPRtbMG0bWzM4OzI7NjQ7MTMzOzIwM209G1swbRtbMzg7Mjs2NTsxMzQ7MjAzbT0bWzBtG1szODsyOzUyOzEwNjsxNjBtLRtbMG0bWzM4OzI7MTc7MzU7NTJtLhtbMG0bWzM4OzI7MTE7MjM7MzNtIBtbMG0bWzM4OzI7NTY7MTEzOzE2Nm09G1swbRtbMzg7Mjs3MTsxNDI7MjA3bSsbWzBtG1szODsyOzczOzE0NDsyMDhtKxtbMG0bWzM4OzI7NzQ7MTQ2OzIwOG0rG1swbRtbMzg7Mjs3NTsxNDg7MjA5bSsbWzBtG1szODsyOzMxOzYxOzg3bTobWzBtG1szODsyOzM0OzY2OzkybTobWzBtG1szODsyOzYxOzExODsxNjRtPRtbMG0bWzM4OzI7NTk7MTE0OzE1N209G1swbRtbMzg7Mjs3MjsxNDA7MTkxbT0bWzBtG1szODsyOzgyOzE1ODsyMTNtKxtbMG0bWzM4OzI7ODQ7MTU5OzIxNG0rG1swbRtbMzg7Mjs3OTsxNDk7MTk5bSsbWzBtG1szODsyOzExOzIyOzI5bSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzgyOzE1MjsxOTdtKxtbMG0bWzM4OzI7OTI7MTcxOzIxOW0qG1swbRtbMzg7Mjs5MzsxNzM7MjIwbSobWzBtG1szODsyOzkzOzE3MjsyMTltKhtbMG0bWzM4OzI7OTY7MTc2OzIyMW0qG1swbRtbMzg7Mjs5NzsxNzg7MjIybSobWzBtG1szODsyOzg4OzE2MDsyMDBtKxtbMG0bWzM4OzI7MjM7NDM7NTNtLhtbMG0bWzM4OzI7NTI7OTQ7MTE1bS0bWzBtG1szODsyOzEwMjsxODQ7MjI1bSobWzBtG1szODsyOzEwMzsxODY7MjI2bSobWzBtG1szODsyOzEwNDsxODg7MjI2bSobWzBtG1szODsyOzEwNDsxODc7MjI1bSobWzBtG1szODsyOzEwNjsxODk7MjI2bSobWzBtG1szODsyOzEwODsxOTM7MjI5bSobWzBtG1szODsyOzEwOTsxOTQ7MjI5bSobWzBtG1szODsyOzExMTsxOTY7MjMwbSobWzBtG1szODsyOzM1OzYyOzczbTobWzBtG1szODsyOzY4OzEyMTsxNDFtPRtbMG0bWzM4OzI7MTE0OzIwMTsyMzJtIxtbMG0bWzM4OzI7MTE1OzIwMzsyMzNtIxtbMG0bWzM4OzI7MTE2OzIwNDsyMzRtIxtbMG0bWzM4OzI7Nzg7MTM2OzE1NW09G1swbRtbMzg7MjszMzs1ODs2Nm06G1swbRtbMzg7MjsyMTszNjs0MW0uG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbQobWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsxOzJtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MjI7NDc7NzNtLhtbMG0bWzM4OzI7NjM7MTMxOzIwMm09G1swbRtbMzg7Mjs2MjsxMzA7MTk5bT0bWzBtG1szODsyOzYzOzEzMDsxOThtPRtbMG0bWzM4OzI7Njc7MTM2OzIwNG09G1swbRtbMzg7Mjs0ODs5NzsxNDZtLRtbMG0bWzM4OzI7MTk7NDA7NThtLhtbMG0bWzM4OzI7NzA7MTQxOzIwNm09G1swbRtbMzg7Mjs2OTsxMzg7MjAybT0bWzBtG1szODsyOzcwOzE0MDsyMDJtPRtbMG0bWzM4OzI7NzQ7MTQ2OzIwOG0rG1swbRtbMzg7MjszNTs3MDs5OW06G1swbRtbMzg7MjsyMjs0NDs2MW0uG1swbRtbMzg7Mjs3ODsxNTE7MjExbSsbWzBtG1szODsyOzc5OzE1MzsyMTFtKxtbMG0bWzM4OzI7ODA7MTU0OzIxMm0rG1swbRtbMzg7Mjs4MTsxNTY7MjEzbSsbWzBtG1szODsyOzgxOzE1NjsyMTBtKxtbMG0bWzM4OzI7ODI7MTU1OzIwOW0rG1swbRtbMzg7Mjs4NTsxNjE7MjE1bSsbWzBtG1szODsyOzc0OzE0MDsxODZtPRtbMG0bWzM4OzI7MjU7NDc7NjJtLhtbMG0bWzM4OzI7MTQ7Mjc7MzVtIBtbMG0bWzM4OzI7NDg7ODk7MTE3bS0bWzBtG1szODsyOzMxOzU4Ozc0bTobWzBtG1szODsyOzQ4Ozg5OzExNW0tG1swbRtbMzg7Mjs4MzsxNTQ7MTk2bSsbWzBtG1szODsyOzk0OzE3NDsyMjFtKhtbMG0bWzM4OzI7OTQ7MTczOzIxN20qG1swbRtbMzg7Mjs3OTsxNDU7MTgxbSsbWzBtG1szODsyOzIwOzM3OzQ3bS4bWzBtG1szODsyOzY1OzExNzsxNDVtPRtbMG0bWzM4OzI7MTAxOzE4MzsyMjRtKhtbMG0bWzM4OzI7MTAwOzE4MTsyMjFtKhtbMG0bWzM4OzI7MTAxOzE4MzsyMjNtKhtbMG0bWzM4OzI7MTAzOzE4NjsyMjRtKhtbMG0bWzM4OzI7MTA1OzE4OTsyMjdtKhtbMG0bWzM4OzI7MTA3OzE5MTsyMjhtKhtbMG0bWzM4OzI7MTA4OzE5MzsyMjltKhtbMG0bWzM4OzI7MTA2OzE4OTsyMjNtKhtbMG0bWzM4OzI7MTExOzE5NjsyMzBtKhtbMG0bWzM4OzI7NjU7MTE2OzEzNm09G1swbRtbMzg7Mjs0MDs3Mjs4M206G1swbRtbMzg7MjsxMTQ7MjAxOzIzMm0jG1swbRtbMzg7Mjs5NzsxNzE7MTk3bSobWzBtG1szODsyOzQxOzczOzg0bTobWzBtG1szODsyOzM5OzY5Ozc4bTobWzBtG1szODsyOzEwNTsxODM7MjA3bSobWzBtG1szODsyOzcwOzEyMjsxMzhtPRtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MTszOzNtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsybSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzQ2Ozk3OzE0OW0tG1swbRtbMzg7Mjs2NDsxMzI7MjAzbT0bWzBtG1szODsyOzYyOzEyOTsxOTZtPRtbMG0bWzM4OzI7NjY7MTM0OzIwMW09G1swbRtbMzg7Mjs1NDsxMDk7MTYzbS0bWzBtG1szODsyOzEzOzI2OzM5bSAbWzBtG1szODsyOzY5OzEzOTsyMDNtPRtbMG0bWzM4OzI7Njk7MTM5OzIwM209G1swbRtbMzg7Mjs3MzsxNDQ7MjA4bSsbWzBtG1szODsyOzQ1Ozg5OzEyN20tG1swbRtbMzg7MjsxNjszMTs0NG0uG1swbRtbMzg7Mjs3NDsxNDY7MjA1bSsbWzBtG1szODsyOzc3OzE0OTsyMDhtKxtbMG0bWzM4OzI7Nzc7MTUwOzIwN20rG1swbRtbMzg7Mjs3OTsxNTI7MjA5bSsbWzBtG1szODsyOzgwOzE1NDsyMTFtKxtbMG0bWzM4OzI7ODI7MTU4OzIxM20rG1swbRtbMzg7Mjs4NDsxNTk7MjE0bSsbWzBtG1szODsyOzgzOzE1ODsyMTFtKxtbMG0bWzM4OzI7ODY7MTYzOzIxNm0rG1swbRtbMzg7Mjs1ODsxMDk7MTQ0bS0bWzBtG1szODsyOzI4OzUzOzY4bS4bWzBtG1szODsyOzkwOzE2NzsyMThtKxtbMG0bWzM4OzI7ODU7MTU4OzIwNW0rG1swbRtbMzg7Mjs1NTsxMDM7MTMybS0bWzBtG1szODsyOzI3OzUwOzY0bS4bWzBtG1szODsyOzI1OzQ3OzYwbS4bWzBtG1szODsyOzE2OzI5OzM3bS4bWzBtG1szODsyOzQ7ODsxMW0gG1swbRtbMzg7Mjs2ODsxMjQ7MTU0bT0bWzBtG1szODsyOzk5OzE4MTsyMjRtKhtbMG0bWzM4OzI7OTc7MTc2OzIxNm0qG1swbRtbMzg7MjsxMDE7MTgzOzIyNG0qG1swbRtbMzg7MjsxMDM7MTg2OzIyNm0qG1swbRtbMzg7MjsxMDQ7MTg4OzIyNm0qG1swbRtbMzg7MjsxMDU7MTg5OzIyN20qG1swbRtbMzg7MjsxMDc7MTkxOzIyOG0qG1swbRtbMzg7MjsxMDg7MTkzOzIyOW0qG1swbRtbMzg7MjsxMDc7MTkxOzIyNm0qG1swbRtbMzg7MjsxMDY7MTg5OzIyMW0qG1swbRtbMzg7Mjs1Njs5OTsxMTZtLRtbMG0bWzM4OzI7MTI7MjE7MjVtIBtbMG0bWzM4OzI7NTY7MTAwOzExNW0tG1swbRtbMzg7MjszMjs1Nzs2NW06G1swbRtbMzg7Mjs3NjsxMzQ7MTU0bT0bWzBtG1szODsyOzExNzsyMDY7MjM0bSMbWzBtG1szODsyOzExOTsyMDg7MjM1bSMbWzBtG1szODsyOzg1OzE0OTsxNjhtKxtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsxOzFtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzEwOzIxOzMzbSAbWzBtG1szODsyOzYwOzEyNjsxOTNtPRtbMG0bWzM4OzI7NjU7MTM0OzIwM209G1swbRtbMzg7Mjs2NzsxMzY7MjA0bT0bWzBtG1szODsyOzYxOzEyMzsxODRtPRtbMG0bWzM4OzI7MTE7MjM7MzVtIBtbMG0bWzM4OzI7NjQ7MTI5OzE4OW09G1swbRtbMzg7Mjs3MTsxNDM7MjA3bSsbWzBtG1szODsyOzUzOzEwNTsxNTFtLRtbMG0bWzM4OzI7MTE7MjI7MzFtIBtbMG0bWzM4OzI7Njg7MTM0OzE5MW09G1swbRtbMzg7Mjs3NjsxNDk7MjEwbSsbWzBtG1szODsyOzc3OzE0OTsyMDltKxtbMG0bWzM4OzI7Nzk7MTUzOzIxMW0rG1swbRtbMzg7Mjs4MDsxNTQ7MjEybSsbWzBtG1szODsyOzgxOzE1NjsyMTNtKxtbMG0bWzM4OzI7ODI7MTU4OzIxM20rG1swbRtbMzg7Mjs4NDsxNTk7MjE0bSsbWzBtG1szODsyOzg0OzE1OTsyMTJtKxtbMG0bWzM4OzI7ODU7MTYxOzIxNG0rG1swbRtbMzg7Mjs1NjsxMDY7MTQwbS0bWzBtG1szODsyOzI0OzQ1OzU5bS4bWzBtG1szODsyOzg4OzE2NDsyMTRtKxtbMG0bWzM4OzI7ODk7MTY2OzIxNW0rG1swbRtbMzg7Mjs5MjsxNzE7MjE5bSobWzBtG1szODsyOzcxOzEzMTsxNjhtPRtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7NDY7ODQ7MTA1bTobWzBtG1szODsyOzk4OzE3OTsyMjJtKhtbMG0bWzM4OzI7MTAxOzE4MzsyMjRtKhtbMG0bWzM4OzI7MTAyOzE4NDsyMjVtKhtbMG0bWzM4OzI7MTAxOzE4MzsyMjNtKhtbMG0bWzM4OzI7MTAzOzE4NzsyMjVtKhtbMG0bWzM4OzI7MTA0OzE4ODsyMjZtKhtbMG0bWzM4OzI7MTA2OzE5MDsyMjdtKhtbMG0bWzM4OzI7MTA1OzE4NzsyMjNtKhtbMG0bWzM4OzI7MTA5OzE5NDsyMjltKhtbMG0bWzM4OzI7ODQ7MTQ5OzE3NW0rG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7Mjs2OTsxMjE7MTM5bT0bWzBtG1szODsyOzExNjsyMDQ7MjM0bSMbWzBtG1szODsyOzExNDsxOTk7MjI2bSobWzBtG1szODsyOzExODsyMDc7MjM0bSMbWzBtG1szODsyOzEwNDsxODE7MjA1bSobWzBtG1szODsyOzI7NTs1bSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtChtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxMDsyMjszM20gG1swbRtbMzg7Mjs0Mjs4NzsxMzJtLRtbMG0bWzM4OzI7Njc7MTM2OzIwNG09G1swbRtbMzg7Mjs2ODsxMzg7MjA1bT0bWzBtG1szODsyOzExOzIzOzM1bSAbWzBtG1szODsyOzYyOzEyNTsxODNtPRtbMG0bWzM4OzI7NjE7MTIyOzE3OG09G1swbRtbMzg7Mjs5OzE4OzI1bSAbWzBtG1szODsyOzYxOzEyMTsxNzJtPRtbMG0bWzM4OzI7NzU7MTQ3OzIwOW0rG1swbRtbMzg7Mjs3NTsxNDc7MjA3bSsbWzBtG1szODsyOzc4OzE1MTsyMTFtKxtbMG0bWzM4OzI7Nzk7MTUzOzIxMW0rG1swbRtbMzg7Mjs4MDsxNTQ7MjEybSsbWzBtG1szODsyOzgxOzE1NjsyMTNtKxtbMG0bWzM4OzI7ODI7MTU4OzIxM20rG1swbRtbMzg7Mjs4NDsxNTk7MjE0bSsbWzBtG1szODsyOzg0OzE1OTsyMTJtKxtbMG0bWzM4OzI7ODY7MTYzOzIxNm0rG1swbRtbMzg7Mjs2MDsxMTM7MTQ5bS0bWzBtG1szODsyOzIyOzQyOzU1bS4bWzBtG1szODsyOzg5OzE2NjsyMTdtKxtbMG0bWzM4OzI7ODk7MTY2OzIxNW0rG1swbRtbMzg7Mjs5MjsxNzE7MjE5bSobWzBtG1szODsyOzQyOzc4OzEwMG06G1swbRtbMzg7MjsyOTs1Mzs2N20uG1swbRtbMzg7Mjs1Mzs5NzsxMjJtLRtbMG0bWzM4OzI7NjU7MTIwOzE0OW09G1swbRtbMzg7Mjs0Nzs4NzsxMDhtLRtbMG0bWzM4OzI7MzQ7NjI7NzdtOhtbMG0bWzM4OzI7NjE7MTExOzEzNm0tG1swbRtbMzg7Mjs5NjsxNzM7MjExbSobWzBtG1szODsyOzEwMzsxODY7MjI2bSobWzBtG1szODsyOzEwNDsxODg7MjI2bSobWzBtG1szODsyOzEwNTsxODk7MjI3bSobWzBtG1szODsyOzEwNzsxOTE7MjI4bSobWzBtG1szODsyOzEwODsxOTI7MjI5bSobWzBtG1szODsyOzEwMzsxODQ7MjE4bSobWzBtG1szODsyOzQyOzc2Ozg5bTobWzBtG1szODsyOzI1OzQ1OzUybS4bWzBtG1szODsyOzc7MTQ7MTZtIBtbMG0bWzM4OzI7Mzg7Njc7NzhtOhtbMG0bWzM4OzI7MTAyOzE4MDsyMDdtKhtbMG0bWzM4OzI7MTE0OzIwMDsyMzBtKhtbMG0bWzM4OzI7MTE3OzIwNDsyMzJtIxtbMG0bWzM4OzI7MTE4OzIwNzsyMzRtIxtbMG0bWzM4OzI7MTE1OzIwMDsyMjZtKhtbMG0bWzM4OzI7MTQ7MjU7MjhtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsxOzFtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzE1OzMyOzQ4bS4bWzBtG1szODsyOzUxOzEwNDsxNTVtLRtbMG0bWzM4OzI7MTg7Mzc7NTVtLhtbMG0bWzM4OzI7NDU7OTE7MTMzbS0bWzBtG1szODsyOzE1OzMxOzQ2bS4bWzBtG1szODsyOzUwOzEwMDsxNDRtLRtbMG0bWzM4OzI7NzQ7MTQ2OzIwOG0rG1swbRtbMzg7Mjs3MzsxNDQ7MjA1bSsbWzBtG1szODsyOzc2OzE0OTsyMTBtKxtbMG0bWzM4OzI7Nzg7MTUxOzIxMW0rG1swbRtbMzg7Mjs3OTsxNTM7MjExbSsbWzBtG1szODsyOzgwOzE1NDsyMTJtKxtbMG0bWzM4OzI7ODE7MTU2OzIxM20rG1swbRtbMzg7Mjs4MjsxNTg7MjEzbSsbWzBtG1szODsyOzg0OzE1OTsyMTRtKxtbMG0bWzM4OzI7ODQ7MTU5OzIxMm0rG1swbRtbMzg7Mjs4NjsxNjM7MjE2bSsbWzBtG1szODsyOzYyOzExNzsxNTRtPRtbMG0bWzM4OzI7MjA7Mzc7NDltLhtbMG0bWzM4OzI7OTA7MTY3OzIxOG0rG1swbRtbMzg7Mjs5MDsxNjg7MjE4bSsbWzBtG1szODsyOzMyOzU5Ozc2bTobWzBtG1szODsyOzM0OzYzOzgxbTobWzBtG1szODsyOzk0OzE3NDsyMjFtKhtbMG0bWzM4OzI7OTY7MTc2OzIyMW0qG1swbRtbMzg7Mjs5NzsxNzg7MjIybSobWzBtG1szODsyOzk4OzE3OTsyMjNtKhtbMG0bWzM4OzI7ODc7MTU5OzE5N20rG1swbRtbMzg7Mjs1Mzs5NzsxMTltLRtbMG0bWzM4OzI7MzQ7NjE7NzVtOhtbMG0bWzM4OzI7NTI7OTU7MTE2bS0bWzBtG1szODsyOzkzOzE2ODsyMDNtKxtbMG0bWzM4OzI7OTc7MTc0OzIxMG0qG1swbRtbMzg7Mjs5NTsxNzA7MjAzbSsbWzBtG1szODsyOzgwOzE0MzsxNzBtKxtbMG0bWzM4OzI7MjY7NDc7NTVtLhtbMG0bWzM4OzI7NTk7MTA2OzEyNW0tG1swbRtbMzg7MjsxMTI7MTk4OzIzMW0qG1swbRtbMzg7MjszMDs1NDs2M20uG1swbRtbMzg7Mjs4MDsxNDI7MTY0bT0bWzBtG1szODsyOzExNTsyMDM7MjMzbSMbWzBtG1szODsyOzExMzsxOTk7MjI4bSobWzBtG1szODsyOzExNjsyMDM7MjMxbSMbWzBtG1szODsyOzExOTsyMDg7MjM1bSMbWzBtG1szODsyOzEyMDsyMDk7MjM2bSMbWzBtG1szODsyOzM3OzY0OzcybTobWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzE7MjsybSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtChtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjswOzE7Mm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7Mjs1OzEwOzE1bSAbWzBtG1szODsyOzM7Njs5bSAbWzBtG1szODsyOzQ1OzkyOzEzM20tG1swbRtbMzg7Mjs3MzsxNDQ7MjA4bSsbWzBtG1szODsyOzc0OzE0NjsyMDhtKxtbMG0bWzM4OzI7NzQ7MTQ2OzIwOG0rG1swbRtbMzg7Mjs3NDsxNDY7MjA2bSsbWzBtG1szODsyOzc3OzE0OTsyMDltKxtbMG0bWzM4OzI7Nzg7MTUyOzIxMG0rG1swbRtbMzg7Mjs3OTsxNTM7MjExbSsbWzBtG1szODsyOzgwOzE1NDsyMTFtKxtbMG0bWzM4OzI7ODE7MTU2OzIxMW0rG1swbRtbMzg7Mjs4MzsxNTc7MjExbSsbWzBtG1szODsyOzgzOzE1NzsyMDltKxtbMG0bWzM4OzI7ODU7MTYyOzIxNW0rG1swbRtbMzg7Mjs2OTsxMzE7MTcybT0bWzBtG1szODsyOzIyOzQxOzU0bS4bWzBtG1szODsyOzg1OzE1OTsyMDdtKxtbMG0bWzM4OzI7MjM7NDQ7NTdtLhtbMG0bWzM4OzI7NDM7ODE7MTAzbTobWzBtG1szODsyOzkzOzE3MjsyMjBtKhtbMG0bWzM4OzI7OTM7MTcyOzIxOW0qG1swbRtbMzg7Mjs5NDsxNzM7MjE3bSobWzBtG1szODsyOzk1OzE3NTsyMTltKhtbMG0bWzM4OzI7OTY7MTc2OzIyMG0qG1swbRtbMzg7Mjs5OTsxODE7MjI0bSobWzBtG1szODsyOzEwMTsxODM7MjI0bSobWzBtG1szODsyOzk2OzE3MzsyMTFtKhtbMG0bWzM4OzI7NjQ7MTE2OzE0MW09G1swbRtbMzg7MjsyMzs0Mjs1MW0uG1swbRtbMzg7Mjs5OzE3OzIwbSAbWzBtG1szODsyOzU7OTsxMW0gG1swbRtbMzg7Mjs1OzEwOzEybSAbWzBtG1szODsyOzk3OzE3MjsyMDNtKhtbMG0bWzM4OzI7MTEwOzE5NjsyMzBtKhtbMG0bWzM4OzI7MTEyOzE5ODsyMzFtKhtbMG0bWzM4OzI7NDM7NzY7ODhtOhtbMG0bWzM4OzI7NjE7MTA3OzEyNG0tG1swbRtbMzg7MjsxMTU7MjAyOzIzM20jG1swbRtbMzg7MjsxMTY7MjA0OzIzNG0jG1swbRtbMzg7MjsxMTg7MjA2OzIzNG0jG1swbRtbMzg7MjsxMDk7MTkxOzIxNm0qG1swbRtbMzg7Mjs3NjsxMzI7MTQ5bT0bWzBtG1szODsyOzE4OzMzOzM3bS4bWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtChtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzE7Mm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxNzszNDs1MG0uG1swbRtbMzg7MjszNzs3NDsxMDdtOhtbMG0bWzM4OzI7NjE7MTIxOzE3Mm09G1swbRtbMzg7Mjs3NTsxNDc7MjA5bSsbWzBtG1szODsyOzc2OzE0OTsyMTBtKxtbMG0bWzM4OzI7Nzg7MTUxOzIxMW0rG1swbRtbMzg7Mjs3OTsxNTM7MjExbSsbWzBtG1szODsyOzgwOzE1NDsyMTJtKxtbMG0bWzM4OzI7ODE7MTU2OzIxM20rG1swbRtbMzg7Mjs4MjsxNTg7MjEzbSsbWzBtG1szODsyOzg0OzE1OTsyMTRtKxtbMG0bWzM4OzI7ODU7MTYxOzIxNW0rG1swbRtbMzg7Mjs4NjsxNjM7MjE2bSsbWzBtG1szODsyOzQ2Ozg4OzExNm0tG1swbRtbMzg7MjsxMjsyMzszMG0gG1swbRtbMzg7MjsxOTszNzs0OG0uG1swbRtbMzg7Mjs1NDsxMDI7MTMybS0bWzBtG1szODsyOzkyOzE3MTsyMTltKhtbMG0bWzM4OzI7OTA7MTY4OzIxM20rG1swbRtbMzg7Mjs5MzsxNzI7MjE5bSobWzBtG1szODsyOzk2OzE3NjsyMjFtKhtbMG0bWzM4OzI7OTY7MTc3OzIyMW0qG1swbRtbMzg7Mjs5NzsxNzg7MjIybSobWzBtG1szODsyOzk3OzE3ODsyMjFtKhtbMG0bWzM4OzI7OTg7MTc4OzIxOG0qG1swbRtbMzg7MjsxMDI7MTg0OzIyNW0qG1swbRtbMzg7MjsxMDM7MTg2OzIyNm0qG1swbRtbMzg7MjsxOTszNjs0M20uG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxMDsxODsyMW0gG1swbRtbMzg7Mjs1NDs5NzsxMTRtLRtbMG0bWzM4OzI7Nzg7MTM5OzE2M209G1swbRtbMzg7MjsxMDg7MTkxOzIyM20qG1swbRtbMzg7Mjs1MDs5MDsxMDVtLRtbMG0bWzM4OzI7Mzg7Njg7NzhtOhtbMG0bWzM4OzI7MTA3OzE4OTsyMThtKhtbMG0bWzM4OzI7ODU7MTUwOzE3Mm0rG1swbRtbMzg7Mjs0Njs4MDs5MW06G1swbRtbMzg7MjsxMTsxOTsyMm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbQobWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsxOzJtIBtbMG0bWzM4OzI7MTc7MzQ7NDltLhtbMG0bWzM4OzI7NDI7ODI7MTE2bTobWzBtG1szODsyOzY2OzEyOTsxODFtPRtbMG0bWzM4OzI7Nzg7MTUxOzIwOG0rG1swbRtbMzg7Mjs3NjsxNDY7MjAybSsbWzBtG1szODsyOzcxOzEzODsxODhtPRtbMG0bWzM4OzI7NjY7MTI4OzE3NG09G1swbRtbMzg7Mjs1OTsxMTQ7MTU0bT0bWzBtG1szODsyOzUzOzEwMTsxMzVtLRtbMG0bWzM4OzI7MzI7NjA7ODBtOhtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7NjM7MTE4OzE1Mm09G1swbRtbMzg7Mjs5MjsxNzE7MjE5bSobWzBtG1szODsyOzkzOzE3MzsyMjBtKhtbMG0bWzM4OzI7OTQ7MTc0OzIyMW0qG1swbRtbMzg7Mjs5NTsxNzQ7MjE5bSobWzBtG1szODsyOzk3OzE3ODsyMjJtKhtbMG0bWzM4OzI7OTg7MTc5OzIyM20qG1swbRtbMzg7Mjs5OTsxODE7MjI0bSobWzBtG1szODsyOzEwMTsxODM7MjI0bSobWzBtG1szODsyOzY3OzEyMTsxNDltPRtbMG0bWzM4OzI7Mjc7NTA7NjFtLhtbMG0bWzM4OzI7NTc7MTA0OzEyNm0tG1swbRtbMzg7Mjs4MDsxNDU7MTc0bSsbWzBtG1szODsyOzc2OzEzNzsxNjNtPRtbMG0bWzM4OzI7OTk7MTc3OzIxMG0qG1swbRtbMzg7Mjs4MDsxNDM7MTY4bT0bWzBtG1szODsyOzU1Ozk4OzExNW0tG1swbRtbMzg7MjsyMjs0MDs0Nm0uG1swbRtbMzg7Mjs0Ozc7OW0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7Mjs5OzE2OzE5bSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzE7MjsybSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtChtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsyOzQ7NW0gG1swbRtbMzg7MjsxMjsyMzszMm0gG1swbRtbMzg7Mjs3OzE1OzIwbSAbWzBtG1szODsyOzM7Njs4bSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzE7MTsybSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzEzOzI1OzMybSAbWzBtG1szODsyOzM3OzY4Ozg5bTobWzBtG1szODsyOzM5OzczOzkzbTobWzBtG1szODsyOzYwOzExMTsxNDJtLRtbMG0bWzM4OzI7ODU7MTU3OzIwMG0rG1swbRtbMzg7Mjs5NjsxNzY7MjIxbSobWzBtG1szODsyOzkyOzE2OTsyMTFtKxtbMG0bWzM4OzI7OTU7MTc0OzIxN20qG1swbRtbMzg7Mjs4MTsxNDY7MTgxbSsbWzBtG1szODsyOzMyOzU5OzcybTobWzBtG1szODsyOzQwOzcyOzg4bTobWzBtG1szODsyOzg4OzE1OTsxOTRtKxtbMG0bWzM4OzI7MTA0OzE4ODsyMjZtKhtbMG0bWzM4OzI7MTA1OzE4OTsyMjdtKhtbMG0bWzM4OzI7MTA3OzE5MTsyMjhtKhtbMG0bWzM4OzI7MTA4OzE5MzsyMjltKhtbMG0bWzM4OzI7MTA5OzE5NDsyMjltKhtbMG0bWzM4OzI7MTEwOzE5NjsyMzBtKhtbMG0bWzM4OzI7NTg7MTAzOzEyMW0tG1swbRtbMzg7MjsxOzM7M20gG1swbRtbMzg7MjsxOzI7Mm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxOzM7M20gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbQobWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsxOzJtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsxOzFtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsxOzJtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MTszOzVtIBtbMG0bWzM4OzI7MTsyOzNtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsxOzFtIBtbMG0bWzM4OzI7NTsxMDsxM20gG1swbRtbMzg7Mjs3NDsxMzk7MTgwbT0bWzBtG1szODsyOzc2OzE0MjsxODJtPRtbMG0bWzM4OzI7NTI7OTc7MTIzbS0bWzBtG1szODsyOzM1OzY2Ozg0bTobWzBtG1szODsyOzI4OzUxOzY1bS4bWzBtG1szODsyOzEyOzIyOzI3bSAbWzBtG1szODsyOzE0OzI1OzMybSAbWzBtG1szODsyOzE5OzM1OzQzbS4bWzBtG1szODsyOzc3OzEzOTsxNzFtPRtbMG0bWzM4OzI7MTAyOzE4NDsyMjVtKhtbMG0bWzM4OzI7MTAzOzE4NjsyMjZtKhtbMG0bWzM4OzI7MTAyOzE4NTsyMjJtKhtbMG0bWzM4OzI7MTAzOzE4NjsyMjRtKhtbMG0bWzM4OzI7MTA1OzE4ODsyMjRtKhtbMG0bWzM4OzI7MTA2OzE4OTsyMjVtKhtbMG0bWzM4OzI7MTA2OzE4OTsyMjNtKhtbMG0bWzM4OzI7MTA2OzE4OTsyMjJtKhtbMG0bWzM4OzI7MTEyOzE5ODsyMzFtKhtbMG0bWzM4OzI7NzU7MTMyOzE1NG09G1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxOzM7M20gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbQobWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7Mjs0OzVtIBtbMG0bWzM4OzI7OTsxODsyNW0gG1swbRtbMzg7Mjs2OzEyOzE2bSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzU7MTA7MTRtIBtbMG0bWzM4OzI7NDs4OzExbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzA7MTsybSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzU7MTE7MTVtIBtbMG0bWzM4OzI7NjsxMjsxNm0gG1swbRtbMzg7Mjs2OzEyOzE2bSAbWzBtG1szODsyOzY7MTI7MTZtIBtbMG0bWzM4OzI7NTsxMDsxNG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7Mjs1OzEwOzE0bSAbWzBtG1szODsyOzU7MTA7MTRtIBtbMG0bWzM4OzI7MDsxOzFtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7ODsxNTsyMW0gG1swbRtbMzg7MjsxMTsyMjszMG0gG1swbRtbMzg7Mjs0Ozc7MTBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsxOzFtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MTc7MzI7NDFtLhtbMG0bWzM4OzI7OTI7MTcxOzIxOW0qG1swbRtbMzg7Mjs5MzsxNzM7MjIwbSobWzBtG1szODsyOzkyOzE2ODsyMTRtKxtbMG0bWzM4OzI7OTsxNzsyMW0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsyMTszODs0N20uG1swbRtbMzg7Mjs5NzsxNzc7MjE2bSobWzBtG1szODsyOzEwMjsxODQ7MjI1bSobWzBtG1szODsyOzEwMzsxODY7MjI2bSobWzBtG1szODsyOzEwNDsxODg7MjI2bSobWzBtG1szODsyOzEwNDsxODc7MjI1bSobWzBtG1szODsyOzEwNzsxOTE7MjI4bSobWzBtG1szODsyOzEwODsxOTM7MjI5bSobWzBtG1szODsyOzEwOTsxOTQ7MjI5bSobWzBtG1szODsyOzExMDsxOTY7MjMwbSobWzBtG1szODsyOzEwMjsxODA7MjExbSobWzBtG1szODsyOzYyOzExMDsxMjhtLRtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MTsyOzJtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzM7Njs4bSAbWzBtG1szODsyOzQ0Ozg2OzExOG0tG1swbRtbMzg7Mjs3NDsxNDM7MTk2bSsbWzBtG1szODsyOzc1OzE0NTsxOTltKxtbMG0bWzM4OzI7NzY7MTQ4OzIwMm0rG1swbRtbMzg7Mjs2NTsxMjc7MTc0bT0bWzBtG1szODsyOzI0OzQ2OzY0bS4bWzBtG1szODsyOzE7Mzs0bSAbWzBtG1szODsyOzcyOzE0MDsxOTJtPRtbMG0bWzM4OzI7NjE7MTE4OzE2Mm09G1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7Mjs3OzE1OzIwbSAbWzBtG1szODsyOzcyOzE0MTsxOTJtPRtbMG0bWzM4OzI7NzQ7MTQ1OzE5OG0rG1swbRtbMzg7Mjs3NDsxNDU7MTk4bSsbWzBtG1szODsyOzc0OzE0NTsxOThtKxtbMG0bWzM4OzI7NzQ7MTQ1OzE5OG0rG1swbRtbMzg7Mjs2ODsxMzM7MTgybT0bWzBtG1szODsyOzM2OzcwOzk2bTobWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzE7Mjs0bSAbWzBtG1szODsyOzY2OzEyODsxNzVtPRtbMG0bWzM4OzI7Njk7MTMzOzE4Mm09G1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjsxNDsyNzszOG0gG1swbRtbMzg7Mjs1ODsxMTQ7MTU2bT0bWzBtG1szODsyOzcxOzEzODsxODltPRtbMG0bWzM4OzI7NzM7MTQxOzE5M209G1swbRtbMzg7Mjs3NzsxNDk7MjA0bSsbWzBtG1szODsyOzU2OzEwOTsxNDltLRtbMG0bWzM4OzI7ODsxNjsyMm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7Mjs0Nzs4ODsxMTNtLRtbMG0bWzM4OzI7OTM7MTcyOzIyMG0qG1swbRtbMzg7Mjs5NDsxNzI7MjE5bSobWzBtG1szODsyOzg3OzE2MDsyMDFtKxtbMG0bWzM4OzI7NjM7MTE1OzE0NG09G1swbRtbMzg7MjsyOTs1NDs2OG0uG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7Mjs3OzE0OzE3bSAbWzBtG1szODsyOzM3OzY3OzgybTobWzBtG1szODsyOzcyOzEzMTsxNTltPRtbMG0bWzM4OzI7OTk7MTgwOzIxN20qG1swbRtbMzg7MjsxMDU7MTg5OzIyN20qG1swbRtbMzg7Mjs5OTsxNzg7MjEybSobWzBtG1szODsyOzgwOzE0NDsxNzFtKxtbMG0bWzM4OzI7NTQ7OTc7MTE0bS0bWzBtG1szODsyOzI4OzUwOzU5bS4bWzBtG1szODsyOzc7MTM7MTZtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsybSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzQ3OzkyOzEyNm0tG1swbRtbMzg7Mjs4MDsxNTU7MjEybSsbWzBtG1szODsyOzQ2Ozg5OzEyM20tG1swbRtbMzg7MjsxMTsyMTsyOW0gG1swbRtbMzg7MjsyMzs0NDs2MW0uG1swbRtbMzg7Mjs1MjsxMDA7MTM4bS0bWzBtG1szODsyOzI3OzUyOzcybS4bWzBtG1szODsyOzI7NTs3bSAbWzBtG1szODsyOzc5OzE1NDsyMTFtKxtbMG0bWzM4OzI7NjY7MTI4OzE3Nm09G1swbRtbMzg7MjsxMTsyMzszMW0gG1swbRtbMzg7MjsyMTs0MTs1N20uG1swbRtbMzg7MjsxMjsyMzszMm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7Mjs3OzE1OzIwbSAbWzBtG1szODsyOzgwOzE1NTsyMTJtKxtbMG0bWzM4OzI7Njg7MTMyOzE4MW09G1swbRtbMzg7Mjs2OzEzOzE4bSAbWzBtG1szODsyOzY7MTM7MThtIBtbMG0bWzM4OzI7MTI7MjM7MzJtIBtbMG0bWzM4OzI7NzI7MTM5OzE5MW09G1swbRtbMzg7Mjs4MDsxNTU7MjEybSsbWzBtG1szODsyOzEyOzI0OzM0bSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzczOzE0MTsxOTNtPRtbMG0bWzM4OzI7NzU7MTQ3OzIwMW0rG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7Mjs0OTs5NjsxMzFtLRtbMG0bWzM4OzI7ODA7MTU1OzIxMm0rG1swbRtbMzg7Mjs0ODs5NDsxMjhtLRtbMG0bWzM4OzI7MTQ7Mjc7MzdtIBtbMG0bWzM4OzI7Mjk7NTc7NzhtOhtbMG0bWzM4OzI7Mzc7NzM7MTAwbTobWzBtG1szODsyOzk7MTg7MjRtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MTsyOzJtIBtbMG0bWzM4OzI7Mjs1OzZtIBtbMG0bWzM4OzI7Nzg7MTQ1OzE4NG0rG1swbRtbMzg7Mjs5MzsxNzM7MjIwbSobWzBtG1szODsyOzk2OzE3NjsyMjFtKhtbMG0bWzM4OzI7OTc7MTc4OzIyMm0qG1swbRtbMzg7Mjs5MjsxNjk7MjEwbSsbWzBtG1szODsyOzExOzIwOzI1bSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzE0OzI1OzMxbSAbWzBtG1szODsyOzI4OzUxOzYxbS4bWzBtG1szODsyOzk7MTY7MTltIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzI7NTs3bSAbWzBtG1szODsyOzc0OzE0MzsxOTZtKxtbMG0bWzM4OzI7NzY7MTQ4OzIwMm0rG1swbRtbMzg7MjsyOzU7N20gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7Mjs0Ozk7MTNtIBtbMG0bWzM4OzI7NzQ7MTQ0OzE5N20rG1swbRtbMzg7Mjs3NzsxNTA7MjA1bSsbWzBtG1szODsyOzY2OzEyODsxNzVtPRtbMG0bWzM4OzI7NzM7MTQyOzE5NG0rG1swbRtbMzg7Mjs3ODsxNTI7MjA4bSsbWzBtG1szODsyOzM2OzcxOzk3bTobWzBtG1szODsyOzQ7ODsxMW0gG1swbRtbMzg7Mjs3ODsxNTI7MjA4bSsbWzBtG1szODsyOzc0OzE0NDsxOTdtKxtbMG0bWzM4OzI7NTA7OTc7MTMzbS0bWzBtG1szODsyOzQ5Ozk1OzEzMG0tG1swbRtbMzg7Mjs0Nzs5MTsxMjRtLRtbMG0bWzM4OzI7NzQ7MTQ1OzE5OG0rG1swbRtbMzg7Mjs2NDsxMjQ7MTcwbT0bWzBtG1szODsyOzU7MTA7MTRtIBtbMG0bWzM4OzI7MDsxOzJtIBtbMG0bWzM4OzI7NzA7MTM3OzE4N209G1swbRtbMzg7Mjs3MzsxNDI7MTk0bSsbWzBtG1szODsyOzE7Mzs0bSAbWzBtG1szODsyOzc7MTQ7MTltIBtbMG0bWzM4OzI7NDg7OTM7MTI4bS0bWzBtG1szODsyOzcyOzE0MDsxOTJtPRtbMG0bWzM4OzI7NzQ7MTQ0OzE5N20rG1swbRtbMzg7Mjs2MDsxMTc7MTYwbT0bWzBtG1szODsyOzMxOzYwOzgzbTobWzBtG1szODsyOzI7NTs3bSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzE7MjsybSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzIyOzQyOzUzbS4bWzBtG1szODsyOzk0OzE3NDsyMjFtKhtbMG0bWzM4OzI7OTM7MTcxOzIxNG0qG1swbRtbMzg7Mjs5MjsxNzA7MjEybSsbWzBtG1szODsyOzk3OzE3ODsyMjJtKhtbMG0bWzM4OzI7Njk7MTI3OzE1OG09G1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsyOzQ7NW0gG1swbRtbMzg7MjsxOzI7Mm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjsxOzM7M20gG1swbRtbMzg7MjsxOzI7Mm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbQobWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MTsyOzNtIBtbMG0bWzM4OzI7NjY7MTI4OzE3NW09G1swbRtbMzg7Mjs4MDsxNTU7MjEybSsbWzBtG1szODsyOzE5OzM3OzUxbS4bWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsybSAbWzBtG1szODsyOzE5OzM3OzUxbS4bWzBtG1szODsyOzEwOzIwOzI3bSAbWzBtG1szODsyOzM7Nzs5bSAbWzBtG1szODsyOzc1OzE0NjsyMDBtKxtbMG0bWzM4OzI7Njk7MTM1OzE4NW09G1swbRtbMzg7MjsyOzU7N20gG1swbRtbMzg7MjsxMDsxOTsyNm0gG1swbRtbMzg7Mjs3OTsxNTM7MjA5bSsbWzBtG1szODsyOzYxOzExOTsxNjJtPRtbMG0bWzM4OzI7NTsxMDsxNW0gG1swbRtbMzg7Mjs3NzsxNTA7MjA2bSsbWzBtG1szODsyOzc0OzE0MzsxOTZtKxtbMG0bWzM4OzI7NDc7OTE7MTI1bS0bWzBtG1szODsyOzU3OzExMTsxNTJtLRtbMG0bWzM4OzI7ODA7MTU1OzIxMm0rG1swbRtbMzg7Mjs2ODsxMzM7MTgybT0bWzBtG1szODsyOzI7NDs2bSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzE7Mzs1bSAbWzBtG1szODsyOzY5OzEzNDsxODRtPRtbMG0bWzM4OzI7NzE7MTM5OzE5MG09G1swbRtbMzg7MjsyOzQ7Nm0gG1swbRtbMzg7MjsxNTszMDs0MW0uG1swbRtbMzg7MjsyNDs0Njs2NG0uG1swbRtbMzg7Mjs2OzEyOzE2bSAbWzBtG1szODsyOzEzOzI2OzM2bSAbWzBtG1szODsyOzQ0Ozg1OzExN20tG1swbRtbMzg7Mjs4MDsxNTU7MjEybSsbWzBtG1szODsyOzU2OzEwODsxNDhtLRtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsxOzJtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MTsyOzNtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7NTU7MTAxOzEyOW0tG1swbRtbMzg7Mjs5NjsxNzY7MjIxbSobWzBtG1szODsyOzk3OzE3ODsyMjJtKhtbMG0bWzM4OzI7OTg7MTc5OzIyM20qG1swbRtbMzg7MjsxMDA7MTgxOzIyNG0qG1swbRtbMzg7Mjs0OTs4ODsxMDhtLRtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MTsyOzJtIBtbMG0bWzM4OzI7MDsxOzFtIBtbMG0bWzM4OzI7MTsyOzJtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsybSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzIyOzQzOzU5bS4bWzBtG1szODsyOzc1OzE0NTsxOTltKxtbMG0bWzM4OzI7ODA7MTU1OzIxMm0rG1swbRtbMzg7Mjs1NjsxMTA7MTUwbS0bWzBtG1szODsyOzY4OzEzMTsxODBtPRtbMG0bWzM4OzI7ODA7MTU1OzIxMm0rG1swbRtbMzg7MjszNzs3MzsxMDBtOhtbMG0bWzM4OzI7MTszOzRtIBtbMG0bWzM4OzI7ODA7MTU1OzIxMm0rG1swbRtbMzg7Mjs2OTsxMzU7MTg1bT0bWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzY7MTI7MTZtIBtbMG0bWzM4OzI7ODA7MTU1OzIxMm0rG1swbRtbMzg7Mjs2NDsxMjQ7MTcwbT0bWzBtG1szODsyOzU7MTA7MTVtIBtbMG0bWzM4OzI7ODA7MTU1OzIxMm0rG1swbRtbMzg7Mjs2OTsxMzQ7MTg0bT0bWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzQ5Ozk2OzEzMW0tG1swbRtbMzg7Mjs4MDsxNTU7MjEybSsbWzBtG1szODsyOzQ1Ozg4OzEyMG0tG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjsxOzM7NW0gG1swbRtbMzg7Mjs3NjsxNDc7MjAybSsbWzBtG1szODsyOzc5OzE1MzsyMDltKxtbMG0bWzM4OzI7MDsxOzJtIBtbMG0bWzM4OzI7NDI7ODI7MTEzbTobWzBtG1szODsyOzgwOzE1NTsyMTJtKxtbMG0bWzM4OzI7Njg7MTMzOzE4Mm09G1swbRtbMzg7Mjs0OTs5NTsxMzBtLRtbMG0bWzM4OzI7NTk7MTE1OzE1N209G1swbRtbMzg7Mjs4MDsxNTU7MjEybSsbWzBtG1szODsyOzQyOzgyOzExM206G1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzE7Mm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7Mjs0Ozg7MTBtIBtbMG0bWzM4OzI7MzY7NjY7ODNtOhtbMG0bWzM4OzI7MzY7Njc7ODRtOhtbMG0bWzM4OzI7MzY7Njc7ODNtOhtbMG0bWzM4OzI7Mzc7Njg7ODRtOhtbMG0bWzM4OzI7MzQ7NjM7NzdtOhtbMG0bWzM4OzI7MDsxOzFtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzk7MTg7MjVtIBtbMG0bWzM4OzI7MzM7NjQ7ODhtOhtbMG0bWzM4OzI7NDY7ODk7MTIzbS0bWzBtG1szODsyOzQwOzc3OzEwNm06G1swbRtbMzg7MjsxNzszMzs0NW0uG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxOzM7NG0gG1swbRtbMzg7MjszNDs2Njs5MW06G1swbRtbMzg7MjsyOTs1Nzs3OG06G1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjszOzY7OG0gG1swbRtbMzg7MjszNTs2ODs5M206G1swbRtbMzg7MjsyNjs1Mjs3MW0uG1swbRtbMzg7MjsyOzQ7Nm0gG1swbRtbMzg7MjszNTs2OTs5NG06G1swbRtbMzg7MjsyOTs1Nzs3OG06G1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjsyOzQ7NW0gG1swbRtbMzg7MjszMzs2NTs4OW06G1swbRtbMzg7MjszNzs3MTs5OG06G1swbRtbMzg7Mjs0Ozc7MTBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MzE7NjA7ODNtOhtbMG0bWzM4OzI7MzI7NjI7ODVtOhtbMG0bWzM4OzI7MDsxOzJtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MTU7Mjk7MzltLhtbMG0bWzM4OzI7Mzk7NzY7MTA0bTobWzBtG1szODsyOzQ4OzkzOzEyOG0tG1swbRtbMzg7Mjs0Mjs4MjsxMTJtOhtbMG0bWzM4OzI7MTk7Mzc7NTFtLhtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzE7MjszbSAbWzBtG1szODsyOzE7MjszbSAbWzBtG1szODsyOzE7MjszbSAbWzBtG1szODsyOzE7MjszbSAbWzBtG1szODsyOzE7MjsybSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtChtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjswOzE7Mm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjswOzE7Mm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjswOzE7Mm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjswOzE7Mm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjswOzE7Mm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbQobWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtCg==",g0=/\x1b\[[0-9;]*m/g,oh="\x1B[0m",lh="\x1B[7m",Sm=atob(m0).trimEnd().split(`
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./cornerstoneEngine-DEyD4KaO.js","./refusal-DOpm8I8L.js","./_commonjsHelpers-CE1G-McA.js","./niivueEngine-DTNSUffe.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))s(i);new MutationObserver(i=>{for(const r of i)if(r.type==="childList")for(const a of r.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&s(a)}).observe(document,{childList:!0,subtree:!0});function t(i){const r={};return i.integrity&&(r.integrity=i.integrity),i.referrerPolicy&&(r.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?r.credentials="include":i.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function s(i){if(i.ep)return;i.ep=!0;const r=t(i);fetch(i.href,r)}})();const DM=450,Hu=12;function Fi(n,e,t=Date.now()){const s=Number(n.dataset.edgeAt??0);return n.dataset.edge===e&&t-s<DM?!1:(delete n.dataset.edge,n.offsetWidth,n.dataset.edge=e,n.dataset.edgeAt=String(t),!0)}function TM(n,e){return e?"▲ TOP":`▼ ${n} MORE`}function IM(n,e){const t=n.getBoundingClientRect().bottom;let s=0;for(const i of n.querySelectorAll(e)){const r=i.getBoundingClientRect();r.height>0&&r.top>=t-2&&(s+=1)}return s}function GM(n){const e=parseFloat(getComputedStyle(n).lineHeight)||16;return Math.max(0,Math.ceil((n.scrollHeight-n.scrollTop-n.clientHeight)/e))}function $s(n,e={}){n.dataset.more="wired",n.classList.add("holds-more");const t=document.createElement("button");t.type="button",t.className=`more-chip${e.className!==void 0?` ${e.className}`:""}`,t.hidden=!0;const s=e.label??TM,i=()=>n.scrollTop+n.clientHeight>=n.scrollHeight-2;t.addEventListener("click",l=>{if(l.stopPropagation(),e.press!==void 0){e.press();return}n.scrollBy({top:i()?-n.scrollHeight:Math.max(1,n.clientHeight-t.offsetHeight),behavior:"smooth"})});const r=e.mount??n;r.appendChild(t);let a=!1;const o=()=>{if(!a){a=!0;try{r===n&&n.lastElementChild!==t&&n.appendChild(t);const l=(e.scrolls?.()??!0)&&n.scrollHeight>n.clientHeight+2;if(t.hidden!==!l&&(t.hidden=!l),!l)return;const c=e.rows!==void 0?IM(n,e.rows):GM(n),d=s(c,i());t.textContent!==d&&(t.textContent=d)}finally{a=!1}}};return n.addEventListener("scroll",o,{passive:!0}),RM(n,i),typeof ResizeObserver<"u"&&new ResizeObserver(o).observe(n),new MutationObserver(o).observe(n,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["hidden","class","style"]}),o(),t}function RM(n,e){const t=()=>n.scrollHeight>n.clientHeight+2,s=()=>n.scrollTop<=0;let i=n.scrollTop;n.addEventListener("scrollend",()=>{const a=n.scrollTop!==i;i=n.scrollTop,!(!a||!t())&&(s()?Fi(n,"top"):e()&&Fi(n,"bottom"))}),n.addEventListener("wheel",a=>{!t()||a.deltaY===0||(a.deltaY<0&&s()?Fi(n,"top"):a.deltaY>0&&e()&&Fi(n,"bottom"))},{passive:!0});let r=null;n.addEventListener("touchstart",a=>{r=a.touches[0]?.clientY??null},{passive:!0}),n.addEventListener("touchmove",a=>{const o=a.touches[0]?.clientY;r===null||o===void 0||!t()||(o-r>Hu&&s()?(Fi(n,"top"),r=null):r-o>Hu&&e()&&(Fi(n,"bottom"),r=null))},{passive:!0}),n.addEventListener("animationend",a=>{a.target===n&&a.animationName.startsWith("edge-flare")&&delete n.dataset.edge})}const BM=["cold","cached","failed"];function NM(n){return n.state??(n.restored===!0?"cached":"cold")}const CM=["upload","download","pull","workflow","pipeline","group","task"],PM=["transfer","retrieve","workflow","inspection"],LM=["scanning","transferring","watching","retrying","reading","working","complete","failed"],WM=["files","bytes","series","jobs","nodes"],kM=["running","done","unconfirmed","stalled","timeout","error","unknown"],Tc=1,UM=new Set([".dcm",".png",".jpg",".jpeg",".gif",".bmp",".webp",".ico",".pdf",".zip",".tar",".gz",".bz2",".xz",".7z",".exe",".dll",".so",".bin",".mp3",".mp4",".avi",".wav",".nii",".mgz"]),FM=1024*1024;function sm(n){const e=n.split("/").pop()??n,t=e.lastIndexOf(".");return t>0?e.slice(t).toLowerCase():""}function jM(n){return!UM.has(sm(n))}var gt;(function(n){n.assertEqual=i=>{};function e(i){}n.assertIs=e;function t(i){throw new Error}n.assertNever=t,n.arrayToEnum=i=>{const r={};for(const a of i)r[a]=a;return r},n.getValidEnumValues=i=>{const r=n.objectKeys(i).filter(o=>typeof i[i[o]]!="number"),a={};for(const o of r)a[o]=i[o];return n.objectValues(a)},n.objectValues=i=>n.objectKeys(i).map(function(r){return i[r]}),n.objectKeys=typeof Object.keys=="function"?i=>Object.keys(i):i=>{const r=[];for(const a in i)Object.prototype.hasOwnProperty.call(i,a)&&r.push(a);return r},n.find=(i,r)=>{for(const a of i)if(r(a))return a},n.isInteger=typeof Number.isInteger=="function"?i=>Number.isInteger(i):i=>typeof i=="number"&&Number.isFinite(i)&&Math.floor(i)===i;function s(i,r=" | "){return i.map(a=>typeof a=="string"?`'${a}'`:a).join(r)}n.joinValues=s,n.jsonStringifyReplacer=(i,r)=>typeof r=="bigint"?r.toString():r})(gt||(gt={}));var qu;(function(n){n.mergeShapes=(e,t)=>({...e,...t})})(qu||(qu={}));const Ge=gt.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),kn=n=>{switch(typeof n){case"undefined":return Ge.undefined;case"string":return Ge.string;case"number":return Number.isNaN(n)?Ge.nan:Ge.number;case"boolean":return Ge.boolean;case"function":return Ge.function;case"bigint":return Ge.bigint;case"symbol":return Ge.symbol;case"object":return Array.isArray(n)?Ge.array:n===null?Ge.null:n.then&&typeof n.then=="function"&&n.catch&&typeof n.catch=="function"?Ge.promise:typeof Map<"u"&&n instanceof Map?Ge.map:typeof Set<"u"&&n instanceof Set?Ge.set:typeof Date<"u"&&n instanceof Date?Ge.date:Ge.object;default:return Ge.unknown}},Me=gt.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);class An extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=s=>{this.issues=[...this.issues,s]},this.addIssues=(s=[])=>{this.issues=[...this.issues,...s]};const t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e}format(e){const t=e||function(r){return r.message},s={_errors:[]},i=r=>{for(const a of r.issues)if(a.code==="invalid_union")a.unionErrors.map(i);else if(a.code==="invalid_return_type")i(a.returnTypeError);else if(a.code==="invalid_arguments")i(a.argumentsError);else if(a.path.length===0)s._errors.push(t(a));else{let o=s,l=0;for(;l<a.path.length;){const c=a.path[l];l===a.path.length-1?(o[c]=o[c]||{_errors:[]},o[c]._errors.push(t(a))):o[c]=o[c]||{_errors:[]},o=o[c],l++}}};return i(this),s}static assert(e){if(!(e instanceof An))throw new Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,gt.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=t=>t.message){const t={},s=[];for(const i of this.issues)if(i.path.length>0){const r=i.path[0];t[r]=t[r]||[],t[r].push(e(i))}else s.push(e(i));return{formErrors:s,fieldErrors:t}}get formErrors(){return this.flatten()}}An.create=n=>new An(n);const Ic=(n,e)=>{let t;switch(n.code){case Me.invalid_type:n.received===Ge.undefined?t="Required":t=`Expected ${n.expected}, received ${n.received}`;break;case Me.invalid_literal:t=`Invalid literal value, expected ${JSON.stringify(n.expected,gt.jsonStringifyReplacer)}`;break;case Me.unrecognized_keys:t=`Unrecognized key(s) in object: ${gt.joinValues(n.keys,", ")}`;break;case Me.invalid_union:t="Invalid input";break;case Me.invalid_union_discriminator:t=`Invalid discriminator value. Expected ${gt.joinValues(n.options)}`;break;case Me.invalid_enum_value:t=`Invalid enum value. Expected ${gt.joinValues(n.options)}, received '${n.received}'`;break;case Me.invalid_arguments:t="Invalid function arguments";break;case Me.invalid_return_type:t="Invalid function return type";break;case Me.invalid_date:t="Invalid date";break;case Me.invalid_string:typeof n.validation=="object"?"includes"in n.validation?(t=`Invalid input: must include "${n.validation.includes}"`,typeof n.validation.position=="number"&&(t=`${t} at one or more positions greater than or equal to ${n.validation.position}`)):"startsWith"in n.validation?t=`Invalid input: must start with "${n.validation.startsWith}"`:"endsWith"in n.validation?t=`Invalid input: must end with "${n.validation.endsWith}"`:gt.assertNever(n.validation):n.validation!=="regex"?t=`Invalid ${n.validation}`:t="Invalid";break;case Me.too_small:n.type==="array"?t=`Array must contain ${n.exact?"exactly":n.inclusive?"at least":"more than"} ${n.minimum} element(s)`:n.type==="string"?t=`String must contain ${n.exact?"exactly":n.inclusive?"at least":"over"} ${n.minimum} character(s)`:n.type==="number"?t=`Number must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${n.minimum}`:n.type==="bigint"?t=`Number must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${n.minimum}`:n.type==="date"?t=`Date must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(n.minimum))}`:t="Invalid input";break;case Me.too_big:n.type==="array"?t=`Array must contain ${n.exact?"exactly":n.inclusive?"at most":"less than"} ${n.maximum} element(s)`:n.type==="string"?t=`String must contain ${n.exact?"exactly":n.inclusive?"at most":"under"} ${n.maximum} character(s)`:n.type==="number"?t=`Number must be ${n.exact?"exactly":n.inclusive?"less than or equal to":"less than"} ${n.maximum}`:n.type==="bigint"?t=`BigInt must be ${n.exact?"exactly":n.inclusive?"less than or equal to":"less than"} ${n.maximum}`:n.type==="date"?t=`Date must be ${n.exact?"exactly":n.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(n.maximum))}`:t="Invalid input";break;case Me.custom:t="Invalid input";break;case Me.invalid_intersection_types:t="Intersection results could not be merged";break;case Me.not_multiple_of:t=`Number must be a multiple of ${n.multipleOf}`;break;case Me.not_finite:t="Number must be finite";break;default:t=e.defaultError,gt.assertNever(n)}return{message:t}};let $M=Ic;function VM(){return $M}const HM=n=>{const{data:e,path:t,errorMaps:s,issueData:i}=n,r=[...t,...i.path||[]],a={...i,path:r};if(i.message!==void 0)return{...i,path:r,message:i.message};let o="";const l=s.filter(c=>!!c).slice().reverse();for(const c of l)o=c(a,{data:e,defaultError:o}).message;return{...i,path:r,message:o}};function De(n,e){const t=VM(),s=HM({issueData:e,data:n.data,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,t,t===Ic?void 0:Ic].filter(i=>!!i)});n.common.issues.push(s)}class us{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,t){const s=[];for(const i of t){if(i.status==="aborted")return Ye;i.status==="dirty"&&e.dirty(),s.push(i.value)}return{status:e.value,value:s}}static async mergeObjectAsync(e,t){const s=[];for(const i of t){const r=await i.key,a=await i.value;s.push({key:r,value:a})}return us.mergeObjectSync(e,s)}static mergeObjectSync(e,t){const s={};for(const i of t){const{key:r,value:a}=i;if(r.status==="aborted"||a.status==="aborted")return Ye;r.status==="dirty"&&e.dirty(),a.status==="dirty"&&e.dirty(),r.value!=="__proto__"&&(typeof a.value<"u"||i.alwaysSet)&&(s[r.value]=a.value)}return{status:e.value,value:s}}}const Ye=Object.freeze({status:"aborted"}),ra=n=>({status:"dirty",value:n}),Bs=n=>({status:"valid",value:n}),Xu=n=>n.status==="aborted",Ku=n=>n.status==="dirty",vr=n=>n.status==="valid",Ro=n=>typeof Promise<"u"&&n instanceof Promise;var Pe;(function(n){n.errToObj=e=>typeof e=="string"?{message:e}:e||{},n.toString=e=>typeof e=="string"?e:e?.message})(Pe||(Pe={}));class an{constructor(e,t,s,i){this._cachedPath=[],this.parent=e,this.data=t,this._path=s,this._key=i}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const Yu=(n,e)=>{if(vr(e))return{success:!0,data:e.value};if(!n.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const t=new An(n.common.issues);return this._error=t,this._error}}};function st(n){if(!n)return{};const{errorMap:e,invalid_type_error:t,required_error:s,description:i}=n;if(e&&(t||s))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:i}:{errorMap:(a,o)=>{const{message:l}=n;return a.code==="invalid_enum_value"?{message:l??o.defaultError}:typeof o.data>"u"?{message:l??s??o.defaultError}:a.code!=="invalid_type"?{message:o.defaultError}:{message:l??t??o.defaultError}},description:i}}class lt{get description(){return this._def.description}_getType(e){return kn(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:kn(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new us,ctx:{common:e.parent.common,data:e.data,parsedType:kn(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){const t=this._parse(e);if(Ro(t))throw new Error("Synchronous parse encountered promise.");return t}_parseAsync(e){const t=this._parse(e);return Promise.resolve(t)}parse(e,t){const s=this.safeParse(e,t);if(s.success)return s.data;throw s.error}safeParse(e,t){const s={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:kn(e)},i=this._parseSync({data:e,path:s.path,parent:s});return Yu(s,i)}"~validate"(e){const t={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:kn(e)};if(!this["~standard"].async)try{const s=this._parseSync({data:e,path:[],parent:t});return vr(s)?{value:s.value}:{issues:t.common.issues}}catch(s){s?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(s=>vr(s)?{value:s.value}:{issues:t.common.issues})}async parseAsync(e,t){const s=await this.safeParseAsync(e,t);if(s.success)return s.data;throw s.error}async safeParseAsync(e,t){const s={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:kn(e)},i=this._parse({data:e,path:s.path,parent:s}),r=await(Ro(i)?i:Promise.resolve(i));return Yu(s,r)}refine(e,t){const s=i=>typeof t=="string"||typeof t>"u"?{message:t}:typeof t=="function"?t(i):t;return this._refinement((i,r)=>{const a=e(i),o=()=>r.addIssue({code:Me.custom,...s(i)});return typeof Promise<"u"&&a instanceof Promise?a.then(l=>l?!0:(o(),!1)):a?!0:(o(),!1)})}refinement(e,t){return this._refinement((s,i)=>e(s)?!0:(i.addIssue(typeof t=="function"?t(s,i):t),!1))}_refinement(e){return new Oi({schema:this,typeName:Ze.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:t=>this["~validate"](t)}}optional(){return On.create(this,this._def)}nullable(){return xi.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return sn.create(this)}promise(){return ko.create(this,this._def)}or(e){return No.create([this,e],this._def)}and(e){return Co.create(this,e,this._def)}transform(e){return new Oi({...st(this._def),schema:this,typeName:Ze.ZodEffects,effect:{type:"transform",transform:e}})}default(e){const t=typeof e=="function"?e:()=>e;return new Uo({...st(this._def),innerType:this,defaultValue:t,typeName:Ze.ZodDefault})}brand(){return new am({typeName:Ze.ZodBranded,type:this,...st(this._def)})}catch(e){const t=typeof e=="function"?e:()=>e;return new Fo({...st(this._def),innerType:this,catchValue:t,typeName:Ze.ZodCatch})}describe(e){const t=this.constructor;return new t({...this._def,description:e})}pipe(e){return Yd.create(this,e)}readonly(){return jo.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const qM=/^c[^\s-]{8,}$/i,XM=/^[0-9a-z]+$/,KM=/^[0-9A-HJKMNP-TV-Z]{26}$/i,YM=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,ZM=/^[a-z0-9_-]{21}$/i,QM=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,JM=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,eb=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,tb="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";let xl;const sb=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,nb=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ib=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,rb=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,ab=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,ob=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nm="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",lb=new RegExp(`^${nm}$`);function im(n){let e="[0-5]\\d";n.precision?e=`${e}\\.\\d{${n.precision}}`:n.precision==null&&(e=`${e}(\\.\\d+)?`);const t=n.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${t}`}function cb(n){return new RegExp(`^${im(n)}$`)}function db(n){let e=`${nm}T${im(n)}`;const t=[];return t.push(n.local?"Z?":"Z"),n.offset&&t.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${t.join("|")})`,new RegExp(`^${e}$`)}function ub(n,e){return!!((e==="v4"||!e)&&sb.test(n)||(e==="v6"||!e)&&ib.test(n))}function hb(n,e){if(!QM.test(n))return!1;try{const[t]=n.split(".");if(!t)return!1;const s=t.replace(/-/g,"+").replace(/_/g,"/").padEnd(t.length+(4-t.length%4)%4,"="),i=JSON.parse(atob(s));return!(typeof i!="object"||i===null||"typ"in i&&i?.typ!=="JWT"||!i.alg||e&&i.alg!==e)}catch{return!1}}function fb(n,e){return!!((e==="v4"||!e)&&nb.test(n)||(e==="v6"||!e)&&rb.test(n))}class yn extends lt{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==Ge.string){const r=this._getOrReturnCtx(e);return De(r,{code:Me.invalid_type,expected:Ge.string,received:r.parsedType}),Ye}const s=new us;let i;for(const r of this._def.checks)if(r.kind==="min")e.data.length<r.value&&(i=this._getOrReturnCtx(e,i),De(i,{code:Me.too_small,minimum:r.value,type:"string",inclusive:!0,exact:!1,message:r.message}),s.dirty());else if(r.kind==="max")e.data.length>r.value&&(i=this._getOrReturnCtx(e,i),De(i,{code:Me.too_big,maximum:r.value,type:"string",inclusive:!0,exact:!1,message:r.message}),s.dirty());else if(r.kind==="length"){const a=e.data.length>r.value,o=e.data.length<r.value;(a||o)&&(i=this._getOrReturnCtx(e,i),a?De(i,{code:Me.too_big,maximum:r.value,type:"string",inclusive:!0,exact:!0,message:r.message}):o&&De(i,{code:Me.too_small,minimum:r.value,type:"string",inclusive:!0,exact:!0,message:r.message}),s.dirty())}else if(r.kind==="email")eb.test(e.data)||(i=this._getOrReturnCtx(e,i),De(i,{validation:"email",code:Me.invalid_string,message:r.message}),s.dirty());else if(r.kind==="emoji")xl||(xl=new RegExp(tb,"u")),xl.test(e.data)||(i=this._getOrReturnCtx(e,i),De(i,{validation:"emoji",code:Me.invalid_string,message:r.message}),s.dirty());else if(r.kind==="uuid")YM.test(e.data)||(i=this._getOrReturnCtx(e,i),De(i,{validation:"uuid",code:Me.invalid_string,message:r.message}),s.dirty());else if(r.kind==="nanoid")ZM.test(e.data)||(i=this._getOrReturnCtx(e,i),De(i,{validation:"nanoid",code:Me.invalid_string,message:r.message}),s.dirty());else if(r.kind==="cuid")qM.test(e.data)||(i=this._getOrReturnCtx(e,i),De(i,{validation:"cuid",code:Me.invalid_string,message:r.message}),s.dirty());else if(r.kind==="cuid2")XM.test(e.data)||(i=this._getOrReturnCtx(e,i),De(i,{validation:"cuid2",code:Me.invalid_string,message:r.message}),s.dirty());else if(r.kind==="ulid")KM.test(e.data)||(i=this._getOrReturnCtx(e,i),De(i,{validation:"ulid",code:Me.invalid_string,message:r.message}),s.dirty());else if(r.kind==="url")try{new URL(e.data)}catch{i=this._getOrReturnCtx(e,i),De(i,{validation:"url",code:Me.invalid_string,message:r.message}),s.dirty()}else r.kind==="regex"?(r.regex.lastIndex=0,r.regex.test(e.data)||(i=this._getOrReturnCtx(e,i),De(i,{validation:"regex",code:Me.invalid_string,message:r.message}),s.dirty())):r.kind==="trim"?e.data=e.data.trim():r.kind==="includes"?e.data.includes(r.value,r.position)||(i=this._getOrReturnCtx(e,i),De(i,{code:Me.invalid_string,validation:{includes:r.value,position:r.position},message:r.message}),s.dirty()):r.kind==="toLowerCase"?e.data=e.data.toLowerCase():r.kind==="toUpperCase"?e.data=e.data.toUpperCase():r.kind==="startsWith"?e.data.startsWith(r.value)||(i=this._getOrReturnCtx(e,i),De(i,{code:Me.invalid_string,validation:{startsWith:r.value},message:r.message}),s.dirty()):r.kind==="endsWith"?e.data.endsWith(r.value)||(i=this._getOrReturnCtx(e,i),De(i,{code:Me.invalid_string,validation:{endsWith:r.value},message:r.message}),s.dirty()):r.kind==="datetime"?db(r).test(e.data)||(i=this._getOrReturnCtx(e,i),De(i,{code:Me.invalid_string,validation:"datetime",message:r.message}),s.dirty()):r.kind==="date"?lb.test(e.data)||(i=this._getOrReturnCtx(e,i),De(i,{code:Me.invalid_string,validation:"date",message:r.message}),s.dirty()):r.kind==="time"?cb(r).test(e.data)||(i=this._getOrReturnCtx(e,i),De(i,{code:Me.invalid_string,validation:"time",message:r.message}),s.dirty()):r.kind==="duration"?JM.test(e.data)||(i=this._getOrReturnCtx(e,i),De(i,{validation:"duration",code:Me.invalid_string,message:r.message}),s.dirty()):r.kind==="ip"?ub(e.data,r.version)||(i=this._getOrReturnCtx(e,i),De(i,{validation:"ip",code:Me.invalid_string,message:r.message}),s.dirty()):r.kind==="jwt"?hb(e.data,r.alg)||(i=this._getOrReturnCtx(e,i),De(i,{validation:"jwt",code:Me.invalid_string,message:r.message}),s.dirty()):r.kind==="cidr"?fb(e.data,r.version)||(i=this._getOrReturnCtx(e,i),De(i,{validation:"cidr",code:Me.invalid_string,message:r.message}),s.dirty()):r.kind==="base64"?ab.test(e.data)||(i=this._getOrReturnCtx(e,i),De(i,{validation:"base64",code:Me.invalid_string,message:r.message}),s.dirty()):r.kind==="base64url"?ob.test(e.data)||(i=this._getOrReturnCtx(e,i),De(i,{validation:"base64url",code:Me.invalid_string,message:r.message}),s.dirty()):gt.assertNever(r);return{status:s.value,value:e.data}}_regex(e,t,s){return this.refinement(i=>e.test(i),{validation:t,code:Me.invalid_string,...Pe.errToObj(s)})}_addCheck(e){return new yn({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...Pe.errToObj(e)})}url(e){return this._addCheck({kind:"url",...Pe.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...Pe.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...Pe.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...Pe.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...Pe.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...Pe.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...Pe.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...Pe.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...Pe.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...Pe.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...Pe.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...Pe.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...Pe.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...Pe.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...Pe.errToObj(e)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...Pe.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:t?.position,...Pe.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...Pe.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...Pe.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...Pe.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...Pe.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...Pe.errToObj(t)})}nonempty(e){return this.min(1,Pe.errToObj(e))}trim(){return new yn({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new yn({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new yn({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(const t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(const t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}}yn.create=n=>new yn({checks:[],typeName:Ze.ZodString,coerce:n?.coerce??!1,...st(n)});function pb(n,e){const t=(n.toString().split(".")[1]||"").length,s=(e.toString().split(".")[1]||"").length,i=t>s?t:s,r=Number.parseInt(n.toFixed(i).replace(".","")),a=Number.parseInt(e.toFixed(i).replace(".",""));return r%a/10**i}class Or extends lt{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==Ge.number){const r=this._getOrReturnCtx(e);return De(r,{code:Me.invalid_type,expected:Ge.number,received:r.parsedType}),Ye}let s;const i=new us;for(const r of this._def.checks)r.kind==="int"?gt.isInteger(e.data)||(s=this._getOrReturnCtx(e,s),De(s,{code:Me.invalid_type,expected:"integer",received:"float",message:r.message}),i.dirty()):r.kind==="min"?(r.inclusive?e.data<r.value:e.data<=r.value)&&(s=this._getOrReturnCtx(e,s),De(s,{code:Me.too_small,minimum:r.value,type:"number",inclusive:r.inclusive,exact:!1,message:r.message}),i.dirty()):r.kind==="max"?(r.inclusive?e.data>r.value:e.data>=r.value)&&(s=this._getOrReturnCtx(e,s),De(s,{code:Me.too_big,maximum:r.value,type:"number",inclusive:r.inclusive,exact:!1,message:r.message}),i.dirty()):r.kind==="multipleOf"?pb(e.data,r.value)!==0&&(s=this._getOrReturnCtx(e,s),De(s,{code:Me.not_multiple_of,multipleOf:r.value,message:r.message}),i.dirty()):r.kind==="finite"?Number.isFinite(e.data)||(s=this._getOrReturnCtx(e,s),De(s,{code:Me.not_finite,message:r.message}),i.dirty()):gt.assertNever(r);return{status:i.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,Pe.toString(t))}gt(e,t){return this.setLimit("min",e,!1,Pe.toString(t))}lte(e,t){return this.setLimit("max",e,!0,Pe.toString(t))}lt(e,t){return this.setLimit("max",e,!1,Pe.toString(t))}setLimit(e,t,s,i){return new Or({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:s,message:Pe.toString(i)}]})}_addCheck(e){return new Or({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:Pe.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:Pe.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:Pe.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:Pe.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:Pe.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:Pe.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:Pe.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:Pe.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:Pe.toString(e)})}get minValue(){let e=null;for(const t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(const t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find(e=>e.kind==="int"||e.kind==="multipleOf"&>.isInteger(e.value))}get isFinite(){let e=null,t=null;for(const s of this._def.checks){if(s.kind==="finite"||s.kind==="int"||s.kind==="multipleOf")return!0;s.kind==="min"?(t===null||s.value>t)&&(t=s.value):s.kind==="max"&&(e===null||s.value<e)&&(e=s.value)}return Number.isFinite(t)&&Number.isFinite(e)}}Or.create=n=>new Or({checks:[],typeName:Ze.ZodNumber,coerce:n?.coerce||!1,...st(n)});class ma extends lt{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==Ge.bigint)return this._getInvalidInput(e);let s;const i=new us;for(const r of this._def.checks)r.kind==="min"?(r.inclusive?e.data<r.value:e.data<=r.value)&&(s=this._getOrReturnCtx(e,s),De(s,{code:Me.too_small,type:"bigint",minimum:r.value,inclusive:r.inclusive,message:r.message}),i.dirty()):r.kind==="max"?(r.inclusive?e.data>r.value:e.data>=r.value)&&(s=this._getOrReturnCtx(e,s),De(s,{code:Me.too_big,type:"bigint",maximum:r.value,inclusive:r.inclusive,message:r.message}),i.dirty()):r.kind==="multipleOf"?e.data%r.value!==BigInt(0)&&(s=this._getOrReturnCtx(e,s),De(s,{code:Me.not_multiple_of,multipleOf:r.value,message:r.message}),i.dirty()):gt.assertNever(r);return{status:i.value,value:e.data}}_getInvalidInput(e){const t=this._getOrReturnCtx(e);return De(t,{code:Me.invalid_type,expected:Ge.bigint,received:t.parsedType}),Ye}gte(e,t){return this.setLimit("min",e,!0,Pe.toString(t))}gt(e,t){return this.setLimit("min",e,!1,Pe.toString(t))}lte(e,t){return this.setLimit("max",e,!0,Pe.toString(t))}lt(e,t){return this.setLimit("max",e,!1,Pe.toString(t))}setLimit(e,t,s,i){return new ma({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:s,message:Pe.toString(i)}]})}_addCheck(e){return new ma({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:Pe.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:Pe.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:Pe.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:Pe.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:Pe.toString(t)})}get minValue(){let e=null;for(const t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(const t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}}ma.create=n=>new ma({checks:[],typeName:Ze.ZodBigInt,coerce:n?.coerce??!1,...st(n)});class Gc extends lt{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==Ge.boolean){const s=this._getOrReturnCtx(e);return De(s,{code:Me.invalid_type,expected:Ge.boolean,received:s.parsedType}),Ye}return Bs(e.data)}}Gc.create=n=>new Gc({typeName:Ze.ZodBoolean,coerce:n?.coerce||!1,...st(n)});class Bo extends lt{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==Ge.date){const r=this._getOrReturnCtx(e);return De(r,{code:Me.invalid_type,expected:Ge.date,received:r.parsedType}),Ye}if(Number.isNaN(e.data.getTime())){const r=this._getOrReturnCtx(e);return De(r,{code:Me.invalid_date}),Ye}const s=new us;let i;for(const r of this._def.checks)r.kind==="min"?e.data.getTime()<r.value&&(i=this._getOrReturnCtx(e,i),De(i,{code:Me.too_small,message:r.message,inclusive:!0,exact:!1,minimum:r.value,type:"date"}),s.dirty()):r.kind==="max"?e.data.getTime()>r.value&&(i=this._getOrReturnCtx(e,i),De(i,{code:Me.too_big,message:r.message,inclusive:!0,exact:!1,maximum:r.value,type:"date"}),s.dirty()):gt.assertNever(r);return{status:s.value,value:new Date(e.data.getTime())}}_addCheck(e){return new Bo({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:Pe.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:Pe.toString(t)})}get minDate(){let e=null;for(const t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(const t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e!=null?new Date(e):null}}Bo.create=n=>new Bo({checks:[],coerce:n?.coerce||!1,typeName:Ze.ZodDate,...st(n)});class Zu extends lt{_parse(e){if(this._getType(e)!==Ge.symbol){const s=this._getOrReturnCtx(e);return De(s,{code:Me.invalid_type,expected:Ge.symbol,received:s.parsedType}),Ye}return Bs(e.data)}}Zu.create=n=>new Zu({typeName:Ze.ZodSymbol,...st(n)});class Rc extends lt{_parse(e){if(this._getType(e)!==Ge.undefined){const s=this._getOrReturnCtx(e);return De(s,{code:Me.invalid_type,expected:Ge.undefined,received:s.parsedType}),Ye}return Bs(e.data)}}Rc.create=n=>new Rc({typeName:Ze.ZodUndefined,...st(n)});class Bc extends lt{_parse(e){if(this._getType(e)!==Ge.null){const s=this._getOrReturnCtx(e);return De(s,{code:Me.invalid_type,expected:Ge.null,received:s.parsedType}),Ye}return Bs(e.data)}}Bc.create=n=>new Bc({typeName:Ze.ZodNull,...st(n)});class Qu extends lt{constructor(){super(...arguments),this._any=!0}_parse(e){return Bs(e.data)}}Qu.create=n=>new Qu({typeName:Ze.ZodAny,...st(n)});class Nc extends lt{constructor(){super(...arguments),this._unknown=!0}_parse(e){return Bs(e.data)}}Nc.create=n=>new Nc({typeName:Ze.ZodUnknown,...st(n)});class Qn extends lt{_parse(e){const t=this._getOrReturnCtx(e);return De(t,{code:Me.invalid_type,expected:Ge.never,received:t.parsedType}),Ye}}Qn.create=n=>new Qn({typeName:Ze.ZodNever,...st(n)});class Ju extends lt{_parse(e){if(this._getType(e)!==Ge.undefined){const s=this._getOrReturnCtx(e);return De(s,{code:Me.invalid_type,expected:Ge.void,received:s.parsedType}),Ye}return Bs(e.data)}}Ju.create=n=>new Ju({typeName:Ze.ZodVoid,...st(n)});class sn extends lt{_parse(e){const{ctx:t,status:s}=this._processInputParams(e),i=this._def;if(t.parsedType!==Ge.array)return De(t,{code:Me.invalid_type,expected:Ge.array,received:t.parsedType}),Ye;if(i.exactLength!==null){const a=t.data.length>i.exactLength.value,o=t.data.length<i.exactLength.value;(a||o)&&(De(t,{code:a?Me.too_big:Me.too_small,minimum:o?i.exactLength.value:void 0,maximum:a?i.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:i.exactLength.message}),s.dirty())}if(i.minLength!==null&&t.data.length<i.minLength.value&&(De(t,{code:Me.too_small,minimum:i.minLength.value,type:"array",inclusive:!0,exact:!1,message:i.minLength.message}),s.dirty()),i.maxLength!==null&&t.data.length>i.maxLength.value&&(De(t,{code:Me.too_big,maximum:i.maxLength.value,type:"array",inclusive:!0,exact:!1,message:i.maxLength.message}),s.dirty()),t.common.async)return Promise.all([...t.data].map((a,o)=>i.type._parseAsync(new an(t,a,t.path,o)))).then(a=>us.mergeArray(s,a));const r=[...t.data].map((a,o)=>i.type._parseSync(new an(t,a,t.path,o)));return us.mergeArray(s,r)}get element(){return this._def.type}min(e,t){return new sn({...this._def,minLength:{value:e,message:Pe.toString(t)}})}max(e,t){return new sn({...this._def,maxLength:{value:e,message:Pe.toString(t)}})}length(e,t){return new sn({...this._def,exactLength:{value:e,message:Pe.toString(t)}})}nonempty(e){return this.min(1,e)}}sn.create=(n,e)=>new sn({type:n,minLength:null,maxLength:null,exactLength:null,typeName:Ze.ZodArray,...st(e)});function pr(n){if(n instanceof jt){const e={};for(const t in n.shape){const s=n.shape[t];e[t]=On.create(pr(s))}return new jt({...n._def,shape:()=>e})}else return n instanceof sn?new sn({...n._def,type:pr(n.element)}):n instanceof On?On.create(pr(n.unwrap())):n instanceof xi?xi.create(pr(n.unwrap())):n instanceof yi?yi.create(n.items.map(e=>pr(e))):n}class jt extends lt{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const e=this._def.shape(),t=gt.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==Ge.object){const c=this._getOrReturnCtx(e);return De(c,{code:Me.invalid_type,expected:Ge.object,received:c.parsedType}),Ye}const{status:s,ctx:i}=this._processInputParams(e),{shape:r,keys:a}=this._getCached(),o=[];if(!(this._def.catchall instanceof Qn&&this._def.unknownKeys==="strip"))for(const c in i.data)a.includes(c)||o.push(c);const l=[];for(const c of a){const d=r[c],u=i.data[c];l.push({key:{status:"valid",value:c},value:d._parse(new an(i,u,i.path,c)),alwaysSet:c in i.data})}if(this._def.catchall instanceof Qn){const c=this._def.unknownKeys;if(c==="passthrough")for(const d of o)l.push({key:{status:"valid",value:d},value:{status:"valid",value:i.data[d]}});else if(c==="strict")o.length>0&&(De(i,{code:Me.unrecognized_keys,keys:o}),s.dirty());else if(c!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const c=this._def.catchall;for(const d of o){const u=i.data[d];l.push({key:{status:"valid",value:d},value:c._parse(new an(i,u,i.path,d)),alwaysSet:d in i.data})}}return i.common.async?Promise.resolve().then(async()=>{const c=[];for(const d of l){const u=await d.key,h=await d.value;c.push({key:u,value:h,alwaysSet:d.alwaysSet})}return c}).then(c=>us.mergeObjectSync(s,c)):us.mergeObjectSync(s,l)}get shape(){return this._def.shape()}strict(e){return Pe.errToObj,new jt({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(t,s)=>{const i=this._def.errorMap?.(t,s).message??s.defaultError;return t.code==="unrecognized_keys"?{message:Pe.errToObj(e).message??i}:{message:i}}}:{}})}strip(){return new jt({...this._def,unknownKeys:"strip"})}passthrough(){return new jt({...this._def,unknownKeys:"passthrough"})}extend(e){return new jt({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new jt({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:Ze.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new jt({...this._def,catchall:e})}pick(e){const t={};for(const s of gt.objectKeys(e))e[s]&&this.shape[s]&&(t[s]=this.shape[s]);return new jt({...this._def,shape:()=>t})}omit(e){const t={};for(const s of gt.objectKeys(this.shape))e[s]||(t[s]=this.shape[s]);return new jt({...this._def,shape:()=>t})}deepPartial(){return pr(this)}partial(e){const t={};for(const s of gt.objectKeys(this.shape)){const i=this.shape[s];e&&!e[s]?t[s]=i:t[s]=i.optional()}return new jt({...this._def,shape:()=>t})}required(e){const t={};for(const s of gt.objectKeys(this.shape))if(e&&!e[s])t[s]=this.shape[s];else{let r=this.shape[s];for(;r instanceof On;)r=r._def.innerType;t[s]=r}return new jt({...this._def,shape:()=>t})}keyof(){return rm(gt.objectKeys(this.shape))}}jt.create=(n,e)=>new jt({shape:()=>n,unknownKeys:"strip",catchall:Qn.create(),typeName:Ze.ZodObject,...st(e)});jt.strictCreate=(n,e)=>new jt({shape:()=>n,unknownKeys:"strict",catchall:Qn.create(),typeName:Ze.ZodObject,...st(e)});jt.lazycreate=(n,e)=>new jt({shape:n,unknownKeys:"strip",catchall:Qn.create(),typeName:Ze.ZodObject,...st(e)});class No extends lt{_parse(e){const{ctx:t}=this._processInputParams(e),s=this._def.options;function i(r){for(const o of r)if(o.result.status==="valid")return o.result;for(const o of r)if(o.result.status==="dirty")return t.common.issues.push(...o.ctx.common.issues),o.result;const a=r.map(o=>new An(o.ctx.common.issues));return De(t,{code:Me.invalid_union,unionErrors:a}),Ye}if(t.common.async)return Promise.all(s.map(async r=>{const a={...t,common:{...t.common,issues:[]},parent:null};return{result:await r._parseAsync({data:t.data,path:t.path,parent:a}),ctx:a}})).then(i);{let r;const a=[];for(const l of s){const c={...t,common:{...t.common,issues:[]},parent:null},d=l._parseSync({data:t.data,path:t.path,parent:c});if(d.status==="valid")return d;d.status==="dirty"&&!r&&(r={result:d,ctx:c}),c.common.issues.length&&a.push(c.common.issues)}if(r)return t.common.issues.push(...r.ctx.common.issues),r.result;const o=a.map(l=>new An(l));return De(t,{code:Me.invalid_union,unionErrors:o}),Ye}}get options(){return this._def.options}}No.create=(n,e)=>new No({options:n,typeName:Ze.ZodUnion,...st(e)});const gn=n=>n instanceof Lo?gn(n.schema):n instanceof Oi?gn(n.innerType()):n instanceof Wo?[n.value]:n instanceof vi?n.options:n instanceof Pc?gt.objectValues(n.enum):n instanceof Uo?gn(n._def.innerType):n instanceof Rc?[void 0]:n instanceof Bc?[null]:n instanceof On?[void 0,...gn(n.unwrap())]:n instanceof xi?[null,...gn(n.unwrap())]:n instanceof am||n instanceof jo?gn(n.unwrap()):n instanceof Fo?gn(n._def.innerType):[];class Kd extends lt{_parse(e){const{ctx:t}=this._processInputParams(e);if(t.parsedType!==Ge.object)return De(t,{code:Me.invalid_type,expected:Ge.object,received:t.parsedType}),Ye;const s=this.discriminator,i=t.data[s],r=this.optionsMap.get(i);return r?t.common.async?r._parseAsync({data:t.data,path:t.path,parent:t}):r._parseSync({data:t.data,path:t.path,parent:t}):(De(t,{code:Me.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[s]}),Ye)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,s){const i=new Map;for(const r of t){const a=gn(r.shape[e]);if(!a.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(const o of a){if(i.has(o))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(o)}`);i.set(o,r)}}return new Kd({typeName:Ze.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:i,...st(s)})}}function Cc(n,e){const t=kn(n),s=kn(e);if(n===e)return{valid:!0,data:n};if(t===Ge.object&&s===Ge.object){const i=gt.objectKeys(e),r=gt.objectKeys(n).filter(o=>i.indexOf(o)!==-1),a={...n,...e};for(const o of r){const l=Cc(n[o],e[o]);if(!l.valid)return{valid:!1};a[o]=l.data}return{valid:!0,data:a}}else if(t===Ge.array&&s===Ge.array){if(n.length!==e.length)return{valid:!1};const i=[];for(let r=0;r<n.length;r++){const a=n[r],o=e[r],l=Cc(a,o);if(!l.valid)return{valid:!1};i.push(l.data)}return{valid:!0,data:i}}else return t===Ge.date&&s===Ge.date&&+n==+e?{valid:!0,data:n}:{valid:!1}}class Co extends lt{_parse(e){const{status:t,ctx:s}=this._processInputParams(e),i=(r,a)=>{if(Xu(r)||Xu(a))return Ye;const o=Cc(r.value,a.value);return o.valid?((Ku(r)||Ku(a))&&t.dirty(),{status:t.value,value:o.data}):(De(s,{code:Me.invalid_intersection_types}),Ye)};return s.common.async?Promise.all([this._def.left._parseAsync({data:s.data,path:s.path,parent:s}),this._def.right._parseAsync({data:s.data,path:s.path,parent:s})]).then(([r,a])=>i(r,a)):i(this._def.left._parseSync({data:s.data,path:s.path,parent:s}),this._def.right._parseSync({data:s.data,path:s.path,parent:s}))}}Co.create=(n,e,t)=>new Co({left:n,right:e,typeName:Ze.ZodIntersection,...st(t)});class yi extends lt{_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==Ge.array)return De(s,{code:Me.invalid_type,expected:Ge.array,received:s.parsedType}),Ye;if(s.data.length<this._def.items.length)return De(s,{code:Me.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),Ye;!this._def.rest&&s.data.length>this._def.items.length&&(De(s,{code:Me.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),t.dirty());const r=[...s.data].map((a,o)=>{const l=this._def.items[o]||this._def.rest;return l?l._parse(new an(s,a,s.path,o)):null}).filter(a=>!!a);return s.common.async?Promise.all(r).then(a=>us.mergeArray(t,a)):us.mergeArray(t,r)}get items(){return this._def.items}rest(e){return new yi({...this._def,rest:e})}}yi.create=(n,e)=>{if(!Array.isArray(n))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new yi({items:n,typeName:Ze.ZodTuple,rest:null,...st(e)})};class Po extends lt{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==Ge.object)return De(s,{code:Me.invalid_type,expected:Ge.object,received:s.parsedType}),Ye;const i=[],r=this._def.keyType,a=this._def.valueType;for(const o in s.data)i.push({key:r._parse(new an(s,o,s.path,o)),value:a._parse(new an(s,s.data[o],s.path,o)),alwaysSet:o in s.data});return s.common.async?us.mergeObjectAsync(t,i):us.mergeObjectSync(t,i)}get element(){return this._def.valueType}static create(e,t,s){return t instanceof lt?new Po({keyType:e,valueType:t,typeName:Ze.ZodRecord,...st(s)}):new Po({keyType:yn.create(),valueType:e,typeName:Ze.ZodRecord,...st(t)})}}class eh extends lt{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==Ge.map)return De(s,{code:Me.invalid_type,expected:Ge.map,received:s.parsedType}),Ye;const i=this._def.keyType,r=this._def.valueType,a=[...s.data.entries()].map(([o,l],c)=>({key:i._parse(new an(s,o,s.path,[c,"key"])),value:r._parse(new an(s,l,s.path,[c,"value"]))}));if(s.common.async){const o=new Map;return Promise.resolve().then(async()=>{for(const l of a){const c=await l.key,d=await l.value;if(c.status==="aborted"||d.status==="aborted")return Ye;(c.status==="dirty"||d.status==="dirty")&&t.dirty(),o.set(c.value,d.value)}return{status:t.value,value:o}})}else{const o=new Map;for(const l of a){const c=l.key,d=l.value;if(c.status==="aborted"||d.status==="aborted")return Ye;(c.status==="dirty"||d.status==="dirty")&&t.dirty(),o.set(c.value,d.value)}return{status:t.value,value:o}}}}eh.create=(n,e,t)=>new eh({valueType:e,keyType:n,typeName:Ze.ZodMap,...st(t)});class ga extends lt{_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==Ge.set)return De(s,{code:Me.invalid_type,expected:Ge.set,received:s.parsedType}),Ye;const i=this._def;i.minSize!==null&&s.data.size<i.minSize.value&&(De(s,{code:Me.too_small,minimum:i.minSize.value,type:"set",inclusive:!0,exact:!1,message:i.minSize.message}),t.dirty()),i.maxSize!==null&&s.data.size>i.maxSize.value&&(De(s,{code:Me.too_big,maximum:i.maxSize.value,type:"set",inclusive:!0,exact:!1,message:i.maxSize.message}),t.dirty());const r=this._def.valueType;function a(l){const c=new Set;for(const d of l){if(d.status==="aborted")return Ye;d.status==="dirty"&&t.dirty(),c.add(d.value)}return{status:t.value,value:c}}const o=[...s.data.values()].map((l,c)=>r._parse(new an(s,l,s.path,c)));return s.common.async?Promise.all(o).then(l=>a(l)):a(o)}min(e,t){return new ga({...this._def,minSize:{value:e,message:Pe.toString(t)}})}max(e,t){return new ga({...this._def,maxSize:{value:e,message:Pe.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}ga.create=(n,e)=>new ga({valueType:n,minSize:null,maxSize:null,typeName:Ze.ZodSet,...st(e)});class Lo extends lt{get schema(){return this._def.getter()}_parse(e){const{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}}Lo.create=(n,e)=>new Lo({getter:n,typeName:Ze.ZodLazy,...st(e)});class Wo extends lt{_parse(e){if(e.data!==this._def.value){const t=this._getOrReturnCtx(e);return De(t,{received:t.data,code:Me.invalid_literal,expected:this._def.value}),Ye}return{status:"valid",value:e.data}}get value(){return this._def.value}}Wo.create=(n,e)=>new Wo({value:n,typeName:Ze.ZodLiteral,...st(e)});function rm(n,e){return new vi({values:n,typeName:Ze.ZodEnum,...st(e)})}class vi extends lt{_parse(e){if(typeof e.data!="string"){const t=this._getOrReturnCtx(e),s=this._def.values;return De(t,{expected:gt.joinValues(s),received:t.parsedType,code:Me.invalid_type}),Ye}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){const t=this._getOrReturnCtx(e),s=this._def.values;return De(t,{received:t.data,code:Me.invalid_enum_value,options:s}),Ye}return Bs(e.data)}get options(){return this._def.values}get enum(){const e={};for(const t of this._def.values)e[t]=t;return e}get Values(){const e={};for(const t of this._def.values)e[t]=t;return e}get Enum(){const e={};for(const t of this._def.values)e[t]=t;return e}extract(e,t=this._def){return vi.create(e,{...this._def,...t})}exclude(e,t=this._def){return vi.create(this.options.filter(s=>!e.includes(s)),{...this._def,...t})}}vi.create=rm;class Pc extends lt{_parse(e){const t=gt.getValidEnumValues(this._def.values),s=this._getOrReturnCtx(e);if(s.parsedType!==Ge.string&&s.parsedType!==Ge.number){const i=gt.objectValues(t);return De(s,{expected:gt.joinValues(i),received:s.parsedType,code:Me.invalid_type}),Ye}if(this._cache||(this._cache=new Set(gt.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){const i=gt.objectValues(t);return De(s,{received:s.data,code:Me.invalid_enum_value,options:i}),Ye}return Bs(e.data)}get enum(){return this._def.values}}Pc.create=(n,e)=>new Pc({values:n,typeName:Ze.ZodNativeEnum,...st(e)});class ko extends lt{unwrap(){return this._def.type}_parse(e){const{ctx:t}=this._processInputParams(e);if(t.parsedType!==Ge.promise&&t.common.async===!1)return De(t,{code:Me.invalid_type,expected:Ge.promise,received:t.parsedType}),Ye;const s=t.parsedType===Ge.promise?t.data:Promise.resolve(t.data);return Bs(s.then(i=>this._def.type.parseAsync(i,{path:t.path,errorMap:t.common.contextualErrorMap})))}}ko.create=(n,e)=>new ko({type:n,typeName:Ze.ZodPromise,...st(e)});class Oi extends lt{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Ze.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){const{status:t,ctx:s}=this._processInputParams(e),i=this._def.effect||null,r={addIssue:a=>{De(s,a),a.fatal?t.abort():t.dirty()},get path(){return s.path}};if(r.addIssue=r.addIssue.bind(r),i.type==="preprocess"){const a=i.transform(s.data,r);if(s.common.async)return Promise.resolve(a).then(async o=>{if(t.value==="aborted")return Ye;const l=await this._def.schema._parseAsync({data:o,path:s.path,parent:s});return l.status==="aborted"?Ye:l.status==="dirty"||t.value==="dirty"?ra(l.value):l});{if(t.value==="aborted")return Ye;const o=this._def.schema._parseSync({data:a,path:s.path,parent:s});return o.status==="aborted"?Ye:o.status==="dirty"||t.value==="dirty"?ra(o.value):o}}if(i.type==="refinement"){const a=o=>{const l=i.refinement(o,r);if(s.common.async)return Promise.resolve(l);if(l instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return o};if(s.common.async===!1){const o=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});return o.status==="aborted"?Ye:(o.status==="dirty"&&t.dirty(),a(o.value),{status:t.value,value:o.value})}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(o=>o.status==="aborted"?Ye:(o.status==="dirty"&&t.dirty(),a(o.value).then(()=>({status:t.value,value:o.value}))))}if(i.type==="transform")if(s.common.async===!1){const a=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});if(!vr(a))return Ye;const o=i.transform(a.value,r);if(o instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:o}}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(a=>vr(a)?Promise.resolve(i.transform(a.value,r)).then(o=>({status:t.value,value:o})):Ye);gt.assertNever(i)}}Oi.create=(n,e,t)=>new Oi({schema:n,typeName:Ze.ZodEffects,effect:e,...st(t)});Oi.createWithPreprocess=(n,e,t)=>new Oi({schema:e,effect:{type:"preprocess",transform:n},typeName:Ze.ZodEffects,...st(t)});class On extends lt{_parse(e){return this._getType(e)===Ge.undefined?Bs(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}On.create=(n,e)=>new On({innerType:n,typeName:Ze.ZodOptional,...st(e)});class xi extends lt{_parse(e){return this._getType(e)===Ge.null?Bs(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}xi.create=(n,e)=>new xi({innerType:n,typeName:Ze.ZodNullable,...st(e)});class Uo extends lt{_parse(e){const{ctx:t}=this._processInputParams(e);let s=t.data;return t.parsedType===Ge.undefined&&(s=this._def.defaultValue()),this._def.innerType._parse({data:s,path:t.path,parent:t})}removeDefault(){return this._def.innerType}}Uo.create=(n,e)=>new Uo({innerType:n,typeName:Ze.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...st(e)});class Fo extends lt{_parse(e){const{ctx:t}=this._processInputParams(e),s={...t,common:{...t.common,issues:[]}},i=this._def.innerType._parse({data:s.data,path:s.path,parent:{...s}});return Ro(i)?i.then(r=>({status:"valid",value:r.status==="valid"?r.value:this._def.catchValue({get error(){return new An(s.common.issues)},input:s.data})})):{status:"valid",value:i.status==="valid"?i.value:this._def.catchValue({get error(){return new An(s.common.issues)},input:s.data})}}removeCatch(){return this._def.innerType}}Fo.create=(n,e)=>new Fo({innerType:n,typeName:Ze.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...st(e)});class th extends lt{_parse(e){if(this._getType(e)!==Ge.nan){const s=this._getOrReturnCtx(e);return De(s,{code:Me.invalid_type,expected:Ge.nan,received:s.parsedType}),Ye}return{status:"valid",value:e.data}}}th.create=n=>new th({typeName:Ze.ZodNaN,...st(n)});class am extends lt{_parse(e){const{ctx:t}=this._processInputParams(e),s=t.data;return this._def.type._parse({data:s,path:t.path,parent:t})}unwrap(){return this._def.type}}class Yd extends lt{_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.common.async)return(async()=>{const r=await this._def.in._parseAsync({data:s.data,path:s.path,parent:s});return r.status==="aborted"?Ye:r.status==="dirty"?(t.dirty(),ra(r.value)):this._def.out._parseAsync({data:r.value,path:s.path,parent:s})})();{const i=this._def.in._parseSync({data:s.data,path:s.path,parent:s});return i.status==="aborted"?Ye:i.status==="dirty"?(t.dirty(),{status:"dirty",value:i.value}):this._def.out._parseSync({data:i.value,path:s.path,parent:s})}}static create(e,t){return new Yd({in:e,out:t,typeName:Ze.ZodPipeline})}}class jo extends lt{_parse(e){const t=this._def.innerType._parse(e),s=i=>(vr(i)&&(i.value=Object.freeze(i.value)),i);return Ro(t)?t.then(i=>s(i)):s(t)}unwrap(){return this._def.innerType}}jo.create=(n,e)=>new jo({innerType:n,typeName:Ze.ZodReadonly,...st(e)});var Ze;(function(n){n.ZodString="ZodString",n.ZodNumber="ZodNumber",n.ZodNaN="ZodNaN",n.ZodBigInt="ZodBigInt",n.ZodBoolean="ZodBoolean",n.ZodDate="ZodDate",n.ZodSymbol="ZodSymbol",n.ZodUndefined="ZodUndefined",n.ZodNull="ZodNull",n.ZodAny="ZodAny",n.ZodUnknown="ZodUnknown",n.ZodNever="ZodNever",n.ZodVoid="ZodVoid",n.ZodArray="ZodArray",n.ZodObject="ZodObject",n.ZodUnion="ZodUnion",n.ZodDiscriminatedUnion="ZodDiscriminatedUnion",n.ZodIntersection="ZodIntersection",n.ZodTuple="ZodTuple",n.ZodRecord="ZodRecord",n.ZodMap="ZodMap",n.ZodSet="ZodSet",n.ZodFunction="ZodFunction",n.ZodLazy="ZodLazy",n.ZodLiteral="ZodLiteral",n.ZodEnum="ZodEnum",n.ZodEffects="ZodEffects",n.ZodNativeEnum="ZodNativeEnum",n.ZodOptional="ZodOptional",n.ZodNullable="ZodNullable",n.ZodDefault="ZodDefault",n.ZodCatch="ZodCatch",n.ZodPromise="ZodPromise",n.ZodBranded="ZodBranded",n.ZodPipeline="ZodPipeline",n.ZodReadonly="ZodReadonly"})(Ze||(Ze={}));const k=yn.create,ce=Or.create,Nt=Gc.create,Zd=Nc.create;Qn.create;const at=sn.create,me=jt.create;No.create;const om=Kd.create;Co.create;const lm=yi.create,mb=Po.create,gb=Lo.create,pt=Wo.create,Wt=vi.create;ko.create;On.create;xi.create;const Mb=Wt(["ok","error"]),bb=me({type:Wt(["error","warning"]),message:k()}),_b=me({kind:k(),data:Zd()}),zb=me({input:k(),proposed:k(),validated:Nt(),executed:k().optional()}),cm=me({status:Mb,rendered:k(),renderedErr:k().optional(),model:_b.optional(),errors:at(bb).optional(),trace:zb.optional()}),wb=Wt(["data","err","status"]),yb=me({shellCommands:Nt(),hiddenInput:Nt().optional(),color:Nt().optional(),fileDelivery:Nt().optional(),localFilesystem:Nt().optional()}),vb=me({type:pt("attach"),protocolVersion:ce().int(),token:k(),session:k().optional(),capabilities:yb.optional()}),Ob=me({type:pt("execute"),id:k(),line:k(),instrument:Nt().optional()}),xb=me({type:pt("cancel"),id:k()}),Sb=me({type:pt("complete"),id:k(),prefix:k()}),Eb=me({type:pt("promptAnswer"),promptId:k(),answer:k()}),Ab=me({type:pt("promptError"),promptId:k(),reason:k()}),Db=me({type:pt("pipeResult"),pipeId:k(),output:k()}),Tb=me({type:pt("pipeError"),pipeId:k(),reason:k()}),Ib=me({type:pt("shellResult"),shellId:k(),exitCode:ce().int()}),Gb=me({type:pt("shellError"),shellId:k(),reason:k()}),Rb=me({type:pt("editResult"),editId:k(),content:k(),changed:Nt(),opened:Nt().optional()}),Bb=me({type:pt("editError"),editId:k(),reason:k()}),Nb=me({type:pt("deliverResult"),deliverId:k(),location:k(),bytes:ce().nonnegative()}),Cb=me({type:pt("deliverError"),deliverId:k(),reason:k()}),Pb=me({address:k(),modelKind:k().optional(),groupId:k(),paneId:k()}),dm=me({type:pt("regard"),regard:Pb}),Lb=me({type:pt("watch"),subject:k()}),Wb=me({type:pt("unwatch"),subject:k()}),kb=["live","settled","stale"],Ub=Wt(kb),Fb=me({type:pt("stale"),stale:Nt()}),jb=["restart","end","stop"],$b=me({type:pt("closing"),cause:Wt(jb)}),Vb=me({type:pt("watched"),subject:k(),state:Ub}),Hb=me({type:pt("numbered"),id:ce(),source:k(),rows:ce(),handles:at(me({kind:k(),ordinal:ce(),address:k()}))});om("type",[vb,Ob,xb,Sb,Eb,Ab,Db,Tb,Ib,Gb,Rb,Bb,Nb,Cb,dm,Lb,Wb]);const qb=me({type:pt("attached"),session:k(),surface:k().optional(),protocolVersion:ce().int(),stack:me({chell:k(),calypso:k(),build:k(),surface:me({git:k(),built:k()}).optional(),brasa:k().optional(),chili:k().optional(),salsa:k().optional(),cumin:k().optional()}).optional(),hostControl:at(k()).optional(),stale:Nt().optional()}),Xb=me({type:pt("result"),id:k(),envelopes:at(cm)}),Kb=me({type:pt("complete"),id:k(),prefix:k(),candidates:at(k())}),Yb=me({type:pt("output"),id:k(),channel:wb,chunk:k()}),Zb=Wt(CM).catch("task"),Qb=Wt(PM).catch(void 0),Jb=Wt(LM).catch("working"),e_=Wt(WM).catch(void 0),t_=Wt(kM).catch("unknown"),s_=me({type:pt("progress"),id:k(),operation:Zb,kind:Qb.optional(),phase:Jb,label:k().optional(),itemId:k().optional(),current:ce().nonnegative().optional(),total:ce().nonnegative().optional(),percent:ce().min(0).max(100).optional(),unit:e_.optional(),status:t_.optional(),path:k().optional(),reason:k().optional()}),n_=me({type:pt("session"),surface:k(),envelope:cm}),i_=me({type:pt("error"),id:k().optional(),reason:k()}),r_=["text","secret","confirm","path"],a_=Wt(r_).catch("text"),o_=me({anchor:k().optional(),wantsDirectory:Nt(),suggest:k().optional()}),l_=me({type:pt("prompt"),promptId:k(),message:k(),hidden:Nt(),wants:a_.optional(),path:o_.optional(),commit:k().optional()});function c_(n){return n.wants!==void 0?n.wants:n.hidden===!0?"secret":"text"}const d_=me({user:k(),uri:k(),cwd:k(),pacsserver:k().nullable(),physicalMode:Nt(),lastExitCode:ce(),lastCommandDurationMs:ce(),procWarmup:me({loaded:ce(),total:ce().optional(),restored:Nt().optional(),state:Wt(BM).optional(),sweeping:Nt().optional(),feed:me({id:ce(),loaded:ce(),total:ce(),failed:k().optional()}).optional(),feeds:at(me({id:ce(),loaded:ce(),total:ce(),failed:k().optional()})).optional(),arrived:at(ce()).optional(),landed:at(me({id:ce(),title:k().default(""),jobs:ce(),status:k(),chain:at(k()),groups:at(me({plugin:k(),count:ce(),errored:ce().default(0),status:k(),parent:ce().nullable()})).default([])})).optional(),roster:Wt(["delta","full"]).optional()}).optional(),procIndex:me({jobs:ce(),feeds:ce()}).optional(),warmupFailures:at(me({label:k(),message:k()})).optional()}),u_=me({type:pt("promptline"),context:d_}),h_=me({type:pt("pipe"),pipeId:k(),command:k(),input:k()}),f_=me({type:pt("shell"),shellId:k(),command:k()}),p_=me({type:pt("edit"),editId:k(),content:k(),extension:k().optional(),path:k().optional()}),m_=me({type:pt("deliver"),deliverId:k(),path:k(),filename:k(),destination:k().optional(),size:ce().nonnegative().optional(),contentType:k().optional()}),g_=me({type:pt("telemetry"),index:me({jobs:ce(),feeds:ce()}),lane:me({running:me({line:k(),sinceMs:ce(),surface:k()}).nullable(),waiting:ce()}).optional(),surfaces:at(me({id:k(),kind:Wt(["chell","browser"])})).optional(),cube:me({msPerPage:ce(),samples:ce()}).optional(),state:me({running:ce(),runningFeeds:ce(),scheduled:ce(),errored:ce(),erroredFeeds:ce()}).optional()}),um=om("type",[qb,Xb,Kb,Yb,s_,n_,i_,l_,u_,g_,h_,f_,p_,m_,dm,Vb,Fb,$b,Hb]);new Set(um.options.map(n=>n.shape.type.value));function M_(n){return n.issues.map(e=>{const t=e.path.join(".");return t?`${t}: ${e.message}`:e.message}).join("; ")}function b_(n,e){const t=n.safeParse(e);return t.success?{ok:!0,value:t.data}:{ok:!1,error:M_(t.error)}}function __(n){return b_(um,n)}const hm=me({id:k(),label:k(),parentIds:at(k()),joinParentIds:at(k())}),z_=me({name:k(),value:Zd()}),w_=hm.extend({pluginName:k(),pluginVersion:k().optional(),arguments:at(z_).optional()}),Qd=me({name:k(),pipelineId:ce().optional(),nodes:at(w_)}),y_=["created","waiting","scheduled","started","registeringFiles","finishedSuccessfully","finishedWithError","cancelled","unknown"],fm=Wt(y_).catch("unknown"),v_=me({count:ce(),done:ce(),error:ce(),running:ce(),other:ce(),anomalies:at(me({id:k(),status:fm})).optional()}),O_=me({computeSeconds:ce().optional(),dataBytes:ce().optional()}),x_=hm.extend({instanceId:ce(),pluginName:k(),pluginVersion:k().optional(),status:fm,vfsPath:k(),metrics:O_.optional(),tally:v_.optional(),computeResource:k().optional()}),Lc=me({feedId:ce(),feedName:k(),nodes:at(x_)}),S_=me({feedId:ce(),loaded:ce(),total:ce(),failed:k().optional()}),Vn={pipelineDiagram:"pipeline.diagram",feedDag:"feed.dag",feedIndexing:"feed.indexing"},E_=me({id:ce(),title:k(),owner:k(),status:k(),createdAt:k(),sizeBytes:ce().optional(),wallSeconds:ce().optional(),jobsDone:ce().optional(),jobsTotal:ce().optional(),jobsErrored:ce().optional(),tags:at(k()).optional()}),pm=me({feeds:at(E_)}),mm="feed.list",A_=me({plugin:k(),count:ce(),errored:ce().default(0),status:k(),parent:ce().nullable()}),D_=me({format:Wt(["dicom","nifti","mgz","jpeg","png","other","unknown"]),modality:k().optional(),seriesDescription:k().optional(),reason:k().optional(),sourceFeed:ce().optional()}),T_=me({id:ce(),title:k().default(""),jobs:ce(),status:k(),chain:at(k()),groups:at(A_).default([]),createdAt:k().default(""),data:D_.optional()}),gm=me({feeds:at(T_),whole:Nt()}),Mm="proc.universe",I_=me({name:k(),positions:mb(k(),lm([ce(),ce(),ce()])).nullable(),writtenAt:k().nullable(),laying:me({nodes:ce(),fraction:ce()}).nullable().optional()}),G_="proc.layout",R_=me({name:k(),type:k(),optional:Nt(),default:Zd().optional(),help:k().optional(),flag:k()}),B_=me({id:ce().optional(),name:k(),version:k(),type:k(),title:k().optional(),description:k().optional(),authors:k().optional(),documentation:k().optional(),category:k().optional(),parameters:at(R_),command:k().optional()}),N_="plugin.info",C_=me({seriesUID:k(),description:k(),modality:k(),fileCount:ce().optional(),vfsPath:k().optional(),pulled:Nt().optional(),pulledFiles:ce().optional(),folderPath:k().optional()}),P_=me({studyUID:k().optional(),server:k().optional(),vfsPath:k().optional(),description:k(),patientName:k(),patientId:k(),date:k(),modalities:k(),accession:k(),series:at(C_)}),bm=me({replayed:Nt(),answeredAt:k()}),L_=["found","none","unasked"],W_=Wt(L_).catch("unasked"),k_=me({patientId:k(),server:k().optional(),patientName:k().optional(),status:W_,studyCount:ce(),seriesCount:ce(),queryId:ce().optional(),provenance:bm.optional(),error:k().optional()}),U_=me({queryId:ce(),vfsPath:k(),pacsName:k(),expression:k(),studies:at(P_),provenance:bm.optional(),patients:at(k_).optional()}),F_=me({id:ce(),identifier:k(),active:Nt()}),j_=me({servers:at(F_)}),$_="pacs.servers",V_="pacs.query";function H_(n){return`pacs:patient:${n.server??"-"}:${n.patientId}`}const q_=["patient","study","series","image","equipment","meta","private","other"],_m=Wt(q_).catch("other"),zm=gb(()=>me({tag:k(),name:k(),vr:k(),value:k(),group:_m,phi:Nt(),decoded:k().optional(),items:at(at(zm)).optional()})),X_=me({tag:k(),name:k(),vr:k(),group:_m,phi:Nt(),distinct:ce(),first:k(),last:k(),values:at(me({path:k(),value:k().nullable()}))}),sh=me({path:k(),subject:Wt(["file","folder"]),read:ce(),of:ce(),refused:at(k()),constant:at(zm),varying:at(X_)}),K_=me({rows:ce(),columns:ce(),pixelSpacing:lm([ce(),ce()]).optional(),sliceThickness:ce().optional(),spacingBetweenSlices:ce().optional()}),nh=me({path:k(),seriesInstanceUID:k().optional(),studyInstanceUID:k().optional(),modality:k(),seriesDescription:k(),seriesNumber:ce().optional(),instances:ce(),frames:ce(),order:Wt(["filename","unknown"]),geometry:K_.optional(),transferSyntax:me({uid:k(),name:k().optional()}).optional(),bytes:ce(),header:k(),files:at(k()),annotations:at(k())}),Da={tags:"dicom.tags",series:"dicom.series"},Y_=me({path:k(),target:Wt(["series","volume"]),force:Nt().optional(),startAt:ce().int().positive().optional()}),Z_={view:"image.view"},Q_=me({state:Wt(["cold","warming","current"]),loaded:ce(),total:ce()});me({user:k(),surface:k(),feeds:me({total:ce(),own:ce(),shared:ce(),public:ce()}),jobs:me({total:ce(),finished:ce(),errored:ce(),cancelled:ce(),running:ce(),scheduled:ce()}),failureRate:ce().nullable(),index:Q_,fortune:k()});function ns(n){return n.groups.map(e=>`${e.parent??"r"}:${e.plugin}`).join(">")}function Hn(n,e){return`feed:${n}:${e}`}function wm(n){return`shape:${n}`}function xr(n){return Math.log2(Math.max(1,n)+1)}function Jd(n){if(!(n.errored<=0||n.count<=0))return Math.min(1,n.errored/n.count)}function va(n,e="jobs"){const t=[],s=new Set,i=[...n].sort((a,o)=>a.id-o.id),r=new Map;for(const a of i){if(a.groups.length===0)continue;const o=ns(a);r.set(o,(r.get(o)??0)+1)}for(const a of i){if(a.groups.length===0)continue;const o=ns(a),l=wm(o);s.has(o)||(s.add(o),t.push({id:l,label:dl(o),parentIds:[],joinParentIds:[],ghost:!0,halo:!0,metric:1,count:r.get(o)??1})),a.groups.forEach((c,d)=>{const u=Jd(c);t.push({id:Hn(a.id,d),label:c.plugin,parentIds:[c.parent===null?l:Hn(a.id,c.parent)],joinParentIds:[],status:c.status,metric:e==="jobs"?xr(c.count):1,...c.count>1?{count:c.count}:{},...u!==void 0?{share:u}:{}})})}return{nodes:t}}const Wc="plugin:";function J_(n){return`${Wc}${n}`}function kc(n){return n.startsWith(Wc)?n.slice(Wc.length):null}function eu(n,e="jobs"){const t=[],s=new Map,i=[...n].sort((r,a)=>r.id-a.id);for(const r of i)if(r.groups.length!==0){for(const a of new Set(r.groups.map(o=>o.plugin)))s.set(a,(s.get(a)??0)+1);r.groups.forEach((a,o)=>{const l=Jd(a);t.push({id:Hn(r.id,o),label:a.plugin,parentIds:a.parent===null?[]:[Hn(r.id,a.parent)],joinParentIds:[],status:a.status,metric:e==="jobs"?xr(a.count):1,attrs:{plugin:a.plugin},...a.count>1?{count:a.count}:{},...l!==void 0?{share:l}:{}})})}for(const[r,a]of[...s].sort((o,l)=>o[0]<l[0]?-1:1))t.push({id:J_(r),label:r,parentIds:[],joinParentIds:[],metric:1+Math.log(a),hue:"#e8f4ff",ring:!0,attrs:{kind:"star",plugin:r}});return{nodes:t}}function ih(n,e="jobs"){const t=new Map;for(const i of n){const r=i.createdAt===void 0?Number.NaN:Date.parse(i.createdAt);Number.isFinite(r)&&t.set(i.id,r)}return{nodes:eu(n,e).nodes.filter(i=>i.attrs?.kind!=="star").map(i=>{const r=t.get(Number(i.id.split(":")[1]));return r===void 0?i:{...i,attrs:{...i.attrs,createdAt:r}}})}}function dl(n){const e=[];for(const t of n.split(">")){const s=t.slice(t.indexOf(":")+1);s.length>0&&!e.includes(s)&&e.push(s)}return e.join(" > ")}const e0=.5,t0=5,s0=.02,Uc="data:",n0={dicom:"DICOM",nifti:"NIfTI",mgz:"MGZ",jpeg:"JPEG",png:"PNG",other:"OTHER",unknown:"UNREADABLE",unread:"NOT YET READ"};function i0(n){const e=n.toUpperCase().replace(/[_\-.,/\\()[\]:;+]+/g," ").split(/\s+/).filter(t=>t.length>0).filter(t=>!/^\d+$/.test(t)).filter(t=>!/^\d+X\d+$/.test(t)).filter(t=>!/^FOV\d*$/.test(t)).filter(t=>!/^\d+(\.\d+)?(MM|CM)$/.test(t));return[...new Set(e)]}function r0(n,e){if(n.length===0||e.length===0)return 0;const t=new Set(n);return e.filter(i=>t.has(i)).length/Math.min(n.length,e.length)}function ym(n){const e=new Map;for(const r of n)e.set(r,(e.get(r)??0)+1);const t=[...e.keys()].sort((r,a)=>(e.get(a)??0)-(e.get(r)??0)||(r<a?-1:1)),s=[],i=new Map;for(const r of t){const a=i0(r),o=a.length===0?void 0:s.find(l=>r0(l.words,a)>=e0);if(o!==void 0){i.set(r,o.name);continue}s.push({name:r,words:a}),i.set(r,r)}return i}function vm(n,e){const t=n.data?.format??"unread",s=[{key:t,label:n0[t]??t.toUpperCase()}];if(t!=="dicom")return s;const i=n.data?.modality??"NO MODALITY";s.push({key:`${t}/${i}`,label:i});const r=n.data?.seriesDescription,a=r===void 0?"NO DESCRIPTION":e.get(r)??r;return s.push({key:`${t}/${i}/${a}`,label:a}),s}function Sl(n){return`${Uc}${n}`}function Fc(n){return n.startsWith(Uc)?n.slice(Uc.length):null}function rh(n,e="jobs"){const t=[...n].filter(d=>d.groups.length>0).sort((d,u)=>d.id-u.id),s=ym(t.map(d=>d.data?.seriesDescription).filter(d=>d!==void 0)),i=new Map,r=[];for(const d of t){const u=vm(d,s);let h=null;for(const f of u){const b=i.get(f.key);b===void 0?i.set(f.key,{label:f.label,feeds:1,parent:h}):b.feeds+=1,h=f.key}const p=Sl(h);d.groups.forEach((f,b)=>{const g=Jd(f);r.push({id:Hn(d.id,b),label:f.plugin,parentIds:[f.parent===null?p:Hn(d.id,f.parent)],joinParentIds:[],status:f.status,metric:e==="jobs"?xr(f.count):1,...f.count>1?{count:f.count}:{},...g!==void 0?{share:g}:{}})})}const a=new Map;for(const d of t){const u=d.groups.findIndex(h=>h.parent===null);u>=0&&a.set(d.id,Hn(d.id,u))}const o=new Map(r.map(d=>[d.id,d]));for(const d of t){const u=d.data?.sourceFeed,h=u===void 0||u===d.id?void 0:a.get(u),p=a.get(d.id);if(h===void 0||p===void 0)continue;const f=o.get(p);f!==void 0&&(f.joinParentIds=[...f.joinParentIds,h],f.joinFaint=!0)}const l=(d,u)=>d.split("/").length<3||u>=Math.max(t0,s0*t.length);return{graph:{nodes:[...[...i].map(([d,u])=>({id:Sl(d),label:u.label,parentIds:u.parent===null?[]:[Sl(u.parent)],joinParentIds:[],ghost:!0,halo:!0,metric:1,count:u.feeds,...l(d,u.feeds)?{caption:`${u.label} · ${u.feeds.toLocaleString("en-US")}`}:{}})),...r]},hubs:new Map([...i].map(([d,u])=>[d,{label:u.label,feeds:u.feeds}]))}}function a0(n,e){const t=Fc(n);if(t===null)return null;const s=t.split("/"),i=s.map((a,o)=>e.get(s.slice(0,o+1).join("/"))?.label??s[o]??""),r=e.get(t)?.feeds??0;return`${i.join(" · ")} · ${r.toLocaleString("en-US")} feed${r===1?"":"s"}`}const jc=12,o0=240;function l0(n){return n<=o0?jc:void 0}function $c(n,e){return`fold:${n}:${e}`}function Om(n){const e=n.match(/^fold:(.+):\d+$/);return e===null?null:e[1]}function c0(n){const e=n.match(/^feed:(\d+):/);if(e!==null)return`feed:${e[1]}`;const t=Om(n);return t===null?null:`fold:${t}`}const d0=me({at:ce(),method:k(),family:k(),path:k(),status:ce(),ms:ce()}),u0=me({family:k(),count:ce(),ms:ce()});me({since:k(),total:ce(),ms:ce(),families:at(u0),last:at(d0)});const xm=24,Vc="argus.dormant";class h0{constructor(e=xm,t){this.cap=e,this.store=t,this.rehydrate()}cap;store;groups=new Map;add(e){for(this.groups.delete(e.id),this.groups.set(e.id,e);this.groups.size>this.cap;){const t=this.oldest_id();if(t===void 0)break;this.groups.delete(t)}this.persist()}list(){return[...this.groups.values()].sort((e,t)=>t.lastTouched-e.lastTouched)}get(e){return this.groups.get(e)}has(e){return this.groups.has(e)}dismiss(e){const t=this.groups.delete(e);return t&&this.persist(),t}oldest_id(){let e;for(const t of this.groups.values())(e===void 0||t.lastTouched<e.lastTouched)&&(e=t);return e?.id}persist(){if(this.store!==void 0)try{this.store.setItem(Vc,JSON.stringify([...this.groups.values()]))}catch{}}rehydrate(){if(this.store!==void 0)try{const e=this.store.getItem(Vc);if(e===null)return;const t=JSON.parse(e);if(!Array.isArray(t))return;for(const s of t)s!==null&&typeof s=="object"&&typeof s.id=="string"&&this.groups.set(s.id,s)}catch{}}}function ah(){try{const n=globalThis.localStorage;return n===void 0?void 0:(n.getItem(Vc),n)}catch{return}}class f0{constructor(e,t){this.host=t,this.grid=e.querySelector(".panes-grid"),this.empty=e.querySelector(".panes-empty"),this.grid.addEventListener("click",this.click_handle)}host;grid;empty;render(){const e=this.host.list();this.empty.hidden=e.length>0,this.grid.replaceChildren(...e.map(t=>this.card_build(t)))}card_build(e){const t=document.createElement("button");t.className="panes-card",t.dataset.restore=e.id,t.title=`restore ${e.label}`;const s=document.createElement("span");if(s.className="panes-card-figure",e.thumbnail!==void 0){const o=document.createElement("img");o.src=e.thumbnail,o.alt="",s.appendChild(o)}else s.classList.add("panes-card-glyph"),s.textContent=e.members.includes("files")&&!e.members.includes("viewer")?"▤":"▣";t.appendChild(s);const i=document.createElement("span");i.className="panes-card-label",i.textContent=e.label,t.appendChild(i);const r=document.createElement("span");r.className="panes-card-badges";for(const o of p0(e.members)){const l=document.createElement("span");l.className="panes-card-badge",l.textContent=o.toUpperCase(),r.appendChild(l)}t.appendChild(r);const a=document.createElement("button");return a.className="panes-card-dismiss",a.dataset.dismiss=e.id,a.title=`forget ${e.label}`,a.textContent="DISMISS",t.appendChild(a),t}click_handle=e=>{const t=e.target,s=t.closest("[data-dismiss]");if(s!==null){e.stopPropagation();const r=s.dataset.dismiss??"";this.host.dismiss(r),this.render();return}const i=t.closest("[data-restore]");i!==null&&this.host.restore(i.dataset.restore??"")}}function p0(n){return[...new Set(n)]}const m0="G1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtChtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjswOzE7Mm0gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjsxOzI7Mm0gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbQobWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsxOzFtIBtbMG0bWzM4OzI7MTsyOzNtIBtbMG0bWzM4OzI7MTsyOzNtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7NTsxMDsxNG0gG1swbRtbMzg7Mjs5OzE4OzI0bSAbWzBtG1szODsyOzU7MTA7MTNtIBtbMG0bWzM4OzI7MTQ7Mjc7MzdtIBtbMG0bWzM4OzI7Mzs3OzltIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MTsyOzJtIBtbMG0bWzM4OzI7MTsyOzNtIBtbMG0bWzM4OzI7MTsyOzJtIBtbMG0bWzM4OzI7MDsxOzFtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsybSAbWzBtG1szODsyOzE7MjszbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzk7MTc7MjRtIBtbMG0bWzM4OzI7MjM7NDU7NjJtLhtbMG0bWzM4OzI7NDE7Nzk7MTA5bTobWzBtG1szODsyOzU5OzExMzsxNTVtPRtbMG0bWzM4OzI7NzU7MTQ0OzE5NW0rG1swbRtbMzg7Mjs3NjsxNDQ7MTkzbSsbWzBtG1szODsyOzE0OzI3OzM3bSAbWzBtG1szODsyOzc1OzE0MjsxODltKxtbMG0bWzM4OzI7Nzc7MTQ1OzE5Mm0rG1swbRtbMzg7Mjs2NzsxMjY7MTY1bT0bWzBtG1szODsyOzU1OzEwMjsxMzRtLRtbMG0bWzM4OzI7NDE7Nzc7MTAwbTobWzBtG1szODsyOzI3OzUxOzY2bS4bWzBtG1szODsyOzE0OzI3OzM1bSAbWzBtG1szODsyOzQ7ODsxMW0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxOzI7Mm0gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbQobWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsxOzJtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7Mjs1OzhtIBtbMG0bWzM4OzI7MTQ7Mjc7MzltIBtbMG0bWzM4OzI7Mjk7NTc7ODFtOhtbMG0bWzM4OzI7NDU7ODk7MTI3bS0bWzBtG1szODsyOzYxOzEyMDsxNzBtPRtbMG0bWzM4OzI7NzU7MTQ1OzIwM20rG1swbRtbMzg7Mjs3OTsxNTM7MjExbSsbWzBtG1szODsyOzgwOzE1NDsyMTJtKxtbMG0bWzM4OzI7ODE7MTU2OzIxM20rG1swbRtbMzg7Mjs4MjsxNTg7MjEzbSsbWzBtG1szODsyOzg0OzE1OTsyMTRtKxtbMG0bWzM4OzI7Mzg7NzI7OTdtOhtbMG0bWzM4OzI7MzQ7NjU7ODZtOhtbMG0bWzM4OzI7ODc7MTY0OzIxNm0rG1swbRtbMzg7Mjs4OTsxNjY7MjE3bSsbWzBtG1szODsyOzkwOzE2NzsyMThtKxtbMG0bWzM4OzI7OTE7MTY5OzIxOW0rG1swbRtbMzg7Mjs5MjsxNzE7MjE5bSobWzBtG1szODsyOzkyOzE3MjsyMTltKhtbMG0bWzM4OzI7ODU7MTU3OzIwMG0rG1swbRtbMzg7Mjs3NDsxMzc7MTcybT0bWzBtG1szODsyOzYyOzExMzsxNDFtLRtbMG0bWzM4OzI7NDY7ODQ7MTA1bTobWzBtG1szODsyOzMxOzU3OzcxbTobWzBtG1szODsyOzE3OzMxOzM4bS4bWzBtG1szODsyOzY7MTA7MTNtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzIxOzQzOzY1bS4bWzBtG1szODsyOzM4Ozc2OzExM206G1swbRtbMzg7Mjs0OTs5OTsxNDVtLRtbMG0bWzM4OzI7NjI7MTI0OzE4MW09G1swbRtbMzg7Mjs3MzsxNDQ7MjA4bSsbWzBtG1szODsyOzc0OzE0NjsyMDhtKxtbMG0bWzM4OzI7NzU7MTQ3OzIwOW0rG1swbRtbMzg7Mjs3NjsxNDk7MjEwbSsbWzBtG1szODsyOzc4OzE1MTsyMTFtKxtbMG0bWzM4OzI7Nzg7MTUxOzIwOG0rG1swbRtbMzg7Mjs3ODsxNTE7MjA4bSsbWzBtG1szODsyOzgwOzE1NDsyMTBtKxtbMG0bWzM4OzI7ODE7MTU2OzIxMG0rG1swbRtbMzg7Mjs4MzsxNTc7MjEybSsbWzBtG1szODsyOzc4OzE0OTsxOThtKxtbMG0bWzM4OzI7MTE7MjI7MjltIBtbMG0bWzM4OzI7NzY7MTQ0OzE5MG0rG1swbRtbMzg7Mjs4ODsxNjY7MjE3bSsbWzBtG1szODsyOzg3OzE2MjsyMTJtKxtbMG0bWzM4OzI7ODk7MTY2OzIxNW0rG1swbRtbMzg7Mjs5MDsxNjg7MjE2bSsbWzBtG1szODsyOzkzOzE3MzsyMjBtKhtbMG0bWzM4OzI7OTQ7MTc0OzIyMW0qG1swbRtbMzg7Mjs5NjsxNzY7MjIxbSobWzBtG1szODsyOzk3OzE3ODsyMjJtKhtbMG0bWzM4OzI7OTg7MTc5OzIyM20qG1swbRtbMzg7Mjs5OTsxODE7MjI0bSobWzBtG1szODsyOzEwMTsxODM7MjI0bSobWzBtG1szODsyOzkzOzE2ODsyMDVtKxtbMG0bWzM4OzI7ODE7MTQ4OzE3OW0rG1swbRtbMzg7Mjs2ODsxMjM7MTQ4bT0bWzBtG1szODsyOzUxOzkzOzExMm0tG1swbRtbMzg7MjszNDs2MTs3M206G1swbRtbMzg7MjsyMjs0MDs0N20uG1swbRtbMzg7Mjs5OzE2OzE5bSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtChtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzI7M20gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsyOzU7OG0gG1swbRtbMzg7MjszNzs3NjsxMTVtOhtbMG0bWzM4OzI7Mjg7NTg7ODhtOhtbMG0bWzM4OzI7Mjg7NTY7ODRtOhtbMG0bWzM4OzI7NTM7MTA2OzE1OG0tG1swbRtbMzg7Mjs3MDsxNDE7MjA2bT0bWzBtG1szODsyOzcxOzE0MjsyMDdtKxtbMG0bWzM4OzI7NzM7MTQ0OzIwOG0rG1swbRtbMzg7Mjs3MTsxNDE7MjAybSsbWzBtG1szODsyOzczOzE0NDsyMDRtKxtbMG0bWzM4OzI7NzU7MTQ3OzIwOG0rG1swbRtbMzg7Mjs3NzsxNDk7MjA5bSsbWzBtG1szODsyOzc4OzE1MTsyMDltKxtbMG0bWzM4OzI7Nzk7MTUyOzIxMG0rG1swbRtbMzg7Mjs4MDsxNTU7MjEybSsbWzBtG1szODsyOzgyOzE1ODsyMTNtKxtbMG0bWzM4OzI7ODE7MTU1OzIwOW0rG1swbRtbMzg7Mjs4NTsxNjE7MjE1bSsbWzBtG1szODsyOzQyOzgwOzEwN206G1swbRtbMzg7MjsyODs1Mzs3MG0uG1swbRtbMzg7Mjs3NDsxNDA7MTgzbT0bWzBtG1szODsyOzkwOzE2NzsyMThtKxtbMG0bWzM4OzI7OTA7MTY4OzIxOG0rG1swbRtbMzg7Mjs5MDsxNjg7MjE1bSsbWzBtG1szODsyOzkxOzE3MDsyMTdtKhtbMG0bWzM4OzI7OTI7MTcxOzIxOG0qG1swbRtbMzg7Mjs5NDsxNzM7MjE4bSobWzBtG1szODsyOzk1OzE3NTsyMThtKhtbMG0bWzM4OzI7OTY7MTc2OzIxOW0qG1swbRtbMzg7Mjs5NzsxNzg7MjIxbSobWzBtG1szODsyOzEwMTsxODM7MjI0bSobWzBtG1szODsyOzEwMjsxODQ7MjI1bSobWzBtG1szODsyOzEwMzsxODY7MjI2bSobWzBtG1szODsyOzEwNDsxODg7MjI2bSobWzBtG1szODsyOzEwNTsxODk7MjI3bSobWzBtG1szODsyOzEwNzsxOTE7MjI4bSobWzBtG1szODsyOzk4OzE3NjsyMDltKhtbMG0bWzM4OzI7MjM7NDI7NTBtLhtbMG0bWzM4OzI7NzsxMzsxNm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbQobWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsyOzNtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MTE7MjM7MzVtIBtbMG0bWzM4OzI7NTE7MTA2OzE2M20tG1swbRtbMzg7Mjs2NTsxMzQ7MjAzbT0bWzBtG1szODsyOzY3OzEzNjsyMDRtPRtbMG0bWzM4OzI7NTM7MTA5OzE2Mm0tG1swbRtbMzg7MjsyOTs1OTs4N206G1swbRtbMzg7MjsyMzs0Nzs2OG0uG1swbRtbMzg7Mjs0Mzs4NzsxMjdtLRtbMG0bWzM4OzI7Njk7MTM3OzE5OW09G1swbRtbMzg7Mjs3NDsxNDY7MjA4bSsbWzBtG1szODsyOzc1OzE0NzsyMDltKxtbMG0bWzM4OzI7NzQ7MTQ2OzIwNm0rG1swbRtbMzg7Mjs3ODsxNTE7MjExbSsbWzBtG1szODsyOzc5OzE1MzsyMTFtKxtbMG0bWzM4OzI7ODA7MTU0OzIxMm0rG1swbRtbMzg7Mjs4MTsxNTY7MjEzbSsbWzBtG1szODsyOzgwOzE1NDsyMDhtKxtbMG0bWzM4OzI7ODQ7MTU5OzIxNG0rG1swbRtbMzg7Mjs4MzsxNTc7MjA5bSsbWzBtG1szODsyOzE0OzI2OzM1bSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzQzOzgxOzEwNm06G1swbRtbMzg7Mjs5MTsxNjk7MjE5bSsbWzBtG1szODsyOzkyOzE3MTsyMTltKhtbMG0bWzM4OzI7OTM7MTczOzIyMG0qG1swbRtbMzg7Mjs5NDsxNzQ7MjIxbSobWzBtG1szODsyOzk2OzE3NjsyMjFtKhtbMG0bWzM4OzI7OTU7MTc1OzIxOW0qG1swbRtbMzg7Mjs5NjsxNzY7MjIwbSobWzBtG1szODsyOzk4OzE4MDsyMjNtKhtbMG0bWzM4OzI7MTAwOzE4MjsyMjNtKhtbMG0bWzM4OzI7MTAxOzE4MjsyMjNtKhtbMG0bWzM4OzI7MTAxOzE4MzsyMjJtKhtbMG0bWzM4OzI7MTAwOzE4MTsyMThtKhtbMG0bWzM4OzI7MTA1OzE4OTsyMjdtKhtbMG0bWzM4OzI7ODc7MTU2OzE4Nm0rG1swbRtbMzg7MjsxODszMjszOG0uG1swbRtbMzg7Mjs3NTsxMzQ7MTU4bT0bWzBtG1szODsyOzM3OzY1Ozc3bTobWzBtG1szODsyOzQ3Ozg0Ozk4bTobWzBtG1szODsyOzE1OzI3OzMybSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzE7MzszbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtChtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsyMTs0NTs3MG0uG1swbRtbMzg7Mjs1OTsxMjM7MTkwbT0bWzBtG1szODsyOzY0OzEzMzsyMDNtPRtbMG0bWzM4OzI7NjM7MTMxOzE5OW09G1swbRtbMzg7Mjs2NjsxMzQ7MjAxbT0bWzBtG1szODsyOzY4OzEzODsyMDVtPRtbMG0bWzM4OzI7Njk7MTM5OzIwNm09G1swbRtbMzg7Mjs2MDsxMjI7MTc5bT0bWzBtG1szODsyOzM2OzcyOzEwNW06G1swbRtbMzg7MjsyNDs0ODs2OW0uG1swbRtbMzg7Mjs0MDs3OTsxMTNtOhtbMG0bWzM4OzI7Njc7MTMyOzE4OG09G1swbRtbMzg7Mjs3NjsxNDk7MjEwbSsbWzBtG1szODsyOzc2OzE0ODsyMDdtKxtbMG0bWzM4OzI7Njg7MTMyOzE4Mm09G1swbRtbMzg7Mjs2ODsxMzI7MTgybT0bWzBtG1szODsyOzc4OzE1MDsyMDVtKxtbMG0bWzM4OzI7ODI7MTU4OzIxM20rG1swbRtbMzg7Mjs3NzsxNDY7MTk3bSsbWzBtG1szODsyOzQyOzc5OzEwNm06G1swbRtbMzg7Mjs0Ozg7MTFtIBtbMG0bWzM4OzI7MTszOzRtIBtbMG0bWzM4OzI7NTsxMDsxM20gG1swbRtbMzg7MjsyNjs1MDs2NG0uG1swbRtbMzg7MjszODs3MTs5Mm06G1swbRtbMzg7Mjs0Nzs4NzsxMTJtLRtbMG0bWzM4OzI7NjM7MTE4OzE1MG09G1swbRtbMzg7Mjs4MTsxNTA7MTkxbSsbWzBtG1szODsyOzk2OzE3NjsyMjFtKhtbMG0bWzM4OzI7OTc7MTc4OzIyMm0qG1swbRtbMzg7Mjs5ODsxNzk7MjIzbSobWzBtG1szODsyOzk5OzE4MTsyMjRtKhtbMG0bWzM4OzI7MTAxOzE4MzsyMjRtKhtbMG0bWzM4OzI7MTAyOzE4NDsyMjVtKhtbMG0bWzM4OzI7MTAzOzE4NjsyMjZtKhtbMG0bWzM4OzI7MTA0OzE4ODsyMjdtKhtbMG0bWzM4OzI7Nzc7MTM5OzE2N209G1swbRtbMzg7MjsxNzszMTszN20uG1swbRtbMzg7Mjs3OTsxNDA7MTY3bT0bWzBtG1szODsyOzEwOTsxOTU7MjI5bSobWzBtG1szODsyOzQxOzczOzg2bTobWzBtG1szODsyOzYxOzEwOTsxMjdtLRtbMG0bWzM4OzI7MTAxOzE3NzsyMDZtKhtbMG0bWzM4OzI7MjA7MzY7NDFtLhtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MTszOzNtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzQ7ODsxNG0gG1swbRtbMzg7MjszODs4MTsxMjdtOhtbMG0bWzM4OzI7NjI7MTI5OzIwMW09G1swbRtbMzg7Mjs2MzsxMzE7MjAybT0bWzBtG1szODsyOzYzOzEzMDsyMDBtPRtbMG0bWzM4OzI7NjQ7MTMyOzIwMG09G1swbRtbMzg7Mjs2NTsxMzM7MjAwbT0bWzBtG1szODsyOzY2OzEzNTsyMDBtPRtbMG0bWzM4OzI7Njc7MTM1OzIwMG09G1swbRtbMzg7Mjs3MDsxNDE7MjA2bT0bWzBtG1szODsyOzcxOzE0MjsyMDdtKxtbMG0bWzM4OzI7NjY7MTMyOzE5MG09G1swbRtbMzg7Mjs0Mjs4MzsxMThtOhtbMG0bWzM4OzI7MjY7NTE7NzNtLhtbMG0bWzM4OzI7MzA7NjA7ODVtOhtbMG0bWzM4OzI7MTI7MjQ7MzNtIBtbMG0bWzM4OzI7MTsyOzRtIBtbMG0bWzM4OzI7MTsyOzNtIBtbMG0bWzM4OzI7MTA7MTk7MjZtIBtbMG0bWzM4OzI7MzI7NjE7ODNtOhtbMG0bWzM4OzI7Mjg7NTQ7NzNtLhtbMG0bWzM4OzI7NDg7OTE7MTIybS0bWzBtG1szODsyOzgwOzE1MzsyMDNtKxtbMG0bWzM4OzI7MjU7NDc7NjNtLhtbMG0bWzM4OzI7NDg7OTE7MTE5bS0bWzBtG1szODsyOzkwOzE2NzsyMThtKxtbMG0bWzM4OzI7ODI7MTUzOzE5OG0rG1swbRtbMzg7Mjs2ODsxMjc7MTYzbT0bWzBtG1szODsyOzUyOzk4OzEyNW0tG1swbRtbMzg7Mjs0MTs3Nzs5N206G1swbRtbMzg7MjszOTs3Mjs5MW06G1swbRtbMzg7Mjs0ODs4ODsxMTBtLRtbMG0bWzM4OzI7NjQ7MTE3OzE0Nm09G1swbRtbMzg7Mjs4MzsxNTI7MTg4bSsbWzBtG1szODsyOzEwMTsxODM7MjI0bSobWzBtG1szODsyOzEwMDsxODA7MjIwbSobWzBtG1szODsyOzg4OzE1OTsxOTRtKxtbMG0bWzM4OzI7Njg7MTI0OzE1MG09G1swbRtbMzg7MjsyNjs0Njs1Nm0uG1swbRtbMzg7Mjs5MTsxNjQ7MTk1bSsbWzBtG1szODsyOzEwODsxOTI7MjI5bSobWzBtG1szODsyOzEwODsxOTM7MjI3bSobWzBtG1szODsyOzY3OzExOTsxNDBtPRtbMG0bWzM4OzI7Mzc7NjY7NzdtOhtbMG0bWzM4OzI7MTEzOzE5OTsyMzFtKhtbMG0bWzM4OzI7MTA1OzE4NjsyMTVtKhtbMG0bWzM4OzI7MzU7NjI7NzFtOhtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MTsyOzJtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDsxbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzEzOzI3OzQzbSAbWzBtG1szODsyOzM1Ozc1OzExOG06G1swbRtbMzg7Mjs0Mzs5MTsxNDFtLRtbMG0bWzM4OzI7NTY7MTE2OzE3OW09G1swbRtbMzg7Mjs2NDsxMzI7MjAzbT0bWzBtG1szODsyOzY1OzEzNDsyMDNtPRtbMG0bWzM4OzI7Njc7MTM2OzIwNG09G1swbRtbMzg7Mjs2ODsxMzg7MjA1bT0bWzBtG1szODsyOzY5OzEzOTsyMDZtPRtbMG0bWzM4OzI7NzA7MTQxOzIwNm09G1swbRtbMzg7Mjs3MTsxNDI7MjA3bSsbWzBtG1szODsyOzczOzE0NDsyMDhtKxtbMG0bWzM4OzI7NzQ7MTQ2OzIwOG0rG1swbRtbMzg7Mjs1MjsxMDI7MTQ1bS0bWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzQ4OzkxOzEyM20tG1swbRtbMzg7Mjs4NTsxNjE7MjE1bSsbWzBtG1szODsyOzg2OzE2MzsyMTZtKxtbMG0bWzM4OzI7MzM7NjM7ODNtOhtbMG0bWzM4OzI7NDY7ODc7MTE0bS0bWzBtG1szODsyOzg4OzE2MzsyMTNtKxtbMG0bWzM4OzI7OTE7MTY5OzIxOW0rG1swbRtbMzg7Mjs5MjsxNzE7MjE5bSobWzBtG1szODsyOzkzOzE3MzsyMjBtKhtbMG0bWzM4OzI7OTQ7MTc0OzIyMW0qG1swbRtbMzg7Mjs4OTsxNjQ7MjA2bSsbWzBtG1szODsyOzc0OzEzNjsxNzBtPRtbMG0bWzM4OzI7NTc7MTA0OzEzMG0tG1swbRtbMzg7Mjs0NDs4MDsxMDBtOhtbMG0bWzM4OzI7Mzc7Njg7ODNtOhtbMG0bWzM4OzI7MTg7MzM7NDFtLhtbMG0bWzM4OzI7Mzs2OzdtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7NTU7OTk7MTE5bS0bWzBtG1szODsyOzk4OzE3NjsyMTBtKhtbMG0bWzM4OzI7OTk7MTc3OzIxMW0qG1swbRtbMzg7MjsxMDg7MTk0OzIyOG0qG1swbRtbMzg7Mjs2NTsxMTY7MTM3bT0bWzBtG1szODsyOzE2OzI4OzMzbSAbWzBtG1szODsyOzg0OzE0OTsxNzNtKxtbMG0bWzM4OzI7MTE0OzIwMTsyMzJtIxtbMG0bWzM4OzI7MTE1OzIwMzsyMzNtIxtbMG0bWzM4OzI7NTU7OTc7MTExbS0bWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtChtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MW0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxMTsyNDszOG0gG1swbRtbMzg7Mjs0Mzs5MTsxNDRtLRtbMG0bWzM4OzI7MzM7Njg7MTA3bTobWzBtG1szODsyOzI2OzU1Ozg1bS4bWzBtG1szODsyOzI2OzU1Ozg1bS4bWzBtG1szODsyOzM1OzczOzExMG06G1swbRtbMzg7Mjs0Mjs4NjsxMzBtLRtbMG0bWzM4OzI7MjM7NDc7NjltLhtbMG0bWzM4OzI7MjQ7NDg7NzFtLhtbMG0bWzM4OzI7NDk7OTk7MTQ1bS0bWzBtG1szODsyOzUwOzEwMTsxNDdtLRtbMG0bWzM4OzI7NDI7ODM7MTE5bTobWzBtG1szODsyOzM1OzcwOzEwMW06G1swbRtbMzg7MjsyMDs0MDs1N20uG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxOzI7NG0gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjszMDs1Nzs3OG06G1swbRtbMzg7Mjs4MzsxNTc7MjA5bSsbWzBtG1szODsyOzg2OzE2MzsyMTZtKxtbMG0bWzM4OzI7NDA7NzU7OTltOhtbMG0bWzM4OzI7NDM7ODA7MTA1bTobWzBtG1szODsyOzkwOzE2NzsyMThtKxtbMG0bWzM4OzI7ODk7MTY1OzIxNG0rG1swbRtbMzg7Mjs5MTsxNjk7MjE3bSsbWzBtG1szODsyOzkxOzE3MDsyMTdtKhtbMG0bWzM4OzI7OTM7MTcyOzIxOW0qG1swbRtbMzg7Mjs5NjsxNzY7MjIxbSobWzBtG1szODsyOzk3OzE3ODsyMjJtKhtbMG0bWzM4OzI7OTg7MTc5OzIyM20qG1swbRtbMzg7MjsxMDA7MTgxOzIyNG0qG1swbRtbMzg7Mjs4NTsxNTU7MTg5bSsbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzM7NTs3bSAbWzBtG1szODsyOzM4OzY5OzgzbTobWzBtG1szODsyOzQ5Ozg3OzEwNG0tG1swbRtbMzg7Mjs0Nzs4NDs5OW06G1swbRtbMzg7MjszNTs2Mzs3NG06G1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7Mjs1Mjs5MzsxMDdtLRtbMG0bWzM4OzI7ODg7MTU2OzE4MG0rG1swbRtbMzg7MjsxMDU7MTg1OzIxMm0qG1swbRtbMzg7Mjs2NDsxMTI7MTI3bS0bWzBtG1szODsyOzU7ODsxMG0gG1swbRtbMzg7MjsxOzM7M20gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbQobWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsxOzJtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7Mzk7ODM7MTMxbTobWzBtG1szODsyOzYyOzEyOTsyMDFtPRtbMG0bWzM4OzI7NjM7MTMxOzIwMm09G1swbRtbMzg7Mjs1NzsxMjA7MTgzbT0bWzBtG1szODsyOzQ3Ozk2OzE0NW0tG1swbRtbMzg7MjswOzI7M20gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjszOzc7MTFtIBtbMG0bWzM4OzI7NDE7ODI7MTIwbTobWzBtG1szODsyOzUwOzk5OzE0NG0tG1swbRtbMzg7Mjs1OTsxMTc7MTY4bT0bWzBtG1szODsyOzY4OzEzNDsxOTBtPRtbMG0bWzM4OzI7Mzc7NzM7MTAybTobWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzQ7NzsxMG0gG1swbRtbMzg7MjszMjs2Mjs4NG06G1swbRtbMzg7Mjs0Mjs3OTsxMDdtOhtbMG0bWzM4OzI7MzE7NTk7ODBtOhtbMG0bWzM4OzI7NDQ7ODQ7MTExbTobWzBtG1szODsyOzE4OzM1OzQ2bS4bWzBtG1szODsyOzEyOzIzOzMwbSAbWzBtG1szODsyOzYwOzExMjsxNDdtLRtbMG0bWzM4OzI7OTE7MTY5OzIxOW0rG1swbRtbMzg7Mjs5MDsxNjc7MjE0bSsbWzBtG1szODsyOzkyOzE3MjsyMTltKhtbMG0bWzM4OzI7OTQ7MTc0OzIyMW0qG1swbRtbMzg7Mjs5NTsxNzU7MjIwbSobWzBtG1szODsyOzk1OzE3NDsyMTdtKhtbMG0bWzM4OzI7OTg7MTc5OzIyM20qG1swbRtbMzg7Mjs5NzsxNzY7MjE3bSobWzBtG1szODsyOzM1OzY0Ozc5bTobWzBtG1szODsyOzQ2Ozg0OzEwM206G1swbRtbMzg7Mjs3NzsxNDA7MTcwbT0bWzBtG1szODsyOzg3OzE1ODsxOTBtKxtbMG0bWzM4OzI7MTA1OzE4OTsyMjdtKhtbMG0bWzM4OzI7MTA3OzE5MTsyMjhtKhtbMG0bWzM4OzI7MTA4OzE5MzsyMjltKhtbMG0bWzM4OzI7OTE7MTYyOzE5Mm0rG1swbRtbMzg7MjszMTs1Njs2NW0uG1swbRtbMzg7MjszOzY7N20gG1swbRtbMzg7MjsyNzs0OTs1N20uG1swbRtbMzg7Mjs2NjsxMTc7MTM1bT0bWzBtG1szODsyOzU4OzEwMzsxMThtLRtbMG0bWzM4OzI7NTA7ODg7MTAwbS0bWzBtG1szODsyOzYzOzExMTsxMjZtLRtbMG0bWzM4OzI7MjQ7NDQ7NDltLhtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsxOzFtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzQ7ODsxM20gG1swbRtbMzg7Mjs1NTsxMTU7MTc5bT0bWzBtG1szODsyOzYyOzEyOTsxOTltPRtbMG0bWzM4OzI7NjQ7MTMzOzIwM209G1swbRtbMzg7Mjs2NTsxMzQ7MjAzbT0bWzBtG1szODsyOzUyOzEwNjsxNjBtLRtbMG0bWzM4OzI7MTc7MzU7NTJtLhtbMG0bWzM4OzI7MTE7MjM7MzNtIBtbMG0bWzM4OzI7NTY7MTEzOzE2Nm09G1swbRtbMzg7Mjs3MTsxNDI7MjA3bSsbWzBtG1szODsyOzczOzE0NDsyMDhtKxtbMG0bWzM4OzI7NzQ7MTQ2OzIwOG0rG1swbRtbMzg7Mjs3NTsxNDg7MjA5bSsbWzBtG1szODsyOzMxOzYxOzg3bTobWzBtG1szODsyOzM0OzY2OzkybTobWzBtG1szODsyOzYxOzExODsxNjRtPRtbMG0bWzM4OzI7NTk7MTE0OzE1N209G1swbRtbMzg7Mjs3MjsxNDA7MTkxbT0bWzBtG1szODsyOzgyOzE1ODsyMTNtKxtbMG0bWzM4OzI7ODQ7MTU5OzIxNG0rG1swbRtbMzg7Mjs3OTsxNDk7MTk5bSsbWzBtG1szODsyOzExOzIyOzI5bSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzgyOzE1MjsxOTdtKxtbMG0bWzM4OzI7OTI7MTcxOzIxOW0qG1swbRtbMzg7Mjs5MzsxNzM7MjIwbSobWzBtG1szODsyOzkzOzE3MjsyMTltKhtbMG0bWzM4OzI7OTY7MTc2OzIyMW0qG1swbRtbMzg7Mjs5NzsxNzg7MjIybSobWzBtG1szODsyOzg4OzE2MDsyMDBtKxtbMG0bWzM4OzI7MjM7NDM7NTNtLhtbMG0bWzM4OzI7NTI7OTQ7MTE1bS0bWzBtG1szODsyOzEwMjsxODQ7MjI1bSobWzBtG1szODsyOzEwMzsxODY7MjI2bSobWzBtG1szODsyOzEwNDsxODg7MjI2bSobWzBtG1szODsyOzEwNDsxODc7MjI1bSobWzBtG1szODsyOzEwNjsxODk7MjI2bSobWzBtG1szODsyOzEwODsxOTM7MjI5bSobWzBtG1szODsyOzEwOTsxOTQ7MjI5bSobWzBtG1szODsyOzExMTsxOTY7MjMwbSobWzBtG1szODsyOzM1OzYyOzczbTobWzBtG1szODsyOzY4OzEyMTsxNDFtPRtbMG0bWzM4OzI7MTE0OzIwMTsyMzJtIxtbMG0bWzM4OzI7MTE1OzIwMzsyMzNtIxtbMG0bWzM4OzI7MTE2OzIwNDsyMzRtIxtbMG0bWzM4OzI7Nzg7MTM2OzE1NW09G1swbRtbMzg7MjszMzs1ODs2Nm06G1swbRtbMzg7MjsyMTszNjs0MW0uG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbQobWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsxOzJtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MjI7NDc7NzNtLhtbMG0bWzM4OzI7NjM7MTMxOzIwMm09G1swbRtbMzg7Mjs2MjsxMzA7MTk5bT0bWzBtG1szODsyOzYzOzEzMDsxOThtPRtbMG0bWzM4OzI7Njc7MTM2OzIwNG09G1swbRtbMzg7Mjs0ODs5NzsxNDZtLRtbMG0bWzM4OzI7MTk7NDA7NThtLhtbMG0bWzM4OzI7NzA7MTQxOzIwNm09G1swbRtbMzg7Mjs2OTsxMzg7MjAybT0bWzBtG1szODsyOzcwOzE0MDsyMDJtPRtbMG0bWzM4OzI7NzQ7MTQ2OzIwOG0rG1swbRtbMzg7MjszNTs3MDs5OW06G1swbRtbMzg7MjsyMjs0NDs2MW0uG1swbRtbMzg7Mjs3ODsxNTE7MjExbSsbWzBtG1szODsyOzc5OzE1MzsyMTFtKxtbMG0bWzM4OzI7ODA7MTU0OzIxMm0rG1swbRtbMzg7Mjs4MTsxNTY7MjEzbSsbWzBtG1szODsyOzgxOzE1NjsyMTBtKxtbMG0bWzM4OzI7ODI7MTU1OzIwOW0rG1swbRtbMzg7Mjs4NTsxNjE7MjE1bSsbWzBtG1szODsyOzc0OzE0MDsxODZtPRtbMG0bWzM4OzI7MjU7NDc7NjJtLhtbMG0bWzM4OzI7MTQ7Mjc7MzVtIBtbMG0bWzM4OzI7NDg7ODk7MTE3bS0bWzBtG1szODsyOzMxOzU4Ozc0bTobWzBtG1szODsyOzQ4Ozg5OzExNW0tG1swbRtbMzg7Mjs4MzsxNTQ7MTk2bSsbWzBtG1szODsyOzk0OzE3NDsyMjFtKhtbMG0bWzM4OzI7OTQ7MTczOzIxN20qG1swbRtbMzg7Mjs3OTsxNDU7MTgxbSsbWzBtG1szODsyOzIwOzM3OzQ3bS4bWzBtG1szODsyOzY1OzExNzsxNDVtPRtbMG0bWzM4OzI7MTAxOzE4MzsyMjRtKhtbMG0bWzM4OzI7MTAwOzE4MTsyMjFtKhtbMG0bWzM4OzI7MTAxOzE4MzsyMjNtKhtbMG0bWzM4OzI7MTAzOzE4NjsyMjRtKhtbMG0bWzM4OzI7MTA1OzE4OTsyMjdtKhtbMG0bWzM4OzI7MTA3OzE5MTsyMjhtKhtbMG0bWzM4OzI7MTA4OzE5MzsyMjltKhtbMG0bWzM4OzI7MTA2OzE4OTsyMjNtKhtbMG0bWzM4OzI7MTExOzE5NjsyMzBtKhtbMG0bWzM4OzI7NjU7MTE2OzEzNm09G1swbRtbMzg7Mjs0MDs3Mjs4M206G1swbRtbMzg7MjsxMTQ7MjAxOzIzMm0jG1swbRtbMzg7Mjs5NzsxNzE7MTk3bSobWzBtG1szODsyOzQxOzczOzg0bTobWzBtG1szODsyOzM5OzY5Ozc4bTobWzBtG1szODsyOzEwNTsxODM7MjA3bSobWzBtG1szODsyOzcwOzEyMjsxMzhtPRtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MTszOzNtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsybSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzQ2Ozk3OzE0OW0tG1swbRtbMzg7Mjs2NDsxMzI7MjAzbT0bWzBtG1szODsyOzYyOzEyOTsxOTZtPRtbMG0bWzM4OzI7NjY7MTM0OzIwMW09G1swbRtbMzg7Mjs1NDsxMDk7MTYzbS0bWzBtG1szODsyOzEzOzI2OzM5bSAbWzBtG1szODsyOzY5OzEzOTsyMDNtPRtbMG0bWzM4OzI7Njk7MTM5OzIwM209G1swbRtbMzg7Mjs3MzsxNDQ7MjA4bSsbWzBtG1szODsyOzQ1Ozg5OzEyN20tG1swbRtbMzg7MjsxNjszMTs0NG0uG1swbRtbMzg7Mjs3NDsxNDY7MjA1bSsbWzBtG1szODsyOzc3OzE0OTsyMDhtKxtbMG0bWzM4OzI7Nzc7MTUwOzIwN20rG1swbRtbMzg7Mjs3OTsxNTI7MjA5bSsbWzBtG1szODsyOzgwOzE1NDsyMTFtKxtbMG0bWzM4OzI7ODI7MTU4OzIxM20rG1swbRtbMzg7Mjs4NDsxNTk7MjE0bSsbWzBtG1szODsyOzgzOzE1ODsyMTFtKxtbMG0bWzM4OzI7ODY7MTYzOzIxNm0rG1swbRtbMzg7Mjs1ODsxMDk7MTQ0bS0bWzBtG1szODsyOzI4OzUzOzY4bS4bWzBtG1szODsyOzkwOzE2NzsyMThtKxtbMG0bWzM4OzI7ODU7MTU4OzIwNW0rG1swbRtbMzg7Mjs1NTsxMDM7MTMybS0bWzBtG1szODsyOzI3OzUwOzY0bS4bWzBtG1szODsyOzI1OzQ3OzYwbS4bWzBtG1szODsyOzE2OzI5OzM3bS4bWzBtG1szODsyOzQ7ODsxMW0gG1swbRtbMzg7Mjs2ODsxMjQ7MTU0bT0bWzBtG1szODsyOzk5OzE4MTsyMjRtKhtbMG0bWzM4OzI7OTc7MTc2OzIxNm0qG1swbRtbMzg7MjsxMDE7MTgzOzIyNG0qG1swbRtbMzg7MjsxMDM7MTg2OzIyNm0qG1swbRtbMzg7MjsxMDQ7MTg4OzIyNm0qG1swbRtbMzg7MjsxMDU7MTg5OzIyN20qG1swbRtbMzg7MjsxMDc7MTkxOzIyOG0qG1swbRtbMzg7MjsxMDg7MTkzOzIyOW0qG1swbRtbMzg7MjsxMDc7MTkxOzIyNm0qG1swbRtbMzg7MjsxMDY7MTg5OzIyMW0qG1swbRtbMzg7Mjs1Njs5OTsxMTZtLRtbMG0bWzM4OzI7MTI7MjE7MjVtIBtbMG0bWzM4OzI7NTY7MTAwOzExNW0tG1swbRtbMzg7MjszMjs1Nzs2NW06G1swbRtbMzg7Mjs3NjsxMzQ7MTU0bT0bWzBtG1szODsyOzExNzsyMDY7MjM0bSMbWzBtG1szODsyOzExOTsyMDg7MjM1bSMbWzBtG1szODsyOzg1OzE0OTsxNjhtKxtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsxOzFtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzEwOzIxOzMzbSAbWzBtG1szODsyOzYwOzEyNjsxOTNtPRtbMG0bWzM4OzI7NjU7MTM0OzIwM209G1swbRtbMzg7Mjs2NzsxMzY7MjA0bT0bWzBtG1szODsyOzYxOzEyMzsxODRtPRtbMG0bWzM4OzI7MTE7MjM7MzVtIBtbMG0bWzM4OzI7NjQ7MTI5OzE4OW09G1swbRtbMzg7Mjs3MTsxNDM7MjA3bSsbWzBtG1szODsyOzUzOzEwNTsxNTFtLRtbMG0bWzM4OzI7MTE7MjI7MzFtIBtbMG0bWzM4OzI7Njg7MTM0OzE5MW09G1swbRtbMzg7Mjs3NjsxNDk7MjEwbSsbWzBtG1szODsyOzc3OzE0OTsyMDltKxtbMG0bWzM4OzI7Nzk7MTUzOzIxMW0rG1swbRtbMzg7Mjs4MDsxNTQ7MjEybSsbWzBtG1szODsyOzgxOzE1NjsyMTNtKxtbMG0bWzM4OzI7ODI7MTU4OzIxM20rG1swbRtbMzg7Mjs4NDsxNTk7MjE0bSsbWzBtG1szODsyOzg0OzE1OTsyMTJtKxtbMG0bWzM4OzI7ODU7MTYxOzIxNG0rG1swbRtbMzg7Mjs1NjsxMDY7MTQwbS0bWzBtG1szODsyOzI0OzQ1OzU5bS4bWzBtG1szODsyOzg4OzE2NDsyMTRtKxtbMG0bWzM4OzI7ODk7MTY2OzIxNW0rG1swbRtbMzg7Mjs5MjsxNzE7MjE5bSobWzBtG1szODsyOzcxOzEzMTsxNjhtPRtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7NDY7ODQ7MTA1bTobWzBtG1szODsyOzk4OzE3OTsyMjJtKhtbMG0bWzM4OzI7MTAxOzE4MzsyMjRtKhtbMG0bWzM4OzI7MTAyOzE4NDsyMjVtKhtbMG0bWzM4OzI7MTAxOzE4MzsyMjNtKhtbMG0bWzM4OzI7MTAzOzE4NzsyMjVtKhtbMG0bWzM4OzI7MTA0OzE4ODsyMjZtKhtbMG0bWzM4OzI7MTA2OzE5MDsyMjdtKhtbMG0bWzM4OzI7MTA1OzE4NzsyMjNtKhtbMG0bWzM4OzI7MTA5OzE5NDsyMjltKhtbMG0bWzM4OzI7ODQ7MTQ5OzE3NW0rG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7Mjs2OTsxMjE7MTM5bT0bWzBtG1szODsyOzExNjsyMDQ7MjM0bSMbWzBtG1szODsyOzExNDsxOTk7MjI2bSobWzBtG1szODsyOzExODsyMDc7MjM0bSMbWzBtG1szODsyOzEwNDsxODE7MjA1bSobWzBtG1szODsyOzI7NTs1bSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtChtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxMDsyMjszM20gG1swbRtbMzg7Mjs0Mjs4NzsxMzJtLRtbMG0bWzM4OzI7Njc7MTM2OzIwNG09G1swbRtbMzg7Mjs2ODsxMzg7MjA1bT0bWzBtG1szODsyOzExOzIzOzM1bSAbWzBtG1szODsyOzYyOzEyNTsxODNtPRtbMG0bWzM4OzI7NjE7MTIyOzE3OG09G1swbRtbMzg7Mjs5OzE4OzI1bSAbWzBtG1szODsyOzYxOzEyMTsxNzJtPRtbMG0bWzM4OzI7NzU7MTQ3OzIwOW0rG1swbRtbMzg7Mjs3NTsxNDc7MjA3bSsbWzBtG1szODsyOzc4OzE1MTsyMTFtKxtbMG0bWzM4OzI7Nzk7MTUzOzIxMW0rG1swbRtbMzg7Mjs4MDsxNTQ7MjEybSsbWzBtG1szODsyOzgxOzE1NjsyMTNtKxtbMG0bWzM4OzI7ODI7MTU4OzIxM20rG1swbRtbMzg7Mjs4NDsxNTk7MjE0bSsbWzBtG1szODsyOzg0OzE1OTsyMTJtKxtbMG0bWzM4OzI7ODY7MTYzOzIxNm0rG1swbRtbMzg7Mjs2MDsxMTM7MTQ5bS0bWzBtG1szODsyOzIyOzQyOzU1bS4bWzBtG1szODsyOzg5OzE2NjsyMTdtKxtbMG0bWzM4OzI7ODk7MTY2OzIxNW0rG1swbRtbMzg7Mjs5MjsxNzE7MjE5bSobWzBtG1szODsyOzQyOzc4OzEwMG06G1swbRtbMzg7MjsyOTs1Mzs2N20uG1swbRtbMzg7Mjs1Mzs5NzsxMjJtLRtbMG0bWzM4OzI7NjU7MTIwOzE0OW09G1swbRtbMzg7Mjs0Nzs4NzsxMDhtLRtbMG0bWzM4OzI7MzQ7NjI7NzdtOhtbMG0bWzM4OzI7NjE7MTExOzEzNm0tG1swbRtbMzg7Mjs5NjsxNzM7MjExbSobWzBtG1szODsyOzEwMzsxODY7MjI2bSobWzBtG1szODsyOzEwNDsxODg7MjI2bSobWzBtG1szODsyOzEwNTsxODk7MjI3bSobWzBtG1szODsyOzEwNzsxOTE7MjI4bSobWzBtG1szODsyOzEwODsxOTI7MjI5bSobWzBtG1szODsyOzEwMzsxODQ7MjE4bSobWzBtG1szODsyOzQyOzc2Ozg5bTobWzBtG1szODsyOzI1OzQ1OzUybS4bWzBtG1szODsyOzc7MTQ7MTZtIBtbMG0bWzM4OzI7Mzg7Njc7NzhtOhtbMG0bWzM4OzI7MTAyOzE4MDsyMDdtKhtbMG0bWzM4OzI7MTE0OzIwMDsyMzBtKhtbMG0bWzM4OzI7MTE3OzIwNDsyMzJtIxtbMG0bWzM4OzI7MTE4OzIwNzsyMzRtIxtbMG0bWzM4OzI7MTE1OzIwMDsyMjZtKhtbMG0bWzM4OzI7MTQ7MjU7MjhtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsxOzFtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzE1OzMyOzQ4bS4bWzBtG1szODsyOzUxOzEwNDsxNTVtLRtbMG0bWzM4OzI7MTg7Mzc7NTVtLhtbMG0bWzM4OzI7NDU7OTE7MTMzbS0bWzBtG1szODsyOzE1OzMxOzQ2bS4bWzBtG1szODsyOzUwOzEwMDsxNDRtLRtbMG0bWzM4OzI7NzQ7MTQ2OzIwOG0rG1swbRtbMzg7Mjs3MzsxNDQ7MjA1bSsbWzBtG1szODsyOzc2OzE0OTsyMTBtKxtbMG0bWzM4OzI7Nzg7MTUxOzIxMW0rG1swbRtbMzg7Mjs3OTsxNTM7MjExbSsbWzBtG1szODsyOzgwOzE1NDsyMTJtKxtbMG0bWzM4OzI7ODE7MTU2OzIxM20rG1swbRtbMzg7Mjs4MjsxNTg7MjEzbSsbWzBtG1szODsyOzg0OzE1OTsyMTRtKxtbMG0bWzM4OzI7ODQ7MTU5OzIxMm0rG1swbRtbMzg7Mjs4NjsxNjM7MjE2bSsbWzBtG1szODsyOzYyOzExNzsxNTRtPRtbMG0bWzM4OzI7MjA7Mzc7NDltLhtbMG0bWzM4OzI7OTA7MTY3OzIxOG0rG1swbRtbMzg7Mjs5MDsxNjg7MjE4bSsbWzBtG1szODsyOzMyOzU5Ozc2bTobWzBtG1szODsyOzM0OzYzOzgxbTobWzBtG1szODsyOzk0OzE3NDsyMjFtKhtbMG0bWzM4OzI7OTY7MTc2OzIyMW0qG1swbRtbMzg7Mjs5NzsxNzg7MjIybSobWzBtG1szODsyOzk4OzE3OTsyMjNtKhtbMG0bWzM4OzI7ODc7MTU5OzE5N20rG1swbRtbMzg7Mjs1Mzs5NzsxMTltLRtbMG0bWzM4OzI7MzQ7NjE7NzVtOhtbMG0bWzM4OzI7NTI7OTU7MTE2bS0bWzBtG1szODsyOzkzOzE2ODsyMDNtKxtbMG0bWzM4OzI7OTc7MTc0OzIxMG0qG1swbRtbMzg7Mjs5NTsxNzA7MjAzbSsbWzBtG1szODsyOzgwOzE0MzsxNzBtKxtbMG0bWzM4OzI7MjY7NDc7NTVtLhtbMG0bWzM4OzI7NTk7MTA2OzEyNW0tG1swbRtbMzg7MjsxMTI7MTk4OzIzMW0qG1swbRtbMzg7MjszMDs1NDs2M20uG1swbRtbMzg7Mjs4MDsxNDI7MTY0bT0bWzBtG1szODsyOzExNTsyMDM7MjMzbSMbWzBtG1szODsyOzExMzsxOTk7MjI4bSobWzBtG1szODsyOzExNjsyMDM7MjMxbSMbWzBtG1szODsyOzExOTsyMDg7MjM1bSMbWzBtG1szODsyOzEyMDsyMDk7MjM2bSMbWzBtG1szODsyOzM3OzY0OzcybTobWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzE7MjsybSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtChtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjswOzE7Mm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7Mjs1OzEwOzE1bSAbWzBtG1szODsyOzM7Njs5bSAbWzBtG1szODsyOzQ1OzkyOzEzM20tG1swbRtbMzg7Mjs3MzsxNDQ7MjA4bSsbWzBtG1szODsyOzc0OzE0NjsyMDhtKxtbMG0bWzM4OzI7NzQ7MTQ2OzIwOG0rG1swbRtbMzg7Mjs3NDsxNDY7MjA2bSsbWzBtG1szODsyOzc3OzE0OTsyMDltKxtbMG0bWzM4OzI7Nzg7MTUyOzIxMG0rG1swbRtbMzg7Mjs3OTsxNTM7MjExbSsbWzBtG1szODsyOzgwOzE1NDsyMTFtKxtbMG0bWzM4OzI7ODE7MTU2OzIxMW0rG1swbRtbMzg7Mjs4MzsxNTc7MjExbSsbWzBtG1szODsyOzgzOzE1NzsyMDltKxtbMG0bWzM4OzI7ODU7MTYyOzIxNW0rG1swbRtbMzg7Mjs2OTsxMzE7MTcybT0bWzBtG1szODsyOzIyOzQxOzU0bS4bWzBtG1szODsyOzg1OzE1OTsyMDdtKxtbMG0bWzM4OzI7MjM7NDQ7NTdtLhtbMG0bWzM4OzI7NDM7ODE7MTAzbTobWzBtG1szODsyOzkzOzE3MjsyMjBtKhtbMG0bWzM4OzI7OTM7MTcyOzIxOW0qG1swbRtbMzg7Mjs5NDsxNzM7MjE3bSobWzBtG1szODsyOzk1OzE3NTsyMTltKhtbMG0bWzM4OzI7OTY7MTc2OzIyMG0qG1swbRtbMzg7Mjs5OTsxODE7MjI0bSobWzBtG1szODsyOzEwMTsxODM7MjI0bSobWzBtG1szODsyOzk2OzE3MzsyMTFtKhtbMG0bWzM4OzI7NjQ7MTE2OzE0MW09G1swbRtbMzg7MjsyMzs0Mjs1MW0uG1swbRtbMzg7Mjs5OzE3OzIwbSAbWzBtG1szODsyOzU7OTsxMW0gG1swbRtbMzg7Mjs1OzEwOzEybSAbWzBtG1szODsyOzk3OzE3MjsyMDNtKhtbMG0bWzM4OzI7MTEwOzE5NjsyMzBtKhtbMG0bWzM4OzI7MTEyOzE5ODsyMzFtKhtbMG0bWzM4OzI7NDM7NzY7ODhtOhtbMG0bWzM4OzI7NjE7MTA3OzEyNG0tG1swbRtbMzg7MjsxMTU7MjAyOzIzM20jG1swbRtbMzg7MjsxMTY7MjA0OzIzNG0jG1swbRtbMzg7MjsxMTg7MjA2OzIzNG0jG1swbRtbMzg7MjsxMDk7MTkxOzIxNm0qG1swbRtbMzg7Mjs3NjsxMzI7MTQ5bT0bWzBtG1szODsyOzE4OzMzOzM3bS4bWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtChtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzE7Mm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxNzszNDs1MG0uG1swbRtbMzg7MjszNzs3NDsxMDdtOhtbMG0bWzM4OzI7NjE7MTIxOzE3Mm09G1swbRtbMzg7Mjs3NTsxNDc7MjA5bSsbWzBtG1szODsyOzc2OzE0OTsyMTBtKxtbMG0bWzM4OzI7Nzg7MTUxOzIxMW0rG1swbRtbMzg7Mjs3OTsxNTM7MjExbSsbWzBtG1szODsyOzgwOzE1NDsyMTJtKxtbMG0bWzM4OzI7ODE7MTU2OzIxM20rG1swbRtbMzg7Mjs4MjsxNTg7MjEzbSsbWzBtG1szODsyOzg0OzE1OTsyMTRtKxtbMG0bWzM4OzI7ODU7MTYxOzIxNW0rG1swbRtbMzg7Mjs4NjsxNjM7MjE2bSsbWzBtG1szODsyOzQ2Ozg4OzExNm0tG1swbRtbMzg7MjsxMjsyMzszMG0gG1swbRtbMzg7MjsxOTszNzs0OG0uG1swbRtbMzg7Mjs1NDsxMDI7MTMybS0bWzBtG1szODsyOzkyOzE3MTsyMTltKhtbMG0bWzM4OzI7OTA7MTY4OzIxM20rG1swbRtbMzg7Mjs5MzsxNzI7MjE5bSobWzBtG1szODsyOzk2OzE3NjsyMjFtKhtbMG0bWzM4OzI7OTY7MTc3OzIyMW0qG1swbRtbMzg7Mjs5NzsxNzg7MjIybSobWzBtG1szODsyOzk3OzE3ODsyMjFtKhtbMG0bWzM4OzI7OTg7MTc4OzIxOG0qG1swbRtbMzg7MjsxMDI7MTg0OzIyNW0qG1swbRtbMzg7MjsxMDM7MTg2OzIyNm0qG1swbRtbMzg7MjsxOTszNjs0M20uG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxMDsxODsyMW0gG1swbRtbMzg7Mjs1NDs5NzsxMTRtLRtbMG0bWzM4OzI7Nzg7MTM5OzE2M209G1swbRtbMzg7MjsxMDg7MTkxOzIyM20qG1swbRtbMzg7Mjs1MDs5MDsxMDVtLRtbMG0bWzM4OzI7Mzg7Njg7NzhtOhtbMG0bWzM4OzI7MTA3OzE4OTsyMThtKhtbMG0bWzM4OzI7ODU7MTUwOzE3Mm0rG1swbRtbMzg7Mjs0Njs4MDs5MW06G1swbRtbMzg7MjsxMTsxOTsyMm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbQobWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsxOzJtIBtbMG0bWzM4OzI7MTc7MzQ7NDltLhtbMG0bWzM4OzI7NDI7ODI7MTE2bTobWzBtG1szODsyOzY2OzEyOTsxODFtPRtbMG0bWzM4OzI7Nzg7MTUxOzIwOG0rG1swbRtbMzg7Mjs3NjsxNDY7MjAybSsbWzBtG1szODsyOzcxOzEzODsxODhtPRtbMG0bWzM4OzI7NjY7MTI4OzE3NG09G1swbRtbMzg7Mjs1OTsxMTQ7MTU0bT0bWzBtG1szODsyOzUzOzEwMTsxMzVtLRtbMG0bWzM4OzI7MzI7NjA7ODBtOhtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7NjM7MTE4OzE1Mm09G1swbRtbMzg7Mjs5MjsxNzE7MjE5bSobWzBtG1szODsyOzkzOzE3MzsyMjBtKhtbMG0bWzM4OzI7OTQ7MTc0OzIyMW0qG1swbRtbMzg7Mjs5NTsxNzQ7MjE5bSobWzBtG1szODsyOzk3OzE3ODsyMjJtKhtbMG0bWzM4OzI7OTg7MTc5OzIyM20qG1swbRtbMzg7Mjs5OTsxODE7MjI0bSobWzBtG1szODsyOzEwMTsxODM7MjI0bSobWzBtG1szODsyOzY3OzEyMTsxNDltPRtbMG0bWzM4OzI7Mjc7NTA7NjFtLhtbMG0bWzM4OzI7NTc7MTA0OzEyNm0tG1swbRtbMzg7Mjs4MDsxNDU7MTc0bSsbWzBtG1szODsyOzc2OzEzNzsxNjNtPRtbMG0bWzM4OzI7OTk7MTc3OzIxMG0qG1swbRtbMzg7Mjs4MDsxNDM7MTY4bT0bWzBtG1szODsyOzU1Ozk4OzExNW0tG1swbRtbMzg7MjsyMjs0MDs0Nm0uG1swbRtbMzg7Mjs0Ozc7OW0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7Mjs5OzE2OzE5bSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzE7MjsybSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtChtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsyOzQ7NW0gG1swbRtbMzg7MjsxMjsyMzszMm0gG1swbRtbMzg7Mjs3OzE1OzIwbSAbWzBtG1szODsyOzM7Njs4bSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzE7MTsybSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzEzOzI1OzMybSAbWzBtG1szODsyOzM3OzY4Ozg5bTobWzBtG1szODsyOzM5OzczOzkzbTobWzBtG1szODsyOzYwOzExMTsxNDJtLRtbMG0bWzM4OzI7ODU7MTU3OzIwMG0rG1swbRtbMzg7Mjs5NjsxNzY7MjIxbSobWzBtG1szODsyOzkyOzE2OTsyMTFtKxtbMG0bWzM4OzI7OTU7MTc0OzIxN20qG1swbRtbMzg7Mjs4MTsxNDY7MTgxbSsbWzBtG1szODsyOzMyOzU5OzcybTobWzBtG1szODsyOzQwOzcyOzg4bTobWzBtG1szODsyOzg4OzE1OTsxOTRtKxtbMG0bWzM4OzI7MTA0OzE4ODsyMjZtKhtbMG0bWzM4OzI7MTA1OzE4OTsyMjdtKhtbMG0bWzM4OzI7MTA3OzE5MTsyMjhtKhtbMG0bWzM4OzI7MTA4OzE5MzsyMjltKhtbMG0bWzM4OzI7MTA5OzE5NDsyMjltKhtbMG0bWzM4OzI7MTEwOzE5NjsyMzBtKhtbMG0bWzM4OzI7NTg7MTAzOzEyMW0tG1swbRtbMzg7MjsxOzM7M20gG1swbRtbMzg7MjsxOzI7Mm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxOzM7M20gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbQobWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsxOzJtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsxOzFtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsxOzJtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MTszOzVtIBtbMG0bWzM4OzI7MTsyOzNtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsxOzFtIBtbMG0bWzM4OzI7NTsxMDsxM20gG1swbRtbMzg7Mjs3NDsxMzk7MTgwbT0bWzBtG1szODsyOzc2OzE0MjsxODJtPRtbMG0bWzM4OzI7NTI7OTc7MTIzbS0bWzBtG1szODsyOzM1OzY2Ozg0bTobWzBtG1szODsyOzI4OzUxOzY1bS4bWzBtG1szODsyOzEyOzIyOzI3bSAbWzBtG1szODsyOzE0OzI1OzMybSAbWzBtG1szODsyOzE5OzM1OzQzbS4bWzBtG1szODsyOzc3OzEzOTsxNzFtPRtbMG0bWzM4OzI7MTAyOzE4NDsyMjVtKhtbMG0bWzM4OzI7MTAzOzE4NjsyMjZtKhtbMG0bWzM4OzI7MTAyOzE4NTsyMjJtKhtbMG0bWzM4OzI7MTAzOzE4NjsyMjRtKhtbMG0bWzM4OzI7MTA1OzE4ODsyMjRtKhtbMG0bWzM4OzI7MTA2OzE4OTsyMjVtKhtbMG0bWzM4OzI7MTA2OzE4OTsyMjNtKhtbMG0bWzM4OzI7MTA2OzE4OTsyMjJtKhtbMG0bWzM4OzI7MTEyOzE5ODsyMzFtKhtbMG0bWzM4OzI7NzU7MTMyOzE1NG09G1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxOzM7M20gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbQobWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7Mjs0OzVtIBtbMG0bWzM4OzI7OTsxODsyNW0gG1swbRtbMzg7Mjs2OzEyOzE2bSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzU7MTA7MTRtIBtbMG0bWzM4OzI7NDs4OzExbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzA7MTsybSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzU7MTE7MTVtIBtbMG0bWzM4OzI7NjsxMjsxNm0gG1swbRtbMzg7Mjs2OzEyOzE2bSAbWzBtG1szODsyOzY7MTI7MTZtIBtbMG0bWzM4OzI7NTsxMDsxNG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7Mjs1OzEwOzE0bSAbWzBtG1szODsyOzU7MTA7MTRtIBtbMG0bWzM4OzI7MDsxOzFtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7ODsxNTsyMW0gG1swbRtbMzg7MjsxMTsyMjszMG0gG1swbRtbMzg7Mjs0Ozc7MTBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsxOzFtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MTc7MzI7NDFtLhtbMG0bWzM4OzI7OTI7MTcxOzIxOW0qG1swbRtbMzg7Mjs5MzsxNzM7MjIwbSobWzBtG1szODsyOzkyOzE2ODsyMTRtKxtbMG0bWzM4OzI7OTsxNzsyMW0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsyMTszODs0N20uG1swbRtbMzg7Mjs5NzsxNzc7MjE2bSobWzBtG1szODsyOzEwMjsxODQ7MjI1bSobWzBtG1szODsyOzEwMzsxODY7MjI2bSobWzBtG1szODsyOzEwNDsxODg7MjI2bSobWzBtG1szODsyOzEwNDsxODc7MjI1bSobWzBtG1szODsyOzEwNzsxOTE7MjI4bSobWzBtG1szODsyOzEwODsxOTM7MjI5bSobWzBtG1szODsyOzEwOTsxOTQ7MjI5bSobWzBtG1szODsyOzExMDsxOTY7MjMwbSobWzBtG1szODsyOzEwMjsxODA7MjExbSobWzBtG1szODsyOzYyOzExMDsxMjhtLRtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MTsyOzJtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzM7Njs4bSAbWzBtG1szODsyOzQ0Ozg2OzExOG0tG1swbRtbMzg7Mjs3NDsxNDM7MTk2bSsbWzBtG1szODsyOzc1OzE0NTsxOTltKxtbMG0bWzM4OzI7NzY7MTQ4OzIwMm0rG1swbRtbMzg7Mjs2NTsxMjc7MTc0bT0bWzBtG1szODsyOzI0OzQ2OzY0bS4bWzBtG1szODsyOzE7Mzs0bSAbWzBtG1szODsyOzcyOzE0MDsxOTJtPRtbMG0bWzM4OzI7NjE7MTE4OzE2Mm09G1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7Mjs3OzE1OzIwbSAbWzBtG1szODsyOzcyOzE0MTsxOTJtPRtbMG0bWzM4OzI7NzQ7MTQ1OzE5OG0rG1swbRtbMzg7Mjs3NDsxNDU7MTk4bSsbWzBtG1szODsyOzc0OzE0NTsxOThtKxtbMG0bWzM4OzI7NzQ7MTQ1OzE5OG0rG1swbRtbMzg7Mjs2ODsxMzM7MTgybT0bWzBtG1szODsyOzM2OzcwOzk2bTobWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzE7Mjs0bSAbWzBtG1szODsyOzY2OzEyODsxNzVtPRtbMG0bWzM4OzI7Njk7MTMzOzE4Mm09G1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjsxNDsyNzszOG0gG1swbRtbMzg7Mjs1ODsxMTQ7MTU2bT0bWzBtG1szODsyOzcxOzEzODsxODltPRtbMG0bWzM4OzI7NzM7MTQxOzE5M209G1swbRtbMzg7Mjs3NzsxNDk7MjA0bSsbWzBtG1szODsyOzU2OzEwOTsxNDltLRtbMG0bWzM4OzI7ODsxNjsyMm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7Mjs0Nzs4ODsxMTNtLRtbMG0bWzM4OzI7OTM7MTcyOzIyMG0qG1swbRtbMzg7Mjs5NDsxNzI7MjE5bSobWzBtG1szODsyOzg3OzE2MDsyMDFtKxtbMG0bWzM4OzI7NjM7MTE1OzE0NG09G1swbRtbMzg7MjsyOTs1NDs2OG0uG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7Mjs3OzE0OzE3bSAbWzBtG1szODsyOzM3OzY3OzgybTobWzBtG1szODsyOzcyOzEzMTsxNTltPRtbMG0bWzM4OzI7OTk7MTgwOzIxN20qG1swbRtbMzg7MjsxMDU7MTg5OzIyN20qG1swbRtbMzg7Mjs5OTsxNzg7MjEybSobWzBtG1szODsyOzgwOzE0NDsxNzFtKxtbMG0bWzM4OzI7NTQ7OTc7MTE0bS0bWzBtG1szODsyOzI4OzUwOzU5bS4bWzBtG1szODsyOzc7MTM7MTZtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsybSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzQ3OzkyOzEyNm0tG1swbRtbMzg7Mjs4MDsxNTU7MjEybSsbWzBtG1szODsyOzQ2Ozg5OzEyM20tG1swbRtbMzg7MjsxMTsyMTsyOW0gG1swbRtbMzg7MjsyMzs0NDs2MW0uG1swbRtbMzg7Mjs1MjsxMDA7MTM4bS0bWzBtG1szODsyOzI3OzUyOzcybS4bWzBtG1szODsyOzI7NTs3bSAbWzBtG1szODsyOzc5OzE1NDsyMTFtKxtbMG0bWzM4OzI7NjY7MTI4OzE3Nm09G1swbRtbMzg7MjsxMTsyMzszMW0gG1swbRtbMzg7MjsyMTs0MTs1N20uG1swbRtbMzg7MjsxMjsyMzszMm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7Mjs3OzE1OzIwbSAbWzBtG1szODsyOzgwOzE1NTsyMTJtKxtbMG0bWzM4OzI7Njg7MTMyOzE4MW09G1swbRtbMzg7Mjs2OzEzOzE4bSAbWzBtG1szODsyOzY7MTM7MThtIBtbMG0bWzM4OzI7MTI7MjM7MzJtIBtbMG0bWzM4OzI7NzI7MTM5OzE5MW09G1swbRtbMzg7Mjs4MDsxNTU7MjEybSsbWzBtG1szODsyOzEyOzI0OzM0bSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzczOzE0MTsxOTNtPRtbMG0bWzM4OzI7NzU7MTQ3OzIwMW0rG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7Mjs0OTs5NjsxMzFtLRtbMG0bWzM4OzI7ODA7MTU1OzIxMm0rG1swbRtbMzg7Mjs0ODs5NDsxMjhtLRtbMG0bWzM4OzI7MTQ7Mjc7MzdtIBtbMG0bWzM4OzI7Mjk7NTc7NzhtOhtbMG0bWzM4OzI7Mzc7NzM7MTAwbTobWzBtG1szODsyOzk7MTg7MjRtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MTsyOzJtIBtbMG0bWzM4OzI7Mjs1OzZtIBtbMG0bWzM4OzI7Nzg7MTQ1OzE4NG0rG1swbRtbMzg7Mjs5MzsxNzM7MjIwbSobWzBtG1szODsyOzk2OzE3NjsyMjFtKhtbMG0bWzM4OzI7OTc7MTc4OzIyMm0qG1swbRtbMzg7Mjs5MjsxNjk7MjEwbSsbWzBtG1szODsyOzExOzIwOzI1bSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzE0OzI1OzMxbSAbWzBtG1szODsyOzI4OzUxOzYxbS4bWzBtG1szODsyOzk7MTY7MTltIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzI7NTs3bSAbWzBtG1szODsyOzc0OzE0MzsxOTZtKxtbMG0bWzM4OzI7NzY7MTQ4OzIwMm0rG1swbRtbMzg7MjsyOzU7N20gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7Mjs0Ozk7MTNtIBtbMG0bWzM4OzI7NzQ7MTQ0OzE5N20rG1swbRtbMzg7Mjs3NzsxNTA7MjA1bSsbWzBtG1szODsyOzY2OzEyODsxNzVtPRtbMG0bWzM4OzI7NzM7MTQyOzE5NG0rG1swbRtbMzg7Mjs3ODsxNTI7MjA4bSsbWzBtG1szODsyOzM2OzcxOzk3bTobWzBtG1szODsyOzQ7ODsxMW0gG1swbRtbMzg7Mjs3ODsxNTI7MjA4bSsbWzBtG1szODsyOzc0OzE0NDsxOTdtKxtbMG0bWzM4OzI7NTA7OTc7MTMzbS0bWzBtG1szODsyOzQ5Ozk1OzEzMG0tG1swbRtbMzg7Mjs0Nzs5MTsxMjRtLRtbMG0bWzM4OzI7NzQ7MTQ1OzE5OG0rG1swbRtbMzg7Mjs2NDsxMjQ7MTcwbT0bWzBtG1szODsyOzU7MTA7MTRtIBtbMG0bWzM4OzI7MDsxOzJtIBtbMG0bWzM4OzI7NzA7MTM3OzE4N209G1swbRtbMzg7Mjs3MzsxNDI7MTk0bSsbWzBtG1szODsyOzE7Mzs0bSAbWzBtG1szODsyOzc7MTQ7MTltIBtbMG0bWzM4OzI7NDg7OTM7MTI4bS0bWzBtG1szODsyOzcyOzE0MDsxOTJtPRtbMG0bWzM4OzI7NzQ7MTQ0OzE5N20rG1swbRtbMzg7Mjs2MDsxMTc7MTYwbT0bWzBtG1szODsyOzMxOzYwOzgzbTobWzBtG1szODsyOzI7NTs3bSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzE7MjsybSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzIyOzQyOzUzbS4bWzBtG1szODsyOzk0OzE3NDsyMjFtKhtbMG0bWzM4OzI7OTM7MTcxOzIxNG0qG1swbRtbMzg7Mjs5MjsxNzA7MjEybSsbWzBtG1szODsyOzk3OzE3ODsyMjJtKhtbMG0bWzM4OzI7Njk7MTI3OzE1OG09G1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsyOzQ7NW0gG1swbRtbMzg7MjsxOzI7Mm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjsxOzM7M20gG1swbRtbMzg7MjsxOzI7Mm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbQobWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MTsyOzNtIBtbMG0bWzM4OzI7NjY7MTI4OzE3NW09G1swbRtbMzg7Mjs4MDsxNTU7MjEybSsbWzBtG1szODsyOzE5OzM3OzUxbS4bWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsybSAbWzBtG1szODsyOzE5OzM3OzUxbS4bWzBtG1szODsyOzEwOzIwOzI3bSAbWzBtG1szODsyOzM7Nzs5bSAbWzBtG1szODsyOzc1OzE0NjsyMDBtKxtbMG0bWzM4OzI7Njk7MTM1OzE4NW09G1swbRtbMzg7MjsyOzU7N20gG1swbRtbMzg7MjsxMDsxOTsyNm0gG1swbRtbMzg7Mjs3OTsxNTM7MjA5bSsbWzBtG1szODsyOzYxOzExOTsxNjJtPRtbMG0bWzM4OzI7NTsxMDsxNW0gG1swbRtbMzg7Mjs3NzsxNTA7MjA2bSsbWzBtG1szODsyOzc0OzE0MzsxOTZtKxtbMG0bWzM4OzI7NDc7OTE7MTI1bS0bWzBtG1szODsyOzU3OzExMTsxNTJtLRtbMG0bWzM4OzI7ODA7MTU1OzIxMm0rG1swbRtbMzg7Mjs2ODsxMzM7MTgybT0bWzBtG1szODsyOzI7NDs2bSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzE7Mzs1bSAbWzBtG1szODsyOzY5OzEzNDsxODRtPRtbMG0bWzM4OzI7NzE7MTM5OzE5MG09G1swbRtbMzg7MjsyOzQ7Nm0gG1swbRtbMzg7MjsxNTszMDs0MW0uG1swbRtbMzg7MjsyNDs0Njs2NG0uG1swbRtbMzg7Mjs2OzEyOzE2bSAbWzBtG1szODsyOzEzOzI2OzM2bSAbWzBtG1szODsyOzQ0Ozg1OzExN20tG1swbRtbMzg7Mjs4MDsxNTU7MjEybSsbWzBtG1szODsyOzU2OzEwODsxNDhtLRtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDsxOzJtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MTsyOzNtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7NTU7MTAxOzEyOW0tG1swbRtbMzg7Mjs5NjsxNzY7MjIxbSobWzBtG1szODsyOzk3OzE3ODsyMjJtKhtbMG0bWzM4OzI7OTg7MTc5OzIyM20qG1swbRtbMzg7MjsxMDA7MTgxOzIyNG0qG1swbRtbMzg7Mjs0OTs4ODsxMDhtLRtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MTsyOzJtIBtbMG0bWzM4OzI7MDsxOzFtIBtbMG0bWzM4OzI7MTsyOzJtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsybSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzIyOzQzOzU5bS4bWzBtG1szODsyOzc1OzE0NTsxOTltKxtbMG0bWzM4OzI7ODA7MTU1OzIxMm0rG1swbRtbMzg7Mjs1NjsxMTA7MTUwbS0bWzBtG1szODsyOzY4OzEzMTsxODBtPRtbMG0bWzM4OzI7ODA7MTU1OzIxMm0rG1swbRtbMzg7MjszNzs3MzsxMDBtOhtbMG0bWzM4OzI7MTszOzRtIBtbMG0bWzM4OzI7ODA7MTU1OzIxMm0rG1swbRtbMzg7Mjs2OTsxMzU7MTg1bT0bWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzY7MTI7MTZtIBtbMG0bWzM4OzI7ODA7MTU1OzIxMm0rG1swbRtbMzg7Mjs2NDsxMjQ7MTcwbT0bWzBtG1szODsyOzU7MTA7MTVtIBtbMG0bWzM4OzI7ODA7MTU1OzIxMm0rG1swbRtbMzg7Mjs2OTsxMzQ7MTg0bT0bWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzQ5Ozk2OzEzMW0tG1swbRtbMzg7Mjs4MDsxNTU7MjEybSsbWzBtG1szODsyOzQ1Ozg4OzEyMG0tG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjsxOzM7NW0gG1swbRtbMzg7Mjs3NjsxNDc7MjAybSsbWzBtG1szODsyOzc5OzE1MzsyMDltKxtbMG0bWzM4OzI7MDsxOzJtIBtbMG0bWzM4OzI7NDI7ODI7MTEzbTobWzBtG1szODsyOzgwOzE1NTsyMTJtKxtbMG0bWzM4OzI7Njg7MTMzOzE4Mm09G1swbRtbMzg7Mjs0OTs5NTsxMzBtLRtbMG0bWzM4OzI7NTk7MTE1OzE1N209G1swbRtbMzg7Mjs4MDsxNTU7MjEybSsbWzBtG1szODsyOzQyOzgyOzExM206G1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzE7Mm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7Mjs0Ozg7MTBtIBtbMG0bWzM4OzI7MzY7NjY7ODNtOhtbMG0bWzM4OzI7MzY7Njc7ODRtOhtbMG0bWzM4OzI7MzY7Njc7ODNtOhtbMG0bWzM4OzI7Mzc7Njg7ODRtOhtbMG0bWzM4OzI7MzQ7NjM7NzdtOhtbMG0bWzM4OzI7MDsxOzFtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzk7MTg7MjVtIBtbMG0bWzM4OzI7MzM7NjQ7ODhtOhtbMG0bWzM4OzI7NDY7ODk7MTIzbS0bWzBtG1szODsyOzQwOzc3OzEwNm06G1swbRtbMzg7MjsxNzszMzs0NW0uG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxOzM7NG0gG1swbRtbMzg7MjszNDs2Njs5MW06G1swbRtbMzg7MjsyOTs1Nzs3OG06G1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjszOzY7OG0gG1swbRtbMzg7MjszNTs2ODs5M206G1swbRtbMzg7MjsyNjs1Mjs3MW0uG1swbRtbMzg7MjsyOzQ7Nm0gG1swbRtbMzg7MjszNTs2OTs5NG06G1swbRtbMzg7MjsyOTs1Nzs3OG06G1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjsyOzQ7NW0gG1swbRtbMzg7MjszMzs2NTs4OW06G1swbRtbMzg7MjszNzs3MTs5OG06G1swbRtbMzg7Mjs0Ozc7MTBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MzE7NjA7ODNtOhtbMG0bWzM4OzI7MzI7NjI7ODVtOhtbMG0bWzM4OzI7MDsxOzJtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MTU7Mjk7MzltLhtbMG0bWzM4OzI7Mzk7NzY7MTA0bTobWzBtG1szODsyOzQ4OzkzOzEyOG0tG1swbRtbMzg7Mjs0Mjs4MjsxMTJtOhtbMG0bWzM4OzI7MTk7Mzc7NTFtLhtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MTsxbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzE7MjszbSAbWzBtG1szODsyOzE7MjszbSAbWzBtG1szODsyOzE7MjszbSAbWzBtG1szODsyOzE7MjszbSAbWzBtG1szODsyOzE7MjsybSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtChtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjswOzE7Mm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjswOzE7Mm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjswOzE7Mm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjswOzE7Mm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzE7MW0gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjsxOzI7M20gG1swbRtbMzg7MjswOzE7Mm0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbRtbMzg7MjswOzA7MG0gG1swbQobWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0bWzM4OzI7MDswOzBtIBtbMG0KG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtG1szODsyOzA7MDswbSAbWzBtCg==",g0=/\x1b\[[0-9;]*m/g,oh="\x1B[0m",lh="\x1B[7m",Sm=atob(m0).trimEnd().split(`
|
|
3
3
|
`);Sm.map(n=>n.replace(g0,""));function M0(n){const e=n.replace(/\x1b\[0m/g,`${oh}${lh}`);return`${lh}${e}${oh}`}function b0(n,e=!1){const t=Sm;return e?t.map(M0):t}function Em(n){const e=n.lastIndexOf("/");return e<=0?"/":n.slice(0,e+1)}function _0(n){const e=new URLSearchParams(n.search).get("ws");return e!==null&&e.length>0?e:`${n.protocol==="https:"?"wss":"ws"}://${n.host}${Em(n.pathname)}`}function AG(n,e){return new URL(n,e).href}function tu(n,e){const t=`path=${encodeURIComponent(n)}`;return e.length>0?`vfs?${t}&token=${encodeURIComponent(e)}`:`vfs?${t}`}function z0(n,e){return`${tu(n,e)}&download=1`}function ul(n){return new URLSearchParams(n).has("door")}function $o(n,e){const s=Em(n).split("/").filter(i=>i.length>0).slice(0,-2);return`/${s.length>0?`${s.join("/")}/`:""}${e}`}const w0="daemon";class su{socket;handlers;token;pending=new Map;pendingCompletions=new Map;silentIds=new Set;nextId=0;constructor(e,t,s){this.socket=e,this.handlers=t,this.token=s,this.socket.onmessage=i=>this.message_handle(String(i.data)),this.socket.onclose=()=>this.handlers.close_handle?.()}static session_attach(e,t,s){return new Promise((i,r)=>{const a=new WebSocket(e);a.onerror=()=>r(new Error(`cannot reach the daemon at ${e}`)),a.onopen=()=>{a.send(JSON.stringify({type:"attach",protocolVersion:Tc,token:t,capabilities:{shellCommands:!1,color:!0,hiddenInput:!0,fileDelivery:!0,localFilesystem:!1}}))},a.onmessage=o=>{const l=ch(String(o.data));if(!l){r(new Error("invalid attach response")),a.close();return}if(l.type==="error"){r(new Error(l.reason)),a.close();return}if(l.type!=="attached"){r(new Error(`unexpected attach response: ${l.type}`)),a.close();return}const c=new su(a,s,t);i({client:c,attach:{session:l.session,protocolVersion:l.protocolVersion,...l.stack!==void 0?{stack:l.stack}:{},...l.hostControl!==void 0?{hostControl:l.hostControl}:{},...l.stale!==void 0?{stale:l.stale}:{},...l.surface!==void 0?{surface:l.surface}:{}}})}})}line_execute(e,t){const s=`argus-${this.nextId++}`;return t?.silent===!0&&this.silentIds.add(s),new Promise((i,r)=>{this.pending.set(s,{resolve:i,reject:r,liveChannels:new Set,observed:t?.observe!==!1}),this.socket.send(JSON.stringify({type:"execute",id:s,line:e,...t?.silent===!0&&t.operator!==!0?{instrument:!0}:{}}))})}line_complete(e){const t=`argus-c-${this.nextId++}`;return new Promise((s,i)=>{this.pendingCompletions.set(t,{resolve:s,reject:i}),this.socket.send(JSON.stringify({type:"complete",id:t,prefix:e}))})}regard_send(e){this.socket.send(JSON.stringify({type:"regard",regard:e}))}watch_send(e){this.socket.send(JSON.stringify({type:"watch",subject:e}))}unwatch_send(e){this.socket.send(JSON.stringify({type:"unwatch",subject:e}))}connection_close(){this.socket.close()}message_handle(e){const t=ch(e);if(t)switch(t.type){case"result":{this.silentIds.delete(t.id);const s=this.pending.get(t.id);if(s&&(this.pending.delete(t.id),s.resolve({envelopes:t.envelopes,liveChannels:s.liveChannels})),s===void 0||s.observed)for(const i of t.envelopes)this.handlers.envelope_observe?.(i);break}case"complete":{const s=this.pendingCompletions.get(t.id);s&&(this.pendingCompletions.delete(t.id),s.resolve({candidates:t.candidates,prefix:t.prefix}));break}case"output":{(t.channel==="data"||t.channel==="err")&&this.pending.get(t.id)?.liveChannels.add(t.channel),this.silentIds.has(t.id)||this.handlers.output_receive?.(t.channel,t.chunk);break}case"progress":{this.handlers.progress_receive?.(t);break}case"session":{if(t.surface===w0){this.handlers.ambient_receive?.(t.envelope);break}this.handlers.session_receive?.(t.surface,t.envelope),this.handlers.envelope_observe?.(t.envelope);break}case"watched":{this.handlers.watched_receive?.(t.subject,t.state);break}case"stale":this.handlers.stale_receive?.(t.stale);break;case"closing":this.handlers.closing_receive?.(t.cause);break;case"numbered":{this.handlers.numbered_receive?.({id:t.id,source:t.source,rows:t.rows,handles:t.handles});break}case"promptline":{this.handlers.promptline_receive?.(t.context);break}case"telemetry":{this.handlers.telemetry_receive?.(t.index,{lane:t.lane,cube:t.cube,state:t.state,surfaces:t.surfaces});break}case"regard":{this.handlers.regard_receive?.(t.regard);break}case"error":{if(t.id!==void 0){const s=this.pending.get(t.id);s&&(this.pending.delete(t.id),s.reject(new Error(t.reason)));const i=this.pendingCompletions.get(t.id);i&&(this.pendingCompletions.delete(t.id),i.reject(new Error(t.reason)))}break}case"prompt":{const s=this.handlers.ask_receive;if(s===void 0){this.reply_send({type:"promptError",promptId:t.promptId,reason:"this surface has no way to ask"});break}const i=t.promptId;s({message:t.message,kind:c_(t),...t.path?.suggest===void 0?{}:{suggest:t.path.suggest},...t.path===void 0?{}:{path:t.path},...t.commit===void 0?{}:{commit:t.commit}}).then(r=>{if(r===null){this.reply_send({type:"promptError",promptId:i,reason:"the operator abandoned the question"});return}this.reply_send({type:"promptAnswer",promptId:i,answer:r})}).catch(r=>{const a=r instanceof Error?r.message:"the question could not be answered";this.reply_send({type:"promptError",promptId:i,reason:a})});break}case"pipe":{this.reply_send({type:"pipeError",pipeId:t.pipeId,reason:"the argus surface cannot run pipeline segments"});break}case"shell":{this.reply_send({type:"shellError",shellId:t.shellId,reason:"the argus surface cannot run shell commands"});break}case"edit":{this.edit_run(t);break}case"deliver":{this.deliver_run(t);break}}}edit_run(e){const t=this.handlers.edit_receive;let s=!1,i="the argus surface cannot open an editor";if(t!==void 0)try{s=t({content:e.content,...e.path===void 0?{}:{path:e.path},...e.extension===void 0?{}:{extension:e.extension}}),i="the editor pane did not open"}catch(r){i=r instanceof Error?r.message:String(r)}if(s){this.reply_send({type:"editResult",editId:e.editId,content:e.content,changed:!1,opened:!0});return}this.reply_send({type:"editError",editId:e.editId,reason:i})}async deliver_run(e){try{const t=tu(e.path,this.token),s=await fetch(t);if(!s.ok)throw new Error(`calypso refused to serve this file (HTTP ${s.status})`);const i=await s.blob(),r=URL.createObjectURL(i),a=document.createElement("a");a.href=r,a.download=e.filename,document.body.appendChild(a),a.click(),a.remove(),setTimeout(()=>URL.revokeObjectURL(r),0),this.reply_send({type:"deliverResult",deliverId:e.deliverId,location:e.filename,bytes:i.size})}catch(t){const s=t instanceof Error?t.message:String(t);this.reply_send({type:"deliverError",deliverId:e.deliverId,reason:s})}}reply_send(e){this.socket.send(JSON.stringify(e))}}function ch(n){try{const e=__(JSON.parse(n));return e.ok&&e.value!==void 0?e.value:null}catch{return null}}const Js=["#000000","#f24444","#33cc66","#ffaa44","#5599ff","#cc88ff","#44cccc","#ffeecc","#777777","#ff6666","#66ee99","#ffcc66","#77bbff","#dd99ff","#66dddd","#ffffff"],y0={yellow:Js[3],white:Js[7],cyan:Js[6],green:Js[2],magenta:Js[5]};function Am(){return{fg:null,bg:null,bold:!1,dim:!1,italic:!1,inverse:!1,underline:!1}}function v0(n){if(n<16)return Js[n]??"#ffeecc";if(n<232){const t=n-16,s=[0,95,135,175,215,255],i=s[Math.floor(t/36)%6]??0,r=s[Math.floor(t/6)%6]??0,a=s[t%6]??0;return`#${(i<<16|r<<8|a).toString(16).padStart(6,"0")}`}const e=8+(n-232)*10;return`#${(e<<16|e<<8|e).toString(16).padStart(6,"0")}`}function O0(n,e){for(let t=0;t<e.length;t++){const s=e[t]??0;if(s===0)Object.assign(n,Am());else if(s===1)n.bold=!0;else if(s===2)n.dim=!0;else if(s===3)n.italic=!0;else if(s===4)n.underline=!0;else if(s===7)n.inverse=!0;else if(s===27)n.inverse=!1;else if(s===22)n.bold=!1,n.dim=!1;else if(s===23)n.italic=!1;else if(s===24)n.underline=!1;else if(s>=30&&s<=37)n.fg=Js[s-30]??null;else if(s>=90&&s<=97)n.fg=Js[s-90+8]??null;else if(s===39)n.fg=null;else if(s>=40&&s<=47)n.bg=Js[s-40]??null;else if(s>=100&&s<=107)n.bg=Js[s-100+8]??null;else if(s===49)n.bg=null;else if(s===38||s===48){const i=e[t+1]??0;let r=null;if(i===5)r=v0(e[t+2]??0),t+=2;else if(i===2){const a=e[t+2]??0,o=e[t+3]??0,l=e[t+4]??0;r=`#${(a<<16|o<<8|l).toString(16).padStart(6,"0")}`,t+=4}s===38?n.fg=r:n.bg=r}}}function x0(n){const e=[],t=n.inverse?n.bg??"#000":n.fg,s=n.inverse?n.fg??"var(--daybreak)":n.bg;return t!==null&&e.push(`color:${t}`),s!==null&&e.push(`background-color:${s}`),n.bold&&e.push("font-weight:bold"),n.dim&&e.push("opacity:0.55"),n.italic&&e.push("font-style:italic"),n.underline&&e.push("text-decoration:underline"),e.join(";")}function ys(n){return n.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}const El=/\x1b(?:\[([0-?]*)[ -/]*([@-~])|\][^\x07\x1b]*(?:\x07|\x1b\\)|[@-Z\\-_])/g;function Mn(n){const e=Am();let t="",s=0;const i=a=>{if(a.length===0)return;const o=x0(e),l=ys(a.replace(/\r/g,""));t+=o.length>0?`<span style="${o}">${l}</span>`:l};El.lastIndex=0;let r=El.exec(n);for(;r!==null;){if(i(n.slice(s,r.index)),s=r.index+r[0].length,r[2]==="m"){const a=(r[1]??"").split(/[;:]/).map(o=>o.length>0?Number(o):0);O0(e,a)}r=El.exec(n)}return i(n.slice(s)),t}function S0(n){for(const[e,t]of Object.entries(y0))n.style.setProperty(`--console-${e}`,t)}const ni={pacs:{bg:"#875FFF",fg:"#FFFFFF"},host:{bg:"#00AFFF",fg:"#001018"},user:{bg:"#00D787",fg:"#00140C"},dir:{bg:"#FFD75F",fg:"#201800"},physical:{bg:"#FF5F5F",fg:"#1B0000"},duration:{bg:"#FF8700",fg:"#201000"},status:{bg:"#FF005F",fg:"#FFFFFF"}},E0={cold:{icon:"",label:"proc cold",color:{bg:"#FF8700",fg:"#201000"}},cached:{icon:"",label:"proc cached, refreshing",color:{bg:"#5F5F87",fg:"#FFFFFF"}},failed:{icon:"",label:"proc failed",color:{bg:"#FF005F",fg:"#FFFFFF"}}},cn={powerline:"",cube:"",database:"",user:"",folder:"",microscope:"",bolt:"",error:""},A0=3e3,D0=200;class T0{output;splashGreeting=null;progressRegion;promptBar;inputGlyph;input;submit;complete;promptContext=null;busy=!0;pendingAsk=null;queuedLines=[];questionOpen=!1;history=[];historyIndex=0;streamBlock=null;streamPendingElement=null;streamPendingText="";streamPendingChannel="data";constructor(e,t,s){this.submit=t,this.complete=s,e.innerHTML=`
|
|
4
4
|
<div class="argus-screen">
|
|
5
5
|
<div class="argus-output"></div>
|
|
@@ -21,7 +21,7 @@ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./cornerstoneEngine-Px
|
|
|
21
21
|
<span class="argus-progress-elapsed"></span>`,this.region.appendChild(i);const r={element:i,labelElement:i.querySelector(".argus-progress-label"),barFill:i.querySelector(".argus-progress-fill"),startedAt:performance.now()};return this.rows.set(e,r),r}row_paint(e,t){const s=t.label??t.operation,i=t.current!==void 0&&t.total!==void 0&&t.total>0?` ${uh(t.current,t.unit)}/${uh(t.total,t.unit)}`:"";if(e.labelElement.innerHTML=`${dh(s)}<span class="argus-progress-counts">${dh(i)}</span>`,e.barFill!==null){const r=t.percent??(t.current!==void 0&&t.total!==void 0&&t.total>0?t.current/t.total*100:0);e.barFill.style.width=`${Math.max(0,Math.min(100,r))}%`}}row_remove(e){const t=this.rows.get(e);t!==void 0&&(t.element.remove(),this.rows.delete(e),this.rows.size===0&&this.elapsedTimer!==null&&(clearInterval(this.elapsedTimer),this.elapsedTimer=null))}elapsed_ensure(){this.elapsedTimer===null&&(this.elapsed_paint(),this.elapsedTimer=window.setInterval(()=>this.elapsed_paint(),R0))}elapsed_paint(){const e=performance.now();for(const t of this.rows.values()){const s=t.element.querySelector(".argus-progress-elapsed");s!==null&&(s.textContent=`${((e-t.startedAt)/1e3).toFixed(1)}s`)}}}class N0{root;capsRows=[];strip;input;columns;value_of;onChange;leadingCells;terms;state={sortKey:null,sortDir:"asc",filter:""};changeQueued=!1;change_emit(){this.changeQueued||(this.changeQueued=!0,window.requestAnimationFrame(()=>{this.changeQueued=!1,this.onChange()}))}host_prepare(e){this.root.parentElement!==e&&e.prepend(this.root);for(const t of[...e.children])t!==this.root&&t.remove()}shown=0;total=0;constructor(e,t,s,i,r=0,a=!0,o=[]){this.terms=o,this.columns=e,this.value_of=t,this.onChange=s,i!==void 0&&(this.state={...this.state,sortKey:i.key,sortDir:i.dir}),this.leadingCells=r,this.root=document.createElement("div"),this.root.className="roster-order",this.strip=document.createElement("div"),this.strip.className="roster-filter",this.strip.hidden=!0;const l=document.createElement("span");l.className="roster-filter-glyph",l.textContent="FILTER :",this.input=document.createElement("input"),this.input.className="roster-filter-input",this.input.placeholder="text, or column:text (e.g. owner:<user> status:error)",this.input.setAttribute("autocomplete","off"),this.input.addEventListener("input",()=>this.filter_set(this.input.value,!1)),this.input.addEventListener("keydown",c=>{c.key==="Escape"&&(c.stopPropagation(),this.strip_toggle(!1))}),this.strip.append(l,this.input),a&&this.root.appendChild(this.caps_mint()),this.root.appendChild(this.strip),this.caps_paint()}caps_mint(){const e=document.createElement("div");e.className="roster-caps";for(let t=0;t<this.leadingCells;t++)e.appendChild(document.createElement("span"));for(const t of this.columns){const s=document.createElement("button");s.className="roster-cap",s.dataset.key=t.key,s.title=`sort by ${t.label.toLowerCase()} (again to reverse)`,s.addEventListener("click",()=>this.sort_toggle(t.key)),e.appendChild(s)}return this.capsRows.push(e),this.caps_paint(),e}state_get(){return{...this.state}}sort_toggle(e){this.state.sortKey===e?this.sort_set(e,this.state.sortDir==="asc"?"desc":"asc"):this.sort_set(e,"asc")}sort_set(e,t){this.columns.some(s=>s.key===e)&&(this.state={...this.state,sortKey:e,sortDir:t},this.caps_paint(),this.change_emit())}onFilter=null;filterChange_observe(e){this.onFilter=e}filterText_get(){return this.state.filter}filter_set(e,t=!0){this.state={...this.state,filter:e},this.onFilter?.(e),t&&(this.input.value=e),e.length>0&&this.strip.hidden&&(this.strip.hidden=!1,this.onStrip?.()),this.change_emit()}strip_toggle(e){const t=e??this.strip.hidden;this.strip.hidden=!t,t?this.input.focus():this.state.filter.length>0&&this.filter_set(""),this.onStrip?.()}strip_isOpen(){return!this.strip.hidden}onStrip=null;stripChange_observe(e){this.onStrip=e}matches(e){return this.terms_parse().every(t=>{const s=t.key===null?void 0:this.terms.find(r=>r.key===t.key);return(s!==void 0?s.value(e).toLowerCase():t.key!==null?String(this.value_of(e,t.key)).toLowerCase():[...this.columns.map(r=>String(this.value_of(e,r.key))),...this.terms.map(r=>r.value(e))].join(" ").toLowerCase()).includes(t.text)})}sorted(e){const t=[...e],s=this.state.sortKey;if(s===null)return t;const i=this.state.sortDir==="asc"?1:-1;return t.sort((r,a)=>{const o=this.value_of(r,s),l=this.value_of(a,s);return typeof o=="number"&&typeof l=="number"?(o-l)*i:String(o).localeCompare(String(l),void 0,{numeric:!0,sensitivity:"base"})*i}),t}counts_set(e,t){this.shown=e,this.total=t}terms_parse(){return this.state.filter.toLowerCase().split(/\s+/).filter(e=>e.length>0).map(e=>{const t=e.indexOf(":");if(t>0){const s=e.slice(0,t);if(this.columns.some(i=>i.key===s)||this.terms.some(i=>i.key===s))return{key:s,text:e.slice(t+1)}}return{key:null,text:e}})}apply(e){const t=this.sorted(e.filter(s=>this.matches(s)));return this.shown=t.length,this.total=e.length,t}summary(){const e=[];return this.state.filter.length>0&&e.push(`FILTERED ${this.shown}/${this.total}`),e.join(" · ")}caps_paint(){const e=this.capsRows.filter(t=>t.parentElement===null||t.isConnected);this.capsRows.length=0,this.capsRows.push(...e);for(const t of this.capsRows)for(const s of t.querySelectorAll(".roster-cap")){const i=s.dataset.key??"",r=this.columns.find(o=>o.key===i),a=i===this.state.sortKey;s.classList.toggle("roster-active",a),s.textContent=`${r?.label??i}${a?this.state.sortDir==="asc"?" ▲":" ▼":""}`}}}const C0=["state-live","state-settled","state-stale","state-wait","state-note","state-refused"];function Yt(n,e,t){n!==null&&(n.classList.remove(...C0),e!==null&&n.classList.add(`state-${e}`),t!==void 0&&(n.textContent=t))}function gr(n,e){n?.classList.remove(`state-${e}`)}function P0(n,e,t){n?.classList.toggle(`state-${e}`,t)}class L0{container;order;field=null;constructor(e,t){this.container=e,this.order=t}field_open(){this.order.host_prepare(this.container);const e=document.createElement("div");return e.className="listing-field",this.container.appendChild(e),this.field=e,$s(e,{rows:".listing-row"}),e}field_get(){return this.field}}function W0(n){return n.map(e=>({key:e.key,label:e.label}))}function k0(n){const e=new Map(n.map(t=>[t.key,t]));return(t,s)=>{const i=e.get(s);if(i===void 0)return"";if(i.compare!==void 0)return i.compare(t);const r=i.cell(t);return r instanceof Node?r.textContent??"":r==null?"":String(r)}}function U0(n,e,t){const s=document.createElement("div");s.className=t.className(n);for(const i of t.leading?.(n)??[])s.appendChild(i);for(const i of e){const r=i.cell(n);if(r instanceof Node){s.appendChild(r);continue}const a=document.createElement("span");a.className=i.className,a.textContent=r==null?"":String(r),s.appendChild(a)}return t.decorate?.(s,n),s}function Ta(n){let e=0,t=0,s=!1;for(const i of n)e+=i.done,t+=i.total,s=s||i.failed===!0;return{done:e,total:t,...s?{failed:!0}:{}}}function Vo(n){const e=document.createElement("span");if(e.className="listing-progress",n===null||n.total===0)return e.classList.add("listing-progress-idle"),e.title=n===null?"no work":"nothing scheduled yet",e;const t=n.failed===!0,s=n.done>=n.total,i=t&&n.succeeded!==void 0?n.succeeded:n.done,r=Math.min(1,Math.max(0,i/n.total));e.classList.add(t?"listing-progress-failed":s?"listing-progress-done":"listing-progress-running"),e.title=t&&n.succeeded!==void 0?`${n.succeeded}/${n.total} succeeded — errored`:`${n.done}/${n.total}`;const a=document.createElement("span");return a.className="listing-progress-fill",a.style.width=`${Math.round(r*100)}%`,e.appendChild(a),e}function zo(n,e){const t=document.createElement("span");t.className="listing-actions";for(const s of e){if(s.offered!==void 0&&!s.offered(n))continue;const i=document.createElement("button");i.className="listing-action",i.textContent=s.label,s.disabled?.(n)===!0&&(i.disabled=!0),s.selected?.(n)===!0&&i.classList.add("listing-action-selected"),i.addEventListener("click",r=>{r.stopPropagation(),s.run(n)}),t.appendChild(i)}return t}function F0(n,e){return n.mode==="fold"&&n.open.has(e)}function j0(n,e){return n.mode!=="fold"||n.open.delete(e)?!1:(n.open.add(e),!0)}function hh(n){const e=n.trim();if(/^(auto|min-content|max-content)$/.test(e)||/^fit-content\(/.test(e))return!1;const t=/^minmax\(\s*([^,]+?)\s*,\s*([^)]+?)\s*\)$/.exec(e);if(t!==null){const s=t[1]??"";return/^(?:[1-9]\d*|0*\.\d*[1-9]\d*|[1-9]\d*\.\d+)(px|em|rem|ch|vw|vh|%)$/.test(s)}return/^(?:\d+\.?\d*|\.\d+)(px|em|rem|ch|vw|vh|%|fr)$/.test(e)}function $0(n){let e=0;for(const t of n){if(t.capped!==!1)break;e+=1}return e}function Mr(n,e){return{level_visit(t){return t(n,e)}}}function fh(n,e){const t=[];let s=!1;for(const i of n){if(i.width===void 0||i.width.trim()==="")throw new Error(`listing trait '${i.key}' declares no width`);if(!hh(i.width))throw new Error(`listing trait '${i.key}' declares a content-sized track '${i.width.trim()}': a row is its own grid, so a track sized to its content sizes per row and jogs every column after it`);if(i.capped===!1){if(s)throw new Error(`uncapped listing trait '${i.key}' must lead the traits`)}else s=!0;t.push(i.width.trim())}if(e!==void 0){if(e.width===void 0||e.width.trim()==="")throw new Error("listing actions on the row declare no track; declare a width, or a row zone for the verbs to ride");if(!hh(e.width))throw new Error(`listing actions declare a content-sized track '${e.width.trim()}'`);t.push(e.width.trim())}return t.join(" ")}let ha=new Map,wo=new Map;function V0(n){if(ha=new Map,wo=new Map,n!==null)for(const e of n.handles)ha.has(e.address)||ha.set(e.address,e),wo.set(e.kind,Math.max(wo.get(e.kind)??0,`${e.ordinal}`.length));Tm()}function Dm(n){const e=Math.max(3,wo.get(n.kind)??0);return`${n.kind}${`${n.ordinal}`.padStart(e,"0")}`}function Tm(){const n=new Map;for(const e of document.querySelectorAll(".listing-index")){const t=e.closest(".listing-row"),s=t?.parentElement??null;if(t===null||s===null)continue;if(t.classList.contains("listing-lead")){e.textContent="",e.classList.remove("numbered");continue}const i=n.get(s);i===void 0?n.set(s,[t]):i.push(t)}for(const e of n.values()){const t=`${Math.max(e.length,1)}`.length;e.forEach((s,i)=>{const r=s.querySelector(".listing-index");if(r===null)return;const a=r.dataset.address,o=a===void 0?void 0:ha.get(a);r.textContent=o===void 0?`${i+1}`.padStart(t,"0"):Dm(o),r.classList.toggle("numbered",o!==void 0)})}}function H0(n){return{key:"index",label:"",className:"listing-index-cell",width:"5.2rem",capped:!1,cell:e=>{const t=document.createElement("span");t.className="listing-index";const s=n?.(e);s!==void 0&&(t.dataset.address=s);const i=s===void 0?void 0:ha.get(s);return i!==void 0&&(t.textContent=Dm(i),t.classList.add("numbered")),t}}}class nu{declaration;host;select;order;template;child;expansion;rowsByKey=new Map;dataByKey=new Map;cellsByKey=new Map;leadKeys=new Set;indicated=null;depth;constructor(e,t,s,i,r=0){e={...e,traits:[H0(e.address),...e.traits]},this.declaration=e,this.host=t,this.select=i,this.depth=r,this.template=fh(e.traits,this.trackActions_get());const a=e.traits.filter(o=>o.capped!==!1);if(this.order=new N0(W0(a),k0(e.traits),()=>this.host.repaint(),e.defaultSort,$0(e.traits),s,e.terms??[]),this.expansion={mode:e.child===void 0?"replace":"fold",open:new Set},this.child=e.child===void 0?null:this.childSeat_build(e.child),this.child!==null){const o=this.child;this.order.filterChange_observe(l=>o.filter_set(l))}}childSeat_build(e){return e.level_visit((t,s)=>{const i=new nu(s,this.host,!1,null,this.depth+1);return{filter_set:r=>i.filter_set(r),sort_set:(r,a)=>i.sort_set(r,a),survives:r=>i.anyMatch(t(r)),render:(r,a,o)=>{const l=document.createElement("div");l.className="listing-level",l.dataset.depth=String(this.depth+1),l.style.setProperty("--roster-cols",i.template),l.appendChild(i.order.caps_mint()),i.rows_draw(t(r),[],l,o),a.appendChild(l)},forget:()=>i.forget(),open_set:(r,a)=>i.open_set(r,a),open_clear:()=>i.open_clear(),template_at:r=>i.template_at(r)}})}actions_set(e){this.declaration={...this.declaration,...e===null?{actions:void 0}:{actions:e}},this.template=fh(this.declaration.traits,this.trackActions_get())}trackActions_get(){return this.host.framed()?void 0:this.declaration.actions}filter_set(e){this.order.filter_set(e,!1)}sort_set(e,t){this.order.sort_set(e,t),this.child?.sort_set(e,t)}open_set(e,t){if(e===0){if(this.expansion.open.clear(),this.expansion.mode==="fold")for(const s of t)this.expansion.open.add(s);return}this.child?.open_set(e-1,t)}open_clear(){this.expansion.open.clear(),this.child?.open_clear()}template_at(e){if(e===0)return this.template;if(this.child===null)throw new Error(`no listing level at depth ${this.depth+e}`);return this.child.template_at(e-1)}anyMatch(e){return e.some(t=>this.order.matches(t)||(this.child?.survives(t)??!1))}filter_isEmpty(){return this.order.state_get().filter.length===0}rows_keep(e,t){const s=t?[...e]:e.filter(i=>this.order.matches(i)||(this.child?.survives(i)??!1));return this.order.sorted(s)}forget(){this.rowsByKey.clear(),this.dataByKey.clear(),this.cellsByKey.clear(),this.leadKeys.clear(),this.indicated=null,this.child?.forget()}rows_draw(e,t,s,i){for(const a of t)s.appendChild(this.row_build(a,!0));const r=this.rows_keep(e,i);for(const a of r){const o=this.row_build(a,!1);if(this.child===null){s.appendChild(o);continue}const l=this.declaration.key(a),c=this.order.filterText_get()!==""&&!this.order.matches(a)&&(this.child?.survives(a)??!1),d=F0(this.expansion,l)||c,u=document.createElement("div"),h=this.declaration.row?.groupClassName?.(a);u.className=`listing-group${d?" listing-open":""}${h===void 0||h===""?"":` ${h}`}`,u.appendChild(o),d&&(o.classList.add("listing-open"),this.child.render(a,u,i||this.order.matches(a))),s.appendChild(u)}return r.length}row_build(e,t){const s=this.declaration,i=s.key(e),r=this.host.framed(),a=U0(e,s.traits,{className:d=>{const u=s.row?.className?.(d);return u===void 0||u===""?"listing-row":`listing-row ${u}`},decorate:(d,u)=>{if(d.dataset.key=i,s.actions!==void 0&&!r){const h=document.createElement("span");h.className="listing-actions",!t&&s.actions.always===!0&&h.replaceChildren(...zo(u,s.actions.of(u)).childNodes),d.appendChild(h),this.cellsByKey.set(i,h)}s.row?.decorate?.(d,u)}});if(this.rowsByKey.set(i,a),this.dataByKey.set(i,e),t&&(this.leadKeys.add(i),a.classList.add("listing-lead")),s.activatable?.(e)===!1)return a;a.classList.add("listing-activatable");const o=s.actions!==void 0&&s.actions.always!==!0&&s.actions.of(e).length>0,l=!t&&this.child!==null,c=this.controlCell_of(a);return a.addEventListener("click",d=>{if(!(!t&&this.select!==null&&this.select(i,e))){if(c!==null&&d.target instanceof Node&&c.contains(d.target)){l||this.row_indicate(null),this.row_activate(e,i,t);return}if(!o){this.row_activate(e,i,t);return}this.row_indicate(i),l&&c===null&&this.row_activate(e,i,!1)}}),o&&!l&&a.addEventListener("dblclick",()=>{this.row_indicate(null),this.row_activate(e,i,t)}),a}controlCell_of(e){const t=this.declaration.control;if(t===void 0)return null;const s=this.declaration.traits.findIndex(r=>r.key===t);if(s<0)throw new Error(`listing level declares control '${t}', which names no trait`);const i=e.children[s];return i instanceof HTMLElement?(i.classList.add("listing-control"),i):null}row_activate(e,t,s){if(!s&&this.child!==null){j0(this.expansion,t),this.host.repaint(),this.declaration.activate?.(e);return}this.host.activating_is(t)||(this.host.activation_begin(t,this.rowsByKey.get(t)??null,X0(t)),this.declaration.activate?.(e))}row_indicate(e,t=!1){const s=this.host.framed();if(this.indication_drop(),e===null){this.host.indication_release(this);return}const i=this.dataByKey.get(e),r=this.rowsByKey.get(e);if(i===void 0||r===void 0){this.host.indication_release(this);return}this.indicated=e,r.classList.add("listing-indicated");const a=this.declaration.actions?.of(i)??[];if(this.host.indication_claim({level:this,key:e,drop:()=>this.indication_drop(),restore:()=>this.rowsByKey.has(e)?(this.row_indicate(e,!0),!0):!1}),s)this.host.zoneVerbs_set([...zo(i,a).childNodes]);else{const o=this.cellsByKey.get(e);o!==void 0&&a.length>0&&o.replaceChildren(...zo(i,a).childNodes)}t||this.declaration.indicated?.(i)}indication_drop(){this.indicated!==null&&(this.cellsByKey.get(this.indicated)?.replaceChildren(),this.rowsByKey.get(this.indicated)?.classList.remove("listing-indicated"),this.indicated=null)}indicated_get(){return this.indicated}readout_show(e,t){if(this.indicated!==e)return;if(this.host.framed()){this.host.zoneReadout_set(t);return}const s=this.cellsByKey.get(e);if(s===void 0)return;const i=document.createElement("span");i.className="listing-readout",i.append(t),s.querySelector(".listing-readout")?.remove(),s.appendChild(i)}row_element(e){return this.rowsByKey.get(e)??null}keys_onStage(){return[...this.rowsByKey.keys()].filter(e=>!this.leadKeys.has(e))}}class Si{declaration;level;host;gridHost;stateSpan;activating=null;filterBlock;selectBlock;zone;wired=!1;zonePane_get(){return this.zone?.closest(".workspace-pane, [data-frame-host]")??null}zoneOpened=!1;claim=null;blocks=[];field=null;painter=null;selecting=!1;selection=new Map;repaintQueued=!1;constructor(e){if(this.declaration=e,this.gridHost=e.gridHost??e.mount,this.zone=e.rowZone??q0(e.mount,e.chrome?.prefix),e.selection!==void 0&&this.zone===null)throw new Error("a listing that selects declares a row zone: a selection's verbs ride the frame");this.level=new nu(e,{repaint:()=>this.repaint_queue(),framed:()=>this.zone!==null,activating_is:s=>this.activating?.key===s,activation_begin:(s,i,r)=>this.activation_begin(s,i,r),zoneVerbs_set:s=>this.zoneVerbs_set(s),zoneReadout_set:s=>this.zoneReadout_set(s),indication_claim:s=>{this.claim!==null&&this.claim.level!==s.level&&this.claim.drop(),this.claim=s},indication_release:s=>{this.claim===null||this.claim.level!==s||(this.claim=null,this.zoneVerbs_set([]))}},e.caps!=="each",e.selection===void 0?null:(s,i)=>this.selection_gather(s,i)),this.host=new L0(e.mount,this.level.order),this.gridHost.style.setProperty("--roster-cols",this.level.template),this.zone!==null&&(this.zone.classList.add("listing-zone"),this.zone.hidden=!0,e.mount.classList.add("listing-framed"),this.zone_wire());const t=e.chrome;this.stateSpan=t?.root.querySelector(".pane-state")??null,this.filterBlock=t?.root.querySelector(`.${t.prefix}-filter`)??null,this.selectBlock=t?.root.querySelector(`.${t.prefix}-select`)??null,this.filterBlock?.classList.add("rail-off"),this.filterBlock?.addEventListener("click",()=>this.filter_toggle()),this.level.order.stripChange_observe(()=>this.filterBlock_sync()),this.selectBlock?.addEventListener("click",()=>this.select_toggle()),t?.root.addEventListener("argus:roster",s=>{const i=s.detail;i.op==="sort"?this.level.sort_set(i.key,i.dir??"asc"):i.text===""?this.level.order.strip_toggle(!1):this.level.order.filter_set(i.text)}),this.filterBlock_sync()}rows_set(e,t){this.field!==null&&t.field!==this.field&&(this.selection.clear(),this.claim?.drop(),this.claim=null),this.field=t.field,this.blocks=e,this.activation_settle(),this.render()}activation_begin(e,t,s){this.activating?.element?.classList.remove("listing-activating"),this.activating={key:e,element:t},t?.classList.add("listing-activating"),Yt(this.stateSpan,"wait",`OPENING ${s}`)}activation_settle(){this.activating!==null&&(this.activating.element?.classList.remove("listing-activating"),this.activating=null,gr(this.stateSpan,"wait"))}activation_refuse(e){this.activating!==null&&(this.activation_settle(),Yt(this.stateSpan,"refused",e.toUpperCase()))}activating_get(){return this.activating?.key??null}repaint_queue(){this.repaintQueued||(this.repaintQueued=!0,window.requestAnimationFrame(()=>{this.repaintQueued=!1,this.render()}))}render(){this.level.forget();const e=this.host.field_open(),t=this.level.filter_isEmpty();let s=0,i=0;const r=this.blocks.reduce((a,o)=>a+o.rows.length,0);this.blocks.length>0&&r===0&&this.declaration.empty!==void 0&&e.appendChild(this.declaration.empty());for(const a of this.blocks){const o=document.createElement("section");if(o.className="listing-block",o.dataset.key=a.key,a.header!==void 0&&o.appendChild(a.header),this.declaration.caps==="each"&&o.appendChild(this.level.order.caps_mint()),i+=a.rows.length,this.painter!==null){const l=this.level.rows_keep(a.rows,t);s+=l.length,this.painter({...a,rows:l},o)}else{const l=document.createElement("div");l.className="listing-rows",s+=this.level.rows_draw(a.rows,a.lead??[],l,t),o.appendChild(l)}e.appendChild(o)}this.level.order.counts_set(s,i),Tm(),this.claim!==null&&!this.claim.restore()&&(this.claim=null,this.zoneVerbs_set([])),this.selection_render(),this.state_render()}row_indicate(e){if(e===null){this.claim?.drop();const t=this.claim;this.claim=null,t!==null&&this.zoneVerbs_set([]);return}this.level.row_indicate(e)}indicated_get(){return this.claim?.key??null}indication_refresh(){this.claim!==null&&(this.claim.restore()||(this.claim=null,this.zoneVerbs_set([])))}readout_show(e,t){this.level.readout_show(e,t)}row_element(e){return this.level.row_element(e)}template_get(e=0){return this.level.template_at(e)}field_get(){return this.host.field_get()}open_set(e,t){this.level.open_set(e,t),this.field!==null&&this.render()}open_clear(){this.level.open_clear()}painter_set(e){this.painter=e}actions_declare(e){this.level.actions_set(e),this.gridHost.style.setProperty("--roster-cols",this.level.template),this.field!==null&&this.render()}filter_toggle(e){this.level.order.strip_toggle(e)}filter_set(e){this.level.order.filter_set(e)}filterText_get(){return this.level.order.filterText_get()}filterBlock_sync(){if(this.filterBlock===null)return;const e=this.level.order.strip_isOpen();this.filterBlock.textContent=e?"FILTER ON":"FILTER OFF",this.filterBlock.classList.toggle("rail-off",!e)}select_toggle(e){this.declaration.selection!==void 0&&(this.selecting=e??!this.selecting,this.zoneOpened=!1,this.claim!==null&&this.row_indicate(null),this.declaration.mount.classList.toggle("listing-selecting",this.selecting),this.selectBlock?.classList.toggle("rail-off",!this.selecting),this.selectBlock!==null&&(this.selectBlock.textContent=this.selecting?"SELECT ON":"SELECT OFF"),this.selection_render(),this.state_render())}select_isOn(){return this.selecting}selection_get(){return[...this.selection.keys()]}selection_gather(e,t){return this.selecting?(this.selection.has(e)?this.selection.delete(e):this.selection.set(e,t),this.selection_render(),this.state_render(),!0):!1}selection_render(){for(const s of this.level.keys_onStage())this.level.row_element(s)?.classList.toggle("listing-selected",this.selection.has(s));if(this.zone===null)return;if(!this.selecting){this.claim===null&&this.zoneVerbs_set([]);return}const e=[...this.selection.entries()],t=e.length>0?this.declaration.selection?.verbs(e)??[]:[];this.zoneVerbs_set(t.length===0?[]:[...zo(void 0,t).childNodes])}zone_wire(){const e=this.zone,t=this.zonePane_get();if(e===null||t===null||this.wired)return;this.wired=!0,e.closest(".mode-frame")?.addEventListener("click",i=>{i.target instanceof Node&&e.contains(i.target)||(this.zoneOpened=!1)},!0),new MutationObserver(()=>{t.dataset.modes!=="open"&&(this.zoneOpened=!1,this.claim!==null&&this.row_indicate(null))}).observe(t,{attributes:!0,attributeFilter:["data-modes"]})}zoneVerbs_set(e){const t=this.zone;if(t===null)return;t.replaceChildren(...e),t.hidden=e.length===0,this.wired||this.zone_wire();const s=this.zonePane_get();if(s!==null){if(e.length>0){s.dataset.modes!=="open"&&(s.dataset.modes="open",this.zoneOpened=!0);return}this.zoneOpened&&(this.zoneOpened=!1,delete s.dataset.modes)}}zoneReadout_set(e){const t=this.zone;if(t===null)return;t.querySelector(".listing-readout")?.remove();const s=document.createElement("span");s.className="listing-readout",s.append(e),t.appendChild(s),t.hidden=!1}selectionShown_count(){let e=0;for(const t of this.selection.keys())this.level.row_element(t)!==null&&(e+=1);return e}state_refresh(){this.state_render()}state_render(){if(this.stateSpan===null)return;const e={filter:this.level.order.summary(),selecting:this.selecting,selected:this.selection.size,shown:this.selectionShown_count()},t=this.declaration.state!==void 0?this.declaration.state(e):K0(e);t!==null&&(this.stateSpan.textContent=t)}}function q0(n,e){const t=n.parentElement?.querySelector(":scope > .mode-frame")??null;if(t===null)return null;const s=document.createElement("span");s.className=e===void 0?"listing-zone":`listing-zone ${e}-row-zone`,s.hidden=!0;const i=t.querySelector(":scope > .mode-fill");return i!==null?t.insertBefore(s,i):t.appendChild(s),s}function X0(n){return n.split("/").filter(e=>e!=="").pop()??n}function K0(n){const e=[];return n.selecting&&e.push("SELECT"),n.filter!==""&&e.push(n.filter),n.selected>0&&e.push(n.shown===n.selected?`${n.selected} SELECTED`:`${n.selected} SELECTED · ${n.shown} SHOWN`),e.join(" · ")}const Y0=["single","mpr","3d","slab"],ph=["wl","zoom","pan","length","angle","probe"],yo=["gray","hot","jet","cool"],Im=[{name:"brain",lower:0,upper:80,modalities:["CT"]},{name:"bone",lower:-500,upper:1300,modalities:["CT"]},{name:"lung",lower:-1400,upper:200,modalities:["CT"]},{name:"soft",lower:-160,upper:240,modalities:["CT"]},{name:"liver",lower:-10,upper:140,modalities:["CT"]}],Hc=/\.(nii|nii\.gz|mgz|mgh)$/i,Ho=/\.dcm$/i,Gm=/^\d+-.*-[0-9a-f]{7}$/,mh="/SERVICES/PACS/",Z0=4;function Al(n,e){if(Gm.test(e))return!0;if(!n.startsWith(mh))return!1;const t=n.slice(mh.length).replace(/\/+$/,"");return t!==""&&t.split("/").length===Z0}function Q0(n,e){const t=n.toLowerCase();return Im.find(s=>s.name===t&&(s.modalities.length===0||s.modalities.includes(e.toUpperCase())))}const Jn={charge:!0,link:!0,collide:!0,gravity:!1},St=.55;function bi(n,e,t){var s,i=1;n==null&&(n=0),e==null&&(e=0),t==null&&(t=0);function r(){var a,o=s.length,l,c=0,d=0,u=0;for(a=0;a<o;++a)l=s[a],c+=l.x||0,d+=l.y||0,u+=l.z||0;for(c=(c/o-n)*i,d=(d/o-e)*i,u=(u/o-t)*i,a=0;a<o;++a)l=s[a],c&&(l.x-=c),d&&(l.y-=d),u&&(l.z-=u)}return r.initialize=function(a){s=a},r.x=function(a){return arguments.length?(n=+a,r):n},r.y=function(a){return arguments.length?(e=+a,r):e},r.z=function(a){return arguments.length?(t=+a,r):t},r.strength=function(a){return arguments.length?(i=+a,r):i},r}function J0(n){const e=+this._x.call(null,n);return Rm(this.cover(e),e,n)}function Rm(n,e,t){if(isNaN(e))return n;var s,i=n._root,r={data:t},a=n._x0,o=n._x1,l,c,d,u,h;if(!i)return n._root=r,n;for(;i.length;)if((d=e>=(l=(a+o)/2))?a=l:o=l,s=i,!(i=i[u=+d]))return s[u]=r,n;if(c=+n._x.call(null,i.data),e===c)return r.next=i,s?s[u]=r:n._root=r,n;do s=s?s[u]=new Array(2):n._root=new Array(2),(d=e>=(l=(a+o)/2))?a=l:o=l;while((u=+d)==(h=+(c>=l)));return s[h]=i,s[u]=r,n}function ez(n){Array.isArray(n)||(n=Array.from(n));const e=n.length,t=new Float64Array(e);let s=1/0,i=-1/0;for(let r=0,a;r<e;++r)isNaN(a=+this._x.call(null,n[r]))||(t[r]=a,a<s&&(s=a),a>i&&(i=a));if(s>i)return this;this.cover(s).cover(i);for(let r=0;r<e;++r)Rm(this,t[r],n[r]);return this}function tz(n){if(isNaN(n=+n))return this;var e=this._x0,t=this._x1;if(isNaN(e))t=(e=Math.floor(n))+1;else{for(var s=t-e||1,i=this._root,r,a;e>n||n>=t;)switch(a=+(n<e),r=new Array(2),r[a]=i,i=r,s*=2,a){case 0:t=e+s;break;case 1:e=t-s;break}this._root&&this._root.length&&(this._root=i)}return this._x0=e,this._x1=t,this}function sz(){var n=[];return this.visit(function(e){if(!e.length)do n.push(e.data);while(e=e.next)}),n}function nz(n){return arguments.length?this.cover(+n[0][0]).cover(+n[1][0]):isNaN(this._x0)?void 0:[[this._x0],[this._x1]]}function xn(n,e,t){this.node=n,this.x0=e,this.x1=t}function iz(n,e){var t,s=this._x0,i,r,a=this._x1,o=[],l=this._root,c,d;for(l&&o.push(new xn(l,s,a)),e==null?e=1/0:(s=n-e,a=n+e);c=o.pop();)if(!(!(l=c.node)||(i=c.x0)>a||(r=c.x1)<s))if(l.length){var u=(i+r)/2;o.push(new xn(l[1],u,r),new xn(l[0],i,u)),(d=+(n>=u))&&(c=o[o.length-1],o[o.length-1]=o[o.length-1-d],o[o.length-1-d]=c)}else{var h=Math.abs(n-+this._x.call(null,l.data));h<e&&(e=h,s=n-h,a=n+h,t=l.data)}return t}function rz(n){if(isNaN(l=+this._x.call(null,n)))return this;var e,t=this._root,s,i,r,a=this._x0,o=this._x1,l,c,d,u,h;if(!t)return this;if(t.length)for(;;){if((d=l>=(c=(a+o)/2))?a=c:o=c,e=t,!(t=t[u=+d]))return this;if(!t.length)break;e[u+1&1]&&(s=e,h=u)}for(;t.data!==n;)if(i=t,!(t=t.next))return this;return(r=t.next)&&delete t.next,i?(r?i.next=r:delete i.next,this):e?(r?e[u]=r:delete e[u],(t=e[0]||e[1])&&t===(e[1]||e[0])&&!t.length&&(s?s[h]=t:this._root=t),this):(this._root=r,this)}function az(n){for(var e=0,t=n.length;e<t;++e)this.remove(n[e]);return this}function oz(){return this._root}function lz(){var n=0;return this.visit(function(e){if(!e.length)do++n;while(e=e.next)}),n}function cz(n){var e=[],t,s=this._root,i,r,a;for(s&&e.push(new xn(s,this._x0,this._x1));t=e.pop();)if(!n(s=t.node,r=t.x0,a=t.x1)&&s.length){var o=(r+a)/2;(i=s[1])&&e.push(new xn(i,o,a)),(i=s[0])&&e.push(new xn(i,r,o))}return this}function dz(n){var e=[],t=[],s;for(this._root&&e.push(new xn(this._root,this._x0,this._x1));s=e.pop();){var i=s.node;if(i.length){var r,a=s.x0,o=s.x1,l=(a+o)/2;(r=i[0])&&e.push(new xn(r,a,l)),(r=i[1])&&e.push(new xn(r,l,o))}t.push(s)}for(;s=t.pop();)n(s.node,s.x0,s.x1);return this}function uz(n){return n[0]}function hz(n){return arguments.length?(this._x=n,this):this._x}function iu(n,e){var t=new ru(e??uz,NaN,NaN);return n==null?t:t.addAll(n)}function ru(n,e,t){this._x=n,this._x0=e,this._x1=t,this._root=void 0}function gh(n){for(var e={data:n.data},t=e;n=n.next;)t=t.next={data:n.data};return e}var gs=iu.prototype=ru.prototype;gs.copy=function(){var n=new ru(this._x,this._x0,this._x1),e=this._root,t,s;if(!e)return n;if(!e.length)return n._root=gh(e),n;for(t=[{source:e,target:n._root=new Array(2)}];e=t.pop();)for(var i=0;i<2;++i)(s=e.source[i])&&(s.length?t.push({source:s,target:e.target[i]=new Array(2)}):e.target[i]=gh(s));return n};gs.add=J0;gs.addAll=ez;gs.cover=tz;gs.data=sz;gs.extent=nz;gs.find=iz;gs.remove=rz;gs.removeAll=az;gs.root=oz;gs.size=lz;gs.visit=cz;gs.visitAfter=dz;gs.x=hz;function fz(n){const e=+this._x.call(null,n),t=+this._y.call(null,n);return Bm(this.cover(e,t),e,t,n)}function Bm(n,e,t,s){if(isNaN(e)||isNaN(t))return n;var i,r=n._root,a={data:s},o=n._x0,l=n._y0,c=n._x1,d=n._y1,u,h,p,f,b,g,m,_;if(!r)return n._root=a,n;for(;r.length;)if((b=e>=(u=(o+c)/2))?o=u:c=u,(g=t>=(h=(l+d)/2))?l=h:d=h,i=r,!(r=r[m=g<<1|b]))return i[m]=a,n;if(p=+n._x.call(null,r.data),f=+n._y.call(null,r.data),e===p&&t===f)return a.next=r,i?i[m]=a:n._root=a,n;do i=i?i[m]=new Array(4):n._root=new Array(4),(b=e>=(u=(o+c)/2))?o=u:c=u,(g=t>=(h=(l+d)/2))?l=h:d=h;while((m=g<<1|b)===(_=(f>=h)<<1|p>=u));return i[_]=r,i[m]=a,n}function pz(n){var e,t,s=n.length,i,r,a=new Array(s),o=new Array(s),l=1/0,c=1/0,d=-1/0,u=-1/0;for(t=0;t<s;++t)isNaN(i=+this._x.call(null,e=n[t]))||isNaN(r=+this._y.call(null,e))||(a[t]=i,o[t]=r,i<l&&(l=i),i>d&&(d=i),r<c&&(c=r),r>u&&(u=r));if(l>d||c>u)return this;for(this.cover(l,c).cover(d,u),t=0;t<s;++t)Bm(this,a[t],o[t],n[t]);return this}function mz(n,e){if(isNaN(n=+n)||isNaN(e=+e))return this;var t=this._x0,s=this._y0,i=this._x1,r=this._y1;if(isNaN(t))i=(t=Math.floor(n))+1,r=(s=Math.floor(e))+1;else{for(var a=i-t||1,o=this._root,l,c;t>n||n>=i||s>e||e>=r;)switch(c=(e<s)<<1|n<t,l=new Array(4),l[c]=o,o=l,a*=2,c){case 0:i=t+a,r=s+a;break;case 1:t=i-a,r=s+a;break;case 2:i=t+a,s=r-a;break;case 3:t=i-a,s=r-a;break}this._root&&this._root.length&&(this._root=o)}return this._x0=t,this._y0=s,this._x1=i,this._y1=r,this}function gz(){var n=[];return this.visit(function(e){if(!e.length)do n.push(e.data);while(e=e.next)}),n}function Mz(n){return arguments.length?this.cover(+n[0][0],+n[0][1]).cover(+n[1][0],+n[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]}function ds(n,e,t,s,i){this.node=n,this.x0=e,this.y0=t,this.x1=s,this.y1=i}function bz(n,e,t){var s,i=this._x0,r=this._y0,a,o,l,c,d=this._x1,u=this._y1,h=[],p=this._root,f,b;for(p&&h.push(new ds(p,i,r,d,u)),t==null?t=1/0:(i=n-t,r=e-t,d=n+t,u=e+t,t*=t);f=h.pop();)if(!(!(p=f.node)||(a=f.x0)>d||(o=f.y0)>u||(l=f.x1)<i||(c=f.y1)<r))if(p.length){var g=(a+l)/2,m=(o+c)/2;h.push(new ds(p[3],g,m,l,c),new ds(p[2],a,m,g,c),new ds(p[1],g,o,l,m),new ds(p[0],a,o,g,m)),(b=(e>=m)<<1|n>=g)&&(f=h[h.length-1],h[h.length-1]=h[h.length-1-b],h[h.length-1-b]=f)}else{var _=n-+this._x.call(null,p.data),y=e-+this._y.call(null,p.data),z=_*_+y*y;if(z<t){var w=Math.sqrt(t=z);i=n-w,r=e-w,d=n+w,u=e+w,s=p.data}}return s}function _z(n){if(isNaN(d=+this._x.call(null,n))||isNaN(u=+this._y.call(null,n)))return this;var e,t=this._root,s,i,r,a=this._x0,o=this._y0,l=this._x1,c=this._y1,d,u,h,p,f,b,g,m;if(!t)return this;if(t.length)for(;;){if((f=d>=(h=(a+l)/2))?a=h:l=h,(b=u>=(p=(o+c)/2))?o=p:c=p,e=t,!(t=t[g=b<<1|f]))return this;if(!t.length)break;(e[g+1&3]||e[g+2&3]||e[g+3&3])&&(s=e,m=g)}for(;t.data!==n;)if(i=t,!(t=t.next))return this;return(r=t.next)&&delete t.next,i?(r?i.next=r:delete i.next,this):e?(r?e[g]=r:delete e[g],(t=e[0]||e[1]||e[2]||e[3])&&t===(e[3]||e[2]||e[1]||e[0])&&!t.length&&(s?s[m]=t:this._root=t),this):(this._root=r,this)}function zz(n){for(var e=0,t=n.length;e<t;++e)this.remove(n[e]);return this}function wz(){return this._root}function yz(){var n=0;return this.visit(function(e){if(!e.length)do++n;while(e=e.next)}),n}function vz(n){var e=[],t,s=this._root,i,r,a,o,l;for(s&&e.push(new ds(s,this._x0,this._y0,this._x1,this._y1));t=e.pop();)if(!n(s=t.node,r=t.x0,a=t.y0,o=t.x1,l=t.y1)&&s.length){var c=(r+o)/2,d=(a+l)/2;(i=s[3])&&e.push(new ds(i,c,d,o,l)),(i=s[2])&&e.push(new ds(i,r,d,c,l)),(i=s[1])&&e.push(new ds(i,c,a,o,d)),(i=s[0])&&e.push(new ds(i,r,a,c,d))}return this}function Oz(n){var e=[],t=[],s;for(this._root&&e.push(new ds(this._root,this._x0,this._y0,this._x1,this._y1));s=e.pop();){var i=s.node;if(i.length){var r,a=s.x0,o=s.y0,l=s.x1,c=s.y1,d=(a+l)/2,u=(o+c)/2;(r=i[0])&&e.push(new ds(r,a,o,d,u)),(r=i[1])&&e.push(new ds(r,d,o,l,u)),(r=i[2])&&e.push(new ds(r,a,u,d,c)),(r=i[3])&&e.push(new ds(r,d,u,l,c))}t.push(s)}for(;s=t.pop();)n(s.node,s.x0,s.y0,s.x1,s.y1);return this}function xz(n){return n[0]}function Sz(n){return arguments.length?(this._x=n,this):this._x}function Ez(n){return n[1]}function Az(n){return arguments.length?(this._y=n,this):this._y}function au(n,e,t){var s=new ou(e??xz,t??Ez,NaN,NaN,NaN,NaN);return n==null?s:s.addAll(n)}function ou(n,e,t,s,i,r){this._x=n,this._y=e,this._x0=t,this._y0=s,this._x1=i,this._y1=r,this._root=void 0}function Mh(n){for(var e={data:n.data},t=e;n=n.next;)t=t.next={data:n.data};return e}var hs=au.prototype=ou.prototype;hs.copy=function(){var n=new ou(this._x,this._y,this._x0,this._y0,this._x1,this._y1),e=this._root,t,s;if(!e)return n;if(!e.length)return n._root=Mh(e),n;for(t=[{source:e,target:n._root=new Array(4)}];e=t.pop();)for(var i=0;i<4;++i)(s=e.source[i])&&(s.length?t.push({source:s,target:e.target[i]=new Array(4)}):e.target[i]=Mh(s));return n};hs.add=fz;hs.addAll=pz;hs.cover=mz;hs.data=gz;hs.extent=Mz;hs.find=bz;hs.remove=_z;hs.removeAll=zz;hs.root=wz;hs.size=yz;hs.visit=vz;hs.visitAfter=Oz;hs.x=Sz;hs.y=Az;function Dz(n){const e=+this._x.call(null,n),t=+this._y.call(null,n),s=+this._z.call(null,n);return Nm(this.cover(e,t,s),e,t,s,n)}function Nm(n,e,t,s,i){if(isNaN(e)||isNaN(t)||isNaN(s))return n;var r,a=n._root,o={data:i},l=n._x0,c=n._y0,d=n._z0,u=n._x1,h=n._y1,p=n._z1,f,b,g,m,_,y,z,w,O,S,M;if(!a)return n._root=o,n;for(;a.length;)if((z=e>=(f=(l+u)/2))?l=f:u=f,(w=t>=(b=(c+h)/2))?c=b:h=b,(O=s>=(g=(d+p)/2))?d=g:p=g,r=a,!(a=a[S=O<<2|w<<1|z]))return r[S]=o,n;if(m=+n._x.call(null,a.data),_=+n._y.call(null,a.data),y=+n._z.call(null,a.data),e===m&&t===_&&s===y)return o.next=a,r?r[S]=o:n._root=o,n;do r=r?r[S]=new Array(8):n._root=new Array(8),(z=e>=(f=(l+u)/2))?l=f:u=f,(w=t>=(b=(c+h)/2))?c=b:h=b,(O=s>=(g=(d+p)/2))?d=g:p=g;while((S=O<<2|w<<1|z)===(M=(y>=g)<<2|(_>=b)<<1|m>=f));return r[M]=a,r[S]=o,n}function Tz(n){Array.isArray(n)||(n=Array.from(n));const e=n.length,t=new Float64Array(e),s=new Float64Array(e),i=new Float64Array(e);let r=1/0,a=1/0,o=1/0,l=-1/0,c=-1/0,d=-1/0;for(let u=0,h,p,f,b;u<e;++u)isNaN(p=+this._x.call(null,h=n[u]))||isNaN(f=+this._y.call(null,h))||isNaN(b=+this._z.call(null,h))||(t[u]=p,s[u]=f,i[u]=b,p<r&&(r=p),p>l&&(l=p),f<a&&(a=f),f>c&&(c=f),b<o&&(o=b),b>d&&(d=b));if(r>l||a>c||o>d)return this;this.cover(r,a,o).cover(l,c,d);for(let u=0;u<e;++u)Nm(this,t[u],s[u],i[u],n[u]);return this}function Iz(n,e,t){if(isNaN(n=+n)||isNaN(e=+e)||isNaN(t=+t))return this;var s=this._x0,i=this._y0,r=this._z0,a=this._x1,o=this._y1,l=this._z1;if(isNaN(s))a=(s=Math.floor(n))+1,o=(i=Math.floor(e))+1,l=(r=Math.floor(t))+1;else{for(var c=a-s||1,d=this._root,u,h;s>n||n>=a||i>e||e>=o||r>t||t>=l;)switch(h=(t<r)<<2|(e<i)<<1|n<s,u=new Array(8),u[h]=d,d=u,c*=2,h){case 0:a=s+c,o=i+c,l=r+c;break;case 1:s=a-c,o=i+c,l=r+c;break;case 2:a=s+c,i=o-c,l=r+c;break;case 3:s=a-c,i=o-c,l=r+c;break;case 4:a=s+c,o=i+c,r=l-c;break;case 5:s=a-c,o=i+c,r=l-c;break;case 6:a=s+c,i=o-c,r=l-c;break;case 7:s=a-c,i=o-c,r=l-c;break}this._root&&this._root.length&&(this._root=d)}return this._x0=s,this._y0=i,this._z0=r,this._x1=a,this._y1=o,this._z1=l,this}function Gz(){var n=[];return this.visit(function(e){if(!e.length)do n.push(e.data);while(e=e.next)}),n}function Rz(n){return arguments.length?this.cover(+n[0][0],+n[0][1],+n[0][2]).cover(+n[1][0],+n[1][1],+n[1][2]):isNaN(this._x0)?void 0:[[this._x0,this._y0,this._z0],[this._x1,this._y1,this._z1]]}function Et(n,e,t,s,i,r,a){this.node=n,this.x0=e,this.y0=t,this.z0=s,this.x1=i,this.y1=r,this.z1=a}function Bz(n,e,t,s){var i,r=this._x0,a=this._y0,o=this._z0,l,c,d,u,h,p,f=this._x1,b=this._y1,g=this._z1,m=[],_=this._root,y,z;for(_&&m.push(new Et(_,r,a,o,f,b,g)),s==null?s=1/0:(r=n-s,a=e-s,o=t-s,f=n+s,b=e+s,g=t+s,s*=s);y=m.pop();)if(!(!(_=y.node)||(l=y.x0)>f||(c=y.y0)>b||(d=y.z0)>g||(u=y.x1)<r||(h=y.y1)<a||(p=y.z1)<o))if(_.length){var w=(l+u)/2,O=(c+h)/2,S=(d+p)/2;m.push(new Et(_[7],w,O,S,u,h,p),new Et(_[6],l,O,S,w,h,p),new Et(_[5],w,c,S,u,O,p),new Et(_[4],l,c,S,w,O,p),new Et(_[3],w,O,d,u,h,S),new Et(_[2],l,O,d,w,h,S),new Et(_[1],w,c,d,u,O,S),new Et(_[0],l,c,d,w,O,S)),(z=(t>=S)<<2|(e>=O)<<1|n>=w)&&(y=m[m.length-1],m[m.length-1]=m[m.length-1-z],m[m.length-1-z]=y)}else{var M=n-+this._x.call(null,_.data),v=e-+this._y.call(null,_.data),E=t-+this._z.call(null,_.data),A=M*M+v*v+E*E;if(A<s){var I=Math.sqrt(s=A);r=n-I,a=e-I,o=t-I,f=n+I,b=e+I,g=t+I,i=_.data}}return i}const Nz=(n,e,t,s,i,r)=>Math.sqrt((n-s)**2+(e-i)**2+(t-r)**2);function Cz(n,e,t,s){const i=[],r=n-s,a=e-s,o=t-s,l=n+s,c=e+s,d=t+s;return this.visit((u,h,p,f,b,g,m)=>{if(!u.length)do{const _=u.data;Nz(n,e,t,this._x(_),this._y(_),this._z(_))<=s&&i.push(_)}while(u=u.next);return h>l||p>c||f>d||b<r||g<a||m<o}),i}function Pz(n){if(isNaN(h=+this._x.call(null,n))||isNaN(p=+this._y.call(null,n))||isNaN(f=+this._z.call(null,n)))return this;var e,t=this._root,s,i,r,a=this._x0,o=this._y0,l=this._z0,c=this._x1,d=this._y1,u=this._z1,h,p,f,b,g,m,_,y,z,w,O;if(!t)return this;if(t.length)for(;;){if((_=h>=(b=(a+c)/2))?a=b:c=b,(y=p>=(g=(o+d)/2))?o=g:d=g,(z=f>=(m=(l+u)/2))?l=m:u=m,e=t,!(t=t[w=z<<2|y<<1|_]))return this;if(!t.length)break;(e[w+1&7]||e[w+2&7]||e[w+3&7]||e[w+4&7]||e[w+5&7]||e[w+6&7]||e[w+7&7])&&(s=e,O=w)}for(;t.data!==n;)if(i=t,!(t=t.next))return this;return(r=t.next)&&delete t.next,i?(r?i.next=r:delete i.next,this):e?(r?e[w]=r:delete e[w],(t=e[0]||e[1]||e[2]||e[3]||e[4]||e[5]||e[6]||e[7])&&t===(e[7]||e[6]||e[5]||e[4]||e[3]||e[2]||e[1]||e[0])&&!t.length&&(s?s[O]=t:this._root=t),this):(this._root=r,this)}function Lz(n){for(var e=0,t=n.length;e<t;++e)this.remove(n[e]);return this}function Wz(){return this._root}function kz(){var n=0;return this.visit(function(e){if(!e.length)do++n;while(e=e.next)}),n}function Uz(n){var e=[],t,s=this._root,i,r,a,o,l,c,d;for(s&&e.push(new Et(s,this._x0,this._y0,this._z0,this._x1,this._y1,this._z1));t=e.pop();)if(!n(s=t.node,r=t.x0,a=t.y0,o=t.z0,l=t.x1,c=t.y1,d=t.z1)&&s.length){var u=(r+l)/2,h=(a+c)/2,p=(o+d)/2;(i=s[7])&&e.push(new Et(i,u,h,p,l,c,d)),(i=s[6])&&e.push(new Et(i,r,h,p,u,c,d)),(i=s[5])&&e.push(new Et(i,u,a,p,l,h,d)),(i=s[4])&&e.push(new Et(i,r,a,p,u,h,d)),(i=s[3])&&e.push(new Et(i,u,h,o,l,c,p)),(i=s[2])&&e.push(new Et(i,r,h,o,u,c,p)),(i=s[1])&&e.push(new Et(i,u,a,o,l,h,p)),(i=s[0])&&e.push(new Et(i,r,a,o,u,h,p))}return this}function Fz(n){var e=[],t=[],s;for(this._root&&e.push(new Et(this._root,this._x0,this._y0,this._z0,this._x1,this._y1,this._z1));s=e.pop();){var i=s.node;if(i.length){var r,a=s.x0,o=s.y0,l=s.z0,c=s.x1,d=s.y1,u=s.z1,h=(a+c)/2,p=(o+d)/2,f=(l+u)/2;(r=i[0])&&e.push(new Et(r,a,o,l,h,p,f)),(r=i[1])&&e.push(new Et(r,h,o,l,c,p,f)),(r=i[2])&&e.push(new Et(r,a,p,l,h,d,f)),(r=i[3])&&e.push(new Et(r,h,p,l,c,d,f)),(r=i[4])&&e.push(new Et(r,a,o,f,h,p,u)),(r=i[5])&&e.push(new Et(r,h,o,f,c,p,u)),(r=i[6])&&e.push(new Et(r,a,p,f,h,d,u)),(r=i[7])&&e.push(new Et(r,h,p,f,c,d,u))}t.push(s)}for(;s=t.pop();)n(s.node,s.x0,s.y0,s.z0,s.x1,s.y1,s.z1);return this}function jz(n){return n[0]}function $z(n){return arguments.length?(this._x=n,this):this._x}function Vz(n){return n[1]}function Hz(n){return arguments.length?(this._y=n,this):this._y}function qz(n){return n[2]}function Xz(n){return arguments.length?(this._z=n,this):this._z}function lu(n,e,t,s){var i=new cu(e??jz,t??Vz,s??qz,NaN,NaN,NaN,NaN,NaN,NaN);return n==null?i:i.addAll(n)}function cu(n,e,t,s,i,r,a,o,l){this._x=n,this._y=e,this._z=t,this._x0=s,this._y0=i,this._z0=r,this._x1=a,this._y1=o,this._z1=l,this._root=void 0}function bh(n){for(var e={data:n.data},t=e;n=n.next;)t=t.next={data:n.data};return e}var Jt=lu.prototype=cu.prototype;Jt.copy=function(){var n=new cu(this._x,this._y,this._z,this._x0,this._y0,this._z0,this._x1,this._y1,this._z1),e=this._root,t,s;if(!e)return n;if(!e.length)return n._root=bh(e),n;for(t=[{source:e,target:n._root=new Array(8)}];e=t.pop();)for(var i=0;i<8;++i)(s=e.source[i])&&(s.length?t.push({source:s,target:e.target[i]=new Array(8)}):e.target[i]=bh(s));return n};Jt.add=Dz;Jt.addAll=Tz;Jt.cover=Iz;Jt.data=Gz;Jt.extent=Rz;Jt.find=Bz;Jt.findAllWithinRadius=Cz;Jt.remove=Pz;Jt.removeAll=Lz;Jt.root=Wz;Jt.size=kz;Jt.visit=Uz;Jt.visitAfter=Fz;Jt.x=$z;Jt.y=Hz;Jt.z=Xz;function Ht(n){return function(){return n}}function Ds(n){return(n()-.5)*1e-6}function Dl(n){return n.x+n.vx}function _h(n){return n.y+n.vy}function Kz(n){return n.z+n.vz}function qn(n){var e,t,s,i,r=1,a=1;typeof n!="function"&&(n=Ht(n==null?1:+n));function o(){for(var d,u=e.length,h,p,f,b,g,m,_,y=0;y<a;++y)for(h=(t===1?iu(e,Dl):t===2?au(e,Dl,_h):t===3?lu(e,Dl,_h,Kz):null).visitAfter(l),d=0;d<u;++d)p=e[d],m=s[p.index],_=m*m,f=p.x+p.vx,t>1&&(b=p.y+p.vy),t>2&&(g=p.z+p.vz),h.visit(z);function z(w,O,S,M,v,E,A){var I=[O,S,M,v,E,A],G=I[0],N=I[1],B=I[2],C=I[t],L=I[t+1],H=I[t+2],X=w.data,oe=w.r,te=m+oe;if(X){if(X.index>p.index){var de=f-X.x-X.vx,Le=t>1?b-X.y-X.vy:0,He=t>2?g-X.z-X.vz:0,Ne=de*de+Le*Le+He*He;Ne<te*te&&(de===0&&(de=Ds(i),Ne+=de*de),t>1&&Le===0&&(Le=Ds(i),Ne+=Le*Le),t>2&&He===0&&(He=Ds(i),Ne+=He*He),Ne=(te-(Ne=Math.sqrt(Ne)))/Ne*r,p.vx+=(de*=Ne)*(te=(oe*=oe)/(_+oe)),t>1&&(p.vy+=(Le*=Ne)*te),t>2&&(p.vz+=(He*=Ne)*te),X.vx-=de*(te=1-te),t>1&&(X.vy-=Le*te),t>2&&(X.vz-=He*te))}return}return G>f+te||C<f-te||t>1&&(N>b+te||L<b-te)||t>2&&(B>g+te||H<g-te)}}function l(d){if(d.data)return d.r=s[d.data.index];for(var u=d.r=0;u<Math.pow(2,t);++u)d[u]&&d[u].r>d.r&&(d.r=d[u].r)}function c(){if(e){var d,u=e.length,h;for(s=new Array(u),d=0;d<u;++d)h=e[d],s[h.index]=+n(h,d,e)}}return o.initialize=function(d,...u){e=d,i=u.find(h=>typeof h=="function")||Math.random,t=u.find(h=>[1,2,3].includes(h))||2,c()},o.iterations=function(d){return arguments.length?(a=+d,o):a},o.strength=function(d){return arguments.length?(r=+d,o):r},o.radius=function(d){return arguments.length?(n=typeof d=="function"?d:Ht(+d),c(),o):n},o}function Yz(n){return n.index}function zh(n,e){var t=n.get(e);if(!t)throw new Error("node not found: "+e);return t}function Ei(n){var e=Yz,t=h,s,i=Ht(30),r,a,o,l,c,d,u=1;n==null&&(n=[]);function h(m){return 1/Math.min(l[m.source.index],l[m.target.index])}function p(m){for(var _=0,y=n.length;_<u;++_)for(var z=0,w,O,S,M=0,v=0,E=0,A,I;z<y;++z)w=n[z],O=w.source,S=w.target,M=S.x+S.vx-O.x-O.vx||Ds(d),o>1&&(v=S.y+S.vy-O.y-O.vy||Ds(d)),o>2&&(E=S.z+S.vz-O.z-O.vz||Ds(d)),A=Math.sqrt(M*M+v*v+E*E),A=(A-r[z])/A*m*s[z],M*=A,v*=A,E*=A,S.vx-=M*(I=c[z]),o>1&&(S.vy-=v*I),o>2&&(S.vz-=E*I),O.vx+=M*(I=1-I),o>1&&(O.vy+=v*I),o>2&&(O.vz+=E*I)}function f(){if(a){var m,_=a.length,y=n.length,z=new Map(a.map((O,S)=>[e(O,S,a),O])),w;for(m=0,l=new Array(_);m<y;++m)w=n[m],w.index=m,typeof w.source!="object"&&(w.source=zh(z,w.source)),typeof w.target!="object"&&(w.target=zh(z,w.target)),l[w.source.index]=(l[w.source.index]||0)+1,l[w.target.index]=(l[w.target.index]||0)+1;for(m=0,c=new Array(y);m<y;++m)w=n[m],c[m]=l[w.source.index]/(l[w.source.index]+l[w.target.index]);s=new Array(y),b(),r=new Array(y),g()}}function b(){if(a)for(var m=0,_=n.length;m<_;++m)s[m]=+t(n[m],m,n)}function g(){if(a)for(var m=0,_=n.length;m<_;++m)r[m]=+i(n[m],m,n)}return p.initialize=function(m,..._){a=m,d=_.find(y=>typeof y=="function")||Math.random,o=_.find(y=>[1,2,3].includes(y))||2,f()},p.links=function(m){return arguments.length?(n=m,f(),p):n},p.id=function(m){return arguments.length?(e=m,p):e},p.iterations=function(m){return arguments.length?(u=+m,p):u},p.strength=function(m){return arguments.length?(t=typeof m=="function"?m:Ht(+m),b(),p):t},p.distance=function(m){return arguments.length?(i=typeof m=="function"?m:Ht(+m),g(),p):i},p}var Zz={value:()=>{}};function Cm(){for(var n=0,e=arguments.length,t={},s;n<e;++n){if(!(s=arguments[n]+"")||s in t||/[\s.]/.test(s))throw new Error("illegal type: "+s);t[s]=[]}return new vo(t)}function vo(n){this._=n}function Qz(n,e){return n.trim().split(/^|\s+/).map(function(t){var s="",i=t.indexOf(".");if(i>=0&&(s=t.slice(i+1),t=t.slice(0,i)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:s}})}vo.prototype=Cm.prototype={constructor:vo,on:function(n,e){var t=this._,s=Qz(n+"",t),i,r=-1,a=s.length;if(arguments.length<2){for(;++r<a;)if((i=(n=s[r]).type)&&(i=Jz(t[i],n.name)))return i;return}if(e!=null&&typeof e!="function")throw new Error("invalid callback: "+e);for(;++r<a;)if(i=(n=s[r]).type)t[i]=wh(t[i],n.name,e);else if(e==null)for(i in t)t[i]=wh(t[i],n.name,null);return this},copy:function(){var n={},e=this._;for(var t in e)n[t]=e[t].slice();return new vo(n)},call:function(n,e){if((i=arguments.length-2)>0)for(var t=new Array(i),s=0,i,r;s<i;++s)t[s]=arguments[s+2];if(!this._.hasOwnProperty(n))throw new Error("unknown type: "+n);for(r=this._[n],s=0,i=r.length;s<i;++s)r[s].value.apply(e,t)},apply:function(n,e,t){if(!this._.hasOwnProperty(n))throw new Error("unknown type: "+n);for(var s=this._[n],i=0,r=s.length;i<r;++i)s[i].value.apply(e,t)}};function Jz(n,e){for(var t=0,s=n.length,i;t<s;++t)if((i=n[t]).name===e)return i.value}function wh(n,e,t){for(var s=0,i=n.length;s<i;++s)if(n[s].name===e){n[s]=Zz,n=n.slice(0,s).concat(n.slice(s+1));break}return t!=null&&n.push({name:e,value:t}),n}var Sr=0,aa=0,Fr=0,Pm=1e3,qo,oa,Xo=0,Ai=0,hl=0,Ma=typeof performance=="object"&&performance.now?performance:Date,Lm=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(n){setTimeout(n,17)};function Wm(){return Ai||(Lm(ew),Ai=Ma.now()+hl)}function ew(){Ai=0}function qc(){this._call=this._time=this._next=null}qc.prototype=km.prototype={constructor:qc,restart:function(n,e,t){if(typeof n!="function")throw new TypeError("callback is not a function");t=(t==null?Wm():+t)+(e==null?0:+e),!this._next&&oa!==this&&(oa?oa._next=this:qo=this,oa=this),this._call=n,this._time=t,Xc()},stop:function(){this._call&&(this._call=null,this._time=1/0,Xc())}};function km(n,e,t){var s=new qc;return s.restart(n,e,t),s}function tw(){Wm(),++Sr;for(var n=qo,e;n;)(e=Ai-n._time)>=0&&n._call.call(void 0,e),n=n._next;--Sr}function yh(){Ai=(Xo=Ma.now())+hl,Sr=aa=0;try{tw()}finally{Sr=0,nw(),Ai=0}}function sw(){var n=Ma.now(),e=n-Xo;e>Pm&&(hl-=e,Xo=n)}function nw(){for(var n,e=qo,t,s=1/0;e;)e._call?(s>e._time&&(s=e._time),n=e,e=e._next):(t=e._next,e._next=null,e=n?n._next=t:qo=t);oa=n,Xc(s)}function Xc(n){if(!Sr){aa&&(aa=clearTimeout(aa));var e=n-Ai;e>24?(n<1/0&&(aa=setTimeout(yh,n-Ma.now()-hl)),Fr&&(Fr=clearInterval(Fr))):(Fr||(Xo=Ma.now(),Fr=setInterval(sw,Pm)),Sr=1,Lm(yh))}}const iw=1664525,rw=1013904223,vh=4294967296;function aw(){let n=1;return()=>(n=(iw*n+rw)%vh)/vh}var Oh=3;function Tl(n){return n.x}function xh(n){return n.y}function ow(n){return n.z}var lw=10,cw=Math.PI*(3-Math.sqrt(5)),dw=Math.PI*20/(9+Math.sqrt(221));function Xn(n,e){e=e||2;var t=Math.min(Oh,Math.max(1,Math.round(e))),s,i=1,r=.001,a=1-Math.pow(r,1/300),o=0,l=.6,c=new Map,d=km(p),u=Cm("tick","end"),h=aw();n==null&&(n=[]);function p(){f(),u.call("tick",s),i<r&&(d.stop(),u.call("end",s))}function f(m){var _,y=n.length,z;m===void 0&&(m=1);for(var w=0;w<m;++w)for(i+=(o-i)*a,c.forEach(function(O){O(i)}),_=0;_<y;++_)z=n[_],z.fx==null?z.x+=z.vx*=l:(z.x=z.fx,z.vx=0),t>1&&(z.fy==null?z.y+=z.vy*=l:(z.y=z.fy,z.vy=0)),t>2&&(z.fz==null?z.z+=z.vz*=l:(z.z=z.fz,z.vz=0));return s}function b(){for(var m=0,_=n.length,y;m<_;++m){if(y=n[m],y.index=m,y.fx!=null&&(y.x=y.fx),y.fy!=null&&(y.y=y.fy),y.fz!=null&&(y.z=y.fz),isNaN(y.x)||t>1&&isNaN(y.y)||t>2&&isNaN(y.z)){var z=lw*(t>2?Math.cbrt(.5+m):t>1?Math.sqrt(.5+m):m),w=m*cw,O=m*dw;t===1?y.x=z:t===2?(y.x=z*Math.cos(w),y.y=z*Math.sin(w)):(y.x=z*Math.sin(w)*Math.cos(O),y.y=z*Math.cos(w),y.z=z*Math.sin(w)*Math.sin(O))}(isNaN(y.vx)||t>1&&isNaN(y.vy)||t>2&&isNaN(y.vz))&&(y.vx=0,t>1&&(y.vy=0),t>2&&(y.vz=0))}}function g(m){return m.initialize&&m.initialize(n,h,t),m}return b(),s={tick:f,restart:function(){return d.restart(p),s},stop:function(){return d.stop(),s},numDimensions:function(m){return arguments.length?(t=Math.min(Oh,Math.max(1,Math.round(m))),c.forEach(g),s):t},nodes:function(m){return arguments.length?(n=m,b(),c.forEach(g),s):n},alpha:function(m){return arguments.length?(i=+m,s):i},alphaMin:function(m){return arguments.length?(r=+m,s):r},alphaDecay:function(m){return arguments.length?(a=+m,s):+a},alphaTarget:function(m){return arguments.length?(o=+m,s):o},velocityDecay:function(m){return arguments.length?(l=1-m,s):1-l},randomSource:function(m){return arguments.length?(h=m,c.forEach(g),s):h},force:function(m,_){return arguments.length>1?(_==null?c.delete(m):c.set(m,g(_)),s):c.get(m)},find:function(){var m=Array.prototype.slice.call(arguments),_=m.shift()||0,y=(t>1?m.shift():null)||0,z=(t>2?m.shift():null)||0,w=m.shift()||1/0,O=0,S=n.length,M,v,E,A,I,G;for(w*=w,O=0;O<S;++O)I=n[O],M=_-I.x,v=y-(I.y||0),E=z-(I.z||0),A=M*M+v*v+E*E,A<w&&(G=I,w=A);return G},on:function(m,_){return arguments.length>1?(u.on(m,_),s):u.on(m)}}}function Kn(){var n,e,t,s,i,r=Ht(-30),a,o=1,l=1/0,c=.81;function d(f){var b,g=n.length,m=(e===1?iu(n,Tl):e===2?au(n,Tl,xh):e===3?lu(n,Tl,xh,ow):null).visitAfter(h);for(i=f,b=0;b<g;++b)t=n[b],m.visit(p)}function u(){if(n){var f,b=n.length,g;for(a=new Array(b),f=0;f<b;++f)g=n[f],a[g.index]=+r(g,f,n)}}function h(f){var b=0,g,m,_=0,y,z,w,O,S=f.length;if(S){for(y=z=w=O=0;O<S;++O)(g=f[O])&&(m=Math.abs(g.value))&&(b+=g.value,_+=m,y+=m*(g.x||0),z+=m*(g.y||0),w+=m*(g.z||0));b*=Math.sqrt(4/S),f.x=y/_,e>1&&(f.y=z/_),e>2&&(f.z=w/_)}else{g=f,g.x=g.data.x,e>1&&(g.y=g.data.y),e>2&&(g.z=g.data.z);do b+=a[g.data.index];while(g=g.next)}f.value=b}function p(f,b,g,m,_){if(!f.value)return!0;var y=[g,m,_][e-1],z=f.x-t.x,w=e>1?f.y-t.y:0,O=e>2?f.z-t.z:0,S=y-b,M=z*z+w*w+O*O;if(S*S/c<M)return M<l&&(z===0&&(z=Ds(s),M+=z*z),e>1&&w===0&&(w=Ds(s),M+=w*w),e>2&&O===0&&(O=Ds(s),M+=O*O),M<o&&(M=Math.sqrt(o*M)),t.vx+=z*f.value*i/M,e>1&&(t.vy+=w*f.value*i/M),e>2&&(t.vz+=O*f.value*i/M)),!0;if(f.length||M>=l)return;(f.data!==t||f.next)&&(z===0&&(z=Ds(s),M+=z*z),e>1&&w===0&&(w=Ds(s),M+=w*w),e>2&&O===0&&(O=Ds(s),M+=O*O),M<o&&(M=Math.sqrt(o*M)));do f.data!==t&&(S=a[f.data.index]*i/M,t.vx+=z*S,e>1&&(t.vy+=w*S),e>2&&(t.vz+=O*S));while(f=f.next)}return d.initialize=function(f,...b){n=f,s=b.find(g=>typeof g=="function")||Math.random,e=b.find(g=>[1,2,3].includes(g))||2,u()},d.strength=function(f){return arguments.length?(r=typeof f=="function"?f:Ht(+f),u(),d):r},d.distanceMin=function(f){return arguments.length?(o=f*f,d):Math.sqrt(o)},d.distanceMax=function(f){return arguments.length?(l=f*f,d):Math.sqrt(l)},d.theta=function(f){return arguments.length?(c=f*f,d):Math.sqrt(c)},d}function du(n){var e=Ht(.1),t,s,i;typeof n!="function"&&(n=Ht(n==null?0:+n));function r(o){for(var l=0,c=t.length,d;l<c;++l)d=t[l],d.vx+=(i[l]-d.x)*s[l]*o}function a(){if(t){var o,l=t.length;for(s=new Array(l),i=new Array(l),o=0;o<l;++o)s[o]=isNaN(i[o]=+n(t[o],o,t))?0:+e(t[o],o,t)}}return r.initialize=function(o){t=o,a()},r.strength=function(o){return arguments.length?(e=typeof o=="function"?o:Ht(+o),a(),r):e},r.x=function(o){return arguments.length?(n=typeof o=="function"?o:Ht(+o),a(),r):n},r}function uu(n){var e=Ht(.1),t,s,i;typeof n!="function"&&(n=Ht(n==null?0:+n));function r(o){for(var l=0,c=t.length,d;l<c;++l)d=t[l],d.vy+=(i[l]-d.y)*s[l]*o}function a(){if(t){var o,l=t.length;for(s=new Array(l),i=new Array(l),o=0;o<l;++o)s[o]=isNaN(i[o]=+n(t[o],o,t))?0:+e(t[o],o,t)}}return r.initialize=function(o){t=o,a()},r.strength=function(o){return arguments.length?(e=typeof o=="function"?o:Ht(+o),a(),r):e},r.y=function(o){return arguments.length?(n=typeof o=="function"?o:Ht(+o),a(),r):n},r}function hu(n){var e=Ht(.1),t,s,i;typeof n!="function"&&(n=Ht(n==null?0:+n));function r(o){for(var l=0,c=t.length,d;l<c;++l)d=t[l],d.vz+=(i[l]-d.z)*s[l]*o}function a(){if(t){var o,l=t.length;for(s=new Array(l),i=new Array(l),o=0;o<l;++o)s[o]=isNaN(i[o]=+n(t[o],o,t))?0:+e(t[o],o,t)}}return r.initialize=function(o){t=o,a()},r.strength=function(o){return arguments.length?(e=typeof o=="function"?o:Ht(+o),a(),r):e},r.z=function(o){return arguments.length?(n=typeof o=="function"?o:Ht(+o),a(),r):n},r}function uw(n){let e=2166136261;for(let t=0;t<n.length;t++)e^=n.charCodeAt(t),e=Math.imul(e,16777619);return e>>>0}function hw(n){let e=n>>>0;return()=>(e=Math.imul(e,1664525)+1013904223>>>0,e/4294967296)}function Er(n){return hw(uw(n))}const ks=.55,fw=12,pw=60,Il=60;function mw(n){const e=new Map(n.map((t,s)=>[t.id,s]));return n.map(t=>`${t.parents.map(i=>e.get(i)??-1).join(".")}:${t.radius.toFixed(2)}`).join("|")}function gw(n,e,t){const[s,i,r]=n,a=s*Math.cos(e)+r*Math.sin(e),o=-s*Math.sin(e)+r*Math.cos(e),l=i*Math.cos(t)-o*Math.sin(t),c=i*Math.sin(t)+o*Math.cos(t);return[a,l,c]}function Mw(n,e,t){const s=f=>Math.hypot(f[0],f[1],f[2]),i=s(e),r=s(t);if(i<1e-9||r<1e-9)return n;const a=[e[0]/i,e[1]/i,e[2]/i],o=[t[0]/r,t[1]/r,t[2]/r],l=[a[1]*o[2]-a[2]*o[1],a[2]*o[0]-a[0]*o[2],a[0]*o[1]-a[1]*o[0]],c=s(l),d=a[0]*o[0]+a[1]*o[1]+a[2]*o[2];if(c<1e-9)return d>0?n:[-n[0],-n[1],-n[2]];const u=[l[0]/c,l[1]/c,l[2]/c],h=u[0]*n[0]+u[1]*n[1]+u[2]*n[2],p=[u[1]*n[2]-u[2]*n[1],u[2]*n[0]-u[0]*n[2],u[0]*n[1]-u[1]*n[0]];return[n[0]*d+p[0]*c+u[0]*h*(1-d),n[1]*d+p[1]*c+u[1]*h*(1-d),n[2]*d+p[2]*c+u[2]*h*(1-d)]}function Sh(n,e,t){if(e.length===0)return n;let s=0;for(const i of e)s+=t.get(i.id.slice(6))??ks;return s/=e.length,Math.max(n+2,Math.sqrt(e.length)*s*1.6)}function Gl(n,e,t){const s=e<=1?0:1-2*(n+.5)/e,i=Math.sqrt(Math.max(0,1-s*s)),r=n*Math.PI*(3-Math.sqrt(5));return[Math.cos(r)*i*t,s*t,Math.sin(r)*i*t]}function fu(n,e,t=()=>{},s="clumps",i=Er){const r=new Map(n.map(G=>[G.id,G])),a=new Map,o=[];for(const G of n)G.group===null?o.push(G):a.set(G.group,[...a.get(G.group)??[],G]);const l=new Map,c=new Map,d=new Map,u=new Set;let h=0;const p=Math.max(1,a.size),f=new Map;for(const[G,N]of a){const B=N.filter(te=>te.seed!==void 0),C=[0,0,0];for(const te of B)C[0]+=te.seed[0],C[1]+=te.seed[1],C[2]+=te.seed[2];B.length>0&&(C[0]/=B.length,C[1]/=B.length,C[2]/=B.length,d.set(G,C)),N.every(te=>te.frozen===!0&&te.seed!==void 0)&&u.add(G);const L=new Map,H=B.length===0?mw(N):null,X=H===null?void 0:f.get(H);if(B.length===N.length)for(const te of N)L.set(te.id,[te.seed[0]-C[0],te.seed[1]-C[1],te.seed[2]-C[2]]);else if(X!==void 0){const te=i(G),de=te()*Math.PI*2,Le=(te()-.5)*Math.PI;N.forEach((He,Ne)=>{L.set(He.id,gw(X[Ne]??[0,0,0],de,Le))})}else{const te=N.map(ae=>{const he={id:ae.id,r:ae.radius};return ae.seed!==void 0&&(he.x=ae.seed[0]-C[0],he.y=ae.seed[1]-C[1],he.z=ae.seed[2]-C[2],ae.frozen===!0&&(he.fx=he.x,he.fy=he.y,he.fz=he.z)),he}),de=new Set(N.map(ae=>ae.id)),Le=[];for(const ae of N)for(const he of ae.parents)de.has(he)&&Le.push({source:he,target:ae.id});const He=new Map(N.map(ae=>[ae.id,ae.radius])),Ne=Xn(te,3).force("link",Ei(Le).id(ae=>ae.id).distance(e.link?ae=>(He.get(ae.source.id)??ks)+(He.get(ae.target.id)??ks)+1.4:2.2)).force("charge",Kn().strength(ae=>e.charge?-6*(ae.r/ks)**2:-6).distanceMax(fw)).force("center",bi(0,0,0)).stop();e.collide&&Ne.force("collide",qn().radius(ae=>ae.r*1.2));for(let ae=0;ae<pw;ae++)Ne.tick();const ne=[0,0,0];for(const ae of te)ne[0]+=ae.x??0,ne[1]+=ae.y??0,ne[2]+=ae.z??0;ne[0]/=te.length,ne[1]/=te.length,ne[2]/=te.length;for(const ae of te)L.set(ae.id,[(ae.x??0)-ne[0],(ae.y??0)-ne[1],(ae.z??0)-ne[2]]);H!==null&&f.set(H,N.map(ae=>L.get(ae.id)??[0,0,0]))}let oe=ks;for(const te of N){const de=L.get(te.id)??[0,0,0];l.set(te.id,de),oe=Math.max(oe,Math.hypot(de[0],de[1],de[2])+te.radius)}c.set(G,oe),h+=1,h%50===0&&t(.3*(h/p))}t(.3);const b=G=>{const N=r.get(G);return N!==void 0&&N.group!==null?`group:${N.group}`:G},g=[],m=new Map;let _=!1;for(const[G]of a){const N=`group:${G}`,B=c.get(G)??ks,C={id:N,r:B},L=d.get(G);L!==void 0&&(C.x=L[0],C.y=L[1],C.z=L[2],u.has(G)&&(C.fx=L[0],C.fy=L[1],C.fz=L[2],_=!0)),m.set(N,B),g.push(C)}for(const G of o){const N={id:G.id,r:G.radius};G.seed!==void 0&&(N.x=G.seed[0],N.y=G.seed[1],N.z=G.seed[2],G.frozen===!0&&(N.fx=G.seed[0],N.fy=G.seed[1],N.fz=G.seed[2],_=!0)),m.set(G.id,G.radius),g.push(N)}const y=new Set,z=[];for(const G of n)for(const N of G.parents){if(!r.has(N))continue;const B=b(N),C=b(G.id);if(B===C)continue;const L=`${B}\0${C}`;y.has(L)||(y.add(L),z.push({source:B,target:C}))}const w=new Map;for(const G of z)if(G.source.startsWith("group:")!==G.target.startsWith("group:")){const N=G.source.startsWith("group:")?G.source:G.target,B=G.source.startsWith("group:")?G.target:G.source;w.has(N)||w.set(N,B)}const O=new Map;for(const G of g){const N=w.get(G.id);N!==void 0&&O.set(N,[...O.get(N)??[],G])}const S=g.reduce((G,N)=>G+N.r*N.r,0),M=g.filter(G=>!G.id.startsWith("group:"));M.forEach((G,N)=>{if(G.x!==void 0)return;const[B,C,L]=Gl(N,M.length,Math.sqrt(S)*1.2+10);G.x=B,G.y=C,G.z=L});for(const[G,N]of O){const B=g.find(L=>L.id===G),C=Math.sqrt(N.reduce((L,H)=>L+H.r*H.r,0))*1.4+2;N.forEach((L,H)=>{if(L.x!==void 0)return;const[X,oe,te]=Gl(H,N.length,C);L.x=(B?.x??0)+X,L.y=(B?.y??0)+oe,L.z=(B?.z??0)+te})}const v=new Set;if(s==="spokes"){const G=B=>{const C=a.get(B)??[],L=new Set(C.map(X=>X.id)),H=C.find(X=>X.parents.some(oe=>!L.has(oe)))??C[0];return H===void 0?[0,0,0]:l.get(H.id)??[0,0,0]},N=[];for(const B of g){if(B.id.startsWith("group:")&&w.has(B.id)){v.add(B.id);continue}if(B.id.startsWith("group:"))N.push(B);else{const C=O.get(B.id)??[];let L=B.r;const H=Sh(B.r,C,c);for(const X of C){const oe=X.id.slice(6),te=G(oe);L=Math.max(L,H+Math.hypot(te[0],te[1],te[2])+2*(c.get(oe)??ks))}N.push({id:B.id,r:L,x:B.x,y:B.y,z:B.z,...B.fx!==void 0?{fx:B.fx,fy:B.fy,fz:B.fz}:{}})}}if(!N.every(B=>B.fx!==void 0)){const B=Xn(N,3).force("charge",Kn().strength(C=>-1.5*C.r)).force("collide",qn().radius(C=>C.r*.9)).stop();_||B.force("center",bi(0,0,0));for(let C=0;C<Il;C++)B.tick(),C%5===0&&t(.3+.7*(C/Il))}for(const B of N){const C=g.find(L=>L.id===B.id);C!==void 0&&C!==B&&(C.x=B.x,C.y=B.y,C.z=B.z)}for(const B of g){if(B.id.startsWith("group:")||!O.has(B.id))continue;const C=O.get(B.id)??[],L=Sh(B.r,C,c);C.forEach((H,X)=>{if(H.fx!==void 0||d.has(H.id.slice(6)))return;const oe=G(H.id.slice(6)),te=Gl(X,C.length,1),de=.35+.65*(X*.6180339887%1),Le=B.r+1.4+L*de+Math.hypot(oe[0],oe[1],oe[2]);H.x=(B.x??0)+te[0]*Le,H.y=(B.y??0)+te[1]*Le,H.z=(B.z??0)+te[2]*Le})}}if(!g.every(G=>G.fx!==void 0)&&s!=="spokes"){const G=Xn(g,3).force("link",Ei(z).id(C=>C.id).distance(e.link?C=>(m.get(C.source.id)??ks)+(m.get(C.target.id)??ks)+1.4:2.2)).stop(),N=Kn().strength(C=>e.charge?-6*(C.r/ks)**2:-6);if(e.reach!==void 0&&N.distanceMax(e.reach),G.force("charge",N),_||G.force("center",bi(0,0,0)),e.collide&&G.force("collide",qn().radius(C=>C.r*1.05)),e.gravity){const C=L=>Math.min(1,(L.r/ks)**2*.08);G.force("gx",du(0).strength(C)).force("gy",uu(0).strength(C)).force("gz",hu(0).strength(C))}const B=Il;for(let C=0;C<B;C++)G.tick(),C%5===0&&t(.3+.7*(C/B))}const A=new Map(g.map(G=>[G.id,G]));if(s==="spokes")for(const[G,N]of a){if(N.some(He=>He.seed!==void 0))continue;const B=`group:${G}`,C=A.get(B),L=w.get(B),H=L===void 0?void 0:A.get(L);if(C===void 0||H===void 0)continue;const X=[(C.x??0)-(H.x??0),(C.y??0)-(H.y??0),(C.z??0)-(H.z??0)],oe=new Set(N.map(He=>He.id)),te=N.find(He=>He.parents.some(Ne=>!oe.has(Ne)))??N[0],de=l.get(te.id)??[0,0,0],Le=[-de[0],-de[1],-de[2]];for(const He of N){const Ne=l.get(He.id)??[0,0,0];l.set(He.id,Mw(Ne,Le,X))}}const I={};for(const G of n){const N=A.get(b(G.id)),B=[N?.x??0,N?.y??0,N?.z??0],C=G.group===null?[0,0,0]:l.get(G.id)??[0,0,0];I[G.id]=[B[0]+C[0],B[1]+C[1],B[2]+C[2]]}return t(1),I}const Eh=80;function Um(n,e,t=()=>{},s=Er){const i=n.some(h=>h.seed===void 0),r=i?fu(n,e,h=>t(.05*h),"spokes",s):{};t(.05);const a=n.map(h=>{const p=h.seed??r[h.id],f={id:h.id,r:h.radius};return p!==void 0&&(f.x=p[0],f.y=p[1],f.z=p[2],h.frozen===!0&&h.seed!==void 0&&(f.fx=p[0],f.fy=p[1],f.fz=p[2])),f}),o=new Set(n.map(h=>h.id)),l=[];for(const h of n)for(const p of h.parents)o.has(p)&&l.push({source:p,target:h.id});const c=new Map(n.map(h=>[h.id,h.radius])),d=a.some(h=>h.fx!==void 0);if(!a.every(h=>h.fx!==void 0)){const h=Xn(a,3).force("link",Ei(l).id(f=>f.id).distance(e.link?f=>(c.get(f.source.id)??St)+(c.get(f.target.id)??St)+1.4:2.2)).stop(),p=Kn().strength(f=>e.charge?-6*(f.r/St)**2:-6);if(e.reach!==void 0&&p.distanceMax(e.reach),h.force("charge",p),d||h.force("center",bi(0,0,0)),e.collide&&h.force("collide",qn().radius(f=>f.r*1.2)),e.gravity){const f=b=>(b.r/St)**2*.08;h.force("gx",du(0).strength(f)).force("gy",uu(0).strength(f)).force("gz",hu(0).strength(f))}i&&h.alpha(.6);for(let f=0;f<Eh;f++)h.tick(),f%2===0&&t(.05+.95*(f/Eh))}const u={};for(const h of a)u[h.id]=[h.x??0,h.y??0,h.z??0];return t(1),u}function Fm(n){const e=new Map;for(const t of n)for(const s of t.parents)e.set(s,(e.get(s)??0)+1),e.set(t.id,(e.get(t.id)??0)+1);return n.map(t=>t.metric??e.get(t.id)??1)}function jm(n){const e=Fm(n),t=Math.max(...e,1);return new Map(n.map((s,i)=>[s.id,St*(.5+(e[i]??1)/t*1.2)]))}function $m(n,e=3,t=new Map,s=Jn,i=new Set){const r=[];for(const _ of n)for(const y of _.parents)r.push({source:y,target:_.id});const a=Fm(n),o=Math.max(...a,1),l=a.map(_=>St*(.5+_/o*1.2)),c=new Map(n.map((_,y)=>[_.id,l[y]??St])),d=n.map(_=>{const y=t.get(_.id);return y===void 0?{id:_.id}:i.has(_.id)?{id:_.id,x:y[0],y:y[1],z:y[2],fx:y[0],fy:y[1],fz:y[2]}:{id:_.id,x:y[0],y:y[1],z:y[2]}}),u=_=>i.has(_.id)&&_.fx!==void 0;let h=d,p=r;if(i.size>0){const _=new Set(d.filter(w=>!u(w)).map(w=>w.id));p=r.filter(w=>_.has(w.source)||_.has(w.target));const y=new Set(_);for(const w of p)y.add(w.source),y.add(w.target);h=d.filter(w=>y.has(w.id));const z=new Set(h.map(w=>w.id));p=p.filter(w=>z.has(w.source)&&z.has(w.target))}const f=Kn().strength(s.charge?_=>i.has(_.id)?0:-6*((c.get(_.id)??St)/St)**2:_=>i.has(_.id)?0:-6);s.reach!==void 0&&f.distanceMax(s.reach);const b=Xn(h,e).force("link",Ei(p).id(_=>_.id).distance(s.link?_=>(c.get(_.source.id)??St)+(c.get(_.target.id)??St)+1.4:2.2)).force("charge",f).stop();if(i.size===0&&b.force("center",e===2?bi(0,0):bi(0,0,0)),s.collide&&b.force("collide",qn().radius(_=>(c.get(_.id)??St)*1.2)),s.gravity){const _=y=>((c.get(y.id)??St)/St)**2*.08;b.force("gx",du(0).strength(_)).force("gy",uu(0).strength(_)),e===3&&b.force("gz",hu(0).strength(_))}const g=h.length===0?0:t.size>0?90:150;let m=0;return{total:g,moving:h.length,step:_=>{for(let y=0;y<_&&m<g;y++,m++)b.tick()},place:()=>n.map((_,y)=>{const z=d[y];return{id:_.id,position:[z?.x??0,z?.y??0,z?.z??0],radius:l[y]??St}})}}function bw(n,e=3,t=new Map,s=Jn,i=new Set){const r=$m(n,e,t,s,i);return r.step(r.total),r.place()}function _w(n,e,t=new Map,s=new Set){const i=jm(n.map(r=>{const a={id:r.id,parents:[...r.parentIds,...r.joinParentIds]};return r.metric!==void 0&&(a.metric=r.metric),a}));return n.map(r=>{const a=t.get(r.id);return{id:r.id,parents:[...r.parentIds,...r.joinParentIds],radius:i.get(r.id)??St,group:r.ghost===!0?null:e(r),...r.attrs===void 0?{}:{attrs:r.attrs},...a===void 0?{}:{seed:a},...s.has(r.id)?{frozen:!0}:{}}})}const Ah=160,Dh=120,Th=5,zw=.9,Ih=.3,ww=.9;function Vm(n,e){const t=new Map;for(const[s,i]of n)t.set(s,e===0||i/e>ww?0:Math.log(e/Math.max(1,i)));return t}function yw(n,e,t=()=>{}){const s=M=>typeof M.attrs?.plugin=="string"?M.attrs.plugin:null,i=M=>M.attrs?.kind==="star"&&s(M)!==null,r=n.filter(i),a=new Map(r.map(M=>[s(M),M])),o=n.filter(M=>!i(M)),l=new Map;for(const M of o){const v=s(M);M.group===null||v===null||!a.has(v)||l.set(M.group,(l.get(M.group)??new Set).add(v))}const c=new Map;for(const M of l.values())for(const v of M)c.set(v,(c.get(v)??0)+1);const d=Vm(c,l.size),u=Math.max(1e-9,...d.values()),h=new Map;for(const M of l.values()){const v=[...M].sort();for(let E=0;E<v.length;E++)for(let A=E+1;A<v.length;A++){const I=`${v[E]}\0${v[A]}`;h.set(I,(h.get(I)??0)+1)}}const p=Math.max(6,Math.sqrt(r.length)*4,Math.sqrt(o.length)*1.6),f=r.map(M=>Gh(M,p,Er(`star:${M.id}`))),b=[];for(const[M,v]of h){const[E,A]=M.split("\0"),I=Math.min(c.get(E)??1,c.get(A)??1);b.push({source:a.get(E).id,target:a.get(A).id,share:v/Math.max(1,I)})}if(f.length>0&&f.some(M=>M.fx===void 0)){const M=Xn(f,3).force("link",Ei(b).id(v=>v.id).distance(v=>p*(1.1-Number(v.share))).strength(v=>.05+.6*Number(v.share))).force("charge",Kn().strength(-30).distanceMax(p*3)).force("collide",qn().radius(v=>v.r*3)).force("center",bi(0,0,0)).stop();for(let v=0;v<Ah;v++)M.tick(),v%4===0&&t(.4*(v/Ah))}const g=new Map(f.map(M=>[M.id,[M.x??0,M.y??0,M.z??0]]));t(.4);const m=[...f.map(M=>({...M,fx:M.x??0,fy:M.y??0,fz:M.z??0})),...o.map(M=>{const v=s(M),E=v===null?void 0:a.get(v),A=E===void 0?void 0:g.get(E.id);return Gh(M,2,Er(`stage:${M.id}`),A)})],_=new Set(n.map(M=>M.id)),y=new Map(n.map(M=>[M.id,M.radius])),z=[];for(const M of o){for(const G of M.parents)_.has(G)&&z.push({source:G,target:M.id,strength:1,length:(y.get(G)??St)+M.radius+1.4});const v=s(M),E=v===null?void 0:a.get(v),A=v===null?0:d.get(v)??0,I=M.group===null?1:Math.max(1,l.get(M.group)?.size??1);if(E!==void 0&&A>0){const G=A/u,N=(Ih+(zw-Ih)*G)/Math.sqrt(I);z.push({source:E.id,target:M.id,strength:N,length:E.radius+M.radius+1})}}const w=Xn(m,3).force("link",Ei(z).id(M=>M.id).distance(M=>Number(M.length)).strength(M=>Number(M.strength))).stop();if(e.charge){const M=Kn().strength(v=>-6*(v.r/St)**2);M.distanceMax(Math.min(e.reach??Th,Th)),w.force("charge",M)}e.collide&&w.force("collide",qn().radius(M=>M.r*1.2));const O=m.some(M=>M.fx===void 0);for(let M=0;O&&M<Dh;M++)w.tick(),M%4===0&&t(.4+.6*(M/Dh));const S={};for(const M of m)S[M.id]=[M.x??0,M.y??0,M.z??0];return t(1),S}function Gh(n,e,t,s=[0,0,0]){const i={id:n.id,r:n.radius},r=n.seed??[s[0]+(t()-.5)*2*e,s[1]+(t()-.5)*2*e,s[2]+(t()-.5)*2*e];return i.x=r[0],i.y=r[1],i.z=r[2],n.frozen===!0&&n.seed!==void 0&&(i.fx=r[0],i.fy=r[1],i.fz=r[2]),i}const Ar=.4,vw=400,ji=.35,Ow=.01,xw=3;function Rh(n,e,t){let s=0,i=0;for(const r of new Set([...n,...e])){const a=t.get(r)??0;i+=a,n.has(r)&&e.has(r)&&(s+=a)}return i===0?0:s/i}const Bh=1.4,Sw=Math.PI/3;function Ew(n,e){const t=new Map,s=new Map(n.map(d=>[d.id,d])),i=new Map,r=[];for(const d of n){const u=d.parents.find(h=>s.has(h));u===void 0?r.push(d):i.set(u,[...i.get(u)??[],d])}const a=new Map,o=[];r.forEach((d,u)=>{const h=_i(e),p=u===0?0:d.radius*2+Bh;t.set(d.id,[h[0]*p,h[1]*p,h[2]*p]),a.set(d.id,h),o.push(d)});for(let d=o.shift();d!==void 0;d=o.shift()){const u=t.get(d.id),h=a.get(d.id);for(const p of i.get(d.id)??[]){if(t.has(p.id))continue;const f=e()*Sw,b=Aw(h,e),g=Hm([h[0]*Math.cos(f)+b[0]*Math.sin(f),h[1]*Math.cos(f)+b[1]*Math.sin(f),h[2]*Math.cos(f)+b[2]*Math.sin(f)]),m=d.radius+p.radius+Bh;t.set(p.id,[u[0]+g[0]*m,u[1]+g[1]*m,u[2]+g[2]*m]),a.set(p.id,g),o.push(p)}}for(const d of n)t.has(d.id)||t.set(d.id,[0,0,0]);const l=[0,0,0];for(const d of t.values())l[0]+=d[0]/t.size,l[1]+=d[1]/t.size,l[2]+=d[2]/t.size;let c=St;for(const d of n){const u=t.get(d.id),h=[u[0]-l[0],u[1]-l[1],u[2]-l[2]];t.set(d.id,h),c=Math.max(c,Math.hypot(h[0],h[1],h[2])+d.radius)}return{local:t,radius:c}}function Hm(n){const e=Math.max(1e-9,Math.hypot(n[0],n[1],n[2]));return[n[0]/e,n[1]/e,n[2]/e]}function Aw(n,e){const t=Math.abs(n[0])<.9?[1,0,0]:[0,1,0],s=Hm([n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]),i=[n[1]*s[2]-n[2]*s[1],n[2]*s[0]-n[0]*s[2],n[0]*s[1]-n[1]*s[0]],r=e()*Math.PI*2;return[s[0]*Math.cos(r)+i[0]*Math.sin(r),s[1]*Math.cos(r)+i[1]*Math.sin(r),s[2]*Math.cos(r)+i[2]*Math.sin(r)]}function _i(n){const e=n()*2-1,t=n()*Math.PI*2,s=Math.sqrt(1-e*e);return[s*Math.cos(t),s*Math.sin(t),e]}class Dw{size;cells=new Map;constructor(e){this.size=e}key(e){return`${Math.floor(e[0]/this.size)},${Math.floor(e[1]/this.size)},${Math.floor(e[2]/this.size)}`}add(e){const t=this.key(e.centre);this.cells.set(t,[...this.cells.get(t)??[],e])}touching(e,t){const s=[],[i,r,a]=[Math.floor(e[0]/this.size),Math.floor(e[1]/this.size),Math.floor(e[2]/this.size)];for(let o=-1;o<=1;o++)for(let l=-1;l<=1;l++)for(let c=-1;c<=1;c++)for(const d of this.cells.get(`${i+o},${r+l},${a+c}`)??[]){const u=t+d.particle.radius+Ar;Math.hypot(e[0]-d.centre[0],e[1]-d.centre[1],e[2]-d.centre[2])<u&&s.push(d)}return s}}function Nh(n,e,t,s){let i=[e[0]-n.centre[0],e[1]-n.centre[1],e[2]-n.centre[2]];const r=Math.hypot(i[0],i[1],i[2]);i=r<1e-9?_i(s):[i[0]/r,i[1]/r,i[2]/r];const a=t+n.particle.radius+Ar;return[n.centre[0]+i[0]*a,n.centre[1]+i[1]*a,n.centre[2]+i[2]*a]}function Tw(n,e,t=()=>{}){const s={},i={};if(n.length>0&&n.every(f=>f.frozen===!0&&f.seed!==void 0)){for(const f of n)s[f.id]=f.seed;return t(1),{positions:s,arrival:i}}const r=new Map;for(const f of n){if(f.group===null){s[f.id]=[0,0,0];continue}r.set(f.group,[...r.get(f.group)??[],f])}const a=[...r].map(([f,b])=>{const g=new Set;let m=Number.POSITIVE_INFINITY;for(const z of b){const w=z.attrs?.plugin;typeof w=="string"&&g.add(w);const O=z.attrs?.createdAt;typeof O=="number"&&O<m&&(m=O)}if(b.every(z=>z.frozen===!0&&z.seed!==void 0)){const z=b.map(M=>M.seed),w=[0,1,2].map(M=>z.reduce((v,E)=>v+E[M],0)/z.length),O=new Map;let S=St;for(const M of b){const v=M.seed,E=[v[0]-w[0],v[1]-w[1],v[2]-w[2]];O.set(M.id,E),S=Math.max(S,Math.hypot(E[0],E[1],E[2])+M.radius)}return{key:f,nodes:b,plugins:g,created:m,local:O,radius:S,held:!0,centre:w}}const{local:_,radius:y}=Ew(b,Er(`turn:${f}`));return{key:f,nodes:b,plugins:g,created:m,local:_,radius:y,held:!1}});a.sort((f,b)=>f.created-b.created||(f.key<b.key?-1:f.key>b.key?1:0));const o=new Map;for(const f of a)for(const b of f.plugins)o.set(b,(o.get(b)??0)+1);const l=Vm(o,a.length),c=Math.max(St,...a.map(f=>f.radius)),d=new Dw(2*c+Ar),u=[];let h=0;const p=(f,b,g)=>{const m={particle:f,centre:g};u.push(m),d.add(m),h=Math.max(h,Math.hypot(g[0],g[1],g[2])+f.radius);for(const _ of f.nodes){const y=f.local.get(_.id)??[0,0,0];s[_.id]=f.held&&_.seed!==void 0?_.seed:[g[0]+y[0],g[1]+y[1],g[2]+y[2]],i[_.id]=b}};return a.forEach((f,b)=>{f.held&&f.centre!==void 0&&p(f,b,f.centre)}),a.forEach((f,b)=>{if(f.held)return;const g=Er(`accrete:${f.key}`);let m;if(u.length===0)m=[0,0,0];else{let _=u[u.length-1],y=-1;for(const v of u){const E=Rh(f.plugins,v.particle.plugins,l);E>=y&&(_=v,y=E)}const z=h+xw*f.radius+c,w=Math.max(.5,f.radius*.5),O=_i(g);let S=[O[0]*z,O[1]*z,O[2]*z],M=null;for(let v=0;v<vw&&M===null;v++){const E=_i(g),A=[_.centre[0]-S[0],_.centre[1]-S[1],_.centre[2]-S[2]],I=Math.max(1e-9,Math.hypot(A[0],A[1],A[2])),G=[E[0]*(1-ji)+A[0]/I*ji,E[1]*(1-ji)+A[1]/I*ji,E[2]*(1-ji)+A[2]/I*ji],N=[S[0]+G[0]*w,S[1]+G[1]*w,S[2]+G[2]*w],B=d.touching(N,f.radius);if(B.length===0){if(Math.hypot(N[0],N[1],N[2])>z*2){const H=_i(g);S=[H[0]*z,H[1]*z,H[2]*z]}else S=N;continue}let C=B[0],L=-1;for(const H of B){const X=Rh(f.plugins,H.particle.plugins,l);X>L&&(C=H,L=X)}if(g()<Math.max(Ow,L)&&(M=Nh(C,S,f.radius,g),d.touching(M,f.radius-1e-6).some(H=>H!==C&&qm(M,f.radius,H))&&(M=null)),M===null){const H=Nh(C,S,f.radius,g),X=[H[0]-C.centre[0],H[1]-C.centre[1],H[2]-C.centre[2]],oe=Math.max(1e-9,Math.hypot(X[0],X[1],X[2]));S=[H[0]+X[0]/oe*w,H[1]+X[1]/oe*w,H[2]+X[2]/oe*w]}}m=M??Iw(_,f.radius,d,g)}p(f,b,m),b%8===0&&t(b/Math.max(1,a.length))}),t(1),{positions:s,arrival:i}}function qm(n,e,t){return Math.hypot(n[0]-t.centre[0],n[1]-t.centre[1],n[2]-t.centre[2])<e+t.particle.radius+Ar*.5}function Iw(n,e,t,s){for(let a=0;a<8;a++)for(let o=0;o<24;o++){const l=_i(s),c=e+n.particle.radius+Ar+a*e,d=[n.centre[0]+l[0]*c,n.centre[1]+l[1]*c,n.centre[2]+l[2]*c];if(!t.touching(d,e).some(u=>qm(d,e,u)))return d}const i=_i(s),r=e+n.particle.radius+Ar+8*e;return[n.centre[0]+i[0]*r,n.centre[1]+i[1]*r,n.centre[2]+i[2]*r]}function Xm(n){const e=new Map(n.map(f=>[f.id,f])),t=new Map,s=(f,b)=>{const g=t.get(f.id);if(g!==void 0)return g;if(b.has(f.id)||f.parentIds.length===0)return t.set(f.id,0),0;b.add(f.id);let m=0;for(const _ of f.parentIds){const y=e.get(_);y&&(m=Math.max(m,s(y,b)+1))}return t.set(f.id,m),m};for(const f of n)s(f,new Set);const i=new Map,r=[],a=(f,b)=>f.id.localeCompare(b.id,void 0,{numeric:!0});for(const f of n){const b=f.parentIds.find(m=>e.has(m));if(b===void 0){r.push(f);continue}const g=i.get(b)??[];g.push(f),i.set(b,g)}r.sort(a);for(const f of i.values())f.sort(a);const o=new Map;let l=0;const c=new Set,d=f=>{c.add(f.id);const b=(i.get(f.id)??[]).filter(y=>!c.has(y.id));if(b.length===0){const y=l++;return o.set(f.id,y),[y,y]}let g=Number.POSITIVE_INFINITY,m=Number.NEGATIVE_INFINITY;for(const y of b){const[z,w]=d(y);g=Math.min(g,z),m=Math.max(m,w)}const _=(g+m)/2;return o.set(f.id,_),[g,m]};for(const f of r)d(f);for(const f of n)o.has(f.id)||d(f);const u=Math.max(...Array.from(t.values()),0)+1,h=Math.max(l-1,0);return{placements:n.map(f=>({id:f.id,x:o.get(f.id)??0,tier:t.get(f.id)??0})),width:h,tierCount:u}}const Gw=2.6,Rw=2;function Km(n){const e=n.map(r=>r.metric??0),t=Math.max(...e,0),s=Xm(n),i=new Map(s.placements.map(r=>[r.id,r]));return n.map(r=>{const a=i.get(r.id),o=((a?.x??0)-s.width/2)*Rw,l=((s.tierCount-1)/2-(a?.tier??0))*Gw,c=r.metric??0,d=t>0?.55+c/t*1:1,u=[o,l,0];return{id:r.id,position:u,radius:St*d}})}const Bw=.02;function Nw(n){const e=new Map(n.nodes.map(o=>[o.id,o])),t=[],s=new Map;for(const o of n.edges){const l=e.get(o.from),c=e.get(o.to);l===void 0||c===void 0||l.halo||c.halo||(t.push({source:o.from,target:o.to}),s.set(o.from,[...s.get(o.from)??[],o.to]),s.set(o.to,[...s.get(o.to)??[],o.from]))}const i=new Set([n.grabbed]),r=[n.grabbed];for(;r.length>0;){const o=r.pop();for(const l of s.get(o)??[])i.has(l)||e.get(l)?.dim===!0||(i.add(l),r.push(l))}const a=t.filter(o=>i.has(o.source)&&i.has(o.target));return{ids:i,links:a}}class Cw{nodes;grabbed;sim;constructor(e){const{ids:t,links:s}=Nw(e),i=new Map(e.nodes.map(o=>[o.id,o.radius])),r=o=>i.get(o)??e.baseRadius,a=new Map(e.nodes.map(o=>[o.id,o.position]));this.nodes=[...t].filter(o=>a.has(o)).map(o=>{const[l,c,d]=a.get(o);return{id:o,x:l,y:c,z:d}}),this.sim=Xn(this.nodes,e.dimensions).force("link",Ei(s).id(o=>o.id).distance(o=>r(o.source.id)+r(o.target.id)+1.4)).force("charge",Kn().strength(o=>-6*(r(o.id)/e.baseRadius)**2).distanceMax(12)).force("collide",qn().radius(o=>r(o.id)*1.2)).alpha(.25).alphaTarget(.08).stop(),this.grabbed=this.nodes.find(o=>o.id===e.grabbed),this.grabbed!==void 0&&(this.grabbed.fx=this.grabbed.x,this.grabbed.fy=this.grabbed.y,this.grabbed.fz=this.grabbed.z)}pin(e){this.grabbed!==void 0&&([this.grabbed.fx,this.grabbed.fy,this.grabbed.fz]=e)}release(){this.grabbed!==void 0&&(this.grabbed.fx=null,this.grabbed.fy=null,this.grabbed.fz=null),this.sim.alphaTarget(0)}step(e){return!e&&this.sim.alpha()<=Bw?!1:(this.sim.tick(),!0)}positions(){return this.nodes.map(e=>({id:e.id,position:[e.x,e.y,e.z]}))}}function fl(n){const e={id:n.id,parents:n.parents,radius:n.radius,group:n.group};return n.seed!==void 0&&(e.seed=n.seed),n.frozen!==void 0&&(e.frozen=n.frozen),e}function Ym(n){const e=n.attrs?.metric;return typeof e=="number"?e:void 0}function Zm(n){const e={};for(const t of n)e[t.id]=t.position;return e}const Pw={id:"galaxy",label:"GALAXY",needs:[],run:(n,e)=>({positions:Um(n.nodes.map(fl),n.physics,e)})},Lw={id:"spokes",label:"SPOKES",needs:[],run:(n,e)=>({positions:fu(n.nodes.map(fl),n.physics,e,"spokes")})},Ww={id:"clumps",label:"CLUMPS",needs:[],run:(n,e)=>({positions:fu(n.nodes.map(fl),n.physics,e,"clumps")})},kw={id:"ranked",label:"RANKED",needs:[],run:(n,e)=>{const t=n.nodes.map(i=>{const r={id:i.id,parentIds:i.parents},a=Ym(i);return a!==void 0&&(r.metric=a),r}),s=Zm(Km(t));return e(1),{positions:s}}},Uw={id:"molecule",label:"MOLECULE",needs:[],run:(n,e)=>{const t=n.nodes.map(a=>{const o={id:a.id,parents:a.parents},l=Ym(a);return l!==void 0&&(o.metric=l),o}),s=new Map,i=new Set;for(const a of n.nodes)a.seed!==void 0&&s.set(a.id,a.seed),a.frozen===!0&&i.add(a.id);const r=Zm(bw(t,3,s,n.physics,i));return e(1),{positions:r}}},Fw={id:"constellations",label:"CONSTELLATIONS",needs:["plugin"],run:(n,e)=>({positions:yw(n.nodes,n.physics,e)})},jw={id:"hubs",label:"HUBS",needs:[],run:(n,e)=>({positions:Um(n.nodes.map(fl),n.physics,e)})},$w={id:"accretion",label:"ACCRETION",needs:["plugin"],run:(n,e)=>Tw(n.nodes,n.physics,e)},Vw=[Pw,Lw,Ww,Fw,jw,$w,kw,Uw];function Hw(n){return Vw.find(e=>e.id===n)}function qw(n,e){const t=[];let s="",i=[],r=!1,a=0,o=!1;const l=()=>{i.push(s),s="",o=!0},c=()=>{t.push(i),i=[],o=!1};for(;a<n.length;){const d=n[a];if(r){if(d==='"'){if(n[a+1]==='"'){s+='"',a+=2;continue}r=!1,a+=1;continue}s+=d,a+=1;continue}if(d==='"'&&s===""){r=!0,a+=1;continue}if(d===e){l(),a+=1;continue}if(d==="\r"&&n[a+1]===`
|
|
22
22
|
`){l(),c(),a+=2;continue}if(d===`
|
|
23
23
|
`||d==="\r"){l(),c(),a+=1;continue}s+=d,a+=1}return(s!==""||o||i.length>0)&&(l(),c()),t}function Xw(n){if(n.length===0)return!1;const e=new Set;for(const t of n){const s=t.trim();if(s===""||e.has(s.toLowerCase())||s!==""&&Number.isFinite(Number(s)))return!1;e.add(s.toLowerCase())}return!0}function Kw(n,e){const t=/\.tsv$/i.test(e)?" ":",",s=qw(n,t);if(s.length===0)return{caps:[],rows:[],headed:!1};const i=s[0],r=Xw(i),a=r?s.slice(1):s,o=s.reduce((d,u)=>Math.max(d,u.length),0),l=r?Array.from({length:o},(d,u)=>(i[u]??`COLUMN ${u+1}`).trim()):Array.from({length:o},(d,u)=>`COLUMN ${u+1}`),c=a.map(d=>Array.from({length:o},(u,h)=>d[h]??""));return{caps:l,rows:c,headed:r}}const Ch=/\.json$/i,Yw=4*1024*1024,Rl=/("(?:\\.|[^"\\])*")(\s*:)?|(-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)|\b(true|false|null)\b/g;function Ph(n){if(n.length>Yw)return null;let e;try{e=JSON.parse(n)}catch{return null}const t=JSON.stringify(e,null,2),s=document.createDocumentFragment();let i=0;Rl.lastIndex=0;for(let r=Rl.exec(t);r!==null;r=Rl.exec(t)){r.index>i&&s.append(t.slice(i,r.index));const a=document.createElement("span"),[o,l,c,d,u]=r;l!==void 0?(a.className=c!==void 0?"json-key":"json-string",a.textContent=l,s.append(a),c!==void 0&&s.append(c)):d!==void 0?(a.className="json-number",a.textContent=d,s.append(a)):(a.className="json-literal",a.textContent=u??o,s.append(a)),i=r.index+o.length}return i<t.length&&s.append(t.slice(i)),s}function Zw(n){return n.model?.kind==="fs.listing"&&Array.isArray(n.model.data)&&n.model.data.length>0}function Qw(n){const e=(n.renderedErr??n.rendered??"").replace(/\x1b\[[0-9;]*m/g,"").split(`
|
|
24
|
-
`).map(s=>s.trim()).filter(s=>s.length>0).join(" · "),t=[...n.errors??[]].reverse().find(s=>s.type==="error")?.message?.replace(/^\[[^\]]*\]\s*\|\s*/,"")??"";return e||t||"refused"}function Lh(n){return/-v(\d+(?:\.\d+)*)$/.exec(n)?.[1]??""}const Wh="",Jw="/bin",kh="/bin/recent",Ia={dir:"",file:"",link:"",plugin:"",pipeline:"",vfs:"",job:""},Bl=["list","cards","preview"],ey=5e3,ty=new Set(["png","jpg","jpeg","gif","svg","webp","bmp"]),sy=new Set(["txt","md","adoc","rst","json","csv","tsv","log","yaml","yml","toml","ini","cfg","xml","html","py","sh","ts","js","mjs","r","c","h","cpp","java","go","rs","sql","tex","bib"]),Uh=160,Fh=100,Ga=10,ny=30,iy=256*1024,ry=4e3,ay=12*1024*1024,oy=400;function pl(n){return ty.has(Qm(n))}function Qm(n){const e=n.split("/").pop()??"",t=e.lastIndexOf(".");return t>0?e.slice(t+1).toLowerCase():""}function ly(n){if(n.includes("\0"))return!0;const e=(n.match(/\uFFFD/g)??[]).length;return e>0&&e/n.length>.02}const cy=80;function jh(n,e){if(n===null)return[];const t=document.createElement("button");return t.className="files-close-pill files-download-pill",t.textContent="DOWNLOAD",t.title="save this file to your disk",t.addEventListener("click",()=>n.download(e)),[t]}function $h(n){const e="http://www.w3.org/2000/svg",t=document.createElementNS(e,"svg");t.setAttribute("viewBox",`0 0 ${Uh} ${Fh}`),t.setAttribute("preserveAspectRatio","xMidYMid meet");const s=Xm(n),i=Math.max(s.width,1),r=Math.max(s.tierCount-1,1),a=new Map;for(const o of s.placements)a.set(o.id,{x:Ga+o.x/i*(Uh-2*Ga),y:Ga+o.tier/r*(Fh-2*Ga)});for(const o of n){const l=a.get(o.id);if(l)for(const c of o.parentIds){const d=a.get(c);if(!d)continue;const u=document.createElementNS(e,"line");u.setAttribute("x1",String(d.x)),u.setAttribute("y1",String(d.y)),u.setAttribute("x2",String(l.x)),u.setAttribute("y2",String(l.y)),u.setAttribute("stroke","currentColor"),u.setAttribute("stroke-width","1"),u.setAttribute("opacity","0.6"),t.appendChild(u)}}for(const[,o]of a){const l=document.createElementNS(e,"circle");l.setAttribute("cx",String(o.x)),l.setAttribute("cy",String(o.y)),l.setAttribute("r",n.length>ny?"2.2":"4"),l.setAttribute("fill","currentColor"),t.appendChild(l)}return t}function Ra(n){return n.type==="dir"||n.type==="vfs"||n.type==="link"||n.type==="job"?"dir":n.type==="file"?"file":n.type==="plugin"||n.type==="pipeline"?n.type:null}class Jm{container;recent=null;activate;listing;lastListings=[];contentShown=!1;denied=new Set;following=!1;viewMode="list";viewPill;modeSpan;preview;catalogue;runStrip=null;feedOpen=null;headCache=new Map;thumbObserver=null;frameTopObserver=null;stale=!1;home=null;ceiling=null;stateSpan;indicate=null;selectionVerbs=null;constructor(e,t,s=null,i={}){this.container=e,this.activate=t,this.preview=s,this.catalogue=i.catalogue===!0,this.catalogue&&e.parentElement?.classList.add("files-catalogue");const r=e.closest(".pane-files")??e.parentElement;this.viewPill=e.parentElement?.querySelector(".files-view")??null,this.modeSpan=e.closest(".pane-files")?.querySelector(".pane-mode")??null,this.stateSpan=r?.querySelector(".pane-state")??null,this.viewPill?.addEventListener("click",()=>{this.view_set(Bl[(Bl.indexOf(this.viewMode)+1)%Bl.length]??"list")});const a=e.parentElement?.querySelector(":scope > .mode-frame")!==null;this.listing=new Si({mount:e,traits:this.traits_declare(),key:o=>o.home===!0?"~":o.path,address:o=>o.path,chrome:r===null?void 0:{root:r,prefix:"files"},control:"control",activate:o=>this.row_activate(o),activatable:o=>o.updir||Ra(o.entry)!==null,indicated:o=>this.indicate?.(o.entry,o.path),row:{className:o=>`files-row files-type-${o.entry.type}${o.home===!0?" files-lead-home":o.updir?" files-lead-up":""}${!o.updir&&this.denied.has(o.path)?" files-denied":""}`,decorate:(o,l)=>{o.dataset.path=l.path,!l.updir&&this.denied.has(l.path)&&(o.title="listed but not readable — CUBE refused this identity access to the contents")}},...a?{selection:{verbs:o=>this.selectionVerbs?.(o.map(([l,c])=>[l,c.entry]))??[]}}:{},state:o=>this.stateLine_compose(o),defaultSort:{key:"name",dir:"asc"}}),this.empty_render()}traits_declare(){return this.catalogue?this.catalogueTraits_declare():this.browserTraits_declare()}browserTraits_declare(){return[{key:"control",label:"",className:"files-control",capped:!1,width:"2.4em",cell:e=>{const t=document.createElement("span"),s=e.updir?"dir":e.entry.type,i=e.updir||Ra(e.entry)!==null;return t.className=`files-control files-glyph files-glyph-${s}${i?" files-capsule":""}`,t.textContent=e.home===!0?Wh:!e.updir&&this.denied.has(e.path)?"⃠":Ia[s],t}},{key:"name",label:"NAME",className:"files-name",width:"minmax(12em, 1fr)",cell:e=>{const t=document.createElement("span");if(t.className="files-name",t.textContent=e.home===!0?"~":e.entry.name,e.home===!0){const s=document.createElement("span");s.className="files-target",s.textContent=e.path,t.appendChild(s),t.title=`home: ${e.path}`}if(!e.updir&&e.entry.type==="link"&&e.entry.target!==void 0){const s=document.createElement("span");s.className="files-target",s.textContent=`→ ${e.entry.target}`,t.appendChild(s),t.title=e.entry.target}return t},compare:e=>e.entry.name},{key:"type",label:"TYPE",className:"files-type",width:"6em",cell:e=>e.updir?"":e.entry.type},{key:"size",label:"SIZE",className:"files-size",width:"6em",cell:e=>e.updir||e.entry.type==="dir"?"":Hh(e.entry.size),compare:e=>e.entry.size},{key:"date",label:"DATE",className:"files-date",width:"7em",cell:e=>e.updir?"":e.entry.date.slice(0,10),compare:e=>e.entry.date},{key:"owner",label:"OWNER",className:"files-owner",width:"10em",cell:e=>e.updir?"":e.entry.owner}]}row_activate(e){if(e.updir){this.activate({kind:"dir",path:e.path});return}const t=Ra(e.entry);t!==null&&this.activate({kind:t,path:e.path})}envelope_observe(e){if(e.status==="error"&&!Zw(e)){this.listing.activation_refuse(Qw(e));return}if(e.model?.kind!=="fs.listing")return;const t=Vh(e.model.data);if(t===null||t.length===0)return;this.lastListings=t;const s=t[0]?.path??"";this.container.closest(".workspace-pane")?.classList.toggle("files-projection",/^\/(proc|net|etc|usr)(\/|$)/.test(s)),!this.contentShown&&this.listings_render(t)}ambient_observe(e){if(e.model?.kind!=="fs.listing")return;const t=Vh(e.model.data);if(t===null||this.lastListings.length===0)return;let s=!1;const i=this.lastListings.map(r=>{const a=t.find(o=>o.path===r.path);return a===void 0?r:(s=!0,a)});if(s){if(this.contentShown){this.lastListings=i;return}this.listings_render(i)}}contentTable_show(e,t){const s=Kw(t,e);if(s.caps.length===0){this.content_show(e,t);return}const i=s.rows.slice(0,ey),r=s.rows.length>i.length;this.contentRelease?.(),this.contentShown=!0,this.container.parentElement?.classList.add("content-view"),this.container.replaceChildren(),this.diagram_declare(!1);const a=document.createElement("section");a.className="files-content-view files-table-view";const o=document.createElement("header");o.className="files-path files-content-header";const l=document.createElement("span");l.textContent=e;const c=document.createElement("span");c.className="pane-state",o.append(l,c);const d=document.createElement("div");d.className="files-table-field";const u=document.createElement("span");u.className="field-rule";const h=document.createElement("button");h.className="mode-strip",h.title="display modes";const p=document.createElement("span");p.className="mode-elbow";const f=document.createElement("aside");f.className="mode-frame";const b=document.createElement("button");b.className="strategy-pill csv-filter rail-off",b.textContent="FILTER OFF",b.title="filter the table";const g=document.createElement("button");g.className="strategy-pill csv-raw",g.textContent="RAW",g.title="the bytes as written",g.addEventListener("click",()=>this.content_show(e,t));const m=document.createElement("button");m.className="strategy-pill csv-close",m.textContent="CLOSE",m.title="leave the table; the listing beneath returns",m.addEventListener("click",()=>this.listing_restore());const _=document.createElement("span");_.className="mode-fill",f.append(b,g,_);const y=this.preview;if(y!==null){const S=document.createElement("button");S.className="strategy-pill csv-download",S.textContent="DOWNLOAD",S.title="save this file to your disk",S.addEventListener("click",()=>y.download(e)),f.append(S)}f.append(m);const z=document.createElement("div");z.className="files-table-rows",d.append(u,h,p,f,z),a.append(o,d),this.container.appendChild(a);const w=s.caps.map((S,M)=>({key:`c${M}`,label:S.toUpperCase(),className:"files-table-cell",cell:v=>v.cells[M]??"",width:"minmax(6em, 1fr)"}));new Si({mount:z,traits:w,key:S=>String(S.index),chrome:{root:a,prefix:"csv"},state:S=>{const M=[];return S.filter!==""?M.push(`${S.filter} ROWS`):M.push(r?`SHOWING ${i.length} OF ${s.rows.length} ROWS`:`${s.rows.length} ROWS`),s.headed||M.push("NO HEADER: COLUMNS NUMBERED"),M.join(" · ")},empty:()=>{const S=document.createElement("div");return S.className="files-note",S.textContent="NO ROWS",S}}).rows_set([{key:e,rows:i.map((S,M)=>({index:M,cells:S}))}],{field:e}),this.contentRelease=()=>{z.replaceChildren()}}content_show(e,t,s=!1){this.diagram_declare(!1),this.contentShown=!0,this.container.parentElement?.classList.add("content-view"),this.container.replaceChildren();const i=document.createElement("header");i.className="files-path files-content-header";const r=document.createElement("span");r.textContent=e;const a=document.createElement("button");a.className="files-close-pill",a.textContent="CLOSE",a.addEventListener("click",()=>this.listing_restore());const o=document.createElement("pre");o.className="files-content";const l=s||!Ch.test(e)?null:Ph(t),c=[];if(l!==null||s&&Ch.test(e)&&Ph(t)!==null){const d=document.createElement("button");d.className="files-close-pill",d.textContent=l!==null?"RAW":"PRETTY",d.addEventListener("click",()=>this.content_show(e,t,l!==null)),c.push(d)}i.append(r,...jh(this.preview,e),...c,a),l!==null?(o.classList.add("files-json"),o.append(l)):o.textContent=t,this.container.append(i,o),$s(o)}contentRefused_show(e,t){this.diagram_declare(!1),this.denied.add(e),this.contentShown=!0,this.container.parentElement?.classList.add("content-view"),this.container.replaceChildren();const s=document.createElement("header");s.className="files-path files-content-header files-content-refused";const i=document.createElement("span");i.textContent=e;const r=document.createElement("button");r.className="files-close-pill",r.textContent="CLOSE",r.addEventListener("click",()=>this.listing_restore()),s.append(i,r);const a=document.createElement("div");a.className="files-refused";const o=document.createElement("p");o.className="files-refused-lede",o.textContent="READ REFUSED";const l=document.createElement("pre");l.className="files-refused-said",l.textContent=t,a.append(o,l),this.container.append(s,a)}contentImage_show(e,t){this.contentShown=!0,this.container.parentElement?.classList.add("content-view"),this.container.replaceChildren();const s=document.createElement("header");s.className="files-path files-content-header";const i=document.createElement("span");i.textContent=e;const r=document.createElement("button");r.className="files-close-pill",r.textContent="CLOSE",r.addEventListener("click",()=>this.listing_restore()),s.append(i,...jh(this.preview,e),r);const a=document.createElement("img");a.className="files-image",a.src=t,a.alt=e,this.container.append(s,a)}rowVerbs_declare(e,t){this.indicate=t??null,this.listing.actions_declare({of:s=>s.updir?[]:e(s.entry,s.path).map(i=>({label:i.label,run:()=>i.run(s.entry),...i.offered!==void 0?{offered:()=>i.offered(s.entry)}:{},...i.disabled!==void 0?{disabled:()=>i.disabled(s.entry)}:{}}))})}catalogueTraits_declare(){return[...this.browserTraits_declare().filter(s=>s.key==="control"||s.key==="name"),{key:"type",label:"TYPE",className:"files-type",width:"6em",cell:s=>s.updir?"":s.entry.type},{key:"version",label:"VERSION",className:"files-version",width:"7em",cell:s=>s.updir?"":Lh(s.entry.name),compare:s=>Lh(s.entry.name)}]}catalogue_is(){return this.catalogue}binding_set(e){if(this.runStrip===null){const s=document.createElement("div");s.className="files-run-strip";const i=document.createElement("span");i.className="files-binding";const r=document.createElement("input");r.className="files-command",r.spellcheck=!1,r.autocomplete="off",r.placeholder="the line RUN will run",s.append(i,r),this.container.parentElement?.insertBefore(s,this.container),this.runStrip=s;const a=this.container.closest(".pane-files")?.querySelector(".pane-title");a!=null&&(a.textContent="CATALOGUE")}const t=this.runStrip.querySelector(".files-binding");t!==null&&(t.textContent=`INPUT ${e.input} → ${e.place}`),this.frameTop_track()}commandLine_get(){return this.runStrip?.querySelector(".files-command")?.value.trim()??""}commandLine_set(e){const t=this.runStrip?.querySelector(".files-command")??null;t!==null&&(t.value=e)}indicated_get(){return this.listing.indicated_get()}feedOpen_declare(e){this.feedOpen=e}run_show(e){if(this.runStrip===null)return;this.runStrip.querySelector(".files-feed")?.remove();const t=document.createElement("button");t.className="files-feed listing-capsule listing-action-selected",t.textContent=`FEED ${e}`,t.title="open this run's graph beside the catalogue",t.addEventListener("click",()=>this.feedOpen?.(e)),this.runStrip.appendChild(t)}row_indicate(e){this.listing.row_indicate(e)}rowReadout_show(e,t){this.listing.readout_show(e,t)}selectionVerbs_declare(e){this.selectionVerbs=e}select_toggle(e){this.listing.select_toggle(e)}select_isOn(){return this.listing.select_isOn()}selection_get(){return this.listing.selection_get()}path_current(){return this.lastListings[0]?.path??null}content_isShown(){return this.contentShown}contentRelease=null;contentHtml_show(e,t,s={}){this.contentRelease?.(),this.contentRelease=s.release??null,this.contentShown=!0,this.container.parentElement?.classList.add("content-view"),this.container.replaceChildren();const i=document.createElement("section");i.className="files-content-view";const r=document.createElement("header");r.className="files-path files-content-header";const a=document.createElement("span");a.textContent=e;const o=document.createElement("button");if(o.className="files-close-pill",o.textContent="CLOSE",o.addEventListener("click",()=>this.listing_restore()),r.append(a,o),i.appendChild(r),t!==""){const c=document.createElement("pre");c.className="files-content",c.innerHTML=t,i.appendChild(c)}let l=null;return s.diagram===!0&&(l=document.createElement("div"),l.className="files-diagram",i.appendChild(l)),this.diagram_declare(s.diagram===!0),this.container.appendChild(i),l}contentText_set(e){const t=this.container.querySelector(".files-content-view");if(t===null)return;const s=t.querySelector(".files-content"),i=s??document.createElement("pre");i.className="files-content",i.innerHTML=e,s===null&&t.querySelector(".files-content-header")?.after(i)}recent_set(e){this.recent=e===null?null:[...e],this.lastListings.length>0&&!this.contentShown&&this.listings_render(this.lastListings)}listing_restore(){this.contentRelease?.(),this.contentRelease=null,this.lastListings.length>0?this.listings_render(this.lastListings):this.empty_render()}empty_render(){this.diagram_declare(!1),this.container.replaceChildren();const e=document.createElement("p");e.className="files-empty",e.textContent="AWAITING LISTING — TYPE ls IN THE CONSOLE",this.container.appendChild(e)}listings_render(e){this.diagram_declare(!1),this.contentShown=!1,this.container.parentElement?.classList.remove("content-view"),this.lastListings=e,this.thumbObserver?.disconnect(),this.thumbObserver=null,this.stale=e.some(i=>i.fresh===!1),P0(this.stateSpan,"stale",this.stale),this.listing.painter_set(this.viewMode==="list"?null:(i,r)=>this.cards_paint(i,r));const t=e.map(i=>this.block_of(i)),s=e.find(i=>i.path===Jw);if(this.recent!==null&&this.recent.length>0&&s!==void 0){const i=this.recentBlock_of(s);i!==null&&t.unshift(i)}this.listing.rows_set(t,{field:e[0]?.path??""}),this.frameTop_track()}crumbs_build(e){const t=document.createElement("header");t.className="files-path files-crumbs";const s=[],i=this.home;let r;i!==null&&(e===i||e.startsWith(`${i}/`))?(s.push({label:"~",path:i}),r=e.slice(i.length)):(s.push({label:"/",path:"/"}),r=e);let a=s[0]?.path??"/";for(const o of r.split("/").filter(l=>l.length>0))a=a==="/"?`/${o}`:`${a}/${o}`,s.push({label:o,path:a});return s.forEach((o,l)=>{l>0&&s[l-1]?.label!=="/"&&t.append("/");const c=l===s.length-1,d=document.createElement(c?"span":"button");d.className=c?"files-crumb files-crumb-here":"files-crumb",d.textContent=o.label,d.dataset.path=o.path,c||(d.title=`go to ${o.path}`,d.addEventListener("click",u=>{u.stopPropagation(),this.activate({kind:"dir",path:o.path})})),t.appendChild(d)}),t}ceiling_set(e,t=".."){this.ceiling=e===null?null:{path:e.replace(/\/+$/,"")||"/",word:t}}home_set(e){e!==this.home&&(this.home=e,!this.contentShown&&this.lastListings.length>0&&this.listings_render(this.lastListings))}block_of(e){const t=this.crumbs_build(e.path),s=e.items.map(r=>({entry:r,path:Ba(e.path,r.name),updir:!1})),i=[];if(!this.catalogue&&this.home!==null&&e.path!==this.home&&i.push({entry:{name:"~",type:"dir",size:0,owner:"",date:""},path:this.home,updir:!0,home:!0}),e.path!=="/"){const r=this.ceiling!==null&&this.ceiling.path===e.path?this.ceiling.word:"..";i.push({entry:{name:r,type:"dir",size:0,owner:"",date:""},path:dy(e.path),updir:!0})}return{key:e.path,header:t,lead:i,rows:s}}recentBlock_of(e){const t=new Map(e.items.map(r=>[r.name,r])),s=[];for(const r of this.recent??[]){const a=t.get(r);a!==void 0&&s.push({entry:a,path:Ba(kh,r),updir:!1})}if(s.length===0)return null;const i=document.createElement("header");return i.className="files-path files-recent",i.textContent="RECENT",{key:kh,header:i,lead:[],rows:s}}cards_paint(e,t){const s=this.viewMode==="preview",i=document.createElement("div");i.className=s?"files-cards files-previews":"files-cards";for(const a of e.lead??[]){const o=document.createElement("article");o.className=a.home===!0?"files-card files-card-up files-card-home files-activatable":"files-card files-card-up files-activatable",o.textContent=a.home===!0?`${Wh} ~`:"▴ ..",o.addEventListener("click",()=>this.activate({kind:"dir",path:a.path})),i.appendChild(o)}const r=e.key;for(const a of e.rows)i.appendChild(this.card_build(r,a.entry,s));t.appendChild(i)}frameTop_track(){const e=this.container.parentElement,t=this.container.querySelector(".roster-order"),s=this.container.querySelector(".files-path");if(this.frameTopObserver?.disconnect(),this.frameTopObserver=null,e===null)return;if(t===null||s===null){e.style.removeProperty("--mode-frame-top"),e.style.removeProperty("--roster-frame-h");return}const i=()=>{const r=e.getBoundingClientRect().top,a=Math.ceil(t.getBoundingClientRect().bottom-r);e.style.setProperty("--roster-frame-h",`${a}px`),e.style.setProperty("--mode-frame-top",`${Math.ceil(s.getBoundingClientRect().bottom-r)}px`)};i(),this.frameTopObserver=new ResizeObserver(i),this.frameTopObserver.observe(t),this.frameTopObserver.observe(s)}follow_set(e){this.following=e,this.listing.state_refresh()}follow_get(){return this.following}view_set(e){this.viewMode=e,this.viewPill!==null&&(this.viewPill.textContent=e.toUpperCase()),this.modeSpan!==null&&(this.modeSpan.textContent=e==="list"?"":e.toUpperCase()),this.lastListings.length>0&&!this.contentShown&&this.listings_render(this.lastListings)}view_get(){return this.viewMode}body_get(){return this.container.closest(".files-body")}diagram_declare(e){this.body_get()?.classList.toggle("diagram-shown",e),e||this.mode_annunciate(this.viewMode==="list"?"":this.viewMode.toUpperCase())}mode_annunciate(e){this.modeSpan!==null&&(this.modeSpan.textContent=e)}stateLine_compose(e){const t=[];return this.following&&t.push("CWD"),e.selecting&&t.push("SELECT"),t.push(this.stale?"STALE":e.filter),e.selected>0&&t.push(e.shown===e.selected?`${e.selected} SELECTED`:`${e.selected} SELECTED · ${e.shown} SHOWN`),t.filter(s=>s!=="").join(" · ")}card_build(e,t,s=!1){const i=document.createElement("article");i.className=`files-card files-type-${t.type}`,s&&i.appendChild(this.thumb_build(Ba(e,t.name),t));const r=document.createElement("div");r.className="files-card-head";const a=document.createElement("span");a.className="files-card-badge",a.textContent=t.type.toUpperCase();const o=document.createElement("span");o.className="files-card-size",o.textContent=t.type==="dir"||t.size===0?"":Hh(t.size),r.append(a,o);const l=document.createElement("div");l.className="files-card-title",l.textContent=t.name;const c=document.createElement("div");c.className="files-card-meta";const d=document.createElement("span");d.textContent=t.owner;const u=document.createElement("span");if(u.textContent=t.date.slice(0,10),c.append(d,u),i.append(r,l,c),t.type==="link"&&t.target!==void 0){const f=document.createElement("div");f.className="files-card-target",f.textContent=`→ ${t.target}`,f.title=t.target,i.appendChild(f)}const h=Ba(e,t.name),p=Ra(t);return p!==null&&(i.classList.add("files-activatable"),i.addEventListener("click",()=>this.activate({kind:p,path:h}))),i}thumb_build(e,t){const s=document.createElement("div");s.className="files-card-thumb";const i=()=>{s.textContent=Ia[t.type]};if(Gm.test(t.name)||Ho.test(t.name)){s.classList.add("thumb-series");const u=document.createElement("span");u.className="thumb-series-mark",u.textContent="DCM";const h=/^\d+-(.*)-[0-9a-f]{7}$/.exec(t.name)?.[1];if(s.replaceChildren(u),h!==void 0){const p=document.createElement("span");p.className="thumb-series-text",p.textContent=h.replace(/_/g," "),s.appendChild(p)}return s}if(this.preview===null||!(t.type==="file"||t.type==="plugin"||t.type==="pipeline"))return i(),s;if(t.type==="plugin")return s.replaceChildren($h([{id:e,parentIds:[]}])),s;if(t.type==="pipeline"){const u=this.preview;s.classList.add("thumb-wait"),s.textContent=Ia[t.type];const h=()=>{u.pipelineGlimpse(e).then(p=>{if(s.classList.remove("thumb-wait"),p===null||p.length===0){i();return}if(p.length>cy){s.textContent=`${p.length} NODES`,s.classList.add("thumb-count");return}s.replaceChildren($h(p))}).catch(()=>{s.classList.remove("thumb-wait"),i()})};return this.thumbObserver_get().observe(s),s.addEventListener("files:thumb-seen",h,{once:!0}),s}const r=this.headCache.get(e);if(r!==void 0){const u=document.createElement("pre");return u.textContent=r,s.appendChild(u),s}const a=pl(e)&&t.size<=ay,o=Qm(e),l=(o===""||sy.has(o))&&t.size<=iy;if(!a&&!l)return i(),s;s.classList.add("thumb-wait"),s.textContent=Ia.file;const c=this.preview,d=()=>{if(a){const u=document.createElement("img");u.alt=t.name,u.addEventListener("load",()=>{s.classList.remove("thumb-wait")}),u.addEventListener("error",()=>{s.classList.remove("thumb-wait"),i()}),u.src=c.imageUrl(e),s.replaceChildren(u);return}c.textHead(e,ry).then(u=>{if(this.headCache.size>=oy&&this.headCache.clear(),this.headCache.set(e,u),s.classList.remove("thumb-wait"),u.trim()===""||ly(u)){i();return}const h=document.createElement("pre");h.textContent=u,s.replaceChildren(h)}).catch(()=>{s.classList.remove("thumb-wait"),i()})};return this.thumbObserver_get().observe(s),s.addEventListener("files:thumb-seen",d,{once:!0}),s}thumbObserver_get(){return this.thumbObserver===null&&(this.thumbObserver=new IntersectionObserver(e=>{for(const t of e)t.isIntersecting&&(this.thumbObserver?.unobserve(t.target),t.target.dispatchEvent(new CustomEvent("files:thumb-seen")))},{root:this.container,rootMargin:"25%"})),this.thumbObserver}filter_toggle(e){this.listing.filter_toggle(e)}}function Vh(n){if(!Array.isArray(n))return null;for(const e of n){if(typeof e!="object"||e===null)return null;const t=e;if(typeof t.path!="string"||!Array.isArray(t.items))return null}return n}function Ba(n,e){return n.endsWith("/")?`${n}${e}`:`${n}/${e}`}function dy(n){const e=n.endsWith("/")?n.slice(0,-1):n,t=e.lastIndexOf("/");return t<=0?"/":e.slice(0,t)}function Hh(n){if(n<1024)return String(n);const e=["K","M","G","T"];let t=n,s=-1;for(;t>=1024&&s<e.length-1;)t=t/1024,s=s+1;return`${t<10?t.toFixed(1):Math.round(t)}${e[s]}`}class uy{grid;startHere;host;paintId=0;constructor(e,t){this.host=t,this.grid=e.querySelector(".launcher-grid"),$s(this.grid,{rows:".launcher-tile",mount:this.grid.parentElement??this.grid});const s=e.querySelector(".launcher-body");s!==null&&$s(s,{rows:".launcher-tile"}),this.startHere=e.querySelector(".launcher-start"),this.startHere.addEventListener("click",()=>{this.host.startHere_set(!this.host.startHere_get()),this.startHere_render()}),this.startHere_render()}render(){const e=++this.paintId;this.host.tiles().then(t=>{e!==this.paintId||!this.grid.isConnected||(this.grid.replaceChildren(...t.map((s,i)=>this.tile_build(s,i===0||s.wide===!0))),this.startHere_render())}).catch(()=>{e!==this.paintId||!this.grid.isConnected||this.grid.replaceChildren()})}numeral_press(e){const t=this.grid.querySelector(`[data-numeral="${e}"]`);return t===null?!1:(t.click(),!0)}startHere_render(){const e=this.host.startHere_get();this.startHere.textContent=e?"START HERE · ON":"START HERE · OFF",this.startHere.classList.toggle("pacs-capsule-off",!e)}tile_build(e,t){const s=document.createElement("button");s.className=`launcher-tile${t?" launcher-tile-wide":""}`,s.style.setProperty("--tile-hue",`var(${e.hue})`),s.dataset.numeral=e.numeral,s.title=e.verb,s.addEventListener("click",d=>{d.target instanceof Element&&d.target.closest(".launcher-row, .launcher-figure")!==null||(this.host.leave?.(),e.enter())});const i=document.createElement("span");i.className="launcher-head";const r=document.createElement("span");r.className="launcher-name",r.textContent=e.name;const a=document.createElement("span");a.className="launcher-numeral",a.textContent=e.numeral,i.append(r);for(const d of e.figures){const u=document.createElement(d.open===void 0?"span":"button");if(u.className=`launcher-figure${d.errored===!0?" launcher-figure-errored":""}`,u.textContent=d.text,d.open!==void 0){const h=d.open;u.addEventListener("click",p=>{p.stopPropagation(),this.host.leave?.(),h()})}i.appendChild(u)}i.appendChild(a);const o=document.createElement("span");o.className="launcher-rule";const l=document.createElement("span");l.className="launcher-rows";for(const d of e.rows){const u=document.createElement(d.open===void 0?"span":"button");u.className=`launcher-row${d.arrived===!0?" launcher-row-arrived":""}`;const h=document.createElement("span");h.className=`launcher-dot${d.errored===!0?" launcher-dot-errored":""}`;const p=document.createElement("span");if(p.className="launcher-row-text",p.textContent=d.text,u.append(h,p),d.open!==void 0){const f=d.open,b=document.createElement("span");b.className="launcher-go",b.textContent="›",u.appendChild(b),u.addEventListener("click",g=>{g.stopPropagation(),this.host.leave?.(),f()})}l.appendChild(u)}const c=document.createElement("span");return c.className="launcher-verb",c.textContent=e.verb,s.append(i,o),e.about!==void 0&&s.appendChild(hy(e.about)),s.append(l,c),s}}function hy(n){const e=document.createElement("span");e.className="launcher-about";const t=document.createElement("span");if(t.className="launcher-about-text",t.textContent=n.text,e.appendChild(t),n.list!==void 0&&n.list.length>0){const s=document.createElement("span");s.className="launcher-about-list";for(const i of n.list){const r=document.createElement("span");r.className="launcher-about-item",r.textContent=i,s.appendChild(r)}e.appendChild(s)}if(n.tail!==void 0){const s=document.createElement("span");s.className="launcher-about-text",s.textContent=n.tail,e.appendChild(s)}return e}const Rs={left:{axis:"col",place:"before",focusWord:"left",arrow:"ArrowLeft",edge:"leftmost"},right:{axis:"col",place:"after",focusWord:"right",arrow:"ArrowRight",edge:"rightmost"},above:{axis:"row",place:"before",focusWord:"up",arrow:"ArrowUp",edge:"topmost"},below:{axis:"row",place:"after",focusWord:"down",arrow:"ArrowDown",edge:"bottommost"}},eg=["left","right","above","below"];function qh(n){return n==="left"||n==="right"||n==="above"||n==="below"}function fy(n,e){return n==="row"?e?"above":"below":e?"left":"right"}function py(n,e){return n!=="row"&&n!=="col"||e!=="before"&&e!=="after"?null:fy(n,e==="before")}function my(n){return eg.find(e=>Rs[e].focusWord===n)??null}function gy(n){return eg.find(e=>Rs[e].arrow===n)??null}function My(n){return n?"before":"after"}function Es(n){return`[data-split="${Rs[n].axis}"][data-place="${Rs[n].place}"]`}const by=new Set(["pane","view","runs","node","dag","universe","file","pacs","image","tags","header","console","back","desktop","dashboard","help","launcher","attach","argus"]),tg=new Set(["layout","slice","series","wl","colormap","save","tags","load","guard","ghost","state"]),_y={pacs:new Set(["sort","filter"]),help:new Set(["pane","keys","verbs"]),tags:new Set(["redact","filter"]),image:tg};let zn=null;const $i="argus.desktop.",Xh="~/.config/argus/desktops";function zy(n){const e=n.trim().split(/\s+/),t=(e[0]??"").toLowerCase();if(!by.has(t))return null;const s=_y[t];if(s!==void 0&&!s.has((e[1]??"").toLowerCase()))return null;let i=null,r=e.slice(1);return(r[0]?.startsWith("@")||r[0]?.startsWith("%"))&&(i=r[0],r=r.slice(1)),{subject:t,target:i,words:r}}function Kh(n,e){if(e===null)return n.focused_get();if(e.startsWith("@"))return e.slice(1);const t=parseInt(e.slice(1),10);return zn===null?null:zn[t-1]??null}function bn(n,e,t){const i=n.paneMount_get(e)?.querySelector(t)??null;return i===null?!1:(i.click(),!0)}function Na(n,e,t){const s=n.paneMount_get(e);if(s===null)return!1;for(const i of s.querySelectorAll(".drawer-child"))if(i.textContent?.trim().toUpperCase()===t)return i.click(),!0;return!1}function wy(n,e,t){return bn(n,e,`.drawer-cwdbind[data-follow="${t?"on":"off"}"]`)}function jr(n,e,t,s){const r=n.paneMount_get(e)?.querySelector(t)??null;if(r===null)return!1;for(let a=0;a<4;a++){if(r.textContent?.trim().toUpperCase()===s)return!0;r.click()}return r.textContent?.trim().toUpperCase()===s}function sg(n,e){const t=n.focused_get(),s=t!==null?n.paneRect_get(t):null;if(s===null)return null;const i=s.x+s.width/2,r=s.y+s.height/2;let a=null;for(const o of n.panes_shown()){if(o===t)continue;const l=n.paneRect_get(o);if(l===null)continue;const c=l.x+l.width/2-i,d=l.y+l.height/2-r,u=e==="left"?-c:e==="right"?c:e==="up"?-d:d;if(u<=1)continue;const h=Math.abs(e==="left"||e==="right"?d:c),p=u+h*2;(a===null||p<a.score)&&(a={id:o,score:p})}return a===null?null:(n.focus_set(a.id),a.id)}const Di=[{key:"%",topic:"pane",selector:Es("right"),does:"split right (tmux)"},{key:'"',topic:"pane",selector:Es("below"),does:"split below (tmux)"},{key:"h",topic:"pane",selector:Es("left"),does:"split left"},{key:"j",topic:"pane",selector:Es("below"),does:"split below"},{key:"k",topic:"pane",selector:Es("above"),does:"split above"},{key:"l",topic:"pane",selector:Es("right"),does:"split right"},{key:"H",topic:"pane",selector:Es("left"),does:"move this pane left",move:!0},{key:"J",topic:"pane",selector:Es("below"),does:"move this pane below",move:!0},{key:"K",topic:"pane",selector:Es("above"),does:"move this pane above",move:!0},{key:"L",topic:"pane",selector:Es("right"),does:"move this pane right",move:!0},{key:"m",topic:"pane",selector:'.drawer-mode[data-mode="move"]',does:"arm MOVE (then a direction)"},{key:"z",topic:"pane",selector:".drawer-zoom",does:"zoom (tmux), or double-click the pane's header"},{key:"x",topic:"pane",selector:".drawer-close",does:"close (tmux)"},{key:"u",topic:"binding",selector:'.drawer-bind[data-bind="unlinked"]',does:"the next split is unlinked"},{key:"f",topic:"binding",selector:'.drawer-bind[data-bind="fs"]',does:"the next split is a linked filesystem"},{key:"v",topic:"binding",selector:'.drawer-bind[data-bind="viewer"]',does:"the next split is a linked viewer"},{key:"1",topic:"claim",selector:".empty-go-files",does:"claim an empty pane as FILES"},{key:"2",topic:"claim",selector:".empty-go-dag",does:"claim an empty pane as RUNS"},{key:"3",topic:"claim",selector:".empty-go-pacs",does:"claim an empty pane as PACS"},{key:"o",topic:"focus",selector:null,does:"focus the next pane (tmux)"},{key:";",topic:"focus",selector:null,does:"focus the last pane (tmux)"},{key:"q",topic:"focus",selector:null,does:"show every pane's @id on its bar (tmux)"},{key:"Space",topic:"pane",selector:null,does:"flip this pane's split: beside becomes above (tmux next layout)"},{key:"!",topic:"pane",selector:null,does:"break this pane out: alone on stage, the rest a PANES card (tmux)"},{key:"Ctrl-←↑↓→",topic:"pane",selector:null,does:"move the boundary beside this pane a step (tmux)"},{key:"w",topic:"stage",selector:null,does:"PANES, the desktops (tmux window chooser)"},{key:"[",topic:"console",selector:null,does:"the console's scrollback takes the keys (tmux)"},{key:"O",topic:"focus",selector:null,does:"focus the previous pane"},{key:"←↑↓→",topic:"focus",selector:null,does:"focus the pane in that direction (tmux)"},{key:":",topic:"console",selector:null,does:"the command line (tmux)"},{key:"?",topic:"console",selector:null,does:"this table"}],Yh=["prefix chords — Ctrl-B opens the focused pane's drawer; one key then presses one capsule",...Di.map(n=>` ${n.key.padEnd(6)} ${n.does}`)," Tab walks the verbs; Enter fires; Esc closes the drawer"].join(`
|
|
24
|
+
`).map(s=>s.trim()).filter(s=>s.length>0).join(" · "),t=[...n.errors??[]].reverse().find(s=>s.type==="error")?.message?.replace(/^\[[^\]]*\]\s*\|\s*/,"")??"";return e||t||"refused"}function Lh(n){return/-v(\d+(?:\.\d+)*)$/.exec(n)?.[1]??""}const Wh="",Jw="/bin",kh="/bin/recent",Ia={dir:"",file:"",link:"",plugin:"",pipeline:"",vfs:"",job:""},Bl=["list","cards","preview"],ey=5e3,ty=new Set(["png","jpg","jpeg","gif","svg","webp","bmp"]),sy=new Set(["txt","md","adoc","rst","json","csv","tsv","log","yaml","yml","toml","ini","cfg","xml","html","py","sh","ts","js","mjs","r","c","h","cpp","java","go","rs","sql","tex","bib"]),Uh=160,Fh=100,Ga=10,ny=30,iy=256*1024,ry=4e3,ay=12*1024*1024,oy=400;function pl(n){return ty.has(Qm(n))}function Qm(n){const e=n.split("/").pop()??"",t=e.lastIndexOf(".");return t>0?e.slice(t+1).toLowerCase():""}function ly(n){if(n.includes("\0"))return!0;const e=(n.match(/\uFFFD/g)??[]).length;return e>0&&e/n.length>.02}const cy=80;function jh(n,e){if(n===null)return[];const t=document.createElement("button");return t.className="files-close-pill files-download-pill",t.textContent="DOWNLOAD",t.title="save this file to your disk",t.addEventListener("click",()=>n.download(e)),[t]}function $h(n){const e="http://www.w3.org/2000/svg",t=document.createElementNS(e,"svg");t.setAttribute("viewBox",`0 0 ${Uh} ${Fh}`),t.setAttribute("preserveAspectRatio","xMidYMid meet");const s=Xm(n),i=Math.max(s.width,1),r=Math.max(s.tierCount-1,1),a=new Map;for(const o of s.placements)a.set(o.id,{x:Ga+o.x/i*(Uh-2*Ga),y:Ga+o.tier/r*(Fh-2*Ga)});for(const o of n){const l=a.get(o.id);if(l)for(const c of o.parentIds){const d=a.get(c);if(!d)continue;const u=document.createElementNS(e,"line");u.setAttribute("x1",String(d.x)),u.setAttribute("y1",String(d.y)),u.setAttribute("x2",String(l.x)),u.setAttribute("y2",String(l.y)),u.setAttribute("stroke","currentColor"),u.setAttribute("stroke-width","1"),u.setAttribute("opacity","0.6"),t.appendChild(u)}}for(const[,o]of a){const l=document.createElementNS(e,"circle");l.setAttribute("cx",String(o.x)),l.setAttribute("cy",String(o.y)),l.setAttribute("r",n.length>ny?"2.2":"4"),l.setAttribute("fill","currentColor"),t.appendChild(l)}return t}function Ra(n){return n.type==="dir"||n.type==="vfs"||n.type==="link"||n.type==="job"?"dir":n.type==="file"?"file":n.type==="plugin"||n.type==="pipeline"?n.type:null}class Jm{container;recent=null;activate;listing;lastListings=[];contentShown=!1;denied=new Set;following=!1;viewMode="list";viewPill;modeSpan;preview;catalogue;runStrip=null;feedOpen=null;headCache=new Map;thumbObserver=null;frameTopObserver=null;stale=!1;home=null;ceiling=null;stateSpan;indicate=null;selectionVerbs=null;constructor(e,t,s=null,i={}){this.container=e,this.activate=t,this.preview=s,this.catalogue=i.catalogue===!0,this.catalogue&&e.parentElement?.classList.add("files-catalogue");const r=e.closest(".pane-files")??e.parentElement;this.viewPill=e.parentElement?.querySelector(".files-view")??null,this.modeSpan=e.closest(".pane-files")?.querySelector(".pane-mode")??null,this.stateSpan=r?.querySelector(".pane-state")??null,this.viewPill?.addEventListener("click",()=>{this.view_set(Bl[(Bl.indexOf(this.viewMode)+1)%Bl.length]??"list")});const a=e.parentElement?.querySelector(":scope > .mode-frame")!==null;this.listing=new Si({mount:e,traits:this.traits_declare(),key:o=>o.home===!0?"~":o.path,address:o=>o.path,chrome:r===null?void 0:{root:r,prefix:"files"},control:"control",activate:o=>this.row_activate(o),activatable:o=>o.updir||Ra(o.entry)!==null,indicated:o=>this.indicate?.(o.entry,o.path),row:{className:o=>`files-row files-type-${o.entry.type}${o.home===!0?" files-lead-home":o.updir?" files-lead-up":""}${!o.updir&&this.denied.has(o.path)?" files-denied":""}`,decorate:(o,l)=>{o.dataset.path=l.path,!l.updir&&this.denied.has(l.path)&&(o.title="listed but not readable — CUBE refused this identity access to the contents")}},...a?{selection:{verbs:o=>this.selectionVerbs?.(o.map(([l,c])=>[l,c.entry]))??[]}}:{},state:o=>this.stateLine_compose(o),defaultSort:{key:"name",dir:"asc"}}),this.empty_render()}traits_declare(){return this.catalogue?this.catalogueTraits_declare():this.browserTraits_declare()}browserTraits_declare(){return[{key:"control",label:"",className:"files-control",capped:!1,width:"2.4em",cell:e=>{const t=document.createElement("span"),s=e.updir?"dir":e.entry.type,i=e.updir||Ra(e.entry)!==null;return t.className=`files-control files-glyph files-glyph-${s}${i?" files-capsule":""}`,t.textContent=e.home===!0?Wh:!e.updir&&this.denied.has(e.path)?"⃠":Ia[s],t}},{key:"name",label:"NAME",className:"files-name",width:"minmax(12em, 1fr)",cell:e=>{const t=document.createElement("span");if(t.className="files-name",t.textContent=e.home===!0?"~":e.entry.name,e.home===!0){const s=document.createElement("span");s.className="files-target",s.textContent=e.path,t.appendChild(s),t.title=`home: ${e.path}`}if(!e.updir&&e.entry.type==="link"&&e.entry.target!==void 0){const s=document.createElement("span");s.className="files-target",s.textContent=`→ ${e.entry.target}`,t.appendChild(s),t.title=e.entry.target}return t},compare:e=>e.entry.name},{key:"type",label:"TYPE",className:"files-type",width:"6em",cell:e=>e.updir?"":e.entry.type},{key:"size",label:"SIZE",className:"files-size",width:"6em",cell:e=>e.updir||e.entry.type==="dir"?"":Hh(e.entry.size),compare:e=>e.entry.size},{key:"date",label:"DATE",className:"files-date",width:"7em",cell:e=>e.updir?"":e.entry.date.slice(0,10),compare:e=>e.entry.date},{key:"owner",label:"OWNER",className:"files-owner",width:"10em",cell:e=>e.updir?"":e.entry.owner}]}row_activate(e){if(e.updir){this.activate({kind:"dir",path:e.path});return}const t=Ra(e.entry);t!==null&&this.activate({kind:t,path:e.path})}envelope_observe(e){if(e.status==="error"&&!Zw(e)){this.listing.activation_refuse(Qw(e));return}if(e.model?.kind!=="fs.listing")return;const t=Vh(e.model.data);if(t===null||t.length===0)return;this.lastListings=t;const s=t[0]?.path??"";this.container.closest(".workspace-pane")?.classList.toggle("files-projection",/^\/(proc|net|etc|usr)(\/|$)/.test(s)),!this.contentShown&&this.listings_render(t)}ambient_observe(e){if(e.model?.kind!=="fs.listing")return;const t=Vh(e.model.data);if(t===null||this.lastListings.length===0)return;let s=!1;const i=this.lastListings.map(r=>{const a=t.find(o=>o.path===r.path);return a===void 0?r:(s=!0,a)});if(s){if(this.contentShown){this.lastListings=i;return}this.listings_render(i)}}contentTable_show(e,t){const s=Kw(t,e);if(s.caps.length===0){this.content_show(e,t);return}const i=s.rows.slice(0,ey),r=s.rows.length>i.length;this.contentRelease?.(),this.contentShown=!0,this.container.parentElement?.classList.add("content-view"),this.container.replaceChildren(),this.diagram_declare(!1);const a=document.createElement("section");a.className="files-content-view files-table-view";const o=document.createElement("header");o.className="files-path files-content-header";const l=document.createElement("span");l.textContent=e;const c=document.createElement("span");c.className="pane-state",o.append(l,c);const d=document.createElement("div");d.className="files-table-field";const u=document.createElement("span");u.className="field-rule";const h=document.createElement("button");h.className="mode-strip",h.title="display modes";const p=document.createElement("span");p.className="mode-elbow";const f=document.createElement("aside");f.className="mode-frame";const b=document.createElement("button");b.className="strategy-pill csv-filter rail-off",b.textContent="FILTER OFF",b.title="filter the table";const g=document.createElement("button");g.className="strategy-pill csv-raw",g.textContent="RAW",g.title="the bytes as written",g.addEventListener("click",()=>this.content_show(e,t));const m=document.createElement("button");m.className="strategy-pill csv-close",m.textContent="CLOSE",m.title="leave the table; the listing beneath returns",m.addEventListener("click",()=>this.listing_restore());const _=document.createElement("span");_.className="mode-fill",f.append(b,g,_);const y=this.preview;if(y!==null){const S=document.createElement("button");S.className="strategy-pill csv-download",S.textContent="DOWNLOAD",S.title="save this file to your disk",S.addEventListener("click",()=>y.download(e)),f.append(S)}f.append(m);const z=document.createElement("div");z.className="files-table-rows",d.append(u,h,p,f,z),a.append(o,d),this.container.appendChild(a);const w=s.caps.map((S,M)=>({key:`c${M}`,label:S.toUpperCase(),className:"files-table-cell",cell:v=>v.cells[M]??"",width:"minmax(6em, 1fr)"}));new Si({mount:z,traits:w,key:S=>String(S.index),chrome:{root:a,prefix:"csv"},state:S=>{const M=[];return S.filter!==""?M.push(`${S.filter} ROWS`):M.push(r?`SHOWING ${i.length} OF ${s.rows.length} ROWS`:`${s.rows.length} ROWS`),s.headed||M.push("NO HEADER: COLUMNS NUMBERED"),M.join(" · ")},empty:()=>{const S=document.createElement("div");return S.className="files-note",S.textContent="NO ROWS",S}}).rows_set([{key:e,rows:i.map((S,M)=>({index:M,cells:S}))}],{field:e}),this.contentRelease=()=>{z.replaceChildren()}}content_show(e,t,s=!1){this.diagram_declare(!1),this.contentShown=!0,this.container.parentElement?.classList.add("content-view"),this.container.replaceChildren();const i=document.createElement("header");i.className="files-path files-content-header";const r=document.createElement("span");r.textContent=e;const a=document.createElement("button");a.className="files-close-pill",a.textContent="CLOSE",a.addEventListener("click",()=>this.listing_restore());const o=document.createElement("pre");o.className="files-content";const l=s||!Ch.test(e)?null:Ph(t),c=[];if(l!==null||s&&Ch.test(e)&&Ph(t)!==null){const d=document.createElement("button");d.className="files-close-pill",d.textContent=l!==null?"RAW":"PRETTY",d.addEventListener("click",()=>this.content_show(e,t,l!==null)),c.push(d)}i.append(r,...jh(this.preview,e),...c,a),l!==null?(o.classList.add("files-json"),o.append(l)):o.textContent=t,this.container.append(i,o),$s(o)}contentRefused_show(e,t){this.diagram_declare(!1),this.denied.add(e),this.contentShown=!0,this.container.parentElement?.classList.add("content-view"),this.container.replaceChildren();const s=document.createElement("header");s.className="files-path files-content-header files-content-refused";const i=document.createElement("span");i.textContent=e;const r=document.createElement("button");r.className="files-close-pill",r.textContent="CLOSE",r.addEventListener("click",()=>this.listing_restore()),s.append(i,r);const a=document.createElement("div");a.className="files-refused";const o=document.createElement("p");o.className="files-refused-lede",o.textContent="READ REFUSED";const l=document.createElement("pre");l.className="files-refused-said",l.textContent=t,a.append(o,l),this.container.append(s,a)}contentImage_show(e,t){this.contentShown=!0,this.container.parentElement?.classList.add("content-view"),this.container.replaceChildren();const s=document.createElement("header");s.className="files-path files-content-header";const i=document.createElement("span");i.textContent=e;const r=document.createElement("button");r.className="files-close-pill",r.textContent="CLOSE",r.addEventListener("click",()=>this.listing_restore()),s.append(i,...jh(this.preview,e),r);const a=document.createElement("img");a.className="files-image",a.src=t,a.alt=e,this.container.append(s,a)}rowVerbs_declare(e,t){this.indicate=t??null,this.listing.actions_declare({of:s=>s.updir?[]:e(s.entry,s.path).map(i=>({label:i.label,run:()=>i.run(s.entry),...i.offered!==void 0?{offered:()=>i.offered(s.entry)}:{},...i.disabled!==void 0?{disabled:()=>i.disabled(s.entry)}:{}}))})}catalogueTraits_declare(){return[...this.browserTraits_declare().filter(s=>s.key==="control"||s.key==="name"),{key:"type",label:"TYPE",className:"files-type",width:"6em",cell:s=>s.updir?"":s.entry.type},{key:"version",label:"VERSION",className:"files-version",width:"7em",cell:s=>s.updir?"":Lh(s.entry.name),compare:s=>Lh(s.entry.name)}]}catalogue_is(){return this.catalogue}binding_set(e){if(this.runStrip===null){const s=document.createElement("div");s.className="files-run-strip";const i=document.createElement("span");i.className="files-binding";const r=document.createElement("input");r.className="files-command",r.spellcheck=!1,r.autocomplete="off",r.placeholder="the line RUN will run",s.append(i,r),this.container.parentElement?.insertBefore(s,this.container),this.runStrip=s;const a=this.container.closest(".pane-files")?.querySelector(".pane-title");a!=null&&(a.textContent="CATALOGUE")}const t=this.runStrip.querySelector(".files-binding");t!==null&&(t.textContent=`INPUT ${e.input} → ${e.place}`),this.frameTop_track()}commandLine_get(){return this.runStrip?.querySelector(".files-command")?.value.trim()??""}commandLine_set(e){const t=this.runStrip?.querySelector(".files-command")??null;t!==null&&(t.value=e)}indicated_get(){return this.listing.indicated_get()}feedOpen_declare(e){this.feedOpen=e}run_show(e){if(this.runStrip===null)return;this.runStrip.querySelector(".files-feed")?.remove();const t=document.createElement("button");t.className="files-feed listing-capsule listing-action-selected",t.textContent=`FEED ${e}`,t.title="open this run's graph beside the catalogue",t.addEventListener("click",()=>this.feedOpen?.(e)),this.runStrip.appendChild(t)}row_indicate(e){this.listing.row_indicate(e)}rowReadout_show(e,t){this.listing.readout_show(e,t)}selectionVerbs_declare(e){this.selectionVerbs=e}select_toggle(e){this.listing.select_toggle(e)}select_isOn(){return this.listing.select_isOn()}selection_get(){return this.listing.selection_get()}path_current(){return this.lastListings[0]?.path??null}content_isShown(){return this.contentShown}contentRelease=null;contentHtml_show(e,t,s={}){this.contentRelease?.(),this.contentRelease=s.release??null,this.contentShown=!0,this.container.parentElement?.classList.add("content-view"),this.container.replaceChildren();const i=document.createElement("section");i.className="files-content-view";const r=document.createElement("header");r.className="files-path files-content-header";const a=document.createElement("span");a.textContent=e;const o=document.createElement("button");if(o.className="files-close-pill",o.textContent="CLOSE",o.addEventListener("click",()=>this.listing_restore()),r.append(a,o),i.appendChild(r),t!==""){const c=document.createElement("pre");c.className="files-content",c.innerHTML=t,i.appendChild(c)}let l=null;return s.diagram===!0&&(l=document.createElement("div"),l.className="files-diagram",i.appendChild(l)),this.diagram_declare(s.diagram===!0),this.container.appendChild(i),l}contentText_set(e){const t=this.container.querySelector(".files-content-view");if(t===null)return;const s=t.querySelector(".files-content"),i=s??document.createElement("pre");i.className="files-content",i.innerHTML=e,s===null&&t.querySelector(".files-content-header")?.after(i)}recent_set(e){this.recent=e===null?null:[...e],this.lastListings.length>0&&!this.contentShown&&this.listings_render(this.lastListings)}listing_restore(){this.contentRelease?.(),this.contentRelease=null,this.lastListings.length>0?this.listings_render(this.lastListings):this.empty_render()}empty_render(){this.diagram_declare(!1),this.container.replaceChildren();const e=document.createElement("p");e.className="files-empty",e.textContent="AWAITING LISTING — TYPE ls IN THE CONSOLE",this.container.appendChild(e)}listings_render(e){this.diagram_declare(!1),this.contentShown=!1,this.container.parentElement?.classList.remove("content-view"),this.lastListings=e,this.thumbObserver?.disconnect(),this.thumbObserver=null,this.stale=e.some(i=>i.fresh===!1),P0(this.stateSpan,"stale",this.stale),this.listing.painter_set(this.viewMode==="list"?null:(i,r)=>this.cards_paint(i,r));const t=e.map(i=>this.block_of(i)),s=e.find(i=>i.path===Jw);if(this.recent!==null&&this.recent.length>0&&s!==void 0){const i=this.recentBlock_of(s);i!==null&&t.unshift(i)}this.listing.rows_set(t,{field:e[0]?.path??""}),this.frameTop_track()}crumbs_build(e){const t=document.createElement("header");t.className="files-path files-crumbs";const s=[],i=this.home;let r;i!==null&&(e===i||e.startsWith(`${i}/`))?(s.push({label:"~",path:i}),r=e.slice(i.length)):(s.push({label:"/",path:"/"}),r=e);let a=s[0]?.path??"/";for(const o of r.split("/").filter(l=>l.length>0))a=a==="/"?`/${o}`:`${a}/${o}`,s.push({label:o,path:a});return s.forEach((o,l)=>{l>0&&s[l-1]?.label!=="/"&&t.append("/");const c=l===s.length-1,d=document.createElement(c?"span":"button");d.className=c?"files-crumb files-crumb-here":"files-crumb",d.textContent=o.label,d.dataset.path=o.path,c||(d.title=`go to ${o.path}`,d.addEventListener("click",u=>{u.stopPropagation(),this.activate({kind:"dir",path:o.path})})),t.appendChild(d)}),t}ceiling_set(e,t=".."){this.ceiling=e===null?null:{path:e.replace(/\/+$/,"")||"/",word:t}}home_set(e){e!==this.home&&(this.home=e,!this.contentShown&&this.lastListings.length>0&&this.listings_render(this.lastListings))}block_of(e){const t=this.crumbs_build(e.path),s=e.items.map(r=>({entry:r,path:Ba(e.path,r.name),updir:!1})),i=[];if(!this.catalogue&&this.home!==null&&e.path!==this.home&&i.push({entry:{name:"~",type:"dir",size:0,owner:"",date:""},path:this.home,updir:!0,home:!0}),e.path!=="/"){const r=this.ceiling!==null&&this.ceiling.path===e.path?this.ceiling.word:"..";i.push({entry:{name:r,type:"dir",size:0,owner:"",date:""},path:dy(e.path),updir:!0})}return{key:e.path,header:t,lead:i,rows:s}}recentBlock_of(e){const t=new Map(e.items.map(r=>[r.name,r])),s=[];for(const r of this.recent??[]){const a=t.get(r);a!==void 0&&s.push({entry:a,path:Ba(kh,r),updir:!1})}if(s.length===0)return null;const i=document.createElement("header");return i.className="files-path files-recent",i.textContent="RECENT",{key:kh,header:i,lead:[],rows:s}}cards_paint(e,t){const s=this.viewMode==="preview",i=document.createElement("div");i.className=s?"files-cards files-previews":"files-cards";for(const a of e.lead??[]){const o=document.createElement("article");o.className=a.home===!0?"files-card files-card-up files-card-home files-activatable":"files-card files-card-up files-activatable",o.textContent=a.home===!0?`${Wh} ~`:"▴ ..",o.addEventListener("click",()=>this.activate({kind:"dir",path:a.path})),i.appendChild(o)}const r=e.key;for(const a of e.rows)i.appendChild(this.card_build(r,a.entry,s));t.appendChild(i)}frameTop_track(){const e=this.container.parentElement,t=this.container.querySelector(".roster-order"),s=this.container.querySelector(".files-path");if(this.frameTopObserver?.disconnect(),this.frameTopObserver=null,e===null)return;if(t===null||s===null){e.style.removeProperty("--mode-frame-top"),e.style.removeProperty("--roster-frame-h");return}const i=()=>{const r=e.getBoundingClientRect().top,a=Math.ceil(t.getBoundingClientRect().bottom-r);e.style.setProperty("--roster-frame-h",`${a}px`),e.style.setProperty("--mode-frame-top",`${Math.ceil(s.getBoundingClientRect().bottom-r)}px`)};i(),this.frameTopObserver=new ResizeObserver(i),this.frameTopObserver.observe(t),this.frameTopObserver.observe(s)}follow_set(e){this.following=e,this.listing.state_refresh()}follow_get(){return this.following}view_set(e){this.viewMode=e,this.viewPill!==null&&(this.viewPill.textContent=e.toUpperCase()),this.modeSpan!==null&&(this.modeSpan.textContent=e==="list"?"":e.toUpperCase()),this.lastListings.length>0&&!this.contentShown&&this.listings_render(this.lastListings)}view_get(){return this.viewMode}body_get(){return this.container.closest(".files-body")}diagram_declare(e){this.body_get()?.classList.toggle("diagram-shown",e),e||this.mode_annunciate(this.viewMode==="list"?"":this.viewMode.toUpperCase())}mode_annunciate(e){this.modeSpan!==null&&(this.modeSpan.textContent=e)}stateLine_compose(e){const t=[];return this.following&&t.push("CWD"),e.selecting&&t.push("SELECT"),t.push(this.stale?"STALE":e.filter),e.selected>0&&t.push(e.shown===e.selected?`${e.selected} SELECTED`:`${e.selected} SELECTED · ${e.shown} SHOWN`),t.filter(s=>s!=="").join(" · ")}card_build(e,t,s=!1){const i=document.createElement("article");i.className=`files-card files-type-${t.type}`,s&&i.appendChild(this.thumb_build(Ba(e,t.name),t));const r=document.createElement("div");r.className="files-card-head";const a=document.createElement("span");a.className="files-card-badge",a.textContent=t.type.toUpperCase();const o=document.createElement("span");o.className="files-card-size",o.textContent=t.type==="dir"||t.size===0?"":Hh(t.size),r.append(a,o);const l=document.createElement("div");l.className="files-card-title",l.textContent=t.name;const c=document.createElement("div");c.className="files-card-meta";const d=document.createElement("span");d.textContent=t.owner;const u=document.createElement("span");if(u.textContent=t.date.slice(0,10),c.append(d,u),i.append(r,l,c),t.type==="link"&&t.target!==void 0){const f=document.createElement("div");f.className="files-card-target",f.textContent=`→ ${t.target}`,f.title=t.target,i.appendChild(f)}const h=Ba(e,t.name),p=Ra(t);return p!==null&&(i.classList.add("files-activatable"),i.addEventListener("click",()=>this.activate({kind:p,path:h}))),i}thumb_build(e,t){const s=document.createElement("div");s.className="files-card-thumb";const i=()=>{s.textContent=Ia[t.type]};if(Gm.test(t.name)||Ho.test(t.name)){s.classList.add("thumb-series");const u=document.createElement("span");u.className="thumb-series-mark",u.textContent="DCM";const h=/^\d+-(.*)-[0-9a-f]{7}$/.exec(t.name)?.[1];if(s.replaceChildren(u),h!==void 0){const p=document.createElement("span");p.className="thumb-series-text",p.textContent=h.replace(/_/g," "),s.appendChild(p)}return s}if(this.preview===null||!(t.type==="file"||t.type==="plugin"||t.type==="pipeline"))return i(),s;if(t.type==="plugin")return s.replaceChildren($h([{id:e,parentIds:[]}])),s;if(t.type==="pipeline"){const u=this.preview;s.classList.add("thumb-wait"),s.textContent=Ia[t.type];const h=()=>{u.pipelineGlimpse(e).then(p=>{if(s.classList.remove("thumb-wait"),p===null||p.length===0){i();return}if(p.length>cy){s.textContent=`${p.length} NODES`,s.classList.add("thumb-count");return}s.replaceChildren($h(p))}).catch(()=>{s.classList.remove("thumb-wait"),i()})};return this.thumbObserver_get().observe(s),s.addEventListener("files:thumb-seen",h,{once:!0}),s}const r=this.headCache.get(e);if(r!==void 0){const u=document.createElement("pre");return u.textContent=r,s.appendChild(u),s}const a=pl(e)&&t.size<=ay,o=Qm(e),l=(o===""||sy.has(o))&&t.size<=iy;if(!a&&!l)return i(),s;s.classList.add("thumb-wait"),s.textContent=Ia.file;const c=this.preview,d=()=>{if(a){const u=document.createElement("img");u.alt=t.name,u.addEventListener("load",()=>{s.classList.remove("thumb-wait")}),u.addEventListener("error",()=>{s.classList.remove("thumb-wait"),i()}),u.src=c.imageUrl(e),s.replaceChildren(u);return}c.textHead(e,ry).then(u=>{if(this.headCache.size>=oy&&this.headCache.clear(),this.headCache.set(e,u),s.classList.remove("thumb-wait"),u.trim()===""||ly(u)){i();return}const h=document.createElement("pre");h.textContent=u,s.replaceChildren(h)}).catch(()=>{s.classList.remove("thumb-wait"),i()})};return this.thumbObserver_get().observe(s),s.addEventListener("files:thumb-seen",d,{once:!0}),s}thumbObserver_get(){return this.thumbObserver===null&&(this.thumbObserver=new IntersectionObserver(e=>{for(const t of e)t.isIntersecting&&(this.thumbObserver?.unobserve(t.target),t.target.dispatchEvent(new CustomEvent("files:thumb-seen")))},{root:this.container,rootMargin:"25%"})),this.thumbObserver}filter_toggle(e){this.listing.filter_toggle(e)}}function Vh(n){if(!Array.isArray(n))return null;for(const e of n){if(typeof e!="object"||e===null)return null;const t=e;if(typeof t.path!="string"||!Array.isArray(t.items))return null}return n}function Ba(n,e){return n.endsWith("/")?`${n}${e}`:`${n}/${e}`}function dy(n){const e=n.endsWith("/")?n.slice(0,-1):n,t=e.lastIndexOf("/");return t<=0?"/":e.slice(0,t)}function Hh(n){if(n<1024)return String(n);const e=["K","M","G","T"];let t=n,s=-1;for(;t>=1024&&s<e.length-1;)t=t/1024,s=s+1;return`${t<10?t.toFixed(1):Math.round(t)}${e[s]}`}class uy{grid;startHere;host;paintId=0;constructor(e,t){this.host=t,this.grid=e.querySelector(".launcher-grid"),$s(this.grid,{rows:".launcher-tile",mount:this.grid.parentElement??this.grid});const s=e.querySelector(".launcher-body");s!==null&&$s(s,{rows:".launcher-tile",scrolls:()=>/auto|scroll/.test(getComputedStyle(s).overflowY)}),this.startHere=e.querySelector(".launcher-start"),this.startHere.addEventListener("click",()=>{this.host.startHere_set(!this.host.startHere_get()),this.startHere_render()}),this.startHere_render()}render(){const e=++this.paintId;this.host.tiles().then(t=>{e!==this.paintId||!this.grid.isConnected||(this.grid.replaceChildren(...t.map((s,i)=>this.tile_build(s,i===0||s.wide===!0))),this.startHere_render())}).catch(()=>{e!==this.paintId||!this.grid.isConnected||this.grid.replaceChildren()})}numeral_press(e){const t=this.grid.querySelector(`[data-numeral="${e}"]`);return t===null?!1:(t.click(),!0)}startHere_render(){const e=this.host.startHere_get();this.startHere.textContent=e?"START HERE · ON":"START HERE · OFF",this.startHere.classList.toggle("pacs-capsule-off",!e)}tile_build(e,t){const s=document.createElement("button");s.className=`launcher-tile${t?" launcher-tile-wide":""}`,s.style.setProperty("--tile-hue",`var(${e.hue})`),s.dataset.numeral=e.numeral,s.title=e.verb,s.addEventListener("click",d=>{d.target instanceof Element&&d.target.closest(".launcher-row, .launcher-figure")!==null||(this.host.leave?.(),e.enter())});const i=document.createElement("span");i.className="launcher-head";const r=document.createElement("span");r.className="launcher-name",r.textContent=e.name;const a=document.createElement("span");a.className="launcher-numeral",a.textContent=e.numeral,i.append(r);for(const d of e.figures){const u=document.createElement(d.open===void 0?"span":"button");if(u.className=`launcher-figure${d.errored===!0?" launcher-figure-errored":""}`,u.textContent=d.text,d.open!==void 0){const h=d.open;u.addEventListener("click",p=>{p.stopPropagation(),this.host.leave?.(),h()})}i.appendChild(u)}i.appendChild(a);const o=document.createElement("span");o.className="launcher-rule";const l=document.createElement("span");l.className="launcher-rows";for(const d of e.rows){const u=document.createElement(d.open===void 0?"span":"button");u.className=`launcher-row${d.arrived===!0?" launcher-row-arrived":""}`;const h=document.createElement("span");h.className=`launcher-dot${d.errored===!0?" launcher-dot-errored":""}`;const p=document.createElement("span");if(p.className="launcher-row-text",p.textContent=d.text,u.append(h,p),d.open!==void 0){const f=d.open,b=document.createElement("span");b.className="launcher-go",b.textContent="›",u.appendChild(b),u.addEventListener("click",g=>{g.stopPropagation(),this.host.leave?.(),f()})}l.appendChild(u)}const c=document.createElement("span");return c.className="launcher-verb",c.textContent=e.verb,s.append(i,o),e.about!==void 0&&s.appendChild(hy(e.about)),s.append(l,c),s}}function hy(n){const e=document.createElement("span");e.className="launcher-about";const t=document.createElement("span");if(t.className="launcher-about-text",t.textContent=n.text,e.appendChild(t),n.list!==void 0&&n.list.length>0){const s=document.createElement("span");s.className="launcher-about-list";for(const i of n.list){const r=document.createElement("span");r.className="launcher-about-item",r.textContent=i,s.appendChild(r)}e.appendChild(s)}if(n.tail!==void 0){const s=document.createElement("span");s.className="launcher-about-text",s.textContent=n.tail,e.appendChild(s)}return e}const Rs={left:{axis:"col",place:"before",focusWord:"left",arrow:"ArrowLeft",edge:"leftmost"},right:{axis:"col",place:"after",focusWord:"right",arrow:"ArrowRight",edge:"rightmost"},above:{axis:"row",place:"before",focusWord:"up",arrow:"ArrowUp",edge:"topmost"},below:{axis:"row",place:"after",focusWord:"down",arrow:"ArrowDown",edge:"bottommost"}},eg=["left","right","above","below"];function qh(n){return n==="left"||n==="right"||n==="above"||n==="below"}function fy(n,e){return n==="row"?e?"above":"below":e?"left":"right"}function py(n,e){return n!=="row"&&n!=="col"||e!=="before"&&e!=="after"?null:fy(n,e==="before")}function my(n){return eg.find(e=>Rs[e].focusWord===n)??null}function gy(n){return eg.find(e=>Rs[e].arrow===n)??null}function My(n){return n?"before":"after"}function Es(n){return`[data-split="${Rs[n].axis}"][data-place="${Rs[n].place}"]`}const by=new Set(["pane","view","runs","node","dag","universe","file","pacs","image","tags","header","console","back","desktop","dashboard","help","launcher","attach","argus"]),tg=new Set(["layout","slice","series","wl","colormap","save","tags","load","guard","ghost","state"]),_y={pacs:new Set(["sort","filter"]),help:new Set(["pane","keys","verbs"]),tags:new Set(["redact","filter"]),image:tg};let zn=null;const $i="argus.desktop.",Xh="~/.config/argus/desktops";function zy(n){const e=n.trim().split(/\s+/),t=(e[0]??"").toLowerCase();if(!by.has(t))return null;const s=_y[t];if(s!==void 0&&!s.has((e[1]??"").toLowerCase()))return null;let i=null,r=e.slice(1);return(r[0]?.startsWith("@")||r[0]?.startsWith("%"))&&(i=r[0],r=r.slice(1)),{subject:t,target:i,words:r}}function Kh(n,e){if(e===null)return n.focused_get();if(e.startsWith("@"))return e.slice(1);const t=parseInt(e.slice(1),10);return zn===null?null:zn[t-1]??null}function bn(n,e,t){const i=n.paneMount_get(e)?.querySelector(t)??null;return i===null?!1:(i.click(),!0)}function Na(n,e,t){const s=n.paneMount_get(e);if(s===null)return!1;for(const i of s.querySelectorAll(".drawer-child"))if(i.textContent?.trim().toUpperCase()===t)return i.click(),!0;return!1}function wy(n,e,t){return bn(n,e,`.drawer-cwdbind[data-follow="${t?"on":"off"}"]`)}function jr(n,e,t,s){const r=n.paneMount_get(e)?.querySelector(t)??null;if(r===null)return!1;for(let a=0;a<4;a++){if(r.textContent?.trim().toUpperCase()===s)return!0;r.click()}return r.textContent?.trim().toUpperCase()===s}function sg(n,e){const t=n.focused_get(),s=t!==null?n.paneRect_get(t):null;if(s===null)return null;const i=s.x+s.width/2,r=s.y+s.height/2;let a=null;for(const o of n.panes_shown()){if(o===t)continue;const l=n.paneRect_get(o);if(l===null)continue;const c=l.x+l.width/2-i,d=l.y+l.height/2-r,u=e==="left"?-c:e==="right"?c:e==="up"?-d:d;if(u<=1)continue;const h=Math.abs(e==="left"||e==="right"?d:c),p=u+h*2;(a===null||p<a.score)&&(a={id:o,score:p})}return a===null?null:(n.focus_set(a.id),a.id)}const Di=[{key:"%",topic:"pane",selector:Es("right"),does:"split right (tmux)"},{key:'"',topic:"pane",selector:Es("below"),does:"split below (tmux)"},{key:"h",topic:"pane",selector:Es("left"),does:"split left"},{key:"j",topic:"pane",selector:Es("below"),does:"split below"},{key:"k",topic:"pane",selector:Es("above"),does:"split above"},{key:"l",topic:"pane",selector:Es("right"),does:"split right"},{key:"H",topic:"pane",selector:Es("left"),does:"move this pane left",move:!0},{key:"J",topic:"pane",selector:Es("below"),does:"move this pane below",move:!0},{key:"K",topic:"pane",selector:Es("above"),does:"move this pane above",move:!0},{key:"L",topic:"pane",selector:Es("right"),does:"move this pane right",move:!0},{key:"m",topic:"pane",selector:'.drawer-mode[data-mode="move"]',does:"arm MOVE (then a direction)"},{key:"z",topic:"pane",selector:".drawer-zoom",does:"zoom (tmux), or double-click the pane's header"},{key:"x",topic:"pane",selector:".drawer-close",does:"close (tmux)"},{key:"u",topic:"binding",selector:'.drawer-bind[data-bind="unlinked"]',does:"the next split is unlinked"},{key:"f",topic:"binding",selector:'.drawer-bind[data-bind="fs"]',does:"the next split is a linked filesystem"},{key:"v",topic:"binding",selector:'.drawer-bind[data-bind="viewer"]',does:"the next split is a linked viewer"},{key:"1",topic:"claim",selector:".empty-go-files",does:"claim an empty pane as FILES"},{key:"2",topic:"claim",selector:".empty-go-dag",does:"claim an empty pane as RUNS"},{key:"3",topic:"claim",selector:".empty-go-pacs",does:"claim an empty pane as PACS"},{key:"o",topic:"focus",selector:null,does:"focus the next pane (tmux)"},{key:";",topic:"focus",selector:null,does:"focus the last pane (tmux)"},{key:"q",topic:"focus",selector:null,does:"show every pane's @id on its bar (tmux)"},{key:"Space",topic:"pane",selector:null,does:"flip this pane's split: beside becomes above (tmux next layout)"},{key:"!",topic:"pane",selector:null,does:"break this pane out: alone on stage, the rest a PANES card (tmux)"},{key:"Ctrl-←↑↓→",topic:"pane",selector:null,does:"move the boundary beside this pane a step (tmux)"},{key:"w",topic:"stage",selector:null,does:"PANES, the desktops (tmux window chooser)"},{key:"[",topic:"console",selector:null,does:"the console's scrollback takes the keys (tmux)"},{key:"O",topic:"focus",selector:null,does:"focus the previous pane"},{key:"←↑↓→",topic:"focus",selector:null,does:"focus the pane in that direction (tmux)"},{key:":",topic:"console",selector:null,does:"the command line (tmux)"},{key:"?",topic:"console",selector:null,does:"this table"}],Yh=["prefix chords — Ctrl-B opens the focused pane's drawer; one key then presses one capsule",...Di.map(n=>` ${n.key.padEnd(6)} ${n.does}`)," Tab walks the verbs; Enter fires; Esc closes the drawer"].join(`
|
|
25
25
|
`),pu=["pane [@id|%n] split left|right|above|below · zoom · close · bind unlinked|fs|viewer","pane [@id|%n] claim files|runs|pacs · focus left|right|up|down|@id|last · flip · resize left|right|up|down [percent]","view files|runs|pacs (the gutter givens, workspace scope)","runs enter <feedId> · sort <col> [asc|desc] · filter <text>|off","node enter · immerse · back · clear (the indicated node)","dag [@id] layout ranked|molecule · projection 2d|3d · scale time|size · hue status|compute · pulse · census · physics charge|link|collide|gravity on|off · physics reset · refresh","file [@id] home|back|download|delete · follow · root · list|cards|preview · sort <col> [asc|desc] · filter <text>|off","pacs sort <col> [asc|desc] · filter <text>|off (the results listing; every other pacs verb is the session's)","image [@id] [--force] <path> · layout single|mpr|3d|slab · slice <n> · series <n> · wl <lo> <hi> · wl preset <name> · colormap gray|hot|jet|cool · save · tags · load · guard <bytes>|off · ghost <0..1>|off · state","tags [@id] redact on|off · filter <text>|off (the pane that follows an image pane's slice)","header stats|dag|away|restore","console open|close|toggle|zoom|height <px>","back (contextual back — exactly Esc)","desktop save|load|show|list|delete [name]","attach [--reveal] (how to reach THIS session from a terminal or another browser)","argus verbs (this table; the long form is docs/argus-lang.adoc)","argus keys (the prefix chords: one key, one drawer verb)","help pane|keys|verbs (the KEYS pane on the stage; keys and verbs print the tables here; bare help is the session's)"],Zh=pu.join(`
|
|
26
26
|
`);function yy(n,e){const t=new URL(window.location.href),s=t.searchParams.get("token")??"",i=s===""?"":e?s:"•".repeat(8),r=s===""?t.origin+t.pathname:`${t.origin}${t.pathname}?token=${i}`,a=n.identity_get(),o=/^(127\.|\[?::1\]?$|localhost$)/.test(t.hostname),l=["attach — this session, from anywhere that can reach it"];return a!==null&&a!==""&&l.push(` identity ${a}`),l.push(""),l.push(" this machine chell --remote"),l.push(` another machine chell --remote --attach "${r}"`),l.push(` another browser ${r}`),l.push(""),o&&(l.push(" bound to loopback — another machine cannot reach this session;"),l.push(" relaunch the daemon with CALYPSO_BIND=0.0.0.0 to change that")),s===""?(l.push(" this page carries no token: it was opened without one, and a"),l.push(" second surface cannot attach with what is on screen")):e?l.push(" revealed — anyone who reads this line holds the session"):(l.push(" the token is masked — `attach --reveal` prints it. It is a bearer"),l.push(" credential with no expiry: treat the line like a password")),l.join(`
|
|
27
27
|
`)}async function Kc(n,e){const t=zy(e);if(t===null)return null;const{subject:s,words:i}=t,r=(i[0]??"").toLowerCase(),a=(i[1]??"").toLowerCase();if(s==="argus")return r==="keys"?Yh:Zh;if(s==="back")return window.dispatchEvent(new KeyboardEvent("keydown",{key:"Escape",bubbles:!0})),"back";if(s==="attach")return yy(n,r==="--reveal"||a==="--reveal");if(s==="dashboard"||s==="launcher")return n.launcher_enter(),"dashboard";if(s==="view"){const c={files:"gutter-files",runs:"gutter-runs",pacs:"gutter-tools"}[r];return c===void 0?`view: unknown given '${r}' (files|runs|pacs)`:(document.getElementById(c)?.click(),zn!==null&&(zn.length=0,zn.push(r==="runs"?"dag":r==="pacs"?"pacs":"files")),`view ${r}`)}if(s==="header"){if(r==="restore")return document.getElementById("header-restore")?.click(),"header restored";if(r==="stats")return document.querySelector(".panel-1")?.click(),"header stats";if(r==="dag")return document.querySelector(".panel-2")?.click(),"header dag";if(r==="away"){const l=document.body.dataset.header,c=l==="stats"?".panel-1":".panel-2";return l!=="away"&&(l===void 0&&document.querySelector(".panel-2")?.click(),document.querySelector(c)?.click()),"header away"}return`header: unknown face '${r}' (stats|dag|away|restore)`}if(s==="console"){const l=document.getElementById("drawer");if(l===null)return"console: no drawer";const c=l.classList.contains("drawer-closed");if(r==="toggle"||r==="open"&&c||r==="close"&&!c)return document.getElementById("drawer-toggle")?.click(),`console ${r}`;if(r==="zoom")return n.consoleZoom_toggle(),"console zoom";if(r==="height"){const d=parseInt(a,10);return Number.isNaN(d)?"console height <px>":(l.style.height=`${d}px`,`console height ${d}`)}return r==="open"||r==="close"?`console already ${r==="open"?"open":"closed"}`:`console: unknown verb '${r}' (open|close|toggle|zoom|height)`}if((s==="runs"||s==="file"||s==="pacs")&&(r==="sort"||r==="filter")){const l=s==="runs"?".pane-dag":s==="file"?".pane-files":"#pacs-workspace",c=Kh(n,t.target),u=(c===null?null:n.paneMount_get(c))?.querySelector(l)??document.querySelector(l);if(u===null)return`${s} ${r}: no ${s==="runs"?"DAG":s==="file"?"files":"PACS"} pane`;if(r==="sort"){if(a==="")return`${s} sort <column> [asc|desc]`;const p=(i[2]??"asc").toLowerCase()==="desc"?"desc":"asc";return u.dispatchEvent(new CustomEvent("argus:roster",{detail:{op:"sort",key:a,dir:p}})),`${s} sorted by ${a} ${p}`}const h=a==="off"?"":i.slice(1).join(" ");return u.dispatchEvent(new CustomEvent("argus:roster",{detail:{op:"filter",text:h}})),h===""?`${s} filter off`:`${s} filtered: ${h}`}if(s==="runs"){if(r==="enter"){const l=parseInt(a.replace(/^feed_/,""),10);return Number.isNaN(l)?"runs enter <feedId>":(n.feed_enter(l),`entering feed_${l}`)}return`runs: unknown verb '${r}' (enter)`}if(s==="help")return r==="keys"?Yh:r==="verbs"?Zh:r==="pane"?n.help_open():"help pane|keys|verbs";if(s==="desktop")return vy(n,r,i[1]);const o=Kh(n,t.target);if(o===null)return`${s}: no target pane (nothing focused?)`;if(s==="pane"){if(r==="split"){if(!qh(a))return"pane split left|right|above|below";const l=new Set(n.panes_shown());if(!bn(n,o,Es(a)))return`pane split: '${o}' has no drawer`;const c=n.panes_shown().find(d=>!l.has(d));return c!==void 0&&zn!==null&&zn.push(c),`split ${a}: ${c??"(no pane created)"}`}if(r==="move")return qh(a)?n.pane_move(o,a):"pane move left|right|above|below";if(r==="zoom")return bn(n,o,".drawer-zoom")?`zoomed ${o}`:"pane zoom: no drawer";if(r==="close")return bn(n,o,".drawer-close")?`closed ${o}`:"pane close: no drawer";if(r==="bind")return["unlinked","fs","viewer"].includes(a)?bn(n,o,`.drawer-bind[data-bind="${a}"]`)?`bind ${a}`:"pane bind: no drawer":"pane bind unlinked|fs|viewer";if(r==="claim"){const c={files:".empty-go-files",runs:".empty-go-dag",pacs:".empty-go-pacs"}[a];return c===void 0?"pane claim files|runs|pacs":bn(n,o,c)?`claiming ${o} as ${a}`:`pane claim: '${o}' is not an unlinked pane`}if(r==="flip")return n.pane_flip(o);if(r==="resize"){const l=my(a);if(l===null)return"pane resize left|right|up|down [percent]";const c=i[2]!==void 0?Number(i[2]):5;return!Number.isFinite(c)||c<=0||c>70?"pane resize: the step is a percent, 1 to 70":n.pane_resize(o,l,c/100)}if(r==="focus"){if(a==="last")return n.focus_last()??"pane focus last: no pane was focused before this one";if(a.startsWith("@"))return n.focus_set(a.slice(1))?`focused ${a.slice(1)}`:`no pane '${a.slice(1)}'`;const l=sg(n,a);return l!==null?`focused ${l}`:`pane focus: nothing ${a} of here`}return`pane: unknown verb '${r}'`}if(s==="dag"){if(r==="layout")return jr(n,o,".dag-strategy",a.toUpperCase())?`layout ${a}`:"dag layout ranked|molecule";if(r==="projection")return jr(n,o,".dag-projection",a.toUpperCase())?`projection ${a}`:"dag projection 2d|3d";if(r==="scale")return jr(n,o,".dag-scale",a.toUpperCase())?`scale ${a}`:"dag scale time|size";if(r==="hue")return jr(n,o,".dag-hue",a.toUpperCase())?`hue ${a}`:"dag hue status|compute";if(r==="pulse")return bn(n,o,".dag-pulse")?"pulse":"dag pulse: no mode frame";if(r==="census")return bn(n,o,".dag-census")?"census toggled":"dag census: no mode frame";if(r==="refresh")return Na(n,o,"REFRESH")?"refreshing":"dag refresh: no DAG pane";if(r==="physics"){const l=a,c=n.paneMount_get(o),d=c?.querySelector(".pane-dag")??c;if(d===null)return"dag physics: no DAG pane";if(l==="reset")return d.dispatchEvent(new CustomEvent("argus:dag-physics",{detail:"reset"})),"physics reset";const u=(i[2]??"on").toLowerCase()!=="off";return["charge","link","collide","gravity"].includes(l)?(d.dispatchEvent(new CustomEvent("argus:dag-physics",{detail:{term:l,on:u}})),`physics ${l} ${u?"on":"off"}`):`dag physics: unknown term '${l}' (charge|link|collide|gravity|reset)`}return`dag: unknown verb '${r}' (layout|projection|scale|hue|pulse|census|physics|refresh)`}if(s==="file")return r==="list"||r==="cards"||r==="preview"?jr(n,o,".files-view",r.toUpperCase())?`file ${r}`:`file ${r}: no files mode frame`:r==="follow"||r==="root"?wy(n,o,r==="follow")?`file ${r}`:`file ${r}: not offered by '${o}'`:r==="home"||r==="back"?bn(n,o,r==="home"?".files-home":".files-back")?`file ${r}`:`file ${r}: not offered by '${o}'`:r==="download"?n.file_download(o)?"file download":"file download: nothing indicated":r==="delete"?n.file_delete(o)?"file delete":"file delete: nothing indicated":"file home|back|download|delete|sort|filter|follow|root|list|cards|preview";if(s==="image"){const c=i.filter(d=>d!=="--force")[0]??"";return tg.has(c.toLowerCase())?n.image_control(o,r,i.slice(1)):null}return s==="tags"?o===null?"tags: no pane in focus":n.tags_control(o,r,i.slice(1)):s==="universe"?n.universe_control(o,r,i.slice(1)):s==="node"?r==="enter"?Na(n,o,"ENTER NODE")?"entering node":"node enter: no DAG drawer":r==="back"?Na(n,o,"BACK")?"node back":"node back: no DAG drawer":r==="immerse"?n.node_immerse(o)?"immersing":"node immerse: nothing indicated":r==="clear"?Na(n,o,"CLEAR DETAIL")?"detail cleared":"node clear: no DAG drawer":`node: unknown verb '${r}' (enter|immerse|back|clear)`:null}async function vy(n,e,t){if(e==="list"){const s=[];for(let i=0;i<window.localStorage.length;i++){const r=window.localStorage.key(i);r?.startsWith($i)&&s.push(r.slice($i.length))}return s.length>0?s.sort().join(`
|
|
@@ -4237,22 +4237,22 @@ void main() {
|
|
|
4237
4237
|
`)[0]??"",i.title=s,this.marks.append(i)}}}class zD{abandoned=null;pick(e,t){this.abandoned=e!==null&&e!==t?e:null}drops(e,t){return this.abandoned!==e||t===null||t===e?!1:(this.abandoned=null,!0)}}function wD(n){return(n.replace(/\[[0-9;]*m/g,"").split(`
|
|
4238
4238
|
`).find(s=>s.trim().length>0)?.trim()??"").replace(/\s*\((?:[\d,]+\/[\d,]+(?:,\s*\d+%)?|initializing)\)(?=\.?$)/,"")}const zp="#555";function nM(n,e){return e==="time"?n.metrics?.computeSeconds:n.metrics?.dataBytes}function yD(n,e){const t=new Map;for(const s of n.nodes){const i=s.computeResource;i===void 0||i==="mixed"||t.has(i)||t.set(i,e[t.size%Math.max(1,e.length)]??"#888")}return t}function vD(n,e,t,s){const i=r=>{if(t==="compute")return r.computeResource===void 0?zp:s.get(r.computeResource)??zp};return{nodes:n.nodes.map(r=>{const a=i(r);return{id:r.id,label:r.label,parentIds:r.parentIds,joinParentIds:r.joinParentIds,status:r.status,metric:nM(r,e),count:r.tally?.count,...a!==void 0?{hue:a}:{}}})}}function zc(n,e){const t=kc(n);if(t===null)return null;let s=0,i=0,r=0;for(const o of e.all()){const l=o.groups.filter(c=>c.plugin===t);if(l.length!==0){s+=1;for(const c of l)i+=c.count,r+=c.errored}}const a=i===0?0:Math.round(r/i*100);return`${t} · ${s.toLocaleString("en-US")} feed${s===1?"":"s"} · ${a}% errored`}class iM{byId=new Map;take(e){let t=!1;for(const s of e){const i=this.byId.get(s.id);i!==void 0&&i.status===s.status&&i.jobs===s.jobs&&JSON.stringify(i.groups)===JSON.stringify(s.groups)||(this.byId.set(s.id,{...s,chain:[...s.chain],groups:s.groups.map(r=>({...r}))}),t=!0)}return t}size(){return this.byId.size}shapes(){return new Set([...this.byId.values()].map(ns)).size}all(){return[...this.byId.values()]}get(e){return this.byId.get(e)}clear(){this.byId.clear()}}function rM(n,e){const t=n.match(/^feed:(\d+):(\d+)$/);if(t===null)return null;const s=e.get(Number(t[1])),i=s?.groups[Number(t[2])];if(s===void 0||i===void 0)return null;const r=i.count>1?` ×${i.count.toLocaleString("en-US")}`:"",a=s.title.length>0?` · ${s.title}`:"",o=i.errored>0&&i.count>1?`${i.errored.toLocaleString("en-US")} errored`:i.status;return`${i.plugin}${r} · ${o} · feed ${s.id}${a}`}function OD(n,e){return`argus.universe.${n}@${e}`}const Fn={draw:"stars",view:"feeds",scale:"jobs",density:"shape",arrangement:"galaxy",captions:!0};function xD(n,e,t,s,i=Fn.arrangement,r=Fn.captions){return{draw:n,view:e,scale:t,density:s,arrangement:i,captions:r}}function SD(n){let e={};try{const s=n===null?null:JSON.parse(n);s!==null&&typeof s=="object"&&!Array.isArray(s)&&(e=s)}catch{}const t=(s,i,r)=>typeof s=="string"&&i.includes(s)?s:r;return{draw:t(e.draw,["stars","spheres"],Fn.draw),view:t(e.view,["feeds","shapes"],Fn.view),scale:t(e.scale,["jobs","feeds"],Fn.scale),density:t(e.density,["shape","census"],Fn.density),arrangement:t(e.arrangement,["galaxy","spokes","clumps","constellations","data","accretion"],Fn.arrangement),captions:typeof e.captions=="boolean"?e.captions:Fn.captions}}function wp(n){if(n===null||n.length===0)return{};try{const e=JSON.parse(n);if(e===null||typeof e!="object"||Array.isArray(e))return{};const t={};for(const[s,i]of Object.entries(e))Array.isArray(i)&&i.length===3&&i.every(r=>typeof r=="number"&&Number.isFinite(r))&&(t[s]=[i[0],i[1],i[2]]);return t}catch{return{}}}function wc(n,e){return`inst:${n}:${e}`}function ED(n){const e=new Set(n.nodes.map(i=>i.id)),t=[],s=new Map;for(const i of n.nodes){const r=wc(n.feedId,i.id),a=i.parentIds.filter(d=>e.has(d)).map(d=>wc(n.feedId,d)),o=i.tally?.count??1,l=i.tally?.error??(i.status==="finishedWithError"?1:0),c=l>0&&o>0?Math.min(1,l/o):void 0;t.push({id:r,label:i.pluginName,parentIds:a,joinParentIds:i.joinParentIds.filter(d=>e.has(d)).map(d=>wc(n.feedId,d)),status:i.status,metric:xr(o),...o>1?{count:o}:{},...c!==void 0?{share:c}:{}}),s.set(r,i)}return{nodes:t,payloads:s}}function AD(n,e,t,s="jobs",i=!1,r){const a=r??(i?eu(n,s):va(n,s)),o=`feed:${e}:`;return{nodes:[...a.nodes.filter(c=>!c.id.startsWith(o)).map(c=>({...c,dim:!0})),...t.nodes]}}function aM(n,e){return e.groups.map((t,s)=>Hn(n,s))}function oM(n,e=3){const t=dl(n).split(" > ");return t.length<=e?t.join(" > "):`${t.slice(0,e).join(" > ")} … +${t.length-e}`}function DD(n,e){if(!n.startsWith("shape:"))return null;const t=n.slice(6),s=e.all().filter(i=>ns(i)===t).length;return`${dl(t)} · ${s} feed${s===1?"":"s"}`}function TD(n,e){const t=[];for(const s of e.all())ns(s)===n&&t.push(...aM(s.id,s));return t}function ID(n,e,t="jobs"){const s=va(n,t),i=new Set(n.filter(a=>ns(a)===e).map(a=>a.id));return{nodes:s.nodes.map(a=>{if(a.ghost===!0)return a.id===wm(e)?a:{...a,dim:!0};const o=a.id.match(/^feed:(\d+):/);return o!==null&&i.has(Number(o[1]))?a:{...a,dim:!0}})}}function lM(n,e="jobs"){const t=new Map;for(const i of[...n].sort((r,a)=>r.id-a.id)){if(i.groups.length===0)continue;const r=ns(i),a=t.get(r)??[];a.push(i),t.set(r,a)}const s=[];for(const[i,r]of t)r[0].groups.forEach((o,l)=>{let c=0,d=0;for(const h of r){const p=h.groups[l];p!==void 0&&(c+=p.count,p.errored>0&&(d+=1))}const u=d>0?Math.min(1,d/r.length):void 0;s.push({id:$c(i,l),label:o.plugin,parentIds:o.parent===null?[]:[$c(i,o.parent)],joinParentIds:[],status:d===r.length?"finishedWithError":"finishedSuccessfully",metric:xr(e==="feeds"?r.length:c),...r.length>1?{count:r.length}:{},...u!==void 0?{share:u}:{}})});return{nodes:s}}function GD(n,e){const t=n.match(/^fold:(.+):(\d+)$/);if(t===null)return null;const s=t[1],i=Number(t[2]),r=e.all().filter(d=>ns(d)===s),a=r[0]?.groups[i]?.plugin;if(a===void 0)return null;const o=r.filter(d=>(d.groups[i]?.errored??0)>0).length,l=`${r.length.toLocaleString("en-US")} feed${r.length===1?"":"s"}`,c=o>0?` · ${o.toLocaleString("en-US")} with errors`:"";return`${a} · ${l}${c} · ${oM(s)}`}function yp(n,e){const t=e.all().find(s=>ns(s)===n);return t===void 0?[]:t.groups.map((s,i)=>$c(n,i))}function vp(n,e,t="jobs"){const s=n.filter(l=>ns(l)===e),i=n.filter(l=>ns(l)!==e),r=lM(i,t),a=va(s,t),o=a.nodes.filter(l=>l.ghost!==!0).map(l=>l.id);return{graph:{nodes:[...r.nodes.map(l=>({...l,dim:!0})),...a.nodes]},memberIds:o}}const RD=6e4,Op=1e4,BD=new Set(["running","scheduled","created","started"]),ND=[/\/proc\/jobs\/feed_(\d+)(?:\/|$)/,/\/feeds?\/feed_(\d+)(?:\/|$)/];function CD(n){const e=[];return n.layout==="molecule"&&e.push("dag layout molecule"),n.projection==="2d"&&e.push("dag projection 2d"),n.scale==="size"&&e.push("dag scale size"),n.hue==="compute"&&e.push("dag hue compute"),n.census==="census"&&e.push("dag census"),e}const PD={running:"started",done:"finishedSuccessfully",error:"finishedWithError"};function xp(n,e){return n.nodes.length===e.nodes.length&&e.nodes.every((t,s)=>{const i=n.nodes[s];return i!==void 0&&i.id===t.id&&(i.tally?.count??1)===(t.tally?.count??1)&&i.parentIds.length===t.parentIds.length&&i.joinParentIds.length===t.joinParentIds.length})}class LD{scene;canvas;title;facts;empty;strategyPill;backPill=null;feedFrame;feedList;handlers;rosterTimer=null;shownFeedId=null;pinnedFeedId=null;requestedFeedId=null;follow=new zD;defaultTitle;metricMode="time";lastModel=null;lastRoster=[];arrivals=new Set;arrivalsKey="";listing;stateSpan;watchedFeedId=null;liveState=null;pendingFeedId=null;lastCwd=null;constructor(e,t,s,i,r,a,o){this.feedList=a,this.canvas=e,e.style.display="none",this.title=t,this.defaultTitle=t.textContent??"",this.facts=s,this.empty=i,this.strategyPill=r,this.handlers=o;const l=r.closest(".pane-dag");this.stateSpan=l?.querySelector(".pane-state")??null,this.modeSpan=l?.querySelector(".pane-mode")??null;const c=o.feed_verbs;this.listing=new Si({mount:this.feedList,traits:bD,key:m=>String(m.id),chrome:l===null?void 0:{root:l,prefix:"runs"},actions:c===void 0?void 0:{of:m=>c(m)},control:"control",terms:[{key:"tag",value:m=>(m.tags??[]).join(" ")}],activate:m=>this.feed_activate(m),indicated:m=>this.handlers.feed_indicated?.(m),row:{className:m=>`feedlist-row feedlist-${m.status}${this.arrivals.has(m.id)?" feedlist-arrived":""}`,decorate:(m,_)=>{m.dataset.feed=String(_.id),m.title=c===void 0?"enter the feed (Esc returns to this list)":"click to indicate, double-click to enter (Esc returns to this list)"}},state:m=>this.canvas.style.display==="block"?null:m.filter,defaultSort:{key:"createdAt",dir:"desc"}}),this.feedList.addEventListener("click",m=>this.tagMark_press(m),{capture:!0}),this.feedList.addEventListener("dblclick",m=>{m.target instanceof Element&&m.target.closest(".feedlist-tag")!==null&&m.stopPropagation()},{capture:!0}),this.rosterTimer=setInterval(()=>{if(!this.feedList.isConnected||!this.rosterShown||this.rosterPending||document.visibilityState!=="visible")return;const _=this.lastRoster.some(y=>BD.has(y.status))?Op:RD;Date.now()-this.rosterAskedAt<_||(this.rosterAskedAt=Date.now(),this.handlers.command_run("proc feeds"))},Op),this.scene=new vl(e,{select:m=>this.facts_show(m),activate:m=>this.node_activate(m),deselect:()=>this.facts.replaceChildren(),tip:m=>this.universeShown?rM(m.id,this.landed):null}),r.addEventListener("click",()=>{const m=this.scene.strategy_get()==="ranked"?"molecule":"ranked";this.scene.strategy_set(m),r.textContent=m.toUpperCase(),this.modes_render()}),this.backPill=r.parentElement?.querySelector(".dag-back")??null,this.feedFrame=new _D(r.parentElement,{...o,shown:()=>this.shownFeedId,name:()=>this.lastModel?.feedName??"",renamed:(m,_)=>{this.lastModel!==null&&(this.lastModel={...this.lastModel,feedName:_}),this.title.textContent=`DAG · FEED ${m} — ${_}`.toUpperCase()}}),this.backPill?.addEventListener("click",()=>{this.nav_pop()||this.feedsChooser_request()}),this.facts.addEventListener("click",m=>{m.target instanceof Element&&m.target.closest("button, a, input")===null&&(this.facts.classList.contains("dag-facts-immersed")||(this.scene.selection_clear(),this.factsShown=null,this.facts.replaceChildren()))});const d=r.parentElement?.querySelector(".dag-projection")??null;d?.addEventListener("click",()=>{const m=this.scene.projection_get()==="3d"?"2d":"3d";this.scene.projection_set(m),d.textContent=m.toUpperCase(),this.modes_render()});const u=r.parentElement?.querySelector(".dag-pulse")??null;u?.classList.add("rail-off"),u?.addEventListener("click",()=>{const m=!this.scene.waveLoop_get();this.scene.waveLoop_set(m),u.textContent=m?"PULSE ON":"PULSE OFF",u.classList.toggle("rail-off",!m),this.modes_render()});const h=r.parentElement?.querySelector(".dag-scale")??null;h?.addEventListener("click",()=>{this.metricMode=this.metricMode==="time"?"size":"time",h.textContent=this.metricMode==="time"?"TIME":"SIZE",this.lastModel!==null&&this.graph_show(this.lastModel,!1),this.modes_render()}),this.scalePill=h;const p=r.parentElement?.querySelector(".dag-census")??null;p?.addEventListener("click",()=>{const m=!this.scene.census_get();this.scene.census_set(m),p.textContent=m?"CENSUS":"SHAPE",this.modes_render()});const f=r.parentElement?.querySelector(".dag-gravity")??null;f?.classList.add("rail-off"),f?.addEventListener("click",()=>{const m=!this.scene.physics_get().gravity;this.scene.physics_set({gravity:m}),f.textContent=m?"GRAVITY ON":"GRAVITY OFF",f.classList.toggle("rail-off",!m),this.modes_render()});const b=r.parentElement?.querySelector(".dag-hue")??null;b?.addEventListener("click",()=>{this.hueMode=this.hueMode==="status"?"compute":"status",b.textContent=this.hueMode.toUpperCase(),this.lastModel!==null&&this.graph_show(this.lastModel,!1),this.hueMode==="compute"&&!this.computeKnown&&this.shownFeedId!==null&&this.canvas.style.display!=="none"&&(this.computeRereading=!0,this.handlers.command_run(`proc refresh ${this.shownFeedId}`),this.refresh()),this.modes_render()}),this.huePill=b,r.closest(".pane-dag")?.addEventListener("argus:dag-physics",m=>{const _=m.detail;if(_==="reset"){this.scene.physics_set({charge:!0,link:!0,collide:!0});return}if(_.term==="gravity"){this.scene.physics_get().gravity!==_.on&&f?.click();return}this.scene.physics_set({[_.term]:_.on})}),new MutationObserver(()=>this.scene.palette_refresh()).observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme"]}),window.addEventListener("resize",()=>this.scene.size_fit()),new MutationObserver(()=>{window.setTimeout(()=>this.scene.size_fit(),600)}).observe(document.body,{attributes:!0,attributeFilter:["data-zoom"]})}envelope_observe(e){if(e.model?.kind===Mm){const t=gm.safeParse(e.model.data);t.success&&this.universe_show(t.data);return}if(e.model?.kind===mm){const t=this.rosterPending||this.rosterShown;this.rosterPending=!1;const s=pm.safeParse(e.model.data);s.success&&(t||this.canvas.style.display==="none")&&(this.universe_end(!0),this.chooser_show(s.data.feeds));return}if(this.pendingFeedId!==null&&e.status==="error"&&e.model===void 0){this.feedRequest_refuse(e.renderedErr??e.rendered??"");return}if(this.rosterPending&&e.status==="error"){this.rosterPending=!1,this.rosterRefusal_show(e),this.universe_request();return}if(e.model?.kind===Vn.feedIndexing){this.feedIndexing_take(e.model.data);return}e.model?.kind===Vn.feedDag&&this.feedDag_take(e.model.data)}feedIndexing_take(e){const t=S_.safeParse(e);!t.success||this.follow.drops(t.data.feedId,this.pinnedFeedId)||(this.requestedFeedId===t.data.feedId?this.requestedFeedId=null:this.pendingFeedId!==t.data.feedId&&(this.pinnedFeedId=t.data.feedId,this.pendingFeedId=t.data.feedId),this.feedIndexing_show(t.data))}feedDag_take(e){const t=Lc.safeParse(e);if(!t.success)return;const s=t.data;if(this.follow.drops(s.feedId,this.pinnedFeedId))return;this.requestedFeedId===s.feedId?this.requestedFeedId=null:this.pinnedFeedId=s.feedId,this.universe_end(!1),this.shownFeedId=s.feedId,this.pendingFeedId=null,this.listing.activation_settle(),gr(this.stateSpan,"wait"),this.title.textContent=`DAG · FEED ${s.feedId} — ${s.feedName}`.toUpperCase(),this.empty.style.display="none",this.roster_show(!1),this.canvas.style.display="block",this.lastModel!==null&&this.lastModel.feedId!==s.feedId&&(this.facts.replaceChildren(),this.scene.selection_clear());const i=this.lastModel;this.lastModel=s,i!==null&&i.feedId===s.feedId&&xp(i,s)?this.statuses_patch(s):this.graph_show(s),this.watch_open(s.feedId),this.feedFrame.arrived(s.feedId),this.handlers.feed_shown?.()}marks_refresh(){this.feedFrame.refresh()}feedMarks_show(e,t){this.feedFrame.show(e,t)}watch_open(e){this.watchedFeedId!==e&&(this.watch_release(),this.watchedFeedId=e,this.liveState_show(null),this.handlers.watch_set?.(`/proc/jobs/feed_${e}`,!0))}watch_release(){this.watchedFeedId!==null&&(this.handlers.watch_set?.(`/proc/jobs/feed_${this.watchedFeedId}`,!1),this.watchedFeedId=null,this.liveState_show(null))}modeSpan=null;hueMode="status";huePill=null;hueLegend=new Map;computeKnown=!1;computeRereading=!1;hueLegend_build(e){const t=getComputedStyle(document.documentElement),s=["--harvestgold","--daybreak","--orange","--honey","--butter","--october-sunset"].map(i=>t.getPropertyValue(i).trim()).filter(i=>i!=="");return yD(e,s)}modes_render(){if(this.modeSpan===null)return;const e=[];if(this.scene.strategy_get()!=="ranked"&&e.push("MOLECULE"),this.scene.projection_get()!=="3d"&&e.push("2D"),this.metricMode!=="time"&&e.push("SIZE"),this.scene.census_get()&&e.push("CENSUS"),this.scene.waveLoop_get()&&e.push("PULSE"),this.scene.physics_get().gravity&&e.push("GRAVITY"),this.modeSpan.replaceChildren(document.createTextNode(e.join(" · "))),this.hueMode==="compute"){const t=document.createElement("span");t.className="pane-legend",t.append(document.createTextNode(e.length>0?" · COMPUTE":"COMPUTE"));for(const[s,i]of this.hueLegend){const r=document.createElement("span");r.className="legend-swatch",r.style.backgroundColor=i;const a=document.createElement("span");a.textContent=s,t.append(document.createTextNode(" "),r,a)}this.hueLegend.size===0&&t.append(document.createTextNode(this.computeRereading?" (re-reading the feed…)":" (none reported)")),this.modeSpan.appendChild(t)}}liveState_show(e){if(this.liveState=e,this.stateSpan!==null){if(e===null){Yt(this.stateSpan,null,this.canvas.style.display!=="none"?"":void 0);return}Yt(this.stateSpan,e,e.toUpperCase())}}liveState_get(){return this.liveState}feed_get(){return this.pendingFeedId??this.shownFeedId}graph_isShown(){return this.canvas.style.display==="block"}feedTitle_get(){return(this.title.textContent??"").replace(/^DAG\s*·\s*/i,"").trim()}view_lines(){const e=this.strategyPill.parentElement,t=s=>e?.querySelector(s)?.textContent?.trim().toLowerCase()??"";return CD({layout:t(".dag-strategy"),projection:t(".dag-projection"),scale:t(".dag-scale"),hue:t(".dag-hue"),census:t(".dag-census")})}watched_observe(e,t){const s=/feed_(\d+)$/.exec(e);!s||Number(s[1])!==this.watchedFeedId||this.liveState_show(t)}model_refresh(e){if(this.pendingFeedId===e.feedId&&this.canvas.style.display==="none"){this.envelope_observe({status:"ok",rendered:"",model:{kind:Vn.feedDag,data:e}});return}if(this.shownFeedId!==e.feedId||this.canvas.style.display==="none")return;const t=this.lastModel;if(this.lastModel=e,t!==null&&xp(t,e)){this.statuses_patch(e);return}this.graph_show(e,!1)}statuses_patch(e){for(const t of e.nodes)this.scene.status_update(t.id,t.status),this.factsPayloads.set(t.id,t);this.factsShown!==null&&this.facts_show(this.factsShown)}refresh(){this.shownFeedId===null||this.canvas.style.display==="none"||(this.requestedFeedId=this.shownFeedId,this.handlers.command_run(`feed diagram feed_${this.shownFeedId}`))}scalePill=null;graph_show(e,t=!0){const s=e.nodes.some(r=>nM(r,this.metricMode)!==void 0);this.scalePill?.classList.toggle("rail-na",!s),this.scalePill!==null&&(this.scalePill.title=s?"molecule node size: wall time or output bytes":`no ${this.metricMode==="time"?"wall-time":"output-size"} data in this feed's cache yet`),this.hueLegend=this.hueLegend_build(e);const i=e.nodes.some(r=>r.computeResource!==void 0);this.computeKnown=i,i&&(this.computeRereading=!1),this.huePill?.classList.toggle("rail-na",!i),this.huePill!==null&&(this.huePill.title=i?"what colors a node: its status, or the compute resource it ran on":"no compute resource reported for this feed's nodes yet"),this.scene.graph_set(vD(e,this.metricMode,this.hueMode,this.hueLegend),{wave:t}),this.scene.size_fit(),this.hueMode==="compute"&&this.modes_render(),this.factsPayloads.clear();for(const r of e.nodes)this.factsPayloads.set(r.id,r);this.factsShown!==null&&(this.factsPayloads.has(this.factsShown.id)?this.facts_show(this.factsShown):this.factsShown=null)}factsPayloads=new Map;factsShown=null;promptContext_observe(e){const t=e.procWarmup?.landed??[];if(t.length>0&&this.universeLandings_take(t),this.universeShown&&this.universeLive){const o=e.procWarmup;if(o?.total!==void 0&&o.total>0&&o.sweeping!==!1){const l=Math.floor(o.loaded/o.total*100),c=`INDEX WARMING ${o.loaded.toLocaleString()}/${o.total.toLocaleString()} (${l}%)`;c!==this.universeWarming&&(this.universeWarming=c,this.universeTitle_paint())}else(o===void 0||o.sweeping===!1||o.state==="cached")&&(this.universeLive=!1,this.universeWarming="",this.universe_request())}if(this.rosterProgress!==null&&this.rosterProgress.isConnected){const o=e.procWarmup;if(o?.total!==void 0&&o.total>0&&o.sweeping!==!1){const l=Math.floor(o.loaded/o.total*100);this.rosterProgress.textContent=`INDEX WARMING — ${o.loaded}/${o.total} (${l}%). The roster opens when the index is whole.`}(o===void 0||o.sweeping===!1||o.state==="cached")&&(this.rosterProgress=null,this.feedsChooser_request())}this.arrivals_observe(e.procWarmup?.arrived??[]);const i=(e.procWarmup?.feeds??(e.procWarmup?.feed!==void 0?[e.procWarmup.feed]:[])).find(o=>o.id===this.pendingFeedId);i!==void 0&&this.feedIndexing_show({feedId:i.id,loaded:i.loaded,total:i.total,...i.failed!==void 0?{failed:i.failed}:{}});const r=this.lastCwd!==null&&e.cwd!==this.lastCwd;if(this.lastCwd=e.cwd,!this.canvas.isConnected||this.rosterShown||this.pendingFeedId!==null||!r)return;const a=kD(e.cwd);a!==null&&a!==this.shownFeedId&&(this.pinnedFeedId!==null&&a===this.pinnedFeedId||(this.pinnedFeedId=null,this.requestedFeedId=a,this.handlers.command_run(`feed diagram feed_${a}`)))}progress_observe(e){if(e.itemId===void 0)return;const t=e.status!==void 0?PD[e.status]:void 0;t!==void 0&&this.scene.status_update(String(e.itemId),t)}size_fit(){this.scene.size_fit()}dispose(){this.watch_release(),this.rosterTimer!==null&&clearInterval(this.rosterTimer),this.scene.dispose()}feed_enter(e){this.follow.pick(this.requestedFeedId,e),this.pinnedFeedId=e,this.requestedFeedId=null,this.feedRequest_show(e),this.handlers.command_run(`feed diagram feed_${e}`)}feedRequest_show(e){this.pendingFeedId=e,this.roster_show(!1),this.canvas.style.display="none",this.facts.replaceChildren(),this.title.textContent=`DAG · FEED ${e}`,this.empty.textContent=`RETRIEVING FEED ${e}…`,this.empty.style.display="block",Yt(this.stateSpan,"wait","LOADING")}feedIndexing_show(e){this.pendingFeedId===null&&(this.pendingFeedId=e.feedId),this.roster_show(!1),this.canvas.style.display="none",this.title.textContent=`DAG · FEED ${e.feedId}`;const t=e.total>0?`${e.loaded.toLocaleString()} / ${e.total.toLocaleString()}`:`${e.loaded.toLocaleString()} / ?`;this.empty.textContent=e.failed!==void 0?`INDEXING FEED ${e.feedId} FAILED AT ${t} — ${e.failed.toUpperCase()} — REFRESH RETRIES`:`INDEXING FEED ${e.feedId} — ${t}`,this.empty.style.display="block",Yt(this.stateSpan,"wait",e.failed!==void 0?"FAILED":"LOADING"),e.failed===void 0&&this.watch_open(e.feedId)}feedRequest_refuse(e){const t=this.pendingFeedId;this.pendingFeedId=null,this.listing.activation_settle(),this.empty.textContent=`FEED ${t??"?"}: ${e.trim()||"not available"}`.toUpperCase(),this.empty.style.display="block",this.roster_show(!0),this.title.textContent=this.defaultTitle,gr(this.stateSpan,"wait"),this.listing.state_refresh()}feedsChooser_request(){const e=document.createElement("div");e.className="feedlist-loading",e.textContent="RETRIEVING FEED ROSTER…",this.feedList.replaceChildren(e),this.canvas.style.display!=="none"&&this.graph_leave(),this.roster_show(!0),this.rosterPending=!0,this.rosterAskedAt=Date.now(),this.handlers.command_run("proc feeds")}rosterPending=!1;rosterShown=!1;rosterAskedAt=0;rosterProgress=null;landed=new iM;universeShown=!1;universeLive=!1;universeRepaint=null;universeStrategyWas=null;universeWarming="";universe_request(){this.handlers.command_run("proc universe")}universe_show(e){this.landed.clear(),this.landed.take(e.feeds),this.universeLive=!e.whole,this.universeShown||(this.universeShown=!0,this.universeStrategyWas=this.scene.strategy_get(),this.scene.strategy_set("molecule"),this.scene.physics_set({gravity:!0})),this.roster_show(!1),this.pendingFeedId=null,this.pinnedFeedId=null,this.empty.style.display="none",this.canvas.style.display="block",this.universe_paint()}universe_paint(){this.lastModel=null,this.scene.graph_set(va(this.landed.all()),{wave:!1}),this.universeTitle_paint()}universeTitle_paint(){const e=`${this.landed.size()} FEEDS · ${this.landed.shapes()} SHAPES`;this.title.textContent=this.universeLive?`UNIVERSE — ${e}${this.universeWarming.length>0?` · ${this.universeWarming}`:" · INDEX WARMING"}`:`UNIVERSE — ${e}`,Yt(this.stateSpan,this.universeLive?"wait":"settled",this.universeLive?"LANDING":"WHOLE")}universeLandings_take(e){!this.universeShown||!this.universeLive||!this.landed.take(e)||this.universeRepaint!==null||(this.universeRepaint=window.setTimeout(()=>{this.universeRepaint=null,this.universeShown&&this.universe_paint()},1e3))}universe_end(e){this.universeShown&&(this.universeShown=!1,this.universeLive=!1,this.universeWarming="",this.universeRepaint!==null&&(window.clearTimeout(this.universeRepaint),this.universeRepaint=null),this.landed.clear(),this.universeStrategyWas!==null&&(this.scene.strategy_set(this.universeStrategyWas),this.universeStrategyWas=null),this.scene.selection_clear(),e&&(this.canvas.style.display="none"))}rosterRefusal_show(e){const t=wD(e.renderedErr||e.rendered||""),s=t.length>0?t:"the roster request was refused",i=document.createElement("div");i.className="feedlist-refusal",i.textContent=s;const r=document.createElement("div");r.className="feedlist-warming",r.textContent="INDEX WARMING… the roster opens when the index is whole.",this.feedList.replaceChildren(i,r),this.roster_show(!0),this.rosterProgress=r}list_reset(){this.pendingFeedId=null,gr(this.stateSpan,"wait"),this.watch_release(),this.facts.replaceChildren(),this.scene.selection_clear(),this.canvas.style.display="none",this.pinnedFeedId=null,this.requestedFeedId=null,this.title.textContent=this.defaultTitle,this.empty.style.display="none"}nav_pop(){return this.pendingFeedId!==null&&this.feedList.childElementCount>0?(this.pendingFeedId=null,this.pinnedFeedId=null,this.requestedFeedId=null,this.listing.activation_settle(),this.empty.style.display="none",this.roster_show(!0),this.title.textContent=this.defaultTitle,gr(this.stateSpan,"wait"),this.listing.state_refresh(),!0):this.canvas.style.display==="none"||this.feedList.childElementCount===0?!1:(this.graph_leave(),this.roster_show(!0),this.listing.state_refresh(),!0)}graph_leave(){this.watch_release(),this.canvas.style.display="none",this.pinnedFeedId=null,this.requestedFeedId=null,this.title.textContent=this.defaultTitle,this.facts.replaceChildren(),this.scene.selection_clear()}arrivals_observe(e){const t=e.join(",");if(t===this.arrivalsKey)return;this.arrivalsKey=t,this.arrivals=new Set(e);for(const r of this.lastRoster)this.listing.row_element(String(r.id))?.classList.toggle("feedlist-arrived",this.arrivals.has(r.id));const s=new Set(this.lastRoster.map(r=>r.id));e.some(r=>!s.has(r))&&this.rosterShown&&this.feedsChooser_request()}chooser_show(e){this.lastRoster=e,this.empty.style.display="none",this.roster_show(!0),this.listing.rows_set([{key:"roster",rows:e}],{field:"roster"}),this.rosterFrame_track()}feed_activate(e){this.follow.pick(this.requestedFeedId,e.id),this.pinnedFeedId=e.id,this.requestedFeedId=null,this.handlers.feed_regard?.(`/proc/jobs/feed_${e.id}`),this.feedRequest_show(e.id),this.handlers.command_run(`feed diagram feed_${e.id}`)}row_indicate(e){this.listing.row_indicate(e===null?null:String(e.id))}indicated_refresh(){const e=this.listing.indicated_get(),t=e===null?void 0:this.lastRoster.find(s=>String(s.id)===e);t!==void 0&&this.handlers.feed_indicated?.(t)}roster_ask(){this.rosterAskedAt=Date.now(),this.handlers.command_run("proc feeds")}tagMark_press(e){const t=e.target instanceof Element?e.target:null,s=t?.closest(".feedlist-tag")??null;if(s===null)return;e.stopPropagation(),e.preventDefault();const i=s.dataset.tag??"",r=Number(s.closest("[data-feed]")?.dataset.feed);if(t?.closest(".feedlist-tag-x")!==null&&Number.isFinite(r)){this.handlers.feed_untag?.(r,i);return}this.roster_filter(`tag:${i}`)}rowReadout_show(e,t){this.listing.readout_show(String(e),t)}filter_toggle(e){this.listing.filter_toggle(e)}roster_filter(e){this.listing.filter_toggle(e!==""),this.listing.filter_set(e)}rosterFrameObserver=null;rosterFrame_track(){const e=this.feedList.parentElement,t=this.feedList.querySelector(".roster-order");if(this.rosterFrameObserver?.disconnect(),this.rosterFrameObserver=null,e===null)return;if(t===null){e.style.removeProperty("--mode-frame-top");return}const s=()=>{e.style.setProperty("--mode-frame-top",`${Math.ceil(t.getBoundingClientRect().bottom-e.getBoundingClientRect().top)}px`)};s(),this.rosterFrameObserver=new ResizeObserver(s),this.rosterFrameObserver.observe(t)}roster_show(e){this.rosterShown=e,this.backPill!==null&&(this.backPill.hidden=e),this.feedFrame.shown_set(!e),this.feedList.style.display=e?"flex":"none",this.feedList.parentElement?.classList.toggle("roster-shown",e)}facts_show(e){this.factsShown=e;const t=this.factsPayloads.get(e.id);if(!t){this.facts.textContent=e.label;return}this.handlers.node_regard?.(t.vfsPath),this.facts.replaceChildren();const i=t.status==="finishedSuccessfully"||t.status==="finishedWithError"||t.status==="cancelled"?"awaiting warmup":"in flight",r=t.tally,a=[["PLUGIN",t.pluginName],[r?"REP. INSTANCE":"INSTANCE",String(t.instanceId)],["STATUS",t.status],...r?[["COUNT",`×${r.count} — ${r.done} done, ${r.error} err, ${r.running} live, ${r.other} other`]]:[],...r?.anomalies!==void 0&&r.anomalies.length>0?[["FAULTS",r.anomalies.map(o=>o.id).join(" ")+(r.count>r.done+r.anomalies.length?" …":"")]]:[],["WALL",t.metrics?.computeSeconds!==void 0?tM(t.metrics.computeSeconds):i],["SIZE",t.metrics?.dataBytes!==void 0?sM(t.metrics.dataBytes):i],["DATA",t.vfsPath]];for(const[o,l]of a){const c=document.createElement("div");c.className="telemetry-row";const d=document.createElement("span");d.className="telemetry-label",d.textContent=o;const u=document.createElement("span");u.className="telemetry-value",u.textContent=l,c.append(d,u),this.facts.appendChild(c)}if(this.facts.appendChild(WD(t.status)),this.handlers.node_process!==void 0){const o=this.handlers.node_process,l=document.createElement("button");l.className="pacs-capsule dag-process",r!==void 0?(l.textContent="PROCESS",l.disabled=!0,l.title=`${r.count} instances stand here: open one to process it`,l.classList.add("pacs-capsule-off")):(l.textContent="PROCESS",l.title=`open /bin bound to ${t.label} — a run appends to this node`,l.addEventListener("click",()=>o({vfsPath:t.vfsPath,instanceId:t.instanceId,label:t.label}))),this.facts.appendChild(l)}}node_activate(e){const t=this.factsPayloads.get(e.id);if(t)if(this.handlers.node_dive!==void 0){const s=this.handlers.node_dive;this.scene.flight_into(e.id,()=>s(t.vfsPath))}else this.handlers.node_enter(t.vfsPath)}detail_clear(){this.scene.selection_clear(),this.facts.replaceChildren()}wave_start(){this.scene.wave_start()}inside_isHeld(){return this.scene.holding_get()}flight_back(e){this.scene.flight_back(e)}node_flyTo(e){for(const[t,s]of this.factsPayloads){if(s.instanceId!==e)continue;if(this.handlers.node_dive===void 0)return!1;const i=this.handlers.node_dive;return this.facts_show({id:t,label:s.label,parentIds:[],joinParentIds:[]}),this.scene.flight_into(t,()=>i(s.vfsPath)),!0}return!1}}const yc=[{key:"created",label:"CREATED"},{key:"waiting",label:"WAITING"},{key:"scheduled",label:"SCHEDULED"},{key:"started",label:"STARTED"},{key:"registeringFiles",label:"REGISTERING"}];function WD(n){const e=document.createElement("div");e.className="dag-subway";const t=n==="finishedSuccessfully",s=n==="finishedWithError"||n==="cancelled",i=yc.findIndex(l=>l.key===n),r=t||s?yc.length:i;!t&&!s&&e.classList.add("dag-subway-live");const a=(l,c,d)=>{const u=document.createElement("span");u.className=`subway-step${d?" subway-step-here":""}`;const h=document.createElement("span");h.className=c;const p=document.createElement("span");return p.className="subway-label",p.textContent=l,u.append(h,p),u};yc.forEach((l,c)=>{if(c>0){const u=document.createElement("span");u.className="subway-link"+(c<=r?" subway-passed":""),e.appendChild(u)}const d=c===i&&!t&&!s;e.appendChild(a(l.label,"subway-stop"+(c<r?" subway-passed":"")+(d?" subway-here":""),d))});const o=document.createElement("span");return o.className="subway-link"+(t||s?" subway-passed":""),e.appendChild(o),e.appendChild(a(t?"FINISHED":s?n==="cancelled"?"CANCELLED":"ERROR":"FINISHED","subway-stop subway-terminal"+(t?" subway-done":"")+(s?" subway-failed":""),!1)),e}function kD(n){for(const e of ND){const t=n.match(e);if(t?.[1]!==void 0)return parseInt(t[1],10)}return null}class UD{root;label;fill;constructor(e){this.root=document.createElement("div"),this.root.className="wait-progress",this.root.hidden=!0,this.root.setAttribute("role","progressbar"),this.root.setAttribute("aria-valuemin","0"),this.root.setAttribute("aria-valuemax","100"),this.label=document.createElement("span"),this.label.className="wait-progress-label";const t=document.createElement("span");t.className="wait-progress-track",this.fill=document.createElement("span"),this.fill.className="wait-progress-fill",t.appendChild(this.fill),this.root.append(this.label,t),e.appendChild(this.root)}show(e,t){this.root.hidden=!1,this.label.textContent=t===null?e:`${e} · ${Math.floor(t*100)}%`,this.root.classList.toggle("wait-progress-indeterminate",t===null),this.fill.style.width=t===null?"":`${Math.max(0,Math.min(1,t))*100}%`,t===null?this.root.removeAttribute("aria-valuenow"):this.root.setAttribute("aria-valuenow",String(Math.floor(t*100)))}hide(){this.root.hidden=!0}shown(){return!this.root.hidden}}const FD=600;function jD(n,e){if(e===null)return n.projection_set(n.projection_get()==="3d"?"2d":"3d"),null;if(n.projection_get()==="2d")return"universe: the whole space is 2D; BACK and press 2D to stand it up";const t=[...e];return n.flat_set(n.flat_get()?null:t),n.camera_flyToFit(t,FD,()=>{},1,.95),null}function $D(n,e){return n.projection_get()==="2d"||e&&n.flat_get()?"2D":"3D"}function Hd(n,e,t){const s=n?.querySelector(".universe-projection");s!=null&&(s.textContent=$D(e,t))}function VD(n,e,t,s){const i=jD(e,t);i!==null&&s(i),Hd(n,e,t!==null)}const HD=4e3;function qD(n){const e={...Jn,gravity:!0};return n.charge===e.charge&&n.link===e.link&&n.collide===e.collide&&n.gravity===e.gravity}function Sp(n){let e=0;for(const t of Object.values(n))e+=t[0]*1.3+t[1]*1.7+t[2]*1.9;return`${Object.keys(n).length}:${e.toFixed(2)}`}function vc(n){return n==="constellations"||n==="data"||n==="accretion"}const XD=18e4,KD=1500,YD=1e3,ZD=5e3,QD=3e3,dr=650,JD=650,eT=1.5;class tT{scene;wait;asking=!1;spaceKey="";landed=new iM;canvas;title;state;noteTimer=null;empty;handlers;store;whole=!1;shown=!1;warming="";repaintTimer=null;lastReask=0;rememberTimer=null;putSignatures=new Map;sessionPlaces=new Map;sessionWait=null;storeKey=null;arrivalsKey="";feedsCount=null;disposed=!1;scale="jobs";view="feeds";inside=null;cluster=null;framedAt=null;entering=null;facts;viewPill=null;gravityPill=null;densityPill=null;density="shape";drawMode="stars";drawPill=null;captionsPill=null;captions=!0;arrangement="galaxy";arrangementPill=null;scalePill=null;physics={...Jn,gravity:!0};backPill;openPill;pane;escape_listen;lit=null;dataHubs=new Map;litHub=null;replayPill=null;replayDay="";reach=null;constructor(e,t,s){this.canvas=e.canvas,this.title=e.title,this.state=e.state,this.empty=e.empty,this.handlers=t,this.store=s,this.facts=e.facts,this.backPill=e.backPill,this.openPill=e.openPill,this.pane=e.canvas.closest(".workspace-pane"),this.wait=new UD(e.canvas),this.scene=new vl(e.canvas,{progress:(i,r,a)=>this.settle_progress(i,r,a),handoffKey:i=>c0(i.id),tip:i=>this.inside===null?a0(i.id,this.dataHubs)??zc(i.id,this.landed)??GD(i.id,this.landed)??rM(i.id,this.landed)??DD(i.id,this.landed):null,select:i=>this.node_select(i),activate:i=>{const r=this.inside===null?kc(i.id):null;r!==null?this.plugin_frame(r):this.node_dive(i)},deselect:()=>{this.facts_clear(),this.lit!==null&&this.plugin_light(null)},replay:()=>this.replay_paint(),gesture_end:()=>this.pinch_leave()}),this.scene.strategy_set("molecule"),this.scene.physics_set(this.physics),this.frame_wire(e),this.escape_listen=this.escape_wire(),this.scene.draw_set(this.drawMode),this.canvas.style.display="none",this.title_paint()}frame_wire(e){e.backPill?.addEventListener("click",()=>this.ascend()),e.openPill?.addEventListener("click",()=>{this.inside!==null&&this.handlers.feed_open?.(this.inside.feedId)}),e.projectionPill?.addEventListener("click",()=>VD(this.pane,this.scene,this.inside?.ids??null,t=>this.bar_note(t))),e.refreshPill?.addEventListener("click",()=>this.request()),this.replayPill=e.replayPill??null,e.replayPill?.addEventListener("click",()=>{const t=this.scene.replay_state();t===null?this.bar_note(this.replay_start(1)):t.playing?this.scene.replay_pause():this.scene.replay_play(),this.replay_paint()}),e.scalePill?.addEventListener("click",()=>{this.scale=this.scale==="jobs"?"feeds":"jobs",e.scalePill!==null&&(e.scalePill.textContent=this.scale==="jobs"?"JOBS":"ALIKE"),this.shown&&this.paint(!0,"full"),this.settings_save()}),e.viewPill?.addEventListener("click",()=>this.view_set(this.view==="feeds"?"shapes":"feeds")),this.viewPill=e.viewPill,this.gravityPill=e.gravityPill,e.gravityPill?.addEventListener("click",()=>{this.physics_set("gravity",!this.physics.gravity)}),this.densityPill=e.densityPill,e.densityPill?.addEventListener("click",()=>{this.density_set(this.density==="shape"?"census":"shape")}),this.drawPill=e.drawPill??null,this.scalePill=e.scalePill,e.drawPill?.addEventListener("click",()=>{this.draw_set(this.drawMode==="stars"?"spheres":"stars")}),this.captionsPill=e.captionsPill??null,e.captionsPill?.addEventListener("click",()=>{this.bar_note(this.captions_set(!this.captions))}),this.arrangementPill=e.arrangementPill??null,e.arrangementPill?.addEventListener("click",()=>{const t=["galaxy","spokes","clumps","constellations","data","accretion"];this.bar_note(this.arrangement_set(t[(t.indexOf(this.arrangement)+1)%t.length]))})}escape_wire(){const e=t=>{if(t.key==="Escape"&&this.scene.replay_state()!==null&&(this.pane===null||this.pane.offsetParent!==null)){this.replay_end();return}t.key!=="Escape"||this.inside===null&&this.cluster===null||this.scene.moving()||this.scene.holding_get()||this.pane!==null&&this.pane.offsetParent===null||this.ascend()};return window.addEventListener("keydown",e),e}request(){this.asking=!0,this.shown||this.wait.show("ASKING THE SESSION FOR THE SPACE",null),this.title_paint(),this.shown||this.handlers.command_run(`proc layout ${this.sessionLayoutName_of(this.arrangement)}`),this.handlers.command_run("proc universe")}settle_progress(e,t,s){if(e>=t){this.wait.hide(),this.remember_later();return}this.wait.show(`SETTLING ${s.toLocaleString("en-US")} SPHERES`,t===0?1:e/t)}envelope_observe(e){if(e.model?.kind===G_){const s=I_.safeParse(e.model.data);s.success&&this.sessionLayout_take(s.data.name,s.data.positions,s.data.laying??null);return}if(e.model?.kind!==Mm)return;const t=gm.safeParse(e.model.data);t.success&&this.space_show(t.data)}promptContext_observe(e){if(this.disposed)return;this.identity_note(e.user,e.uri);const t=e.procWarmup?.landed??[];t.length>0&&this.shown&&this.landings_take(t);const s=e.procWarmup;if(s?.total!==void 0&&s.total>0&&s.sweeping!==!1&&!this.whole){const i=Math.floor(s.loaded/s.total*100),r=`INDEX WARMING ${s.loaded.toLocaleString()}/${s.total.toLocaleString()} (${i}%)`;r!==this.warming&&(this.warming=r,this.title_paint())}else this.shown&&!this.whole&&(s===void 0||s.sweeping===!1||s.state==="cached")&&(this.warming="",this.request());if(this.shown&&this.whole){const i=(s?.arrived??[]).join(","),r=e.procIndex?.feeds??null,a=i.length>0&&i!==this.arrivalsKey||r!==null&&this.feedsCount!==null&&r!==this.feedsCount;this.arrivalsKey=i,r!==null&&(this.feedsCount=r),a&&Date.now()-this.lastReask>ZD&&(this.lastReask=Date.now(),this.request())}}size_fit(){this.scene.size_fit()}verbs_get(){return{enter:e=>this.verb_enter(e),node:e=>this.verb_node(e),state:()=>this.verb_state(),plugin:e=>this.verb_plugin(e),replay:e=>this.verb_replay(e),layout:e=>this.verb_layout(e),draw:e=>this.verb_draw(e),regrow:()=>this.verb_regrow(),captions:e=>this.verb_captions(e),density:e=>this.verb_density(e),physics:e=>this.verb_physics(e),view:e=>this.verb_view(e),cluster:e=>this.verb_cluster(e),back:()=>this.verb_back(),open:()=>this.verb_open()}}control(e,t){if(this.scene.moving()&&(e==="cluster"||e==="back"))return"universe: still moving; ask again";const s=this.verbs_get()[e];return s===void 0?"universe enter <feed>|node <instance>|cluster <feed>|view feeds|shapes|density shape|census|draw stars|spheres|captions on|off|layout galaxy|spokes|clumps|constellations|data|accretion|regrow|plugin <name>|off|replay [speed]|pause|stop|at <date>|state|physics <term> on|off|reset|back|open":s(t)}verb_enter(e){const t=parseInt(e[0]??"",10);return Number.isFinite(t)?this.landed.get(t)===void 0?`universe enter: feed ${t} has not landed here`:this.inside!==null?`universe enter: already inside feed ${this.inside.feedId}; universe back first`:(this.descend(t),`entering feed ${t}`):"universe enter <feed id>"}verb_node(e){const t=parseInt(e[0]??"",10);return Number.isFinite(t)?this.inside===null?"universe node: not inside a feed (universe enter <feed> first)":this.node_flyTo(t)?`flying into instance ${t}`:`universe node: no node of feed ${this.inside.feedId} hosts instance ${t}`:"universe node <instance id>: fly into the entered feed's node that hosts it"}verb_state(){const e=this.scene.state_get(),t=(()=>{const s=this.settingsKey_get();try{return s===null||this.store===void 0?null:this.store.getItem(s)}catch{return null}})();return[`universe: ${this.inside!==null?`inside feed ${this.inside.feedId}`:this.cluster!==null?"in a cluster":"the whole space"}; view ${this.view}, scale ${this.scale}, density ${this.density}`,`scene: ${Object.entries(e).map(([s,i])=>`${s}=${String(i)}`).join(" ")}`,`kept settings: ${t??"(none)"}`,`lit: ${this.lit??"none"}`,`captions: ${this.captions?"on":"off"}`,`session layout: ${(()=>{const s=this.sessionPlaces.get(this.sessionLayoutName_of(this.arrangement));return s===void 0?"not asked":s===null?"none kept":`${s} places kept`})()}`,`replay: ${(()=>{const s=this.scene.replay_state();return s===null?"none":`${s.playing?"playing":"paused"} at ${new Date(s.at).toISOString().slice(0,10)} of ${new Date(s.span[0]).toISOString().slice(0,10)}..${new Date(s.span[1]).toISOString().slice(0,10)}`})()}`].join(`
|
|
4239
4239
|
`)}verb_plugin(e){const t=e[0]??"";return t===""?"universe plugin <name> | off":this.arrangement!=="constellations"||this.inside!==null||this.cluster!==null?"universe plugin: the CONSTELLATIONS layout only (universe layout constellations)":t.toLowerCase()==="off"?(this.plugin_light(null),"no plugin lit"):this.landed.all().some(s=>s.groups.some(i=>i.plugin===t))?(this.plugin_light(t),zc(`plugin:${t}`,this.landed)??t):`universe plugin: no feed here ran ${t}`}verb_replay(e){const t=(e[0]??"").toLowerCase();if(t==="stop")return this.scene.replay_state()===null?"universe replay: none is running":(this.replay_end(),"replay stopped; the space is whole");if(t==="pause")return this.scene.replay_state()===null?"universe replay: none is running":(this.scene.replay_pause(),this.replay_paint(),"replay paused");if(t==="at"){if(this.scene.replay_state()===null)return"universe replay: none is running (universe replay first)";const i=Date.parse(e[1]??"");return Number.isFinite(i)?(this.scene.replay_pause(),this.scene.replay_seek(i),this.replay_paint(),`replay at ${new Date(this.scene.replay_state()?.at??i).toISOString().slice(0,10)}`):"universe replay at <YYYY-MM-DD>"}const s=t===""?1:Number(t);return!Number.isFinite(s)||s<=0?"universe replay [speed] | pause | stop | at <YYYY-MM-DD>":this.scene.replay_state()!==null?(this.scene.replay_play(s),this.replay_paint(),`replaying at ×${s}`):this.replay_start(s)}verb_layout(e){const t=(e[0]??"").toLowerCase();return t!=="galaxy"&&t!=="spokes"&&t!=="clumps"&&t!=="constellations"&&t!=="data"&&t!=="accretion"?"universe layout galaxy|spokes|clumps|constellations|data|accretion":this.arrangement_set(t)}verb_draw(e){const t=(e[0]??"").toLowerCase();return t!=="stars"&&t!=="spheres"?"universe draw stars|spheres":this.draw_set(t)}verb_regrow(){if(this.arrangement!=="accretion"||this.inside!==null||this.cluster!==null)return"universe regrow: the ACCRETION layout only (universe layout accretion)";this.replay_end();const e=this.positionsKey_of("accretion");try{e!==null&&this.store?.setItem(e,"{}")}catch{}return this.paint(!0,"full"),"the space regrown from its first feed"}verb_captions(e){const t=(e[0]??"").toLowerCase();return t!=="on"&&t!=="off"?"universe captions on|off":this.captions_set(t==="on")}verb_density(e){const t=(e[0]??"").toLowerCase();return t!=="shape"&&t!=="census"?"universe density shape|census":this.density_set(t)}verb_physics(e){const t=(e[0]??"").toLowerCase();if(t==="reset")return this.physics_reset();if(!["charge","link","collide","gravity"].includes(t))return"universe physics charge|link|collide|gravity [on|off] | reset";const s=(e[1]??"on").toLowerCase()!=="off";return this.physics_set(t,s)}verb_view(e){const t=(e[0]??"").toLowerCase();return t!=="feeds"&&t!=="shapes"?"universe view feeds|shapes":this.inside!==null||this.cluster!==null?"universe view: climb out first (universe back)":(this.view_set(t),t==="feeds"?"every feed its own molecule":"the shapes folded, one molecule each")}verb_cluster(e){const t=parseInt(e[0]??"",10),s=Number.isFinite(t)?this.landed.get(t):void 0;return s===void 0?"universe cluster <feed id>: the cluster of a feed that landed here":this.inside!==null?`universe cluster: inside feed ${this.inside.feedId}; universe back first`:(this.cluster_enter(ns(s)),`viewing the cluster of feed ${t}: ${dl(ns(s))}`)}verb_back(){return this.inside===null&&this.cluster===null?"universe back: not inside a feed or a cluster":(this.ascend(),"climbing out")}verb_open(){return this.inside===null?"universe open: not inside a feed":(this.handlers.feed_open?.(this.inside.feedId),`opening feed ${this.inside.feedId}`)}physics_set(e,t){return this.inside!==null||this.cluster!==null?"universe physics: climb out first (universe back)":e==="reach"?"universe physics: reach is the pane's own":(this.physics={...this.physics,[e]:t},this.physics_apply(),`physics ${e} ${t?"on":"off"}`)}draw_set(e){return this.replay_end(),this.drawMode=e,this.drawPill!==null&&(this.drawPill.textContent=e.toUpperCase()),this.scene.draw_set(e),this.settings_save(),e==="stars"?"every sphere a point of light":"every sphere lit and solid"}captions_set(e){return this.captions=e,this.captionsPill!==null&&(this.captionsPill.textContent=e?"CAPTIONS ON":"CAPTIONS OFF"),this.scene.captions_set(e),this.settings_save(),e?"captions on: each hub names itself and its count":"captions off: a hub names itself on hover"}arrangement_set(e){if(vc(e)&&this.view!=="feeds")return`universe layout ${e}: the FEEDS view only (universe view feeds)`;this.replay_end();const t=i=>vc(i)?i:"hubs",s=t(e)!==t(this.arrangement);return this.litHub=null,this.remember_now(),this.arrangement=e,this.arrangementPill!==null&&(this.arrangementPill.textContent=e.toUpperCase()),this.positions_recalled(e)===void 0&&this.handlers.command_run(`proc layout ${this.sessionLayoutName_of(e)}`),this.inside===null&&this.cluster===null&&(this.scene.arrangement_set(e==="data"?"hubs":e,this.positions_recalled(e),!s),s&&this.paint(!0,this.positions_recalled(e)===void 0?"full":"hold")),this.settings_save(),e==="galaxy"?"the space finds its own shape: every sphere pushing, every edge holding":e==="spokes"?"each molecule a spoke round its hub":e==="clumps"?"molecules packed round their hub":e==="constellations"?"every plugin a star, placed by what runs with what; every feed pulled to the stars it ran":e==="data"?"every feed hung from what it began from: its format, its modality, its series":"the space grown in the order it was made: each feed wandering until it sticks, to its kin more readily than to strangers"}settingsKey_get(){return this.storeKey===null?null:this.storeKey.replace(/^argus\.universe\./,"argus.universe.settings.")}settings_save(){const e=this.settingsKey_get();if(!(this.store===void 0||e===null))try{this.store.setItem(e,JSON.stringify(xD(this.drawMode,this.view,this.scale,this.density,this.arrangement,this.captions)))}catch{}}settings_recall(){const e=this.settingsKey_get();if(this.store===void 0||e===null)return!1;let t=null;try{t=this.store.getItem(e)}catch{return!1}const s=SD(t),i=s.view!==this.view||s.scale!==this.scale;return this.drawMode=s.draw,this.view=s.view,this.scale=s.scale,this.density=s.density,this.arrangement=s.arrangement,this.arrangementPill!==null&&(this.arrangementPill.textContent=s.arrangement.toUpperCase()),this.scene.arrangement_set(s.arrangement==="data"?"hubs":s.arrangement,this.positions_recalled(s.arrangement)),this.drawPill!==null&&(this.drawPill.textContent=s.draw.toUpperCase()),this.viewPill!==null&&(this.viewPill.textContent=s.view.toUpperCase()),this.scalePill!==null&&(this.scalePill.textContent=s.scale==="jobs"?"JOBS":"ALIKE"),this.densityPill!==null&&(this.densityPill.textContent=s.density.toUpperCase()),this.scene.draw_set(s.draw),this.scene.census_set(s.density==="census"),this.captions=s.captions,this.captionsPill!==null&&(this.captionsPill.textContent=s.captions?"CAPTIONS ON":"CAPTIONS OFF"),this.scene.captions_set(s.captions),i}density_set(e){return this.replay_end(),this.density=e,this.densityPill!==null&&(this.densityPill.textContent=e.toUpperCase()),this.scene.census_set(e==="census"),this.settings_save(),e==="census"?"every job its own point":"a stage one sphere, with its count"}physics_reset(){return this.inside!==null||this.cluster!==null?"universe physics: climb out first (universe back)":(this.physics={...Jn,gravity:!0},this.physics_apply(),"physics reset")}physics_apply(){this.gravityPill!==null&&(this.gravityPill.textContent=this.physics.gravity?"GRAVITY ON":"GRAVITY OFF"),this.scene.physics_set({...this.physics,reach:this.reach??void 0}),this.title_paint()}view_set(e){if(this.replay_end(),e==="shapes"&&vc(this.arrangement)&&(this.arrangement="galaxy",this.arrangementPill!==null&&(this.arrangementPill.textContent="GALAXY"),this.scene.arrangement_set("galaxy",this.positions_recalled("galaxy"),!1)),this.remember_now(),this.view=e,this.viewPill!==null&&(this.viewPill.textContent=e.toUpperCase()),this.shown&&this.inside===null&&this.cluster===null){const t=this.positions_recalled(this.arrangement);t!==void 0?(this.scene.positions_seed(t),this.paint(!0,"new")):this.paint(!0,"full")}this.settings_save()}inside_get(){return this.inside?.feedId??null}shown_get(){return this.shown}dispose(){this.disposed=!0,window.removeEventListener("keydown",this.escape_listen),this.repaintTimer!==null&&window.clearTimeout(this.repaintTimer),this.rememberTimer!==null&&window.clearTimeout(this.rememberTimer),this.remember_now(),this.scene.dispose()}space_show(e){this.asking=!1;const t=`${e.whole?"W":"L"}|${e.feeds.map(s=>`${s.id}:${s.jobs}:${s.status}`).join(",")}`;if(this.shown&&t===this.spaceKey){this.title_paint();return}this.spaceKey=t,this.wait.hide(),this.whole=e.whole,this.shown||(this.shown=!0,this.seed_recall()),this.landed.clear(),this.landed.take(e.feeds),this.whole&&(this.warming=""),this.empty.style.display="none",this.canvas.style.display="block",this.inside===null&&this.cluster===null&&this.entering===null&&!this.scene.moving()?this.paint(!this.scene.camera_touched()):this.title_paint()}landings_take(e){!this.landed.take(e)||this.repaintTimer!==null||this.inside!==null||this.cluster!==null||this.entering!==null||(this.repaintTimer=window.setTimeout(()=>{this.repaintTimer=null,!(this.disposed||this.entering!==null||this.inside!==null||this.cluster!==null||this.scene.moving())&&this.paint(!this.scene.camera_touched())},YD))}paint(e=!0,t="new"){if(this.sessionWait_holds()){this.title_paint();return}const s=this.view==="shapes"?lM(this.landed.all(),this.scale):this.arrangement==="constellations"?eu(this.landed.all(),this.scale):this.arrangement==="data"?this.dataGraph_paint():this.arrangement==="accretion"?ih(this.landed.all(),this.scale):va(this.landed.all(),this.scale),i=this.arrangement==="constellations"?this.lit:null,r=i===null?s:{nodes:s.nodes.map(o=>o.attrs?.kind==="star"||o.attrs?.plugin===i?o:{...o,dim:!0})},a=l0(r.nodes.length);a!==this.reach&&(this.reach=a,this.scene.physics_set({reach:a},!1)),this.scene.graph_set(r,{wave:!1,fit:e,settle:t}),this.title_paint(),this.remember_later()}descend(e,t){this.replay_end();const s=this.landed.get(e),i=this.handlers.feed_dag;if(s===void 0||i===void 0||this.scene.moving()||this.inside!==null)return;this.facts_clear();const r=aM(e,s);this.entering=e,this.title_paint();const a=Date.now(),o=t!==void 0?{toward:t,distance:14,durationMs:dr}:{fit:r,durationMs:dr};this.scene.descent(o,async()=>{const l=await i(e);if(this.disposed)return null;if(this.entering=null,l===null)return this.title_paint(),this.handlers.note?.(`universe: feed ${e}: the session gave no graph for it (feed diagram feed_${e} refused or answered nothing after ${Math.round((Date.now()-a)/1e3)}s)`),null;const c=ED(l);for(const p of c.nodes)p.solid=!0;const d=`feed:${e}:`,u=this.view==="feeds"?AD(this.landed.all(),e,c,this.scale,this.arrangement==="constellations",this.arrangement==="data"?rh(this.landed.all(),this.scale).graph:this.arrangement==="accretion"?ih(this.landed.all(),this.scale):void 0):{nodes:[...vp(this.landed.all(),ns(s),this.scale).graph.nodes.filter(p=>!p.id.startsWith(d)).map(p=>({...p,dim:!0})),...c.nodes]},h=new Set(c.nodes.map(p=>p.id));return{graph:u,unfolding:[...h],from:[r,yp(ns(s),this.landed)],physics:{reach:jc,gravity:!1},frame:[...h],durationMs:dr,bulk:1,margin:.95,drawn:()=>{this.inside={feedId:e,title:l.feedName,entered:c,ids:h},this.pane?.classList.add("universe-inside"),Hd(this.pane,this.scene,this.inside!==null),this.title_paint()}}},()=>this.landed_note())}ascend(){if(!this.scene.moving()){if(this.framedAt=null,this.inside!==null){if(this.inside=null,this.facts_clear(),this.pane?.classList.remove("universe-inside"),Hd(this.pane,this.scene,this.inside!==null),this.cluster!==null){this.cluster_show(this.cluster.shape);return}}else{if(this.cluster===null)return;this.cluster=null,this.pane?.classList.remove("universe-cluster")}this.paint(!1),this.scene.frame([],JD)}}cluster_enter(e){this.replay_end(),!(this.scene.moving()||this.inside!==null)&&this.cluster_show(e)}cluster_show(e){if(this.view==="feeds"){const r=TD(e,this.landed);if(r.length===0)return;this.cluster={shape:e,ids:r},this.pane?.classList.add("universe-cluster"),this.scene.relight(ID(this.landed.all(),e,this.scale),r,dr,()=>this.landed_note(),()=>this.title_paint());return}const{graph:t,memberIds:s}=vp(this.landed.all(),e,this.scale);if(s.length===0)return;this.cluster={shape:e,ids:s},this.pane?.classList.add("universe-cluster");const i=new Set(s);this.scene.unfold({graph:t,unfolding:t.nodes.filter(r=>i.has(r.id)||r.ghost===!0).map(r=>r.id),from:[yp(e,this.landed)],physics:{reach:jc,gravity:!1},frame:s,durationMs:dr,drawn:()=>this.title_paint()},()=>this.landed_note())}landed_note(){this.framedAt=this.scene.camera_distance()}pinch_leave(){this.inside===null&&this.cluster===null||this.scene.moving()||this.scene.holding_get()||this.framedAt===null||this.scene.camera_distance()<=this.framedAt*eT||this.ascend()}node_dive(e){const t=this.inside?.entered.payloads.get(e.id),s=this.handlers.node_dive;t===void 0||s===void 0||this.scene.moving()||this.scene.flight_into(e.id,()=>s(t.vfsPath))}flight_back(e){this.scene.flight_back(e)}node_flyTo(e){if(this.inside===null)return!1;for(const[t,s]of this.inside.entered.payloads){if(s.instanceId!==e)continue;const i=this.handlers.node_dive;return i===void 0?!1:(this.scene.flight_into(t,()=>i(s.vfsPath)),!0)}return!1}node_select(e){if(this.scene.moving())return;if(this.inside===null){const s=kc(e.id);if(s!==null){this.plugin_light(this.lit===s?null:s);return}const i=Fc(e.id);if(i!==null){this.litHub=this.litHub===i?null:i,this.paint(!1,"hold");return}const r=e.id.match(/^feed:(\d+):\d+$/),a=Om(e.id);r!==null?this.descend(Number(r[1]),e.id):a!==null?this.cluster_enter(a):e.id.startsWith("shape:")&&this.cluster_enter(e.id.slice(6));return}const t=this.inside.entered.payloads.get(e.id);t!==void 0&&this.facts_show(e,t)}facts_show(e,t){if(this.facts===null)return;this.facts.replaceChildren();const s=t.tally,i=[["PLUGIN",t.pluginName],[s?"REP. INSTANCE":"INSTANCE",String(t.instanceId)],["STATUS",t.status],...s?[["COUNT",`×${s.count} — ${s.done} done, ${s.error} err, ${s.running} live`]]:[],["DATA",t.vfsPath]];for(const[l,c]of i){const d=document.createElement("div");d.className="telemetry-row";const u=document.createElement("span");u.className="telemetry-label",u.textContent=l;const h=document.createElement("span");h.className="telemetry-value",h.textContent=c,d.append(u,h),this.facts.append(d)}const r=document.createElement("div");r.className="universe-node-verbs";const a=document.createElement("button");a.className="pacs-capsule universe-node-enter",a.textContent="ENTER NODE",a.title="fly into the node: its data, browsable inside (Esc flies out)",a.addEventListener("click",()=>{this.handlers.node_dive!==void 0?this.node_dive(e):this.handlers.node_enter?.(t.vfsPath)});const o=document.createElement("button");o.className="pacs-capsule universe-node-process",o.textContent="PROCESS",o.title="a catalogue bound to this node's data",o.addEventListener("click",()=>this.handlers.node_process?.({vfsPath:t.vfsPath,instanceId:t.instanceId,label:e.label})),r.append(a,o),this.facts.append(r),this.facts.hidden=!1}facts_clear(){this.facts!==null&&(this.facts.replaceChildren(),this.facts.hidden=!0)}state_stand(e,t){this.state!==null&&this.noteTimer===null&&Yt(this.state,e,t)}bar_note(e){this.state!==null&&(this.noteTimer!==null&&clearTimeout(this.noteTimer),this.noteTimer=null,Yt(this.state,"note",e),this.noteTimer=setTimeout(()=>{this.noteTimer=null,gr(this.state,"note"),this.title_paint()},HD))}title_paint(){if(this.entering!==null&&this.inside===null){const t=this.landed.get(this.entering);this.title.textContent=`UNIVERSE — ENTERING FEED ${this.entering}${t!==void 0&&t.title.length>0?` · ${t.title}`:""} …`,this.state_stand("wait","ASKING");return}if(this.inside!==null){const t=this.inside.entered.nodes.reduce((s,i)=>s+(i.count??1),0);this.title.textContent=`UNIVERSE — INSIDE FEED ${this.inside.feedId} · ${this.inside.title} · ${t.toLocaleString("en-US")} JOBS`,this.state_stand("live","INSIDE");return}if(this.cluster!==null){const t=this.landed.all().filter(s=>ns(s)===this.cluster?.shape).length;this.title.textContent=`UNIVERSE — SHAPE ${oM(this.cluster.shape)} · ${t} FEED${t===1?"":"S"}`,this.state_stand("live","CLUSTER");return}if(this.asking&&!this.shown){this.title.textContent="UNIVERSE — ASKING THE SESSION …",this.state_stand("wait","ASKING");return}const e=`${this.landed.size()} FEEDS · ${this.landed.shapes()} SHAPES`;this.title.textContent=this.whole?`UNIVERSE — ${e}`:`UNIVERSE — ${e}${this.warming.length>0?` · ${this.warming}`:" · INDEX WARMING"}`,this.state_stand(this.whole?"settled":"wait",this.whole?"WHOLE":"LANDING"),this.scene.replay_state()!==null&&this.replay_paint()}replay_start(e){if(this.inside!==null||this.cluster!==null)return"universe replay: climb out first (universe back)";if(this.view!=="feeds")return"universe replay: the FEEDS view only (universe view feeds)";if(this.density!=="shape")return"universe replay: SHAPE density only (universe density shape)";if(this.drawMode!=="stars")return"universe replay: it draws stars (universe draw stars)";const t=new Map;for(const o of this.landed.all()){const l=Date.parse(o.createdAt??"");Number.isFinite(l)&&t.set(o.id,l)}if(t.size===0)return"universe replay: the session does not say when its feeds were made (a daemon from before the replay: restart it)";const s=new Map;for(const o of Object.keys(this.scene.positions_get())){const l=o.match(/^feed:(\d+):/),c=l===null?void 0:t.get(Number(l[1]));c!==void 0&&s.set(o,c)}this.facts_clear(),this.replayDay="",this.scene.replay_begin(s,e),this.replay_paint();const i=this.scene.replay_state(),r=new Date(i?.span[0]??0).toISOString().slice(0,10),a=new Date(i?.span[1]??0).toISOString().slice(0,10);return`replaying ${t.size} feeds, ${r} to ${a}, at ×${e} (universe replay pause | stop | at <date>; Esc stops)`}plugin_light(e){this.lit=e,e===null?this.facts_clear():this.pluginFacts_show(e),this.shown&&this.inside===null&&this.cluster===null&&this.paint(!1,"hold")}plugin_frame(e){this.lit!==e&&this.plugin_light(e);const t=[];for(const s of this.landed.all())s.groups.forEach((i,r)=>{i.plugin===e&&t.push(`feed:${s.id}:${r}`)});t.length===0||this.scene.moving()||this.scene.frame(t,dr,void 0,.9)}pluginFacts_show(e){if(this.facts===null)return;this.facts.replaceChildren();const t=zc(`plugin:${e}`,this.landed)??e,[,s="",i=""]=t.split(" · ");for(const[o,l]of[["PLUGIN",e],["FEEDS",s.replace(/ feeds?$/,"")],["ERRORED",i.replace(/ errored$/,"")]]){const c=document.createElement("div");c.className="telemetry-row";const d=document.createElement("span");d.className="telemetry-label",d.textContent=o;const u=document.createElement("span");u.className="telemetry-value",u.textContent=l,c.append(d,u),this.facts.append(c)}const r=document.createElement("div");r.className="universe-node-verbs";const a=document.createElement("button");a.className="pacs-capsule universe-plugin-open",a.textContent="OPEN IN /BIN",a.title="the plugin in the files browser: its one-node graph, its parameters",a.addEventListener("click",()=>this.handlers.plugin_open?.(e)),r.append(a),this.facts.append(r),this.facts.hidden=!1}dataGraph_paint(){const{graph:e,hubs:t}=rh(this.landed.all(),this.scale);this.dataHubs=t;const s=this.litHub;if(s===null)return e;const i=ym(this.landed.all().map(a=>a.data?.seriesDescription).filter(a=>a!==void 0)),r=new Set(this.landed.all().filter(a=>vm(a,i).some(o=>o.key===s)).map(a=>a.id));return{nodes:e.nodes.map(a=>{if(Fc(a.id)!==null)return a;const o=a.id.match(/^feed:(\d+):/);return o!==null&&r.has(Number(o[1]))?a:{...a,dim:!0}})}}replay_end(){this.scene.replay_state()!==null&&(this.scene.replay_stop(),this.replayDay="",this.title_paint(),this.replay_paint())}replay_paint(){const e=this.scene.replay_state();if(this.replayPill!==null){const s=e!==null&&!e.playing&&e.at>=e.span[1];this.replayPill.textContent=e===null?"REPLAY":e.playing?"PLAYING":s?"REPLAYED":"PAUSED",this.replayPill.classList.toggle("rail-off",e===null)}if(e===null||this.state===null)return;const t=`${e.playing?"REPLAY":"PAUSED"} ${new Date(e.at).toISOString().slice(0,10)}`;t!==this.replayDay&&(this.replayDay=t,this.state_stand("live",t))}identity_note(e,t){const s=OD(e,t);if(s===this.storeKey)return;this.storeKey=s;const i=this.settings_recall();if(this.shown){const r=this.seed_recall();(i||r)&&this.inside===null&&this.cluster===null&&this.paint(!1)}}positionsKey_of(e){if(this.storeKey===null)return null;const t=e==="galaxy"?this.storeKey:`${this.storeKey}.${e}`;return this.view==="shapes"?`${t}.shapes`:t}positions_recalled(e){const t=this.positionsKey_of(e);if(!(this.store===void 0||t===null))try{const s=wp(this.store.getItem(t));return Object.keys(s).length>0?s:void 0}catch{return}}seed_recall(){const e=this.positionsKey_of(this.arrangement);if(this.store===void 0||e===null)return!1;const t=wp(this.store.getItem(e));return Object.keys(t).length===0?!1:(this.scene.positions_seed(t),!0)}remember_later(){this.rememberTimer===null&&(this.rememberTimer=window.setTimeout(()=>{this.rememberTimer=null,this.remember_now()},QD))}remember_now(){if(!(this.store===void 0||this.storeKey===null||!this.shown)&&this.positions_matchView(this.scene.positions_get())){try{const e=this.positionsKey_of(this.arrangement);e!==null&&this.store.setItem(e,JSON.stringify(this.scene.positions_get()))}catch{}this.sessionLayout_put()}}positions_matchView(e){const t=Object.keys(e),s=t.some(r=>r.startsWith("fold:")),i=t.some(r=>r.startsWith("feed:"));return this.view==="shapes"?s&&!i:!s}sessionLayoutName_of(e){return`${e}${this.view==="shapes"?"-shapes":""}${this.scale==="feeds"?"-alike":""}`}sessionLayout_take(e,t,s=null){if((t!==null||!this.sessionPlaces.has(e))&&this.sessionPlaces.set(e,t===null?null:Object.keys(t).length),t===null&&s!==null){this.sessionWait_hold(e,s);return}const i=this.sessionWait?.name===e;if(i&&this.sessionWait_end(),t===null||this.store===void 0){i&&this.shown&&this.paint(!0,"full");return}const r=["galaxy","spokes","clumps","constellations","data","accretion"].find(o=>this.sessionLayoutName_of(o)===e);if(r===void 0||this.positions_recalled(r)!==void 0)return;const a=this.positionsKey_of(r);if(a!==null){try{this.store.setItem(a,JSON.stringify(t))}catch{return}this.putSignatures.set(e,Sp(t)),r===this.arrangement&&this.shown&&this.inside===null&&this.cluster===null&&this.entering===null&&(this.scene.positions_seed(t),this.paint(i,"new"))}}sessionWait_hold(e,t){if(e!==this.sessionLayoutName_of(this.arrangement)||this.positions_recalled(this.arrangement)!==void 0)return;const s=this.sessionWait?.name===e?this.sessionWait.until:Date.now()+XD;if(this.sessionWait?.timer!==void 0&&this.sessionWait?.timer!==null&&window.clearTimeout(this.sessionWait.timer),Date.now()>=s){this.sessionWait_end(),this.shown&&this.paint(!0,"full");return}this.wait.show(`LAYING OUT ${t.nodes.toLocaleString("en-US")} SPHERES · THE SESSION`,t.fraction);const i=window.setTimeout(()=>{this.handlers.command_run(`proc layout ${e}`)},KD);this.sessionWait={name:e,until:s,timer:i}}sessionWait_end(){this.sessionWait?.timer!==void 0&&this.sessionWait?.timer!==null&&window.clearTimeout(this.sessionWait.timer),this.sessionWait=null,this.wait.hide()}sessionWait_holds(){return this.sessionWait!==null&&this.sessionWait.name===this.sessionLayoutName_of(this.arrangement)&&Date.now()<this.sessionWait.until&&this.inside===null&&this.cluster===null}sessionLayout_put(){if(this.inside!==null||this.cluster!==null||this.scene.replay_state()!==null||!this.whole||!qD(this.physics))return;const e={};for(const[i,r]of Object.entries(this.scene.positions_get()))r.every(a=>Number.isFinite(a))&&(e[i]=[Math.round(r[0]*100)/100,Math.round(r[1]*100)/100,Math.round(r[2]*100)/100]);if(Object.keys(e).length===0)return;const t=this.sessionLayoutName_of(this.arrangement),s=Sp(e);this.putSignatures.get(t)!==s&&(this.putSignatures.set(t,s),this.sessionPlaces.set(t,Object.keys(e).length),this.handlers.command_run(`proc layout put ${t} '${JSON.stringify(e).replace(/'/g,"'\\''")}'`))}}const cM={listing:"files.row",rules:[{name:"image",label:()=>"IMAGE",offered:n=>n.kind==="seriesFolder"},{name:"gather",label:()=>"GATHER",offered:n=>n.kind!=="catalogue"&&n.projection!==!0},{name:"process",label:()=>"PROCESS",offered:n=>(n.kind==="directory"||n.kind==="seriesFolder")&&(n.feed===null||(n.node??null)!==null)},{name:"run",label:()=>"RUN",offered:n=>n.kind==="catalogue"&&n.bound===!0},{name:"edit",label:()=>"EDIT",offered:n=>n.kind==="file"&&n.editable===!0},{name:"download",label:()=>"DOWNLOAD",offered:n=>n.kind==="file"},{name:"move",label:()=>"MOVE",offered:n=>n.kind!=="catalogue"&&n.projection!==!0},{name:"copy",label:()=>"COPY",offered:n=>n.kind!=="catalogue"&&n.projection!==!0},{name:"delete",label:()=>"DELETE",offered:n=>n.kind!=="catalogue"&&n.projection!==!0},{name:"share",label:n=>`SHARE FEED ${n.feed??""}`,offered:n=>n.kind!=="catalogue"&&n.feed!==null&&n.projection!==!0}],states:[{name:"a plain file outside a feed",facts:{kind:"file",feed:null}},{name:"a file inside a feed",facts:{kind:"file",feed:12}},{name:"a directory",facts:{kind:"directory",feed:null}},{name:"a directory inside a feed that is not a node",facts:{kind:"directory",feed:12,node:null}},{name:"a node's data inside a feed",facts:{kind:"directory",feed:12,node:456}},{name:"a DICOM series folder",facts:{kind:"seriesFolder",feed:null}},{name:"a catalogue entry",facts:{kind:"catalogue",feed:null}},{name:"a catalogue entry in a bound catalogue",facts:{kind:"catalogue",feed:null,bound:!0}},{name:"a node's data seen through /proc",facts:{kind:"directory",feed:12,node:456,projection:!0}},{name:"a file seen through /proc",facts:{kind:"file",feed:12,projection:!0}},{name:"a text file",facts:{kind:"file",feed:null,editable:!0}},{name:"a feed's note seen through /proc",facts:{kind:"file",feed:12,projection:!0,editable:!0}}]},dM={listing:"files.selection",rules:[{name:"delete",label:n=>`DELETE ${n.count}`,offered:()=>!0},{name:"move",label:n=>`MOVE ${n.count}`,offered:()=>!0},{name:"copy",label:n=>`COPY ${n.count}`,offered:()=>!0},{name:"share",label:n=>n.feeds.length===1?`SHARE FEED ${n.feeds[0]}`:`SHARE ${n.feeds.length} FEEDS`,offered:n=>n.feeds.length>0}],states:[{name:"a selection outside any feed",facts:{count:3,feeds:[]}},{name:"a selection in one feed",facts:{count:2,feeds:[12]}},{name:"a selection spanning feeds",facts:{count:5,feeds:[12,13]}}]},uM={listing:"runs.row",rules:[{name:"note",label:()=>"NOTE",offered:()=>!0},{name:"tag",label:()=>"TAG",offered:()=>!0},{name:"rename",label:()=>"RENAME",offered:()=>!0},{name:"share",label:()=>"SHARE",offered:()=>!0},{name:"delete",label:()=>"DELETE",offered:()=>!0}],states:[{name:"any feed",facts:{feedId:12}}]},ua={listing:"pacs.study",rules:[{name:"pullStudy",label:()=>"PULL STUDY",offered:n=>n.addressable},{name:"gather",label:()=>"GATHER",offered:n=>n.addressable},{name:"process",label:()=>"PROCESS",offered:n=>n.allInCube}],states:[{name:"a study with a path",facts:{addressable:!0,allInCube:!1}},{name:"a study with none",facts:{addressable:!1,allInCube:!1}},{name:"a study wholly home",facts:{addressable:!0,allInCube:!0,anyInCube:!0}},{name:"a study partly home",facts:{addressable:!0,allInCube:!1,anyInCube:!0}}]},mi={listing:"pacs.series",rules:[{name:"gather",label:()=>"GATHER",offered:n=>n.addressable||n.inCube},{name:"image",label:()=>"IMAGE",offered:n=>n.inCube&&n.folderKnown},{name:"dir",label:()=>"DIR",offered:n=>n.inCube&&n.folderKnown},{name:"process",label:()=>"PROCESS",offered:n=>n.inCube&&n.folderKnown},{name:"pull",label:()=>"PULL",offered:n=>!n.inCube}],states:[{name:"not yet retrieved",facts:{inCube:!1,folderKnown:!1,addressable:!0}},{name:"not retrieved and unaddressable",facts:{inCube:!1,folderKnown:!1,addressable:!1}},{name:"home, folder not yet named",facts:{inCube:!0,folderKnown:!1,addressable:!0}},{name:"home, folder named",facts:{inCube:!0,folderKnown:!0,addressable:!0}}]},hM={listing:"gather.series",rules:[{name:"remove",label:()=>"REMOVE",offered:()=>!0},{name:"pull",label:()=>"PULL",offered:n=>n.pullable===!0},{name:"image",label:()=>"IMAGE",offered:n=>n.folderKnown&&n.imagery!==!1},{name:"process",label:()=>"PROCESS",offered:()=>!0}],states:[{name:"folder named",facts:{folderKnown:!0}},{name:"a place that is not imagery",facts:{folderKnown:!0,imagery:!1}},{name:"folder not yet named",facts:{folderKnown:!1}},{name:"not retrieved yet",facts:{folderKnown:!1,pullable:!0}}]},fM={listing:"gather.cohort",rules:[{name:"save",label:()=>"SAVE",offered:n=>n.count>0},{name:"export",label:()=>"EXPORT CSV",offered:n=>n.count>0},{name:"feed",label:()=>"CREATE FEED",offered:n=>n.count>0&&n.feed===null},{name:"process",label:()=>"PROCESS",offered:n=>n.count>0},{name:"dismiss",label:()=>"DISMISS",offered:()=>!0}],states:[{name:"holding series",facts:{count:2,feed:null}},{name:"holding series, rooted in a feed",facts:{count:2,feed:4501}},{name:"emptied",facts:{count:0,feed:null}}]};function ci(n){return{listing:n.listing,visit(e){return e(n)}}}ci(cM),ci(dM),ci(uM),ci(ua),ci(mi),ci(fM),ci(hM);function Zs(n,e){const t=n.rules.find(s=>s.name===e);if(t===void 0)throw new Error(`${n.listing} declares no verb '${e}'`);return t}const ur={fold:"5.2em",patient:"13em",mrn:"7.5em"};function sT(n){return{inCube:n.pulled===!0,folderKnown:n.folderPath!==void 0,addressable:n.vfsPath!==void 0}}function Ep(n){if(n.series.length===0)return null;const e=[];for(const s of n.series){if(s.pulled!==!0||s.folderPath===void 0)return null;e.push(s.folderPath.replace(/\/[^/]+\/?$/,""))}const t=e[0]??"";return e.every(s=>s===t)&&t!==""?t:null}function mn(n){const e=sT(n),t=s=>Zs(mi,s).offered(e);return{gather:t("gather"),image:t("image"),dir:t("dir"),pull:t("pull")}}function nT(n,e,t,s){let i=!1;for(const r of n.studies)for(const a of r.series)a.seriesUID===e&&(s!==void 0&&a.folderPath!==s&&(a.folderPath=s,i=!0),a.pulled!==!0&&(a.pulled=!0,t!==void 0&&t>0&&(a.pulledFiles=t),i=!0));return i}const Ap=[{id:"pacs-f-name",term:"PatientName"},{id:"pacs-f-mrn",term:"PatientID"},{id:"pacs-f-date",term:"StudyDate"},{id:"pacs-f-accession",term:"AccessionNumber"},{id:"pacs-f-modality",term:"Modality"}],mo={running:"RETRIEVING",done:"✓ PULLED",error:"✗ ERROR",unconfirmed:"? UNCONFIRMED",stalled:"STALLED",queued:"QUEUED",idle:"NOT RETRIEVED"},iT="--fresh",Dp="--anon",rT=/\s*--anon\b/,aT=["pacs-f-name","pacs-f-mrn","pacs-f-accession","pacs-f-date"],Tp=/\s*--fresh\b/;function Ip(n){const e=Date.parse(n);if(Number.isNaN(e))return null;const t=Math.max(0,Math.round((Date.now()-e)/1e3)),s=[{limit:60,size:1,name:"SECOND"},{limit:3600,size:60,name:"MINUTE"},{limit:86400,size:3600,name:"HOUR"},{limit:2592e3,size:86400,name:"DAY"},{limit:31536e3,size:2592e3,name:"MONTH"},{limit:1/0,size:31536e3,name:"YEAR"}];for(const i of s){if(t>=i.limit)continue;const r=Math.max(1,Math.floor(t/i.size));return`${r} ${i.name}${r===1?"":"S"} AGO`}return null}const il=new Map;function pM(n,e){const t=il.get(n)??new Set;t.add(e),il.set(n,t)}const mM=new Map;function gM(n,e){n.replaceChildren(),n.dataset.state=e.status,e.reason!==void 0?n.title=e.reason:n.removeAttribute("title");const t=document.createElement("span");if(t.className="pacs-badge-note",e.status==="idle"){t.textContent=mo.idle,n.append(Vo({done:0,total:0}),t);return}if(e.status==="done"){const o=document.createElement("span");o.className="pacs-bar-full",t.textContent=e.total!==void 0&&e.total>0?`✓ ${e.total} IN CUBE`:"✓ IN CUBE",n.append(o,t);return}if(e.status!=="running"&&e.status!=="queued"){n.textContent=mo[e.status]??e.status.toUpperCase();return}const s=e.total!==void 0?` ${e.current??0}/${e.total}`:"",i=oT(e),r=document.createElement("span");r.className=i===null?"pacs-bar pacs-bar-pacing":"pacs-bar";const a=document.createElement("span");a.className="pacs-bar-fill",i!==null&&(a.style.width=`${Math.round(i*100)}%`),r.appendChild(a),t.textContent=e.status==="queued"?mo.queued:`${mo.running}${s}`,n.append(r,t)}function oT(n){return n.status==="queued"||n.total===void 0||n.total===0||(n.current??0)===0?null:Math.min(1,(n.current??0)/n.total)}function lT(n,e){return n.pulled===!0&&e.status!=="done"&&e.status!=="running"&&e.status!=="queued"}function cT(n,e){const t=il.get(n);if(t!==void 0){for(const s of[...t]){if(!s.isConnected){t.delete(s);continue}e(s)}t.size===0&&il.delete(n)}}function dT(n){const e=document.createElement("span");if(e.className="pacs-badge",n.pulled===!0){const r=document.createElement("span");r.className="pacs-bar-full";const a=document.createElement("span");return a.className="pacs-badge-note",a.textContent=n.pulledFiles!==void 0?`✓ ${n.pulledFiles} IN CUBE`:"✓ IN CUBE",e.append(r,a),e.dataset.state="done",e}const t=document.createElement("span");t.className="pacs-bar";const s=document.createElement("span");s.className="pacs-badge-note",s.textContent="NOT RETRIEVED",e.append(t,s),e.dataset.state="idle",pM(n.seriesUID,e);const i=mM.get(n.seriesUID);return i!==void 0&&gM(e,i),e}function MM(n,e){return[{key:"series",label:"SERIES",className:"pacs-series-desc",width:"35.5em",cell:t=>n(t).description??""},{key:"state",label:"STATE",className:"pacs-badge",width:"1fr",cell:t=>e(n(t)),compare:t=>n(t).pulled===!0?"done":"idle"},{key:"modality",label:"MODALITY",className:"pacs-series-modality",width:"4em",cell:t=>n(t).modality},{key:"files",label:"FILES",className:"pacs-series-files",width:"6em",cell:t=>{const s=n(t).fileCount;return s!==void 0?`${s} FILES`:""},compare:t=>n(t).fileCount??-1}]}class uT{root;command;results;handlers;litFolders=new Map;badgeStates=new Map;seriesProgress=new Map;studyTracks=new Map;traits;actions;studyTraits;studyActions;patientTraits;listing;patientTracks=new Map;provenance;run;model=null;anon=!1;revealed=!1;anonPill;revealPill;replayed=!1;serverCell;serverStrip;servers=[];chosen=new Set;constructor(e,t){this.root=e,this.handlers=t,this.command=go(e,"#pacs-command"),this.results=Us(e,"#pacs-results"),this.traits=this.traits_declare(),this.actions=this.actions_declare(),this.studyTraits=this.studyTraits_declare(),this.studyActions=this.studyActions_declare(),this.patientTraits=this.patientTraits_declare(),this.listing=new Si({mount:this.results,traits:this.patientTraits,key:s=>s.key,chrome:{root:e,prefix:"pacs"},activatable:s=>s.studies.length>0,address:s=>s.studies.length>0?H_(s.patient):void 0,control:"fold",row:{className:()=>"pacs-patient-row",groupClassName:s=>s.patient.status==="unasked"?"pacs-patient pacs-patient-unasked":"pacs-patient",decorate:(s,i)=>{i.studies.length>0&&(s.title="unfold this patient's studies (the patient keeps its place)")}},child:Mr(s=>s.studies.map((i,r)=>({study:i,key:Gp(i,r)})),{traits:this.studyTraits,key:s=>s.key,address:s=>s.study.vfsPath,control:"fold",actions:{of:()=>this.studyActions},row:{className:()=>"pacs-study-row",groupClassName:()=>"pacs-study",decorate:s=>{s.title="unfold this study's series (the study keeps its place)"}},child:Mr(s=>s.study.series.map(i=>({study:s.study,studyKey:s.key,series:i})),{traits:this.traits,key:s=>s.series.seriesUID,address:s=>s.series.vfsPath,actions:{of:()=>this.actions},row:{className:()=>"pacs-series",decorate:(s,i)=>{s.dataset.seriesuid=i.series.seriesUID}}})}),state:s=>this.stateLine_compose(s),empty:()=>Bp("NO STUDIES FOUND")}),e.style.setProperty("--roster-cols",this.listing.template_get(1)),this.listing.rows_set([],{field:"pacs"});for(const{id:s}of Ap){const i=go(e,`#${s}`);i.addEventListener("input",()=>this.command_regenerate()),i.addEventListener("keydown",r=>{r.key==="Enter"&&(r.preventDefault(),this.query_run())})}this.serverCell=Us(e,"#pacs-f-server"),this.serverStrip=Us(e,"#pacs-server-strip"),this.serverCell.addEventListener("click",()=>this.serverStrip_toggle()),this.serverCell_sync(),this.provenance=Us(e,"#pacs-provenance"),this.anonPill=Us(e,"#pacs-anon"),this.revealPill=Us(e,"#pacs-reveal"),this.anonPill.addEventListener("click",()=>this.anon_set(!this.anon)),this.revealPill.addEventListener("click",()=>this.reveal_set(!this.revealed)),this.run=Us(e,"#pacs-run"),this.run.addEventListener("click",()=>this.query_run(this.replayed)),this.command.addEventListener("keydown",s=>{s.key==="Enter"&&this.query_run()}),Us(e,"#pacs-export").addEventListener("click",()=>this.answer_export()),Us(e,"#pacs-gather-shown").addEventListener("click",()=>this.shown_gather()),Us(e,"#pacs-pull-shown").addEventListener("click",()=>this.shown_pull())}patientTraits_declare(){return[{key:"fold",label:"",className:"pacs-fold",capped:!1,width:ur.fold,cell:e=>{const t=document.createElement("span");return t.className=e.studies.length===0?"pacs-fold pacs-fold-none":"pacs-fold",t}},{key:"patient",label:"PATIENT",className:"pacs-patient-name",width:ur.patient,cell:e=>e.patient.patientName||"(unknown)"},{key:"mrn",label:"MRN",className:"pacs-patient-mrn",width:ur.mrn,cell:e=>e.patient.patientId||"—"},{key:"answered",label:"ANSWERED",className:"pacs-patient-answered",width:"12em",cell:e=>{const t=document.createElement("span");if(t.className=e.patient.status==="unasked"?"pacs-patient-answered pacs-unasked":"pacs-patient-answered",e.patient.status==="unasked")return t.textContent="UNASKED",e.patient.error!==void 0&&(t.title=e.patient.error),t;const s=e.patient.provenance?.answeredAt;return t.textContent=s===void 0?"—":Ip(s)??"—",s!==void 0&&(t.title=s),t},compare:e=>{const t=e.patient.provenance?.answeredAt;if(t===void 0)return Number.MAX_SAFE_INTEGER;const s=Date.parse(t);return Number.isNaN(s)?Number.MAX_SAFE_INTEGER:s}},{key:"progress",label:"PROGRESS",className:"pacs-patient-progress",width:"1fr",cell:e=>{const t=document.createElement("span");return t.className="pacs-patient-progress",this.patientTracks.set(e.key,{mount:t,uids:e.studies.flatMap(s=>s.series.map(i=>i.seriesUID))}),this.patientTrack_paint(e.key),t},compare:e=>{const t=this.patientProgress_of(e);return t.total===0?-1:t.done/t.total}},{key:"studies",label:"STUDIES",className:"pacs-patient-count",width:"6em",cell:e=>e.patient.status==="unasked"?"—":String(e.patient.studyCount),compare:e=>e.patient.status==="unasked"?-1:e.patient.studyCount},{key:"series",label:"SERIES",className:"pacs-patient-count",width:"5em",cell:e=>e.patient.status==="unasked"?"—":String(e.patient.seriesCount),compare:e=>e.patient.status==="unasked"?-1:e.patient.seriesCount},{key:"server",label:"SERVER",className:"pacs-patient-server",width:"9em",cell:e=>e.patient.server??this.model?.pacsName??"—"}]}patientProgress_of(e){return Ta(e.studies.flatMap(t=>t.series.map(s=>this.seriesProgress.get(s.seriesUID)??{done:0,total:0})))}patientTrack_paint(e){const t=this.patientTracks.get(e);if(t===void 0)return;const s=t.uids.map(i=>this.seriesProgress.get(i)??{done:0,total:0});t.mount.replaceChildren(Vo(Ta(s)))}patientRows_build(e){const t=(r,a)=>e.studies.filter(o=>o.patientId===r&&(a===void 0||o.server===void 0||o.server===a));if(e.patients!==void 0&&e.patients.length>0)return e.patients.map((r,a)=>({patient:r,key:`${r.patientId}::${r.server??""}::${a}`,studies:t(r.patientId,r.server)}));const s=[],i=new Map;for(const r of e.studies){const a=r.patientId;i.has(a)||(i.set(a,[]),s.push(a)),i.get(a).push(r)}return s.map((r,a)=>{const o=i.get(r)??[];return{key:`${r}::${a}`,studies:o,patient:{patientId:r,...o[0]?.patientName?{patientName:o[0].patientName}:{},status:"found",studyCount:o.length,seriesCount:o.reduce((l,c)=>l+c.series.length,0),...e.provenance===void 0?{}:{provenance:e.provenance}}}})}studyTraits_declare(){return[{key:"fold",label:"",className:"pacs-fold",capped:!1,width:ur.fold,cell:()=>{const e=document.createElement("span");return e.className="pacs-fold",e}},{key:"patient",label:"PATIENT",className:"pacs-study-patient",width:ur.patient,cell:e=>e.study.patientName||"(unknown)"},{key:"mrn",label:"MRN",className:"pacs-study-mrn",width:ur.mrn,cell:e=>e.study.patientId||"—"},{key:"study",label:"STUDY",className:"pacs-study-desc",width:"12em",cell:e=>e.study.description||"(no description)"},{key:"progress",label:"PROGRESS",className:"pacs-study-progress",width:"1fr",cell:e=>{const t=document.createElement("span");return t.className="pacs-study-progress",this.studyTracks.set(e.key,{mount:t,uids:e.study.series.map(s=>s.seriesUID)}),this.studyTrack_paint(e.key),t},compare:e=>{const t=this.studyProgress_of(e);return t.total===0?-1:t.done/t.total}},{key:"date",label:"DATE",className:"pacs-study-date",width:"7.5em",cell:e=>e.study.date},{key:"accession",label:"ACCESSION",className:"pacs-study-accession",width:"9em",cell:e=>e.study.accession||"—"},{key:"modality",label:"MODALITY",className:"pacs-study-modalities",width:"6.5em",cell:e=>e.study.modalities},{key:"server",label:"SERVER",className:"pacs-study-server",width:"9em",cell:e=>e.study.server??this.model?.pacsName??"—"},{key:"series",label:"SERIES",className:"pacs-study-count",width:"6.5em",cell:e=>String(e.study.series.length),compare:e=>e.study.series.length}]}studyActions_declare(){return[{label:Zs(ua,"pullStudy").label({addressable:!0,allInCube:!1}),offered:e=>Zs(ua,"pullStudy").offered({addressable:e.study.vfsPath!==void 0,allInCube:!1}),run:e=>{const t=e.study.vfsPath;if(t!==void 0){this.handlers.command_run(`pull ${t}`);for(const s of e.study.series)s.vfsPath!==void 0&&s.pulled!==!0&&this.badgeState_set(s.seriesUID,{status:"queued"})}}},{label:Zs(ua,"gather").label({addressable:!0,allInCube:!1,anyInCube:!0}),offered:e=>e.study.series.some(t=>mn(t).gather),run:e=>{const t=e.study.series.filter(i=>mn(i).gather);for(const i of t)this.gather_note(e.study,i);const s=e.study.series.length-t.length;this.handlers.note(`gather: ${t.length} series gathered${s>0?`, ${s} not in CUBE (pull them first)`:""}`)}},{label:Zs(ua,"process").label({addressable:!0,allInCube:!0}),offered:e=>Ep(e.study)!==null,run:e=>{const t=Ep(e.study);t!==null&&this.handlers.process_open(t)}}]}studyProgress_of(e){return Ta(e.study.series.map(t=>this.seriesProgress.get(t.seriesUID)??{done:0,total:0}))}traits_declare(){return MM(e=>e.series,e=>this.badge_build(e))}actions_declare(){return[{label:Zs(mi,"gather").label({inCube:!0,folderKnown:!0,addressable:!0}),offered:e=>mn(e.series).gather,selected:e=>this.handlers.gathered_is(e.series.seriesUID),run:e=>this.gather_note(e.study,e.series)},{label:Zs(mi,"image").label({inCube:!0,folderKnown:!0,addressable:!0}),offered:e=>mn(e.series).image,selected:e=>e.series.folderPath!==void 0&&(this.litFolders.get(Rp(e.series.folderPath))?.viewer??!1),run:e=>{e.series.folderPath!==void 0&&this.handlers.image_open(e.series.folderPath)}},{label:Zs(mi,"dir").label({inCube:!0,folderKnown:!0,addressable:!0}),offered:e=>mn(e.series).dir,selected:e=>e.series.folderPath!==void 0&&(this.litFolders.get(Rp(e.series.folderPath))?.browser??!1),run:e=>{e.series.folderPath!==void 0&&this.handlers.dir_open(e.series.folderPath)}},{label:Zs(mi,"process").label({inCube:!0,folderKnown:!0,addressable:!0}),offered:e=>mn(e.series).image,run:e=>{e.series.folderPath!==void 0&&this.handlers.process_open(e.series.folderPath)}},{label:Zs(mi,"pull").label({inCube:!1,folderKnown:!1,addressable:!0}),offered:e=>mn(e.series).pull,disabled:e=>e.series.vfsPath===void 0,run:e=>{const t=e.series.vfsPath;t!==void 0&&(this.handlers.command_run(`pull ${t}`),this.badgeState_set(e.series.seriesUID,{status:"queued"}))}}]}state_name(e){return e.pulled===!0?"pulled":this.badgeStates.get(e.seriesUID)?.status??"idle"}command_regenerate(){const e=[];for(const{id:i,term:r}of Ap){const a=go(this.root,`#${i}`).value.trim();a.length>0&&e.push(`${r}:${a}`)}const t=this.chosen.size>1?` --pacsserver ${[...this.chosen].join(",")}`:"",s=this.anon?` ${Dp}`:"";this.command.value=e.length>0||t!==""?`pacs query ${e.join(",")}${t}${s}`:""}anon_set(e){e!==this.anon&&(this.anon=e,this.revealed=!1,this.anonPill.textContent=e?"ANON ON":"ANON OFF",this.anonPill.classList.toggle("pacs-capsule-off",!e),this.revealPill.hidden=!e,this.model=null,this.listing.rows_set([],{field:"pending"}),this.provenance_show(void 0),this.command.value=e?`${this.command.value.trim()} ${Dp}`.trim():this.command.value.replace(rT,"").trimEnd(),this.masking_apply())}reveal_set(e){this.revealed=e,this.revealPill.textContent=e?"HIDE":"REVEAL",this.revealPill.classList.toggle("pacs-capsule-off",!e),this.masking_apply()}masking_apply(){const e=this.anon&&!this.revealed;for(const t of aT)go(this.root,`#${t}`).type=e?"password":"text";this.command.type=e?"password":"text"}serverStrip_toggle(e){const t=e??this.serverStrip.hidden;this.serverStrip.hidden=!t,this.serverCell.classList.toggle("pacs-server-open",t),t&&this.servers.length===0&&this.servers_ask(),t&&this.serverStrip_paint()}query_get(){return this.model===null?null:`pacs query ${this.model.expression}`}serverStrip_isOpen(){return!this.serverStrip.hidden}serverStrip_close(){this.serverStrip_toggle(!1)}servers_ask(){this.handlers.command_run("pacs list")}servers_take(e){this.servers=e,this.serverStrip_paint(),this.serverCell_sync()}serverStrip_paint(){if(this.serverStrip.replaceChildren(),this.servers.length===0){this.serverStrip.appendChild(Bp("ASKING THE SESSION FOR REGISTERED SERVERS"));return}for(const e of this.servers){const t=document.createElement("button");t.className=this.chosen.has(e.identifier)?"pacs-server-segment pacs-server-chosen":"pacs-server-segment",t.dataset.server=e.identifier,t.textContent=e.identifier,e.active&&(t.title="the session is connected to this server"),t.addEventListener("click",()=>this.server_choose(e.identifier)),this.serverStrip.appendChild(t)}}server_choose(e){if(this.chosen.has(e)?this.chosen.delete(e):this.chosen.add(e),this.chosen.size===1){const t=[...this.chosen][0];this.handlers.command_show(`pacs connect ${t}`)}this.serverStrip_paint(),this.serverCell_sync(),this.command_regenerate()}serverCell_sync(){const e=[...this.chosen];if(e.length===0){const t=this.servers.find(s=>s.active);this.serverCell.textContent=t?.identifier??"—",this.serverCell.classList.remove("pacs-server-many");return}this.serverCell.textContent=e.length===1?e[0]:`${e[0]} +${e.length-1}`,this.serverCell.classList.toggle("pacs-server-many",e.length>1)}wrote_show(e){const t=this.root.querySelector("#pacs-wrote");t!==null&&(t.textContent=`WROTE ${e}`,t.title="open the folder this landed in",t.classList.add("pacs-wrote-opens"),t.onclick=()=>{const s=e.lastIndexOf("/");this.handlers.dir_open(s<=0?e:e.slice(0,s))},t.hidden=!1)}answer_export(){if(this.model===null)return;const e=this.command.value.trim(),t=e===""?`pacs query ${this.model.expression}`:e;this.handlers.command_show(`${t} --csv-to`)}query_run(e=!1){e&&!Tp.test(this.command.value)&&(this.command.value=`${this.command.value.trim()} ${iT}`);const t=this.command.value.trim();t.length!==0&&(this.model=null,this.listing.rows_set([],{field:"pending"}),this.listing.field_get()?.appendChild(this.waiting_build()),this.handlers.command_run(t))}provenance_show(e){if(this.replayed=e?.replayed===!0,this.run.textContent=this.replayed?"RE-QUERY":"QUERY",this.run.classList.toggle("pacs-capsule-requery",this.replayed),this.provenance.hidden=!this.replayed,!this.replayed){this.provenance.textContent="",this.command.value=this.command.value.replace(Tp,"").trimEnd();return}const t=e?.answeredAt??"",s=Ip(t),i=t.slice(0,10);this.provenance.textContent=s===null?`RESULTS ${i}`:`RESULTS ${i} · ${s}`,this.provenance.title=t}waiting_build(){const e=document.createElement("div");e.className="pacs-waiting";const t=document.createElement("span");t.className="pacs-bar pacs-bar-pacing";const s=document.createElement("span");s.className="pacs-bar-fill",t.appendChild(s);const i=document.createElement("span");return i.className="pacs-waiting-note",i.textContent="QUERYING THE PACS…",e.append(t,i),e}envelope_observe(e){const t=/✓ wrote (\S+)/.exec((e.rendered??"").replace(/\x1b\[[0-9;]*m/g,""));if(t!==null&&this.wrote_show(t[1]),e.model?.kind===$_){const i=j_.safeParse(e.model.data);i.success&&this.servers_take(i.data.servers);return}if(e.model?.kind!==V_)return;const s=U_.safeParse(e.model.data);s.success&&this.results_render(s.data)}progress_observe(e){if(e.operation!=="pull"||e.itemId===void 0)return;const t=e.status??"running",s={status:t};e.current!==void 0&&(s.current=e.current),e.total!==void 0&&(s.total=e.total),e.reason!==void 0&&(s.reason=e.reason),this.badgeState_set(e.itemId,s),t==="done"&&this.model!==null&&nT(this.model,e.itemId,e.current??e.total,e.path)&&this.results_repaint()}badgeState_set(e,t){this.badgeStates.set(e,t),mM.set(e,t),this.seriesProgress.set(e,fT(t,this.seriesProgress.get(e))),cT(e,s=>this.badge_paint(s,t));for(const[s,i]of this.studyTracks)i.uids.includes(e)&&this.studyTrack_paint(s);for(const[s,i]of this.patientTracks)i.uids.includes(e)&&this.patientTrack_paint(s)}badge_build(e){const t=document.createElement("span");if(t.className="pacs-badge",e.pulled===!0){const s=document.createElement("span");s.className="pacs-bar-full";const i=document.createElement("span");return i.className="pacs-badge-note",i.textContent=e.pulledFiles!==void 0?`✓ ${e.pulledFiles} IN CUBE`:"✓ IN CUBE",t.append(s,i),t.dataset.state="done",t}return pM(e.seriesUID,t),this.badge_paint(t,this.badgeStates.get(e.seriesUID)??{status:"idle"}),t}badge_paint(e,t){gM(e,t)}results_render(e){const t=this.model!==null&&this.model.queryId===e.queryId;if(this.model=e,this.provenance_show(e.provenance),!t){this.listing.open_clear(),this.badgeStates.clear();const s=this.patientRows_build(e),i=s.length===1?s[0]:void 0;i!==void 0&&i.studies.length>0&&this.listing.open_set(0,[i.key]),e.studies.length===1&&this.listing.open_set(1,[Gp(e.studies[0],0)])}for(const s of e.studies)for(const i of s.series){const r=this.badgeStates.get(i.seriesUID);if(r!==void 0&&lT(i,r)){this.badgeState_set(i.seriesUID,{status:"done",...i.pulledFiles!==void 0?{total:i.pulledFiles}:{}});continue}t&&r!==void 0||this.seriesProgress.set(i.seriesUID,hT(i))}this.results_repaint()}results_repaint(){const e=this.model;if(this.studyTracks.clear(),this.patientTracks.clear(),e===null){this.listing.rows_set([],{field:"pacs"});return}this.listing.rows_set([{key:String(e.queryId),rows:this.patientRows_build(e)}],{field:String(e.queryId)})}studyTrack_paint(e){const t=this.studyTracks.get(e);if(t===void 0)return;const s=t.uids.map(i=>this.seriesProgress.get(i)??{done:0,total:0});t.mount.replaceChildren(Vo(Ta(s)))}stateLine_compose(e){queueMicrotask(()=>{this.shownGather_render(),this.shownPull_render()});const t=[],s=this.model?.patients??[];if(s.length>0){const i=r=>s.filter(a=>a.status===r).length;t.push(`FOUND ${i("found")} · NONE ${i("none")} · UNASKED ${i("unasked")}`)}return e.filter!==""&&t.push(e.filter),t.join(" · ")}filter_toggle(e){this.listing.filter_toggle(e)}shown_candidates(){const e=[];if(!this.filtering()){for(const t of this.model?.studies??[])for(const s of t.series)e.push({study:t,series:s});return e}for(const t of this.root.querySelectorAll("#pacs-results .pacs-series")){const s=t.dataset.seriesuid;if(s!==void 0)for(const i of this.model?.studies??[]){const r=i.series.find(a=>a.seriesUID===s);r!==void 0&&e.push({study:i,series:r})}}return e}filtering(){return this.listing.filterText_get()!==""}shown_gatherable(){return this.shown_candidates().filter(({series:e})=>mn(e).gather&&!this.handlers.gathered_is(e.seriesUID))}shownGather_render(){const e=this.root.querySelector("#pacs-gather-shown");if(e===null)return;const t=this.shown_gatherable().length;e.hidden=t===0,e.textContent=this.filtering()?`GATHER ${t} SHOWN`:`GATHER ${t}`}shown_pullable(){return this.shown_candidates().map(({series:e})=>e).filter(e=>mn(e).pull&&e.vfsPath!==void 0)}shownPull_render(){const e=this.root.querySelector("#pacs-pull-shown");if(e===null)return;const t=this.shown_pullable().length;e.hidden=t===0,e.textContent=this.filtering()?`PULL ${t} SHOWN`:`PULL ${t}`}shown_pull(){const e=this.shown_pullable();if(e.length===0)return;const t=e.map(s=>`"${s.vfsPath}"`).join(" ");this.handlers.command_show(`pull ${t}`);for(const s of e)this.badgeState_set(s.seriesUID,{status:"queued"});this.handlers.note(`pull: ${e.length} series asked for`),this.shownPull_render()}shown_gather(){const e=this.shown_gatherable();if(e.length!==0){for(const{study:t,series:s}of e)this.gather_note(t,s);this.handlers.note(this.filtering()?`gather: ${e.length} series gathered from what the filter left showing`:`gather: ${e.length} series gathered from the whole answer`),this.shownGather_render()}}gather_note(e,t){t.vfsPath!==void 0&&(this.handlers.gather_add({seriesUID:t.seriesUID,description:t.description,modality:t.modality,series:t,patient:e.patientId||e.patientName,...e.description===void 0||e.description===""?{}:{study:e.description},vfsPath:t.vfsPath,...t.folderPath!==void 0?{folderPath:t.folderPath}:{},...t.fileCount!==void 0?{files:t.fileCount}:{}}),this.selected_refresh())}stage_lit(e){this.litFolders=e,this.selected_refresh()}selected_refresh(){this.listing.indication_refresh()}}function Gp(n,e){return n.studyUID??`study-${e}`}function Rp(n){return n.replace(/\/$/,"")}function hT(n){const e=n.pulledFiles??0,t=Math.max(n.fileCount??0,e);return n.pulled===!0?{done:t,total:t}:{done:e,total:t}}function fT(n,e){const t=n.total??e?.total??0;return n.status==="error"?{done:n.current??e?.done??0,total:t,failed:!0}:n.status==="done"?{done:t,total:t}:{done:n.current??e?.done??0,total:t}}function Us(n,e){const t=n.querySelector(e);if(t===null)throw new Error(`PACS workspace is missing '${e}'`);return t}function go(n,e){const t=Us(n,e);if(!(t instanceof HTMLInputElement))throw new Error(`'${e}' is not an input`);return t}function Bp(n){const e=document.createElement("p");return e.className="files-empty",e.textContent=n,e}const pT={"fs.listing":"files","feed.dag":"dag","feed.list":"dag","pacs.query":"pacs","dicom.series":"image","dicom.tags":"tags"};class mT{result;handlers;constructor(e,t){this.handlers=t,this.result=ia(e,".empty-result"),$s(this.result);const s=ia(e,".empty-prompt");s.addEventListener("keydown",i=>{i.key==="Enter"&&s.value.trim().length>0&&(this.line_run(s.value.trim()),s.value="")}),ia(e,".empty-go-files").addEventListener("click",()=>{this.line_run("ls .")}),ia(e,".empty-go-dag").addEventListener("click",()=>{this.line_run("proc feeds")}),ia(e,".empty-go-pacs").addEventListener("click",()=>{this.handlers.claim("pacs",[])}),window.setTimeout(()=>s.focus(),0)}async line_run(e){this.result.textContent="…";let t;try{t=await this.handlers.execute(e)}catch(i){this.result.textContent=i instanceof Error?i.message:String(i);return}for(const i of t.envelopes){const r=i.model?.kind!==void 0?pT[i.model.kind]:void 0;if(r!==void 0){this.handlers.claim(r,t.envelopes);return}}const s=t.envelopes.map(i=>i.rendered).join(`
|
|
4240
|
-
`);this.result.textContent=gT(s)||"(no output)"}}function ia(n,e){const t=n.querySelector(e);if(t===null)throw new Error(`empty pane template is missing ${e}`);return t}function gT(n){return n.replace(/\x1b\[[0-9;:]*[A-Za-z]/g,"")}class MT{container;title;handlers;currentAddress=null;constructor(e,t,s){this.container=e,this.title=t,this.handlers=s,this.awaiting_render()}regard_show(e){if(this.currentAddress=e.address,this.title.textContent=`VIEWER — ${e.address}`.toUpperCase(),this.handlers.path_isImage(e.address)){this.container.replaceChildren();const t=document.createElement("img");t.className="files-image",t.src=this.handlers.imageUrl_build(e.address),t.alt=e.address,this.container.appendChild(t);return}this.handlers.content_fetch(e.address).then(t=>{if(this.currentAddress!==e.address)return;if(this.container.replaceChildren(),t.trim().length===0){const i=document.createElement("p");i.className="files-empty",i.textContent=`NO PREVIEW — ${e.address.toUpperCase()}`,this.container.appendChild(i);return}const s=document.createElement("pre");s.className="files-content",s.textContent=t,this.container.appendChild(s)})}awaiting_render(){this.container.replaceChildren();const e=document.createElement("p");e.className="files-empty",e.textContent="NO REGARD — INDICATE A FILE OR NODE IN THIS PANE’S GROUP",this.container.appendChild(e)}}const bT="modulepreload",_T=function(n,e){return new URL(n,e).href},Np={},qd=function(e,t,s){let i=Promise.resolve();if(t&&t.length>0){let c=function(d){return Promise.all(d.map(u=>Promise.resolve(u).then(h=>({status:"fulfilled",value:h}),h=>({status:"rejected",reason:h}))))};const a=document.getElementsByTagName("link"),o=document.querySelector("meta[property=csp-nonce]"),l=o?.nonce||o?.getAttribute("nonce");i=c(t.map(d=>{if(d=_T(d,s),d in Np)return;Np[d]=!0;const u=d.endsWith(".css"),h=u?'[rel="stylesheet"]':"";if(s)for(let f=a.length-1;f>=0;f--){const b=a[f];if(b.href===d&&(!u||b.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${d}"]${h}`))return;const p=document.createElement("link");if(p.rel=u?"stylesheet":bT,u||(p.as="script"),p.crossOrigin="",p.href=d,l&&p.setAttribute("nonce",l),document.head.appendChild(p),u)return new Promise((f,b)=>{p.addEventListener("load",f),p.addEventListener("error",()=>b(new Error(`Unable to preload CSS for ${d}`)))})}))}function r(a){const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=a,window.dispatchEvent(o),!o.defaultPrevented)throw a}return i.then(a=>{for(const o of a||[])o.status==="rejected"&&r(o.reason);return e().catch(r)})},zT=/Failed to fetch dynamically imported module|error loading dynamically imported module|Importing a module script failed/i;function Cu(n){const e=n instanceof Error?n.message:String(n??"");return zT.test(e)}const wr={before:"ARGUS has been updated in the background — ",refresh:"refresh",after:" this page"},wT=`${wr.before}${wr.refresh}${wr.after}`,rl="ARGUS UPDATED IN THE BACKGROUND · REFRESH THIS PAGE";function yT(n,e=document.body){let t=!1;const s=()=>{if(t)return;t=!0,n(`argus: ${wT} (what failed to load was part of the old build)`);const i=document.createElement("div");i.className="stale-page",i.setAttribute("role","alert");const r=document.createElement("span");r.className="stale-page-words";const a=document.createElement("button");a.type="button",a.className="stale-page-reload",a.textContent=wr.refresh,a.title="load the argus the server has now",a.addEventListener("click",()=>{window.location.reload()}),r.append(document.createTextNode(wr.before),a,document.createTextNode(wr.after)),i.append(r),e.appendChild(i)};window.addEventListener("vite:preloadError",()=>{s()}),window.addEventListener("unhandledrejection",i=>{Cu(i.reason)&&s()})}const vT=[{label:"",tag:"PatientName"},{label:"MRN",tag:"PatientID"},{label:"ACC",tag:"AccessionNumber"},{label:"",tag:"StudyDescription"},{label:"",tag:"SeriesDescription"},{label:"",tag:"StudyDate"},{label:"",tag:"PatientAge"},{label:"",tag:"PatientSex"}],OT=256*1024*1024;function Mo(n){const e=["B","KB","MB","GB","TB"];let t=n,s=0;for(;t>=1024&&s<e.length-1;)t/=1024,s++;return s===0?`${n} B`:`${t.toFixed(1)} ${e[s]}`}function xT(n){const e=n.toUpperCase();return e==="MR"||e==="CT"||e==="PT"?e:"OT"}class ST{pane;field;title;modeSpan;stateSpan;layoutPills=new Map;overlayPill;colormapPill;savePill;loadPill;retryPill;presetPill;focusMark;guardBytes=OT;forced=!1;pendingLayout=null;progressNote=null;overlayNote=null;probeNote=null;overlay=!1;overlayLines=[];presetIndex=-1;toolPills=new Map;handlers;engine=null;series=null;siblings=[];colormap="gray";tool="wl";constructor(e,t){this.handlers=t,this.pane=e,this.field=ws(e,".image-field"),this.title=ws(e,".pane-title"),this.modeSpan=ws(e,".pane-mode"),this.stateSpan=ws(e,".pane-state");for(const s of e.querySelectorAll(".image-layout")){const i=s.dataset.layout??"single";this.layoutPills.set(i,s),s.addEventListener("click",()=>{this.layout_set(i)})}this.overlayPill=ws(e,".image-overlay"),this.overlayPill.addEventListener("click",()=>{this.overlay_set(!this.overlay)}),this.colormapPill=ws(e,".image-colormap"),this.savePill=ws(e,".image-save"),this.loadPill=ws(e,".image-load"),this.retryPill=ws(e,".image-retry"),this.presetPill=ws(e,".image-preset"),this.focusMark=ws(e,".image-focus"),this.field.tabIndex=0,this.colormapPill.addEventListener("click",()=>{this.colormap_cycle()}),this.savePill.addEventListener("click",()=>{this.annotations_save()}),this.loadPill.addEventListener("click",()=>{this.load_press()}),this.retryPill.addEventListener("click",()=>{this.retry_press()}),this.presetPill.addEventListener("click",()=>this.preset_cycle()),ws(e,".image-tags").addEventListener("click",()=>this.handlers.tags_open());for(const s of ph){const i=ws(e,`.image-tool[data-tool="${s}"]`);this.toolPills.set(s,i),i.addEventListener("click",()=>{this.tool_set(s)})}this.toolPills_paint(),this.field.addEventListener("mousedown",()=>{this.field.focus(),this.focusMark_paint(!0)}),this.field.addEventListener("focusin",()=>this.focusMark_paint(!0)),this.field.addEventListener("focusout",s=>{(!(s.relatedTarget instanceof Node)||!this.field.contains(s.relatedTarget))&&this.focusMark_paint(!1)}),this.field.addEventListener("keydown",s=>{if(s.key==="Escape"){this.field_release(),s.stopPropagation();return}s.stopPropagation()})}field_hasFocus(){return document.activeElement instanceof Node&&this.field.contains(document.activeElement)}field_release(){return this.field_hasFocus()?(document.activeElement.blur(),this.focusMark_paint(!1),!0):!1}async series_show(e,t={}){if(this.engine_dispose(),this.series=e,this.forced=t.force===!0,this.pendingLayout=null,this.loadPill.hidden=!0,this.retryPill.hidden=!0,this.presets_paint(e.modality),this.siblings=t.siblings??[],this.pane.dataset.modality=xT(e.modality),this.title.textContent=`IMAGE ${e.modality.toUpperCase()} ${e.seriesDescription}`.trim(),this.title.title=this.title.textContent,this.siblings.length>1){const a=this.siblings.findIndex(o=>o.path===e.path)+1;this.handlers.note(`image: series ${a} of ${this.siblings.length} in this study; image series <n> switches`)}const s=await this.chunk_import(()=>qd(()=>import("./cornerstoneEngine-PxjQTsDK.js").then(a=>a.b2),__vite__mapDeps([0,1,2]),import.meta.url));if(s===null)return;const{CornerstoneEngine:i}=s,r=new i(this.engineHost_get(),e,t.startAt??1);await this.engine_open(r),this.engine===r&&(this.guard_trips()?(this.loadPill.hidden=!1,this.stateSpan.textContent=`SERIES ${Mo(e.bytes)} · LOAD FOR STACK`,this.handlers.note(`image: ${Mo(e.bytes)} to fetch before the stack scrolls; press LOAD, image load, or image --force <path>`)):r.slices_fill(),await this.annotations_reload(r,e))}async annotations_reload(e,t){let s=0;for(const i of t.annotations.filter(r=>/\.dcm$/i.test(r))){if(this.engine!==e)return;const r=i.split("/").pop()??i;try{const a=await fetch(this.handlers.source.url_of(i));if(!a.ok){this.handlers.note(`image: ${r}: HTTP ${a.status}`);continue}const o=await e.annotations_import(await a.arrayBuffer());s+=o,this.handlers.note(o>0?`image: ${o} measurement${o===1?"":"s"} from ${r}`:`image: ${r}: no measurements this engine can place`)}catch(a){this.handlers.note(`image: ${r}: ${a instanceof Error?a.message:String(a)}`)}}this.pane.dataset.annotations=String(s)}async volume_show(e){this.engine_dispose(),this.series=null,this.siblings=[],this.pane.dataset.modality="NIFTI",this.title.textContent=`IMAGE ${e.split("/").pop()??""}`,this.title.title=e,this.forced=!0,this.loadPill.hidden=!0,this.retryPill.hidden=!0,this.presets_paint("NIFTI");const t=await this.chunk_import(()=>qd(()=>import("./niivueEngine-ICOKHrzZ.js"),__vite__mapDeps([3,1]),import.meta.url));if(t===null)return;const{NiivueEngine:s}=t;await this.engine_open(new s(this.engineHost_get(),e))}async chunk_import(e){try{const t=await e();if(t!==void 0)return t}catch(t){if(!Cu(t))throw t}return Yt(this.stateSpan,"stale",rl),this.handlers.note(`image: ${rl.toLowerCase()} — the viewer's code is of an older build than the server has`),null}opening_show(e){const t=e.replace(/\/$/,"").split("/").pop()??e;this.stateSpan.textContent="OPENING",this.progress_show({label:`OPENING ${t}`,done:0,total:0})}opening_fail(e,t){this.stateSpan.textContent=t,this.progress_show({label:t,done:0,total:0});const s=this.progressNote;s!==null&&(s.classList.add("image-working-failed"),s.querySelector(".image-working-count").textContent=e)}siblings_get(){return this.siblings}series_get(){return this.series}state_get(){return this.engine===null?null:{...this.engine.state_get(),colormap:this.colormap,path:this.series?.path??null,guard:this.guardBytes,waiting:this.pendingLayout}}async layout_set(e){if(this.engine===null)return!1;if(e!=="single"&&this.guard_trips())return this.pendingLayout=e,this.loadPill.hidden=!1,this.stateSpan.textContent=`SERIES ${Mo(this.series?.bytes??0)} · LOAD FOR ${e.toUpperCase()}`,this.handlers.note(`image: ${Mo(this.series?.bytes??0)} to fetch for ${e}; press LOAD, image load, or image --force <path>`),!1;const t=this.engine.state_get().layout;return this.layoutPills_paint(e),this.modeSpan.textContent=e==="single"?"":e.toUpperCase(),this.overlay_hide(),await this.engine.layout_set(e)?(this.progress_show(null),this.overlay_paint(),this.toolPills_paint(),!0):(this.progress_show(null),this.layoutPills_paint(t),this.modeSpan.textContent=t==="single"?"":t.toUpperCase(),this.handlers.note(`image: layout ${e}: not offered by ${this.engine.name}`),!1)}layoutPills_paint(e){for(const[t,s]of this.layoutPills)s.classList.toggle("rail-off",t!==e)}guard_trips(){return this.guardBytes!==null&&!this.forced&&this.engine?.name==="cornerstone"&&(this.series?.bytes??0)>this.guardBytes}async load_press(){this.forced=!0,this.loadPill.hidden=!0,this.retryPill.hidden=!0;const e=this.pendingLayout;return this.pendingLayout=null,e!==null?this.layout_set(e):this.engine===null||this.engine.state_get().filled?!1:this.engine.slices_fill()}guard_set(e){this.guardBytes=e}guard_get(){return this.guardBytes}preset_cycle(){const e=this.presets_for(this.series?.modality??"NIFTI");if(e.length===0)return;this.presetIndex=(this.presetIndex+1)%e.length;const t=e[this.presetIndex];t!==void 0&&this.wl_set(t.lower,t.upper)&&(this.presetPill.textContent=t.name.toUpperCase())}presets_for(e){const t=e.toUpperCase();return Im.filter(s=>s.modalities.length===0||s.modalities.includes(t))}presets_paint(e){this.presetIndex=-1;const t=this.presets_for(e);this.presetPill.hidden=t.length===0,this.presetPill.textContent="PRESET"}slice_set(e){if(this.engine===null)return!1;const t=this.engine.slice_set(e);return t||this.handlers.note(`image: slice ${e}: not offered in ${this.engine.state_get().layout} layout by ${this.engine.name}`),t}wl_set(e,t){if(this.engine===null)return!1;const s=this.engine.wl_set(e,t);return s||this.handlers.note(`image: wl: not offered by ${this.engine.name}`),s}ghost_set(e){if(this.engine===null)return!1;const t=this.engine.ghost_set(e);return t||this.handlers.note("image: ghost applies to the SLAB layout"),t}wlPreset_set(e){const t=this.series?.modality??"NIFTI",s=Q0(e,t);return s===void 0?(this.handlers.note(`image: wl preset ${e}: none for ${t}`),!1):this.wl_set(s.lower,s.upper)}colormap_set(e){return this.engine===null?!1:this.engine.colormap_set(e)?(this.colormap=e,this.colormapPill.textContent=e.toUpperCase(),!0):(this.handlers.note(`image: colormap ${e}: not offered by ${this.engine.name}`),!1)}tool_set(e){return this.engine===null?!1:this.engine.tool_set(e)?(this.tool=e,this.toolPills_paint(),!0):(this.handlers.note(`image: ${e}: not offered by ${this.engine.name}`),!1)}async annotations_save(){if(this.engine===null)return!1;const e=this.series?.seriesInstanceUID,t=/^(\/home\/[^/]+)\//.exec(this.series?.path??"")?.[1];if(e===void 0||t===void 0)return this.handlers.note("image: save: this series has no UID to file an annotation under"),!1;const s=await this.engine.annotations_export();if(s===null)return this.handlers.note(`image: save: nothing measured, or ${this.engine.name} writes no report`),!1;const i=`${t}/annotations/${e}/measurements.dcm`,r=await this.handlers.file_put(i,s);return this.handlers.note(r===200?`✓ ${i}`:`image: save: ${i}: HTTP ${r}`),r===200}dispose(){this.engine_dispose()}async colormap_cycle(){const e=yo[(yo.indexOf(this.colormap)+1)%yo.length]??"gray";this.colormap_set(e)}async engine_open(e){this.engine=e,this.field.replaceChildren(),this.progressNote=null,this.overlayNote=null,this.probeNote=null,this.layoutPills_paint("single"),this.modeSpan.textContent="",this.colormapPill.textContent=this.colormap.toUpperCase();try{await e.open(this.field)}catch(s){this.stateSpan.textContent="REFUSED",this.handlers.note(`image: ${s instanceof Error?s.message:String(s)}`);return}const t=e.state_get().layout;this.layoutPills_paint(t),this.modeSpan.textContent=t==="single"?"":t.toUpperCase(),e.tool_set(this.tool),this.toolPills_paint(),this.progress_show(null),this.overlay_fill()}engine_dispose(){this.engine?.dispose(),this.engine=null,this.progressNote=null,this.overlayNote=null,this.probeNote=null,this.field.replaceChildren(),this.stateSpan.textContent=""}retryPill_paint(){const e=this.engine===null?0:this.engine.state_get().refused,t=this.engine?.refused_retry!==void 0;this.retryPill.hidden=!t||e===0,this.retryPill.disabled||(this.retryPill.textContent=`RETRY ${e}`)}async retry_press(){if(!(this.engine?.refused_retry===void 0||this.retryPill.disabled)){this.retryPill.disabled=!0,this.retryPill.textContent="ASKING…";try{await this.engine.refused_retry()}finally{this.retryPill.disabled=!1,this.retryPill_paint()}}}engineHost_get(){return{source:this.handlers.source,readout_set:e=>{this.stateSpan.textContent=e,this.retryPill_paint()},progress_set:e=>this.progress_show(e),note:this.handlers.note,regard:e=>{this.handlers.regard(e),this.overlaySlice_paint()},probe_set:e=>this.probe_show(e)}}probe_show(e){if(e===null){this.probeNote?.remove(),this.probeNote=null;return}if(this.probeNote===null||this.probeNote.parentElement===null){const t=document.createElement("div");t.className="image-probe-note",this.field.appendChild(t),this.probeNote=t}this.probeNote.textContent=e}overlaySlice_paint(){const e=this.overlayNote?.querySelector(".image-overlay-slice")??null;if(e===null||this.engine===null)return;const t=this.engine.state_get();e.textContent=t.slices>1?`SLICE ${Math.max(1,t.slice)} OF ${t.slices}`:"",e.hidden=t.slices<=1}progress_show(e){if(e===null){this.progressNote?.remove(),this.progressNote=null;return}if(this.progressNote===null||this.progressNote.parentElement===null){const a=document.createElement("div");a.className="image-working",a.innerHTML='<span class="image-working-label"></span><span class="image-working-track"><span class="image-working-fill"></span></span><span class="image-working-count"></span>',this.field.appendChild(a),this.progressNote=a}const t=this.progressNote;t.classList.remove("image-working-failed");const s=e.total>0,i=s?Math.min(1,e.done/e.total):0;t.querySelector(".image-working-label").textContent=e.label,t.querySelector(".image-working-count").textContent=s?`${e.done} / ${e.total} · ${Math.round(i*100)}%`:"";const r=t.querySelector(".image-working-fill");r.classList.toggle("image-working-pacing",!s),r.style.width=s?`${Math.round(i*100)}%`:""}async overlay_set(e){if(this.overlay=e,this.overlayPill.textContent=e?"OVERLAY ON":"OVERLAY OFF",this.overlayPill.classList.toggle("rail-off",!e),!e){this.overlay_hide();return}await this.overlay_fill()}overlay_hide(){this.overlayNote?.remove(),this.overlayNote=null}async overlay_fill(){if(!this.overlay||this.series===null)return;const e=this.series.files[0]??this.series.path,t=await this.handlers.tags_read(e);if(t===null){this.handlers.note(`image: overlay: ${e}: no header to read`);return}this.overlayLines=vT.flatMap(s=>{const r=(t.constant.find(a=>a.name===s.tag)?.value??"").trim();return r===""?[]:[s.label===""?r:`${s.label} ${r}`]}),this.overlay_paint()}overlay_paint(){if(!this.overlay||this.overlayLines.length===0)return;this.overlay_hide();const e=document.createElement("div");e.className="image-overlay-note";const t=document.createElement("span");t.className="image-overlay-slice",e.appendChild(t);for(const s of this.overlayLines){const i=document.createElement("span");i.textContent=s,e.appendChild(i)}this.field.appendChild(e),this.overlayNote=e,this.overlaySlice_paint()}toolPills_paint(){const e=new Set(this.engine?.toolsOffered_get()??ph),t=this.engine!==null?this.engine.state_get().primaryTool:this.tool;for(const[s,i]of this.toolPills){const r=e.has(s);i.classList.toggle("rail-na",!r),i.classList.toggle("rail-off",r&&s!==t),i.disabled=!r}}focusMark_paint(e){this.focusMark.hidden=!e,this.pane.classList.toggle("image-field-focused",e)}}function ws(n,e){const t=n.querySelector(e);if(t===null)throw new Error(`image pane: missing ${e}`);return t}const bM=["patient","study","series","image","equipment","meta","private","other","varying"],ET=new Set(["meta","private"]),Cp="••••";class AT{pane;title;modeSpan;redactBlock;listing;handlers;redact=!0;model=null;groups=[];constructor(e,t){this.handlers=t,this.pane=e,this.title=bo(e,".pane-title"),this.modeSpan=bo(e,".pane-mode"),this.redactBlock=bo(e,".tags-redact"),this.redactBlock.addEventListener("click",()=>this.redact_set(!this.redact));const s=bo(e,".tags-panel");this.listing=new Si({mount:s,traits:this.groupTraits_declare(),key:i=>i.group,chrome:{root:e,prefix:"tags"},caps:"root",row:{className:()=>"tags-group-row",groupClassName:i=>`tags-group tags-group-${i.group}`,decorate:i=>{i.title="fold this group open or shut (it keeps its place)"}},child:Mr(i=>i.rows,{traits:this.tagTraits_declare(),key:i=>i.key,activatable:i=>i.items.length>0,row:{className:i=>`tags-row${i.phi?" tags-phi":""}`,groupClassName:()=>"tags-sequence",decorate:(i,r)=>{i.title=r.items.length>0?`${r.name}: fold the sequence open or shut`:`${r.tag} ${r.name}`}},child:Mr(i=>i.items,{traits:this.itemTraits_declare(),key:i=>i.key,row:{className:()=>"tags-item-row",groupClassName:()=>"tags-item"},child:Mr(i=>i.rows,{traits:this.tagTraits_declare(),key:i=>i.key,activatable:()=>!1,row:{className:i=>`tags-row tags-row-deep${i.phi?" tags-phi":""}`}})})}),state:i=>this.stateLine_compose(i),empty:()=>GT("NO TAGS")}),this.redactBlock_paint(),this.listing.rows_set([],{field:"tags"})}model_show(e){this.model=e,this.title.textContent=`TAGS ${TT(e)}`,this.pane.dataset.modality=IT(e),this.groups=DT(e),this.listing.rows_set([{key:e.path,rows:this.groups}],{field:e.path}),this.listing.open_set(0,this.groups.map(t=>t.group).filter(t=>!ET.has(t))),this.modeSpan.textContent=e.subject==="folder"?"FOLDER":""}path_get(){return this.model?.path??null}redact_get(){return this.redact}redact_set(e){this.redact=e,this.redactBlock_paint(),this.model!==null&&this.listing.rows_set([{key:this.model.path,rows:this.groups}],{field:this.model.path})}filter_set(e){if(e===null){this.listing.filter_toggle(!1);return}this.listing.filter_toggle(!0),this.listing.filter_set(e)}stateLine_compose(e){const t=this.groups.reduce((i,r)=>i+r.rows.length,0),s=[];return this.model!==null&&this.model.subject==="folder"&&(s.push(this.model.read===this.model.of?`${this.model.read} FILES`:`${this.model.read} OF ${this.model.of} FILES`),this.model.refused.length>0&&s.push(`REFUSED ${this.model.refused.length}`)),s.push(e.filter!==""?e.filter:`${t} TAGS`),this.redact&&s.push("REDACTED"),s.join(" · ")}redactBlock_paint(){this.redactBlock.textContent=this.redact?"REDACT ON":"REDACT OFF",this.redactBlock.classList.toggle("rail-off",!this.redact),this.pane.classList.toggle("tags-redacted",this.redact)}value_cell(e){const t=document.createElement("span");if(t.className="tags-value",e.phi&&this.redact)return t.textContent=Cp,t.title="identifying value, redacted; the REDACT block on the frame reveals it",t;if(t.textContent=e.value,e.decoded!==void 0){const s=document.createElement("span");s.className="tags-decoded",s.textContent=` ${e.decoded}`,t.appendChild(s)}if(e.distinct!==void 0){const s=document.createElement("span");s.className="tags-decoded",s.textContent=` (${e.distinct} distinct)`,t.appendChild(s)}return t}groupTraits_declare(){return[Oc(()=>!0),{key:"group",label:"GROUP",className:"tags-group-name",width:"minmax(12em, 1fr)",cell:e=>e.group.toUpperCase(),compare:e=>bM.indexOf(e.group)},{key:"count",label:"TAGS",className:"tags-group-count",width:"5em",cell:e=>String(e.rows.length),compare:e=>e.rows.length}]}tagTraits_declare(){return[Oc(e=>e.items.length>0),{key:"tag",label:"TAG",className:"tags-tag",width:"7em",cell:e=>e.tag,compare:e=>e.tag},{key:"name",label:"NAME",className:"tags-name",width:"minmax(8em, 1.4fr)",cell:e=>e.name,compare:e=>e.name.toLowerCase()},{key:"vr",label:"VR",className:"tags-vr",width:"2.4em",cell:e=>e.vr,compare:e=>e.vr},{key:"value",label:"VALUE",className:"tags-value-cell",width:"minmax(6em, 2fr)",cell:e=>this.value_cell(e),compare:e=>(e.phi&&this.redact?Cp:`${e.value} ${e.decoded??""}`).toLowerCase()}]}itemTraits_declare(){return[Oc(()=>!0),{key:"item",label:"ITEM",className:"tags-item-name",width:"minmax(12em, 1fr)",cell:e=>`ITEM ${e.index}`,compare:e=>e.index},{key:"count",label:"TAGS",className:"tags-group-count",width:"5em",cell:e=>String(e.rows.length),compare:e=>e.rows.length}]}}function Oc(n){return{key:"fold",label:"",className:"tags-fold",capped:!1,width:"1.4em",cell:e=>{const t=document.createElement("span");return t.className=n(e)?"tags-fold":"tags-fold tags-fold-none",t}}}function DT(n){const e=new Map;for(const t of n.constant){const s=t.group;e.has(s)||e.set(s,[]),e.get(s)?.push(_M(t,`${s}/${t.tag}`))}return n.varying.length>0&&e.set("varying",n.varying.map(t=>({tag:t.tag,name:t.name,vr:t.vr,value:t.distinct===1?t.first:`${t.first} .. ${t.last}`,phi:t.phi,items:[],distinct:t.distinct,key:`varying/${t.tag}`}))),bM.filter(t=>e.has(t)).map(t=>({group:t,rows:e.get(t)??[]}))}function _M(n,e){return{tag:n.tag,name:n.name,vr:n.vr,value:n.value,...n.decoded!==void 0?{decoded:n.decoded}:{},phi:n.phi,items:(n.items??[]).map((t,s)=>({index:s+1,key:`${e}/${s+1}`,rows:t.map(i=>_M(i,`${e}/${s+1}/${i.tag}`))})),key:e}}function TT(n){const e=n.path.replace(/\/$/,"").split("/").pop()??n.path;if(n.subject==="folder")return e.length>24?`${e.slice(0,22)}…`:e;const t=/^(\d+)-/.exec(e)?.[1];return t!==void 0?`INSTANCE ${Number(t)}`:e.length>24?`${e.slice(0,22)}…`:e}function IT(n){const e=(n.constant.find(t=>t.name==="Modality")?.value??"").toUpperCase();return e==="MR"||e==="CT"||e==="PT"?e:"OT"}function GT(n){const e=document.createElement("div");return e.className="tags-note",e.textContent=n,e}function bo(n,e){const t=n.querySelector(e);if(t===null)throw new Error(`tags pane: missing ${e}`);return t}class RT{groups=new Map;membership=new Map;writeObserver=null;writeObserver_set(e){this.writeObserver=e}pane_join(e,t){this.pane_leave(e),this.membership.set(e,t),this.groups.has(t)||this.groups.set(t,{value:null,subscribers:new Map,viewers:new Set})}pane_leave(e){const t=this.membership.get(e);if(t===void 0)return;this.membership.delete(e);const s=this.groups.get(t);if(s!==void 0){s.subscribers.delete(e),s.viewers.delete(e);for(const i of this.membership.values())if(i===t)return;this.groups.delete(t)}}group_of(e){const t=this.membership.get(e);return t!==void 0?t:(this.pane_join(e,e),e)}viewer_mark(e){this.groups.get(this.group_of(e))?.viewers.add(e)}groupHasViewer(e){const t=this.groups.get(this.group_of(e));return t!==void 0&&t.viewers.size>0}regard_write(e,t){const s=this.group_of(e),i=this.groups.get(s),r={...t,paneId:e};i.value=r;for(const a of i.subscribers.values())a(r);this.writeObserver?.(r,s)}regard_subscribe(e,t){const s=this.groups.get(this.group_of(e));s.subscribers.set(e,t),s.value!==null&&t(s.value)}regard_get(e){return this.groups.get(this.group_of(e))?.value??null}}const xc=["⣾","⣽","⣻","⢿","⡿","⣟","⣯","⣷"],BT=new Set(["done","error","unconfirmed","stalled","timeout"]);function NT(n,e){const t=`${e.operation}:${e.itemId??""}`;if(e.phase==="complete"||e.phase==="failed"){const s=`${e.operation}:`;for(const i of[...n])(i===t||i.startsWith(s))&&n.delete(i);return}if(e.itemId!==void 0&&e.status!==void 0&&BT.has(e.status)){n.delete(t);return}n.add(t)}const CT=100;class PT{fields;buildShown=!1;running=new Set;activityTimer=null;activityFrame=0;constructor(e){this.fields={identity:di(e,"status-identity"),jobs:di(e,"status-jobs"),activity:di(e,"status-activity"),latency:di(e,"status-latency"),mismatch:di(e,"status-mismatch"),lamp:di(e,"status-lamp"),host:di(e,"status-host")}}attach_show(e){if(e.protocolVersion!==Tc){this.fields.mismatch.textContent=`WIRE V${e.protocolVersion} ≠ V${Tc}`,this.fields.mismatch.title="This surface and the daemon speak different contract versions. Some messages may be dropped.",this.hostControl_show(e.hostControl??[]);return}this.fields.mismatch.textContent="",this.fields.mismatch.title=e.stack!==void 0?`chell ${e.stack.chell} · calypso ${e.stack.calypso} · build ${e.stack.build}`:"",this.hostControl_show(e.hostControl??[])}build_show(e,t=""){this.fields.mismatch.textContent!==""&&!this.buildShown||(this.buildShown=e!==null,this.fields.mismatch.textContent=e??"",this.fields.mismatch.title=t)}hostControl_show(e){this.fields.host.textContent=e.length>0?`HOST ${e.join(" ")}`:"",this.fields.host.title=e.length>0?"Calypso was started with --host-control: `!` and pipes run on its host, upload/download reach its disk.":""}promptContext_show(e){const t=e.uri.replace(/^https?:\/\//,"");this.fields.identity.textContent=`${e.user}@${t}`.toUpperCase();const s=e.procWarmup,i=[];if(s!==void 0&&s.sweeping!==!1){const o=s.total!==void 0?`/${s.total}`:"",l=s.state!==void 0?` ${s.state.toUpperCase()}`:"";i.push(`JOBS ${s.loaded}${o}${l}`)}const r=s?.feeds??(s?.feed!==void 0?[s.feed]:[]);for(const o of r){const l=o.total>0?`/${o.total}`:"";i.push(o.failed!==void 0?`FEED ${o.id} FAILED ${o.loaded}${l}`:`FEED ${o.id} ${o.loaded}${l}`)}s?.roster!==void 0&&i.push(s.roster==="full"?"ROSTER WALK":"ROSTER DELTA"),s?.arrived!==void 0&&s.arrived.length>0&&i.push(s.arrived.length<=2?`+FEED ${s.arrived.join(" ")}`:`+${s.arrived.length} FEEDS`);const a=e.warmupFailures??[];a.length>0&&i.push(`WARM-UP FAILED: ${a.map(o=>o.label.toUpperCase()).join(" ")}`),this.fields.jobs.textContent=i.join(" · "),this.fields.jobs.classList.toggle("status-degraded",a.length>0),this.fields.jobs.title=a.length>0?a.map(o=>`${o.label}: ${o.message}`).join(`
|
|
4240
|
+
`);this.result.textContent=gT(s)||"(no output)"}}function ia(n,e){const t=n.querySelector(e);if(t===null)throw new Error(`empty pane template is missing ${e}`);return t}function gT(n){return n.replace(/\x1b\[[0-9;:]*[A-Za-z]/g,"")}class MT{container;title;handlers;currentAddress=null;constructor(e,t,s){this.container=e,this.title=t,this.handlers=s,this.awaiting_render()}regard_show(e){if(this.currentAddress=e.address,this.title.textContent=`VIEWER — ${e.address}`.toUpperCase(),this.handlers.path_isImage(e.address)){this.container.replaceChildren();const t=document.createElement("img");t.className="files-image",t.src=this.handlers.imageUrl_build(e.address),t.alt=e.address,this.container.appendChild(t);return}this.handlers.content_fetch(e.address).then(t=>{if(this.currentAddress!==e.address)return;if(this.container.replaceChildren(),t.trim().length===0){const i=document.createElement("p");i.className="files-empty",i.textContent=`NO PREVIEW — ${e.address.toUpperCase()}`,this.container.appendChild(i);return}const s=document.createElement("pre");s.className="files-content",s.textContent=t,this.container.appendChild(s)})}awaiting_render(){this.container.replaceChildren();const e=document.createElement("p");e.className="files-empty",e.textContent="NO REGARD — INDICATE A FILE OR NODE IN THIS PANE’S GROUP",this.container.appendChild(e)}}const bT="modulepreload",_T=function(n,e){return new URL(n,e).href},Np={},qd=function(e,t,s){let i=Promise.resolve();if(t&&t.length>0){let c=function(d){return Promise.all(d.map(u=>Promise.resolve(u).then(h=>({status:"fulfilled",value:h}),h=>({status:"rejected",reason:h}))))};const a=document.getElementsByTagName("link"),o=document.querySelector("meta[property=csp-nonce]"),l=o?.nonce||o?.getAttribute("nonce");i=c(t.map(d=>{if(d=_T(d,s),d in Np)return;Np[d]=!0;const u=d.endsWith(".css"),h=u?'[rel="stylesheet"]':"";if(s)for(let f=a.length-1;f>=0;f--){const b=a[f];if(b.href===d&&(!u||b.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${d}"]${h}`))return;const p=document.createElement("link");if(p.rel=u?"stylesheet":bT,u||(p.as="script"),p.crossOrigin="",p.href=d,l&&p.setAttribute("nonce",l),document.head.appendChild(p),u)return new Promise((f,b)=>{p.addEventListener("load",f),p.addEventListener("error",()=>b(new Error(`Unable to preload CSS for ${d}`)))})}))}function r(a){const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=a,window.dispatchEvent(o),!o.defaultPrevented)throw a}return i.then(a=>{for(const o of a||[])o.status==="rejected"&&r(o.reason);return e().catch(r)})},zT=/Failed to fetch dynamically imported module|error loading dynamically imported module|Importing a module script failed/i;function Cu(n){const e=n instanceof Error?n.message:String(n??"");return zT.test(e)}const wr={before:"ARGUS has been updated in the background — ",refresh:"refresh",after:" this page"},wT=`${wr.before}${wr.refresh}${wr.after}`,rl="ARGUS UPDATED IN THE BACKGROUND · REFRESH THIS PAGE";function yT(n,e=document.body){let t=!1;const s=()=>{if(t)return;t=!0,n(`argus: ${wT} (what failed to load was part of the old build)`);const i=document.createElement("div");i.className="stale-page",i.setAttribute("role","alert");const r=document.createElement("span");r.className="stale-page-words";const a=document.createElement("button");a.type="button",a.className="stale-page-reload",a.textContent=wr.refresh,a.title="load the argus the server has now",a.addEventListener("click",()=>{window.location.reload()}),r.append(document.createTextNode(wr.before),a,document.createTextNode(wr.after)),i.append(r),e.appendChild(i)};window.addEventListener("vite:preloadError",()=>{s()}),window.addEventListener("unhandledrejection",i=>{Cu(i.reason)&&s()})}const vT=[{label:"",tag:"PatientName"},{label:"MRN",tag:"PatientID"},{label:"ACC",tag:"AccessionNumber"},{label:"",tag:"StudyDescription"},{label:"",tag:"SeriesDescription"},{label:"",tag:"StudyDate"},{label:"",tag:"PatientAge"},{label:"",tag:"PatientSex"}],OT=256*1024*1024;function Mo(n){const e=["B","KB","MB","GB","TB"];let t=n,s=0;for(;t>=1024&&s<e.length-1;)t/=1024,s++;return s===0?`${n} B`:`${t.toFixed(1)} ${e[s]}`}function xT(n){const e=n.toUpperCase();return e==="MR"||e==="CT"||e==="PT"?e:"OT"}class ST{pane;field;title;modeSpan;stateSpan;layoutPills=new Map;overlayPill;colormapPill;savePill;loadPill;retryPill;presetPill;focusMark;guardBytes=OT;forced=!1;pendingLayout=null;progressNote=null;overlayNote=null;probeNote=null;overlay=!1;overlayLines=[];presetIndex=-1;toolPills=new Map;handlers;engine=null;series=null;siblings=[];colormap="gray";tool="wl";constructor(e,t){this.handlers=t,this.pane=e,this.field=ws(e,".image-field"),this.title=ws(e,".pane-title"),this.modeSpan=ws(e,".pane-mode"),this.stateSpan=ws(e,".pane-state");for(const s of e.querySelectorAll(".image-layout")){const i=s.dataset.layout??"single";this.layoutPills.set(i,s),s.addEventListener("click",()=>{this.layout_set(i)})}this.overlayPill=ws(e,".image-overlay"),this.overlayPill.addEventListener("click",()=>{this.overlay_set(!this.overlay)}),this.colormapPill=ws(e,".image-colormap"),this.savePill=ws(e,".image-save"),this.loadPill=ws(e,".image-load"),this.retryPill=ws(e,".image-retry"),this.presetPill=ws(e,".image-preset"),this.focusMark=ws(e,".image-focus"),this.field.tabIndex=0,this.colormapPill.addEventListener("click",()=>{this.colormap_cycle()}),this.savePill.addEventListener("click",()=>{this.annotations_save()}),this.loadPill.addEventListener("click",()=>{this.load_press()}),this.retryPill.addEventListener("click",()=>{this.retry_press()}),this.presetPill.addEventListener("click",()=>this.preset_cycle()),ws(e,".image-tags").addEventListener("click",()=>this.handlers.tags_open());for(const s of ph){const i=ws(e,`.image-tool[data-tool="${s}"]`);this.toolPills.set(s,i),i.addEventListener("click",()=>{this.tool_set(s)})}this.toolPills_paint(),this.field.addEventListener("mousedown",()=>{this.field.focus(),this.focusMark_paint(!0)}),this.field.addEventListener("focusin",()=>this.focusMark_paint(!0)),this.field.addEventListener("focusout",s=>{(!(s.relatedTarget instanceof Node)||!this.field.contains(s.relatedTarget))&&this.focusMark_paint(!1)}),this.field.addEventListener("keydown",s=>{if(s.key==="Escape"){this.field_release(),s.stopPropagation();return}s.stopPropagation()})}field_hasFocus(){return document.activeElement instanceof Node&&this.field.contains(document.activeElement)}field_release(){return this.field_hasFocus()?(document.activeElement.blur(),this.focusMark_paint(!1),!0):!1}async series_show(e,t={}){if(this.engine_dispose(),this.series=e,this.forced=t.force===!0,this.pendingLayout=null,this.loadPill.hidden=!0,this.retryPill.hidden=!0,this.presets_paint(e.modality),this.siblings=t.siblings??[],this.pane.dataset.modality=xT(e.modality),this.title.textContent=`IMAGE ${e.modality.toUpperCase()} ${e.seriesDescription}`.trim(),this.title.title=this.title.textContent,this.siblings.length>1){const a=this.siblings.findIndex(o=>o.path===e.path)+1;this.handlers.note(`image: series ${a} of ${this.siblings.length} in this study; image series <n> switches`)}const s=await this.chunk_import(()=>qd(()=>import("./cornerstoneEngine-DEyD4KaO.js").then(a=>a.b2),__vite__mapDeps([0,1,2]),import.meta.url));if(s===null)return;const{CornerstoneEngine:i}=s,r=new i(this.engineHost_get(),e,t.startAt??1);await this.engine_open(r),this.engine===r&&(this.guard_trips()?(this.loadPill.hidden=!1,this.stateSpan.textContent=`SERIES ${Mo(e.bytes)} · LOAD FOR STACK`,this.handlers.note(`image: ${Mo(e.bytes)} to fetch before the stack scrolls; press LOAD, image load, or image --force <path>`)):r.slices_fill(),await this.annotations_reload(r,e))}async annotations_reload(e,t){let s=0;for(const i of t.annotations.filter(r=>/\.dcm$/i.test(r))){if(this.engine!==e)return;const r=i.split("/").pop()??i;try{const a=await fetch(this.handlers.source.url_of(i));if(!a.ok){this.handlers.note(`image: ${r}: HTTP ${a.status}`);continue}const o=await e.annotations_import(await a.arrayBuffer());s+=o,this.handlers.note(o>0?`image: ${o} measurement${o===1?"":"s"} from ${r}`:`image: ${r}: no measurements this engine can place`)}catch(a){this.handlers.note(`image: ${r}: ${a instanceof Error?a.message:String(a)}`)}}this.pane.dataset.annotations=String(s)}async volume_show(e){this.engine_dispose(),this.series=null,this.siblings=[],this.pane.dataset.modality="NIFTI",this.title.textContent=`IMAGE ${e.split("/").pop()??""}`,this.title.title=e,this.forced=!0,this.loadPill.hidden=!0,this.retryPill.hidden=!0,this.presets_paint("NIFTI");const t=await this.chunk_import(()=>qd(()=>import("./niivueEngine-DTNSUffe.js"),__vite__mapDeps([3,1]),import.meta.url));if(t===null)return;const{NiivueEngine:s}=t;await this.engine_open(new s(this.engineHost_get(),e))}async chunk_import(e){try{const t=await e();if(t!==void 0)return t}catch(t){if(!Cu(t))throw t}return Yt(this.stateSpan,"stale",rl),this.handlers.note(`image: ${rl.toLowerCase()} — the viewer's code is of an older build than the server has`),null}opening_show(e){const t=e.replace(/\/$/,"").split("/").pop()??e;this.stateSpan.textContent="OPENING",this.progress_show({label:`OPENING ${t}`,done:0,total:0})}opening_fail(e,t){this.stateSpan.textContent=t,this.progress_show({label:t,done:0,total:0});const s=this.progressNote;s!==null&&(s.classList.add("image-working-failed"),s.querySelector(".image-working-count").textContent=e)}siblings_get(){return this.siblings}series_get(){return this.series}state_get(){return this.engine===null?null:{...this.engine.state_get(),colormap:this.colormap,path:this.series?.path??null,guard:this.guardBytes,waiting:this.pendingLayout}}async layout_set(e){if(this.engine===null)return!1;if(e!=="single"&&this.guard_trips())return this.pendingLayout=e,this.loadPill.hidden=!1,this.stateSpan.textContent=`SERIES ${Mo(this.series?.bytes??0)} · LOAD FOR ${e.toUpperCase()}`,this.handlers.note(`image: ${Mo(this.series?.bytes??0)} to fetch for ${e}; press LOAD, image load, or image --force <path>`),!1;const t=this.engine.state_get().layout;return this.layoutPills_paint(e),this.modeSpan.textContent=e==="single"?"":e.toUpperCase(),this.overlay_hide(),await this.engine.layout_set(e)?(this.progress_show(null),this.overlay_paint(),this.toolPills_paint(),!0):(this.progress_show(null),this.layoutPills_paint(t),this.modeSpan.textContent=t==="single"?"":t.toUpperCase(),this.handlers.note(`image: layout ${e}: not offered by ${this.engine.name}`),!1)}layoutPills_paint(e){for(const[t,s]of this.layoutPills)s.classList.toggle("rail-off",t!==e)}guard_trips(){return this.guardBytes!==null&&!this.forced&&this.engine?.name==="cornerstone"&&(this.series?.bytes??0)>this.guardBytes}async load_press(){this.forced=!0,this.loadPill.hidden=!0,this.retryPill.hidden=!0;const e=this.pendingLayout;return this.pendingLayout=null,e!==null?this.layout_set(e):this.engine===null||this.engine.state_get().filled?!1:this.engine.slices_fill()}guard_set(e){this.guardBytes=e}guard_get(){return this.guardBytes}preset_cycle(){const e=this.presets_for(this.series?.modality??"NIFTI");if(e.length===0)return;this.presetIndex=(this.presetIndex+1)%e.length;const t=e[this.presetIndex];t!==void 0&&this.wl_set(t.lower,t.upper)&&(this.presetPill.textContent=t.name.toUpperCase())}presets_for(e){const t=e.toUpperCase();return Im.filter(s=>s.modalities.length===0||s.modalities.includes(t))}presets_paint(e){this.presetIndex=-1;const t=this.presets_for(e);this.presetPill.hidden=t.length===0,this.presetPill.textContent="PRESET"}slice_set(e){if(this.engine===null)return!1;const t=this.engine.slice_set(e);return t||this.handlers.note(`image: slice ${e}: not offered in ${this.engine.state_get().layout} layout by ${this.engine.name}`),t}wl_set(e,t){if(this.engine===null)return!1;const s=this.engine.wl_set(e,t);return s||this.handlers.note(`image: wl: not offered by ${this.engine.name}`),s}ghost_set(e){if(this.engine===null)return!1;const t=this.engine.ghost_set(e);return t||this.handlers.note("image: ghost applies to the SLAB layout"),t}wlPreset_set(e){const t=this.series?.modality??"NIFTI",s=Q0(e,t);return s===void 0?(this.handlers.note(`image: wl preset ${e}: none for ${t}`),!1):this.wl_set(s.lower,s.upper)}colormap_set(e){return this.engine===null?!1:this.engine.colormap_set(e)?(this.colormap=e,this.colormapPill.textContent=e.toUpperCase(),!0):(this.handlers.note(`image: colormap ${e}: not offered by ${this.engine.name}`),!1)}tool_set(e){return this.engine===null?!1:this.engine.tool_set(e)?(this.tool=e,this.toolPills_paint(),!0):(this.handlers.note(`image: ${e}: not offered by ${this.engine.name}`),!1)}async annotations_save(){if(this.engine===null)return!1;const e=this.series?.seriesInstanceUID,t=/^(\/home\/[^/]+)\//.exec(this.series?.path??"")?.[1];if(e===void 0||t===void 0)return this.handlers.note("image: save: this series has no UID to file an annotation under"),!1;const s=await this.engine.annotations_export();if(s===null)return this.handlers.note(`image: save: nothing measured, or ${this.engine.name} writes no report`),!1;const i=`${t}/annotations/${e}/measurements.dcm`,r=await this.handlers.file_put(i,s);return this.handlers.note(r===200?`✓ ${i}`:`image: save: ${i}: HTTP ${r}`),r===200}dispose(){this.engine_dispose()}async colormap_cycle(){const e=yo[(yo.indexOf(this.colormap)+1)%yo.length]??"gray";this.colormap_set(e)}async engine_open(e){this.engine=e,this.field.replaceChildren(),this.progressNote=null,this.overlayNote=null,this.probeNote=null,this.layoutPills_paint("single"),this.modeSpan.textContent="",this.colormapPill.textContent=this.colormap.toUpperCase();try{await e.open(this.field)}catch(s){this.stateSpan.textContent="REFUSED",this.handlers.note(`image: ${s instanceof Error?s.message:String(s)}`);return}const t=e.state_get().layout;this.layoutPills_paint(t),this.modeSpan.textContent=t==="single"?"":t.toUpperCase(),e.tool_set(this.tool),this.toolPills_paint(),this.progress_show(null),this.overlay_fill()}engine_dispose(){this.engine?.dispose(),this.engine=null,this.progressNote=null,this.overlayNote=null,this.probeNote=null,this.field.replaceChildren(),this.stateSpan.textContent=""}retryPill_paint(){const e=this.engine===null?0:this.engine.state_get().refused,t=this.engine?.refused_retry!==void 0;this.retryPill.hidden=!t||e===0,this.retryPill.disabled||(this.retryPill.textContent=`RETRY ${e}`)}async retry_press(){if(!(this.engine?.refused_retry===void 0||this.retryPill.disabled)){this.retryPill.disabled=!0,this.retryPill.textContent="ASKING…";try{await this.engine.refused_retry()}finally{this.retryPill.disabled=!1,this.retryPill_paint()}}}engineHost_get(){return{source:this.handlers.source,readout_set:e=>{this.stateSpan.textContent=e,this.retryPill_paint()},progress_set:e=>this.progress_show(e),note:this.handlers.note,regard:e=>{this.handlers.regard(e),this.overlaySlice_paint()},probe_set:e=>this.probe_show(e)}}probe_show(e){if(e===null){this.probeNote?.remove(),this.probeNote=null;return}if(this.probeNote===null||this.probeNote.parentElement===null){const t=document.createElement("div");t.className="image-probe-note",this.field.appendChild(t),this.probeNote=t}this.probeNote.textContent=e}overlaySlice_paint(){const e=this.overlayNote?.querySelector(".image-overlay-slice")??null;if(e===null||this.engine===null)return;const t=this.engine.state_get();e.textContent=t.slices>1?`SLICE ${Math.max(1,t.slice)} OF ${t.slices}`:"",e.hidden=t.slices<=1}progress_show(e){if(e===null){this.progressNote?.remove(),this.progressNote=null;return}if(this.progressNote===null||this.progressNote.parentElement===null){const a=document.createElement("div");a.className="image-working",a.innerHTML='<span class="image-working-label"></span><span class="image-working-track"><span class="image-working-fill"></span></span><span class="image-working-count"></span>',this.field.appendChild(a),this.progressNote=a}const t=this.progressNote;t.classList.remove("image-working-failed");const s=e.total>0,i=s?Math.min(1,e.done/e.total):0;t.querySelector(".image-working-label").textContent=e.label,t.querySelector(".image-working-count").textContent=s?`${e.done} / ${e.total} · ${Math.round(i*100)}%`:"";const r=t.querySelector(".image-working-fill");r.classList.toggle("image-working-pacing",!s),r.style.width=s?`${Math.round(i*100)}%`:""}async overlay_set(e){if(this.overlay=e,this.overlayPill.textContent=e?"OVERLAY ON":"OVERLAY OFF",this.overlayPill.classList.toggle("rail-off",!e),!e){this.overlay_hide();return}await this.overlay_fill()}overlay_hide(){this.overlayNote?.remove(),this.overlayNote=null}async overlay_fill(){if(!this.overlay||this.series===null)return;const e=this.series.files[0]??this.series.path,t=await this.handlers.tags_read(e);if(t===null){this.handlers.note(`image: overlay: ${e}: no header to read`);return}this.overlayLines=vT.flatMap(s=>{const r=(t.constant.find(a=>a.name===s.tag)?.value??"").trim();return r===""?[]:[s.label===""?r:`${s.label} ${r}`]}),this.overlay_paint()}overlay_paint(){if(!this.overlay||this.overlayLines.length===0)return;this.overlay_hide();const e=document.createElement("div");e.className="image-overlay-note";const t=document.createElement("span");t.className="image-overlay-slice",e.appendChild(t);for(const s of this.overlayLines){const i=document.createElement("span");i.textContent=s,e.appendChild(i)}this.field.appendChild(e),this.overlayNote=e,this.overlaySlice_paint()}toolPills_paint(){const e=new Set(this.engine?.toolsOffered_get()??ph),t=this.engine!==null?this.engine.state_get().primaryTool:this.tool;for(const[s,i]of this.toolPills){const r=e.has(s);i.classList.toggle("rail-na",!r),i.classList.toggle("rail-off",r&&s!==t),i.disabled=!r}}focusMark_paint(e){this.focusMark.hidden=!e,this.pane.classList.toggle("image-field-focused",e)}}function ws(n,e){const t=n.querySelector(e);if(t===null)throw new Error(`image pane: missing ${e}`);return t}const bM=["patient","study","series","image","equipment","meta","private","other","varying"],ET=new Set(["meta","private"]),Cp="••••";class AT{pane;title;modeSpan;redactBlock;listing;handlers;redact=!0;model=null;groups=[];constructor(e,t){this.handlers=t,this.pane=e,this.title=bo(e,".pane-title"),this.modeSpan=bo(e,".pane-mode"),this.redactBlock=bo(e,".tags-redact"),this.redactBlock.addEventListener("click",()=>this.redact_set(!this.redact));const s=bo(e,".tags-panel");this.listing=new Si({mount:s,traits:this.groupTraits_declare(),key:i=>i.group,chrome:{root:e,prefix:"tags"},caps:"root",row:{className:()=>"tags-group-row",groupClassName:i=>`tags-group tags-group-${i.group}`,decorate:i=>{i.title="fold this group open or shut (it keeps its place)"}},child:Mr(i=>i.rows,{traits:this.tagTraits_declare(),key:i=>i.key,activatable:i=>i.items.length>0,row:{className:i=>`tags-row${i.phi?" tags-phi":""}`,groupClassName:()=>"tags-sequence",decorate:(i,r)=>{i.title=r.items.length>0?`${r.name}: fold the sequence open or shut`:`${r.tag} ${r.name}`}},child:Mr(i=>i.items,{traits:this.itemTraits_declare(),key:i=>i.key,row:{className:()=>"tags-item-row",groupClassName:()=>"tags-item"},child:Mr(i=>i.rows,{traits:this.tagTraits_declare(),key:i=>i.key,activatable:()=>!1,row:{className:i=>`tags-row tags-row-deep${i.phi?" tags-phi":""}`}})})}),state:i=>this.stateLine_compose(i),empty:()=>GT("NO TAGS")}),this.redactBlock_paint(),this.listing.rows_set([],{field:"tags"})}model_show(e){this.model=e,this.title.textContent=`TAGS ${TT(e)}`,this.pane.dataset.modality=IT(e),this.groups=DT(e),this.listing.rows_set([{key:e.path,rows:this.groups}],{field:e.path}),this.listing.open_set(0,this.groups.map(t=>t.group).filter(t=>!ET.has(t))),this.modeSpan.textContent=e.subject==="folder"?"FOLDER":""}path_get(){return this.model?.path??null}redact_get(){return this.redact}redact_set(e){this.redact=e,this.redactBlock_paint(),this.model!==null&&this.listing.rows_set([{key:this.model.path,rows:this.groups}],{field:this.model.path})}filter_set(e){if(e===null){this.listing.filter_toggle(!1);return}this.listing.filter_toggle(!0),this.listing.filter_set(e)}stateLine_compose(e){const t=this.groups.reduce((i,r)=>i+r.rows.length,0),s=[];return this.model!==null&&this.model.subject==="folder"&&(s.push(this.model.read===this.model.of?`${this.model.read} FILES`:`${this.model.read} OF ${this.model.of} FILES`),this.model.refused.length>0&&s.push(`REFUSED ${this.model.refused.length}`)),s.push(e.filter!==""?e.filter:`${t} TAGS`),this.redact&&s.push("REDACTED"),s.join(" · ")}redactBlock_paint(){this.redactBlock.textContent=this.redact?"REDACT ON":"REDACT OFF",this.redactBlock.classList.toggle("rail-off",!this.redact),this.pane.classList.toggle("tags-redacted",this.redact)}value_cell(e){const t=document.createElement("span");if(t.className="tags-value",e.phi&&this.redact)return t.textContent=Cp,t.title="identifying value, redacted; the REDACT block on the frame reveals it",t;if(t.textContent=e.value,e.decoded!==void 0){const s=document.createElement("span");s.className="tags-decoded",s.textContent=` ${e.decoded}`,t.appendChild(s)}if(e.distinct!==void 0){const s=document.createElement("span");s.className="tags-decoded",s.textContent=` (${e.distinct} distinct)`,t.appendChild(s)}return t}groupTraits_declare(){return[Oc(()=>!0),{key:"group",label:"GROUP",className:"tags-group-name",width:"minmax(12em, 1fr)",cell:e=>e.group.toUpperCase(),compare:e=>bM.indexOf(e.group)},{key:"count",label:"TAGS",className:"tags-group-count",width:"5em",cell:e=>String(e.rows.length),compare:e=>e.rows.length}]}tagTraits_declare(){return[Oc(e=>e.items.length>0),{key:"tag",label:"TAG",className:"tags-tag",width:"7em",cell:e=>e.tag,compare:e=>e.tag},{key:"name",label:"NAME",className:"tags-name",width:"minmax(8em, 1.4fr)",cell:e=>e.name,compare:e=>e.name.toLowerCase()},{key:"vr",label:"VR",className:"tags-vr",width:"2.4em",cell:e=>e.vr,compare:e=>e.vr},{key:"value",label:"VALUE",className:"tags-value-cell",width:"minmax(6em, 2fr)",cell:e=>this.value_cell(e),compare:e=>(e.phi&&this.redact?Cp:`${e.value} ${e.decoded??""}`).toLowerCase()}]}itemTraits_declare(){return[Oc(()=>!0),{key:"item",label:"ITEM",className:"tags-item-name",width:"minmax(12em, 1fr)",cell:e=>`ITEM ${e.index}`,compare:e=>e.index},{key:"count",label:"TAGS",className:"tags-group-count",width:"5em",cell:e=>String(e.rows.length),compare:e=>e.rows.length}]}}function Oc(n){return{key:"fold",label:"",className:"tags-fold",capped:!1,width:"1.4em",cell:e=>{const t=document.createElement("span");return t.className=n(e)?"tags-fold":"tags-fold tags-fold-none",t}}}function DT(n){const e=new Map;for(const t of n.constant){const s=t.group;e.has(s)||e.set(s,[]),e.get(s)?.push(_M(t,`${s}/${t.tag}`))}return n.varying.length>0&&e.set("varying",n.varying.map(t=>({tag:t.tag,name:t.name,vr:t.vr,value:t.distinct===1?t.first:`${t.first} .. ${t.last}`,phi:t.phi,items:[],distinct:t.distinct,key:`varying/${t.tag}`}))),bM.filter(t=>e.has(t)).map(t=>({group:t,rows:e.get(t)??[]}))}function _M(n,e){return{tag:n.tag,name:n.name,vr:n.vr,value:n.value,...n.decoded!==void 0?{decoded:n.decoded}:{},phi:n.phi,items:(n.items??[]).map((t,s)=>({index:s+1,key:`${e}/${s+1}`,rows:t.map(i=>_M(i,`${e}/${s+1}/${i.tag}`))})),key:e}}function TT(n){const e=n.path.replace(/\/$/,"").split("/").pop()??n.path;if(n.subject==="folder")return e.length>24?`${e.slice(0,22)}…`:e;const t=/^(\d+)-/.exec(e)?.[1];return t!==void 0?`INSTANCE ${Number(t)}`:e.length>24?`${e.slice(0,22)}…`:e}function IT(n){const e=(n.constant.find(t=>t.name==="Modality")?.value??"").toUpperCase();return e==="MR"||e==="CT"||e==="PT"?e:"OT"}function GT(n){const e=document.createElement("div");return e.className="tags-note",e.textContent=n,e}function bo(n,e){const t=n.querySelector(e);if(t===null)throw new Error(`tags pane: missing ${e}`);return t}class RT{groups=new Map;membership=new Map;writeObserver=null;writeObserver_set(e){this.writeObserver=e}pane_join(e,t){this.pane_leave(e),this.membership.set(e,t),this.groups.has(t)||this.groups.set(t,{value:null,subscribers:new Map,viewers:new Set})}pane_leave(e){const t=this.membership.get(e);if(t===void 0)return;this.membership.delete(e);const s=this.groups.get(t);if(s!==void 0){s.subscribers.delete(e),s.viewers.delete(e);for(const i of this.membership.values())if(i===t)return;this.groups.delete(t)}}group_of(e){const t=this.membership.get(e);return t!==void 0?t:(this.pane_join(e,e),e)}viewer_mark(e){this.groups.get(this.group_of(e))?.viewers.add(e)}groupHasViewer(e){const t=this.groups.get(this.group_of(e));return t!==void 0&&t.viewers.size>0}regard_write(e,t){const s=this.group_of(e),i=this.groups.get(s),r={...t,paneId:e};i.value=r;for(const a of i.subscribers.values())a(r);this.writeObserver?.(r,s)}regard_subscribe(e,t){const s=this.groups.get(this.group_of(e));s.subscribers.set(e,t),s.value!==null&&t(s.value)}regard_get(e){return this.groups.get(this.group_of(e))?.value??null}}const xc=["⣾","⣽","⣻","⢿","⡿","⣟","⣯","⣷"],BT=new Set(["done","error","unconfirmed","stalled","timeout"]);function NT(n,e){const t=`${e.operation}:${e.itemId??""}`;if(e.phase==="complete"||e.phase==="failed"){const s=`${e.operation}:`;for(const i of[...n])(i===t||i.startsWith(s))&&n.delete(i);return}if(e.itemId!==void 0&&e.status!==void 0&&BT.has(e.status)){n.delete(t);return}n.add(t)}const CT=100;class PT{fields;buildShown=!1;running=new Set;activityTimer=null;activityFrame=0;constructor(e){this.fields={identity:di(e,"status-identity"),jobs:di(e,"status-jobs"),activity:di(e,"status-activity"),latency:di(e,"status-latency"),mismatch:di(e,"status-mismatch"),lamp:di(e,"status-lamp"),host:di(e,"status-host")}}attach_show(e){if(e.protocolVersion!==Tc){this.fields.mismatch.textContent=`WIRE V${e.protocolVersion} ≠ V${Tc}`,this.fields.mismatch.title="This surface and the daemon speak different contract versions. Some messages may be dropped.",this.hostControl_show(e.hostControl??[]);return}this.fields.mismatch.textContent="",this.fields.mismatch.title=e.stack!==void 0?`chell ${e.stack.chell} · calypso ${e.stack.calypso} · build ${e.stack.build}`:"",this.hostControl_show(e.hostControl??[])}build_show(e,t=""){this.fields.mismatch.textContent!==""&&!this.buildShown||(this.buildShown=e!==null,this.fields.mismatch.textContent=e??"",this.fields.mismatch.title=t)}hostControl_show(e){this.fields.host.textContent=e.length>0?`HOST ${e.join(" ")}`:"",this.fields.host.title=e.length>0?"Calypso was started with --host-control: `!` and pipes run on its host, upload/download reach its disk.":""}promptContext_show(e){const t=e.uri.replace(/^https?:\/\//,"");this.fields.identity.textContent=`${e.user}@${t}`.toUpperCase();const s=e.procWarmup,i=[];if(s!==void 0&&s.sweeping!==!1){const o=s.total!==void 0?`/${s.total}`:"",l=s.state!==void 0?` ${s.state.toUpperCase()}`:"";i.push(`JOBS ${s.loaded}${o}${l}`)}const r=s?.feeds??(s?.feed!==void 0?[s.feed]:[]);for(const o of r){const l=o.total>0?`/${o.total}`:"";i.push(o.failed!==void 0?`FEED ${o.id} FAILED ${o.loaded}${l}`:`FEED ${o.id} ${o.loaded}${l}`)}s?.roster!==void 0&&i.push(s.roster==="full"?"ROSTER WALK":"ROSTER DELTA"),s?.arrived!==void 0&&s.arrived.length>0&&i.push(s.arrived.length<=2?`+FEED ${s.arrived.join(" ")}`:`+${s.arrived.length} FEEDS`);const a=e.warmupFailures??[];a.length>0&&i.push(`WARM-UP FAILED: ${a.map(o=>o.label.toUpperCase()).join(" ")}`),this.fields.jobs.textContent=i.join(" · "),this.fields.jobs.classList.toggle("status-degraded",a.length>0),this.fields.jobs.title=a.length>0?a.map(o=>`${o.label}: ${o.message}`).join(`
|
|
4241
4241
|
`):r.length>0?"A feed is being indexed on its first visit; it opens when the walk completes.":"",this.fields.latency.textContent=e.lastCommandDurationMs>0?`${e.lastCommandDurationMs}MS`:""}progress_observe(e){NT(this.running,e),this.activity_paint()}activity_clear(){this.running.clear(),this.activity_paint()}connection_show(e){this.fields.lamp.textContent=e?"ONLINE":"OFFLINE",this.fields.lamp.classList.toggle("lamp-online",e),this.fields.lamp.classList.toggle("lamp-offline",!e),e||this.activity_clear()}activity_paint(){if(this.running.size===0){this.activityTimer!==null&&(clearInterval(this.activityTimer),this.activityTimer=null),this.fields.activity.textContent="";return}const e=()=>{const t=xc[this.activityFrame]??xc[0];this.fields.activity.textContent=`${t} ${this.running.size} RUNNING`};e(),this.activityTimer===null&&(this.activityTimer=window.setInterval(()=>{this.activityFrame=(this.activityFrame+1)%xc.length,e()},CT))}}function di(n,e){const t=n.getElementById(e);if(t===null)throw new Error(`status bar: no element with id '${e}'`);return t}function LT(n){return n>=6e4?`${Math.max(1,Math.round(n/6e4))} MIN`:`${Math.max(1,Math.round(n/1e3))} S`}function Ss(n){return n.toLocaleString("en-US")}class WT{mount;counts=null;context=null;msPerPage=null;walkSamples=new Map;clock;acts;state=void 0;constructor(e,t=()=>Date.now(),s={}){this.mount=e,this.clock=t,this.acts=s,this.render()}state_show(e){this.state=e,this.render()}pace_show(e){this.msPerPage=e,this.render()}eta_of(e,t,s){const i=this.clock(),r=this.walkSamples.get(e);let a=r?.rowsPerMs??null;r!==void 0&&t>r.loaded&&i>r.at&&(a=(t-r.loaded)/(i-r.at)),(r===void 0||t!==r.loaded)&&this.walkSamples.set(e,{loaded:t,at:i,rowsPerMs:a});const o=Math.max(0,s-t);return s<=0?null:a!==null&&a>0?o/a:this.msPerPage!==null&&this.msPerPage>0?Math.ceil(o/100/4)*this.msPerPage:null}counts_show(e){this.counts=e,this.render()}promptContext_show(e){this.context=e,e.procIndex!==void 0&&(this.counts={jobs:e.procIndex.jobs,feeds:e.procIndex.feeds}),this.render()}rows_compose(){const e=[],t=this.context?.procWarmup,s=this.context?.warmupFailures??[],i=t!==void 0&&t.sweeping!==!1,r=this.counts!==null?`${Ss(this.counts.jobs)} JOBS · ${Ss(this.counts.feeds)} FEEDS`:"";if(s.length>0)e.push({label:"INDEX",bar:null,value:`${r}${r?" · ":""}FAILED: ${s.map(l=>l.label.toUpperCase()).join(" ")}`,title:s.map(l=>`${l.label}: ${l.message}`).join(`
|
|
4242
4242
|
`),degraded:!0});else if(i&&t!==void 0){const l=(t.state??"cold").toUpperCase();e.push({label:"INDEX",bar:{loaded:t.loaded,total:t.total??0,state:t.state==="failed"?"failed":"running"},value:`SWEEP ${Ss(t.loaded)} / ${t.total!==void 0?Ss(t.total):"?"} · ${l}`,title:"The global topology sweep: every plugin instance CUBE holds, walked page by page.",degraded:t.state==="failed"})}else e.push({label:"INDEX",bar:null,value:r?`${r} · CURRENT`:"CURRENT",title:"Nothing is moving: the process index is whole and current.",degraded:!1});if(this.state!==void 0){const l=this.state;e.push({label:"RUNNING",bar:null,value:`${Ss(l.running)} IN ${Ss(l.runningFeeds)} FEEDS · SCHEDULED ${Ss(l.scheduled)}`,title:"Jobs running and waiting across every feed the index holds, from the roster's own counters.",degraded:!1,verb:this.acts.errored_open!==void 0?{label:`ERRORED ${Ss(l.errored)} IN ${Ss(l.erroredFeeds)} FEEDS`,title:"Open the runs roster filtered to the feeds with errored jobs.",act:this.acts.errored_open}:null})}const a=t?.feeds??(t?.feed!==void 0?[t.feed]:[]);for(const l of Array.from(this.walkSamples.keys()))a.some(c=>c.id===l)||this.walkSamples.delete(l);for(const l of a){const c=l.total>0?Ss(l.total):"?";if(l.failed!==void 0)e.push({label:`FEED ${l.id}`,bar:{loaded:l.loaded,total:l.total,state:"failed"},value:`FAILED AT ${Ss(l.loaded)} / ${c} · ${l.failed.toUpperCase()}`,title:"The walk stopped; the next visit to the feed starts it again.",degraded:!0});else{const d=this.eta_of(l.id,l.loaded,l.total);e.push({label:`FEED ${l.id}`,bar:{loaded:l.loaded,total:l.total,state:"running"},value:`INDEXING ${Ss(l.loaded)} / ${c}${d!==null?` · ETA ${LT(d)}`:""}`,title:"A feed is being indexed on its first visit; it opens when the walk lands.",degraded:!1})}}t?.roster!==void 0&&e.push({label:"ROSTER",bar:null,value:t.roster==="full"?"FULL WALK · every feed the identity can see":"DELTA · feeds newer than the roster knows",title:"The roster is being brought up to date; the listing answered from the cache and refreshes when arrivals land.",degraded:!1});const o=t?.arrived??[];return o.length>0&&e.push({label:"ARRIVED",bar:null,value:o.length<=3?o.map(l=>`FEED ${l}`).join(" · "):`${o.length} FEEDS`,title:"Feeds the roster gained: created here, or shared with this identity.",degraded:!1}),e}render(){const e=this.rows_compose();this.mount.replaceChildren();for(const t of e){const s=document.createElement("div");s.className="index-row telemetry-row",s.classList.toggle("status-degraded",t.degraded),s.title=t.title;const i=document.createElement("span");if(i.className="telemetry-label",i.textContent=t.label,s.appendChild(i),t.bar!==null){const a=document.createElement("span");a.className=`index-bar listing-progress listing-progress-${t.bar.state}`;const o=document.createElement("span");o.className="listing-progress-fill";const l=t.bar.total>0?Math.min(100,Math.round(t.bar.loaded/t.bar.total*100)):0;o.style.width=`${l}%`,a.appendChild(o),s.appendChild(a)}const r=document.createElement("span");if(r.className="telemetry-value",r.textContent=t.value,s.appendChild(r),t.verb!==void 0&&t.verb!==null){const a=document.createElement("button");a.type="button",a.className="index-verb pacs-capsule",a.textContent=t.verb.label,a.title=t.verb.title,a.addEventListener("click",t.verb.act),s.appendChild(a)}this.mount.appendChild(s)}}}const kT=3e3;class UT{mount;clock;lane=void 0;cube=void 0;beatAt=null;constructor(e,t=()=>Date.now()){this.mount=e,this.clock=t,this.render()}telemetry_show(e={}){this.beatAt=this.clock(),e.lane!==void 0&&(this.lane=e.lane),e.cube!==void 0&&(this.cube=e.cube),this.render()}tick(){this.render()}rows_compose(){const e=[],t=this.lane;if(t===void 0)e.push({label:"LANE",value:"—",title:"The daemon has not said what holds its lane (an older daemon).",degraded:!1});else if(t.running===null)e.push({label:"LANE",value:t.waiting>0?`IDLE · ${t.waiting} WAITING`:"IDLE",title:"The serialized command lane: nothing is executing.",degraded:!1});else{const i=(t.running.sinceMs/1e3).toFixed(1);e.push({label:"LANE",value:`${t.running.line} · ${i} S${t.waiting>0?` · ${t.waiting} WAITING`:""}`,title:`The command holding the lane${t.running.surface?`, from surface ${t.running.surface}`:""}; every other command waits behind it.`,degraded:t.running.sinceMs>=1e4})}if(this.beatAt===null)e.push({label:"BEAT",value:"NONE YET",title:"No telemetry heartbeat has landed.",degraded:!1});else{const i=Math.max(0,this.clock()-this.beatAt);e.push({label:"BEAT",value:`${(i/1e3).toFixed(1)} S AGO`,title:"The age of the last telemetry heartbeat; the daemon beats once a second while a surface is attached.",degraded:i>=kT})}const s=this.cube;if(s===void 0)e.push({label:"CUBE",value:"NO PAGE TIMED",title:"CUBE's pace is known once a page of a list has been fetched.",degraded:!1});else{const i=s.msPerPage>0?Math.round(6e4/s.msPerPage):0;e.push({label:"CUBE",value:`${(s.msPerPage/1e3).toFixed(1)} S/PAGE · ${i} PAGES/MIN`,title:`The median of the last ${s.samples} page fetches (100 rows each).`,degraded:!1})}return e}render(){const e=this.rows_compose();this.mount.replaceChildren();for(const t of e){const s=document.createElement("div");s.className="lane-row telemetry-row",s.classList.toggle("status-degraded",t.degraded),s.title=t.title;const i=document.createElement("span");i.className="telemetry-label",i.textContent=t.label;const r=document.createElement("span");r.className="telemetry-value",r.textContent=t.value,s.append(i,r),this.mount.appendChild(s)}}}const FT=[2,3,3,2,2,11,2,2],jT=4,Pp=300,$T=2600,VT=650;class HT{wrapper;cells=[];bootedAt=Date.now();telemetry={jobsLoaded:0,jobsTotal:0,feeds:0,lastLatencyMs:0,latencySumMs:0,lastExitCode:0,commandsRun:0,opsActive:0,opsDone:0,opsFailed:0,itemsCurrent:0,itemsTotal:0,connected:0};activeOperations=new Set;telemetryRows=[];constructor(e){if(this.wrapper=e,e===null){window.setInterval(()=>this.beat_paint(),Pp);return}const t=this.narrowSources_list(),s=this.wideSources_list();let i=0,r=0;for(const a of FT){const o=document.createElement("div");o.className="data-column";for(let l=1;l<=jT;l++){const c=document.createElement("div");c.className=`dc-row-${l}`;let d;a>=6?(d=s[r%s.length],r++):(d=t[i%t.length],i++);const u={element:c,width:a,source:d??(()=>0)};c.textContent=Lp(u.source(),a),o.appendChild(c),this.cells.push(u)}e.appendChild(o)}window.setInterval(()=>this.beat_paint(),Pp),this.sweep_start()}promptContext_observe(e){const t=e.procWarmup;t!==void 0&&(this.telemetry.jobsLoaded=t.loaded,this.telemetry.jobsTotal=t.total??t.loaded);const s=e.procIndex;s!==void 0&&(t===void 0&&(this.telemetry.jobsLoaded=s.jobs,this.telemetry.jobsTotal=s.jobs),this.telemetry.feeds=s.feeds),e.lastCommandDurationMs>0&&(this.telemetry.lastLatencyMs=e.lastCommandDurationMs,this.telemetry.latencySumMs+=e.lastCommandDurationMs,this.telemetry.commandsRun++),this.telemetry.lastExitCode=e.lastExitCode}progress_observe(e){const t=`${e.operation}:${e.itemId??""}`;if(e.phase==="complete"||e.phase==="failed"){const s=`${e.operation}:`;for(const i of[...this.activeOperations])(i===t||i.startsWith(s))&&this.activeOperations.delete(i);e.status==="error"||e.phase==="failed"?this.telemetry.opsFailed++:this.telemetry.opsDone++}else e.itemId!==void 0&&e.status!==void 0&&["done","error","unconfirmed","stalled","timeout"].includes(e.status)?this.activeOperations.delete(t):this.activeOperations.add(t);this.telemetry.opsActive=this.activeOperations.size,e.current!==void 0&&(this.telemetry.itemsCurrent=e.current),e.total!==void 0&&(this.telemetry.itemsTotal=e.total)}index_observe(e){this.telemetry.jobsLoaded=e.jobs,this.telemetry.jobsTotal=e.jobs,this.telemetry.feeds=e.feeds}connection_show(e){this.telemetry.connected=e?1:0,this.wrapper?.classList.toggle("dc-stale",!e)}telemetryPanel_bind(e){const t=this.telemetry,s=[["LINK",()=>t.connected===1?"ONLINE":"OFFLINE"],["JOBS INDEXED",()=>`${t.jobsLoaded} / ${t.jobsTotal}`],["FEEDS VISIBLE",()=>String(t.feeds)],["OPS ACTIVE",()=>String(t.opsActive)],["OPS DONE",()=>String(t.opsDone)],["OPS FAILED",()=>String(t.opsFailed)],["ITEMS",()=>`${t.itemsCurrent} / ${t.itemsTotal}`],["LAST COMMAND",()=>`${t.lastLatencyMs} MS`],["LATENCY SUM",()=>`${t.latencySumMs} MS`],["COMMANDS RUN",()=>String(t.commandsRun)],["LAST EXIT",()=>String(t.lastExitCode)],["UPTIME",()=>`${this.uptimeSeconds_get()} S`]];for(const[i,r]of s){const a=document.createElement("div");a.className="telemetry-row";const o=document.createElement("span");o.className="telemetry-label",o.textContent=i;const l=document.createElement("span");l.className="telemetry-value",l.textContent=r(),a.append(o,l),e.appendChild(a),this.telemetryRows.push({element:l,source:r})}}narrowSources_list(){const e=this.telemetry;return[()=>e.jobsLoaded,()=>e.feeds,()=>e.lastLatencyMs,()=>e.opsActive,()=>e.opsDone,()=>e.jobsTotal,()=>e.itemsCurrent,()=>e.itemsTotal,()=>e.opsFailed,()=>e.commandsRun,()=>e.lastExitCode,()=>new Date().getSeconds(),()=>this.uptimeSeconds_get()]}wideSources_list(){return[()=>Math.floor(Date.now()/1e3),()=>this.uptimeSeconds_get(),()=>this.telemetry.latencySumMs,()=>qT()]}uptimeSeconds_get(){return Math.floor((Date.now()-this.bootedAt)/1e3)}beat_paint(){for(const e of this.cells){const t=Lp(e.source(),e.width);e.element.textContent!==t&&(e.element.textContent=t)}for(const e of this.telemetryRows){const t=e.source();e.element.textContent!==t&&(e.element.textContent=t)}}sweep_start(){if(this.wrapper===null)return;const e=Array.from(this.wrapper.querySelectorAll(".data-column"));window.setInterval(()=>{const t=e[Math.floor(Math.random()*e.length)];t!==void 0&&(t.classList.add("dc-sweep"),window.setTimeout(()=>t.classList.remove("dc-sweep"),VT))},$T)}}function Lp(n,e){const t=String(Math.max(0,Math.floor(n)));return t.length>e?t.slice(t.length-e):t.padStart(e,"0")}function qT(){const n=new Date;return n.getHours()*1e4+n.getMinutes()*100+n.getSeconds()}const XT=2e4;class KT{scene;nameplate;command_run;names=[];cursor=0;timer=null;seen=new Map;constructor(e,t,s){this.nameplate=t,this.command_run=s,this.scene=new vl(e,{},{ambient:!0}),new MutationObserver(()=>this.scene.palette_refresh()).observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme"]}),new MutationObserver(()=>{window.setTimeout(()=>this.scene.size_fit(),60)}).observe(document.body,{attributes:!0,attributeFilter:["data-header"]}),window.addEventListener("resize",()=>this.scene.size_fit())}names_set(e){this.names=e,this.cursor=0,this.timer!==null&&(window.clearInterval(this.timer),this.timer=null),e.length!==0&&(this.next_request(),e.length>1&&(this.timer=window.setInterval(()=>this.next_request(),XT)))}envelope_observe(e){if(e.model?.kind!==Vn.pipelineDiagram)return;const t=Qd.safeParse(e.model.data);if(!t.success)return;const s=t.data;this.seen.set(s.name,s),this.model_stage(s)}model_stage(e){this.nameplate.textContent=e.name,this.scene.graph_set({nodes:e.nodes.map(t=>({id:t.id,label:t.label,parentIds:t.parentIds,joinParentIds:t.joinParentIds}))}),this.scene.size_fit()}next_request(){const e=this.names[this.cursor%this.names.length];if(this.cursor++,e===void 0)return;const t=this.seen.get(e);if(t!==void 0){this.model_stage(t);return}this.command_run(`pipeline diagram ${e}`)}}function YT(n,e){n.line_execute("ls /bin",{silent:!0,observe:!1}).then(t=>{const r=(t.envelopes.find(a=>a.model?.kind==="fs.listing")?.model?.data??[]).flatMap(a=>a.items).filter(a=>a.type==="pipeline").map(a=>a.name);e.names_set(r)})}const ZT=new Set(["files","dag","pacs"]);function Wp(n){return ZT.has(n)}const zM=new Map,Nr=new Map;let QT=0;function Ls(n,e){zM.set(n,e)}function JT(n){const e=zM.get(n);if(e===void 0)throw new Error(`no pane factory registered for kind '${n}'`);const t=e(`${n}-${QT++}`);return Nr.set(t.id,t),t}function hr(n){Nr.set(n.id,n)}function Io(n){return Nr.get(n)}function Go(){return[...Nr.values()]}function cs(n){const e=Nr.get(n);e!==void 0&&(Nr.delete(n),e.dispose?.(),e.mount.remove())}class eI{byId=new Map;set(e,t,s){this.byId.set(t,{kind:e,panel:s})}get(e,t){const s=this.byId.get(t);return s!==void 0&&s.kind===e?s.panel:void 0}has(e,t){return this.byId.get(t)?.kind===e}delete(e){return this.byId.delete(e)}ids(e){return this.entries(e).map(([t])=>t)}entries(e){const t=[];for(const[s,i]of this.byId)i.kind===e&&t.push([s,i.panel]);return t}values(e){return this.entries(e).map(([,t])=>t)}idOf(e,t){for(const[s,i]of this.byId)if(i.kind===e&&i.panel===t)return s;return null}}function wa(n,e){if("pane"in n)return n.pane===e?[]:null;const t=wa(n.first,e);if(t!==null)return[{node:n,side:"first"},...t];const s=wa(n.second,e);return s!==null?[{node:n,side:"second"},...s]:null}function ya(n,e,t){if(n===e)return t;if("pane"in n)return null;const s=ya(n.first,e,t);if(s!==null)return{...n,first:s};const i=ya(n.second,e,t);return i!==null?{...n,second:i}:null}function kp(n,e,t){const s=wa(n,e);if(s===null||s.length===0)return"lone";const i=Rs[t].axis,r=Rs[t].place==="after"?"first":"second",a=s[s.length-1];let o=null;for(let u=s.length-1;u>=0;u-=1){const h=s[u];if(h.node.dir===i&&h.side===r){o=h.side==="first"?h.node.second:h.node.first;break}}if(o===null){if(a.node.dir===i)return"edge";o=a.side==="first"?a.node.second:a.node.first}const l=ol(n,e);if(l===null)return"lone";const c={pane:e};return ya(l,o,r==="first"?{dir:i,ratio:.5,first:o,second:c}:{dir:i,ratio:.5,first:c,second:o})??"edge"}const Up="argus-layout";class tI{root;mounts;presets=new Map;prefs={};activePreset="";tree=null;focusedPane=null;renderObserver=null;previousFocus=null;constructor(e,t){this.root=e,this.mounts=t;try{const s=window.localStorage.getItem(Up);this.prefs=s!==null?JSON.parse(s):{}}catch{this.prefs={}}}renderObserver_set(e){this.renderObserver=e}preset_register(e,t){this.presets.set(e,t)}mount_register(e,t){this.mounts.set(e,t)}mount_remove(e){this.mounts.delete(e),this.focusedPane===e&&(this.focusedPane=null)}leaf_split(e,t,s,i=!1){if(this.tree===null)return!1;const r=al(this.tree,e,{dir:t,ratio:.5,first:i?{pane:s}:{pane:e},second:i?{pane:e}:{pane:s}});return r===null?!1:(this.tree=r,this.focusedPane=s,this.render(),!0)}leaf_move(e,t){if(this.tree===null)return"lone";const s=kp(this.tree,e,t);return typeof s=="string"?s:(this.tree=s,this.focusedPane=e,this.render(),!0)}focus_last(){const e=this.previousFocus;return e===null||!this.panes_shown().includes(e)?null:(this.focus_set(e),e)}leaf_flip(e){if(this.tree===null)return!1;const t=wa(this.tree,e);if(t===null||t.length===0)return!1;const s=t[t.length-1],i={...s.node,dir:s.node.dir==="col"?"row":"col"},r=ya(this.tree,s.node,i);return r===null?!1:(this.tree=r,this.render(),!0)}leaf_resize(e,t,s=.05){if(this.tree===null)return!1;const i=wa(this.tree,e);if(i===null||i.length===0)return!1;const r=Rs[t].axis;for(let a=i.length-1;a>=0;a-=1){const o=i[a];if(o.node.dir!==r)continue;const l=Rs[t].place==="after",c=Math.min(.85,Math.max(.15,o.node.ratio+(l?s:-s))),d={...o.node,ratio:c},u=ya(this.tree,o.node,d);return u===null?!1:(this.tree=u,this.ratio_remember(i.slice(0,a).map(h=>h.side==="first"?"0":"1").join(""),c),this.render(),!0)}return!1}move_possible(e,t){return this.tree!==null&&typeof kp(this.tree,e,t)!="string"}leaf_replace(e,t){if(this.tree===null)return!1;const s=al(this.tree,e,{pane:t});return s===null?!1:(this.tree=s,this.focusedPane===e&&(this.focusedPane=t),this.render(),!0)}leaf_close(e){if(this.tree===null||"pane"in this.tree)return!1;const t=ol(this.tree,e);return t===null?!1:(this.tree=t,this.focusedPane===e&&(this.focusedPane=null),this.render(),!0)}focused_get(){return this.focusedPane}savedPreset_get(){return this.prefs.preset!==void 0&&this.presets.has(this.prefs.preset)?this.prefs.preset:null}activePreset_get(){return this.activePreset}preset_apply(e){const t=this.presets.get(e);t!==void 0&&(this.activePreset=e,this.prefs.preset=e,this.prefs_save(),this.tree=this.ratios_restore(t(),e,""),this.render(),this.root.classList.remove("layout-arrive"),this.root.offsetWidth,this.root.classList.add("layout-arrive"))}tree_get(){return this.tree===null?null:JSON.parse(JSON.stringify(this.tree))}tree_set(e){this.tree=this.ratios_restore(e,this.activePreset,""),this.render()}panes_shown(){const e=[],t=s=>{if(s!==null){if("pane"in s){e.push(s.pane);return}t(s.first),t(s.second)}};return t(this.tree),e}render(){if(this.tree!==null){for(const e of this.mounts.values())e.remove();this.root.replaceChildren(this.node_render(this.tree,"")),this.focus_reconcile(),this.renderObserver?.()}}focus_reconcile(){const e=this.panes_shown();if(this.focusedPane!==null&&e.includes(this.focusedPane))return;const t=e[0];if(t===void 0)return;const s=this.focusedPane;this.focusedPane=null,this.focus_set(t),s!==null&&(this.previousFocus=s)}node_render(e,t){if("pane"in e){const o=document.createElement("div");o.className="layout-leaf",o.dataset.leaf=e.pane;const l=this.mounts.get(e.pane);return l!==void 0&&(o.appendChild(l),l.style.display="",o.addEventListener("mousedown",()=>this.focus_set(e.pane),{capture:!0}),e.pane===this.focusedPane&&o.classList.add("pane-focused")),o}const s=document.createElement("div");s.className=`layout-split layout-${e.dir}`;const i=this.node_render(e.first,`${t}0`),r=this.node_render(e.second,`${t}1`);i.style.flex=`${e.ratio} 1 0`,r.style.flex=`${1-e.ratio} 1 0`;const a=document.createElement("div");return a.className="layout-divider",this.divider_wire(a,s,e,i,r,t),s.append(i,a,r),s}divider_wire(e,t,s,i,r,a){let o=!1;e.addEventListener("mousedown",l=>{o=!0,l.preventDefault()}),window.addEventListener("mousemove",l=>{if(!o)return;const c=t.getBoundingClientRect(),d=s.dir==="col"?(l.clientX-c.left)/c.width:(l.clientY-c.top)/c.height;s.ratio=Math.min(.85,Math.max(.15,d)),i.style.flex=`${s.ratio} 1 0`,r.style.flex=`${1-s.ratio} 1 0`}),window.addEventListener("mouseup",()=>{o&&(o=!1,this.ratio_remember(a,s.ratio),this.renderObserver?.())})}focus_set(e){if(this.focusedPane===e)return;this.focusedPane!==null&&(this.previousFocus=this.focusedPane),this.focusedPane=e,document.body.dataset.focus=e;for(const s of this.root.querySelectorAll(".layout-leaf"))s.classList.remove("pane-focused");this.mounts.get(e)?.parentElement?.classList.add("pane-focused")}ratios_restore(e,t,s){if("pane"in e)return e;const i=this.prefs.ratios?.[`${t}:${s}`];return{...e,ratio:i??e.ratio,first:this.ratios_restore(e.first,t,`${s}0`),second:this.ratios_restore(e.second,t,`${s}1`)}}ratio_remember(e,t){this.prefs.ratios={...this.prefs.ratios??{},[`${this.activePreset}:${e}`]:t},this.prefs_save()}prefs_save(){try{window.localStorage.setItem(Up,JSON.stringify(this.prefs))}catch{}}}function al(n,e,t){if("pane"in n)return n.pane===e?t:null;const s=al(n.first,e,t);if(s!==null)return{...n,first:s};const i=al(n.second,e,t);return i!==null?{...n,second:i}:null}function ol(n,e){if("pane"in n)return null;if("pane"in n.first&&n.first.pane===e)return n.second;if("pane"in n.second&&n.second.pane===e)return n.first;const t=ol(n.first,e);if(t!==null)return{...n,first:t};const s=ol(n.second,e);return s!==null?{...n,second:s}:null}const sI=4e3;function nI(n){const e=new WeakMap,t=(o,l)=>{const c=n.paneInstance_get(o)?.mount.querySelector(".pane-state")??null;if(c===null)return;const d=e.get(c);d!==void 0&&clearTimeout(d);const u={text:c.textContent??"",className:c.className};Yt(c,"note",l),e.set(c,setTimeout(()=>{e.delete(c),c.textContent===l&&(c.className=u.className,c.textContent=u.text)},sI))};return{bar_note:t,move:(o,l)=>{const c=n.layout.leaf_move(o,l);return c==="lone"?"pane move: the only pane on stage":c==="edge"?`pane move ${l}: already ${Rs[l].edge}`:(t(o,`MOVED ${l.toUpperCase()}`),n.sound("audio3"),`moved ${l}`)},flip:o=>n.layout.leaf_flip(o)?(t(o,"FLIPPED"),n.sound("audio3"),"flipped"):"pane flip: the only pane on stage",resize:(o,l,c)=>n.layout.leaf_resize(o,l,c)?`resized ${Rs[l].focusWord}`:`pane resize ${Rs[l].focusWord}: no boundary that way`,chordKeys_of:(o,l)=>{const c=Di.filter(d=>d.selector===o&&d.move===!0===l).map(d=>d.key);return c.length===0?"":` [keys ${c.join(" ")}]`}}}const iI={image:"viewer",view:"viewer",dir:"files",fs:"files",tags:"tags",empty:"pane",domain:"dag",catalogue:"catalogue",graph:"dag",gather:"gather",edit:"editor"},Sc=240;function rI(n,e){const{layout:t,panels:s,paneInstance_get:i,dormant:r}=n,a=new Map;let o=!1,l=null;const c=y=>i(y)?.kind??null,d=(y,z,w,O,S)=>{a.set(y,{parent:z,dir:w,before:O,...S!==void 0?{binding:S}:{}})},u=y=>{if(y==="pacs")return"⊞";if(y==="dag")return"⋔";const z=c(y);return z==="image"?"▣":z==="tags"?"≣":z==="edit"?"✎":"▤"},h=y=>{if(y.length===0)return;const z=[];for(const A of y){const I=i(A)?.mount;if(I===void 0)continue;const G=I.getBoundingClientRect();G.width>0&&G.height>0&&z.push({id:A,left:G.left,top:G.top,width:G.width,height:G.height})}if(z.length===0)return;const w=Math.min(...z.map(A=>A.left)),O=Math.min(...z.map(A=>A.top)),S=Math.max(...z.map(A=>A.left+A.width))-w,M=Math.max(...z.map(A=>A.top+A.height))-O;if(S<=0||M<=0)return;const v=Sc/S,E=Math.max(40,Math.min(260,Math.round(M*v)));try{const A=document.createElement("canvas");A.width=Sc,A.height=E;const I=A.getContext("2d");if(I===null)return;const N=getComputedStyle(document.documentElement).getPropertyValue("--harvestgold").trim()||"#c9a15a";I.fillStyle="#05070a",I.fillRect(0,0,Sc,E);for(const B of z){const C=Math.round((B.left-w)*v),L=Math.round((B.top-O)*v),H=Math.max(6,Math.round(B.width*v)),X=Math.max(6,Math.round(B.height*v)),oe=i(B.id)?.mount.querySelector("canvas");if(oe!=null&&oe.width>0){const te=Math.min(H/oe.width,X/oe.height),de=Math.round(oe.width*te),Le=Math.round(oe.height*te);I.fillStyle="#000",I.fillRect(C,L,H,X),I.drawImage(oe,C+Math.round((H-de)/2),L+Math.round((X-Le)/2),de,Le)}else I.fillStyle="rgba(255,255,255,0.05)",I.fillRect(C,L,H,X),I.fillStyle=N,I.font=`${Math.max(9,Math.min(28,Math.round(Math.min(H,X)*.5)))}px serif`,I.textAlign="center",I.textBaseline="middle",I.fillText(u(B.id),C+H/2,L+X/2+1);I.strokeStyle="rgba(255,255,255,0.22)",I.lineWidth=1,I.strokeRect(C+.5,L+.5,H-1,X-1)}return A.toDataURL("image/png")}catch{return}},p=(y,z,w)=>{const O=c(y),S=a.get(y),M={dir:S?.dir??"col",side:My(S?.before??!1)};if(Wp(y)){const E=z==="dag"?"runs":z,A=z==="pacs"?e.pacsQuery_get():null,I=z==="dag"?s.get("dag","dag"):void 0,G=I!==void 0&&I.graph_isShown()?I.feed_get():null,N=G!==null&&I!==void 0?I.view_lines():[],B=G!==null?I?.feedTitle_get():void 0;return{action:{op:"domain",domain:E,...A!==null?{query:A}:{},...G!==null?{feed:G}:{},...N.length>0?{view:N}:{}},...B!==void 0?{label:B}:{}}}if(S?.binding==="fs"||S?.binding==="view"||S?.binding==="empty")return{action:{op:S.binding,target:w,...M}};if(O==="image"){const E=s.get("image",y),A=E?.state_get()??null;if(E===void 0||A===null||A.path===null)return null;const I=[];A.layout!=="single"&&I.push(`image layout ${A.layout}`),A.colormap!==void 0&&A.colormap!=="gray"&&I.push(`image colormap ${A.colormap}`),A.voi!==void 0&&A.voi!==null&&I.push(`image wl ${A.voi.lower} ${A.voi.upper}`),A.slice>1&&I.push(`image slice ${A.slice}`),A.ghost!==void 0&&A.ghost!==null&&A.layout==="slab"&&I.push(`image ghost ${A.ghost}`);const G=E.series_get(),N=[G?.seriesDescription??"",G?.modality??""].filter(B=>B!=="");return{action:{op:"image",path:A.path,target:w,...M,...I.length>0?{view:I}:{}},anchor:A.path,...N.length>0?{label:N.join(" · ")}:{}}}const v=e.catalogue_of(y);if(v!==void 0){const E=s.get("files",y)?.commandLine_get()??"";return{action:{op:"catalogue",input:v.input,target:w,...M,...v.feed!==null?{feed:v.feed}:{},...v.node!==null?{node:v.node}:{},...E!==""?{line:E}:{}},label:`PROCESS ${v.input.split("/").filter(Boolean).pop()??v.input}`}}if(O==="files"){const E=s.get("files",y)?.path_current()??null;return typeof E!="string"||E.length===0?null:{action:{op:"dir",path:E,target:w,...M}}}if(O==="gather"){const E=s.get("gather",y);if(E===void 0)return null;const A=[...E.entries_get()],I=E.name_get(),G=E.feed_get();return{action:{op:"gather",series:A,target:w,...M,...I!==null?{name:I}:{},...G!==null?{feed:G.feedId,root:{instance:G.rootInstanceId,path:G.path}}:{}},label:I??`GATHER · ${A.length} series`}}if(O==="dag"){const E=s.get("dag",y)?.feed_get()??null;return E===null?null:{action:{op:"graph",feed:E,target:w,...M}}}if(O==="tags")return{action:{op:"tags",target:w,...M}};if(O==="edit"){const E=s.get("edit",y)?.path_get()??null;return E===null?null:{action:{op:"edit",path:E,target:w,...M},label:`EDIT ${E.split("/").pop()??E}`}}return null},f=()=>{if(o)return;const y=new Set(t.panes_shown()),z=t.activePreset_get();if(z==="panes"||z==="launcher")return;const w=Go().map(X=>X.id).filter(X=>y.has(X)),O=new Map;let S,M;const v=[];for(const X of w){const oe=O.get(a.get(X)?.parent??"")??0,te=p(X,z,oe);te!==null&&(O.set(X,v.length),v.push(te.action),te.anchor!==void 0?S===void 0&&(S=te.anchor,te.label!==void 0&&(M=te.label)):te.label!==void 0&&M===void 0&&(M=te.label))}const E=v.filter(X=>X.op!=="domain"||X.feed!==void 0);if(E.length===0)return;const A=h(w),I=X=>{if("pane"in X){const de=O.get(X.pane);return de===void 0?null:{leaf:de}}const oe=I(X.first),te=I(X.second);return oe===null?te:te===null?oe:{dir:X.dir,ratio:X.ratio,first:oe,second:te}},G=t.tree_get(),N=G===null?null:I(G),B=[...new Set(E.map(X=>iI[X.op]??"pane"))];let C,L,H;if(S!==void 0)C=S,L=M??S.split("/").pop()??S,H={address:S,modelKind:"dicom.series"};else{const X=E.map(de=>de.path).find(de=>de!==void 0),oe=E.map(de=>de.path??(de.input!==void 0?`catalogue:${de.input}`:de.series!==void 0?`gather:${de.series.map(Le=>Le.seriesUID).join(",")}`:de.feed!==void 0?`feed:${de.feed}`:de.op)).sort().join("|"),te=z==="dag"?"RUNS":z.toUpperCase();C=`${z}:${oe}`,L=M!==void 0&&M!==""?M:X!==void 0?X.split("/").pop()??X:`${te} · ${E.length+1} panes`,H={address:C,modelKind:"argus.desktop"}}r.add({id:C,label:L,regard:H,members:B,actions:v,...N===null?{}:{shape:N},...A===void 0?{}:{thumbnail:A},lastTouched:Date.now()})},b=()=>{const y=new Set(t.panes_shown());for(const z of Go())y.has(z.id)||Wp(z.id)||z.id==="panes"||z.id==="launcher"||z.id==="universe"||(cs(z.id),t.mount_remove(z.id));e.stage_relight()},g=y=>{f(),t.preset_apply(y),b()},m=(y,z)=>{const w=v=>Go().filter(E=>t.panes_shown().includes(E.id)&&c(E.id)===v).map(E=>E.id),O={dir:y.dir??"col",before:y.side==="before"},S=v=>{l=O;try{return v()}finally{l=null}},M=(v,E)=>w(v).find(A=>!E.has(A))??null;if(y.op==="domain"){const v=y.domain==="runs"?"dag":y.domain==="pacs"?"pacs":"files";if(g(v),y.query!==void 0&&n.terminal.line_run(y.query),y.feed!==void 0){const E=y.feed,A=y.view??[],I=s.get("dag","dag");if(I?.feed_enter(E),A.length>0&&I!==void 0){const G=N=>{if(I.graph_isShown()&&I.feed_get()===E){for(const B of A)n.terminal.line_run(B);return}N>0&&window.setTimeout(()=>G(N-1),250)};G(240)}}return v}if(z!==null&&t.focus_set(z),y.op==="image"&&y.path!==void 0){let v=null;const E=y.path,A=S(()=>e.image_open(null,E,{},N=>{v=N})),I=y.view,G=v;return I!==void 0&&I.length>0&&G!==null&&A.then(()=>{for(const N of I)t.focus_set(G),n.terminal.line_run(N)}).catch(()=>{}),v}if(y.op==="dir"&&y.path!==void 0){const v=new Set(w("files")),E=y.path;return S(()=>e.dir_open(E)),M("files",v)}if(y.op==="tags"){const v=new Set(w("tags"));return S(()=>n.terminal.line_run("image tags")),M("tags",v)}if(y.op==="catalogue"&&y.input!==void 0){const v=()=>e.catalogueIds().filter(G=>t.panes_shown().includes(G)),E=new Set(v()),A=y.input;S(()=>e.process_open(z??"files",{input:A,feed:y.feed??null,node:y.node??null}));const I=v().find(G=>!E.has(G))??null;return I!==null&&y.line!==void 0&&s.get("files",I)?.commandLine_set(y.line),I}if(y.op==="gather"&&y.series!==void 0){const v=[...y.series],E=S(()=>e.gather_open(v,z??"pacs"));return E!==null&&y.name!==void 0&&s.get("gather",E)?.name_set(y.name),E!==null&&y.feed!==void 0&&y.root!==void 0&&s.get("gather",E)?.feed_set({feedId:y.feed,rootInstanceId:y.root.instance,path:y.root.path}),E}if(y.op==="graph"&&y.feed!==void 0){const v=new Set(w("dag")),E=y.feed;return S(()=>e.feed_open(z??"files",E)),M("dag",v)}if(y.op==="edit"&&y.path!==void 0){const v=y.path;return S(()=>e.edit_open(v))}return y.op==="fs"||y.op==="view"||y.op==="empty"?z===null?null:e.pillPane_spawn(z,y.op,O.dir,O.before):null};return{birth_record:d,replayPlace_get:()=>l,replaying:()=>o,strip_capture:h,capture:f,orphans_dispose:b,domain_enter:g,restore:async y=>{const z=r.get(y);if(!(z===void 0||z.actions===void 0)){r.dismiss(y),o=!0;try{const w=[];for(const O of z.actions){const S=w[O.target??0]??null;w.push(m(O,S))}if(z.shape!==void 0){const O=M=>{if("leaf"in M){const A=w[M.leaf]??null;return A===null?null:{pane:A}}const v=O(M.first),E=O(M.second);return v===null?E:E===null?v:{dir:M.dir,ratio:M.ratio,first:v,second:E}},S=O(z.shape);S!==null&&!("pane"in S)&&t.tree_set(S)}}finally{o=!1,e.stage_relight()}}}}}const aI=2200;function oI(n){return/\x1b\[/.test(n)?Mn(n):ys(n).replace(/("[^&]*")/g,'<span class="man-str">$1</span>').replace(/(^|\s)(--?[a-zA-Z][\w-]*)/g,'$1<span class="man-flag">$2</span>').replace(/^(\s{0,2})([A-Za-z_ ]+):(\s)/gm,'$1<span class="man-key">$2:</span>$3').replace(/^([A-Z][A-Z ]{2,})$/gm,'<span class="man-head">$1</span>')}function lI(n,e,t,s){if(n===void 0)return[];const i=n.arguments??[],r=[{label:"NODE",value:`${n.label} · @${n.id}`},{label:"PLUGIN",value:n.pluginName},...n.pluginVersion!==void 0?[{label:"VERSION",value:n.pluginVersion}]:[]];if(e){const a=Ty(n.label,n.id,s);r.push(...i.length===0?[{label:"ARGUMENTS",value:"none — this node runs on the plugin's defaults"}]:i.map(o=>({label:o.name,value:String(o.value??""),...t?{edit:{flag:`--${a}.${o.name}`,type:typeof o.value=="boolean"?"boolean":"string",placeholder:String(o.value??"")}}:{}})))}else r.push({label:"ARGUMENTS",value:i.length===0?"none":`${i.length} — open the node to read them`});return r}function cI(n,e,t){const s=[{label:"PLUGIN",value:n.name},{label:"VERSION",value:n.version},{label:"TYPE",value:n.type.toUpperCase()}],i=n.parameters;if(!e)return s.push({label:"PARAMETERS",value:i.length===0?"none":`${i.length} — open the node to read them`}),s;if(i.length===0)return s.push({label:"PARAMETERS",value:"none — this plugin takes no arguments"}),s;for(const r of i){const a=[r.type];r.optional||a.push("required");const o=r.default===void 0||r.default===null?"":String(r.default);o!==""&&a.push(`default ${o}`);const l=a.join(" · ");s.push({label:r.flag,value:r.help===void 0?l:`${l} — ${r.help}`,...t?{edit:{flag:r.flag,type:r.type,placeholder:o}}:{}})}return s}function Fp(n,e,t,s){n.replaceChildren(),n.classList.toggle("dag-facts-immersed",t);for(const{label:i,value:r,edit:a}of e){const o=document.createElement("div");o.className="telemetry-row";const l=document.createElement("span");if(l.className="telemetry-label",l.textContent=i,o.appendChild(l),a===void 0||s===null){const c=document.createElement("span");c.className="telemetry-value",c.textContent=r,o.appendChild(c)}else{const c=Ey(s.line_get(),a.flag),d=document.createElement("input");d.className="telemetry-input",d.spellcheck=!1,d.autocomplete="off",d.title=`${a.flag} — ${r}`,a.type==="boolean"?(d.type="checkbox",d.checked=c===!0,d.addEventListener("change",()=>{s.line_set(Jh(s.line_get(),a.flag,d.checked?!0:null))})):(d.type="text",d.placeholder=a.placeholder,d.value=c===null||c===!0?"":c,d.addEventListener("input",()=>{s.line_set(Jh(s.line_get(),a.flag,d.value))}));const u=document.createElement("span");u.className="telemetry-hint",u.textContent=r,o.append(d,u)}n.appendChild(o)}}function dI(n,e,t,s){const i=n.closest(".files-body"),r=i?.querySelector(".diagram-strategy")??null,a=i?.querySelector(".diagram-projection")??null,o=i?.querySelector(".diagram-pulse")??null,l=s===void 0?null:i?.querySelector(".diagram-run")??null,c=()=>s?.(),d=()=>{const f=[];e.strategy_get()!=="ranked"&&f.push("MOLECULE"),e.projection_get()!=="3d"&&f.push("2D"),t.mode_annunciate(f.join(" · "))},u=()=>{e.strategy_set(e.strategy_get()==="ranked"?"molecule":"ranked"),r!==null&&(r.textContent=e.strategy_get().toUpperCase()),d()},h=()=>{e.projection_set(e.projection_get()==="3d"?"2d":"3d"),a!==null&&(a.textContent=e.projection_get().toUpperCase()),d()},p=()=>{e.wave_start(),o?.classList.add("pulse-running"),window.setTimeout(()=>o?.classList.remove("pulse-running"),aI)};return r!==null&&(r.textContent=e.strategy_get().toUpperCase()),a!==null&&(a.textContent=e.projection_get().toUpperCase()),r?.addEventListener("click",u),a?.addEventListener("click",h),o?.addEventListener("click",p),l?.addEventListener("click",c),d(),()=>{r?.removeEventListener("click",u),a?.removeEventListener("click",h),o?.removeEventListener("click",p),l?.removeEventListener("click",c),o?.classList.remove("pulse-running")}}function uI(n,e){let t=null;const s=(c,d,u,h)=>{let p=null,f=null;const b=c.contentHtml_show(d,"",{diagram:!0,release:()=>{t=null,f?.(),f=null,c.mode_annunciate(""),p?.dispose(),p=null}});b!==null&&u().then(g=>{if(!b.isConnected)return;if(g===null||g.nodes.length===0){b.textContent="NOTHING TO DRAW FOR THIS ENTRY",b.classList.add("files-diagram-empty");return}g.text!==""&&c.contentText_set(g.text);const m=document.createElement("div");m.className="dag-facts",$s(m),b.appendChild(m);const _=new vl(b,{select:w=>g.facts_show(m,w.id,!1,h),activate:w=>y(w),deselect:()=>m.replaceChildren()},{}),y=w=>{_.flight_into(w.id,()=>{t={scene:_,facts:m},g.facts_show(m,w.id,!0,h)})};p=_,_.graph_set({nodes:g.nodes},{wave:!1}),_.size_fit(),f=dI(b,_,c,h===null?void 0:h.run);const z=g.nodes.length===1?g.nodes[0]:void 0;z!==void 0&&y(z)})},i=async c=>{const d=/_id(\d+)$/.exec(c)?.[1]??c.replace(/^.*\//,""),[u,h]=await Promise.all([n.client.line_execute(`cat "${c}"`,{silent:!0,observe:!1}),n.client.line_execute(`pipeline diagram ${d}`,{silent:!0,observe:!1})]),p=u.envelopes.map(f=>f.rendered).join(`
|
|
4243
4243
|
`);for(const f of h.envelopes){if(f.model?.kind!==Vn.pipelineDiagram)continue;const b=Qd.safeParse(f.model.data);if(!b.success)continue;const g=new Map(b.data.nodes.map(m=>[m.id,m]));return{text:oI(p),nodes:b.data.nodes.map(m=>({id:m.id,label:m.label,parentIds:m.parentIds,joinParentIds:m.joinParentIds})),facts_show:(m,_,y,z)=>{const w=b.data.nodes.map(O=>O.label);Fp(m,lI(g.get(_),y,z!==null,w),y,z)}}}return null},r=async c=>{const d=c.replace(/^.*\//,""),u=await n.client.line_execute(`plugin info "${d}"`,{silent:!0,observe:!1});for(const h of u.envelopes){if(h.model?.kind!==N_)continue;const p=B_.safeParse(h.model.data);if(!p.success)continue;const f=p.data;return{text:"",nodes:[{id:d,label:f.name,parentIds:[],joinParentIds:[]}],facts_show:(b,g,m,_)=>{Fp(b,cI(f,m,_!==null),m,_)}}}return null},a=(c,d,u,h)=>{const p=e.catalogue_of(c);if(p===void 0)return null;const f=u.replace(/^.*\//,"");return ag(d.commandLine_get())!==f&&d.commandLine_set(ng(p.input,f)),{line_get:()=>d.commandLine_get(),line_set:b=>d.commandLine_set(b),run:()=>e.run_press(c,f,h)}};return{entry_show:(c,d,u,h)=>{s(d,u,()=>h==="plugin"?r(u):i(u),a(c,d,u,h))},dive_leave:()=>{const c=t;return c===null?!1:(t=null,c.scene.flight_back(()=>{c.facts.classList.remove("dag-facts-immersed"),c.facts.replaceChildren()}),!0)}}}function hI(n,e){const{panels:t,paneInstance_get:s,subjects:i}=n,r=new Map,a=p=>t.get("dag",p)??t.get("universe",p),o=(p,f)=>{const b=r.get(p);if(b===void 0){f?.();return}r.delete(p),b.element.classList.remove("node-overlay-open");const g=()=>{b.element.remove(),f?.()},m=a(p);m!==void 0?m.flight_back(g):g()},l=(p,f,b,g,m)=>{if(m.kind==="dir"){const _=f.replace(/\/+$/,"");if(m.path!==_&&!m.path.startsWith(`${_}/`)){o(p),n.sound("audio3");return}const y=m.path.startsWith("/proc/jobs/")?(m.path.split("/").pop()??"").match(/_(\d+)$/):null;if(y!==null){const w=parseInt(y[1]??"",10);o(p,()=>{a(p)?.node_flyTo(w)!==!0&&c(p,m.path)});return}const z=b.path_current();z!==null&&g.push(z),e.rootedListing_show(p,b,m.path);return}if(i.regard_write(p,{address:m.path,modelKind:"fs.file"}),!i.groupHasViewer(p)){if(e.imagery_is(m.path)){e.image_open(p,m.path).then(_=>n.terminal.line_note(_));return}if(pl(m.path)){b.contentImage_show(m.path,e.vfsUrl_build(m.path));return}e.fileText_fetch(m.path).then(_=>{if(!_.ok){b.contentRefused_show(m.path,_.text);return}e.tableFile_is(m.path)?b.contentTable_show(m.path,_.text):b.content_show(m.path,_.text)})}},c=(p,f)=>{const g=s(p)?.mount?.querySelector(".dag-canvas, .universe-canvas")??null,m=r.get(p);if(m!==void 0&&!m.element.isConnected&&r.delete(p),g===null||r.has(p)){n.terminal.line_note(`dag: ${f}: ${g===null?"this pane has no scene to fly in":"a node is already open here"} — flew back out`),a(p)?.flight_back(()=>{});return}const _=document.createElement("div");_.className="node-overlay",_.setAttribute("aria-label",`inside ${f}`);const y=e.filesBody_stamp();y.classList.add("node-overlay-body");const z=document.createElement("button");z.type="button",z.className="strategy-pill node-overlay-exit",z.title="leave the node (Esc)",z.textContent="EXIT NODE",y.querySelector(".mode-frame")?.prepend(z),_.append(y);const w=y.querySelector(".files-panel");if(w===null)throw new Error("pane template is missing .files-panel");const O=[],S=new Jm(w,M=>l(p,f,S,O,M),e.previewProvider);S.rowVerbs_declare((M,v)=>e.rowVerbs_of(p,M,v),(M,v)=>{i.regard_write(p,{address:v,modelKind:"fs.file"})}),r.set(p,{element:_,panel:S,history:O}),S.ceiling_set(f,"EXIT NODE"),z.addEventListener("click",()=>{o(p),n.sound("audio3")}),g.appendChild(_),window.requestAnimationFrame(()=>_.classList.add("node-overlay-open")),e.rootedListing_show(p,S,f)};return{open:c,close:o,back:p=>{const f=r.get(p),b=f?.history.pop();f!==void 0&&b!==void 0&&e.rootedListing_show(p,f.panel,b)},escape:()=>{const p=[...r.keys()].pop();if(p===void 0)return!1;const f=r.get(p);return f!==void 0&&f.panel.content_isShown()?f.panel.listing_restore():o(p),!0},dispose:p=>{r.get(p)?.element.remove(),r.delete(p)}}}const fa=[];function wM(){const n=fa[fa.length-1];return n===void 0?!1:(n(),!0)}function fI(n){const e=n.querySelector(":scope > .pane-drawer");if(e!==null)return e.nextElementSibling;const t=n.querySelector(":scope > .lcars-terminal-header-bar");return t===null?n.firstElementChild:t.nextElementSibling}function jp(n,e){if(n.querySelector(":scope > .ask-bar")!==null)return Promise.resolve(null);const t=document.createElement("div");t.className=e.kind==="choose"?"ask-bar ask-bar-choose":"ask-bar";const s=document.createElement("span");s.className="ask-bar-glyph",s.textContent="?";const i=document.createElement("span");i.className="ask-bar-caption",i.textContent=e.message.trim(),t.append(s,i);const r=document.createElement("input"),a=document.createElement("button"),o=document.createElement("button"),l=document.createElement("button"),c=document.createElement("button");if(c.className="pacs-capsule ask-bar-abandon",c.textContent=e.close??"ABANDON",c.title="abandon the question (Esc)",e.kind==="confirm")a.className="pacs-capsule ask-bar-yes",a.textContent="YES",o.className="pacs-capsule ask-bar-no",o.textContent="NO",t.append(a,o,c);else{for(const u of e.choices??[]){const h=document.createElement("button");h.className=`pacs-capsule ask-bar-choice${u.held===!0?" ask-bar-held":""}`,h.textContent=u.label??u.value,h.dataset.value=u.value,h.disabled=u.held===!0,t.append(h)}r.className="ask-bar-field",r.spellcheck=!1,e.kind==="secret"?r.type="password":e.suggest!==void 0&&(r.value=e.suggest),l.className="pacs-capsule ask-bar-commit",l.textContent=e.commit??"ANSWER",t.append(r,l,c)}const d=fI(n);return d===null?n.appendChild(t):n.insertBefore(t,d),window.requestAnimationFrame(()=>t.classList.add("ask-bar-shown")),new Promise(u=>{let h=!1;const p=g=>{if(h)return;h=!0;const m=fa.indexOf(f);m>=0&&fa.splice(m,1),t.remove(),u(g)},f=()=>p(null);fa.push(f);const b=()=>{const g=r.value.trim();p(g===""?null:g)};l.addEventListener("click",b);for(const g of t.querySelectorAll(".ask-bar-choice"))g.addEventListener("click",()=>p(g.dataset.value??null));a.addEventListener("click",()=>p("y")),o.addEventListener("click",()=>p("n")),c.addEventListener("click",f),t.addEventListener("keydown",g=>{if(g.key==="Escape"){g.stopPropagation(),f();return}if(e.kind==="confirm"){g.key==="y"||g.key==="Y"?(g.stopPropagation(),p("y")):g.key==="n"||g.key==="N"||g.key==="Enter"&&g.target===o?(g.stopPropagation(),p("n")):g.key==="Enter"&&(g.stopPropagation(),p("y"));return}g.key==="Enter"&&(g.stopPropagation(),b())}),e.kind==="confirm"?a.focus():(r.focus(),r.select())})}async function yM(n,e,t){if(n.ask_isOpen()){const a=n.ask_note(t.message),o=await jp(e,t);return a(t.kind==="secret"&&o!==null?"••••••":o),o}const s=jp(e,t).then(a=>({from:"pane",answer:a})),i=n.ask_open({message:t.message,kind:t.kind==="choose"?"text":t.kind,focus:!1,...t.suggest===void 0?{}:{suggest:t.suggest}}).then(a=>({from:"console",answer:a})),r=await Promise.race([s,i]);return r.from==="console"?wM():n.ask_settle(r.answer),r.answer}function pI(n,e){const{panels:t,paneInstance_get:s}=n;let i=null,r=null;const a=()=>{const{layout:h}=n,p=h.tree_get();if(p===null)return null;const f=[],b=m=>{if("pane"in m){f.push(m.pane);return}b(m.first),b(m.second)};b(p);const g=h.focused_get();return g!==null&&f.includes(g)?g:f[0]??null};return{errandHost_find:a,errand_open:async h=>{const{layout:p,terminal:f}=n,b=a();if(b===null)return null;const g=e.instance_spawn("files"),m=e.replayPlace_get();if(!p.leaf_split(b,m?.dir??"col",g.id,m?.before??!1))return cs(g.id),p.mount_remove(g.id),null;e.birth_record(g.id,b,m?.dir??"col",m?.before??!1);const _=t.get("files",g.id),y=h.path?.anchor??"~";_!==void 0&&e.rootedListing_show(g.id,_,y);const z=g.mount.querySelector(".files-body");if(z===null)return cs(g.id),p.mount_remove(g.id),null;const w=document.createElement("div");w.className="errand-bar",z.insertBefore(w,z.firstChild);const O=document.createElement("span");O.className="errand-caption",O.textContent=h.message.trim();const S=document.createElement("input");S.className="errand-path",S.spellcheck=!1;const M=document.createElement("button");M.className="pacs-capsule errand-commit",M.textContent=h.commit??"USE THIS",w.append(O,S,M);const v=()=>{const I=_?.path_current()??y,G=h.path?.suggest;S.value=h.path?.wantsDirectory===!0||G===void 0?I:`${I.replace(/\/$/,"")}/${G}`};v();let E=!1;S.addEventListener("input",()=>{E=!0});const A=()=>{E||v()};return g.mount.addEventListener("click",A),f.question_set(!0),new Promise(I=>{const G=N=>{g.mount.removeEventListener("click",A),f.question_set(!1),i=null,p.leaf_close(g.id),cs(g.id),p.mount_remove(g.id),I(N)};i=()=>G(null),M.addEventListener("click",()=>G(S.value.trim()===""?null:S.value.trim())),S.addEventListener("keydown",N=>{N.key==="Enter"&&G(S.value.trim()===""?null:S.value.trim())})})},errand_abandon:()=>i===null?!1:(i(),!0),verbLine_run:(h,p)=>{r=h,n.terminal.line_run(p)},askingPane_take:()=>{const h=r;return r=null,h},ask_onPane:async(h,p)=>{const{terminal:f}=n,b=s(h)?.mount;return b===void 0?(e.console_expose(),f.ask_open({message:p.message,kind:p.kind==="choose"?"text":p.kind,...p.suggest===void 0?{}:{suggest:p.suggest}})):yM(f,b,p)}}}class mI{members=new Map;title=null;landed=null;watchers=new Set;watch(e){return this.watchers.add(e),()=>{this.watchers.delete(e)}}changed(){for(const e of[...this.watchers])e()}members_get(){return[...this.members.values()]}size(){return this.members.size}has(e){return this.members.has(e)}take(e){const t=this.members.get(e.seriesUID);this.members.set(e.seriesUID,t===void 0?e:{...t,...e}),this.changed()}drop(e){const t=this.members.delete(e);return t&&this.changed(),t}clear(){this.members.size!==0&&(this.members.clear(),this.changed())}name_get(){return this.title}name_set(e){this.title=e,this.changed()}feed_get(){return this.landed}feed_set(e){this.landed=e,this.changed()}}function $p(n){return(n.kind??"series")==="series"?void 0:n.vfsPath}const Ec="cohort";function gI(n){return/[",\n\r]/.test(n)?`"${n.split('"').join('""')}"`:n}function MI(n){const e=document.createElement("p");return e.className="files-empty",e.textContent=n,e}class Vp{handlers;title;cohort;greeted=!1;listing;cohortActions;seriesActions;constructor(e,t,s,i){this.handlers=s,this.cohort=i,i.watch(()=>{this.unsaved=!0,this.render()}),this.title=e.querySelector(".gather-title"),this.cohortActions=this.cohortActions_declare(),this.seriesActions=this.seriesActions_declare(),this.listing=new Si({mount:t,traits:this.cohortTraits_declare(),key:r=>r.key,chrome:{root:e,prefix:"gather"},control:"fold",actions:{of:()=>this.cohortActions},row:{className:()=>"gather-cohort-row",groupClassName:()=>"gather-cohort",decorate:r=>{r.title="the cohort: click for its verbs, the fold cell folds its series"}},child:Mr(()=>[...this.cohort.members_get()].map(r=>({entry:r})),{traits:this.seriesTraits_declare(),key:r=>r.entry.seriesUID,address:r=>r.entry.vfsPath,actions:{of:()=>this.seriesActions},row:{className:()=>"gather-series",decorate:(r,a)=>{r.dataset.seriesuid=a.entry.seriesUID}}}),state:r=>this.stateLine_compose(r),empty:()=>MI("NOTHING GATHERED")}),this.pullBlock=e.querySelector(".gather-pull"),this.pullBlock?.addEventListener("click",()=>this.cohort_pull()),this.emptyBlock=e.querySelector(".gather-remove"),this.emptyBlock?.addEventListener("click",()=>{this.cohort_clear()}),this.processBlock=e.querySelector(".gather-process"),this.processBlock?.addEventListener("click",()=>{this.cohort_process()}),this.render()}pullBlock=null;emptyBlock=null;unsaved=!1;processBlock=null;cohort_empty(){this.cohort.size()!==0&&(this.cohort.clear(),this.handlers.changed(),this.render())}async cohort_clear(){if(this.cohort.size()!==0){if(this.unsaved){const e=await this.handlers.confirm_ask(`Save the cohort first? (${this.cohort.size()} ${this.cohort.size()===1?"member":"members"}, unsaved)`);if(e===null||e==="y"&&!await this.manifest_save())return}this.handlers.command_show("gather clear"),this.cohort_empty()}}away(){return[...this.cohort.members_get()].filter(e=>e.folderPath===void 0&&e.series?.pulled!==!0)}cohort_pull(){const e=this.away();if(e.length===0)return;const t=e.map(s=>`"${s.vfsPath}"`).join(" ");this.handlers.command_show(`pull ${t}`)}render_now(){this.render()}has(e){return this.cohort.has(e)}entries_get(){return[...this.cohort.members_get()]}name_get(){return this.cohort.name_get()}feed_get(){return this.cohort.feed_get()}feed_set(e){e!==null&&this.cohort.feed_set(e),this.render()}name_set(e){e!==null&&this.cohort.name_set(e),this.render()}series_add(e){this.cohort.take(e),this.render(),this.handlers.changed()}series_remove(e){this.cohort.drop(e)&&(this.render(),this.handlers.changed())}render(){if(this.title!==null&&(this.title.textContent=this.cohort.name_get()===null?"GATHER":`GATHER · ${this.cohort.name_get()??""}`.toUpperCase()),this.listing.rows_set([{key:"gather",rows:[{key:Ec}]}],{field:"gather"}),this.cohort.size()>0&&this.listing.open_set(0,[Ec]),this.pullBlock!==null){const e=this.away().length;this.pullBlock.hidden=e===0,this.pullBlock.textContent=`PULL ${e}`}this.emptyBlock!==null&&(this.emptyBlock.hidden=this.cohort.size()===0,this.emptyBlock.textContent=`CLEAR ${this.cohort.size()}`),this.processBlock!==null&&(this.processBlock.hidden=this.cohort.size()===0),this.greeted||(this.greeted=!0,this.listing.row_indicate(Ec))}cohortTraits_declare(){return[{key:"fold",label:"",className:"pacs-fold",capped:!1,width:"5.2em",cell:()=>{const e=document.createElement("span");return e.className="pacs-fold",e}},{key:"name",label:"COHORT",className:"gather-cohort-name",width:"1fr",cell:()=>this.cohort.name_get()??"(unnamed — SAVE names it)"},{key:"series",label:"SERIES",className:"gather-cohort-count",width:"6em",cell:()=>String(this.series_count()),compare:()=>this.series_count()},{key:"patients",label:"PATIENTS",className:"gather-cohort-patients",width:"7em",cell:()=>String(this.patients_count()),compare:()=>this.patients_count()},{key:"feed",label:"FEED",className:"gather-cohort-feed",width:"7em",cell:()=>{if(this.cohort.feed_get()===null)return"—";const e=document.createElement("button");e.className="gather-feed listing-capsule listing-action-selected",e.textContent=`FEED ${this.cohort.feed_get()?.feedId??0}`,e.title="open the feed's graph beside the cohort";const t=this.cohort.feed_get()?.feedId??0;return e.addEventListener("click",s=>{s.stopPropagation(),this.handlers.feed_open(t)}),e},compare:()=>this.cohort.feed_get()?.feedId??-1}]}seriesTraits_declare(){const e=MM(i=>i.entry.series??{seriesUID:i.entry.seriesUID,description:i.entry.description??i.entry.vfsPath??"",modality:i.entry.modality,...i.entry.files===void 0?{}:{fileCount:i.entry.files},...i.entry.folderPath===void 0?{}:{pulled:!0,folderPath:i.entry.folderPath}},dT),t={key:"patient",label:"MRN",className:"gather-series-patient",width:"8em",cell:i=>i.entry.patient||"—"},s={key:"study",label:"STUDY",className:"gather-series-study",width:"14em",cell:i=>i.entry.study??"—"};return[...e.slice(0,1),s,t,...e.slice(1)]}cohortActions_declare(){const e=()=>({count:this.cohort.size(),feed:this.cohort.feed_get()?.feedId??null}),t={save:()=>{this.manifest_save()},export:()=>{this.cohort_export()},feed:()=>{this.feed_ensure()},process:()=>{this.cohort_process()},dismiss:()=>this.handlers.dismiss()};return fM.rules.map(s=>({label:s.label(e()),offered:()=>s.offered(e()),run:()=>t[s.name]?.()}))}seriesActions_declare(){const e=s=>({folderKnown:(s.entry.kind??"series")!=="series"||s.entry.folderPath!==void 0,imagery:(s.entry.kind??"series")==="series"||s.entry.imagery===!0,pullable:(s.entry.kind??"series")==="series"&&s.entry.folderPath===void 0&&s.entry.series?.pulled!==!0&&s.entry.vfsPath!==""}),t={remove:s=>this.series_remove(s.entry.seriesUID),pull:s=>this.handlers.command_show(`pull "${s.entry.vfsPath}"`),image:s=>{const i=s.entry.folderPath??$p(s.entry);i!==void 0&&this.handlers.image_open(i)},process:s=>{const i=s.entry.folderPath??$p(s.entry);if(i!==void 0){this.handlers.process_open(i);return}this.handlers.note(`gather: ${s.entry.description||s.entry.seriesUID} is not in CUBE yet — PULL it first, then PROCESS it.`)}};return hM.rules.map(s=>({label:s.label({folderKnown:!0,pullable:!0}),offered:i=>s.offered(e(i)),run:i=>t[s.name]?.(i)}))}patients_count(){return new Set(this.cohort.members_get().filter(e=>(e.kind??"series")==="series").map(e=>e.patient)).size}series_count(){return this.cohort.members_get().filter(e=>(e.kind??"series")==="series").length}stateLine_compose(e){const t=this.cohort.members_get(),s=t.filter(o=>(o.kind??"series")!=="series").length,i=t.length-s,r=[];(i>0||s===0)&&r.push(`${i} SERIES`),s>0&&r.push(`${s} ${s===1?"PLACE":"PLACES"}`),s===0&&r.push(`${this.patients_count()} PATIENTS`);const a=[r.join(" · ")];return e.filter!==""&&a.push(e.filter),a.join(" · ")}async name_ensure(){if(this.cohort.name_get()!==null)return this.cohort.name_get();const t=(await this.handlers.name_ask(`gather-${new Date().toISOString().slice(0,10)}`)??"").trim();return t===""?null:(this.cohort.name_set(t),this.render(),t)}async manifest_save(){if(this.cohort.size()===0)return!1;const e=await this.name_ensure();if(e===null)return!1;const t=JSON.stringify({name:e,gatheredAt:new Date().toISOString(),series:[...this.cohort.members_get()].map(s=>({seriesUID:s.seriesUID,description:s.description,modality:s.modality,patient:s.patient,vfsPath:s.vfsPath}))});return this.handlers.command_run("mkdir -p ~/gather"),this.handlers.command_show(`touch --withContents '${t}' ~/gather/${e}.json`),this.unsaved=!1,!0}async cohort_export(){if(this.cohort.size()===0)return;const e=await this.name_ensure();if(e===null)return;const t=[["patient","series","modality","seriesUID","path"].join(","),...[...this.cohort.members_get()].map(s=>[s.patient,s.description,s.modality,s.seriesUID,s.vfsPath].map(gI).join(","))];this.handlers.command_run("mkdir -p ~/gather"),this.handlers.command_show(`touch --withContents '${t.join(`
|
|
4244
4244
|
`)}' ~/gather/${e}.csv`)}async feed_ensure(){const e=this.cohort.feed_get();if(e!==null)return e;if(this.cohort.size()===0)return null;const t=this.cohort.members_get().filter(a=>(a.kind??"series")!=="series");if(t.length>0)return this.handlers.note(`gather: this cohort holds ${t.length} ${t.length===1?"place":"places"} as well as series, and a feed is rooted by pulling its members — a place is already in ChRIS. PROCESS one place from its own row, or remove them to make a feed of the series. (Rooting a feed on the whole cohort, places included, is coming: CUBE takes the list.)`),null;const s=await this.name_ensure();if(s===null)return null;const i=[...this.cohort.members_get()].map(a=>a.vfsPath).join(" "),r=await this.handlers.feed_create(`pull --new-feed "${s}" ${i}`);return r!==null&&this.feed_set(r),r}async cohort_process(){const e=await this.feed_ensure();e!==null&&this.handlers.cohort_process({input:e.path,feed:e.feedId,node:e.rootInstanceId})}}const Hp="~/gather/current.json",bI=1200;function _I(n,e){const{panels:t,subjects:s}=n,i=new mI;let r=null,a=!1,o=null;const l=async _=>{const{terminal:y,client:z}=n;y.line_echo(_);let w;try{w=await z.line_execute(_,{silent:!0})}catch(O){return y.output_write("err",`\x1B[31m${O instanceof Error?O.message:String(O)}\x1B[0m
|
|
4245
4245
|
`),null}y.outcome_write(w);for(const O of w.envelopes){if(O.model?.kind!=="feed.created")continue;const S=O.model.data;if(typeof S.feedId=="number"&&typeof S.rootInstanceId=="number"&&typeof S.path=="string")return{feedId:S.feedId,rootInstanceId:S.rootInstanceId,path:S.path}}return null},c=(_,y,z)=>({command_run:w=>{n.client.line_execute(w,{silent:!0})},command_show:w=>n.terminal.line_run(w),note:w=>n.terminal.line_note(w),image_open:w=>{e.image_open(_(),w).then(O=>n.terminal.line_note(O))},process_open:w=>e.process_open(_(),{input:w,feed:null,node:null}),...y,...z,feed_create:l,cohort_process:w=>e.process_open(_(),w),feed_open:w=>e.feed_open(_(),w)}),d=()=>{o!==null&&window.clearTimeout(o),o=window.setTimeout(()=>{o=null;const _=r?.entries_get()??[],y=JSON.stringify({version:1,name:r?.name_get()??null,feed:r?.feed_get()??null,series:_});n.client.line_execute("mkdir -p ~/gather",{silent:!0,observe:!1}),n.client.line_execute(`touch --withContents '${y.replace(/'/g,"'\\''")}' ${Hp}`,{silent:!0,observe:!1})},bI)},u=()=>{const _=document.querySelector("#header-gather-pill");_!==null&&_.classList.toggle("panel-gather-empty",(r?.entries_get().length??0)===0)},h=()=>{const _=e.element_require("header-gather"),y=()=>e.errandHost_find()??"pacs",z=w=>yM(n.terminal,e.element_require("header-gather"),w);return new Vp(_,e.pane_find(_,".gather-rows"),c(y,{name_ask:w=>z({message:"Cohort name: ",kind:"text",suggest:w,commit:"NAME IT"}),confirm_ask:async w=>{const O=await z({message:w,kind:"confirm"});return O==="y"||O==="n"?O:null}},{changed:()=>{e.stage_relight(),u(),d()},dismiss:()=>{document.body.dataset.header="away",a=!0,u()}}),i)};return{cohort:i,instance_build:_=>{const y=e.template_stamp("tpl-pane-gather"),z=new Vp(y,e.pane_find(y,".gather-rows"),c(()=>_,{name_ask:w=>e.ask_onPane(_,{message:"Cohort name: ",kind:"text",suggest:w,commit:"NAME IT"}),confirm_ask:async w=>{const O=await e.ask_onPane(_,{message:w,kind:"confirm"});return O==="y"||O==="n"?O:null}},{changed:()=>e.stage_relight(),dismiss:()=>{n.layout.leaf_close(_)||e.home_apply(),e.orphans_dispose(),e.stage_relight()}}),i);return t.set("gather",_,z),{id:_,kind:"gather",mount:y,dispose:()=>{t.delete(_),s.pane_leave(_)}}},has:_=>r?.has(_)===!0,gather:_=>{r===null&&(r=h());for(const z of _)r.series_add(z);const y=document.body.dataset.header==="away";(!a||!y)&&(document.body.dataset.header="gather",a=!1),u(),d()},open:(_,y="pacs")=>{const{layout:z}=n,w=new Set(z.panes_shown());let O=t.ids("gather").find(M=>w.has(M))??null;if(O===null){const M=w.has(y)?y:e.errandHost_find()??y,v=e.instance_spawn("gather","pacs"),E=e.replayPlace_get();if(!z.leaf_split(M,E?.dir??"row",v.id,E?.before??!1))return cs(v.id),z.mount_remove(v.id),null;e.birth_record(v.id,M,E?.dir??"row",E?.before??!1),O=v.id}const S=t.get("gather",O);if(S===void 0)return null;for(const M of _)S.series_add(M);return O},stage:()=>{const{layout:_}=n,y=new Set(_.panes_shown()),z=t.ids("gather").find(w=>y.has(w))??null;if(z!==null)_.focus_set(z);else{const w=e.errandHost_find()??"pacs",O=e.instance_spawn("gather","pacs");if(!_.leaf_split(w,"col",O.id,!1)){cs(O.id),_.mount_remove(O.id);return}e.birth_record(O.id,w,"col",!1),t.get("gather",O.id)?.render_now()}document.body.dataset.header="away",a=!0},annunciate:u,restore:async()=>{const _=await e.fileText_fetch(Hp);if(_.ok)try{const y=JSON.parse(_.text);if(!Array.isArray(y.series)||y.series.length===0)return;r===null&&(r=h());for(const z of y.series)r.series_add(z);u(),e.stage_relight()}catch{}}}}async function yr(n,e){const{terminal:t,client:s}=n;t.line_echo(e);let i;try{i=await s.line_execute(e)}catch(r){return t.output_write("err",`\x1B[31m${r instanceof Error?r.message:String(r)}\x1B[0m
|
|
4246
|
-
`),!1}return t.outcome_write(i),i.envelopes.length>0&&i.envelopes.every(r=>r.status==="ok")}class zI{mount;handlers;titleSpan;stateSpan;fieldSection;savePill;revertPill;focusMark;field=null;path=null;original="";saving=!1;fieldBuild=null;constructor(e,t){this.mount=e,this.handlers=t,this.titleSpan=e.querySelector(".pane-title"),this.stateSpan=e.querySelector(".pane-state"),this.fieldSection=this.element_require(".edit-field"),this.savePill=this.element_require(".edit-save"),this.revertPill=this.element_require(".edit-revert"),this.focusMark=e.querySelector(".edit-focus"),this.savePill.addEventListener("click",()=>{this.save()}),this.revertPill.addEventListener("click",()=>this.revert()),e.addEventListener("keydown",s=>{(s.ctrlKey||s.metaKey)&&!s.altKey&&s.key.toLowerCase()==="s"&&(s.preventDefault(),s.stopPropagation(),this.save())},{capture:!0}),this.fieldSection.addEventListener("mousedown",()=>this.focusMark_set(!0)),this.fieldSection.addEventListener("focusin",()=>this.focusMark_set(!0)),this.fieldSection.addEventListener("focusout",s=>{(!(s.relatedTarget instanceof Node)||!this.fieldSection.contains(s.relatedTarget))&&this.focusMark_set(!1)}),this.controls_sync()}opening_show(e){this.path=e,this.title_set(e),Yt(this.stateSpan,"wait","OPENING")}async content_show(e){this.path=e.path,this.original=e.content,this.title_set(e.path),this.fieldBuild??=this.field_build(e);const t=await this.fieldBuild;t!==null&&(t.text_get()!==this.original&&t.text_set(this.original),this.controls_sync(),t.focus(),this.focusMark_set(!0))}async field_build(e){let t;try{t=await qd(()=>import("./field-
|
|
4246
|
+
`),!1}return t.outcome_write(i),i.envelopes.length>0&&i.envelopes.every(r=>r.status==="ok")}class zI{mount;handlers;titleSpan;stateSpan;fieldSection;savePill;revertPill;focusMark;field=null;path=null;original="";saving=!1;fieldBuild=null;constructor(e,t){this.mount=e,this.handlers=t,this.titleSpan=e.querySelector(".pane-title"),this.stateSpan=e.querySelector(".pane-state"),this.fieldSection=this.element_require(".edit-field"),this.savePill=this.element_require(".edit-save"),this.revertPill=this.element_require(".edit-revert"),this.focusMark=e.querySelector(".edit-focus"),this.savePill.addEventListener("click",()=>{this.save()}),this.revertPill.addEventListener("click",()=>this.revert()),e.addEventListener("keydown",s=>{(s.ctrlKey||s.metaKey)&&!s.altKey&&s.key.toLowerCase()==="s"&&(s.preventDefault(),s.stopPropagation(),this.save())},{capture:!0}),this.fieldSection.addEventListener("mousedown",()=>this.focusMark_set(!0)),this.fieldSection.addEventListener("focusin",()=>this.focusMark_set(!0)),this.fieldSection.addEventListener("focusout",s=>{(!(s.relatedTarget instanceof Node)||!this.fieldSection.contains(s.relatedTarget))&&this.focusMark_set(!1)}),this.controls_sync()}opening_show(e){this.path=e,this.title_set(e),Yt(this.stateSpan,"wait","OPENING")}async content_show(e){this.path=e.path,this.original=e.content,this.title_set(e.path),this.fieldBuild??=this.field_build(e);const t=await this.fieldBuild;t!==null&&(t.text_get()!==this.original&&t.text_set(this.original),this.controls_sync(),t.focus(),this.focusMark_set(!0))}async field_build(e){let t;try{t=await qd(()=>import("./field-0Jgq4vD8.js").then(s=>s.Q),[],import.meta.url)}catch(s){if(!Cu(s))throw s;return Yt(this.stateSpan,"stale",rl),this.handlers.note(`edit: ${rl.toLowerCase()} — the editor's code is of an older build than the server has`),null}return this.field=await t.editField_create(this.fieldSection,e.content,e.extension,()=>this.controls_sync()),this.field}opening_fail(e){Yt(this.stateSpan,"refused",`NOT OPENED · ${e.toUpperCase()}`)}async save(){if(this.field===null||this.path===null||this.saving)return!1;const e=this.field.text_get();if(e===this.original)return!0;this.saving=!0,this.controls_sync();let t=!1;try{t=await this.handlers.save(this.path,e)}finally{this.saving=!1}return t&&(this.original=e),this.controls_sync(),t||Yt(this.stateSpan,"refused","NOT SAVED · THE CONSOLE SAYS WHY"),t}revert(){this.field===null||!this.dirty_is()||(this.field.text_set(this.original),this.controls_sync())}dirty_is(){return this.field!==null&&this.field.text_get()!==this.original}path_get(){return this.path}field_release(){return this.field===null||!this.field.hasFocus()?!1:(this.field.blur(),this.focusMark_set(!1),!0)}dispose(){this.field?.destroy(),this.field=null}controls_sync(){const e=this.dirty_is();this.savePill.disabled=!e||this.saving,this.revertPill.disabled=!e||this.saving,this.mount.dataset.dirty=e?"yes":"no",this.field!==null&&(this.saving?Yt(this.stateSpan,"wait","SAVING"):e?Yt(this.stateSpan,"note","DIRTY"):Yt(this.stateSpan,"settled","SAVED"))}title_set(e){this.titleSpan!==null&&(this.titleSpan.textContent=`EDIT ${e.split("/").pop()??e}`.toUpperCase()),this.mount.title=e}focusMark_set(e){this.focusMark!==null&&(this.focusMark.hidden=!e)}element_require(e){const t=this.mount.querySelector(e);if(t===null)throw new Error(`edit pane: no ${e} in its template`);return t}}function Ri(n){return`'${n.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function vM(n,e){return`touch --withContents=${Ri(e)} ${Ri(n)}`}function OM(n){return`edit ${Ri(n)}`}function wI(n,e,t){return e<t?null:`edit: ${n} is ${(e/(1024*1024)).toFixed(1)} MB; open it in the editor? `}function yI(n,e){const{layout:t,panels:s,subjects:i}=n,r=async(u,h)=>{const p=await yr(n,vM(u,h));return p&&e.saved?.(u),p},a=u=>{const h=e.template_stamp("tpl-pane-edit"),p=new zI(h,{save:r,note:f=>n.terminal.line_note(f)});return s.set("edit",u,p),{id:u,kind:"edit",mount:h,dispose:()=>{p.dispose(),s.delete(u),i.pane_leave(u)}}},o=u=>{const h=new Set(t.panes_shown());for(const[p,f]of s.entries("edit"))if(h.has(p)&&f.path_get()===u)return p;return null},l=()=>{e.launcher_yield();const u=new Set(t.panes_shown()),h=t.focused_get(),p=h!==null&&u.has(h)?h:e.errandHost_find();if(p===null)return null;const f=e.instance_spawn("edit"),b=e.replayPlace_get();return t.leaf_split(p,b?.dir??"col",f.id,b?.before??!1)?(e.birth_record(f.id,p,b?.dir??"col",b?.before??!1),f.id):(cs(f.id),t.mount_remove(f.id),null)};return{instance_build:a,edit_receive:u=>{const h=u.path??"";if(h==="")throw new Error("the editor pane needs the file it edits, and the request named none");const p=o(h)??l();if(p===null)return!1;const f=s.get("edit",p);return f===void 0?!1:(t.focus_set(p),f.dirty_is()?(n.terminal.line_note(`edit: ${h}: its pane has unsaved changes; they stand (REVERT reads the file again)`),!0):(f.content_show({path:h,content:u.content,extension:u.extension??sm(h)}),!0))},edit_open:(u,h={})=>{const p=o(u)??l();if(p===null)return null;const f=s.get("edit",p);if(f===void 0)return null;t.focus_set(p),f.dirty_is()||f.opening_show(u);const b=OM(u);return h.visible===!0?(n.terminal.line_run(b),p):(n.client.line_execute(b,{silent:!0,observe:!1}).then(g=>{const m=g.envelopes.find(_=>_.status!=="ok");m!==void 0&&f.opening_fail((m.renderedErr??"").replace(/\x1b\[[0-9;]*m/g,"").trim()||"the kernel refused")}).catch(g=>f.opening_fail(g instanceof Error?g.message:String(g))),p)}}}function vI(n){for(const e of n.envelopes){if(e.model?.kind!=="fs.acl")continue;const t=e.model.data[0];return t===void 0?null:{users:t.usernames??[],groups:t.groups??[],public:t.public===!0}}return null}function OI(n,e){return n.split(`
|
|
4247
4247
|
`).map(t=>t.trim().split(":")).filter(t=>t.length>=4&&(t[3]??"").split(",").includes(e)).map(t=>t[0]??"").filter(t=>t!=="")}function xI(n){return/^(u|user|g|group|o|other):/.test(n)?n:`u:${n}:r`}function SI(n,e){return e.kind==="public"?`setfacl -m o::- feed_${n}`:`setfacl -x ${e.kind==="user"?"u":"g"}:${Ri(e.name)} feed_${n}`}function _o(n){return n.kind==="public"?"PUBLIC":n.kind==="group"?`group ${n.name}`:n.name}function EI(n,e){const t={silent:!0,observe:!1},s=async c=>{try{return vI(await n.client.line_execute(`getfacl feed_${c}`,t))}catch{return null}},i=async()=>{const c=e.promptUser();if(c===null)return[];try{const d=await n.client.line_execute("cat /etc/group",t);return OI(d.envelopes.map(u=>u.rendered).join(""),c)}catch{return[]}},r=async(c,d,u)=>{await e.ask_onPane(c,{kind:"confirm",message:`Stop sharing feed_${d} with ${_o(u)}? `})==="y"&&await yr(n,SI(d,u))&&e.changed(d)};return{holders_read:s,holders_build:(c,d,u)=>{const h=document.createElement("span");h.className="holder-marks";const p=[...u.users.map(f=>({kind:"user",name:f})),...u.groups.map(f=>({kind:"group",name:f})),...u.public?[{kind:"public"}]:[]];if(p.length===0)return h.textContent="SHARED WITH NOBODY",h;h.append("SHARED WITH ");for(const f of p){const b=document.createElement("span");b.className=`holder-mark holder-${f.kind}`,b.title=_o(f);const g=document.createElement("span");g.className="holder-mark-name",g.textContent=_o(f),b.append(g);const m=document.createElement("span");m.className="holder-mark-x",m.title=`stop sharing with ${_o(f)} (asks first)`,m.textContent="×",m.addEventListener("click",_=>{_.stopPropagation(),r(c,d,f)}),b.append(m),h.append(b)}return h},share_choose:async(c,d)=>{for(;;){const[u,h]=await Promise.all([s(d),i()]),p=u??{groups:[],public:!1},f=[{value:"o::r",label:"EVERYONE",held:p.public},...h.map(g=>({value:`g:${g}:r`,label:g,held:p.groups.includes(g)}))],b=(await e.ask_onPane(c,{kind:"choose",message:`Share feed_${d} with a group, everyone, or a user: `,choices:f,commit:"SHARE",close:"DONE"})??"").trim();if(b===""||!await yr(n,`setfacl -m ${xI(b)} feed_${d}`))return;e.changed(d)}},rename:async(c,d,u)=>{const h=(await e.ask_onPane(c,{kind:"text",message:`Rename feed_${d} to: `,suggest:u,commit:"RENAME"})??"").trim();h===""||h===u||await yr(n,vM(`/proc/jobs/feed_${d}/title`,h))&&e.changed(d)}}}function AI(n){for(const e of n.envelopes){if(e.model?.kind!=="fs.listing")continue;return(e.model.data[0]?.items??[]).map(s=>String(s.name??"")).filter(s=>s!=="")}return[]}function DI(n,e,t){const s=`setfattr -n tag -v ${Ri(e)} feed_${n}`;return t.includes(e)?[s]:[`mkdir ${Ri(`/proc/tags/${e}`)}`,s]}function TI(n,e){const t=async()=>{try{return AI(await n.client.line_execute("ls /proc/tags",{silent:!0,observe:!1}))}catch{return[]}};return{tag_choose:async(r,a,o)=>{const l=new Set(o);for(;;){const c=await t(),d=c.map(b=>({value:b,held:l.has(b)})),u=c.filter(b=>!l.has(b)).join(", "),p=(await e.ask_onPane(r,{kind:"choose",message:`Tag feed_${a}${u===""?"":` (${u})`}, or a new tag: `,choices:d,commit:"TAG",close:"DONE"})??"").trim();if(p===""||p.includes("/"))return;if(l.has(p))continue;let f=!0;for(const b of DI(a,p,c))if(f=await yr(n,b),!f)break;if(!f)return;l.add(p),e.tags_changed(a)}},tag_remove:async(r,a)=>{const o=await yr(n,`setfattr -x tag -v ${Ri(a)} feed_${r}`);return o&&e.tags_changed(r),o}}}function II(n,e){return{tags:TI(n,{ask_onPane:e.ask_onPane,tags_changed:e.changed}),access:EI(n,e)}}function GI(n){for(const e of n.envelopes){if(e.model?.kind!=="fs.xattr")continue;return e.model.data[0]?.tags??[]}return[]}function RI(n,e,t){const{panels:s,subjects:i}=n,{tags:r,access:a}=t;return{feed_verbs:o=>{const l={feedId:o.id},c={note:()=>n.terminal.line_run(`edit /proc/jobs/feed_${o.id}/note`),tag:()=>{r.tag_choose(e,o.id,o.tags??[])},rename:()=>{a.rename(e,o.id,o.title)},share:()=>{a.share_choose(e,o.id)},delete:()=>n.terminal.line_run(`feed rm feed_${o.id}`)};return uM.rules.filter(d=>d.offered(l)).map(d=>({label:d.label(l),run:()=>c[d.name]?.()}))},feed_indicated:o=>{i.regard_write(e,{address:`/proc/jobs/feed_${o.id}`,modelKind:"feed"}),a.holders_read(o.id).then(l=>{s.get("dag",e)?.rowReadout_show(o.id,l===null?"ACCESS UNREAD":a.holders_build(e,o.id,l))})},feed_untag:(o,l)=>{r.tag_remove(o,l)},feed_entered:o=>{const l={silent:!0,observe:!1},c=d=>d!==null&&d.envelopes.every(u=>u.status==="ok")?d.envelopes.map(u=>u.rendered).join("").replace(/\x1b\[[0-9;]*m/g,""):null;Promise.all([n.client.line_execute(`cat /proc/jobs/feed_${o}/note`,l).catch(()=>null),n.client.line_execute(`getfattr feed_${o}`,l).catch(()=>null),n.client.line_execute(`cat /proc/jobs/feed_${o}/title`,l).catch(()=>null)]).then(([d,u,h])=>{s.get("dag",e)?.feedMarks_show(o,{note:c(d),tags:u===null?[]:GI(u),title:(c(h)??"").trim()})})},feed_note:o=>n.terminal.line_run(`edit /proc/jobs/feed_${o}/note`),feed_tag:(o,l)=>{r.tag_choose(e,o,l)},feed_rename:(o,l)=>{a.rename(e,o,l)}}}class BI{listing;constructor(e){const t=e.querySelector(".help-panel");if(t===null)throw new Error("help pane: no .help-panel in its template");this.listing=new Si({mount:t,traits:this.traits_declare(),key:s=>s.key,chrome:{root:e,prefix:"help"},caps:"root",activatable:()=>!1,row:{className:s=>`help-row help-${s.topic}`}}),this.render()}traits_declare(){return[{key:"name",label:"KEY · VERB",className:"help-key",width:"minmax(9em, 12em)",cell:e=>e.name},{key:"does",label:"DOES",className:"help-does",width:"minmax(16em, 1fr)",cell:e=>e.does}]}render(){const e=i=>{const r=document.createElement("header");return r.className="files-path help-block-head",r.textContent=i,r},t=Di.map(i=>({key:`k:${i.key}`,name:i.key,does:i.does,topic:i.topic})),s=pu.map((i,r)=>{const a=i.indexOf(" ");return{key:`v:${r}`,name:a<0?i:i.slice(0,a),does:a<0?"":i.slice(a+1).trim(),topic:"verb"}});this.listing.rows_set([{key:"keys",header:e("KEYS — Ctrl-B opens the focused pane's drawer; then one key presses one of its verbs"),rows:t},{key:"verbs",header:e("VERBS — the console language; the long form is docs/argus-lang.adoc"),rows:s}],{field:"help"})}}function NI(n,e){const{layout:t,panels:s,subjects:i}=n;return{instance_build:o=>{const l=e.template_stamp("tpl-pane-help");return s.set("help",o,new BI(l)),{id:o,kind:"help",mount:l,dispose:()=>{s.delete(o),i.pane_leave(o)}}},open:()=>{const o=s.ids("help").find(u=>t.panes_shown().includes(u));if(o!==void 0)return t.focus_set(o),"help: on stage";const l=e.launcher_active();e.launcher_yield();const c=t.focused_get()??"files",d=e.instance_spawn("help");return l&&t.leaf_replace("files",d.id)?(t.focus_set(d.id),"help: the keys and the verbs, as a pane (help keys, help verbs print them here)"):t.leaf_split(c,"col",d.id,!1)?(e.birth_record(d.id,c,"col",!1),"help: the keys and the verbs, as a pane (help keys, help verbs print them here)"):(cs(d.id),t.mount_remove(d.id),"help: could not open a pane")}}}function CI(n,e){const{layout:t,panels:s,paneInstance_get:i}=n,r=[()=>e.palette_isOpen()?(e.palette_close(),"claimed"):"passed",()=>n.terminal.ask_abandon()?"claimed":"passed",()=>wM()?"claimed":"passed",()=>e.errand_abandon()?"claimed":"passed",()=>s.values("image").some(d=>d.field_release())?"claimed":"passed",()=>s.values("edit").some(d=>d.field_release())?"claimed":"passed",()=>{if(n.terminal.ask_isOpen())return"passed";let d=!1;for(const u of s.values("files"))u.select_isOn()&&(u.select_toggle(!1),d=!0);return d?"claimed":"passed"},()=>{const d=e.drawers_close(),u=e.modeFrames_close();return d||u?"claimed":"passed"},()=>document.body.dataset.zoom!==void 0?"yielded":"passed",()=>e.dive_leave()?"claimed":"passed",()=>e.overlay_escape()?"claimed":"passed",()=>{const d=s.entries("dag").find(([,u])=>u.inside_isHeld());return d===void 0?"passed":(d[1].flight_back(()=>{}),"claimed")},()=>{const d=t.focused_get(),u=s.entries("files").filter(([,h])=>h.content_isShown()).sort(([h],[p])=>h===d?-1:p===d?1:0)[0];return u===void 0?"passed":(u[1].listing_restore(),"claimed")},()=>s.values("dag").some(d=>d.nav_pop())?"claimed":"passed"],a=d=>{if(document.body.dataset.zoom!=="launcher")for(const u of r){const h=u();if(h==="yielded")return;if(h==="claimed"){d.stopImmediatePropagation(),u!==r[0]&&n.sound("audio3");return}}},o=(d,u)=>{const h=()=>{d.preventDefault(),d.stopImmediatePropagation()},p=gy(d.key);if(d.ctrlKey&&!d.metaKey&&!d.altKey&&p!==null){const m=t.focused_get();return m!==null&&e.verbs.resize(m,p,.05),h(),!0}if(d.ctrlKey||d.metaKey||d.altKey)return!1;const f=m=>(e.drawers_close(),m(),h(),!0);if(p!==null)return f(()=>{sg(e.host(),Rs[p].focusWord)!==null&&n.sound("audio3")});switch(d.key){case"o":case"O":{const m=t.panes_shown(),_=m.indexOf(t.focused_get()??""),y=m[(_+(d.key==="o"?1:m.length-1))%m.length];return f(()=>{y!==void 0&&(t.focus_set(y),n.sound("audio3"))})}case"?":return f(()=>n.terminal.line_run("argus keys"));case";":return f(()=>{t.focus_last()!==null&&n.sound("audio3")});case"q":return f(()=>{for(const m of t.panes_shown())e.verbs.bar_note(m,`@${m}`)});case" ":{const m=t.focused_get();return f(()=>{m!==null&&e.verbs.flip(m)})}case"!":{const m=t.focused_get();return f(()=>{m!==null&&t.panes_shown().length>1&&(e.stage_alone(m),e.verbs.bar_note(m,"ALONE ON STAGE"),n.sound("audio3"))})}case"w":return f(()=>e.element_require("gutter-panes").click());case"[":return f(()=>{const m=document.querySelector(".argus-output");m!==null&&(m.tabIndex=-1,m.focus())})}const b=Di.find(m=>m.key===d.key&&m.selector!==null);if(b===void 0||b.selector===null)return!1;b.move===!0&&u.querySelector('.drawer-mode[data-mode="move"]')?.click();const g=u.querySelector(b.selector);return g===null||g.disabled?b.move===!0&&u.querySelector('.drawer-mode[data-mode="split"]')?.click():g.click(),h(),!0},l=d=>{const u=document.querySelector(".pane-drawer:not([hidden])")!==null;if(d.key===":"&&u){e.drawers_close(),e.palette_open(),d.preventDefault(),d.stopImmediatePropagation();return}if(!(d.key==="b"&&d.ctrlKey&&!d.altKey&&!d.metaKey))return;if(d.preventDefault(),u){e.drawers_close(),e.palette_open();return}const h=document.body.dataset.zoom,p=h==="console"||h===void 0&&e.consoleFocused(),f=h!==void 0&&h!=="console"?h:t.focused_get()??"files",b=p?e.element_require("console-drawer"):i(f)?.mount?.querySelector(".pane-drawer")??null;b!==null&&(b.hidden=!b.hidden,b.hidden||b.querySelector("button")?.focus(),n.sound("audio3"))},c=d=>{if(d.key==="Escape"){a(d);return}const u=document.querySelector(".pane-drawer:not([hidden])"),h=d.target instanceof HTMLInputElement||d.target instanceof HTMLTextAreaElement||d.target instanceof HTMLElement&&d.target.isContentEditable;u!==null&&!h&&o(d,u)||l(d)};return window.addEventListener("keydown",c,{capture:!0}),()=>window.removeEventListener("keydown",c,{capture:!0})}const PI=256*1024*1024;function LI(n,e){const t=e.split("/").filter(a=>a.length>0).pop()??"download";if(n===null)return t;const s=/filename\*\s*=\s*UTF-8''([^;]+)/i.exec(n);if(s!==null)try{const a=decodeURIComponent((s[1]??"").trim());if(a.length>0)return a}catch{}const r=/filename\s*=\s*"([^"]*)"/i.exec(n)?.[1]??"";return r.length>0?r:t}function WI(n){return n.redirected?"the session asked to log in again — nothing was saved":n.ok?n.headers.get("content-disposition")===null?"the session answered with something other than the file — nothing was saved":null:n.status===404?"the session could not read that file — nothing was saved":`the session refused the file (HTTP ${n.status}) — nothing was saved`}function qp(n,e){const t=document.createElement("a");t.href=n,t.download=e,t.rel="noopener",document.body.append(t),t.click(),t.remove()}async function kI(n,e,t=fetch){const s=new AbortController;let i;try{i=await t(n,{credentials:"same-origin",signal:s.signal})}catch(d){return{ok:!1,reason:`the session did not answer (${d instanceof Error?d.message:String(d)}) — nothing was saved`}}const r=WI(i);if(r!==null)return s.abort(),{ok:!1,reason:r};const a=LI(i.headers.get("content-disposition"),e),o=Number(i.headers.get("content-length")??NaN);if(Number.isFinite(o)&&o>PI)return s.abort(),qp(n,a),{ok:!0,name:a,bytes:o,streamed:!0};const l=await i.blob(),c=URL.createObjectURL(l);return qp(c,a),setTimeout(()=>URL.revokeObjectURL(c),6e4),{ok:!0,name:a,bytes:l.size,streamed:!1}}const xM=/\.(csv|tsv)$/i;function Xp(n){return n.replace(/\x1b\[[0-9;:]*[A-Za-z]/g,"")}function SM(n){return Hc.test(n)||Ho.test(n)}function Xd(n){const e=/_(\d+)\/data\/?$/.exec(n);return e===null?null:parseInt(e[1]??"",10)}function pa(n){const e=n.match(/\/(?:feeds|jobs)\/feed_(\d+)(?:\/|$)/);return e===null?null:Number(e[1])}function UI(n){return/^\/(proc|net|etc|usr)(\/|$)/.test(n)}function FI(n){for(const e of n.envelopes){const t=e.model;if(typeof t!="object"||t===null)continue;const s=t.data;if(t.kind!=="fs.acl"||!Array.isArray(s))continue;const i=[];for(const r of s)Array.isArray(r.usernames)&&i.push(...r.usernames.map(String)),Array.isArray(r.groups)&&i.push(...r.groups.map(a=>`group ${String(a)}`)),r.public===!0&&i.push("PUBLIC");return i.length===0?"SHARED WITH NOBODY":`SHARED WITH ${i.join(", ")}`}return"ACCESS UNREAD"}function jI(n,e){const{panels:t,subjects:s}=n,i=new Map,r=new Map,a=new Map,o=v=>{kI(e.downloadUrl_build(v),v).then(E=>{n.terminal.line_note(E.ok?`download: ${E.name}${E.streamed?" — large; the browser fetches it itself":""}`:`download: ${v}: ${E.reason}`)})},l=v=>n.client.line_execute(`cat "${v}"`,{silent:!0,observe:!1}).then(E=>{if(!E.envelopes.some(G=>G.status==="error"))return{ok:!0,text:Xp(E.envelopes.map(G=>G.rendered).join(`
|
|
4248
4248
|
`))};const I=E.envelopes.flatMap(G=>(G.errors??[]).map(N=>N.message)).concat(E.envelopes.map(G=>G.renderedErr??"")).map(G=>Xp(G).trim()).filter(G=>G!=="").join(`
|
|
4249
4249
|
`);return{ok:!1,text:I===""?"the session refused this read and said nothing further":I}}),c=async(v,E)=>{const A=await fetch(e.vfsUrl_build(v));if(!A.ok||A.body===null)return(await l(v)).text.slice(0,E);const I=A.body.getReader(),G=new TextDecoder;let N="";for(;N.length<E;){const{done:B,value:C}=await I.read();if(B)break;N+=G.decode(C,{stream:!0})}return I.cancel().catch(()=>{}),N.slice(0,E)},d=async v=>{const E=/_id(\d+)$/.exec(v)?.[1]??v.replace(/^.*\//,""),A=await n.client.line_execute(`pipeline diagram ${E}`,{silent:!0,observe:!1});for(const I of A.envelopes){if(I.model?.kind!==Vn.pipelineDiagram)continue;const G=Qd.safeParse(I.model.data);if(G.success)return G.data.nodes.map(N=>({id:N.id,parentIds:[...N.parentIds,...N.joinParentIds??[]]}))}return null},u={imageUrl:e.vfsUrl_build,download:o,textHead:c,pipelineGlimpse:d},h=(v,E,A)=>{const I=A==="~"?"ls ~":`ls "${A}"`;n.client.line_execute(I,{silent:!0,observe:!1}).then(G=>{for(const N of G.envelopes)E.envelope_observe(N)})},p=(v,E,A)=>{const I=E.path_current();I!==null&&i.get(v)?.push(I),h(v,E,A)},f=(v,E)=>{const A=i.get(v)?.pop();A!==void 0&&h(v,E,A)},b=v=>{a.get(v)?.()},g=(v,E)=>{r.set(v,E),b(v);const A=t.get("files",v);A?.follow_set(E),E&&A!==void 0&&n.client.line_execute("ls",{silent:!0,observe:!1}).then(I=>{for(const G of I.envelopes)A.envelope_observe(G)})},m=(v,E)=>{const A=t.get("files",v);A!==void 0&&(r.get(v)===!0?n.terminal.line_run("ls"):h(v,A,E))},_=(v,E)=>{e.ask_onPane(v,{message:`New directory in ${E}: `,kind:"text",commit:"MAKE IT"}).then(A=>{const I=(A??"").trim();I!==""&&(n.terminal.line_run(`mkdir "${E}/${I}"`),m(v,E))})},y=async(v,E,A)=>{for(const I of A){const G=`${E}/${I.name}`;n.terminal.line_note(`putting ${I.name} in ${E}…`);try{const N=await fetch(e.vfsUrl_build(G),{method:"POST",body:I});if(!N.ok){n.terminal.line_note(`upload: ${I.name}: ${(await N.text()).trim()||N.statusText}`);continue}n.terminal.line_note(`✓ ${G}`)}catch(N){n.terminal.line_note(`upload: ${I.name}: ${N instanceof Error?N.message:String(N)}`)}}m(v,E)},z=(v,E,A)=>{if(A.kind==="dir"){r.get(v)===!0?n.terminal.line_run(`cd "${A.path}"`):p(v,E,A.path);return}if(A.kind==="plugin"||A.kind==="pipeline"){e.binEntry_show(v,E,A.path,A.kind);return}if(SM(A.path)){e.image_open(v,A.path).then(I=>n.terminal.line_note(I));return}if(s.regard_write(v,{address:A.path,modelKind:"fs.file"}),!s.groupHasViewer(v)){if(pl(A.path)){E.contentImage_show(A.path,e.vfsUrl_build(A.path));return}l(A.path).then(I=>{if(!I.ok){E.contentRefused_show(A.path,I.text);return}xM.test(A.path)?E.contentTable_show(A.path,I.text):E.content_show(A.path,I.text)})}},w=()=>{const v=e.template_stamp("tpl-pane-files").querySelector(".files-body");if(v===null)throw new Error("tpl-pane-files has no files-body");return v},O=(v,E,A)=>{const I=`"${A}"`,G=E.type==="dir"||E.type==="vfs"||E.type==="job",N=pa(A),B={kind:E.type==="plugin"||E.type==="pipeline"?"catalogue":G&&Al(A,E.name)?"seriesFolder":E.type==="file"?"file":"directory",feed:N,node:N===null?null:Xd(A),bound:e.catalogue_of(v)!==void 0,projection:UI(A),editable:E.type==="file"&&jM(A)},C={image:()=>{e.image_open(v,A).then(L=>n.terminal.line_note(L))},download:()=>o(A),process:()=>e.process_open(v,{input:A,feed:N,node:N===null?null:Xd(A)}),gather:()=>e.cohort_gather([{kind:G?"dir":"file",seriesUID:A,description:E.name,imagery:Al(A,E.name),modality:Al(A,E.name)?"MR":"—",patient:e.promptUser()??"",vfsPath:A,folderPath:A}]),run:()=>e.run_press(v,E.name,E.type==="pipeline"?"pipeline":"plugin"),edit:()=>{const L=OM(A),H=wI(E.name,E.size,FM);if(H===null){e.verbLine_run(v,L);return}e.ask_onPane(v,{kind:"confirm",message:H}).then(X=>{X==="y"&&e.verbLine_run(v,L)})},move:()=>e.verbLine_run(v,`mv ${I}`),copy:()=>e.verbLine_run(v,`cp ${I}`),delete:()=>e.verbLine_run(v,`rm ${G?"-ri":"-i"} ${I}`),share:()=>e.verbLine_run(v,`setfacl ${I}`)};return cM.rules.filter(L=>L.offered(B)).map(L=>({label:L.label(B),run:()=>C[L.name]?.()}))},S=(v,E)=>{const A=E.map(([C])=>C),I=A.map(C=>`"${C}"`).join(" "),G=[];for(const C of A){const L=pa(C);L!==null&&!G.includes(L)&&G.push(L)}const N={count:A.length,feeds:G},B={delete:()=>e.verbLine_run(v,`rm -rI ${I}`),move:()=>n.terminal.line_run(`mv -t ${I}`),copy:()=>n.terminal.line_run(`cp -t ${I}`),share:()=>n.terminal.line_run(`setfacl ${G.map(C=>`feed_${C}`).join(" ")}`)};return dM.rules.filter(C=>C.offered(N)).map(C=>({label:C.label(N),run:()=>B[C.name]?.()}))};return{previewProvider:u,fileText_fetch:l,file_save:o,rootedListing_show:h,listing_refresh:m,directory_make:_,files_deliver:y,follows:v=>r.get(v)===!0,follow_set:g,cwdBind_sync_register:(v,E)=>{a.set(v,E)},cwdBind_sync:b,rooted_walk:p,rooted_back:f,filesBody_stamp:w,rowVerbs_of:O,instance_build:(v,E,A=!1)=>{const I=e.template_stamp("tpl-pane-files"),G=new Jm(e.pane_find(I,".files-panel"),B=>z(v,G,B),u,{catalogue:A});G.selectionVerbs_declare(B=>S(v,B)),G.rowVerbs_declare((B,C)=>O(v,B,C),(B,C)=>{s.regard_write(v,{address:C,modelKind:"fs.file"}),pa(C)!==null&&n.client.line_execute(`getfacl "${C}"`,{silent:!0,observe:!1}).then(L=>{G.rowReadout_show(C,FI(L))}).catch(()=>{G.rowReadout_show(C,"ACCESS UNREAD")})}),t.set("files",v,G);const N=e.promptUser();return N!==null&&N!==""&&G.home_set(`/home/${N}`),i.set(v,[]),r.set(v,E),b(v),G.follow_set(E),{id:v,kind:"files",mount:I,dispose:()=>{t.delete(v),i.delete(v),s.pane_leave(v)}}}}}function $I(n,e){const{layout:t,panels:s,subjects:i}=n,r=(l,c,d)=>{d.addEventListener("click",b=>{b.target instanceof Element&&b.target.closest("button")!==null||(c.hidden=!c.hidden,c.hidden||c.querySelector("button")?.focus(),n.sound("audio3"))});const u=c.querySelector(".drawer-zoom");u!==null&&(u.dataset.pane=l),d.addEventListener("dblclick",b=>{b.target instanceof Element&&b.target.closest("button")!==null||(window.getSelection()?.removeAllRanges(),u?.click())});for(const b of c.querySelectorAll(".drawer-bind"))b.addEventListener("click",()=>{for(const g of c.querySelectorAll(".drawer-bind"))g.classList.remove("drawer-bind-selected");b.classList.add("drawer-bind-selected"),n.sound("audio3")});const h=[...c.querySelectorAll("[data-split]")],p=b=>py(b.dataset.split,b.dataset.place)??"right",f=b=>{c.dataset.mode=b;for(const g of c.querySelectorAll(".drawer-mode"))g.classList.toggle("drawer-mode-selected",g.dataset.mode===b);for(const g of h){const m=p(g);g.disabled=b==="move"&&!t.move_possible(l,m);const _=Es(m);g.title=b==="move"?`this pane moves ${m}${e.verbs.chordKeys_of(_,!0)}`:`new pane opens ${m}${e.verbs.chordKeys_of(_,!1)}`}};for(const b of c.querySelectorAll(".drawer-mode"))b.addEventListener("click",()=>{const g=b.dataset.mode==="move"?"move":"split";f(g==="move"&&c.dataset.mode==="move"?"split":g),n.sound("audio3")});for(const b of h)b.addEventListener("click",()=>{if(c.dataset.mode==="move"){e.verbs.move(l,p(b)),f("split"),c.hidden=!0;return}const g=b.dataset.split==="row"?"row":"col",m=b.dataset.place==="before",_=c.querySelector(".drawer-bind-selected")?.dataset.bind??"unlinked",y=_==="viewer"?"view":_==="fs"?"fs":"empty";e.pillPane_spawn(l,y,g,m)!==null&&(c.hidden=!0,n.sound("audio3"))});for(const b of new Set(Di.filter(g=>g.selector!==null&&g.move!==!0).map(g=>g.selector??""))){const g=c.querySelector(b);g!==null&&!g.title.includes("[keys ")&&(g.title=`${g.title}${e.verbs.chordKeys_of(b,!1)}`)}c.querySelector(".drawer-close")?.addEventListener("click",()=>{if(l==="dag"){e.dag_dismiss(),e.home_apply();return}t.leaf_close(l)||e.home_apply(),e.orphans_dispose(),n.sound("audio3")})},a=(l,c,d)=>{const{browser:u}=e,h=c.querySelector(".drawer-binding");if(h!==null){const g=document.createElement("span");g.className="drawer-label drawer-label-cwd",g.textContent="CWD",h.appendChild(g);const m=(_,y,z)=>{const w=document.createElement("button");w.className="pacs-capsule drawer-cwdbind",w.dataset.follow=y?"on":"off",w.textContent=_,w.title=z,w.addEventListener("click",()=>{u.follows(l)!==y&&u.follow_set(l,y),n.sound("audio3")}),h.appendChild(w)};m("FOLLOW CWD",!0,"bind this browser to the session cwd (the console's browser)"),m("ROOT HERE",!1,"unbind from the cwd: this browser keeps its own place"),u.cwdBind_sync_register(l,()=>{const _=u.follows(l);for(const y of h.querySelectorAll(".drawer-cwdbind"))y.classList.toggle("drawer-bind-selected",y.dataset.follow==="on"===_)}),u.cwdBind_sync(l)}const p=()=>s.get("files",l);d.querySelector(".files-home")?.addEventListener("click",()=>{if(u.follows(l)){n.terminal.line_run("cd ~");return}const g=p();g!==void 0&&u.rooted_walk(l,g,"~")}),d.querySelector(".files-back")?.addEventListener("click",()=>{if(u.follows(l)){n.terminal.line_run("cd -");return}const g=p();g!==void 0&&u.rooted_back(l,g)});const f=()=>p()?.path_current()??null;d.querySelector(".files-mkdir")?.addEventListener("click",()=>{const g=f();g!==null&&u.directory_make(l,g)}),d.querySelector(".files-refresh")?.addEventListener("click",()=>{const g=f();g!==null&&u.listing_refresh(l,g)});const b=d.querySelector(".files-upload-input");d.querySelector(".files-upload")?.addEventListener("click",()=>{f()!==null&&b?.click()}),b?.addEventListener("change",()=>{const g=f(),m=b.files;g===null||m===null||m.length===0||(u.files_deliver(l,g,Array.from(m)),b.value="")})},o=(l,c)=>{const d=u=>u.modelKind==="fs.file"?u.address.replace(/\/[^/]*$/,"")||"/":u.address;c("ENTER NODE","move the session into the indicated node (its data directory)",()=>{const u=i.regard_get(l),h=s.get("dag",l)?.feed_get()??null,p=u===null?h===null?null:`/proc/jobs/feed_${h}`:d(u);p!==null&&n.terminal.line_run(`cd "${p}"`)}),c("PROCESS NODE","run an executable on the indicated node's output (a catalogue opens beside)",()=>{const u=i.regard_get(l),h=s.get("dag",l)?.feed_get()??null;if(u===null||h===null)return;const p=d(u),f=Xd(p)??(/_(\d+)\/?$/.exec(p)===null?null:parseInt(/_(\d+)\/?$/.exec(p)?.[1]??"",10));f!==null&&e.process_open(l,{input:p.replace(/\/data\/?$/,"")+"/data",feed:h,node:f})}),c("ENTER FEED","move the session into the feed on stage (or the one picked in the roster)",()=>{const u=s.get("dag",l)?.feed_get()??null;u!==null&&n.terminal.line_run(`cd "/proc/jobs/feed_${u}"`)}),c("BACK","return to the previous listing inside the node",()=>e.overlay_back(l)),c("CLEAR DETAIL","dismiss the node facts (a click on empty space does too)",()=>{s.get("dag",l)?.detail_clear()}),c("REFRESH","revisit the feed now (a watch keeps sampling it while it runs)",()=>{s.get("dag",l)?.refresh()})};return(l,c,d)=>{const u=d.querySelector(".pane-drawer"),h=d.querySelector(".pane-handle");if(u===null||h===null)return;r(l,u,h);const p=u.querySelector(".drawer-children");if(p===null)return;const f=(b,g,m)=>{const _=document.createElement("button");_.className="pacs-capsule drawer-child",_.textContent=b,_.title=g,_.addEventListener("click",()=>{m(),u.hidden=!0,n.sound("audio3")}),p.appendChild(_)};(c==="files"||c==="catalogue")&&a(l,u,d),c==="dag"&&o(l,f)}}function VI(n,e){const{layout:t,panels:s,paneInstance_get:i,subjects:r}=n,a=u=>i(u)?.kind??null,o=(u,h)=>{const p=new Set(t.panes_shown()),f=r.group_of(h),b=s.entries(u).filter(([g])=>p.has(g));return s.get(u,h)??b.find(([g])=>r.group_of(g)===f)?.[1]??(b.length===1?b[0]?.[1]:void 0)},l=async(u,h,p)=>{if(h==="state"){const f=u.state_get();if(f===null)return"image state: no image on the field";const b=(f.viewports??[]).map(g=>`${g.id.replace(/^.*-/,"")} scale=${g.scale.toFixed(3)} focus=${g.focus.map(m=>m.toFixed(2)).join(",")} voi=${g.voi===null?"-":`${g.voi.lower.toFixed(1)}..${g.voi.upper.toFixed(1)}`}`).join(" | ");return`image: layout=${f.layout} tool=${f.tool} primary=${f.primaryTool??"-"} slice=${f.slice}/${f.slices} refused=${f.refused} annotations=${f.annotations} filled=${f.filled}
|
|
4250
4250
|
viewports: ${b||"(none)"}`}if(h==="layout"){const f=p[0]??"";return Y0.includes(f)?await u.layout_set(f)?`image layout ${f}`:u.state_get()?.waiting===f?`image layout ${f}: waiting for LOAD`:`image layout ${f}: not offered`:"image layout single|mpr|3d|slab"}if(h==="slice"){const f=Number(p[0]);return!Number.isInteger(f)||f<1?"image slice <n>":u.slice_set(f)?`image slice ${f}`:`image slice ${f}: not offered`}if(h==="series"){const f=Number(p[0]),b=u.siblings_get();if(b.length===0)return"image series: this pane holds one series, not a study";const g=b[f-1];if(g===void 0)return`image series <1..${b.length}>: ${b.map((_,y)=>`${y+1} ${_.label}`).join(" · ")}`;const m=await e.series_ask(g.path);return m===null?`image series ${f}: ${g.path}: not a readable DICOM series`:(u.series_show(m,{siblings:[...b]}),`image series ${f} ${g.label}`)}if(h==="wl"){if((p[0]??"").toLowerCase()==="preset"){const g=p[1]??"";return g===""?"image wl preset <brain|bone|lung|soft|liver>":u.wlPreset_set(g)?`image wl preset ${g}`:`image wl preset ${g}: none for this modality`}const f=Number(p[0]),b=Number(p[1]);return!Number.isFinite(f)||!Number.isFinite(b)||f>=b?"image wl <lower> <upper> | image wl preset <name>":u.wl_set(f,b)?`image wl ${f} ${b}`:"image wl: not offered"}if(h==="colormap"){const f=(p[0]??"").toLowerCase();return yo.includes(f)?u.colormap_set(f)?`image colormap ${f}`:`image colormap ${f}: not offered`:"image colormap gray|hot|jet|cool"}if(h==="save")return await u.annotations_save()?"image save":"image save: nothing saved (the console says why)";if(h==="load")return await u.load_press()?"image load":"image load: nothing was waiting";if(h==="guard"){if((p[0]??"").toLowerCase()==="off")return u.guard_set(null),"image guard off";const b=Number(p[0]);return!Number.isFinite(b)||b<0?`image guard <bytes>|off (now ${u.guard_get()===null?"off":u.guard_get()})`:(u.guard_set(b),`image guard ${b}`)}if(h==="ghost"){const b=(p[0]??"").toLowerCase()==="off"?null:Number(p[0]);return b!==null&&(!Number.isFinite(b)||b<0||b>1)?"image ghost <0..1>|off (SLAB layout)":u.ghost_set(b)?`image ghost ${b===null?"off":b}`:"image ghost: SLAB layout only"}if(h==="tags"){const f=s.idOf("image",u);return f===null?"image tags: no image pane":e.tagsPane_open(f)}return"image <path> · layout single|mpr|3d · slice <n> · series <n> · wl <lo> <hi> | wl preset <name> · colormap <name> · save"},c=(u,h,p)=>{if(h==="redact"){const f=(p[0]??"").toLowerCase();return f!=="on"&&f!=="off"?"tags redact on|off":(u.redact_set(f==="on"),`tags redact ${f}`)}if(h==="filter"){const f=p.join(" ");return f===""||f.toLowerCase()==="off"?(u.filter_set(null),"tags filter off"):(u.filter_set(f),`tags filter ${f}`)}return"tags redact on|off · filter <text>|off"},d=()=>{const u=t.tree_get();if(u===null)return"# empty desktop";const h=[],p=w=>"pane"in w?w.pane:p(w.first),f=p(u),b=a(f);h.push(`view ${b==="dag"?"runs":b==="pacs"?"pacs":"files"}`);let g=1;const m=(w,O)=>{const S=a(w);if(S==="dag"&&w!==f&&h.push(`pane %${O} claim runs`),S==="files"&&w!==f&&r.group_of(w)===w&&h.push(`pane %${O} claim files`),S==="dag"){const M=i(w)?.mount,v=M?.querySelector(".dag-strategy")?.textContent?.toLowerCase()??"ranked",E=M?.querySelector(".dag-projection")?.textContent?.toLowerCase()??"3d",A=M?.querySelector(".dag-hue")?.textContent?.toLowerCase()??"status";v!=="ranked"&&h.push(`dag %${O} layout ${v}`),E!=="3d"&&h.push(`dag %${O} projection ${E}`),A!=="status"&&h.push(`dag %${O} hue ${A}`)}},_=(w,O)=>{if("pane"in w){m(w.pane,O);return}const S=p(w.second),M=a(S),v=M==="view"?"viewer":M==="files"&&r.group_of(S)!==S?"fs":"unlinked";h.push(`pane %${O} bind ${v}`),h.push(`pane %${O} split ${w.dir==="col"?"right":"below"}`);const E=++g;_(w.first,O),_(w.second,E)};_(u,g);const y=document.body.dataset.header;return y!==void 0&&h.push(`header ${y}`),document.getElementById("drawer")?.classList.contains("drawer-closed")&&h.push("console close"),h.join(`
|
|
4251
4251
|
`)};return{focused_get:()=>{const u=document.body.dataset.zoom;return u!==void 0&&u!=="console"?u:t.focused_get()??t.panes_shown()[0]??null},focus_set:u=>i(u)===void 0?!1:(t.focus_set(u),!0),panes_shown:()=>t.panes_shown(),pane_move:e.verbs.move,pane_flip:e.verbs.flip,pane_resize:e.verbs.resize,help_open:e.help_open,focus_last:()=>{const u=t.focus_last();return u!==null&&n.sound("audio3"),u===null?null:`focused ${u}`},paneRect_get:u=>document.querySelector(`.layout-leaf[data-leaf="${u}"]`)?.getBoundingClientRect()??null,paneMount_get:u=>i(u)?.mount??null,paneKind_get:a,paneLinked_get:u=>r.group_of(u)!==u,feed_enter:e.feed_enter,consoleZoom_toggle:e.consoleZoom_toggle,launcher_enter:e.launcher_enter,identity_get:e.identity_get,node_immerse:u=>{const p=r.regard_get(u)?.address.match(/_(\d+)(?:\/data)?\/?$/)??null;return p===null?!1:s.get("dag",u)?.node_flyTo(parseInt(p[1]??"",10))??!1},file_download:u=>{const h=r.regard_get(u);return h===null||h.modelKind!=="fs.file"?!1:(e.file_save(h.address),!0)},image_open:(u,h,p)=>e.image_open(u,h,p??{}),image_control:async(u,h,p)=>{const f=o("image",u);return f===void 0?`image ${h}: no image pane on stage for '${u}'`:l(f,h,p)},universe_control:(u,h,p)=>{const f=new Set(t.panes_shown()),b=(u!==null?s.get("universe",u):void 0)??s.entries("universe").find(([g])=>f.has(g))?.[1];return b===void 0?"universe: no universe pane on stage (press the dashboard tile)":b.control(h,p)},tags_control:(u,h,p)=>{const f=o("tags",u);return f===void 0?`tags ${h}: no tags pane on stage for '${u}'`:c(f,h,p)},file_delete:u=>{const h=r.regard_get(u);return h===null||h.modelKind!=="fs.file"?!1:(n.terminal.line_run(`rm "${h.address}"`),!0)},session_run:async u=>{try{return(await n.client.line_execute(u,{silent:!0,observe:!1})).envelopes.map(p=>p.renderedErr??p.rendered).join(`
|
|
4252
|
-
`)}catch(h){return h instanceof Error?h.message:String(h)}},desktop_serialize:d}}function HI(n,e,t){if(t===!0)return"daemon-older";if(e===void 0)return null;const s=e.surface;return t===!1?s!==void 0&&n.built<s.built?"argus-older":null:s===void 0?"daemon-older":s.git===n.git&&s.built===n.built?null:n.built>=s.built?"daemon-older":"argus-older"}const Pu={"daemon-older":{readout:"CALYPSO DAEMON OUT OF DATE",before:"The calypso daemon has been updated and should be restarted; some controls may not work until then. ",cure:"Restart the calypso daemon",after:"."},"argus-older":{readout:"ARGUS OUT OF DATE",before:"ARGUS is older than the calypso daemon. ",cure:"Refresh",after:" to load the new ARGUS."}};function EM(n){const e=Pu[n];return`${e.before}${e.cure}${e.after}`}function qI(n,e,t,s,i=document.body,r){i.querySelector(".build-mismatch")?.remove();const a=t.surface!==void 0?`ARGUS ${t.surface.git} built ${t.surface.built}Z`:"an ARGUS too old to say its build";s(`argus: ${EM(n)}`);const o=t.surface!==void 0&&t.surface.git===e.git&&t.surface.built===e.built;s(o?`argus: the calypso daemon's own code on disk has changed since it started (ARGUS ${e.git} built ${e.built}Z)`:`argus: ARGUS ${e.git} built ${e.built}Z · calypso daemon started with ${a}`);const l=Pu[n],c=document.createElement("div");c.className="stale-page build-mismatch",c.dataset.mismatch=n,c.setAttribute("role","alert");const d=document.createElement("span");d.className="stale-page-words";let u=document.createTextNode(l.cure);if(n==="argus-older"){const p=document.createElement("button");p.type="button",p.className="stale-page-reload",p.textContent=l.cure,p.title="reload this tab to load the new ARGUS",p.addEventListener("click",()=>{window.location.reload()}),u=p}else if(r!==void 0){const p=document.createElement("button");p.type="button",p.className="stale-page-reload build-mismatch-restart",p.textContent=l.cure,p.title="restart the calypso daemon (asks first; you stay logged in)",p.addEventListener("click",r),u=p}d.append(document.createTextNode(l.before),u,document.createTextNode(l.after));const h=document.createElement("button");h.type="button",h.className="build-mismatch-dismiss",h.textContent="×",h.title="dismiss (the status strip keeps saying it)",h.addEventListener("click",()=>{c.remove()}),c.append(d,h),i.appendChild(c)}function XI(n,e,t,s=document.body){const i={git:"
|
|
4253
|
-
`))}).catch(()=>{}).finally(s)}let ui=()=>{};function Kp(){ui(document.body.dataset.zoom==="console"?null:"console")}const sG=b0(),nG="ARGUS",Yp="argus-audio",iG=.4;let hi=!1;function Is(n){if(hi)return;const e=document.getElementById(n);e instanceof HTMLAudioElement&&(e.currentTime=0,e.volume=iG,e.play().catch(()=>{}))}function rG(){const n=Xe("head-menu-pill"),e=t=>{t?document.body.dataset.headMenu="open":delete document.body.dataset.headMenu,n.setAttribute("aria-expanded",String(t))};n.addEventListener("click",t=>{t.stopPropagation(),e(document.body.dataset.headMenu!=="open")}),document.addEventListener("click",t=>{if(document.body.dataset.headMenu!=="open")return;t.target instanceof Element&&t.target.closest("#header-dag-info")!==null||e(!1)})}function aG(){const n=Xe("audio-pill");try{hi=window.localStorage.getItem(Yp)==="off"}catch{hi=!1}const e=()=>{n.classList.toggle("audio-off",hi)};e(),n.addEventListener("click",()=>{hi=!hi;try{window.localStorage.setItem(Yp,hi?"off":"on")}catch{}e(),Is("audio2")})}function Xe(n){const e=document.getElementById(n);if(e===null)throw new Error(`required element #${n} is missing`);return e}function Ws(n){const e=Xe(n);if(!(e instanceof HTMLTemplateElement))throw new Error(`#${n} is not a template`);const t=e.content.firstElementChild;if(!(t instanceof HTMLElement))throw new Error(`template #${n} is empty`);return t.cloneNode(!0)}function os(n,e){const t=n.querySelector(e);if(t===null)throw new Error(`pane template is missing ${e}`);return t}function oG(){return _0(window.location)}let Ac=null,ll=0;function Lu(n,e){const t=()=>{e.dataset.zoom!==void 0||e.dataset.header==="away"||(ll=Math.ceil(n.getBoundingClientRect().bottom),e.style.setProperty("--zoom-header-height",`${ll}px`))};t(),Ac===null&&(Ac=new ResizeObserver(t),Ac.observe(n))}const Zp=120,lG=96;function cG(n,e,t,s){let i="";const r=d=>{d?(i=n.style.height,n.style.height=""):i!==""&&(n.style.height=i),n.classList.toggle("drawer-closed",d),Is("audio3"),d||(s.size_fit(),s.focus_take())};t.addEventListener("click",()=>r(!n.classList.contains("drawer-closed")));let a=0,o=0,l=!1;e.addEventListener("pointerdown",d=>{l=!0,a=d.clientY,o=n.getBoundingClientRect().height,n.classList.add("drawer-dragging"),e.setPointerCapture(d.pointerId),d.preventDefault()}),e.addEventListener("pointermove",d=>{if(!l)return;const u=Math.max(Zp,window.innerHeight-lG),h=o+(d.clientY-a),p=Math.min(Math.max(Zp,h),u);n.style.height=`${p}px`,s.size_fit()});const c=()=>{l=!1,n.classList.remove("drawer-dragging")};return e.addEventListener("pointerup",c),e.addEventListener("pointercancel",c),r}function dG(n){const e=document.body,t=document.querySelector(".wrap:not(#gap)");let s;const i=r=>{for(const a of document.querySelectorAll(".pane-zoomed, .pane-zoomed-path"))a.classList.remove("pane-zoomed","pane-zoomed-path");if(r===null)delete e.dataset.zoom,s!==void 0&&(e.dataset.header=s,s=void 0);else{window.scrollTo(0,0),e.dataset.header==="away"?(s="away",delete e.dataset.header,ll>0&&e.style.setProperty("--zoom-header-height",`${ll}px`)):t!==null&&Lu(t,e),e.dataset.zoom=r;const o=Io(r)?.mount?.parentElement??null;o?.classList.add("pane-zoomed");let l=o?.parentElement??null;for(;l!==null&&l.id!=="layout-root";)l.classList.add("pane-zoomed-path"),l=l.parentElement}for(const a of document.querySelectorAll(".drawer-zoom"))a.textContent=r!==null&&a.dataset.pane===r?"RESTORE":"ZOOM";Is("audio3")};return Xe("header-restore").addEventListener("click",()=>{e.dataset.zoom!==void 0&&i(null)}),document.addEventListener("click",r=>{const a=r.target;if(!(a instanceof Element))return;const o=a.closest("[data-pane]");if(o===null)return;const l=o.dataset.pane??"";l!==""&&i(e.dataset.zoom===l?null:l)}),window.addEventListener("keydown",r=>{r.key==="Escape"&&e.dataset.zoom!==void 0&&(i(null),r.stopImmediatePropagation())}),Xe("drawer").addEventListener("transitionend",r=>{r.propertyName==="height"&&n.size_fit()}),i}function uG(){const n=new HT(document.getElementById("data-cascade")),e=document.getElementById("header-telemetry");return e!==null&&n.telemetryPanel_bind(e),n}const Dc=96,hG=220,Qp="argus.headerBand.height",fG=52;function pG(){const n=document.documentElement,e=document.getElementById("header-strip"),t=document.querySelector(".wrap:not(#gap)");if(e===null||t===null)return;const s=d=>{const u=Math.max(Dc,window.innerHeight-hG),h=Math.min(Math.max(Dc,d),u);n.style.setProperty("--header-band-h",`${h}px`);try{window.localStorage.setItem(Qp,String(h))}catch{}},i=(()=>{try{return window.localStorage.getItem(Qp)}catch{return null}})();i!==null&&Number.isFinite(Number(i))&&s(Number(i));const r=()=>{const d=t.getBoundingClientRect();e.style.top=`${Math.max(0,d.bottom-fG)}px`};r(),window.addEventListener("resize",r),new MutationObserver(r).observe(document.body,{attributes:!0,attributeFilter:["data-header"]}),window.setInterval(r,500);let a=!1,o=0,l=0;e.addEventListener("pointerdown",d=>{const u=document.querySelector(".header-face");a=!0,o=d.clientY,l=u===null?Dc:u.getBoundingClientRect().height,e.setPointerCapture(d.pointerId),d.preventDefault()}),e.addEventListener("pointermove",d=>{a&&(s(l+(d.clientY-o)),r())});const c=()=>{a=!1,r()};e.addEventListener("pointerup",c),e.addEventListener("pointercancel",c)}let Wu=null;function mG(n){const e=n.querySelector(".gather-rows");if(e===null)return;const t=$s(e,{rows:".listing-row",label:s=>`+${s} MORE · ON STAGE`,press:()=>{Wu?.()},className:"strategy-pill gather-more",mount:n});t.title="the whole cohort as a pane on the main panel"}function Jp(n){$s(n,{rows:".strategy-pill, .listing-action, .holder-mark",className:"frame-more"})}function gG(){const n=e=>{for(const t of e.querySelectorAll(".mode-frame:not([data-more])"))Jp(t)};new MutationObserver(e=>{for(const t of e)for(const s of t.addedNodes)s instanceof HTMLElement&&(s.matches(".mode-frame")&&s.dataset.more===void 0&&Jp(s),n(s))}).observe(document.body,{childList:!0,subtree:!0}),n(document)}function MG(){const n=document.body,e=document.querySelector(".wrap:not(#gap)"),t=r=>{n.dataset.header===r?(e!==null&&Lu(e,n),n.dataset.header="away"):n.dataset.header=r};document.querySelector(".panel-1")?.addEventListener("click",()=>t("stats")),document.querySelector(".panel-2")?.addEventListener("click",()=>t("dag")),document.querySelector(".panel-gather")?.addEventListener("click",()=>t("gather"));const s=document.querySelector(".header-gather-field");s?.querySelector(".gather-stage")?.addEventListener("click",r=>{r.stopPropagation(),Wu?.()}),s!==null&&mG(s),gG();const i=()=>{n.dataset.zoom===void 0&&(delete n.dataset.header,Is("audio3"))};Xe("header-restore").addEventListener("click",i),window.addEventListener("keydown",r=>{r.key==="Escape"&&n.dataset.header==="away"&&n.dataset.zoom===void 0&&n.dataset.gutter!=="away"&&i()})}const fr=[{key:"lower-decks",label:"LOWER DECKS"},{key:"gold",label:"CERRITOS GOLD"},{key:"medical",label:"MEDICAL"},{key:"nemesis",label:"NEMESIS"},{key:"pharos",label:"PHAROS"}],AM="argus-landing",bG=15e3;function em(){try{return(window.localStorage.getItem(AM)??"launcher")==="launcher"}catch{return!0}}function _G(n){try{window.localStorage.setItem(AM,n?"launcher":"last")}catch{}}const tm="argus-theme",zG="argus-lcars",wG="medical",yG={sickbay:"medical"};function vG(){const n=Xe("theme-pill"),e=Math.max(fr.findIndex(r=>r.key===wG),0);let t=e;try{const r=window.localStorage.getItem(tm)??window.localStorage.getItem(zG),a=r===null?null:yG[r]??r,o=fr.findIndex(l=>l.key===a);t=o>=0?o:e}catch{t=e}const s=document.documentElement,i=()=>{const r=fr[t]??fr[0];r.key==="lower-decks"?delete s.dataset.theme:s.dataset.theme=r.key,n.textContent=r.label};i(),n.addEventListener("click",()=>{t=(t+1)%fr.length,i();try{window.localStorage.setItem(tm,fr[t]?.key??"lower-decks")}catch{}Is("audio2")})}function OG(n){const e=document.getElementById("about-rows");if(e===null)return;e.replaceChildren();const t={cumin:n.stack?.cumin,salsa:n.stack?.salsa,chili:n.stack?.chili,brasa:n.stack?.brasa,calypso:n.stack?.calypso,chell:n.stack?.chell},s=[];for(const[i,r]of Object.entries(t))r!==void 0&&s.push([i.toUpperCase(),r]);s.push(["MENU","0.18.0"],["ARGUS","7e2974e · 2026-10-05 01:26Z"],["WIRE",`V${n.protocolVersion}`]),n.stack?.build!==void 0&&s.push(["BUILD",n.stack.build]);for(const[i,r]of s){const a=document.createElement("div");a.className="telemetry-row";const o=document.createElement("span");o.className="telemetry-label",o.textContent=i;const l=document.createElement("span");l.className="telemetry-value",l.textContent=r,l.title=r,a.append(o,l),e.appendChild(a)}}function xG(){for(const n of document.querySelectorAll(".left-frame button, .left-frame-top button"))n.addEventListener("click",()=>Is("audio2"))}let mr=null;async function SG(n){const e=new PT(document),t=new WT(Xe("index-instrument"),()=>Date.now(),{errored_open:()=>qs("status:error")}),s=new UT(Xe("lane-instrument"));window.setInterval(()=>s.tick(),500);const i=new eI,r=new RT;r.writeObserver_set((D,P)=>{ye.regard_send({address:D.address,...D.modelKind!==void 0?{modelKind:D.modelKind}:{},groupId:P,paneId:D.paneId}),Z()});const a={get layout(){return j},panels:i,paneInstance_get:Io,subjects:r,get dormant(){return ie},sound:Is,get terminal(){return le},get client(){return ye}},o=uI(a,{catalogue_of:D=>S.get(D),run_press:(D,P,Q)=>{Le(D,P,Q)}}),l=o.entry_show,c=D=>tu(D,n),d=jI(a,{vfsUrl_build:c,downloadUrl_build:D=>z0(D,n),image_open:(D,P)=>L(D,P),process_open:(D,P)=>H(D,P),run_press:(D,P,Q)=>{Le(D,P,Q)},cohort_gather:D=>ae(D),verbLine_run:(D,P)=>R(D,P),ask_onPane:(D,P)=>x(D,P),binEntry_show:l,catalogue_of:D=>S.get(D),promptUser:()=>w,template_stamp:Ws,pane_find:os}),{previewProvider:u,fileText_fetch:h,file_save:p,rootedListing_show:f,listing_refresh:b,directory_make:g,files_deliver:m,filesBody_stamp:_,rowVerbs_of:y}=d,z=d.instance_build;let w=null,O=null;const S=new Map,M=D=>{const P=Ws("tpl-pane-universe"),Q=new tT({canvas:os(P,".universe-canvas"),title:os(P,".universe-title"),state:P.querySelector(".pane-state"),empty:os(P,".universe-empty"),projectionPill:P.querySelector(".universe-projection"),refreshPill:P.querySelector(".universe-refresh"),replayPill:P.querySelector(".universe-replay"),scalePill:P.querySelector(".universe-scale"),viewPill:P.querySelector(".universe-view"),gravityPill:P.querySelector(".universe-gravity"),densityPill:P.querySelector(".universe-density"),drawPill:P.querySelector(".universe-draw"),captionsPill:P.querySelector(".universe-captions"),arrangementPill:P.querySelector(".universe-arrangement"),facts:P.querySelector(".universe-facts"),backPill:P.querySelector(".universe-back"),openPill:P.querySelector(".universe-open")},{command_run:ee=>{ye.line_execute(ee,{silent:!0,observe:!1}).then(q=>{for(const _e of q.envelopes)Q.envelope_observe(_e)})},feed_dag:async ee=>{const q=await ye.line_execute(`feed diagram feed_${ee}`,{silent:!0,observe:!1});for(const _e of q.envelopes){if(_e.model?.kind!==Vn.feedDag)continue;const pe=Lc.safeParse(_e.model.data);if(pe.success)return pe.data}return null},node_enter:ee=>{le.line_run(`cd "${ee}"`)},node_dive:ee=>{Ue(D,ee.replace(/\/data$/,""))},node_process:ee=>{const q=pa(ee.vfsPath)??(/\/feed_(\d+)(?:\/|$)/.exec(ee.vfsPath)===null?null:Number(/\/feed_(\d+)(?:\/|$)/.exec(ee.vfsPath)[1])),_e=w===null?ee.vfsPath:ee.vfsPath.replace(/^\/proc\/jobs\//,`/home/${w}/feeds/`);H(D,{input:_e,feed:q,node:ee.instanceId})},feed_open:ee=>{qs(),vt.feed_enter(ee)},plugin_open:ee=>{(async()=>{const q=await ye.line_execute("ls /bin",{silent:!0,observe:!1}),_e=[];for(const je of q.envelopes){if(je.model?.kind!=="fs.listing")continue;const Ot=je.model.data,Lt=Array.isArray(Ot)?Ot:[Ot];for(const es of Lt)for(const mt of es.items??[])_e.push(mt.name)}const pe=_e.filter(je=>je.startsWith(`${ee}-v`)).sort((je,Ot)=>je.localeCompare(Ot,void 0,{numeric:!0})).pop();if(pe===void 0){le.line_note(`universe: ${ee} is not in /bin`);return}Xe("gutter-files").click(),l("files",i.get("files","files"),`/bin/${pe}`,"plugin")})().catch(q=>{le.line_note(`universe: could not open ${ee} in /bin: ${q instanceof Error?q.message:String(q)}`)})},note:ee=>le.line_note(ee)},ah());return i.set("universe",D,Q),{id:D,kind:"universe",mount:P,dispose:()=>{i.delete(D),r.pane_leave(D),Q.dispose()}}},v=D=>{const P=Ws("tpl-pane-image"),Q=new ST(P,{source:{url_of:c},note:ee=>le.line_note(ee),regard:ee=>r.regard_write(D,{address:ee,modelKind:"dicom.instance"}),file_put:async(ee,q)=>{try{return(await fetch(c(ee),{method:"POST",body:q})).status}catch{return 0}},tags_read:ee=>A(ee),tags_open:()=>{le.line_note(G(D))}});return i.set("image",D,Q),{id:D,kind:"image",mount:P,dispose:()=>{Q.dispose(),i.delete(D),r.pane_leave(D)}}},E=D=>{const P=Ws("tpl-pane-tags"),Q=new AT(P,{note:ee=>le.line_note(ee)});return i.set("tags",D,Q),{id:D,kind:"tags",mount:P,dispose:()=>{i.delete(D),r.pane_leave(D)}}},A=async D=>{try{const P=await ye.line_execute(`dcm tags "${D}"`,{silent:!0,observe:!1});for(const Q of P.envelopes){if(Q.model?.kind!==Da.tags)continue;const ee=sh.safeParse(Q.model.data);if(ee.success)return ee.data}}catch{}return null},I=(D,P)=>{const Q=i.get("tags",D);Q===void 0||Q.path_get()===P||A(P).then(ee=>{if(ee===null){le.line_note(`tags: ${P}: not a readable DICOM file`);return}i.get("tags",D)?.model_show(ee)})},G=D=>{const P=new Set(j.panes_shown()),Q=r.group_of(D);for(const q of i.ids("tags"))if(P.has(q)&&r.group_of(q)===Q)return j.focus_set(q),"image tags";if(!P.has(D))return"image tags: the image pane is not on stage";const ee=Ae("tags",D);return j.leaf_split(D,fe.replayPlace_get()?.dir??"col",ee.id,fe.replayPlace_get()?.before??!1)?(Ie(ee.id,D,fe.replayPlace_get()?.dir??"col",fe.replayPlace_get()?.before??!1),"image tags"):(cs(ee.id),j.mount_remove(ee.id),"image tags: could not open beside the image pane")},N=async D=>{try{const P=await ye.line_execute(`dcm series "${D}"`,{silent:!0,observe:!1});for(const Q of P.envelopes){if(Q.model?.kind!==Da.series)continue;const ee=nh.safeParse(Q.model.data);if(ee.success)return ee.data}}catch{}return null},B=async D=>{try{const P=await ye.line_execute(`ls "${D}"`,{silent:!0,observe:!1});for(const Q of P.envelopes){if(Q.model?.kind!=="fs.listing")continue;const ee=Q.model.data,q=(Array.isArray(ee)?ee[0]:ee)??{},_e=(q.path??D).replace(/\/$/,"");return(q.items??[]).filter(pe=>pe.type==="dir").map(pe=>`${_e}/${pe.name}`)}}catch{}return[]},C=(D,P)=>{const Q=je=>{P!==void 0&&r.regard_write(je,P)};if(D!==null&&i.has("image",D))return Q(D),i.get("image",D)??null;const ee=new Set(j.panes_shown());if(P!==void 0){for(const[je,Ot]of i.entries("image"))if(ee.has(je)&&r.regard_get(je)?.address===P.address)return Q(je),Ot}const q=D!==null?r.group_of(D):null;for(const[je,Ot]of i.entries("image"))if(ee.has(je)&&q!==null&&r.group_of(je)===q)return Ot;const _e=D!==null&&ee.has(D)?D:kt();if(_e===null)return null;const pe=Ae("image",D??void 0);return j.leaf_split(_e,fe.replayPlace_get()?.dir??"col",pe.id,fe.replayPlace_get()?.before??!1)?(Ie(pe.id,_e,fe.replayPlace_get()?.dir??"col",fe.replayPlace_get()?.before??!1),Q(pe.id),i.get("image",pe.id)??null):(cs(pe.id),j.mount_remove(pe.id),null)},L=async(D,P,Q={},ee)=>{re();const q=D!==null?void 0:Hc.test(P)?{address:P,modelKind:"image.volume"}:{address:Ho.test(P)?P.slice(0,P.lastIndexOf("/")):P.replace(/\/$/,""),modelKind:"dicom.series"},_e=C(D,q);if(_e===null)return"image: no pane to open beside";const pe=i.idOf("image",_e);if(pe!==null&&ee?.(pe),Hc.test(P))return _e.opening_show(P),_e.volume_show(P),`image ${P}`;const je=Ho.test(P),Ot=je?P.slice(0,P.lastIndexOf("/")):P.replace(/\/$/,"");_e.opening_show(Ot);let Lt=await N(Ot),es=[];if(Lt===null&&!je){const it=(await B(Ot)).slice(0,32);for(const fs of it){const Mt=await N(fs);if(Mt!==null){es=it.map(Os=>({path:Os,label:Os.split("/").pop()??Os})),Lt=Mt;break}}}if(Lt===null)return _e.opening_fail(P,"NOT A READABLE SERIES"),`image: ${P}: not a readable DICOM series, study, or volume`;const mt=je?Math.max(1,Lt.files.indexOf(P)+1):1;return _e.series_show(Lt,{siblings:es,startAt:mt,...Q.force===!0?{force:!0}:{}}),`image ${Lt.path}${es.length>1?` (1 of ${es.length} series)`:""}`},H=(D,P)=>{re();const Q=new Set(j.panes_shown());for(const[pe,je]of S)if(Q.has(pe)&&je.input===P.input){j.focus_set(pe);return}const ee=Q.has(D)?D:kt()??D,q=Ae("catalogue",D);if(!j.leaf_split(ee,fe.replayPlace_get()?.dir??"col",q.id,fe.replayPlace_get()?.before??!1)){cs(q.id),j.mount_remove(q.id);return}Ie(q.id,ee,fe.replayPlace_get()?.dir??"col",fe.replayPlace_get()?.before??!1),S.set(q.id,P);const _e=i.get("files",q.id);_e!==void 0&&(_e.binding_set({input:P.input,place:P.feed===null?"new feed":`feed ${P.feed}${P.node===null?"":` · node ${P.node}`}`}),_e.feedOpen_declare(pe=>de(q.id,pe)),f(q.id,_e,"/bin"),te(_e),j.focus_set(q.id))},X=5,oe=40,te=D=>{ye.line_execute(`plugininstance list --limit ${oe} --fields id,plugin_name,plugin_version,owner_username`,{silent:!0,observe:!1}).then(Q=>{const ee=[];for(const q of Q.envelopes)if(!(q.model?.kind!=="plugininstance.list"||!Array.isArray(q.model.data)))for(const _e of q.model.data){if(typeof _e.pluginName!="string"||typeof _e.pluginVersion!="string"||w!==null&&typeof _e.owner=="string"&&_e.owner!==w||_e.pluginName==="pl-dircopy")continue;const pe=`${_e.pluginName}-v${_e.pluginVersion}`;if(ee.includes(pe)||ee.push(pe),ee.length>=X)break}D.recent_set(ee.length===0?null:ee)}).catch(()=>{})},de=(D,P)=>{re();const Q=new Set(j.panes_shown());for(const[_e,pe]of i.entries("dag"))if(_e!=="dag"&&Q.has(_e)&&pe.feed_get()===P){j.focus_set(_e);return}const ee=Q.has(D)?D:kt()??D,q=Ae("dag",D);if(!j.leaf_split(ee,fe.replayPlace_get()?.dir??"col",q.id,fe.replayPlace_get()?.before??!1)){cs(q.id),j.mount_remove(q.id);return}Ie(q.id,ee,fe.replayPlace_get()?.dir??"col",fe.replayPlace_get()?.before??!1),i.get("dag",q.id)?.feed_enter(P)},Le=async(D,P,Q)=>{const ee=S.get(D),q=i.get("files",D);if(ee===void 0||q===void 0)return;const _e=it=>{le.output_write("err",`\x1B[31m${it}\x1B[0m
|
|
4252
|
+
`)}catch(h){return h instanceof Error?h.message:String(h)}},desktop_serialize:d}}function HI(n,e,t){if(t===!0)return"daemon-older";if(e===void 0)return null;const s=e.surface;return t===!1?s!==void 0&&n.built<s.built?"argus-older":null:s===void 0?"daemon-older":s.git===n.git&&s.built===n.built?null:n.built>=s.built?"daemon-older":"argus-older"}const Pu={"daemon-older":{readout:"CALYPSO DAEMON OUT OF DATE",before:"The calypso daemon has been updated and should be restarted; some controls may not work until then. ",cure:"Restart the calypso daemon",after:"."},"argus-older":{readout:"ARGUS OUT OF DATE",before:"ARGUS is older than the calypso daemon. ",cure:"Refresh",after:" to load the new ARGUS."}};function EM(n){const e=Pu[n];return`${e.before}${e.cure}${e.after}`}function qI(n,e,t,s,i=document.body,r){i.querySelector(".build-mismatch")?.remove();const a=t.surface!==void 0?`ARGUS ${t.surface.git} built ${t.surface.built}Z`:"an ARGUS too old to say its build";s(`argus: ${EM(n)}`);const o=t.surface!==void 0&&t.surface.git===e.git&&t.surface.built===e.built;s(o?`argus: the calypso daemon's own code on disk has changed since it started (ARGUS ${e.git} built ${e.built}Z)`:`argus: ARGUS ${e.git} built ${e.built}Z · calypso daemon started with ${a}`);const l=Pu[n],c=document.createElement("div");c.className="stale-page build-mismatch",c.dataset.mismatch=n,c.setAttribute("role","alert");const d=document.createElement("span");d.className="stale-page-words";let u=document.createTextNode(l.cure);if(n==="argus-older"){const p=document.createElement("button");p.type="button",p.className="stale-page-reload",p.textContent=l.cure,p.title="reload this tab to load the new ARGUS",p.addEventListener("click",()=>{window.location.reload()}),u=p}else if(r!==void 0){const p=document.createElement("button");p.type="button",p.className="stale-page-reload build-mismatch-restart",p.textContent=l.cure,p.title="restart the calypso daemon (asks first; you stay logged in)",p.addEventListener("click",r),u=p}d.append(document.createTextNode(l.before),u,document.createTextNode(l.after));const h=document.createElement("button");h.type="button",h.className="build-mismatch-dismiss",h.textContent="×",h.title="dismiss (the status strip keeps saying it)",h.addEventListener("click",()=>{c.remove()}),c.append(d,h),i.appendChild(c)}function XI(n,e,t,s=document.body){const i={git:"db6fb2f",built:"2026-10-05 02:51"};let r=[],a,o=null;const l=d=>{r!==null?r.push(d):e(d)},c=d=>{if(a===void 0)return;const u=HI(i,a,d);if(u!==o){if(o=u,u===null){n.build_show(null),s.querySelector(".build-mismatch")?.remove();return}n.build_show(Pu[u].readout,EM(u)),qI(u,i,a,l,s,ul(window.location.search)?t:void 0)}};return{attach_take:d=>{a=d.stack,c(d.stale)},stale_take:d=>c(d),release:()=>{const d=r??[];r=null;for(const u of d)e(u)}}}function KI(n=document.getElementById("door-pill")){n===null||!ul(window.location.search)||(n.hidden=!1,n.addEventListener("click",()=>{const e=$o(window.location.pathname,"logout"),t=$o(window.location.pathname,"login");fetch(e,{method:"POST",headers:{accept:"application/json"}}).catch(()=>{}).then(()=>{window.location.assign(t)})}))}const YI="Restart the calypso daemon? You'll stay logged in; the page reloads when the new daemon is up.";function ZI(n){const e=[];n.running!==null&&e.push(`the running command: ${n.running}`);for(const r of n.unsaved)e.push(`an unsaved edit in ${r}`);const t=n.others.filter(r=>r.kind==="browser").length,s=n.others.length-t,i=[];return t>0&&i.push(t===1?"1 other browser":`${t} other browsers`),s>0&&i.push(s===1?"1 chell":`${s} chells`),i.length>0&&e.push(`${i.join(" and ")}, which will be disconnected`),e}function QI(n){return n==="restart"?"The calypso daemon is restarting (asked from another browser or surface). Following it…":n==="end"?"The calypso daemon was ended by an administrator.":"The calypso daemon stopped."}function JI(n,e){const t=document.createElement("div");t.className="stale-page restart-question",t.setAttribute("role","alertdialog");const s=document.createElement("div");s.className="stale-page-words";const i=document.createElement("div");if(i.textContent=YI,s.append(i),n.length>0){const d=document.createElement("ul");d.className="restart-cuts";const u=document.createElement("li");u.className="restart-cuts-lead",u.textContent="This will cut off:",d.append(u);for(const h of n){const p=document.createElement("li");p.textContent=h,d.append(p)}s.append(d)}const r=document.createElement("button");r.type="button",r.className="restart-yes",r.textContent="YES";const a=document.createElement("button");a.type="button",a.className="restart-no",a.textContent="NO";let o=!1;const l=d=>{o||(o=!0,t.remove(),e(d))};r.addEventListener("click",()=>l(!0)),a.addEventListener("click",()=>l(!1)),t.addEventListener("keydown",d=>{d.key!=="Enter"&&d.key!=="Escape"||(d.preventDefault(),d.stopPropagation(),l(d.key==="Enter"))});const c=document.createElement("div");return c.className="restart-answers",c.append(r,a),t.append(s,c),t}function eG(n,e=document.body){const t=ul(window.location.search);let s=null,i=null,r=[],a=!1;const o=h=>{e.querySelector(".restart-said")?.remove();const p=document.createElement("div");p.className="stale-page restart-said",p.setAttribute("role","alert"),p.textContent=h,e.appendChild(p)},l=h=>{window.location.assign(`${$o(window.location.pathname,"greet")}/${encodeURIComponent(h)}`)},c=async()=>{a=!0,o("Restarting the calypso daemon…");try{const h=await fetch($o(window.location.pathname,"restart"),{method:"POST",headers:{accept:"application/json"}}),p=await h.json();if(!h.ok||p.key===void 0)throw new Error(p.error??`the door answered ${h.status}`);l(p.key)}catch(h){a=!1,o(`The calypso daemon could not be restarted: ${h instanceof Error?h.message:String(h)}`)}},d=()=>{if(!t||e.querySelector(".restart-question")!==null)return;const h={running:i,unsaved:n.unsaved(),others:r.filter(f=>f.id!==s)},p=JI(ZI(h),f=>{f&&c()});e.querySelector(".build-mismatch")?.remove(),e.appendChild(p),p.querySelector(".restart-yes")?.focus()},u=document.getElementById("restart-pill");return u!==null&&t&&(u.hidden=!1,u.addEventListener("click",d)),{ask:d,attach_take:h=>{s=h.surface??null},telemetry_take:h=>{h?.lane!==void 0&&(i=h.lane.running?.line??null),h?.surfaces!==void 0&&(r=h.surfaces)},closing_take:h=>{if(a||(o(QI(h)),h!=="restart"||!t))return;const p=window.location.pathname.split("/").filter(f=>f.length>0).at(-1);p!==void 0&&setTimeout(()=>l(p),1200)}}}function tG(n,e,t,s){n.line_execute(`motd ${t}`,{silent:!0,observe:!1}).then(i=>{const r=i.envelopes.filter(a=>a.status==="ok").map(a=>a.rendered).join("").trimEnd();r.length>0&&e.greeting_write(r.split(`
|
|
4253
|
+
`))}).catch(()=>{}).finally(s)}let ui=()=>{};function Kp(){ui(document.body.dataset.zoom==="console"?null:"console")}const sG=b0(),nG="ARGUS",Yp="argus-audio",iG=.4;let hi=!1;function Is(n){if(hi)return;const e=document.getElementById(n);e instanceof HTMLAudioElement&&(e.currentTime=0,e.volume=iG,e.play().catch(()=>{}))}function rG(){const n=Xe("head-menu-pill"),e=t=>{t?document.body.dataset.headMenu="open":delete document.body.dataset.headMenu,n.setAttribute("aria-expanded",String(t))};n.addEventListener("click",t=>{t.stopPropagation(),e(document.body.dataset.headMenu!=="open")}),document.addEventListener("click",t=>{if(document.body.dataset.headMenu!=="open")return;t.target instanceof Element&&t.target.closest("#header-dag-info")!==null||e(!1)})}function aG(){const n=Xe("audio-pill");try{hi=window.localStorage.getItem(Yp)==="off"}catch{hi=!1}const e=()=>{n.classList.toggle("audio-off",hi)};e(),n.addEventListener("click",()=>{hi=!hi;try{window.localStorage.setItem(Yp,hi?"off":"on")}catch{}e(),Is("audio2")})}function Xe(n){const e=document.getElementById(n);if(e===null)throw new Error(`required element #${n} is missing`);return e}function Ws(n){const e=Xe(n);if(!(e instanceof HTMLTemplateElement))throw new Error(`#${n} is not a template`);const t=e.content.firstElementChild;if(!(t instanceof HTMLElement))throw new Error(`template #${n} is empty`);return t.cloneNode(!0)}function os(n,e){const t=n.querySelector(e);if(t===null)throw new Error(`pane template is missing ${e}`);return t}function oG(){return _0(window.location)}let Ac=null,ll=0;function Lu(n,e){const t=()=>{e.dataset.zoom!==void 0||e.dataset.header==="away"||(ll=Math.ceil(n.offsetTop+n.offsetHeight),e.style.setProperty("--zoom-header-height",`${ll}px`))};t(),Ac===null&&(Ac=new ResizeObserver(t),Ac.observe(n))}const Zp=120,lG=96;function cG(n,e,t,s){let i="";const r=d=>{d?(i=n.style.height,n.style.height=""):i!==""&&(n.style.height=i),n.classList.toggle("drawer-closed",d),Is("audio3"),d||(s.size_fit(),s.focus_take())};t.addEventListener("click",()=>r(!n.classList.contains("drawer-closed")));let a=0,o=0,l=!1;e.addEventListener("pointerdown",d=>{l=!0,a=d.clientY,o=n.getBoundingClientRect().height,n.classList.add("drawer-dragging"),e.setPointerCapture(d.pointerId),d.preventDefault()}),e.addEventListener("pointermove",d=>{if(!l)return;const u=Math.max(Zp,window.innerHeight-lG),h=o+(d.clientY-a),p=Math.min(Math.max(Zp,h),u);n.style.height=`${p}px`,s.size_fit()});const c=()=>{l=!1,n.classList.remove("drawer-dragging")};return e.addEventListener("pointerup",c),e.addEventListener("pointercancel",c),r}function dG(n){const e=document.body,t=document.querySelector(".wrap:not(#gap)");let s;const i=r=>{for(const a of document.querySelectorAll(".pane-zoomed, .pane-zoomed-path"))a.classList.remove("pane-zoomed","pane-zoomed-path");if(r===null)delete e.dataset.zoom,s!==void 0&&(e.dataset.header=s,s=void 0);else{window.scrollTo(0,0),e.dataset.header==="away"?(s="away",delete e.dataset.header,ll>0&&e.style.setProperty("--zoom-header-height",`${ll}px`)):t!==null&&Lu(t,e),e.dataset.zoom=r;const o=Io(r)?.mount?.parentElement??null;o?.classList.add("pane-zoomed");let l=o?.parentElement??null;for(;l!==null&&l.id!=="layout-root";)l.classList.add("pane-zoomed-path"),l=l.parentElement}for(const a of document.querySelectorAll(".drawer-zoom"))a.textContent=r!==null&&a.dataset.pane===r?"RESTORE":"ZOOM";Is("audio3")};return Xe("header-restore").addEventListener("click",()=>{e.dataset.zoom!==void 0&&i(null)}),document.addEventListener("click",r=>{const a=r.target;if(!(a instanceof Element))return;const o=a.closest("[data-pane]");if(o===null)return;const l=o.dataset.pane??"";l!==""&&i(e.dataset.zoom===l?null:l)}),window.addEventListener("keydown",r=>{r.key==="Escape"&&e.dataset.zoom!==void 0&&(i(null),r.stopImmediatePropagation())}),Xe("drawer").addEventListener("transitionend",r=>{r.propertyName==="height"&&n.size_fit()}),i}function uG(){const n=new HT(document.getElementById("data-cascade")),e=document.getElementById("header-telemetry");return e!==null&&n.telemetryPanel_bind(e),n}const Dc=96,hG=220,Qp="argus.headerBand.height",fG=52;function pG(){const n=document.documentElement,e=document.getElementById("header-strip"),t=document.querySelector(".wrap:not(#gap)");if(e===null||t===null)return;const s=d=>{const u=Math.max(Dc,window.innerHeight-hG),h=Math.min(Math.max(Dc,d),u);n.style.setProperty("--header-band-h",`${h}px`);try{window.localStorage.setItem(Qp,String(h))}catch{}},i=(()=>{try{return window.localStorage.getItem(Qp)}catch{return null}})();i!==null&&Number.isFinite(Number(i))&&s(Number(i));const r=()=>{const d=t.getBoundingClientRect();e.style.top=`${Math.max(0,d.bottom-fG)}px`};r(),window.addEventListener("resize",r),new MutationObserver(r).observe(document.body,{attributes:!0,attributeFilter:["data-header"]}),window.setInterval(r,500);let a=!1,o=0,l=0;e.addEventListener("pointerdown",d=>{const u=document.querySelector(".header-face");a=!0,o=d.clientY,l=u===null?Dc:u.getBoundingClientRect().height,e.setPointerCapture(d.pointerId),d.preventDefault()}),e.addEventListener("pointermove",d=>{a&&(s(l+(d.clientY-o)),r())});const c=()=>{a=!1,r()};e.addEventListener("pointerup",c),e.addEventListener("pointercancel",c)}let Wu=null;function mG(n){const e=n.querySelector(".gather-rows");if(e===null)return;const t=$s(e,{rows:".listing-row",label:s=>`+${s} MORE · ON STAGE`,press:()=>{Wu?.()},className:"strategy-pill gather-more",mount:n});t.title="the whole cohort as a pane on the main panel"}function Jp(n){$s(n,{rows:".strategy-pill, .listing-action, .holder-mark",className:"frame-more"})}function gG(){const n=e=>{for(const t of e.querySelectorAll(".mode-frame:not([data-more])"))Jp(t)};new MutationObserver(e=>{for(const t of e)for(const s of t.addedNodes)s instanceof HTMLElement&&(s.matches(".mode-frame")&&s.dataset.more===void 0&&Jp(s),n(s))}).observe(document.body,{childList:!0,subtree:!0}),n(document)}function MG(){const n=document.body,e=document.querySelector(".wrap:not(#gap)"),t=r=>{n.dataset.header===r?(e!==null&&Lu(e,n),n.dataset.header="away"):n.dataset.header=r};document.querySelector(".panel-1")?.addEventListener("click",()=>t("stats")),document.querySelector(".panel-2")?.addEventListener("click",()=>t("dag")),document.querySelector(".panel-gather")?.addEventListener("click",()=>t("gather"));const s=document.querySelector(".header-gather-field");s?.querySelector(".gather-stage")?.addEventListener("click",r=>{r.stopPropagation(),Wu?.()}),s!==null&&mG(s),gG();const i=()=>{n.dataset.zoom===void 0&&(delete n.dataset.header,Is("audio3"))};Xe("header-restore").addEventListener("click",i),window.addEventListener("keydown",r=>{r.key==="Escape"&&n.dataset.header==="away"&&n.dataset.zoom===void 0&&n.dataset.gutter!=="away"&&i()})}const fr=[{key:"lower-decks",label:"LOWER DECKS"},{key:"gold",label:"CERRITOS GOLD"},{key:"medical",label:"MEDICAL"},{key:"nemesis",label:"NEMESIS"},{key:"pharos",label:"PHAROS"}],AM="argus-landing",bG=15e3;function em(){try{return(window.localStorage.getItem(AM)??"launcher")==="launcher"}catch{return!0}}function _G(n){try{window.localStorage.setItem(AM,n?"launcher":"last")}catch{}}const tm="argus-theme",zG="argus-lcars",wG="medical",yG={sickbay:"medical"};function vG(){const n=Xe("theme-pill"),e=Math.max(fr.findIndex(r=>r.key===wG),0);let t=e;try{const r=window.localStorage.getItem(tm)??window.localStorage.getItem(zG),a=r===null?null:yG[r]??r,o=fr.findIndex(l=>l.key===a);t=o>=0?o:e}catch{t=e}const s=document.documentElement,i=()=>{const r=fr[t]??fr[0];r.key==="lower-decks"?delete s.dataset.theme:s.dataset.theme=r.key,n.textContent=r.label};i(),n.addEventListener("click",()=>{t=(t+1)%fr.length,i();try{window.localStorage.setItem(tm,fr[t]?.key??"lower-decks")}catch{}Is("audio2")})}function OG(n){const e=document.getElementById("about-rows");if(e===null)return;e.replaceChildren();const t={cumin:n.stack?.cumin,salsa:n.stack?.salsa,chili:n.stack?.chili,brasa:n.stack?.brasa,calypso:n.stack?.calypso,chell:n.stack?.chell},s=[];for(const[i,r]of Object.entries(t))r!==void 0&&s.push([i.toUpperCase(),r]);s.push(["MENU","0.18.0"],["ARGUS","db6fb2f · 2026-10-05 02:51Z"],["WIRE",`V${n.protocolVersion}`]),n.stack?.build!==void 0&&s.push(["BUILD",n.stack.build]);for(const[i,r]of s){const a=document.createElement("div");a.className="telemetry-row";const o=document.createElement("span");o.className="telemetry-label",o.textContent=i;const l=document.createElement("span");l.className="telemetry-value",l.textContent=r,l.title=r,a.append(o,l),e.appendChild(a)}}function xG(){for(const n of document.querySelectorAll(".left-frame button, .left-frame-top button"))n.addEventListener("click",()=>Is("audio2"))}let mr=null;async function SG(n){const e=new PT(document),t=new WT(Xe("index-instrument"),()=>Date.now(),{errored_open:()=>qs("status:error")}),s=new UT(Xe("lane-instrument"));window.setInterval(()=>s.tick(),500);const i=new eI,r=new RT;r.writeObserver_set((D,P)=>{ye.regard_send({address:D.address,...D.modelKind!==void 0?{modelKind:D.modelKind}:{},groupId:P,paneId:D.paneId}),Z()});const a={get layout(){return j},panels:i,paneInstance_get:Io,subjects:r,get dormant(){return ie},sound:Is,get terminal(){return le},get client(){return ye}},o=uI(a,{catalogue_of:D=>S.get(D),run_press:(D,P,Q)=>{Le(D,P,Q)}}),l=o.entry_show,c=D=>tu(D,n),d=jI(a,{vfsUrl_build:c,downloadUrl_build:D=>z0(D,n),image_open:(D,P)=>L(D,P),process_open:(D,P)=>H(D,P),run_press:(D,P,Q)=>{Le(D,P,Q)},cohort_gather:D=>ae(D),verbLine_run:(D,P)=>R(D,P),ask_onPane:(D,P)=>x(D,P),binEntry_show:l,catalogue_of:D=>S.get(D),promptUser:()=>w,template_stamp:Ws,pane_find:os}),{previewProvider:u,fileText_fetch:h,file_save:p,rootedListing_show:f,listing_refresh:b,directory_make:g,files_deliver:m,filesBody_stamp:_,rowVerbs_of:y}=d,z=d.instance_build;let w=null,O=null;const S=new Map,M=D=>{const P=Ws("tpl-pane-universe"),Q=new tT({canvas:os(P,".universe-canvas"),title:os(P,".universe-title"),state:P.querySelector(".pane-state"),empty:os(P,".universe-empty"),projectionPill:P.querySelector(".universe-projection"),refreshPill:P.querySelector(".universe-refresh"),replayPill:P.querySelector(".universe-replay"),scalePill:P.querySelector(".universe-scale"),viewPill:P.querySelector(".universe-view"),gravityPill:P.querySelector(".universe-gravity"),densityPill:P.querySelector(".universe-density"),drawPill:P.querySelector(".universe-draw"),captionsPill:P.querySelector(".universe-captions"),arrangementPill:P.querySelector(".universe-arrangement"),facts:P.querySelector(".universe-facts"),backPill:P.querySelector(".universe-back"),openPill:P.querySelector(".universe-open")},{command_run:ee=>{ye.line_execute(ee,{silent:!0,observe:!1}).then(q=>{for(const _e of q.envelopes)Q.envelope_observe(_e)})},feed_dag:async ee=>{const q=await ye.line_execute(`feed diagram feed_${ee}`,{silent:!0,observe:!1});for(const _e of q.envelopes){if(_e.model?.kind!==Vn.feedDag)continue;const pe=Lc.safeParse(_e.model.data);if(pe.success)return pe.data}return null},node_enter:ee=>{le.line_run(`cd "${ee}"`)},node_dive:ee=>{Ue(D,ee.replace(/\/data$/,""))},node_process:ee=>{const q=pa(ee.vfsPath)??(/\/feed_(\d+)(?:\/|$)/.exec(ee.vfsPath)===null?null:Number(/\/feed_(\d+)(?:\/|$)/.exec(ee.vfsPath)[1])),_e=w===null?ee.vfsPath:ee.vfsPath.replace(/^\/proc\/jobs\//,`/home/${w}/feeds/`);H(D,{input:_e,feed:q,node:ee.instanceId})},feed_open:ee=>{qs(),vt.feed_enter(ee)},plugin_open:ee=>{(async()=>{const q=await ye.line_execute("ls /bin",{silent:!0,observe:!1}),_e=[];for(const je of q.envelopes){if(je.model?.kind!=="fs.listing")continue;const Ot=je.model.data,Lt=Array.isArray(Ot)?Ot:[Ot];for(const es of Lt)for(const mt of es.items??[])_e.push(mt.name)}const pe=_e.filter(je=>je.startsWith(`${ee}-v`)).sort((je,Ot)=>je.localeCompare(Ot,void 0,{numeric:!0})).pop();if(pe===void 0){le.line_note(`universe: ${ee} is not in /bin`);return}Xe("gutter-files").click(),l("files",i.get("files","files"),`/bin/${pe}`,"plugin")})().catch(q=>{le.line_note(`universe: could not open ${ee} in /bin: ${q instanceof Error?q.message:String(q)}`)})},note:ee=>le.line_note(ee)},ah());return i.set("universe",D,Q),{id:D,kind:"universe",mount:P,dispose:()=>{i.delete(D),r.pane_leave(D),Q.dispose()}}},v=D=>{const P=Ws("tpl-pane-image"),Q=new ST(P,{source:{url_of:c},note:ee=>le.line_note(ee),regard:ee=>r.regard_write(D,{address:ee,modelKind:"dicom.instance"}),file_put:async(ee,q)=>{try{return(await fetch(c(ee),{method:"POST",body:q})).status}catch{return 0}},tags_read:ee=>A(ee),tags_open:()=>{le.line_note(G(D))}});return i.set("image",D,Q),{id:D,kind:"image",mount:P,dispose:()=>{Q.dispose(),i.delete(D),r.pane_leave(D)}}},E=D=>{const P=Ws("tpl-pane-tags"),Q=new AT(P,{note:ee=>le.line_note(ee)});return i.set("tags",D,Q),{id:D,kind:"tags",mount:P,dispose:()=>{i.delete(D),r.pane_leave(D)}}},A=async D=>{try{const P=await ye.line_execute(`dcm tags "${D}"`,{silent:!0,observe:!1});for(const Q of P.envelopes){if(Q.model?.kind!==Da.tags)continue;const ee=sh.safeParse(Q.model.data);if(ee.success)return ee.data}}catch{}return null},I=(D,P)=>{const Q=i.get("tags",D);Q===void 0||Q.path_get()===P||A(P).then(ee=>{if(ee===null){le.line_note(`tags: ${P}: not a readable DICOM file`);return}i.get("tags",D)?.model_show(ee)})},G=D=>{const P=new Set(j.panes_shown()),Q=r.group_of(D);for(const q of i.ids("tags"))if(P.has(q)&&r.group_of(q)===Q)return j.focus_set(q),"image tags";if(!P.has(D))return"image tags: the image pane is not on stage";const ee=Ae("tags",D);return j.leaf_split(D,fe.replayPlace_get()?.dir??"col",ee.id,fe.replayPlace_get()?.before??!1)?(Ie(ee.id,D,fe.replayPlace_get()?.dir??"col",fe.replayPlace_get()?.before??!1),"image tags"):(cs(ee.id),j.mount_remove(ee.id),"image tags: could not open beside the image pane")},N=async D=>{try{const P=await ye.line_execute(`dcm series "${D}"`,{silent:!0,observe:!1});for(const Q of P.envelopes){if(Q.model?.kind!==Da.series)continue;const ee=nh.safeParse(Q.model.data);if(ee.success)return ee.data}}catch{}return null},B=async D=>{try{const P=await ye.line_execute(`ls "${D}"`,{silent:!0,observe:!1});for(const Q of P.envelopes){if(Q.model?.kind!=="fs.listing")continue;const ee=Q.model.data,q=(Array.isArray(ee)?ee[0]:ee)??{},_e=(q.path??D).replace(/\/$/,"");return(q.items??[]).filter(pe=>pe.type==="dir").map(pe=>`${_e}/${pe.name}`)}}catch{}return[]},C=(D,P)=>{const Q=je=>{P!==void 0&&r.regard_write(je,P)};if(D!==null&&i.has("image",D))return Q(D),i.get("image",D)??null;const ee=new Set(j.panes_shown());if(P!==void 0){for(const[je,Ot]of i.entries("image"))if(ee.has(je)&&r.regard_get(je)?.address===P.address)return Q(je),Ot}const q=D!==null?r.group_of(D):null;for(const[je,Ot]of i.entries("image"))if(ee.has(je)&&q!==null&&r.group_of(je)===q)return Ot;const _e=D!==null&&ee.has(D)?D:kt();if(_e===null)return null;const pe=Ae("image",D??void 0);return j.leaf_split(_e,fe.replayPlace_get()?.dir??"col",pe.id,fe.replayPlace_get()?.before??!1)?(Ie(pe.id,_e,fe.replayPlace_get()?.dir??"col",fe.replayPlace_get()?.before??!1),Q(pe.id),i.get("image",pe.id)??null):(cs(pe.id),j.mount_remove(pe.id),null)},L=async(D,P,Q={},ee)=>{re();const q=D!==null?void 0:Hc.test(P)?{address:P,modelKind:"image.volume"}:{address:Ho.test(P)?P.slice(0,P.lastIndexOf("/")):P.replace(/\/$/,""),modelKind:"dicom.series"},_e=C(D,q);if(_e===null)return"image: no pane to open beside";const pe=i.idOf("image",_e);if(pe!==null&&ee?.(pe),Hc.test(P))return _e.opening_show(P),_e.volume_show(P),`image ${P}`;const je=Ho.test(P),Ot=je?P.slice(0,P.lastIndexOf("/")):P.replace(/\/$/,"");_e.opening_show(Ot);let Lt=await N(Ot),es=[];if(Lt===null&&!je){const it=(await B(Ot)).slice(0,32);for(const fs of it){const Mt=await N(fs);if(Mt!==null){es=it.map(Os=>({path:Os,label:Os.split("/").pop()??Os})),Lt=Mt;break}}}if(Lt===null)return _e.opening_fail(P,"NOT A READABLE SERIES"),`image: ${P}: not a readable DICOM series, study, or volume`;const mt=je?Math.max(1,Lt.files.indexOf(P)+1):1;return _e.series_show(Lt,{siblings:es,startAt:mt,...Q.force===!0?{force:!0}:{}}),`image ${Lt.path}${es.length>1?` (1 of ${es.length} series)`:""}`},H=(D,P)=>{re();const Q=new Set(j.panes_shown());for(const[pe,je]of S)if(Q.has(pe)&&je.input===P.input){j.focus_set(pe);return}const ee=Q.has(D)?D:kt()??D,q=Ae("catalogue",D);if(!j.leaf_split(ee,fe.replayPlace_get()?.dir??"col",q.id,fe.replayPlace_get()?.before??!1)){cs(q.id),j.mount_remove(q.id);return}Ie(q.id,ee,fe.replayPlace_get()?.dir??"col",fe.replayPlace_get()?.before??!1),S.set(q.id,P);const _e=i.get("files",q.id);_e!==void 0&&(_e.binding_set({input:P.input,place:P.feed===null?"new feed":`feed ${P.feed}${P.node===null?"":` · node ${P.node}`}`}),_e.feedOpen_declare(pe=>de(q.id,pe)),f(q.id,_e,"/bin"),te(_e),j.focus_set(q.id))},X=5,oe=40,te=D=>{ye.line_execute(`plugininstance list --limit ${oe} --fields id,plugin_name,plugin_version,owner_username`,{silent:!0,observe:!1}).then(Q=>{const ee=[];for(const q of Q.envelopes)if(!(q.model?.kind!=="plugininstance.list"||!Array.isArray(q.model.data)))for(const _e of q.model.data){if(typeof _e.pluginName!="string"||typeof _e.pluginVersion!="string"||w!==null&&typeof _e.owner=="string"&&_e.owner!==w||_e.pluginName==="pl-dircopy")continue;const pe=`${_e.pluginName}-v${_e.pluginVersion}`;if(ee.includes(pe)||ee.push(pe),ee.length>=X)break}D.recent_set(ee.length===0?null:ee)}).catch(()=>{})},de=(D,P)=>{re();const Q=new Set(j.panes_shown());for(const[_e,pe]of i.entries("dag"))if(_e!=="dag"&&Q.has(_e)&&pe.feed_get()===P){j.focus_set(_e);return}const ee=Q.has(D)?D:kt()??D,q=Ae("dag",D);if(!j.leaf_split(ee,fe.replayPlace_get()?.dir??"col",q.id,fe.replayPlace_get()?.before??!1)){cs(q.id),j.mount_remove(q.id);return}Ie(q.id,ee,fe.replayPlace_get()?.dir??"col",fe.replayPlace_get()?.before??!1),i.get("dag",q.id)?.feed_enter(P)},Le=async(D,P,Q)=>{const ee=S.get(D),q=i.get("files",D);if(ee===void 0||q===void 0)return;const _e=it=>{le.output_write("err",`\x1B[31m${it}\x1B[0m
|
|
4254
4254
|
`);const fs=q.indicated_get();fs!==null&&q.rowReadout_show(fs,it.toUpperCase().slice(0,80))};if(Q==="pipeline"&&ee.node===null){_e(`${P}: a pipeline runs on a node — PROCESS a node of a feed`);return}let pe=q.commandLine_get();if((pe===""||ag(pe)!==P)&&(pe=ng(ee.input,P)),ee.feed===null&&!Ay(pe)){const it=ee.input.split("/").filter(Boolean).pop()??"feed",Mt=(await x(D,{message:"Feed title: ",kind:"text",suggest:it,commit:"RUN"})??"").trim();if(Mt==="")return;pe=Dy(pe,Mt)}q.commandLine_set(pe),le.line_echo(pe);let je;try{je=await ye.line_execute(pe,{silent:!0})}catch(it){_e(it instanceof Error?it.message:String(it));return}le.outcome_write(je),je.envelopes.some(it=>it.model?.kind==="fs.cwd")&&ye.line_execute("ls",{silent:!0});const Lt=je.envelopes.find(it=>it.model?.kind==="run.scheduled")?.model?.data;if(typeof Lt?.feedId=="number"){q.run_show(Lt.feedId);return}const es=je.envelopes.map(it=>it.renderedErr??"").join(" ").replace(/\x1b\[[0-9;]*m/g,"").trim().split(`
|
|
4255
|
-
`)[0]??"",mt=q.indicated_get();mt!==null&&q.rowReadout_show(mt,es===""?"NOT SCHEDULED":es.toUpperCase().slice(0,80))},He=D=>{re();const P=new Set(j.panes_shown());for(const[pe]of i.entries("files"))if(P.has(pe)&&r.regard_get(pe)?.address===D){j.focus_set(pe);return}let Q;for(const[pe,je]of i.entries("image"))if(P.has(pe)&&(r.regard_get(pe)?.address===D||je.state_get()?.path===D)){Q=pe;break}const ee=kt();if(ee===null)return;const q=Ae("files",Q);if(!j.leaf_split(ee,fe.replayPlace_get()?.dir??"col",q.id,fe.replayPlace_get()?.before??!1)){cs(q.id),j.mount_remove(q.id);return}Ie(q.id,ee,fe.replayPlace_get()?.dir??"col",fe.replayPlace_get()?.before??!1),Q===void 0&&r.regard_write(q.id,{address:D,modelKind:"dicom.series"});const _e=i.get("files",q.id);_e!==void 0&&f(q.id,_e,D)},Ne=_I(a,{image_open:(D,P)=>L(D,P),process_open:(D,P)=>H(D,P),feed_open:(D,P)=>de(D,P),ask_onPane:(D,P)=>x(D,P),errandHost_find:()=>kt(),instance_spawn:(D,P)=>Ae(D,P),birth_record:(D,P,Q,ee)=>Ie(D,P,Q,ee),replayPlace_get:()=>fe.replayPlace_get(),stage_relight:()=>Z(),home_apply:()=>$e(),orphans_dispose:()=>ze(),fileText_fetch:h,template_stamp:Ws,pane_find:os,element_require:Xe}),ne=Ne.instance_build,ae=Ne.gather,he=Ne.open,qe=D=>{const P=Ws("tpl-pane-view");$s(os(P,".view-body"));const Q=new MT(os(P,".view-body"),os(P,".view-title"),{content_fetch:async ee=>(await h(ee)).text,imageUrl_build:c,path_isImage:pl});return i.set("view",D,Q),{id:D,kind:"view",mount:P,dispose:()=>{i.delete(D),r.pane_leave(D)}}},Ke=hI(a,{filesBody_stamp:_,rootedListing_show:f,rowVerbs_of:y,image_open:(D,P)=>L(D,P),imagery_is:SM,tableFile_is:D=>xM.test(D),vfsUrl_build:c,fileText_fetch:h,previewProvider:u}),Ue=Ke.open,Rt=(D,P)=>{const Q=Ws("tpl-pane-dag"),ee=new LD(os(Q,".dag-canvas"),os(Q,".dag-title"),os(Q,".dag-facts"),os(Q,".dag-empty"),os(Q,".dag-strategy"),os(Q,".dag-feedlist"),{command_run:q=>{ye.line_execute(q,{silent:!0,observe:!1}).then(_e=>{for(const pe of _e.envelopes)ee.envelope_observe(pe)})},watch_set:(q,_e)=>{_e?ye.watch_send(q):ye.unwatch_send(q)},node_enter:q=>{le.line_run(`cd "${q}"`)},node_dive:q=>{Ue(D,q.replace(/\/data$/,""))},node_regard:q=>{r.regard_write(D,{address:q,modelKind:"feed.node"})},node_process:q=>{const _e=pa(q.vfsPath)??(/\/feed_(\d+)(?:\/|$)/.exec(q.vfsPath)===null?null:Number(/\/feed_(\d+)(?:\/|$)/.exec(q.vfsPath)[1])),pe=w===null?q.vfsPath:q.vfsPath.replace(/^\/proc\/jobs\//,`/home/${w}/feeds/`);H(D,{input:pe,feed:_e,node:q.instanceId})},feed_regard:q=>{r.regard_write(D,{address:q,modelKind:"feed"})},...RI(a,D,rt),...P?{feed_shown:()=>Ce()}:{}});return i.set("dag",D,ee),{id:D,kind:"dag",mount:Q,dispose:()=>{Ke.dispose(D),i.delete(D),r.pane_leave(D),ee.dispose()}}},rt=II(a,{ask_onPane:(D,P)=>x(D,P),promptUser:()=>w,changed:()=>{for(const D of i.values("dag"))D.roster_ask(),D.marks_refresh(),D.indicated_refresh()}}),_t=z("files",!0);hr(_t);const ct=Rt("dag",!0);hr(ct);const ot=M("universe");hr(ot);const At=Ws("tpl-pane-launcher");hr({id:"launcher",kind:"launcher",mount:At});const Tt=Ws("tpl-pane-panes");hr({id:"panes",kind:"panes",mount:Tt});const Ut=i.get("files","files"),vt=i.get("dag","dag"),It=new KT(Xe("pipeline-cycler"),Xe("pipeline-cycler-name"),D=>{ye.line_execute(D,{silent:!0})});let Gt=null;const F=pI(a,{instance_spawn:(D,P)=>Ae(D,P),birth_record:(D,P,Q,ee)=>Ie(D,P,Q,ee),replayPlace_get:()=>fe.replayPlace_get(),rootedListing_show:f,console_expose:()=>Gt?.(!1)}),{errandHost_find:kt,errand_open:zt,verbLine_run:R,ask_onPane:x}=F;$s(Xe("pacs-workspace"),{rows:".listing-row"});const V=new uT(Xe("pacs-workspace"),{command_run:D=>{const P=/^(pacs query|pull )/.test(D);P&&le.line_echo(D),ye.line_execute(D,{silent:!0,operator:P}).then(Q=>{for(const ee of Q.envelopes)V.envelope_observe(ee)})},command_show:D=>{le.line_run(D)},note:D=>le.line_note(D),image_open:D=>{L(null,D).then(P=>le.line_note(P))},dir_open:D=>He(D),process_open:D=>H("pacs",{input:D,feed:null,node:null}),gather_add:D=>ae([D]),gathered_is:D=>Ne.has(D),workspace_close:()=>$e()});hr({id:"pacs",kind:"pacs",mount:Xe("pacs-workspace")});const Z=()=>{const D=new Set(j.panes_shown()),P=new Map;for(const Q of Go()){if(!D.has(Q.id))continue;const ee=r.regard_get(Q.id)?.address;if(ee===void 0)continue;const q=Aa(Q.id);if(q!=="image"&&q!=="files")continue;const _e=ee.replace(/\/$/,""),pe=P.get(_e)??{viewer:!1,browser:!1};q==="image"?pe.viewer=!0:pe.browser=!0,P.set(_e,pe)}V.stage_lit(P)},j=new tI(Xe("layout-root"),new Map([["dag",ct.mount],["universe",ot.mount],["files",_t.mount],["pacs",Xe("pacs-workspace")],["launcher",At],["panes",Tt]]));let ge=!1;const ve=()=>ge?{dir:"col",ratio:.45,first:{pane:"files"},second:{pane:"dag"}}:{pane:"files"};j.preset_register("files",ve),j.preset_register("pacs",()=>({pane:"pacs"})),j.preset_register("dag",()=>({pane:"dag"})),j.preset_register("universe",()=>({pane:"universe"})),j.preset_register("panes",()=>({pane:"panes"})),j.preset_register("launcher",()=>({pane:"launcher"})),j.renderObserver_set(()=>{document.body.dataset.zoom==="launcher"&&!j.panes_shown().includes("launcher")&&ui(null),window.requestAnimationFrame(()=>{for(const D of i.values("dag"))D.size_fit()})});const se=(D,P,Q,ee)=>{const q=P==="view"?Ae("view",D):P==="fs"?Ae("files",D):Ae("empty");if(!j.leaf_split(D,Q,q.id,ee))return cs(q.id),j.mount_remove(q.id),null;if(Ie(q.id,D,Q,ee,P),P==="fs"){const _e=je=>{const Ot=i.get("files",q.id);if(Ot===void 0)return;const Lt=je.modelKind==="fs.file"?je.address.replace(/\/[^/]*$/,"")||"/":je.address;f(q.id,Ot,Lt)};r.regard_subscribe(q.id,_e);const pe=r.regard_get(D);pe!==null&&_e(pe)}return q.id},ie=new h0(xm,ah());Object.assign(globalThis,{__argusDormant:{list:()=>ie.list(),get:D=>ie.get(D),dismiss:D=>ie.dismiss(D)}});const fe=rI(a,{image_open:L,dir_open:He,process_open:H,gather_open:he,feed_open:de,edit_open:D=>Wi.edit_open(D),pillPane_spawn:se,pacsQuery_get:()=>V.query_get(),catalogue_of:D=>S.get(D),catalogueIds:()=>[...S.keys()],stage_relight:()=>Z()}),{birth_record:Ie,domain_enter:be,orphans_dispose:ze}=fe,ke=fe.capture,Fe=fe.restore,$e=()=>{be("files"),vt.size_fit()},U=()=>{be("launcher"),xe.render(),j.focus_set("launcher"),ui("launcher")},we=(D=!1)=>{if(document.body.dataset.zoom!=="launcher"||(ui(null),!D))return;const P=document.querySelector(".wrap:not(#gap)");P!==null&&Lu(P,document.body),document.body.dataset.header="away",Gt?.(!0)},re=()=>{we(),j.activePreset_get()==="launcher"&&(ge=!1,$e())},Oe=Oy({ask:D=>ye.line_execute(D,{silent:!0,observe:!1}),universe_show:()=>Ea(),runs_show:D=>qs(D),feed_enter:D=>{qs(),i.get("dag","dag")?.feed_enter(D)},home_open:()=>{ge=!1,$e(),j.focus_set("files")},home_cd:D=>{ge=!1,$e(),le.line_run(`cd "${D}"`)},line_offer:D=>le.line_offer(D),pacs_query:()=>V.query_get()??"",pacs_open:()=>{be("pacs"),j.focus_set("pacs")},desktops:()=>ie.list(),desktop_restore:D=>{Fe(D)},panes_open:()=>{be("panes"),ue.render(),j.focus_set("panes")},keys_open:()=>{Lr()},console_open:()=>Xe("gutter-console").click()}),xe=new uy(At,{tiles:Oe,leave:()=>we(!0),startHere_get:em,startHere_set:_G});setInterval(()=>{j.activePreset_get()==="launcher"&&(!At.isConnected||document.visibilityState!=="visible"||xe.render())},bG),$s(os(Tt,".panes-body"),{rows:".panes-card"});const ue=new f0(Tt,{list:()=>ie.list(),restore:D=>{Fe(D)},dismiss:D=>{ie.dismiss(D)}}),Ce=()=>{const D=j.activePreset_get();if(D==="pacs"||D==="dag"||D==="launcher"){ge=!0;return}ge&&D==="files"||(ge=!0,$e())},Ae=(D,P)=>{const Q=JT(D);return r.pane_join(Q.id,P!==void 0?r.group_of(P):Q.id),D==="tags"&&r.regard_subscribe(Q.id,ee=>{ee.modelKind==="dicom.instance"&&I(Q.id,ee.address)}),D==="view"&&(r.viewer_mark(Q.id),r.regard_subscribe(Q.id,ee=>{ee.modelKind!=="dicom.instance"&&i.get("view",Q.id)?.regard_show(ee)})),j.mount_register(Q.id,Q.mount),ln(Q.id,D,Q.mount),Q},{bar_note:Bt,move:wt,flip:Ms,resize:bs,chordKeys_of:Ol}=nI(a),ln=$I(a,{verbs:{move:wt,chordKeys_of:Ol},browser:d,pillPane_spawn:se,process_open:(D,P)=>H(D,P),overlay_back:D=>Ke.back(D),home_apply:()=>$e(),orphans_dispose:()=>ze(),dag_dismiss:()=>{ge=!1}});ln("files","files",_t.mount),ln("dag","dag",ct.mount),ln("universe","universe",ot.mount),ln("pacs","pacs",Xe("pacs-workspace")),ln("launcher","launcher",At),ln("panes","panes",Tt);let si=!1;const Vs=D=>{si=D};for(const D of["click","focusin"])document.addEventListener(D,P=>{P.target instanceof Element&&(P.target.closest("#drawer")!==null?si=!0:P.target.closest("#layout-root")!==null&&(si=!1))});const xa=()=>{let D=!1;for(const P of document.querySelectorAll(".pane-drawer:not([hidden])"))P.hidden=!0,D=!0;return D},Pr=()=>{let D=!1;for(const P of document.querySelectorAll('.workspace-pane[data-modes="open"], [data-frame-host][data-modes="open"]'))delete P.dataset.modes,D=!0;return V.serverStrip_isOpen()&&(V.serverStrip_close(),D=!0),D};document.addEventListener("click",D=>{if(!(D.target instanceof Element)||D.target.closest(".mode-frame")!==null&&D.target.closest(".mode-fill")===null||D.target.closest("#pacs-server-strip")!==null||D.target.closest("#pacs-f-server")!==null||D.target.closest(".listing-framed .listing-row, .ask-bar")!==null)return;const P=D.target.closest(".mode-strip"),Q=P?.closest(".workspace-pane, [data-frame-host]")??null,ee=Q?.dataset.modes==="open",q=Pr();if(P!==null&&Q!==null&&!ee){Q.dataset.modes="open",Is("audio3");return}q&&Is("audio3")}),CI(a,{palette_isOpen:()=>!ki.hidden,palette_open:()=>$(),palette_close:()=>J(),errand_abandon:()=>F.errand_abandon(),dive_leave:()=>o.dive_leave(),overlay_escape:()=>Ke.escape(),drawers_close:xa,modeFrames_close:Pr,consoleFocused:()=>si,verbs:{bar_note:Bt,flip:Ms,resize:bs},host:()=>Wr,stage_alone:D=>{ke(),j.tree_set({pane:D}),ze()},element_require:Xe});const Sa=(D,P,Q)=>{if(P==="pacs"){j.preset_apply("pacs"),ze();for(const _e of Q)V.envelope_observe(_e);return}const ee=Ae(P);if(j.leaf_replace(D,ee.id),cs(D),j.mount_remove(D),P==="tags"){const _e=i.get("tags",ee.id);for(const pe of Q){if(pe.model?.kind!==Da.tags)continue;const je=sh.safeParse(pe.model.data);je.success&&_e?.model_show(je.data)}return}if(P==="image"){const _e=i.get("image",ee.id);for(const pe of Q){if(pe.model?.kind!==Da.series)continue;const je=nh.safeParse(pe.model.data);je.success&&_e?.series_show(je.data)}return}const q=P==="files"?i.get("files",ee.id):i.get("dag",ee.id);for(const _e of Q)q?.envelope_observe(_e)},Hs={instance_spawn:Ae,birth_record:Ie,launcher_yield:re,launcher_active:()=>j.activePreset_get()==="launcher",template_stamp:Ws},Li=NI(a,Hs),Lr=Li.open,Wi=yI(a,{...Hs,replayPlace_get:fe.replayPlace_get,errandHost_find:kt,saved:()=>{for(const D of i.values("dag"))D.marks_refresh()}});Ls("files",D=>z(D,!1)),Ls("catalogue",D=>z(D,!1,!0)),Ls("dag",D=>Rt(D,!1)),Ls("universe",M),Ls("view",qe),Ls("image",v),Ls("tags",E),Ls("help",Li.instance_build),Ls("edit",Wi.instance_build),Ls("gather",ne),Ls("empty",D=>{const P=Ws("tpl-pane-empty");return new mT(P,{execute:Q=>ye.line_execute(Q,{silent:!0,observe:!1}),claim:(Q,ee)=>Sa(D,Q,ee)}),{id:D,kind:"empty",mount:P}});const Gn=D=>{D?document.body.dataset.gutter="away":delete document.body.dataset.gutter,Is("audio3")},Rn=(D,P)=>{if(j.activePreset_get()===D){Gn(!0);return}document.body.dataset.gutter==="away"&&delete document.body.dataset.gutter,P()};Xe("gutter-restore").addEventListener("click",()=>Gn(!1)),window.addEventListener("keydown",D=>{D.key==="Escape"&&document.body.dataset.gutter==="away"&&document.body.dataset.zoom===void 0&&Gn(!1)}),Xe("gutter-files").addEventListener("click",()=>{Rn("files",()=>{ge=!1,$e(),j.focus_set("files"),Vs(!1)})});const qs=(D="")=>{be("dag"),vt.list_reset(),vt.roster_filter(D),vt.feedsChooser_request(),j.focus_set("dag"),Vs(!1)},Ea=()=>{be("universe");const D=i.get("universe","universe");D!==void 0&&!D.shown_get()&&D.request(),j.focus_set("universe"),Vs(!1)};Xe("gutter-runs").addEventListener("click",()=>Rn("dag",()=>qs())),Xe("gutter-console").addEventListener("click",()=>{Xe("drawer").classList.contains("drawer-closed")&&Xe("drawer-toggle").click(),le.focus_take(),Vs(!0)}),Xe("gutter-tools").addEventListener("click",()=>{Rn("pacs",()=>{be("pacs"),j.focus_set("pacs"),Vs(!1)})}),Xe("gutter-dashboard").addEventListener("click",()=>{Rn("launcher",U)}),Xe("gutter-panes").addEventListener("click",()=>{Rn("panes",()=>{be("panes"),ue.render(),j.focus_set("panes"),Vs(!1)})});const Aa=D=>Io(D)?.kind??null,Wr=VI(a,{verbs:{move:wt,flip:Ms,resize:bs},help_open:Lr,launcher_enter:U,identity_get:()=>O,consoleZoom_toggle:Kp,feed_enter:D=>vt.feed_enter(D),file_save:p,image_open:(D,P,Q)=>L(D,P,Q),series_ask:N,tagsPane_open:G}),ki=Xe("lang-palette"),Xs=Xe("lang-input"),kr=Xe("lang-result"),T=Xe("lang-pill"),$=()=>{xa(),ki.hidden=!1,T.classList.add("lang-live"),kr.textContent="",Xs.value="",Xs.focus(),Is("audio3")},J=()=>{ki.hidden=!0,T.classList.remove("lang-live"),kr.textContent=""};T.addEventListener("click",()=>{ki.hidden?$():J()});const K=["pane","view","runs","node","dag","file","pacs","header","console","back","desktop","argus","help"],Y={pane:["split","zoom","close","bind","claim","focus","flip","resize"],resize:["left","right","up","down"],help:["keys","verbs"],focus:["left","right","up","down","last"],view:["files","runs","pacs"],runs:["enter","sort","filter"],node:["enter","immerse","back","clear"],dag:["layout","projection","scale","hue","pulse","census","physics","refresh"],physics:["charge","link","collide","gravity","reset"],file:["home","back","download","delete","sort","filter","follow","root","list","cards","preview"],pacs:["sort","filter","connect","disconnect","list","query","pull","status"],header:["stats","dag","away","restore"],console:["open","close","toggle","zoom","height"],desktop:["save","load","show","list","delete"],split:["left","right","above","below"],bind:["unlinked","fs","viewer"],claim:["files","runs","pacs"],layout:["ranked","molecule"],projection:["2d","3d"],scale:["time","size"],hue:["status","compute"],argus:["verbs"]};Xs.addEventListener("keydown",D=>{if(D.key==="Escape"){D.stopPropagation(),J();return}if(D.key==="Tab"){D.preventDefault();const P=Xs.value.split(/\s+/),Q=P[P.length-1]??"",ee=P.length<=1?"":P[P.length-2]??"",_e=(P.length<=1?K:Y[ee]??Y[P[0]??""]??[]).find(pe=>pe.startsWith(Q.toLowerCase()));_e!==void 0&&(P[P.length-1]=_e,Xs.value=`${P.join(" ")} `);return}if(D.key==="Enter"){const P=Xs.value.trim();if(P.length===0){J();return}Kc(Wr,P).then(Q=>{Q!==null?(kr.textContent=Q,le.output_write("data",`: ${P}
|
|
4255
|
+
`)[0]??"",mt=q.indicated_get();mt!==null&&q.rowReadout_show(mt,es===""?"NOT SCHEDULED":es.toUpperCase().slice(0,80))},He=D=>{re();const P=new Set(j.panes_shown());for(const[pe]of i.entries("files"))if(P.has(pe)&&r.regard_get(pe)?.address===D){j.focus_set(pe);return}let Q;for(const[pe,je]of i.entries("image"))if(P.has(pe)&&(r.regard_get(pe)?.address===D||je.state_get()?.path===D)){Q=pe;break}const ee=kt();if(ee===null)return;const q=Ae("files",Q);if(!j.leaf_split(ee,fe.replayPlace_get()?.dir??"col",q.id,fe.replayPlace_get()?.before??!1)){cs(q.id),j.mount_remove(q.id);return}Ie(q.id,ee,fe.replayPlace_get()?.dir??"col",fe.replayPlace_get()?.before??!1),Q===void 0&&r.regard_write(q.id,{address:D,modelKind:"dicom.series"});const _e=i.get("files",q.id);_e!==void 0&&f(q.id,_e,D)},Ne=_I(a,{image_open:(D,P)=>L(D,P),process_open:(D,P)=>H(D,P),feed_open:(D,P)=>de(D,P),ask_onPane:(D,P)=>x(D,P),errandHost_find:()=>kt(),instance_spawn:(D,P)=>Ae(D,P),birth_record:(D,P,Q,ee)=>Ie(D,P,Q,ee),replayPlace_get:()=>fe.replayPlace_get(),stage_relight:()=>Z(),home_apply:()=>$e(),orphans_dispose:()=>ze(),fileText_fetch:h,template_stamp:Ws,pane_find:os,element_require:Xe}),ne=Ne.instance_build,ae=Ne.gather,he=Ne.open,qe=D=>{const P=Ws("tpl-pane-view");$s(os(P,".view-body"));const Q=new MT(os(P,".view-body"),os(P,".view-title"),{content_fetch:async ee=>(await h(ee)).text,imageUrl_build:c,path_isImage:pl});return i.set("view",D,Q),{id:D,kind:"view",mount:P,dispose:()=>{i.delete(D),r.pane_leave(D)}}},Ke=hI(a,{filesBody_stamp:_,rootedListing_show:f,rowVerbs_of:y,image_open:(D,P)=>L(D,P),imagery_is:SM,tableFile_is:D=>xM.test(D),vfsUrl_build:c,fileText_fetch:h,previewProvider:u}),Ue=Ke.open,Rt=(D,P)=>{const Q=Ws("tpl-pane-dag"),ee=new LD(os(Q,".dag-canvas"),os(Q,".dag-title"),os(Q,".dag-facts"),os(Q,".dag-empty"),os(Q,".dag-strategy"),os(Q,".dag-feedlist"),{command_run:q=>{ye.line_execute(q,{silent:!0,observe:!1}).then(_e=>{for(const pe of _e.envelopes)ee.envelope_observe(pe)})},watch_set:(q,_e)=>{_e?ye.watch_send(q):ye.unwatch_send(q)},node_enter:q=>{le.line_run(`cd "${q}"`)},node_dive:q=>{Ue(D,q.replace(/\/data$/,""))},node_regard:q=>{r.regard_write(D,{address:q,modelKind:"feed.node"})},node_process:q=>{const _e=pa(q.vfsPath)??(/\/feed_(\d+)(?:\/|$)/.exec(q.vfsPath)===null?null:Number(/\/feed_(\d+)(?:\/|$)/.exec(q.vfsPath)[1])),pe=w===null?q.vfsPath:q.vfsPath.replace(/^\/proc\/jobs\//,`/home/${w}/feeds/`);H(D,{input:pe,feed:_e,node:q.instanceId})},feed_regard:q=>{r.regard_write(D,{address:q,modelKind:"feed"})},...RI(a,D,rt),...P?{feed_shown:()=>Ce()}:{}});return i.set("dag",D,ee),{id:D,kind:"dag",mount:Q,dispose:()=>{Ke.dispose(D),i.delete(D),r.pane_leave(D),ee.dispose()}}},rt=II(a,{ask_onPane:(D,P)=>x(D,P),promptUser:()=>w,changed:()=>{for(const D of i.values("dag"))D.roster_ask(),D.marks_refresh(),D.indicated_refresh()}}),_t=z("files",!0);hr(_t);const ct=Rt("dag",!0);hr(ct);const ot=M("universe");hr(ot);const At=Ws("tpl-pane-launcher");hr({id:"launcher",kind:"launcher",mount:At});const Tt=Ws("tpl-pane-panes");hr({id:"panes",kind:"panes",mount:Tt});const Ut=i.get("files","files"),vt=i.get("dag","dag"),It=new KT(Xe("pipeline-cycler"),Xe("pipeline-cycler-name"),D=>{ye.line_execute(D,{silent:!0})});let Gt=null;const F=pI(a,{instance_spawn:(D,P)=>Ae(D,P),birth_record:(D,P,Q,ee)=>Ie(D,P,Q,ee),replayPlace_get:()=>fe.replayPlace_get(),rootedListing_show:f,console_expose:()=>Gt?.(!1)}),{errandHost_find:kt,errand_open:zt,verbLine_run:R,ask_onPane:x}=F;$s(Xe("pacs-workspace"),{rows:".listing-row"});const V=new uT(Xe("pacs-workspace"),{command_run:D=>{const P=/^(pacs query|pull )/.test(D);P&&le.line_echo(D),ye.line_execute(D,{silent:!0,operator:P}).then(Q=>{for(const ee of Q.envelopes)V.envelope_observe(ee)})},command_show:D=>{le.line_run(D)},note:D=>le.line_note(D),image_open:D=>{L(null,D).then(P=>le.line_note(P))},dir_open:D=>He(D),process_open:D=>H("pacs",{input:D,feed:null,node:null}),gather_add:D=>ae([D]),gathered_is:D=>Ne.has(D),workspace_close:()=>$e()});hr({id:"pacs",kind:"pacs",mount:Xe("pacs-workspace")});const Z=()=>{const D=new Set(j.panes_shown()),P=new Map;for(const Q of Go()){if(!D.has(Q.id))continue;const ee=r.regard_get(Q.id)?.address;if(ee===void 0)continue;const q=Aa(Q.id);if(q!=="image"&&q!=="files")continue;const _e=ee.replace(/\/$/,""),pe=P.get(_e)??{viewer:!1,browser:!1};q==="image"?pe.viewer=!0:pe.browser=!0,P.set(_e,pe)}V.stage_lit(P)},j=new tI(Xe("layout-root"),new Map([["dag",ct.mount],["universe",ot.mount],["files",_t.mount],["pacs",Xe("pacs-workspace")],["launcher",At],["panes",Tt]]));let ge=!1;const ve=()=>ge?{dir:"col",ratio:.45,first:{pane:"files"},second:{pane:"dag"}}:{pane:"files"};j.preset_register("files",ve),j.preset_register("pacs",()=>({pane:"pacs"})),j.preset_register("dag",()=>({pane:"dag"})),j.preset_register("universe",()=>({pane:"universe"})),j.preset_register("panes",()=>({pane:"panes"})),j.preset_register("launcher",()=>({pane:"launcher"})),j.renderObserver_set(()=>{document.body.dataset.zoom==="launcher"&&!j.panes_shown().includes("launcher")&&ui(null),window.requestAnimationFrame(()=>{for(const D of i.values("dag"))D.size_fit()})});const se=(D,P,Q,ee)=>{const q=P==="view"?Ae("view",D):P==="fs"?Ae("files",D):Ae("empty");if(!j.leaf_split(D,Q,q.id,ee))return cs(q.id),j.mount_remove(q.id),null;if(Ie(q.id,D,Q,ee,P),P==="fs"){const _e=je=>{const Ot=i.get("files",q.id);if(Ot===void 0)return;const Lt=je.modelKind==="fs.file"?je.address.replace(/\/[^/]*$/,"")||"/":je.address;f(q.id,Ot,Lt)};r.regard_subscribe(q.id,_e);const pe=r.regard_get(D);pe!==null&&_e(pe)}return q.id},ie=new h0(xm,ah());Object.assign(globalThis,{__argusDormant:{list:()=>ie.list(),get:D=>ie.get(D),dismiss:D=>ie.dismiss(D)}});const fe=rI(a,{image_open:L,dir_open:He,process_open:H,gather_open:he,feed_open:de,edit_open:D=>Wi.edit_open(D),pillPane_spawn:se,pacsQuery_get:()=>V.query_get(),catalogue_of:D=>S.get(D),catalogueIds:()=>[...S.keys()],stage_relight:()=>Z()}),{birth_record:Ie,domain_enter:be,orphans_dispose:ze}=fe,ke=fe.capture,Fe=fe.restore,$e=()=>{be("files"),vt.size_fit()},U=()=>{be("launcher"),xe.render(),j.focus_set("launcher"),ui("launcher")},we=(D=!1)=>{if(document.body.dataset.zoom!=="launcher"||(ui(null),!D))return;const P=document.querySelector(".wrap:not(#gap)");P!==null&&Lu(P,document.body),document.body.dataset.header="away",Gt?.(!0)},re=()=>{we(),j.activePreset_get()==="launcher"&&(ge=!1,$e())},Oe=Oy({ask:D=>ye.line_execute(D,{silent:!0,observe:!1}),universe_show:()=>Ea(),runs_show:D=>qs(D),feed_enter:D=>{qs(),i.get("dag","dag")?.feed_enter(D)},home_open:()=>{ge=!1,$e(),j.focus_set("files")},home_cd:D=>{ge=!1,$e(),le.line_run(`cd "${D}"`)},line_offer:D=>le.line_offer(D),pacs_query:()=>V.query_get()??"",pacs_open:()=>{be("pacs"),j.focus_set("pacs")},desktops:()=>ie.list(),desktop_restore:D=>{Fe(D)},panes_open:()=>{be("panes"),ue.render(),j.focus_set("panes")},keys_open:()=>{Lr()},console_open:()=>Xe("gutter-console").click()}),xe=new uy(At,{tiles:Oe,leave:()=>we(!0),startHere_get:em,startHere_set:_G});setInterval(()=>{j.activePreset_get()==="launcher"&&(!At.isConnected||document.visibilityState!=="visible"||xe.render())},bG),$s(os(Tt,".panes-body"),{rows:".panes-card"});const ue=new f0(Tt,{list:()=>ie.list(),restore:D=>{Fe(D)},dismiss:D=>{ie.dismiss(D)}}),Ce=()=>{const D=j.activePreset_get();if(D==="pacs"||D==="dag"||D==="launcher"){ge=!0;return}ge&&D==="files"||(ge=!0,$e())},Ae=(D,P)=>{const Q=JT(D);return r.pane_join(Q.id,P!==void 0?r.group_of(P):Q.id),D==="tags"&&r.regard_subscribe(Q.id,ee=>{ee.modelKind==="dicom.instance"&&I(Q.id,ee.address)}),D==="view"&&(r.viewer_mark(Q.id),r.regard_subscribe(Q.id,ee=>{ee.modelKind!=="dicom.instance"&&i.get("view",Q.id)?.regard_show(ee)})),j.mount_register(Q.id,Q.mount),ln(Q.id,D,Q.mount),Q},{bar_note:Bt,move:wt,flip:Ms,resize:bs,chordKeys_of:Ol}=nI(a),ln=$I(a,{verbs:{move:wt,chordKeys_of:Ol},browser:d,pillPane_spawn:se,process_open:(D,P)=>H(D,P),overlay_back:D=>Ke.back(D),home_apply:()=>$e(),orphans_dispose:()=>ze(),dag_dismiss:()=>{ge=!1}});ln("files","files",_t.mount),ln("dag","dag",ct.mount),ln("universe","universe",ot.mount),ln("pacs","pacs",Xe("pacs-workspace")),ln("launcher","launcher",At),ln("panes","panes",Tt);let si=!1;const Vs=D=>{si=D};for(const D of["click","focusin"])document.addEventListener(D,P=>{P.target instanceof Element&&(P.target.closest("#drawer")!==null?si=!0:P.target.closest("#layout-root")!==null&&(si=!1))});const xa=()=>{let D=!1;for(const P of document.querySelectorAll(".pane-drawer:not([hidden])"))P.hidden=!0,D=!0;return D},Pr=()=>{let D=!1;for(const P of document.querySelectorAll('.workspace-pane[data-modes="open"], [data-frame-host][data-modes="open"]'))delete P.dataset.modes,D=!0;return V.serverStrip_isOpen()&&(V.serverStrip_close(),D=!0),D};document.addEventListener("click",D=>{if(!(D.target instanceof Element)||D.target.closest(".mode-frame")!==null&&D.target.closest(".mode-fill")===null||D.target.closest("#pacs-server-strip")!==null||D.target.closest("#pacs-f-server")!==null||D.target.closest(".listing-framed .listing-row, .ask-bar")!==null)return;const P=D.target.closest(".mode-strip"),Q=P?.closest(".workspace-pane, [data-frame-host]")??null,ee=Q?.dataset.modes==="open",q=Pr();if(P!==null&&Q!==null&&!ee){Q.dataset.modes="open",Is("audio3");return}q&&Is("audio3")}),CI(a,{palette_isOpen:()=>!ki.hidden,palette_open:()=>$(),palette_close:()=>J(),errand_abandon:()=>F.errand_abandon(),dive_leave:()=>o.dive_leave(),overlay_escape:()=>Ke.escape(),drawers_close:xa,modeFrames_close:Pr,consoleFocused:()=>si,verbs:{bar_note:Bt,flip:Ms,resize:bs},host:()=>Wr,stage_alone:D=>{ke(),j.tree_set({pane:D}),ze()},element_require:Xe});const Sa=(D,P,Q)=>{if(P==="pacs"){j.preset_apply("pacs"),ze();for(const _e of Q)V.envelope_observe(_e);return}const ee=Ae(P);if(j.leaf_replace(D,ee.id),cs(D),j.mount_remove(D),P==="tags"){const _e=i.get("tags",ee.id);for(const pe of Q){if(pe.model?.kind!==Da.tags)continue;const je=sh.safeParse(pe.model.data);je.success&&_e?.model_show(je.data)}return}if(P==="image"){const _e=i.get("image",ee.id);for(const pe of Q){if(pe.model?.kind!==Da.series)continue;const je=nh.safeParse(pe.model.data);je.success&&_e?.series_show(je.data)}return}const q=P==="files"?i.get("files",ee.id):i.get("dag",ee.id);for(const _e of Q)q?.envelope_observe(_e)},Hs={instance_spawn:Ae,birth_record:Ie,launcher_yield:re,launcher_active:()=>j.activePreset_get()==="launcher",template_stamp:Ws},Li=NI(a,Hs),Lr=Li.open,Wi=yI(a,{...Hs,replayPlace_get:fe.replayPlace_get,errandHost_find:kt,saved:()=>{for(const D of i.values("dag"))D.marks_refresh()}});Ls("files",D=>z(D,!1)),Ls("catalogue",D=>z(D,!1,!0)),Ls("dag",D=>Rt(D,!1)),Ls("universe",M),Ls("view",qe),Ls("image",v),Ls("tags",E),Ls("help",Li.instance_build),Ls("edit",Wi.instance_build),Ls("gather",ne),Ls("empty",D=>{const P=Ws("tpl-pane-empty");return new mT(P,{execute:Q=>ye.line_execute(Q,{silent:!0,observe:!1}),claim:(Q,ee)=>Sa(D,Q,ee)}),{id:D,kind:"empty",mount:P}});const Gn=D=>{D?document.body.dataset.gutter="away":delete document.body.dataset.gutter,Is("audio3")},Rn=(D,P)=>{if(j.activePreset_get()===D&&j.panes_shown().includes(D)){Gn(!0);return}document.body.dataset.gutter==="away"&&delete document.body.dataset.gutter,P()};Xe("gutter-restore").addEventListener("click",()=>Gn(!1)),window.addEventListener("keydown",D=>{D.key==="Escape"&&document.body.dataset.gutter==="away"&&document.body.dataset.zoom===void 0&&Gn(!1)}),Xe("gutter-files").addEventListener("click",()=>{Rn("files",()=>{ge=!1,$e(),j.focus_set("files"),Vs(!1)})});const qs=(D="")=>{be("dag"),vt.list_reset(),vt.roster_filter(D),vt.feedsChooser_request(),j.focus_set("dag"),Vs(!1)},Ea=()=>{be("universe");const D=i.get("universe","universe");D!==void 0&&!D.shown_get()&&D.request(),j.focus_set("universe"),Vs(!1)};Xe("gutter-runs").addEventListener("click",()=>Rn("dag",()=>qs())),Xe("gutter-console").addEventListener("click",()=>{Xe("drawer").classList.contains("drawer-closed")&&Xe("drawer-toggle").click(),le.focus_take(),Vs(!0)}),Xe("gutter-tools").addEventListener("click",()=>{Rn("pacs",()=>{be("pacs"),j.focus_set("pacs"),Vs(!1)})}),Xe("gutter-dashboard").addEventListener("click",()=>{Rn("launcher",U)}),Xe("gutter-panes").addEventListener("click",()=>{Rn("panes",()=>{be("panes"),ue.render(),j.focus_set("panes"),Vs(!1)})});const Aa=D=>Io(D)?.kind??null,Wr=VI(a,{verbs:{move:wt,flip:Ms,resize:bs},help_open:Lr,launcher_enter:U,identity_get:()=>O,consoleZoom_toggle:Kp,feed_enter:D=>vt.feed_enter(D),file_save:p,image_open:(D,P,Q)=>L(D,P,Q),series_ask:N,tagsPane_open:G}),ki=Xe("lang-palette"),Xs=Xe("lang-input"),kr=Xe("lang-result"),T=Xe("lang-pill"),$=()=>{xa(),ki.hidden=!1,T.classList.add("lang-live"),kr.textContent="",Xs.value="",Xs.focus(),Is("audio3")},J=()=>{ki.hidden=!0,T.classList.remove("lang-live"),kr.textContent=""};T.addEventListener("click",()=>{ki.hidden?$():J()});const K=["pane","view","runs","node","dag","file","pacs","header","console","back","desktop","argus","help"],Y={pane:["split","zoom","close","bind","claim","focus","flip","resize"],resize:["left","right","up","down"],help:["keys","verbs"],focus:["left","right","up","down","last"],view:["files","runs","pacs"],runs:["enter","sort","filter"],node:["enter","immerse","back","clear"],dag:["layout","projection","scale","hue","pulse","census","physics","refresh"],physics:["charge","link","collide","gravity","reset"],file:["home","back","download","delete","sort","filter","follow","root","list","cards","preview"],pacs:["sort","filter","connect","disconnect","list","query","pull","status"],header:["stats","dag","away","restore"],console:["open","close","toggle","zoom","height"],desktop:["save","load","show","list","delete"],split:["left","right","above","below"],bind:["unlinked","fs","viewer"],claim:["files","runs","pacs"],layout:["ranked","molecule"],projection:["2d","3d"],scale:["time","size"],hue:["status","compute"],argus:["verbs"]};Xs.addEventListener("keydown",D=>{if(D.key==="Escape"){D.stopPropagation(),J();return}if(D.key==="Tab"){D.preventDefault();const P=Xs.value.split(/\s+/),Q=P[P.length-1]??"",ee=P.length<=1?"":P[P.length-2]??"",_e=(P.length<=1?K:Y[ee]??Y[P[0]??""]??[]).find(pe=>pe.startsWith(Q.toLowerCase()));_e!==void 0&&(P[P.length-1]=_e,Xs.value=`${P.join(" ")} `);return}if(D.key==="Enter"){const P=Xs.value.trim();if(P.length===0){J();return}Kc(Wr,P).then(Q=>{Q!==null?(kr.textContent=Q,le.output_write("data",`: ${P}
|
|
4256
4256
|
${Q}
|
|
4257
4257
|
`),Xs.value="",Xs.select()):(J(),le.line_run(P))})}}),em()?(j.preset_apply("launcher"),xe.render()):j.preset_apply(j.savedPreset_get()??"files");const Se=Xe("drawer-status"),Te=D=>{Se.textContent=`MODE: [${D}]`};S0(document.documentElement);const le=new T0(Xe("terminal"),async D=>{const P=await Kc(Wr,D);if(P!==null){le.output_write("data",`${P}
|
|
4258
4258
|
`),le.prompt_draw(),Te("READY");return}Te("BUSY");const Q=performance.now();try{const ee=await ye.line_execute(D);le.outcome_write(ee),ee.envelopes.some(q=>q.model?.kind==="fs.cwd")&&ye.line_execute("ls",{silent:!0})}catch(ee){const q=ee instanceof Error?ee.message:String(ee);le.output_write("err",`\x1B[31m${q}\x1B[0m
|