New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

dr-js

Package Overview
Dependencies
Maintainers
1
Versions
243
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dr-js - npm Package Compare versions

Comparing version 0.21.1-dev.0 to 0.21.1-dev.1

library/common/module/KeyTree.js

51

bin/function.js

@@ -0,1 +1,3 @@

Object.defineProperty(exports,"getDrBrowserScriptHTML",{enumerable:!0,get:function(){return _resource.DR_BROWSER_SCRIPT_TAG}})
Object.defineProperty(exports,"collectAllProcessStatus",{enumerable:!0,get:function(){return _ProcessStatus.collectAllProcessStatus}})
Object.defineProperty(exports,"packageName",{enumerable:!0,get:function(){return _package.name}})

@@ -10,2 +12,3 @@ Object.defineProperty(exports,"packageVersion",{enumerable:!0,get:function(){return _package.version}})

var _Tree=require("../library/common/data/Tree")
var _resource=require("../library/node/resource")
var _net=require("../library/node/net")

@@ -26,24 +29,24 @@ var _function2=require("../library/node/file/function")

exports.evalScript=evalScript
const evalReadlineExtend=async(e,r,t)=>{const{onLineSync:o,getResult:s,logLineInterval:a=0}=e
let n=0
const evalReadlineExtend=async(e,r,t)=>{const{onLineSync:o,getResult:s,logLineInterval:n=0}=e
let a=0
let i=""
const c=a&&(0,_time.createStepper)()
const l=a?()=>n%a==0&&t(`line: ${(0,_format.decimal)(n)} (+${(0,_format.time)(c())})`):()=>{}
const c=n&&(0,_time.createStepper)()
const l=n?()=>a%n==0&&t(`line: ${(0,_format.decimal)(a)} (+${(0,_format.time)(c())})`):()=>{}
await(0,_function2.createReadlineFromFileAsync)(r,e=>{i=e
l()
o(i,n)
n++})
o(i,a)
a++})
return s()}
exports.evalReadlineExtend=evalReadlineExtend
const fetchWithJump=async(e,r={},t=0,o)=>{let s=e
let a=0
let n=r.headers&&r.headers.cookie?[r.headers.cookie]:[]
for(;;){o&&await o(s,a,n)
const e=await(0,_net.fetchLikeRequest)(s,Object.assign({},r,{headers:Object.assign({},r.headers,{cookie:n.join(";")})}))
let n=0
let a=r.headers&&r.headers.cookie?[r.headers.cookie]:[]
for(;;){o&&await o(s,n,a)
const e=await(0,_net.fetchLikeRequest)(s,Object.assign({},r,{headers:Object.assign({},r.headers,{cookie:a.join(";")})}))
const i=()=>JSON.stringify({url:s,status:e.status,headers:e.headers},null,2)
if(e.ok)return e
if(!(e.status>=300&&e.status<=399&&e.headers.location))throw new Error(`bad status: ${i()}`)
if(++a>t)throw new Error(`${t} max jump reached: ${i()}`)
if(++n>t)throw new Error(`${t} max jump reached: ${i()}`)
s=new URL(e.headers.location,s).href
n=[...n,...(e.headers["set-cookie"]||[]).map(e=>e.split(";")[0])]}}
a=[...a,...(e.headers["set-cookie"]||[]).map(e=>e.split(";")[0])]}}
exports.fetchWithJump=fetchWithJump

@@ -55,24 +58,12 @@ const prettyStringifyFileTree=async e=>{const{subInfoListMap:r}=await(0,_Directory.getDirectoryInfoTree)(e)

exports.collectFile=collectFile
const prettyStringifyProcessTree=e=>{const r=[]
const t=(e,{pid:t,command:o})=>r.push(`${`${t}`.padStart(8," ")} | ${e}${o||"..."}`)
t("",{pid:"pid",command:"command"});(0,_Tree.prettyStringifyTree)([e,-1,!1],([e,r,t])=>e.subTree&&Object.values(e.subTree).map((e,t,{length:o})=>[e,r+1,t!==o-1]),t)
return r.join("\n")}
const collectAllProcessStatus=async(e,r)=>{if(e.startsWith("t")){const t=await(0,_ProcessStatus.getProcessTree)()
if(r)return t
const o=prettyStringifyProcessTree(t)
return"tree-wide"!==e&&"tw"!==e?o.split("\n").map(e=>(0,_string.autoEllipsis)(e,128,96,16)).join("\n"):o}const t=(0,_ProcessStatus.sortProcessList)(await(0,_ProcessStatus.getProcessList)(),e)
return r?t:(0,_format.padTable)({table:[["pid","ppid","command"],...t.map(({pid:e,ppid:r,command:t})=>[e,r,t])]})}
exports.collectAllProcessStatus=collectAllProcessStatus
const describeServer=({baseUrl:e,protocol:r,hostname:t,port:o},s,a=[])=>(0,_string.indentList)(`[${s}]`,[`pid: ${process.pid}`,...a,`baseUrl: '${e}'`,"0.0.0.0"===t&&(0,_string.indentList)("localUrl:",[{address:"localhost"},...(0,_NetworkAddress.getNetworkIPv4AddressList)()].map(({address:e})=>`'${r}//${e}:${o}'`))].filter(Boolean))
const describeServer=({baseUrl:e,protocol:r,hostname:t,port:o},s,n=[])=>(0,_string.indentList)(`[${s}]`,[`pid: ${process.pid}`,...n,`baseUrl: '${e}'`,"0.0.0.0"===t&&(0,_string.indentList)("localUrl:",[{address:"localhost"},...(0,_NetworkAddress.getNetworkIPv4AddressList)()].map(({address:e})=>`'${r}//${e}:${o}'`))].filter(Boolean))
exports.describeServer=describeServer
const commonStartServer=async({protocol:e,hostname:r,port:t,routeConfigList:o,isAddFavicon:s,title:a,extraInfoList:n,log:i})=>{const{server:c,option:l,start:p,stop:d}=(0,_Server.createServer)({protocol:e,hostname:r,port:t})
const u=(0,_Common.createResponderLogEnd)({log:i})
const commonStartServer=async({protocol:e,hostname:r,port:t,routeConfigList:o,isAddFavicon:s,title:n,extraInfoList:a,log:i})=>{const{server:c,option:l,start:p,stop:u}=(0,_Server.createServer)({protocol:e,hostname:r,port:t})
const d=(0,_Common.createResponderLogEnd)({log:i})
s&&(o=[...o,[["/favicon","/favicon.ico"],"GET",(0,_Send.createResponderFavicon)()]])
c.on("request",(0,_Server.createRequestListener)({responderList:[(0,_Common.createResponderLog)({log:i}),(0,_Router.createResponderRouter)({routeMap:(0,_Router.createRouteMap)(o),baseUrl:l.baseUrl})],responderEnd:e=>{(0,_Common.responderEnd)(e)
u(e)}}))
d(e)}}))
await p()
i(describeServer(l,a,n))
return{server:c,option:l,start:p,stop:d}}
i(describeServer(l,n,a))
return{server:c,option:l,start:p,stop:u}}
exports.commonStartServer=commonStartServer
const getDrBrowserScriptHTML=()=>`<script>${(0,_fs.readFileSync)(`${__dirname}/../library/Dr.browser.js`)}<\/script>`
exports.getDrBrowserScriptHTML=getDrBrowserScriptHTML

@@ -16,22 +16,23 @@ #!/usr/bin/env node

var d=require("../library/node/system/Run")
var y=require("../library/node/system/ProcessStatus")
var f=require("../library/node/system/Status")
var y=require("./server/serveStatic")
var v=require("./server/websocketGroup")
var S=require("./server/testConnection")
var g=require("./function")
var w=require("./option")
var v=require("./server/serveStatic")
var S=require("./server/websocketGroup")
var g=require("./server/testConnection")
var w=require("./function")
var b=require("./option")
const h=e=>console.log((0,i.isBasicObject)(e)?JSON.stringify(e,null,2):e)
const b=async(w,b)=>{const{tryGet:$,tryGetFirst:q,getFirst:T}=b
const O=$("quiet")?()=>{}:console.log
const N=(e,r)=>e(r).then(()=>O(`[${w}] done: ${r}`),e=>O(`[${w}] error: ${r}\n${e.stack||e}`))
const k=$(w)||[]
const x=Boolean($("json"))
const A=q("input-file")
const P=q("output-file")
const F=async()=>{const e=(q("host")||"").split(":")
const $=async(b,$)=>{const{tryGet:q,tryGetFirst:T,getFirst:O}=$
const N=q("quiet")?()=>{}:console.log
const P=(e,r)=>e(r).then(()=>N(`[${b}] done: ${r}`),e=>N(`[${b}] error: ${r}\n${e.stack||e}`))
const k=q(b)||[]
const x=Boolean(q("json"))
const A=T("input-file")
const F=T("output-file")
const j=async()=>{const e=(T("host")||"").split(":")
const r=e[0]||"0.0.0.0"
return{hostname:r,port:Number(e[1]||await(0,l.autoTestServerPort)([80,8080,8888,8800,8e3],r))}}
switch(w){case"eval":case"eval-readline":{let t=await(0,g.evalScript)(A?String((0,r.readFileSync)(A)):k[0],A?k:k.slice(1),A?(0,e.dirname)(A):process.cwd(),b)
"eval-readline"===w&&(t=await(0,g.evalReadlineExtend)(t,T("root"),O))
return void 0!==t&&(e=>P?(0,r.writeFileSync)(P,e):(0,n.pipeStreamAsync)(process.stdout,(0,n.bufferToStream)(e)))(t instanceof Buffer?t:Buffer.from(String(t)))}case"repl":return(0,t.start)({prompt:"> ",input:process.stdin,output:process.stdout,useGlobal:!0}).context.require=require
switch(b){case"eval":case"eval-readline":{let t=await(0,w.evalScript)(A?String((0,r.readFileSync)(A)):k[0],A?k:k.slice(1),A?(0,e.dirname)(A):process.cwd(),$)
"eval-readline"===b&&(t=await(0,w.evalReadlineExtend)(t,O("root"),N))
return void 0!==t&&(e=>F?(0,r.writeFileSync)(F,e):(0,n.pipeStreamAsync)(process.stdout,(0,n.bufferToStream)(e)))(t instanceof Buffer?t:Buffer.from(String(t)))}case"repl":return(0,t.start)({prompt:"> ",input:process.stdin,output:process.stdout,useGlobal:!0}).context.require=require
case"wait":{const e=k[0]||2e3

@@ -43,12 +44,12 @@ return(0,o.setTimeoutAsync)(e)}case"echo":return h(k)

case"write":case"append":if(process.stdin.isTTY)throw new Error("unsupported TTY stdin")
const l="write"===w?"w":"a"
const l="write"===b?"w":"a"
return(0,n.pipeStreamAsync)((0,r.createWriteStream)(k[0],{flags:l}),process.stdin)
case"open":{const r=k[0]||"."
return(0,d.runSync)({command:(0,m.getDefaultOpen)(),argList:[r.includes("://")?r:(0,e.normalize)(r)]})}case"status":return h(x?{system:(0,f.getSystemStatus)(),process:(0,f.getProcessStatus)()}:(0,f.describeSystemStatus)())
case"file-list":case"file-list-all":case"file-tree":return h(await(0,g.collectFile)(w,k[0]||process.cwd()))
case"file-create-directory":for(const e of k)await N(c.createDirectory,e)
case"file-list":case"file-list-all":case"file-tree":return h(await(0,w.collectFile)(b,k[0]||process.cwd()))
case"file-create-directory":for(const e of k)await P(c.createDirectory,e)
return
case"file-modify-copy":return u.modify.copy(k[0],k[1])
case"file-modify-move":return u.modify.move(k[0],k[1])
case"file-modify-delete":for(const e of k)await N(u.modify.delete,e)
case"file-modify-delete":for(const e of k)await P(u.modify.delete,e)
return

@@ -60,15 +61,15 @@ case"file-merge":{const[e,...t]=k

a=Number(a)||0
const o=await(0,g.fetchWithJump)(e,{headers:{accept:"*/*","user-agent":`${g.packageName}/${g.packageVersion}`},timeout:a},t,(e,r,o)=>O(`[fetch] url: ${e}, jump: ${r}/${t}, timeout: ${a?(0,s.time)(a):"none"}, cookie: ${o.length}`))
const o=await(0,w.fetchWithJump)(e,{headers:{accept:"*/*","user-agent":`${w.packageName}/${w.packageVersion}`},timeout:a},t,(e,r,o)=>N(`[fetch] url: ${e}, jump: ${r}/${t}, timeout: ${a?(0,s.time)(a):"none"}, cookie: ${o.length}`))
const i=Number(o.headers["content-length"])
O(`[fetch] get status: ${o.status}, fetch response content${i?` (${(0,s.binary)(i)}B)`:""}...`)
await(e=>(0,n.pipeStreamAsync)(P?(0,r.createWriteStream)(P):process.stdout,e))(o.stream())
return O("\n[fetch] done")}case"process-status":{const[e="pid--"]=k
return h(await(0,g.collectAllProcessStatus)(e,x))}case"json-format":{const[e=2]=k
N(`[fetch] get status: ${o.status}, fetch response content${i?` (${(0,s.binary)(i)}B)`:""}...`)
await(e=>(0,n.pipeStreamAsync)(F?(0,r.createWriteStream)(F):process.stdout,e))(o.stream())
return N("\n[fetch] done")}case"process-status":{const[e="pid--"]=k
return h(await(0,y.collectAllProcessStatus)(e,x))}case"json-format":{const[e=2]=k
const t=JSON.parse((0,r.readFileSync)(A))
const a=(0,s.prettyStringifyJSON)(t,e)
return(0,r.writeFileSync)(P||A,a)}case"server-serve-static":case"server-serve-static-simple":{const[e=3e5]=k
const r="server-serve-static-simple"===w
const t=q("root")||process.cwd()
return(0,y.startServerServeStatic)(Object.assign({isSimpleServe:r,expireTime:Number(e),staticRoot:t,log:O},await F()))}case"server-websocket-group":return(0,v.startServerWebSocketGroup)(Object.assign({log:O},await F()))
case"server-test-connection":return(0,S.startServerTestConnection)(Object.assign({log:O},await F()))
return(0,r.writeFileSync)(F||A,a)}case"server-serve-static":case"server-serve-static-simple":{const[e=3e5]=k
const r="server-serve-static-simple"===b
const t=T("root")||process.cwd()
return(0,v.startServerServeStatic)(Object.assign({isSimpleServe:r,expireTime:Number(e),staticRoot:t,log:N},await j()))}case"server-websocket-group":return(0,S.startServerWebSocketGroup)(Object.assign({log:N},await j()))
case"server-test-connection":return(0,g.startServerTestConnection)(Object.assign({log:N},await j()))
case"server-tcp-proxy":{let e

@@ -82,10 +83,10 @@ let r

const s=e[t]
O(`[CONNECT] ${r.remoteAddress}:${r.remotePort} => ${s.hostname}:${s.port}`)
return s})}const{option:t,start:s}=(0,p.createTCPProxyServer)(Object.assign({getTargetOption:r},await F()))
N(`[CONNECT] ${r.remoteAddress}:${r.remotePort} => ${s.hostname}:${s.port}`)
return s})}const{option:t,start:s}=(0,p.createTCPProxyServer)(Object.assign({getTargetOption:r},await j()))
await s()
return O((0,a.indentList)("[TCPProxy]",[`pid: ${process.pid}`,`at: ${t.hostname}:${t.port}`,...e.map(e=>`proxy to: ${e.hostname}:${e.port}`)]))}}};(async()=>{const e=await(0,w.parseOption)()
const r=w.MODE_NAME_LIST.find(r=>e.tryGet(r))
if(!r)return h(e.tryGet("version")?(0,g.getVersion)():(0,w.formatUsage)(null,e.tryGet("help")?null:"simple"))
await b(r,e).catch(e=>{console.warn(`[Error] in mode: ${r}:`,e.stack||e)
process.exit(2)})})().catch(e=>{console.warn((0,w.formatUsage)(e.stack||e,"simple"))
return N((0,a.indentList)("[TCPProxy]",[`pid: ${process.pid}`,`at: ${t.hostname}:${t.port}`,...e.map(e=>`proxy to: ${e.hostname}:${e.port}`)]))}}};(async()=>{const e=await(0,b.parseOption)()
const r=b.MODE_NAME_LIST.find(r=>e.tryGet(r))
if(!r)return h(e.tryGet("version")?(0,w.getVersion)():(0,b.formatUsage)(null,e.tryGet("help")?null:"simple"))
await $(r,e).catch(e=>{console.warn(`[Error] in mode: ${r}:`,e.stack||e)
process.exit(2)})})().catch(e=>{console.warn((0,b.formatUsage)(e.stack||e,"simple"))
process.exit(1)})
var e=require("../../library/common/time")
var r=require("../../library/common/immutable/Array")
var t=require("../../library/common/module/MIME")
var s=require("../../library/node/data/Buffer")
var o=require("../../library/node/server/Responder/Common")
var n=require("../../library/node/server/Responder/Send")
var a=require("../../library/node/server/Responder/Router")
var u=require("../function")
const c=["GET","POST","PUT","DELETE"]
exports.startServerTestConnection=(async({protocol:i="http:",hostname:d,port:m,log:p})=>{const f=(0,n.prepareBufferData)(Buffer.from("TEST CONTENT"))
const y=[[["/test-describe","/test-describe/*"],Object.keys(a.METHOD_MAP),async e=>{const{url:s,method:o,httpVersion:a,rawHeaders:u,socket:{remoteAddress:c,remotePort:i}}=e.request
const d=JSON.stringify({from:`${c}:${i}`,request:{url:s,method:o,httpVersion:a,headers:(0,r.arraySplitChunk)(u,2).map(e=>e.join(": "))}},null,2)
p(`[test-describe]\n${d}`)
return(0,n.responderSendBufferCompress)(e,{buffer:Buffer.from(d),type:t.BASIC_EXTENSION_MAP.json})}],[["/test-echo-post","/test-echo-post/:mime"],"POST",async e=>{const{url:{searchParams:r}}=e.getState()
return(r.has("no-compress")?n.responderSendBuffer:n.responderSendBufferCompress)(e,{buffer:await(0,s.receiveBufferAsync)(e.request),type:t.BASIC_EXTENSION_MAP[(0,a.getRouteParam)(e,"mime")]})}],["/test-buffer",c,e=>(0,n.responderSendBufferCompress)(e,f)],["/test-json",c,e=>(0,n.responderSendJSON)(e,{object:{testKey:"TEST VALUE"}})],["/test-destroy",c,async e=>e.response.destroy()],[["/test-timeout","/test-timeout/:wait"],c,async r=>{const t=parseInt((0,a.getRouteParam)(r,"wait"))||200
var s=require("../../library/node/resource")
var o=require("../../library/node/data/Buffer")
var n=require("../../library/node/server/Responder/Common")
var a=require("../../library/node/server/Responder/Send")
var u=require("../../library/node/server/Responder/Router")
var c=require("../function")
const i=["GET","POST","PUT","DELETE"]
exports.startServerTestConnection=(async({protocol:d="http:",hostname:m,port:p,log:f})=>{const y=(0,a.prepareBufferData)(Buffer.from("TEST CONTENT"))
const S=[[["/test-describe","/test-describe/*"],Object.keys(u.METHOD_MAP),async e=>{const{url:s,method:o,httpVersion:n,rawHeaders:u,socket:{remoteAddress:c,remotePort:i}}=e.request
const d=JSON.stringify({from:`${c}:${i}`,request:{url:s,method:o,httpVersion:n,headers:(0,r.arraySplitChunk)(u,2).map(e=>e.join(": "))}},null,2)
f(`[test-describe]\n${d}`)
return(0,a.responderSendBufferCompress)(e,{buffer:Buffer.from(d),type:t.BASIC_EXTENSION_MAP.json})}],[["/test-echo-post","/test-echo-post/:mime"],"POST",async e=>{const{url:{searchParams:r}}=e.getState()
return(r.has("no-compress")?a.responderSendBuffer:a.responderSendBufferCompress)(e,{buffer:await(0,o.receiveBufferAsync)(e.request),type:t.BASIC_EXTENSION_MAP[(0,u.getRouteParam)(e,"mime")]})}],["/test-buffer",i,e=>(0,a.responderSendBufferCompress)(e,y)],["/test-json",i,e=>(0,a.responderSendJSON)(e,{object:{testKey:"TEST VALUE"}})],["/test-destroy",i,async e=>e.response.destroy()],[["/test-timeout","/test-timeout/:wait"],i,async r=>{const t=parseInt((0,u.getRouteParam)(r,"wait"))||200
await(0,e.setTimeoutAsync)(t)
return(0,n.responderSendJSON)(r,{object:{}})}],[["/test-status-code","/test-status-code/:status-code"],c,async e=>{const r=parseInt((0,a.getRouteParam)(e,"status-code"))||200
return(0,o.responderEndWithStatusCode)(e,{statusCode:r})}],[["/test-retry","/test-retry/:count"],c,(()=>{const e={}
return async r=>{const t=parseInt((0,a.getRouteParam)(r,"count"))||4
return(0,a.responderSendJSON)(r,{object:{}})}],[["/test-status-code","/test-status-code/:status-code"],i,async e=>{const r=parseInt((0,u.getRouteParam)(e,"status-code"))||200
return(0,n.responderEndWithStatusCode)(e,{statusCode:r})}],[["/test-retry","/test-retry/:count"],i,(()=>{const e={}
return async r=>{const t=parseInt((0,u.getRouteParam)(r,"count"))||4
const s=(e[t]||0)+1
e[t]=s%t
s===t?(0,n.responderSendJSON)(r,{object:{}}):r.response.destroy()}})()],["/","GET",(0,a.createResponderRouteList)({getRouteMap:()=>(0,a.createRouteMap)(y),extraBodyList:[(0,u.getDrBrowserScriptHTML)()]})]]
await(0,u.commonStartServer)({protocol:i,hostname:d,port:m,routeConfigList:y,isAddFavicon:!0,title:"TestConnection",log:p})})
s===t?(0,a.responderSendJSON)(r,{object:{}}):r.response.destroy()}})()],["/","GET",(0,u.createResponderRouteList)({getRouteMap:()=>(0,u.createRouteMap)(S),extraBodyList:[(0,s.DR_BROWSER_SCRIPT_TAG)()]})]]
await(0,c.commonStartServer)({protocol:d,hostname:m,port:p,routeConfigList:S,isAddFavicon:!0,title:"TestConnection",log:f})})
var e=require("../../library/common/error")
var t=require("../../library/common/module/MIME")
var o=require("../../library/node/data/BufferPacket")
var r=require("../../library/node/server/Responder/Common")
var n=require("../../library/node/server/Responder/Send")
var a=require("../../library/node/server/Responder/Router")
var s=require("../../library/node/server/WebSocket/function")
var i=require("../../library/node/server/WebSocket/WebSocketServer")
var l=require("../../library/node/server/WebSocket/WebSocketUpgradeRequest")
var c=require("../../library/node/server/commonHTML")
var d=require("../function")
const p={}
var o=require("../../library/node/resource")
var r=require("../../library/node/data/BufferPacket")
var n=require("../../library/node/server/Responder/Common")
var a=require("../../library/node/server/Responder/Send")
var s=require("../../library/node/server/Responder/Router")
var i=require("../../library/node/server/WebSocket/function")
var l=require("../../library/node/server/WebSocket/WebSocketServer")
var c=require("../../library/node/server/WebSocket/WebSocketUpgradeRequest")
var d=require("../../library/node/server/commonHTML")
var p=require("../function")
const u={}
const f=(e,t)=>{const o=u[e]
const f={}
const y=(e,t)=>{const o=f[e]
if(!o||!o.has(t))return t

@@ -20,51 +21,51 @@ const r=t.replace(/-*\d+$/,"")

return`${r}-${n}`}
const y=t=>{const{webSocket:r}=t
const g=t=>{const{webSocket:o}=t
const{groupPath:n,id:a}=t.getState()
const i=e=>{if(0===e.size)return
const t=(0,o.packBufferPacket)(JSON.stringify({type:"#INFO_GROUP",payload:Array.from(u[n])}))
const s=e=>{if(0===e.size)return
const t=(0,r.packBufferPacket)(JSON.stringify({type:"#INFO_GROUP",payload:Array.from(f[n])}))
e.forEach(e=>e.webSocket.sendBuffer(t))}
r.on(s.WEBSOCKET_EVENT.OPEN,()=>{const e=((e,t,o)=>{void 0===u[e]&&(u[e]=new Set)
const r=u[e]
o.on(i.WEBSOCKET_EVENT.OPEN,()=>{const e=((e,t,o)=>{void 0===f[e]&&(f[e]=new Set)
const r=f[e]
r.add(t)
void 0===p[e]&&(p[e]=new Map)
const n=p[e]
void 0===u[e]&&(u[e]=new Map)
const n=u[e]
n.set(t,{id:t,webSocket:o,groupIdSet:r})
return n})(n,a,r)
r.sendBuffer((0,o.packBufferPacket)(JSON.stringify({type:"#INFO_USER",payload:{groupPath:n,id:a}})))
i(e)})
r.on(s.WEBSOCKET_EVENT.CLOSE,()=>{const e=((e,t)=>{const o=u[e]
return n})(n,a,o)
o.sendBuffer((0,r.packBufferPacket)(JSON.stringify({type:"#INFO_USER",payload:{groupPath:n,id:a}})))
s(e)})
o.on(i.WEBSOCKET_EVENT.CLOSE,()=>{const e=((e,t)=>{const o=f[e]
o&&o.delete(t)
o&&0===o.size&&delete u[e]
const r=p[e]
o&&0===o.size&&delete f[e]
const r=u[e]
r&&r.delete(t)
r&&0===r.size&&delete p[e]
r&&0===r.size&&delete u[e]
return r})(n,a)
i(e)})
r.on(s.WEBSOCKET_EVENT.FRAME,((t,r)=>async({dataType:n,dataBuffer:a})=>{if(n!==s.OPCODE_TYPE.BINARY)return t.close(1e3,"expect BINARY")
const{error:i}=await(0,e.catchAsync)(r,(0,o.parseBufferPacket)(a))
i&&t.close(1e3,i.toString())})(r,([e,t])=>{const{type:s,payload:i,targetId:l}=JSON.parse(e)
"#CLOSE"===s&&r.close(1e3,"CLOSE received")
"#BUFFER_GROUP"===s&&((e,t,r,n)=>{if(e.size<=1)return
const s=(0,o.packBufferPacket)(JSON.stringify({type:t,payload:Object.assign({},r,{id:a})}),n)
e.forEach(e=>{e.id!==a&&e.webSocket.sendBuffer(s)})})(p[n],s,i,t)
"#BUFFER_SINGLE"===s&&((e,t,r,n,s)=>{const i=e.get(n)
i&&i.webSocket.sendBuffer((0,o.packBufferPacket)(JSON.stringify({type:t,targetId:n,payload:Object.assign({},r,{id:a})}),s))})(p[n],s,i,l,t)}))}
const g=new Set(["group-binary-packet"])
const b=async e=>{const{origin:t,protocolList:o,isSecure:r}=e.webSocket
const n=decodeURIComponent((0,a.getRouteParamAny)(e)||"")
const{url:{searchParams:s}}=e.getState()
const i=s.get("id")
const l=m(o,g)
if(n&&i&&l){e.setState({protocol:l,groupPath:n,id:f(n,i)})
y(e)}}
const m=(e,t)=>{return e.find(t.has,t)}
exports.startServerWebSocketGroup=(async({protocol:e="http:",hostname:o,port:s,log:p})=>{const u=(0,n.prepareBufferData)(Buffer.from((0,c.COMMON_LAYOUT)([(0,c.COMMON_STYLE)(),S],[k,(0,c.COMMON_SCRIPT)({TYPE_CLOSE:"#CLOSE",TYPE_INFO_GROUP:"#INFO_GROUP",TYPE_INFO_USER:"#INFO_USER",TYPE_BUFFER_GROUP:"#BUFFER_GROUP",TYPE_BUFFER_SINGLE:"#BUFFER_SINGLE",FRAME_LENGTH_LIMIT:268435456,onload:E}),(0,d.getDrBrowserScriptHTML)()])),t.BASIC_EXTENSION_MAP.html)
const f=[["/","GET",e=>(0,n.responderSendBufferCompress)(e,u)],["/*","GET",e=>(0,r.responderEndWithRedirect)(e,{redirectUrl:"/"})]]
const{server:y,option:{baseUrl:g}}=await(0,d.commonStartServer)({protocol:e,hostname:o,port:s,routeConfigList:f,isAddFavicon:!0,title:"WebSocketGroup",log:p});(0,i.enableWebSocketServer)({server:y,onUpgradeRequest:(0,l.createUpdateRequestListener)({responderList:[(0,a.createResponderRouter)({routeMap:(0,a.createRouteMap)([["/websocket-group/*","GET",b]]),baseUrl:g})]}),frameLengthLimit:268435456})})
const S="<style>\nlabel { display: flex; align-items: center; }\np { position: relative; padding: 14px 4px 2px; border-top: 1px solid #ddd; word-break: break-all; }\np:hover { background: #f5f5f5; }\npre { overflow: auto; padding: 0 2px; max-height: 10em; border-left: 1px solid #ddd; color: #666; }\ninput { flex: 1; }\n.flex-column { display: flex; flex-flow: column; }\n.non-flex { flex-shrink: 0; }\n.time-tag, .id-tag { position: absolute; top: 0; font-size: 12px; line-height: 12px; }\n.time-tag { right: 0; color: #aaa }\n.id-tag { left: 0; }\n.color-self { color: #63aeff }\n.color-system { color: #aaa }\n</style>"
const k='\n<div id="setup" class="flex-column">\n <input id="group-path" class="auto-height" type="text" placeholder="group-path" autofocus />\n <input id="id" class="auto-height" type="text" placeholder="id" />\n</div>\n<button id="button-toggle"></button>\n<div id="log" style="overflow-y: auto; flex: 1; min-height: 0;"></div>\n<button id="button-log-clear" class="non-flex">Clear Log [Ctrl+l]</button>\n<div id="main" class="flex-column non-flex">\n <label for="payload-text">Message Text: </label>\n <textarea id="payload-text" style="min-height: 6em;"></textarea>\n <label>Message File: <input id="payload-file" class="auto-height" type="file" /></label>\n <button id="button-send"></button>\n</div>\n'
const E=()=>{const{alert:e,getSelection:t,location:o,Blob:r,WebSocket:n,qS:a,cE:s,TYPE_CLOSE:i,TYPE_INFO_GROUP:l,TYPE_INFO_USER:c,TYPE_BUFFER_GROUP:d,TYPE_BUFFER_SINGLE:p,FRAME_LENGTH_LIMIT:u,Dr:{Common:{Time:{setTimeoutAsync:f},Function:{lossyAsync:y},Math:{getRandomInt:g,getRandomId:b},Format:{binary:m}},Browser:{Data:{BlobPacket:{packBlobPacket:S,parseBlobPacket:k}},Resource:{createDownloadWithBlob:E},DOM:{applyDragFileListListener:h},Input:{KeyCommand:{createKeyCommandHub:N}}}}}=window
const O=(e,t="")=>s("span",{innerText:`[${e}]`,className:`id-tag ${t}`})
const v=()=>s("span",{innerText:(new Date).toLocaleString(),className:"time-tag"})
const x=(...e)=>{const t=a("#log")
s(e)})
o.on(i.WEBSOCKET_EVENT.FRAME,((t,o)=>async({dataType:n,dataBuffer:a})=>{if(n!==i.OPCODE_TYPE.BINARY)return t.close(1e3,"expect BINARY")
const{error:s}=await(0,e.catchAsync)(o,(0,r.parseBufferPacket)(a))
s&&t.close(1e3,s.toString())})(o,([e,t])=>{const{type:s,payload:i,targetId:l}=JSON.parse(e)
"#CLOSE"===s&&o.close(1e3,"CLOSE received")
"#BUFFER_GROUP"===s&&((e,t,o,n)=>{if(e.size<=1)return
const s=(0,r.packBufferPacket)(JSON.stringify({type:t,payload:Object.assign({},o,{id:a})}),n)
e.forEach(e=>{e.id!==a&&e.webSocket.sendBuffer(s)})})(u[n],s,i,t)
"#BUFFER_SINGLE"===s&&((e,t,o,n,s)=>{const i=e.get(n)
i&&i.webSocket.sendBuffer((0,r.packBufferPacket)(JSON.stringify({type:t,targetId:n,payload:Object.assign({},o,{id:a})}),s))})(u[n],s,i,l,t)}))}
const b=new Set(["group-binary-packet"])
const m=async e=>{const{origin:t,protocolList:o,isSecure:r}=e.webSocket
const n=decodeURIComponent((0,s.getRouteParamAny)(e)||"")
const{url:{searchParams:a}}=e.getState()
const i=a.get("id")
const l=S(o,b)
if(n&&i&&l){e.setState({protocol:l,groupPath:n,id:y(n,i)})
g(e)}}
const S=(e,t)=>{return e.find(t.has,t)}
exports.startServerWebSocketGroup=(async({protocol:e="http:",hostname:r,port:i,log:u})=>{const f=(0,a.prepareBufferData)(Buffer.from((0,d.COMMON_LAYOUT)([(0,d.COMMON_STYLE)(),k],[E,(0,d.COMMON_SCRIPT)({TYPE_CLOSE:"#CLOSE",TYPE_INFO_GROUP:"#INFO_GROUP",TYPE_INFO_USER:"#INFO_USER",TYPE_BUFFER_GROUP:"#BUFFER_GROUP",TYPE_BUFFER_SINGLE:"#BUFFER_SINGLE",FRAME_LENGTH_LIMIT:268435456,onload:h}),(0,o.DR_BROWSER_SCRIPT_TAG)()])),t.BASIC_EXTENSION_MAP.html)
const y=[["/","GET",e=>(0,a.responderSendBufferCompress)(e,f)],["/*","GET",e=>(0,n.responderEndWithRedirect)(e,{redirectUrl:"/"})]]
const{server:g,option:{baseUrl:b}}=await(0,p.commonStartServer)({protocol:e,hostname:r,port:i,routeConfigList:y,isAddFavicon:!0,title:"WebSocketGroup",log:u});(0,l.enableWebSocketServer)({server:g,onUpgradeRequest:(0,c.createUpdateRequestListener)({responderList:[(0,s.createResponderRouter)({routeMap:(0,s.createRouteMap)([["/websocket-group/*","GET",m]]),baseUrl:b})]}),frameLengthLimit:268435456})})
const k="<style>\nlabel { display: flex; align-items: center; }\np { position: relative; padding: 14px 4px 2px; border-top: 1px solid #ddd; word-break: break-all; }\np:hover { background: #f5f5f5; }\npre { overflow: auto; padding: 0 2px; max-height: 10em; border-left: 1px solid #ddd; color: #666; }\ninput { flex: 1; }\n.flex-column { display: flex; flex-flow: column; }\n.non-flex { flex-shrink: 0; }\n.time-tag, .id-tag { position: absolute; top: 0; font-size: 12px; line-height: 12px; }\n.time-tag { right: 0; color: #aaa }\n.id-tag { left: 0; }\n.color-self { color: #63aeff }\n.color-system { color: #aaa }\n</style>"
const E='\n<div id="setup" class="flex-column">\n <input id="group-path" class="auto-height" type="text" placeholder="group-path" autofocus />\n <input id="id" class="auto-height" type="text" placeholder="id" />\n</div>\n<button id="button-toggle"></button>\n<div id="log" style="overflow-y: auto; flex: 1; min-height: 0;"></div>\n<button id="button-log-clear" class="non-flex">Clear Log [Ctrl+l]</button>\n<div id="main" class="flex-column non-flex">\n <label for="payload-text">Message Text: </label>\n <textarea id="payload-text" style="min-height: 6em;"></textarea>\n <label>Message File: <input id="payload-file" class="auto-height" type="file" /></label>\n <button id="button-send"></button>\n</div>\n'
const h=()=>{const{alert:e,getSelection:t,location:o,Blob:r,WebSocket:n,qS:a,cE:s,TYPE_CLOSE:i,TYPE_INFO_GROUP:l,TYPE_INFO_USER:c,TYPE_BUFFER_GROUP:d,TYPE_BUFFER_SINGLE:p,FRAME_LENGTH_LIMIT:u,Dr:{Common:{Time:{setTimeoutAsync:f},Function:{lossyAsync:y},Math:{getRandomInt:g,getRandomId:b},Format:{binary:m}},Browser:{Data:{BlobPacket:{packBlobPacket:S,parseBlobPacket:k}},Resource:{createDownloadWithBlob:E},DOM:{applyDragFileListListener:h},Input:{KeyCommand:{createKeyCommandHub:O}}}}}=window
const v=(e,t="")=>s("span",{innerText:`[${e}]`,className:`id-tag ${t}`})
const N=()=>s("span",{innerText:(new Date).toLocaleString(),className:"time-tag"})
const R=(...e)=>{const t=a("#log")
const o=s("p",{id:b()},e)

@@ -74,8 +75,8 @@ t.appendChild(o)

return o}
const T=({id:e,text:o,className:r})=>x(s("pre",{innerText:o,ondblclick:e=>t().selectAllChildren(e.currentTarget.parentNode.querySelector("pre"))}),O(e,r),v())
const w=({isSend:e,id:t,fileName:o,fileSize:r,fileId:n,className:a})=>x(s("pre",{innerText:e?"sharing: ":"share: "}),s(e?"b":"button",{innerText:`📄 ${o} (${m(r)}B)`,onclick:e?null:()=>_(t,n)}),O(t,a),v())
const I=e=>x(s("pre",{innerText:e,className:"color-system"}),O("System","color-system"),v())
const R=()=>a("#log","")
const x=({id:e,text:o,className:r})=>R(s("pre",{innerText:o,ondblclick:e=>t().selectAllChildren(e.currentTarget.parentNode.querySelector("pre"))}),v(e,r),N())
const T=({isSend:e,id:t,fileName:o,fileSize:r,fileId:n,className:a})=>R(s("pre",{innerText:e?"sharing: ":"share: "}),s(e?"b":"button",{innerText:`📄 ${o} (${m(r)}B)`,onclick:e?null:()=>B(t,n)}),v(t,a),N())
const I=e=>R(s("pre",{innerText:e,className:"color-system"}),v("System","color-system"),N())
const w=()=>a("#log","")
const P={fileWeakMap:new WeakMap,retryCount:0}
const C=()=>{I(`Left group: ${P.groupPath}`)
const _=()=>{I(`Left group: ${P.groupPath}`)
a("#setup").style.display=""

@@ -90,3 +91,3 @@ a("#main").style.display="none"

P.groupInfo=[]}
const B=y(async e=>{C()
const C=y(async e=>{_()
await f(200*P.retryCount)

@@ -96,5 +97,5 @@ P.retryCount++

P.retryCount<=10&&$()}).trigger
C()
R()
const _=(e,t)=>{P.websocket.send(S(JSON.stringify({type:p,targetId:e,payload:{fileId:t,intent:"request"}})))}
_()
w()
const B=(e,t)=>{P.websocket.send(S(JSON.stringify({type:p,targetId:e,payload:{fileId:t,intent:"request"}})))}
const $=()=>{if(P.websocket){P.websocket.send(S(JSON.stringify({type:i})))

@@ -118,4 +119,4 @@ return}const e=a("#group-path").value.trim()||"public"

P.retryCount=0})({websocket:r,groupPath:e,id:t})}
r.addEventListener("error",B)
r.addEventListener("close",({code:e})=>1e3===e?C():B(new Error(`server close with code: ${e}`)))
r.addEventListener("error",C)
r.addEventListener("close",({code:e})=>1e3===e?_():C(new Error(`server close with code: ${e}`)))
r.addEventListener("message",({data:e})=>F(e,s))}

@@ -131,4 +132,4 @@ const M=()=>{const e=Object.keys(window)

P.groupInfo=u}else if(s===d){const{id:e,text:t,fileName:o,fileSize:r,fileId:n}=u
t&&T({id:e,text:t})
o&&w({id:e,fileName:o,fileSize:r,fileId:n})}else if(s===p){const{id:e,intent:t}=u
t&&x({id:e,text:t})
o&&T({id:e,fileName:o,fileSize:r,fileId:n})}else if(s===p){const{id:e,intent:t}=u
if("request"===t){const{fileId:t}=u

@@ -142,3 +143,3 @@ const o=P.fileWeakMap.get(a(`#${t}`))

I(t?`Get file: ${o} from ${e}`:`Miss file response from ${e}`)}}}
const L=()=>{if(!P.websocket||P.groupInfo.length<=1||!a("#payload-text"))return
const U=()=>{if(!P.websocket||P.groupInfo.length<=1||!a("#payload-text"))return
const t=a("#payload-text").value.trim()

@@ -152,17 +153,17 @@ const o=a("#payload-file").files[0]

if(n>u)return e(`fill size too big! max: ${m(u)}B, get ${m(n)}B`)
t&&T({id:P.id,text:t,className:"color-self"})
const s=r&&w({isSend:!0,id:P.id,fileName:r,fileSize:n,className:"color-self"})
t&&x({id:P.id,text:t,className:"color-self"})
const s=r&&T({isSend:!0,id:P.id,fileName:r,fileSize:n,className:"color-self"})
P.websocket.send(S(JSON.stringify({type:d,payload:{text:t,fileName:r,fileSize:n,fileId:s&&s.id}})))
r&&P.fileWeakMap.set(s,o)}
a("#button-log-clear").onclick=R
a("#button-log-clear").onclick=w
a("#button-toggle").onclick=$
a("#button-send").onclick=L
const{start:U,addKeyCommand:G}=N({})
a("#button-send").onclick=U
const{start:L,addKeyCommand:G}=O({})
G({checkMap:{ctrlKey:!0,key:"d"},callback:$})
G({checkMap:{ctrlKey:!0,key:"l"},callback:R})
G({checkMap:{ctrlKey:!0,key:"Enter"},callback:L})
G({checkMap:{ctrlKey:!0,key:"l"},callback:w})
G({checkMap:{ctrlKey:!0,key:"Enter"},callback:U})
G({target:a("#group-path"),checkMap:{key:"Enter"},callback:$})
G({target:a("#id"),checkMap:{key:"Enter"},callback:$})
U()
L()
h(document,e=>{const t=a("#payload-file")
t&&(t.files=e)})}

@@ -59,3 +59,5 @@ root=window,factory=function(){return function(t){var e={}

__webpack_require__.d(__webpack_exports__,"a",()=>tryRequire)
const tryRequire=(name="")=>{try{return eval("require")(name)}catch(t){}}},function(t,e){var n
__webpack_require__.d(__webpack_exports__,"b",()=>tryRequireResolve)
const tryRequire=(name="")=>{try{return eval("require")(name)}catch(t){}}
const tryRequireResolve=(name="")=>{try{return eval("require.resolve")(name)}catch(t){}}},function(t,e){var n
n=function(){return this}()

@@ -66,73 +68,74 @@ try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict"

n.r(r)
n.d(r,"assert",()=>lt)
n.d(r,"getEndianness",()=>ut)
n.d(r,"getEnvironment",()=>ht.a)
n.d(r,"getGlobal",()=>ht.b)
n.d(r,"global",()=>ht.c)
n.d(r,"tryRequire",()=>ft.a)
n.d(r,"assert",()=>pt)
n.d(r,"getEndianness",()=>ht)
n.d(r,"getEnvironment",()=>ft.a)
n.d(r,"getGlobal",()=>ft.b)
n.d(r,"global",()=>ft.c)
n.d(r,"tryRequire",()=>yt.a)
n.d(r,"tryRequireResolve",()=>yt.b)
var o={}
n.r(o)
n.d(o,"isEqualArrayBuffer",()=>pt)
n.d(o,"concatArrayBuffer",()=>yt)
n.d(o,"deconcatArrayBuffer",()=>gt)
n.d(o,"fromString",()=>xt)
n.d(o,"toString",()=>wt)
n.d(o,"isEqualArrayBuffer",()=>gt)
n.d(o,"concatArrayBuffer",()=>mt)
n.d(o,"deconcatArrayBuffer",()=>vt)
n.d(o,"fromString",()=>Et)
n.d(o,"toString",()=>bt)
var s={}
n.r(s)
n.d(s,"MAX_PACKET_HEADER_SIZE",()=>bt)
n.d(s,"HEADER_BYTE_SIZE",()=>Et)
n.d(s,"packArrayBufferHeader",()=>Mt)
n.d(s,"parseArrayBufferHeader",()=>St)
n.d(s,"packArrayBufferPacket",()=>Lt)
n.d(s,"parseArrayBufferPacket",()=>Ot)
n.d(s,"packChainArrayBufferPacket",()=>Tt)
n.d(s,"parseChainArrayBufferPacket",()=>kt)
n.d(s,"MAX_PACKET_HEADER_SIZE",()=>At)
n.d(s,"HEADER_BYTE_SIZE",()=>Mt)
n.d(s,"packArrayBufferHeader",()=>Ot)
n.d(s,"parseArrayBufferHeader",()=>Lt)
n.d(s,"packArrayBufferPacket",()=>Tt)
n.d(s,"parseArrayBufferPacket",()=>kt)
n.d(s,"packChainArrayBufferPacket",()=>jt)
n.d(s,"parseChainArrayBufferPacket",()=>Dt)
var a={}
n.r(a)
n.d(a,"createHub",()=>Dt)
n.d(a,"createEventTarget",()=>jt)
n.d(a,"createEventEmitter",()=>Rt)
n.d(a,"createHub",()=>Ct)
n.d(a,"createEventTarget",()=>Pt)
n.d(a,"createEventEmitter",()=>$t)
var c={}
n.r(c)
n.d(c,"createDoublyLinkedList",()=>$t)
n.d(c,"createDoublyLinkedList",()=>_t)
n.d(c,"createNode",()=>Bt)
var i={}
n.r(i)
n.d(i,"createCache",()=>Pt)
n.d(i,"createCache",()=>Nt)
n.d(i,"createCacheMap",()=>Ft)
var d={}
n.r(d)
n.d(d,"createListMap",()=>Nt)
n.d(d,"createListMap",()=>It)
var u={}
n.r(u)
n.d(u,"rethrowError",()=>It)
n.d(u,"tryCall",()=>_t)
n.d(u,"catchSync",()=>zt)
n.d(u,"catchAsync",()=>Ut)
n.d(u,"rethrowError",()=>zt)
n.d(u,"tryCall",()=>Ut)
n.d(u,"catchSync",()=>qt)
n.d(u,"catchAsync",()=>Kt)
var l={}
n.r(l)
n.d(l,"createSaveQueue",()=>Qt)
n.d(l,"createSaveQueue",()=>Vt)
var h={}
n.r(h)
n.d(h,"createSetMap",()=>Vt)
n.d(h,"getInvertSetMap",()=>Kt)
n.d(h,"createSetMap",()=>Ht)
n.d(h,"getInvertSetMap",()=>Gt)
var p={}
n.r(p)
n.d(p,"createToggle",()=>Yt)
var f={}
n.r(f)
n.d(f,"createToggle",()=>Ht)
var p={}
n.r(p)
n.d(p,"createTreeDepthFirstSearch",()=>Gt)
n.d(p,"createTreeDepthFirstSearchAsync",()=>Yt)
n.d(p,"createTreeBreadthFirstSearch",()=>Jt)
n.d(p,"createTreeBreadthFirstSearchAsync",()=>Wt)
n.d(p,"createTreeBottomUpSearch",()=>Xt)
n.d(p,"createTreeBottomUpSearchAsync",()=>Zt)
n.d(p,"prettyStringifyTree",()=>te)
n.d(f,"createTreeDepthFirstSearch",()=>Wt)
n.d(f,"createTreeDepthFirstSearchAsync",()=>Jt)
n.d(f,"createTreeBreadthFirstSearch",()=>Xt)
n.d(f,"createTreeBreadthFirstSearchAsync",()=>Zt)
n.d(f,"createTreeBottomUpSearch",()=>te)
n.d(f,"createTreeBottomUpSearchAsync",()=>ee)
n.d(f,"prettyStringifyTree",()=>ne)
var y={}
n.r(y)
n.d(y,"getValueByKeyList",()=>se)
n.d(y,"hashStringToNumber",()=>ee)
n.d(y,"reverseString",()=>ne)
n.d(y,"swapObfuscateString",()=>re)
n.d(y,"tryParseJSONObject",()=>oe)
n.d(y,"getValueByKeyList",()=>ce)
n.d(y,"hashStringToNumber",()=>re)
n.d(y,"reverseString",()=>oe)
n.d(y,"swapObfuscateString",()=>se)
n.d(y,"tryParseJSONObject",()=>ae)
n.d(y,"ArrayBuffer",()=>o)

@@ -145,72 +148,72 @@ n.d(y,"ArrayBufferPacket",()=>s)

n.d(y,"SetMap",()=>h)
n.d(y,"Toggle",()=>f)
n.d(y,"Tree",()=>p)
n.d(y,"Toggle",()=>p)
n.d(y,"Tree",()=>f)
var g={}
n.r(g)
n.d(g,"fromEmpty",()=>ae)
n.d(g,"fromPoint",()=>ce)
n.d(g,"fromWidget",()=>ie)
n.d(g,"fromWidgetList",()=>de)
n.d(g,"getCenter",()=>ue)
n.d(g,"getUnion",()=>le)
n.d(g,"isIntersect",()=>he)
n.d(g,"isContainPoint",()=>fe)
n.d(g,"fromEmpty",()=>ie)
n.d(g,"fromPoint",()=>de)
n.d(g,"fromWidget",()=>ue)
n.d(g,"fromWidgetList",()=>le)
n.d(g,"getCenter",()=>he)
n.d(g,"getUnion",()=>pe)
n.d(g,"isIntersect",()=>fe)
n.d(g,"isContainPoint",()=>ye)
var m={}
n.r(m)
n.d(m,"fromWidget",()=>pe)
n.d(m,"fromWidget",()=>ge)
var v={}
n.r(v)
n.d(v,"fromOrigin",()=>ge)
n.d(v,"fromAngleLength",()=>me)
n.d(v,"getLength",()=>ve)
n.d(v,"getLengthSq",()=>we)
n.d(v,"getDist",()=>xe)
n.d(v,"getDistSq",()=>be)
n.d(v,"getAngle",()=>Ee)
n.d(v,"getRotate",()=>Ae)
n.d(v,"getRotateDelta",()=>Me)
n.d(v,"getDotProduct",()=>Se)
n.d(v,"add",()=>Le)
n.d(v,"sub",()=>Oe)
n.d(v,"multiply",()=>Te)
n.d(v,"divide",()=>ke)
n.d(v,"scale",()=>De)
n.d(v,"project",()=>Ce)
n.d(v,"min",()=>je)
n.d(v,"max",()=>Re)
n.d(v,"clamp",()=>$e)
n.d(v,"fromOrigin",()=>ve)
n.d(v,"fromAngleLength",()=>we)
n.d(v,"getLength",()=>xe)
n.d(v,"getLengthSq",()=>be)
n.d(v,"getDist",()=>Ee)
n.d(v,"getDistSq",()=>Ae)
n.d(v,"getAngle",()=>Me)
n.d(v,"getRotate",()=>Se)
n.d(v,"getRotateDelta",()=>Oe)
n.d(v,"getDotProduct",()=>Le)
n.d(v,"add",()=>Te)
n.d(v,"sub",()=>ke)
n.d(v,"multiply",()=>je)
n.d(v,"divide",()=>De)
n.d(v,"scale",()=>Ce)
n.d(v,"project",()=>Re)
n.d(v,"min",()=>Pe)
n.d(v,"max",()=>$e)
n.d(v,"clamp",()=>_e)
n.d(v,"abs",()=>Be)
n.d(v,"round",()=>Pe)
n.d(v,"round",()=>Ne)
n.d(v,"lerp",()=>Fe)
n.d(v,"isZero",()=>Ne)
n.d(v,"isZero",()=>Ie)
var w={}
n.r(w)
n.d(w,"fromEmpty",()=>Ie)
n.d(w,"fromPoint",()=>_e)
n.d(w,"fromBoundingRect",()=>ze)
n.d(w,"getCenter",()=>Ue)
n.d(w,"getSize",()=>qe)
n.d(w,"getUnion",()=>Qe)
n.d(w,"getUnionOfList",()=>Ve)
n.d(w,"isEmpty",()=>Ke)
n.d(w,"isIntersect",()=>He)
n.d(w,"isContain",()=>Ge)
n.d(w,"isContainPoint",()=>Ye)
n.d(w,"fromEmpty",()=>ze)
n.d(w,"fromPoint",()=>Ue)
n.d(w,"fromBoundingRect",()=>qe)
n.d(w,"getCenter",()=>Ke)
n.d(w,"getSize",()=>Qe)
n.d(w,"getUnion",()=>Ve)
n.d(w,"getUnionOfList",()=>He)
n.d(w,"isEmpty",()=>Ge)
n.d(w,"isIntersect",()=>Ye)
n.d(w,"isContain",()=>We)
n.d(w,"isContainPoint",()=>Je)
var x={}
n.r(x)
n.d(x,"fromPoint",()=>rn)
n.d(x,"fromLine",()=>on)
n.d(x,"fromBoundingRect",()=>sn)
n.d(x,"getBoundingSize",()=>an)
n.d(x,"getBoundingWidth",()=>cn)
n.d(x,"getBoundingHeight",()=>dn)
n.d(x,"getBoundingLeft",()=>un)
n.d(x,"getBoundingRight",()=>ln)
n.d(x,"getBoundingTop",()=>hn)
n.d(x,"getBoundingBottom",()=>fn)
n.d(x,"round",()=>pn)
n.d(x,"localPoint",()=>yn)
n.d(x,"localBoundingRect",()=>gn)
n.d(x,"isContainBoundingRect",()=>mn)
n.d(x,"isInterceptBoundingRect",()=>vn)
n.d(x,"fromPoint",()=>sn)
n.d(x,"fromLine",()=>an)
n.d(x,"fromBoundingRect",()=>cn)
n.d(x,"getBoundingSize",()=>dn)
n.d(x,"getBoundingWidth",()=>un)
n.d(x,"getBoundingHeight",()=>ln)
n.d(x,"getBoundingLeft",()=>hn)
n.d(x,"getBoundingRight",()=>pn)
n.d(x,"getBoundingTop",()=>fn)
n.d(x,"getBoundingBottom",()=>yn)
n.d(x,"round",()=>gn)
n.d(x,"localPoint",()=>mn)
n.d(x,"localBoundingRect",()=>vn)
n.d(x,"isContainBoundingRect",()=>wn)
n.d(x,"isInterceptBoundingRect",()=>xn)
var b={}

@@ -225,6 +228,6 @@ n.r(b)

n.r(E)
n.d(E,"DEGREE_TO_RADIAN",()=>wn)
n.d(E,"RADIAN_TO_DEGREE",()=>xn)
n.d(E,"fromDegree",()=>bn)
n.d(E,"getDegree",()=>En)
n.d(E,"DEGREE_TO_RADIAN",()=>bn)
n.d(E,"RADIAN_TO_DEGREE",()=>En)
n.d(E,"fromDegree",()=>An)
n.d(E,"getDegree",()=>Mn)
var A={}

@@ -236,340 +239,350 @@ n.r(A)

n.r(M)
n.d(M,"arraySet",()=>An)
n.d(M,"arrayDelete",()=>Mn)
n.d(M,"arrayInsert",()=>Sn)
n.d(M,"arrayMove",()=>Ln)
n.d(M,"arrayPush",()=>On)
n.d(M,"arrayUnshift",()=>Tn)
n.d(M,"arrayPop",()=>kn)
n.d(M,"arrayShift",()=>Dn)
n.d(M,"arrayConcat",()=>Cn)
n.d(M,"arrayMatchDelete",()=>Rn)
n.d(M,"arrayMatchPush",()=>jn)
n.d(M,"arrayMatchMove",()=>$n)
n.d(M,"arraySet",()=>Sn)
n.d(M,"arrayDelete",()=>On)
n.d(M,"arrayInsert",()=>Ln)
n.d(M,"arrayMove",()=>Tn)
n.d(M,"arrayPush",()=>kn)
n.d(M,"arrayUnshift",()=>jn)
n.d(M,"arrayPop",()=>Dn)
n.d(M,"arrayShift",()=>Cn)
n.d(M,"arrayConcat",()=>Rn)
n.d(M,"arrayMatchDelete",()=>$n)
n.d(M,"arrayMatchPush",()=>Pn)
n.d(M,"arrayMatchMove",()=>_n)
n.d(M,"arrayFindDelete",()=>Bn)
n.d(M,"arrayFindMove",()=>Pn)
n.d(M,"arrayFindMove",()=>Nn)
n.d(M,"arrayFindSet",()=>Fn)
n.d(M,"arrayFindSetOrPush",()=>Nn)
n.d(M,"arrayFindOrPush",()=>In)
n.d(M,"arraySplitChunk",()=>_n)
n.d(M,"arrayFindSetOrPush",()=>In)
n.d(M,"arrayFindOrPush",()=>zn)
n.d(M,"arraySplitChunk",()=>Un)
var S={}
n.r(S)
n.d(S,"objectSet",()=>zn)
n.d(S,"objectDelete",()=>Un)
n.d(S,"objectMerge",()=>qn)
n.d(S,"objectMap",()=>Qn)
n.d(S,"objectPickKey",()=>Vn)
n.d(S,"objectFindKey",()=>Kn)
n.d(S,"objectDeleteUndefined",()=>Hn)
n.d(S,"objectSet",()=>qn)
n.d(S,"objectDelete",()=>Kn)
n.d(S,"objectMerge",()=>Qn)
n.d(S,"objectMap",()=>Vn)
n.d(S,"objectPickKey",()=>Hn)
n.d(S,"objectFindKey",()=>Gn)
n.d(S,"objectDeleteUndefined",()=>Yn)
var O={}
n.r(O)
n.d(O,"isString",()=>Wn)
n.d(O,"isBoolean",()=>Jn)
n.d(O,"isNumber",()=>Xn)
n.d(O,"isInteger",()=>Zn)
n.d(O,"isObjectAlike",()=>tr)
n.d(O,"isBasicObject",()=>er)
n.d(O,"isObjectKey",()=>nr)
n.d(O,"isObjectContain",()=>rr)
n.d(O,"isBasicArray",()=>or)
n.d(O,"isArrayLength",()=>sr)
n.d(O,"isBasicFunction",()=>ar)
n.d(O,"isPromiseAlike",()=>cr)
n.d(O,"isOneOf",()=>ir)
n.d(O,"isFunctionThrow",()=>dr)
n.d(O,"isFunctionThrowAsync",()=>ur)
n.d(O,"isStrictEqual",()=>lr)
n.d(O,"isStringifyEqual",()=>hr)
var L={}
n.r(L)
n.d(L,"isString",()=>Gn)
n.d(L,"isBoolean",()=>Yn)
n.d(L,"isNumber",()=>Jn)
n.d(L,"isInteger",()=>Wn)
n.d(L,"isObjectAlike",()=>Xn)
n.d(L,"isBasicObject",()=>Zn)
n.d(L,"isObjectKey",()=>tr)
n.d(L,"isObjectContain",()=>er)
n.d(L,"isBasicArray",()=>nr)
n.d(L,"isArrayLength",()=>rr)
n.d(L,"isBasicFunction",()=>or)
n.d(L,"isPromiseAlike",()=>sr)
n.d(L,"isOneOf",()=>ar)
n.d(L,"isFunctionThrow",()=>cr)
n.d(L,"isFunctionThrowAsync",()=>ir)
n.d(L,"isStrictEqual",()=>dr)
n.d(L,"isStringifyEqual",()=>ur)
var O={}
n.r(O)
n.d(O,"describe",()=>lr)
n.d(O,"percent",()=>hr)
n.d(O,"mediaTime",()=>pr)
n.d(O,"decimal",()=>yr)
n.d(O,"time",()=>gr)
n.d(O,"binary",()=>mr)
n.d(O,"padTable",()=>vr)
n.d(O,"prettyStringifyJSON",()=>xr)
n.d(L,"describe",()=>pr)
n.d(L,"percent",()=>fr)
n.d(L,"mediaTime",()=>gr)
n.d(L,"decimal",()=>mr)
n.d(L,"time",()=>vr)
n.d(L,"binary",()=>wr)
n.d(L,"padTable",()=>xr)
n.d(L,"prettyStringifyJSON",()=>Er)
var T={}
n.r(T)
n.d(T,"string",()=>Ar)
n.d(T,"boolean",()=>Mr)
n.d(T,"number",()=>Sr)
n.d(T,"integer",()=>Lr)
n.d(T,"objectAlike",()=>Or)
n.d(T,"basicObject",()=>Tr)
n.d(T,"objectKey",()=>kr)
n.d(T,"objectContain",()=>Dr)
n.d(T,"basicArray",()=>Cr)
n.d(T,"arrayLength",()=>jr)
n.d(T,"basicFunction",()=>Rr)
n.d(T,"promiseAlike",()=>$r)
n.d(T,"string",()=>Sr)
n.d(T,"boolean",()=>Or)
n.d(T,"number",()=>Lr)
n.d(T,"integer",()=>Tr)
n.d(T,"objectAlike",()=>kr)
n.d(T,"basicObject",()=>jr)
n.d(T,"objectKey",()=>Dr)
n.d(T,"objectContain",()=>Cr)
n.d(T,"basicArray",()=>Rr)
n.d(T,"arrayLength",()=>Pr)
n.d(T,"basicFunction",()=>$r)
n.d(T,"promiseAlike",()=>_r)
n.d(T,"oneOf",()=>Br)
n.d(T,"doThrow",()=>Pr)
n.d(T,"doThrow",()=>Nr)
n.d(T,"doNotThrow",()=>Fr)
n.d(T,"doThrowAsync",()=>Nr)
n.d(T,"doNotThrowAsync",()=>Ir)
n.d(T,"strictEqual",()=>zr)
n.d(T,"notStrictEqual",()=>Ur)
n.d(T,"stringifyEqual",()=>qr)
n.d(T,"notStringifyEqual",()=>Qr)
n.d(T,"doThrowAsync",()=>Ir)
n.d(T,"doNotThrowAsync",()=>zr)
n.d(T,"strictEqual",()=>qr)
n.d(T,"notStrictEqual",()=>Kr)
n.d(T,"stringifyEqual",()=>Qr)
n.d(T,"notStringifyEqual",()=>Vr)
var k={}
n.r(k)
n.d(k,"createStateStore",()=>Vr)
n.d(k,"createStateStoreLite",()=>Kr)
n.d(k,"createStateStoreEnhanced",()=>Hr)
n.d(k,"toReduxStore",()=>Gr)
n.d(k,"reducerFromMap",()=>Yr)
n.d(k,"createEntryEnhancer",()=>Jr)
n.d(k,"createStoreStateSyncReducer",()=>Wr)
n.d(k,"createStateStore",()=>Hr)
n.d(k,"createStateStoreLite",()=>Gr)
n.d(k,"createStateStoreEnhanced",()=>Yr)
n.d(k,"toReduxStore",()=>Wr)
n.d(k,"reducerFromMap",()=>Jr)
n.d(k,"createEntryEnhancer",()=>Xr)
n.d(k,"createStoreStateSyncReducer",()=>Zr)
var j={}
n.r(j)
n.d(j,"isArrayShallowEqual",()=>eo)
n.d(j,"isCompactArrayShallowEqual",()=>no)
n.d(j,"isObjectShallowEqual",()=>to)
n.d(j,"transformCache",()=>ro)
n.d(j,"Array",()=>M)
n.d(j,"Object",()=>S)
n.d(j,"StateStore",()=>k)
var D={}
n.r(D)
n.d(D,"isArrayShallowEqual",()=>Zr)
n.d(D,"isCompactArrayShallowEqual",()=>to)
n.d(D,"isObjectShallowEqual",()=>Xr)
n.d(D,"transformCache",()=>eo)
n.d(D,"Array",()=>M)
n.d(D,"Object",()=>S)
n.d(D,"StateStore",()=>k)
n.d(D,"addAbs",()=>Ze)
n.d(D,"clamp",()=>en)
n.d(D,"euclideanModulo",()=>tn)
n.d(D,"lerp",()=>rn)
n.d(D,"roundFloat",()=>Xe)
n.d(D,"smoothstep",()=>nn)
n.d(D,"easeInCirc",()=>So)
n.d(D,"easeInCubic",()=>io)
n.d(D,"easeInExpo",()=>Eo)
n.d(D,"easeInOutCirc",()=>Lo)
n.d(D,"easeInOutCubic",()=>lo)
n.d(D,"easeInOutExpo",()=>Mo)
n.d(D,"easeInOutQuad",()=>co)
n.d(D,"easeInOutQuart",()=>fo)
n.d(D,"easeInOutQuint",()=>mo)
n.d(D,"easeInOutSine",()=>bo)
n.d(D,"easeInQuad",()=>so)
n.d(D,"easeInQuart",()=>ho)
n.d(D,"easeInQuint",()=>yo)
n.d(D,"easeInSine",()=>wo)
n.d(D,"easeOutCirc",()=>Oo)
n.d(D,"easeOutCubic",()=>uo)
n.d(D,"easeOutExpo",()=>Ao)
n.d(D,"easeOutQuad",()=>ao)
n.d(D,"easeOutQuart",()=>po)
n.d(D,"easeOutQuint",()=>go)
n.d(D,"easeOutSine",()=>xo)
n.d(D,"linear",()=>oo)
n.d(D,"getRandomArrayBuffer",()=>To.a)
n.d(D,"getRandomId",()=>To.b)
n.d(D,"getRandomInt",()=>To.c)
n.d(D,"getRandomIntList",()=>To.d)
n.d(D,"getSample",()=>ko)
n.d(D,"getSampleRange",()=>jo)
n.d(D,"getSampleRate",()=>Do)
var C={}
n.r(C)
n.d(C,"addAbs",()=>We)
n.d(C,"clamp",()=>Ze)
n.d(C,"euclideanModulo",()=>Xe)
n.d(C,"lerp",()=>en)
n.d(C,"roundFloat",()=>Je)
n.d(C,"smoothstep",()=>tn)
n.d(C,"easeInCirc",()=>Ao)
n.d(C,"easeInCubic",()=>ao)
n.d(C,"easeInExpo",()=>xo)
n.d(C,"easeInOutCirc",()=>So)
n.d(C,"easeInOutCubic",()=>io)
n.d(C,"easeInOutExpo",()=>Eo)
n.d(C,"easeInOutQuad",()=>so)
n.d(C,"easeInOutQuart",()=>ho)
n.d(C,"easeInOutQuint",()=>yo)
n.d(C,"easeInOutSine",()=>wo)
n.d(C,"easeInQuad",()=>ro)
n.d(C,"easeInQuart",()=>uo)
n.d(C,"easeInQuint",()=>fo)
n.d(C,"easeInSine",()=>mo)
n.d(C,"easeOutCirc",()=>Mo)
n.d(C,"easeOutCubic",()=>co)
n.d(C,"easeOutExpo",()=>bo)
n.d(C,"easeOutQuad",()=>oo)
n.d(C,"easeOutQuart",()=>lo)
n.d(C,"easeOutQuint",()=>po)
n.d(C,"easeOutSine",()=>vo)
n.d(C,"linear",()=>no)
n.d(C,"getRandomArrayBuffer",()=>Lo.a)
n.d(C,"getRandomId",()=>Lo.b)
n.d(C,"getRandomInt",()=>Lo.c)
n.d(C,"getRandomIntList",()=>Lo.d)
n.d(C,"getSample",()=>Oo)
n.d(C,"getSampleRange",()=>To)
n.d(C,"getSampleRate",()=>ko)
var j={}
n.r(j)
n.d(j,"CLOCK_PER_SECOND",()=>Do)
n.d(j,"CLOCK_TO_SECOND",()=>Co)
n.d(j,"clock",()=>jo)
n.d(j,"getTimestamp",()=>Ro)
n.d(j,"setTimeoutAsync",()=>$o)
n.d(j,"requestFrameUpdate",()=>Bo)
n.d(j,"cancelFrameUpdate",()=>Po)
n.d(j,"createTimer",()=>Fo)
n.d(j,"createStepper",()=>No)
n.d(C,"CLOCK_PER_SECOND",()=>Co)
n.d(C,"CLOCK_TO_SECOND",()=>Ro)
n.d(C,"clock",()=>Po)
n.d(C,"getTimestamp",()=>$o)
n.d(C,"setTimeoutAsync",()=>_o)
n.d(C,"requestFrameUpdate",()=>Bo)
n.d(C,"cancelFrameUpdate",()=>No)
n.d(C,"createTimer",()=>Fo)
n.d(C,"createStepper",()=>Io)
var R={}
n.r(R)
n.d(R,"debounce",()=>Io)
n.d(R,"throttle",()=>_o)
n.d(R,"lossyAsync",()=>zo)
n.d(R,"withDelayArgvQueue",()=>Uo)
n.d(R,"withRepeat",()=>qo)
n.d(R,"withRepeatAsync",()=>Qo)
n.d(R,"withRetry",()=>Vo)
n.d(R,"withRetryAsync",()=>Ko)
n.d(R,"withTimeoutAsync",()=>Ho)
n.d(R,"withTimeoutPromise",()=>Go)
n.d(R,"createInsideOutPromise",()=>Yo)
n.d(R,"debounce",()=>zo)
n.d(R,"throttle",()=>Uo)
n.d(R,"lossyAsync",()=>qo)
n.d(R,"withDelayArgvQueue",()=>Ko)
n.d(R,"withRepeat",()=>Qo)
n.d(R,"withRepeatAsync",()=>Vo)
n.d(R,"withRetry",()=>Ho)
n.d(R,"withRetryAsync",()=>Go)
n.d(R,"withTimeoutAsync",()=>Yo)
n.d(R,"withTimeoutPromise",()=>Wo)
n.d(R,"createInsideOutPromise",()=>Jo)
var P={}
n.r(P)
n.d(P,"createAsyncTaskQueue",()=>Zo)
var $={}
n.r($)
n.d($,"createAsyncTaskQueue",()=>Wo)
n.d($,"createAsyncTaskLane",()=>ts)
n.d($,"selectMinLoadLane",()=>es)
var _={}
n.r(_)
n.d(_,"createAsyncTaskRunner",()=>ns)
n.d(_,"createAsyncTaskRunnerCluster",()=>rs)
n.d(_,"selectMinLoadRunner",()=>os)
var B={}
n.r(B)
n.d(B,"createAsyncTaskLane",()=>Xo)
n.d(B,"selectMinLoadLane",()=>Zo)
var P={}
n.r(P)
n.d(P,"createAsyncTaskRunner",()=>ts)
n.d(P,"createAsyncTaskRunnerCluster",()=>es)
n.d(P,"selectMinLoadRunner",()=>ns)
n.d(B,"getBlockBar",()=>cs)
n.d(B,"getBlockChart",()=>is)
var N={}
n.r(N)
n.d(N,"concatKeyFrag",()=>ds)
n.d(N,"reduceKeySelector",()=>us)
n.d(N,"createMultiKeySwitch",()=>ls)
var F={}
n.r(F)
n.d(F,"getBlockBar",()=>ss)
n.d(F,"getBlockChart",()=>as)
var N={}
n.r(N)
n.d(N,"concatKeyFrag",()=>cs)
n.d(N,"reduceKeySelector",()=>is)
n.d(N,"createMultiKeySwitch",()=>ds)
n.d(F,"compareString",()=>hs)
n.d(F,"compareStringLocale",()=>ps)
n.d(F,"compareStringWithNumber",()=>fs)
var I={}
n.r(I)
n.d(I,"getLevenshteinDistance",()=>hs)
var _={}
n.r(_)
n.d(_,"DEFAULT_MIME",()=>fs)
n.d(_,"BASIC_EXTENSION_MAP",()=>ps)
n.d(_,"getMIMETypeFromFileName",()=>gs)
n.d(I,"createKeyTree",()=>vs)
var z={}
n.r(z)
n.d(z,"parseRouteToMap",()=>vs)
n.d(z,"findRouteFromMap",()=>ws)
n.d(z,"appendRouteMap",()=>xs)
n.d(z,"createRouteMap",()=>bs)
n.d(z,"parseRouteUrl",()=>Es)
n.d(z,"getRouteParamAny",()=>As)
n.d(z,"getRouteParam",()=>Ms)
n.d(z,"getLevenshteinDistance",()=>bs)
var U={}
n.r(U)
n.d(U,"compareString",()=>Ss)
n.d(U,"compareStringLocale",()=>Ls)
n.d(U,"compareStringWithNumber",()=>Os)
n.d(U,"DEFAULT_MIME",()=>Es)
n.d(U,"BASIC_EXTENSION_MAP",()=>As)
n.d(U,"getMIMETypeFromFileName",()=>Ss)
var q={}
n.r(q)
n.d(q,"parseSemVer",()=>Cs)
n.d(q,"compareSemVer",()=>js)
n.d(q,"createPatchKit",()=>Os)
n.d(q,"toObjectPatchKit",()=>Ls)
n.d(q,"toArrayWithKeyPatchKit",()=>Ts)
var K={}
n.r(K)
n.d(K,"parseRouteToMap",()=>js)
n.d(K,"findRouteFromMap",()=>Ds)
n.d(K,"appendRouteMap",()=>Cs)
n.d(K,"createRouteMap",()=>Rs)
n.d(K,"parseRouteUrl",()=>Ps)
n.d(K,"getRouteParamAny",()=>$s)
n.d(K,"getRouteParam",()=>_s)
var Q={}
n.r(Q)
n.d(Q,"verifyOption",()=>Ps)
n.d(Q,"verifyCheckCode",()=>Fs)
n.d(Q,"verifyParsedCheckCode",()=>Ns)
n.d(Q,"generateLookupData",()=>Is)
n.d(Q,"generateCheckCode",()=>_s)
n.d(Q,"packCheckCode",()=>zs)
n.d(Q,"parseCheckCode",()=>Us)
n.d(Q,"packDataArrayBuffer",()=>qs)
n.d(Q,"parseDataArrayBuffer",()=>Qs)
n.d(Q,"parseSemVer",()=>Ns)
n.d(Q,"compareSemVer",()=>Fs)
var V={}
n.r(V)
n.d(V,"createUpdater",()=>Vs)
n.d(V,"createUpdateLoop",()=>Ks)
var K={}
n.r(K)
n.d(K,"AsyncTaskLane",()=>B)
n.d(K,"AsyncTaskQueue",()=>$)
n.d(K,"AsyncTaskRunner",()=>P)
n.d(K,"BlockChart",()=>F)
n.d(K,"Event",()=>a)
n.d(K,"KeySelector",()=>N)
n.d(K,"LevenshteinDistance",()=>I)
n.d(K,"MIME",()=>_)
n.d(K,"RouteMap",()=>z)
n.d(K,"SemVer",()=>q)
n.d(K,"TimedLookup",()=>Q)
n.d(K,"UpdateLoop",()=>V)
n.d(V,"verifyOption",()=>qs)
n.d(V,"verifyCheckCode",()=>Ks)
n.d(V,"verifyParsedCheckCode",()=>Qs)
n.d(V,"generateLookupData",()=>Vs)
n.d(V,"generateCheckCode",()=>Hs)
n.d(V,"packCheckCode",()=>Gs)
n.d(V,"parseCheckCode",()=>Ys)
n.d(V,"packDataArrayBuffer",()=>Ws)
n.d(V,"parseDataArrayBuffer",()=>Js)
var H={}
n.r(H)
n.d(H,"objectMergeDeep",()=>Hs)
n.d(H,"objectSortKey",()=>Gs)
n.d(H,"createUpdater",()=>Xs)
n.d(H,"createUpdateLoop",()=>Zs)
var G={}
n.r(G)
n.d(G,"Object",()=>H)
n.d(G,"AsyncTaskLane",()=>$)
n.d(G,"AsyncTaskQueue",()=>P)
n.d(G,"AsyncTaskRunner",()=>_)
n.d(G,"BlockChart",()=>B)
n.d(G,"Event",()=>a)
n.d(G,"KeySelector",()=>N)
n.d(G,"KeyTree",()=>I)
n.d(G,"LevenshteinDistance",()=>z)
n.d(G,"MIME",()=>U)
n.d(G,"Patch",()=>q)
n.d(G,"RouteMap",()=>K)
n.d(G,"SemVer",()=>Q)
n.d(G,"TimedLookup",()=>V)
n.d(G,"UpdateLoop",()=>H)
var Y={}
n.r(Y)
n.d(Y,"indentLine",()=>Js)
n.d(Y,"indentList",()=>Ws)
n.d(Y,"autoEllipsis",()=>Xs)
n.d(Y,"splitCamelCase",()=>ea)
n.d(Y,"joinCamelCase",()=>oa)
n.d(Y,"splitSnakeCase",()=>na)
n.d(Y,"joinSnakeCase",()=>sa)
n.d(Y,"splitKebabCase",()=>ra)
n.d(Y,"joinKebabCase",()=>aa)
n.d(Y,"escapeHTML",()=>la)
n.d(Y,"unescapeHTML",()=>ya)
n.d(Y,"removeInvalidCharXML",()=>ma)
n.d(Y,"objectMergeDeep",()=>ta)
n.d(Y,"objectSortKey",()=>ea)
var W={}
n.r(W)
n.d(W,"Object",()=>Y)
var J={}
n.r(J)
n.d(J,"Data",()=>y)
n.d(J,"Geometry",()=>A)
n.d(J,"Immutable",()=>D)
n.d(J,"Math",()=>C)
n.d(J,"Module",()=>K)
n.d(J,"Mutable",()=>G)
n.d(J,"Check",()=>L)
n.d(J,"Compare",()=>U)
n.d(J,"Error",()=>u)
n.d(J,"Format",()=>O)
n.d(J,"Function",()=>R)
n.d(J,"String",()=>Y)
n.d(J,"Time",()=>j)
n.d(J,"Verify",()=>T)
var W={}
n.r(W)
n.d(W,"Blob",()=>va)
n.d(W,"parseBlobAsText",()=>ba)
n.d(W,"parseBlobAsDataURL",()=>Ea)
n.d(W,"parseBlobAsArrayBuffer",()=>Aa)
n.d(J,"indentLine",()=>ra)
n.d(J,"indentList",()=>oa)
n.d(J,"autoEllipsis",()=>sa)
n.d(J,"splitCamelCase",()=>ia)
n.d(J,"joinCamelCase",()=>la)
n.d(J,"splitSnakeCase",()=>da)
n.d(J,"joinSnakeCase",()=>ha)
n.d(J,"splitKebabCase",()=>ua)
n.d(J,"joinKebabCase",()=>pa)
n.d(J,"escapeHTML",()=>va)
n.d(J,"unescapeHTML",()=>Ea)
n.d(J,"removeInvalidCharXML",()=>Ma)
var X={}
n.r(X)
n.d(X,"packBlobPacket",()=>Sa)
n.d(X,"parseBlobPacket",()=>La)
n.d(X,"Data",()=>y)
n.d(X,"Geometry",()=>A)
n.d(X,"Immutable",()=>j)
n.d(X,"Math",()=>D)
n.d(X,"Module",()=>G)
n.d(X,"Mutable",()=>W)
n.d(X,"Check",()=>O)
n.d(X,"Compare",()=>F)
n.d(X,"Error",()=>u)
n.d(X,"Format",()=>L)
n.d(X,"Function",()=>R)
n.d(X,"String",()=>J)
n.d(X,"Time",()=>C)
n.d(X,"Verify",()=>T)
var Z={}
n.r(Z)
n.d(Z,"Blob",()=>W)
n.d(Z,"BlobPacket",()=>X)
n.d(Z,"Blob",()=>Sa)
n.d(Z,"parseBlobAsText",()=>Ta)
n.d(Z,"parseBlobAsDataURL",()=>ka)
n.d(Z,"parseBlobAsArrayBuffer",()=>ja)
var tt={}
n.r(tt)
n.d(tt,"createKeyCommandHub",()=>Oa)
n.d(tt,"packBlobPacket",()=>Ca)
n.d(tt,"parseBlobPacket",()=>Ra)
var et={}
n.r(et)
n.d(et,"POINTER_EVENT_TYPE",()=>Ta)
n.d(et,"applyPointerEventListener",()=>ka)
n.d(et,"ENHANCED_POINTER_EVENT_TYPE",()=>Da)
n.d(et,"applyEnhancedPointerEventListener",()=>Ca)
n.d(et,"Blob",()=>Z)
n.d(et,"BlobPacket",()=>tt)
var nt={}
n.r(nt)
n.d(nt,"KeyCommand",()=>tt)
n.d(nt,"PointerEvent",()=>et)
n.d(nt,"createKeyCommandHub",()=>Pa)
var rt={}
n.r(rt)
n.d(rt,"createHistoryStateStore",()=>ja)
n.d(rt,"POINTER_EVENT_TYPE",()=>$a)
n.d(rt,"applyPointerEventListener",()=>_a)
n.d(rt,"ENHANCED_POINTER_EVENT_TYPE",()=>Ba)
n.d(rt,"applyEnhancedPointerEventListener",()=>Na)
var ot={}
n.r(ot)
n.d(ot,"createSyncStateStorage",()=>Ra)
n.d(ot,"KeyCommand",()=>nt)
n.d(ot,"PointerEvent",()=>rt)
var st={}
n.r(st)
n.d(st,"HistoryStateStore",()=>rt)
n.d(st,"StateStorage",()=>ot)
n.d(st,"createHistoryStateStore",()=>Fa)
var at={}
n.r(at)
n.d(at,"throttleByAnimationFrame",()=>$a)
n.d(at,"applyDragFileListListener",()=>Pa)
n.d(at,"getPathElementList",()=>Fa)
n.d(at,"getElementAtViewport",()=>Na)
n.d(at,"createSyncStateStorage",()=>Ia)
var ct={}
n.r(ct)
n.d(ct,"fetchLikeRequest",()=>qa)
n.d(ct,"HistoryStateStore",()=>st)
n.d(ct,"StateStorage",()=>at)
var it={}
n.r(it)
n.d(it,"loadText",()=>nc)
n.d(it,"loadImage",()=>rc)
n.d(it,"loadScript",()=>oc)
n.d(it,"createDownload",()=>sc)
n.d(it,"createDownloadWithBlob",()=>ac)
n.d(it,"createDownloadWithString",()=>cc)
n.d(it,"createDownloadWithObject",()=>ic)
n.d(it,"saveArrayBufferCache",()=>dc)
n.d(it,"loadArrayBufferCache",()=>uc)
n.d(it,"deleteArrayBufferCache",()=>lc)
n.d(it,"throttleByAnimationFrame",()=>za)
n.d(it,"applyDragFileListListener",()=>qa)
n.d(it,"getPathElementList",()=>Ka)
n.d(it,"getElementAtViewport",()=>Qa)
var dt={}
n.r(dt)
n.d(dt,"Data",()=>Z)
n.d(dt,"Input",()=>nt)
n.d(dt,"Module",()=>st)
n.d(dt,"DOM",()=>at)
n.d(dt,"Net",()=>ct)
n.d(dt,"Resource",()=>it)
const ut=()=>{try{const t=new Uint8Array(new ArrayBuffer(2))
n.d(dt,"fetchLikeRequest",()=>Wa)
var ut={}
n.r(ut)
n.d(ut,"loadText",()=>dc)
n.d(ut,"loadImage",()=>uc)
n.d(ut,"loadScript",()=>lc)
n.d(ut,"createDownload",()=>hc)
n.d(ut,"createDownloadWithBlob",()=>pc)
n.d(ut,"createDownloadWithString",()=>fc)
n.d(ut,"createDownloadWithObject",()=>yc)
n.d(ut,"saveArrayBufferCache",()=>gc)
n.d(ut,"loadArrayBufferCache",()=>mc)
n.d(ut,"deleteArrayBufferCache",()=>vc)
var lt={}
n.r(lt)
n.d(lt,"Data",()=>et)
n.d(lt,"Input",()=>ot)
n.d(lt,"Module",()=>ct)
n.d(lt,"DOM",()=>it)
n.d(lt,"Net",()=>dt)
n.d(lt,"Resource",()=>ut)
const ht=()=>{try{const t=new Uint8Array(new ArrayBuffer(2))
const e=new Uint16Array(t.buffer)

@@ -580,7 +593,7 @@ t[0]=161

if(41394===e[0])return"big"}catch(t){console.error("[getEndianness]",t)}return"unknown"}
const lt=(t,...e)=>{if(!t){console.error("[ASSERT]",...e)
const pt=(t,...e)=>{if(!t){console.error("[ASSERT]",...e)
throw new Error(`[ASSERT] ${e.join(", ")}`)}}
var ht=n(0)
var ft=n(2)
const pt=(t,e)=>{if(t===e)return!0
var ft=n(0)
var yt=n(2)
const gt=(t,e)=>{if(t===e)return!0
if(t.byteLength!==e.byteLength)return!1

@@ -591,3 +604,3 @@ const n=new Uint8Array(t)

return!0}
const yt=(t=[])=>{const e=new Uint8Array(t.reduce((t,e)=>t+e.byteLength,0))
const mt=(t=[])=>{const e=new Uint8Array(t.reduce((t,e)=>t+e.byteLength,0))
let n=0

@@ -598,8 +611,8 @@ t.forEach(t=>{const{byteLength:r}=t

return e.buffer}
const gt=(t,e,n=0)=>e.map(e=>{const r=t.slice(n,n+e)
const vt=(t,e,n=0)=>e.map(e=>{const r=t.slice(n,n+e)
n+=e
return r})
const mt=Uint8Array.of(0)
const vt=Uint8Array.of(255,255)
const wt=t=>{const e=yt([t.byteLength%2?mt:vt,t])
const wt=Uint8Array.of(0)
const xt=Uint8Array.of(255,255)
const bt=t=>{const e=mt([t.byteLength%2?wt:xt,t])
const n=new DataView(e)

@@ -609,29 +622,29 @@ const r=[]

return r.join("")}
const xt=(t="")=>{const e=new DataView(new ArrayBuffer(2*t.length))
const Et=(t="")=>{const e=new DataView(new ArrayBuffer(2*t.length))
for(let n=0,r=t.length;n<r;n++)e.setUint16(2*n,t.charCodeAt(n),!1)
return e.buffer.slice(0===e.getUint8(0)?mt.byteLength:vt.byteLength)}
const bt=4294967295
const Et=4
const At=new ArrayBuffer(0)
const Mt=t=>{const e=t.byteLength
if(e>bt)throw new Error(`headerArrayBuffer exceeds max size ${bt}, get: ${e}`)
const n=new DataView(new ArrayBuffer(Et))
return e.buffer.slice(0===e.getUint8(0)?wt.byteLength:xt.byteLength)}
const At=4294967295
const Mt=4
const St=new ArrayBuffer(0)
const Ot=t=>{const e=t.byteLength
if(e>At)throw new Error(`headerArrayBuffer exceeds max size ${At}, get: ${e}`)
const n=new DataView(new ArrayBuffer(Mt))
n.setUint32(0,e,!1)
return[n.buffer,t]}
const St=t=>{const e=new DataView(t.slice(0,Et)).getUint32(0,!1)
return[t.slice(Et,Et+e),Et+e]}
const Lt=(t,e=At)=>yt([...Mt(xt(t)),e])
const Ot=t=>{const[e,n]=St(t)
return[wt(e),t.slice(n)]}
const Tt=(t=[])=>{const e=new DataView(new ArrayBuffer(4*t.length))
const Lt=t=>{const e=new DataView(t.slice(0,Mt)).getUint32(0,!1)
return[t.slice(Mt,Mt+e),Mt+e]}
const Tt=(t,e=St)=>mt([...Ot(Et(t)),e])
const kt=t=>{const[e,n]=Lt(t)
return[bt(e),t.slice(n)]}
const jt=(t=[])=>{const e=new DataView(new ArrayBuffer(4*t.length))
t.forEach(({byteLength:t},n)=>e.setUint32(4*n,t,!1))
return yt([...Mt(e.buffer),...t])}
const kt=t=>{const[e,n]=St(t)
return mt([...Ot(e.buffer),...t])}
const Dt=t=>{const[e,n]=Lt(t)
const r=new DataView(e)
const o=[]
for(let t=0,e=r.byteLength/4;t<e;t++)o.push(r.getUint32(4*t,!1))
return gt(t,o,n)}
const Dt=()=>{const t=new Set
return vt(t,o,n)}
const Ct=()=>{const t=new Set
return{clear:()=>t.clear(),subscribe:e=>{t.add(e)},unsubscribe:e=>{t.delete(e)},send:e=>t.forEach(t=>t(e))}}
const Ct=()=>{const t=new Map
const Rt=()=>{const t=new Map
return{setMap:t,clear:()=>t.clear(),on:(e,n)=>{const r=t.get(e)

@@ -641,9 +654,9 @@ r?r.add(n):t.set(e,new Set([n]))},off:(e,n)=>{const r=t.get(e)

r&&0===r.size&&t.delete(e)}}}
const jt=()=>{const{setMap:t,clear:e,on:n,off:r}=Ct()
const Pt=()=>{const{setMap:t,clear:e,on:n,off:r}=Rt()
return{clear:e,dispatchEvent:e=>{const n=t.get(e.type)
n&&n.forEach(t=>t(e))},addEventListener:n,removeEventListener:r}}
const Rt=()=>{const{setMap:t,clear:e,on:n,off:r}=Ct()
const $t=()=>{const{setMap:t,clear:e,on:n,off:r}=Rt()
return{clear:e,emit:(e,...n)=>{const r=t.get(e)
r&&r.forEach(t=>t(...n))},on:n,off:r,addListener:n,removeListener:r,removeAllListeners:(...e)=>{e.length?e.forEach(e=>t.delete(e)):t.clear()}}}
const $t=()=>{let t,e,n
const _t=()=>{let t,e,n
const r=()=>{t=Bt(null)

@@ -708,7 +721,7 @@ e=Bt(null)

const Bt=(t,e=null,n=null)=>({value:t,prev:e,next:n})
const Pt=(t,e,n,r)=>Object.assign({},Bt(e),{key:t,size:n,expireAt:r})
const Ft=({valueSizeSumMax:t,valueSizeSingleMax:e=Math.max(.05*t,1),eventHub:n=Dt()})=>{const r=Boolean(n)
const Nt=(t,e,n,r)=>Object.assign({},Bt(e),{key:t,size:n,expireAt:r})
const Ft=({valueSizeSumMax:t,valueSizeSingleMax:e=Math.max(.05*t,1),eventHub:n=Ct()})=>{const r=Boolean(n)
const{clear:o,subscribe:s,unsubscribe:a,send:c}=r?n:{}
const i=new Map
const d=$t()
const d=_t()
let u=0

@@ -726,3 +739,3 @@ const l=t=>{i.set(t.key,t)

if(!(o>e)){for(;o+u>t;)h(d.getTail().prev)
l(Pt(n,r,o,s))}},get:(t,e=Date.now())=>{const n=i.get(t)
l(Nt(n,r,o,s))}},get:(t,e=Date.now())=>{const n=i.get(t)
if(n){if(n.expireAt<=e)return h(n)

@@ -737,5 +750,5 @@ d.setFirst(n)

d.forEachReverse(({key:e,value:n,size:r,expireAt:o})=>t.push({key:e,value:n,size:r,expireAt:o}))
return t},parseList:(t,e=Date.now())=>t.forEach(({key:t,value:n,size:r,expireAt:o})=>{const s=Pt(t,n,r,o)
return t},parseList:(t,e=Date.now())=>t.forEach(({key:t,value:n,size:r,expireAt:o})=>{const s=Nt(t,n,r,o)
s.expireAt<=e?h(s):l(s)})}}
const Nt=()=>{const t=new Map
const It=()=>{const t=new Map
return{clear:()=>{t.clear()},add:(e,n)=>{let r=t.get(e)

@@ -751,11 +764,11 @@ if(void 0===r){r=[]

return Boolean(r&&r.includes(n))},hasList:e=>t.has(e),forEach:e=>{t.forEach((t,n)=>t.forEach(t=>e(t,n)))},forEachList:e=>{t.forEach(e)}}}
const It=t=>{console.warn(t)
const zt=t=>{console.warn(t)
throw t}
const _t=(t,e,...n)=>{try{return t[e](...n)}catch(t){}}
const zt=(t,...e)=>{let n,r
const Ut=(t,e,...n)=>{try{return t[e](...n)}catch(t){}}
const qt=(t,...e)=>{let n,r
try{n=t(...e)}catch(t){r=t||new Error}return{result:n,error:r}}
const Ut=async(t,...e)=>{let n,r
const Kt=async(t,...e)=>{let n,r
try{n=await t(...e)}catch(t){r=t||new Error}return{result:n,error:r}}
const qt=()=>{}
const Qt=({onError:t,doSave:e,beforeSave:n=qt,afterSave:r=qt})=>{let o=[]
const Qt=()=>{}
const Vt=({onError:t,doSave:e,beforeSave:n=Qt,afterSave:r=Qt})=>{let o=[]
let s=!1

@@ -768,3 +781,3 @@ let a={}

s=!0
const{error:i}=await Ut(e,t,c)
const{error:i}=await Kt(e,t,c)
s=!1

@@ -774,3 +787,3 @@ a={}

r()})().catch(t)},filter:t=>{o=o.filter(t)},getLength:()=>o.length,getIsSaving:()=>s,getSavingState:()=>a}}
const Vt=()=>{const t=new Map
const Ht=()=>{const t=new Map
const e=(e,n)=>{const r=t.get(e)

@@ -785,5 +798,5 @@ return r&&r.get(n)}

r&&r.forEach(n)}}}
const Kt=(t,e=Vt())=>{t.forEach((t,n)=>e.add(t,n))
const Gt=(t,e=Ht())=>{t.forEach((t,n)=>e.add(t,n))
return e}
const Ht=()=>{const t=new Map
const Yt=()=>{const t=new Map
const e=(e,n)=>{void 0===n&&(n=!t.get(e))

@@ -794,3 +807,3 @@ t.set(e,n)

return e}
const Gt=t=>{const e=(e,n)=>{const r=t(n)
const Wt=t=>{const e=(e,n)=>{const r=t(n)
Array.isArray(r)&&e.unshift(...r)}

@@ -802,3 +815,3 @@ return(t,n)=>{let r

e(o,r)}}}
const Yt=t=>{const e=async(e,n)=>{const r=await t(n)
const Jt=t=>{const e=async(e,n)=>{const r=await t(n)
Array.isArray(r)&&e.unshift(...r)}

@@ -810,3 +823,3 @@ return async(t,n)=>{let r

await e(o,r)}}}
const Jt=t=>{const e=(e,n)=>{const r=t(n)
const Xt=t=>{const e=(e,n)=>{const r=t(n)
Array.isArray(r)&&e.push(...r)}

@@ -818,3 +831,3 @@ return(t,n)=>{let r

e(o,r)}}}
const Wt=t=>{const e=async(e,n)=>{const r=await t(n)
const Zt=t=>{const e=async(e,n)=>{const r=await t(n)
Array.isArray(r)&&e.push(...r)}

@@ -826,3 +839,3 @@ return async(t,n)=>{let r

await e(o,r)}}}
const Xt=t=>{const e=(e,n)=>{const r=t(n)
const te=t=>{const e=(e,n)=>{const r=t(n)
return Boolean(Array.isArray(r)&&e.push([n,r]))}

@@ -835,3 +848,3 @@ return(t,n)=>{const r=[]

if(!e(r,t)&&n(t))return t}}}}
const Zt=t=>{const e=async(e,n)=>{const r=await t(n)
const ee=t=>{const e=async(e,n)=>{const r=await t(n)
return Boolean(Array.isArray(r)&&e.push([n,r]))}

@@ -844,11 +857,11 @@ return async(t,n)=>{const r=[]

if(!await e(r,t)&&await n(t))return t}}}}
const te=(t,e,n)=>{const r=[]
Gt(e)(t,([t,e,o])=>{r.length=e
const ne=(t,e,n)=>{const r=[]
Wt(e)(t,([t,e,o])=>{r.length=e
0!==e&&(r[e-1]=o?"├─ ":"└─ ")
n(r.join(""),t)
0!==e&&(r[e-1]=o?"│ ":" ")})}
const ee=(t="",e=0)=>{for(let n=0,r=t.length;n<r;n++)e=(e<<5)-e+t.charCodeAt(n)>>>0
const re=(t="",e=0)=>{for(let n=0,r=t.length;n<r;n++)e=(e<<5)-e+t.charCodeAt(n)>>>0
return e}
const ne=t=>[...t].reverse().join("")
const re=(t="")=>{const e=t.length
const oe=t=>[...t].reverse().join("")
const se=(t="")=>{const e=t.length
const n=e-1

@@ -861,9 +874,9 @@ const r=Math.floor(.5*e)

o[n-e]=t.charAt(n-r)}return o.join("")}
const oe=(t,e={})=>{try{const e=JSON.parse(t)
const ae=(t,e={})=>{try{const e=JSON.parse(t)
if("object"==typeof e&&null!==e)return e}catch(t){}return e}
const se=(t,e)=>{for(const n of e){if(!t||"object"!=typeof t||!t.hasOwnProperty(n))return
const ce=(t,e)=>{for(const n of e){if(!t||"object"!=typeof t||!t.hasOwnProperty(n))return
t=t[n]}return t}
const ae=()=>({left:1/0,right:-1/0,top:1/0,bottom:-1/0})
const ce=(t,e)=>({left:Math.min(t.x,e.x),right:Math.max(t.x,e.x),top:Math.min(t.y,e.y),bottom:Math.max(t.y,e.y)})
const ie=({center:t,size:e,rotate:n})=>{const r=Math.cos(n)
const ie=()=>({left:1/0,right:-1/0,top:1/0,bottom:-1/0})
const de=(t,e)=>({left:Math.min(t.x,e.x),right:Math.max(t.x,e.x),top:Math.min(t.y,e.y),bottom:Math.max(t.y,e.y)})
const ue=({center:t,size:e,rotate:n})=>{const r=Math.cos(n)
const o=Math.sin(n)

@@ -873,3 +886,3 @@ const s=.5*(Math.abs(e.x*r)+Math.abs(e.y*o))

return{left:t.x-s,right:t.x+s,top:t.y-a,bottom:t.y+a}}
const de=t=>t.reduce((t,{center:e,size:n,rotate:r})=>{const o=Math.cos(r)
const le=t=>t.reduce((t,{center:e,size:n,rotate:r})=>{const o=Math.cos(r)
const s=Math.sin(r)

@@ -882,75 +895,75 @@ const a=.5*(Math.abs(n.x*o)+Math.abs(n.y*s))

t.bottom=Math.max(t.bottom,e.y+c)
return t},ae())
const ue=({left:t,right:e,top:n,bottom:r})=>({x:.5*(t+e),y:.5*(n+r)})
const le=(t,e)=>({left:Math.min(t.left,e.left),right:Math.max(t.right,e.right),top:Math.min(t.top,e.top),bottom:Math.max(t.bottom,e.bottom)})
const he=(t,e)=>!(t.left>e.right||t.right<e.left||t.top>e.bottom||t.bottom<e.top)
const fe=({left:t,right:e,top:n,bottom:r},{x:o,y:s})=>o>=t&&o<=e&&s>=n&&s<=r
const pe=({center:t,size:e,rotate:n})=>{const r=e.y*Math.sin(n)*.5
return t},ie())
const he=({left:t,right:e,top:n,bottom:r})=>({x:.5*(t+e),y:.5*(n+r)})
const pe=(t,e)=>({left:Math.min(t.left,e.left),right:Math.max(t.right,e.right),top:Math.min(t.top,e.top),bottom:Math.max(t.bottom,e.bottom)})
const fe=(t,e)=>!(t.left>e.right||t.right<e.left||t.top>e.bottom||t.bottom<e.top)
const ye=({left:t,right:e,top:n,bottom:r},{x:o,y:s})=>o>=t&&o<=e&&s>=n&&s<=r
const ge=({center:t,size:e,rotate:n})=>{const r=e.y*Math.sin(n)*.5
const o=e.y*Math.cos(n)*-.5
return{begin:{x:t.x+r,y:t.y+o},end:{x:t.x-r,y:t.y-o}}}
const ye=2*Math.PI
const ge=()=>({x:0,y:0})
const me=(t,e)=>({x:e*Math.cos(t),y:e*Math.sin(t)})
const ve=({x:t,y:e})=>Math.sqrt(t*t+e*e)
const we=({x:t,y:e})=>t*t+e*e
const xe=(t,e)=>Math.sqrt(be(t,e))
const be=(t,e)=>{const n=t.x-e.x
const me=2*Math.PI
const ve=()=>({x:0,y:0})
const we=(t,e)=>({x:e*Math.cos(t),y:e*Math.sin(t)})
const xe=({x:t,y:e})=>Math.sqrt(t*t+e*e)
const be=({x:t,y:e})=>t*t+e*e
const Ee=(t,e)=>Math.sqrt(Ae(t,e))
const Ae=(t,e)=>{const n=t.x-e.x
const r=t.y-e.y
return n*n+r*r}
const Ee=({x:t,y:e})=>{const n=Math.atan2(e,t)
return n>=0?n:n+ye}
const Ae=(t,e)=>{const n=Math.atan2(t.y-e.y,t.x-e.x)
return n>=0?n:n+ye}
const Me=(t,e,n)=>{const r=Math.atan2(t.y-n.y,t.x-n.x)-Math.atan2(t.y-e.y,t.x-e.x)
return r>=0?r:r+ye}
const Se=(t,e)=>t.x*e.x+t.y*e.y
const Le=(t,e)=>({x:t.x+e.x,y:t.y+e.y})
const Oe=(t,e)=>({x:t.x-e.x,y:t.y-e.y})
const Te=(t,e)=>({x:t.x*e.x,y:t.y*e.y})
const ke=(t,e)=>({x:t.x/e.x,y:t.y/e.y})
const De=({x:t,y:e},n)=>({x:t*n,y:e*n})
const Ce=(t,e)=>De(e,Se(t,e)/Math.pow(ve(e),2))
const je=(t,e)=>({x:Math.min(t.x,e.x),y:Math.min(t.y,e.y)})
const Re=(t,e)=>({x:Math.max(t.x,e.x),y:Math.max(t.y,e.y)})
const $e=({x:t,y:e},n,r)=>({x:Math.max(Math.min(t,r.x),n.x),y:Math.max(Math.min(e,r.y),n.y)})
const Me=({x:t,y:e})=>{const n=Math.atan2(e,t)
return n>=0?n:n+me}
const Se=(t,e)=>{const n=Math.atan2(t.y-e.y,t.x-e.x)
return n>=0?n:n+me}
const Oe=(t,e,n)=>{const r=Math.atan2(t.y-n.y,t.x-n.x)-Math.atan2(t.y-e.y,t.x-e.x)
return r>=0?r:r+me}
const Le=(t,e)=>t.x*e.x+t.y*e.y
const Te=(t,e)=>({x:t.x+e.x,y:t.y+e.y})
const ke=(t,e)=>({x:t.x-e.x,y:t.y-e.y})
const je=(t,e)=>({x:t.x*e.x,y:t.y*e.y})
const De=(t,e)=>({x:t.x/e.x,y:t.y/e.y})
const Ce=({x:t,y:e},n)=>({x:t*n,y:e*n})
const Re=(t,e)=>Ce(e,Le(t,e)/Math.pow(xe(e),2))
const Pe=(t,e)=>({x:Math.min(t.x,e.x),y:Math.min(t.y,e.y)})
const $e=(t,e)=>({x:Math.max(t.x,e.x),y:Math.max(t.y,e.y)})
const _e=({x:t,y:e},n,r)=>({x:Math.max(Math.min(t,r.x),n.x),y:Math.max(Math.min(e,r.y),n.y)})
const Be=({x:t,y:e})=>({x:Math.abs(t),y:Math.abs(e)})
const Pe=({x:t,y:e})=>({x:Math.round(t),y:Math.round(e)})
const Ne=({x:t,y:e})=>({x:Math.round(t),y:Math.round(e)})
const Fe=(t,e,n)=>({x:t.x+(e.x-t.x)*n,y:t.y+(e.y-t.y)*n})
const Ne=({x:t,y:e})=>0===t&&0===e
const Ie=()=>({min:{x:1/0,y:1/0},max:{x:-1/0,y:-1/0}})
const _e=(t,e)=>({min:je(t,e),max:Re(t,e)})
const ze=({left:t,right:e,top:n,bottom:r})=>({min:{x:t,y:n},max:{x:e,y:r}})
const Ue=({min:t,max:e})=>({x:.5*(t.x+e.x),y:.5*(t.y+e.y)})
const qe=({min:t,max:e})=>({x:e.x-t.x,y:e.y-t.y})
const Qe=(t,e)=>({min:je(t.min,e.min),max:Re(t.max,e.max)})
const Ve=t=>t.reduce((t,{min:e,max:n})=>{t.min.x=Math.min(t.min.x,e.x)
const Ie=({x:t,y:e})=>0===t&&0===e
const ze=()=>({min:{x:1/0,y:1/0},max:{x:-1/0,y:-1/0}})
const Ue=(t,e)=>({min:Pe(t,e),max:$e(t,e)})
const qe=({left:t,right:e,top:n,bottom:r})=>({min:{x:t,y:n},max:{x:e,y:r}})
const Ke=({min:t,max:e})=>({x:.5*(t.x+e.x),y:.5*(t.y+e.y)})
const Qe=({min:t,max:e})=>({x:e.x-t.x,y:e.y-t.y})
const Ve=(t,e)=>({min:Pe(t.min,e.min),max:$e(t.max,e.max)})
const He=t=>t.reduce((t,{min:e,max:n})=>{t.min.x=Math.min(t.min.x,e.x)
t.min.y=Math.min(t.min.y,e.y)
t.max.x=Math.max(t.max.x,n.x)
t.max.y=Math.max(t.max.y,n.y)
return t},Ie())
const Ke=({min:t,max:e})=>e.x<=t.x||e.y<=t.y
const He=(t,e)=>!(t.max.x<e.min.x||t.min.x>e.max.x||t.max.y<e.min.y||t.min.y>e.max.y)
const Ge=(t,e)=>t.min.x<=e.min.x&&t.max.x>=e.max.x&&t.min.y<=e.min.y&&t.max.y>=e.max.y
const Ye=({min:t,max:e},{x:n,y:r})=>n>=t.x&&n<=e.x&&r>=t.y&&r<=e.y
const Je=t=>Math.round(1e4*t)/1e4
const We=(t,e)=>Math.sign(t)*Math.max(0,Math.abs(t)+e)
const Xe=(t,e)=>(t%e+e)%e
const Ze=(t,e,n)=>Math.max(e,Math.min(n,t))
const tn=(t,e,n)=>t<=e?0:t>=n?1:(t=(t-e)/(n-e))*t*(3-2*t)
const en=(t,e,n)=>t+(e-t)*n
const nn=.5*Math.PI
const rn=(t,e,n)=>Object.assign({},n,{center:{x:.5*(t.x+e.x),y:.5*(t.y+e.y)},size:{x:Math.abs(t.x-e.x),y:Math.abs(t.y-e.y)},rotate:0})
const on=({begin:t,end:e},n,r)=>Object.assign({},r,{center:{x:.5*(t.x+e.x),y:.5*(t.y+e.y)},size:{x:n,y:xe(e,t)},rotate:Ae(e,t)-nn})
const sn=({left:t,right:e,top:n,bottom:r},o)=>Object.assign({},o,{center:{x:.5*(t+e),y:.5*(n+r)},size:{x:e-t,y:r-n},rotate:0})
const an=({size:{x:t,y:e},rotate:n})=>{const r=Math.cos(n)
return t},ze())
const Ge=({min:t,max:e})=>e.x<=t.x||e.y<=t.y
const Ye=(t,e)=>!(t.max.x<e.min.x||t.min.x>e.max.x||t.max.y<e.min.y||t.min.y>e.max.y)
const We=(t,e)=>t.min.x<=e.min.x&&t.max.x>=e.max.x&&t.min.y<=e.min.y&&t.max.y>=e.max.y
const Je=({min:t,max:e},{x:n,y:r})=>n>=t.x&&n<=e.x&&r>=t.y&&r<=e.y
const Xe=t=>Math.round(1e4*t)/1e4
const Ze=(t,e)=>Math.sign(t)*Math.max(0,Math.abs(t)+e)
const tn=(t,e)=>(t%e+e)%e
const en=(t,e,n)=>Math.max(e,Math.min(n,t))
const nn=(t,e,n)=>t<=e?0:t>=n?1:(t=(t-e)/(n-e))*t*(3-2*t)
const rn=(t,e,n)=>t+(e-t)*n
const on=.5*Math.PI
const sn=(t,e,n)=>Object.assign({},n,{center:{x:.5*(t.x+e.x),y:.5*(t.y+e.y)},size:{x:Math.abs(t.x-e.x),y:Math.abs(t.y-e.y)},rotate:0})
const an=({begin:t,end:e},n,r)=>Object.assign({},r,{center:{x:.5*(t.x+e.x),y:.5*(t.y+e.y)},size:{x:n,y:Ee(e,t)},rotate:Se(e,t)-on})
const cn=({left:t,right:e,top:n,bottom:r},o)=>Object.assign({},o,{center:{x:.5*(t+e),y:.5*(n+r)},size:{x:e-t,y:r-n},rotate:0})
const dn=({size:{x:t,y:e},rotate:n})=>{const r=Math.cos(n)
const o=Math.sin(n)
return{x:Math.abs(t*r)+Math.abs(e*o),y:Math.abs(t*o)+Math.abs(e*r)}}
const cn=({size:{x:t,y:e},rotate:n})=>Math.abs(t*Math.cos(n))+Math.abs(e*Math.sin(n))
const dn=({size:{x:t,y:e},rotate:n})=>Math.abs(t*Math.sin(n))+Math.abs(e*Math.cos(n))
const un=t=>t.center.x-.5*cn(t)
const ln=t=>t.center.x+.5*cn(t)
const hn=t=>t.center.y-.5*dn(t)
const fn=t=>t.center.y+.5*dn(t)
const pn=t=>Object.assign({},t,{center:Pe(t.center),size:Pe(t.size),rotate:Je(t.rotate)})
const yn=({center:t,rotate:e},{x:n,y:r})=>{const o=n-t.x
const un=({size:{x:t,y:e},rotate:n})=>Math.abs(t*Math.cos(n))+Math.abs(e*Math.sin(n))
const ln=({size:{x:t,y:e},rotate:n})=>Math.abs(t*Math.sin(n))+Math.abs(e*Math.cos(n))
const hn=t=>t.center.x-.5*un(t)
const pn=t=>t.center.x+.5*un(t)
const fn=t=>t.center.y-.5*ln(t)
const yn=t=>t.center.y+.5*ln(t)
const gn=t=>Object.assign({},t,{center:Ne(t.center),size:Ne(t.size),rotate:Xe(t.rotate)})
const mn=({center:t,rotate:e},{x:n,y:r})=>{const o=n-t.x
const s=r-t.y

@@ -960,3 +973,3 @@ const a=Math.cos(-e)

return{x:o*a-s*c,y:o*c+s*a}}
const gn=({center:t,rotate:e},n)=>{const r=n.center.x-t.x
const vn=({center:t,rotate:e},n)=>{const r=n.center.x-t.x
const o=n.center.y-t.y

@@ -971,35 +984,35 @@ const s=n.rotate-e

return{left:i-u,right:i+u,top:d-l,bottom:d+l}}
const mn=({center:t,size:e},n)=>t.x-.5*e.x<=n.left&&t.x+.5*e.x>=n.right&&t.y-.5*e.y<=n.top&&t.y+.5*e.y>=n.bottom
const vn=({center:t,size:e},n)=>!(t.x+.5*e.x<n.left||t.x-.5*e.x>n.right||t.y+.5*e.y<n.top||t.y-.5*e.y>n.bottom)
const wn=Math.PI/180
const xn=180/Math.PI
const bn=t=>t*wn
const En=t=>t*xn
const An=(t,e,n)=>{if(t[e]===n)return t
const wn=({center:t,size:e},n)=>t.x-.5*e.x<=n.left&&t.x+.5*e.x>=n.right&&t.y-.5*e.y<=n.top&&t.y+.5*e.y>=n.bottom
const xn=({center:t,size:e},n)=>!(t.x+.5*e.x<n.left||t.x-.5*e.x>n.right||t.y+.5*e.y<n.top||t.y-.5*e.y>n.bottom)
const bn=Math.PI/180
const En=180/Math.PI
const An=t=>t*bn
const Mn=t=>t*En
const Sn=(t,e,n)=>{if(t[e]===n)return t
const r=[...t]
r[e]=n
return r}
const Mn=(t,e)=>e>=0&&e<=t.length-1?[...t.slice(0,e),...t.slice(e+1)]:t
const Sn=(t,e,n)=>[...t.slice(0,e),n,...t.slice(e)]
const Ln=(t,e,n)=>n===e?t:n<e?[...t.slice(0,n),...t.slice(n+1,e+1),t[n],...t.slice(e+1)]:[...t.slice(0,e),t[n],...t.slice(e,n),...t.slice(n+1)]
const On=(t,e)=>[...t,e]
const Tn=(t,e)=>[e,...t]
const kn=t=>{if(0===t.length)return t
const On=(t,e)=>e>=0&&e<=t.length-1?[...t.slice(0,e),...t.slice(e+1)]:t
const Ln=(t,e,n)=>[...t.slice(0,e),n,...t.slice(e)]
const Tn=(t,e,n)=>n===e?t:n<e?[...t.slice(0,n),...t.slice(n+1,e+1),t[n],...t.slice(e+1)]:[...t.slice(0,e),t[n],...t.slice(e,n),...t.slice(n+1)]
const kn=(t,e)=>[...t,e]
const jn=(t,e)=>[e,...t]
const Dn=t=>{if(0===t.length)return t
const e=[...t]
e.pop()
return e}
const Dn=t=>{if(0===t.length)return t
const Cn=t=>{if(0===t.length)return t
const e=[...t]
e.shift()
return e}
const Cn=(t,e)=>e&&e.length?[...t,...e]:t
const jn=(t,e)=>t.includes(e)?t:[...t,e]
const Rn=(t,e)=>{const n=t.indexOf(e)
const Rn=(t,e)=>e&&e.length?[...t,...e]:t
const Pn=(t,e)=>t.includes(e)?t:[...t,e]
const $n=(t,e)=>{const n=t.indexOf(e)
return~n?[...t.slice(0,n),...t.slice(n+1)]:t}
const $n=(t,e,n)=>{const r=t.indexOf(n)
return~r?Ln(t,e,r):t}
const _n=(t,e,n)=>{const r=t.indexOf(n)
return~r?Tn(t,e,r):t}
const Bn=(t,e)=>{const n=t.findIndex(e)
return~n?[...t.slice(0,n),...t.slice(n+1)]:t}
const Pn=(t,e,n)=>{const r=t.findIndex(e)
return~r?Ln(t,n,r):t}
const Nn=(t,e,n)=>{const r=t.findIndex(e)
return~r?Tn(t,n,r):t}
const Fn=(t,e,n)=>{const r=t.findIndex(e)

@@ -1010,3 +1023,3 @@ if(!~r||t[r]===n)return t

return o}
const Nn=(t,e,n)=>{const r=t.findIndex(e)
const In=(t,e,n)=>{const r=t.findIndex(e)
if(!~r)return[...t,n]

@@ -1017,57 +1030,57 @@ if(t[r]===n)return t

return o}
const In=(t,e,n)=>void 0===t.find(e)?[...t,n]:t
const _n=(t,e)=>{const n=[]
const zn=(t,e,n)=>void 0===t.find(e)?[...t,n]:t
const Un=(t,e)=>{const n=[]
for(let r=0,o=t.length;r<o;r+=e)n.push(t.slice(r,r+e))
return n}
const zn=(t,e,n)=>t[e]!==n?Object.assign({},t,{[e]:n}):t
const Un=(t,e)=>{if(!t.hasOwnProperty(e))return t
const qn=(t,e,n)=>t[e]!==n?Object.assign({},t,{[e]:n}):t
const Kn=(t,e)=>{if(!t.hasOwnProperty(e))return t
const n=Object.assign({},t)
delete n[e]
return n}
const qn=(t,e)=>{for(const[n,r]of Object.entries(e))if(t[n]!==r)return Object.assign({},t,e)
const Qn=(t,e)=>{for(const[n,r]of Object.entries(e))if(t[n]!==r)return Object.assign({},t,e)
return t}
const Qn=(t,e)=>{const n={}
const Vn=(t,e)=>{const n={}
for(const[r,o]of Object.entries(t))n[r]=e(o,r)
return n}
const Vn=(t,e)=>{const n={}
const Hn=(t,e)=>{const n={}
for(const r of e)t.hasOwnProperty(r)&&(n[r]=t[r])
return n}
const Kn=(t,e)=>{const n=Object.entries(t).find(e)
const Gn=(t,e)=>{const n=Object.entries(t).find(e)
return n&&n[0]}
const Hn=t=>{let e
const Yn=t=>{let e
for(const[n,r]of Object.entries(t))if(void 0===r){void 0===e&&(e=Object.assign({},t))
delete e[n]}return e||t}
const Gn=t=>"string"==typeof t
const Yn=t=>"boolean"==typeof t
const Jn=t=>"number"==typeof t
const Wn=Number.isInteger
const Xn=t=>{const e=typeof t
const Wn=t=>"string"==typeof t
const Jn=t=>"boolean"==typeof t
const Xn=t=>"number"==typeof t
const Zn=Number.isInteger
const tr=t=>{const e=typeof t
return"object"===e&&null!==t||"function"===e}
const Zn=t=>"object"==typeof t&&null!==t&&!Array.isArray(t)
const tr=(t,e)=>Zn(t)&&t.hasOwnProperty(e)
const er=(t,e)=>Zn(t)&&Object.entries(e).every(([e,n])=>t[e]===n)
const nr=Array.isArray
const rr=(t,e)=>nr(t)&&t.length===e
const or=t=>"function"==typeof t
const sr=t=>Boolean(t&&"function"==typeof t.then)
const ar=(t,e)=>e.includes(t)
const cr=t=>{try{return t()&&!1}catch(t){return!0}}
const ir=async t=>{try{return await t()&&!1}catch(t){return!0}}
const dr=(t,e)=>Object.is(t,e)
const ur=(t,e)=>!!Object.is(t,e)||!(!Xn(t)||!Xn(e))&&JSON.stringify(t)===JSON.stringify(e)
const lr=t=>{const e=typeof t
const er=t=>"object"==typeof t&&null!==t&&!Array.isArray(t)
const nr=(t,e)=>er(t)&&t.hasOwnProperty(e)
const rr=(t,e)=>er(t)&&Object.entries(e).every(([e,n])=>t[e]===n)
const or=Array.isArray
const sr=(t,e)=>or(t)&&t.length===e
const ar=t=>"function"==typeof t
const cr=t=>Boolean(t&&"function"==typeof t.then)
const ir=(t,e)=>e.includes(t)
const dr=t=>{try{return t()&&!1}catch(t){return!0}}
const ur=async t=>{try{return await t()&&!1}catch(t){return!0}}
const lr=(t,e)=>Object.is(t,e)
const hr=(t,e)=>!!Object.is(t,e)||!(!tr(t)||!tr(e))&&JSON.stringify(t)===JSON.stringify(e)
const pr=t=>{const e=typeof t
let n
if("function"===e)n="()=>{...}"
else try{n=JSON.stringify(t)}catch(t){n="{...}"}return`<${e}> ${n}`}
const hr=t=>`${(100*t).toFixed(2)}%`
const fr=t=>String(Math.floor(t)).padStart(2,"0")
const pr=t=>{const e=Math.abs(t)
return`${t<0?"-":""}${fr(e/60)}:${fr(e%60)}`}
const yr=t=>{const e=.75*Math.abs(t)
const fr=t=>`${(100*t).toFixed(2)}%`
const yr=t=>String(Math.floor(t)).padStart(2,"0")
const gr=t=>{const e=Math.abs(t)
return`${t<0?"-":""}${yr(e/60)}:${yr(e%60)}`}
const mr=t=>{const e=.75*Math.abs(t)
return 0===e?"0":e<1e-9?`${(t/1e-12).toFixed(2)}pico`:e<1e-6?`${(t/1e-9).toFixed(2)}nano`:e<.001?`${(t/1e-6).toFixed(2)}micro`:e<1?`${(t/.001).toFixed(2)}milli`:e<1e3?`${(t/1).toFixed(2)}`:e<1e6?`${(t/1e3).toFixed(2)}kilo`:e<1e9?`${(t/1e6).toFixed(2)}mega`:e<1e12?`${(t/1e9).toFixed(2)}giga`:e<1e15?`${(t/1e12).toFixed(2)}tera`:e<1e18?`${(t/1e15).toFixed(2)}peta`:`${(t/1e18).toFixed(2)}exa`}
const gr=t=>{const e=.75*Math.abs(t)
const vr=t=>{const e=.75*Math.abs(t)
return e<1e3?`${Math.floor(t)}ms`:e<6e4?`${(t/1e3).toFixed(2)}s`:e<36e5?`${(t/6e4).toFixed(2)}m`:e<864e5?`${(t/36e5).toFixed(2)}h`:`${(t/864e5).toFixed(2)}d`}
const mr=t=>{const e=.75*Math.abs(t)
const wr=t=>{const e=.75*Math.abs(t)
return e<1024?`${Math.floor(t)}`:e<1048576?`${(t/1024).toFixed(2)}Ki`:e<1073741824?`${(t/1048576).toFixed(2)}Mi`:e<1099511627776?`${(t/1073741824).toFixed(2)}Gi`:`${(t/1099511627776).toFixed(2)}Ti`}
const vr=({table:t,padFuncList:e=[],cellPad:n=" | ",rowPad:r="\n",widthMaxList:o=t.reduce((t,e)=>{e.forEach((e,n)=>{t[n]=Math.max(String(e).length,t[n]||0)})
const xr=({table:t,padFuncList:e=[],cellPad:n=" | ",rowPad:r="\n",widthMaxList:o=t.reduce((t,e)=>{e.forEach((e,n)=>{t[n]=Math.max(String(e).length,t[n]||0)})
return t},[])})=>t.map(t=>t.map((t,n)=>{const r=String(t)

@@ -1077,3 +1090,3 @@ const s=e[n]

return s&&"L"!==s?"R"===s?r.padStart(a):s(r,a):r.padEnd(a)}).join(n)).join(r)
const wr=(t,e,n,r)=>{if(n>=1&&e){if(Array.isArray(e))return((t,e,n,r)=>{if(0===e.length)return t.push("[]")
const br=(t,e,n,r)=>{if(n>=1&&e){if(Array.isArray(e))return((t,e,n,r)=>{if(0===e.length)return t.push("[]")
t.push("[\n")

@@ -1083,3 +1096,3 @@ const o=n-1

e.forEach(e=>{t.push(s)
wr(t,e,o,s)
br(t,e,o,s)
t.push(",\n")})

@@ -1093,35 +1106,35 @@ t[t.length-1]=`\n${r}]`})(t,e,n,r)

o.forEach(([e,n])=>{t.push(a,JSON.stringify(e),": ")
wr(t,n,s,a)
br(t,n,s,a)
t.push(",\n")})
t[t.length-1]=`\n${r}}`})(t,e,n,r)}t.push(JSON.stringify(e))}
const xr=(t,e=2)=>{const n=[]
wr(n,t,Math.max(e,0)||0,"")
const Er=(t,e=2)=>{const n=[]
br(n,t,Math.max(e,0)||0,"")
return n.join("")}
const br=(t,e,n)=>{throw new Error(`[verify|${t}]${e?` ${e};`:""} ${n||""}`)}
const Er=(t,e)=>(n,r)=>e(n)||br(t,r,`get: ${lr(n)}`)
const Ar=Er("String",Gn)
const Mr=Er("Boolean",Yn)
const Sr=Er("Number",Jn)
const Lr=Er("Integer",Wn)
const Or=Er("ObjectAlike",Xn)
const Tr=Er("BasicObject",Zn)
const kr=(t,e,n)=>tr(t,e)||br("ObjectKey",n,`expect to have key: ${e}`)
const Dr=(t,e,n)=>er(t,e)||br("ObjectContain",n,`expect to contain: ${lr(e)}`)
const Cr=Er("Array",nr)
const jr=(t,e,n)=>rr(t,e)||br("ArrayLength",n,`expect length: ${e}, get: ${nr(t)?t.length:lr(t)}`)
const Rr=Er("Function",or)
const $r=Er("PromiseAlike",sr)
const Br=(t,e,n)=>ar(t,e)||br("OneOf",n,`expect one of: [${e}], get: ${lr(t)}`)
const Pr=(t,e)=>cr(t)||br("DoThrow",e)
const Fr=(t,e)=>cr(t)&&br("DoNotThrow",e)
const Nr=async(t,e)=>await ir(t)||br("DoThrowAsync",e)
const Ir=async(t,e)=>await ir(t)&&br("DoThrowAsync",e)
const _r=(t,e)=>`\nactual: ${lr(t)}\nexpect: ${lr(e)}`
const zr=(t,e,n)=>dr(t,e)||br("StrictEqual",n,_r(t,e))
const Ur=(t,e,n)=>dr(t,e)&&br("NotStrictEqual",n,_r(t,e))
const qr=(t,e,n="should stringify equal")=>ur(t,e)||br("StringifyEqual",n,_r(t,e))
const Qr=(t,e,n="should not stringify equal")=>ur(t,e)&&br("NotStringifyEqual",n,_r(t,e))
const Vr=t=>{Tr(t,"initialState should be basic Object")
const Ar=(t,e,n)=>{throw new Error(`[verify|${t}]${e?` ${e};`:""} ${n||""}`)}
const Mr=(t,e)=>(n,r)=>e(n)||Ar(t,r,`get: ${pr(n)}`)
const Sr=Mr("String",Wn)
const Or=Mr("Boolean",Jn)
const Lr=Mr("Number",Xn)
const Tr=Mr("Integer",Zn)
const kr=Mr("ObjectAlike",tr)
const jr=Mr("BasicObject",er)
const Dr=(t,e,n)=>nr(t,e)||Ar("ObjectKey",n,`expect to have key: ${e}`)
const Cr=(t,e,n)=>rr(t,e)||Ar("ObjectContain",n,`expect to contain: ${pr(e)}`)
const Rr=Mr("Array",or)
const Pr=(t,e,n)=>sr(t,e)||Ar("ArrayLength",n,`expect length: ${e}, get: ${or(t)?t.length:pr(t)}`)
const $r=Mr("Function",ar)
const _r=Mr("PromiseAlike",cr)
const Br=(t,e,n)=>ir(t,e)||Ar("OneOf",n,`expect one of: [${e}], get: ${pr(t)}`)
const Nr=(t,e)=>dr(t)||Ar("DoThrow",e)
const Fr=(t,e)=>dr(t)&&Ar("DoNotThrow",e)
const Ir=async(t,e)=>await ur(t)||Ar("DoThrowAsync",e)
const zr=async(t,e)=>await ur(t)&&Ar("DoThrowAsync",e)
const Ur=(t,e)=>`\nactual: ${pr(t)}\nexpect: ${pr(e)}`
const qr=(t,e,n)=>lr(t,e)||Ar("StrictEqual",n,Ur(t,e))
const Kr=(t,e,n)=>lr(t,e)&&Ar("NotStrictEqual",n,Ur(t,e))
const Qr=(t,e,n="should stringify equal")=>hr(t,e)||Ar("StringifyEqual",n,Ur(t,e))
const Vr=(t,e,n="should not stringify equal")=>hr(t,e)&&Ar("NotStringifyEqual",n,Ur(t,e))
const Hr=t=>{jr(t,"initialState should be basic Object")
let e=[]
return{subscribe:t=>{e=jn(e,t)},unsubscribe:t=>{e=Rn(e,t)},getState:()=>t,setState:n=>{if((n=qn(t,n))===t)return t
return{subscribe:t=>{e=Pn(e,t)},unsubscribe:t=>{e=$n(e,t)},getState:()=>t,setState:n=>{if((n=Qn(t,n))===t)return t
const r=t

@@ -1131,6 +1144,6 @@ t=n

return t}}}
const Kr=t=>({getState:()=>t,setState:e=>t=Object.assign({},t,e)})
const Hr=({initialState:t,enhancer:e,reducer:n})=>{Rr(e,"enhancer function required")
Rr(n,"reducer function required")
const{subscribe:r,unsubscribe:o,getState:s,setState:a}=Vr(t)
const Gr=t=>({getState:()=>t,setState:e=>t=Object.assign({},t,e)})
const Yr=({initialState:t,enhancer:e,reducer:n})=>{$r(e,"enhancer function required")
$r(n,"reducer function required")
const{subscribe:r,unsubscribe:o,getState:s,setState:a}=Hr(t)
let c=null

@@ -1152,8 +1165,8 @@ let i=!1

return{subscribe:r,unsubscribe:o,getState:u,dispatch:l}}
const Gr=t=>{const{subscribe:e,unsubscribe:n}=t
Rr(e,"store.subscribe required")
Rr(n,"store.unsubscribe required")
const Wr=t=>{const{subscribe:e,unsubscribe:n}=t
$r(e,"store.subscribe required")
$r(n,"store.unsubscribe required")
return Object.assign({},t,{subscribe:t=>{e(t)
return()=>n(t)}})}
const Yr=t=>{const e=Object.keys(t)
const Jr=t=>{const e=Object.keys(t)
const n=e.length

@@ -1167,7 +1180,7 @@ return(r,o)=>{const s={}

a=a||d!==i}return a?s:r}}
const Jr=t=>(e,n)=>{const r=t[n.type]
const Xr=t=>(e,n)=>{const r=t[n.type]
return r&&r(e,n)}
const Wr=(t,{getState:e,setState:n})=>(r,{type:o,payload:s})=>{o===t&&n(s)
const Zr=(t,{getState:e,setState:n})=>(r,{type:o,payload:s})=>{o===t&&n(s)
return e()}
const Xr=(t,e)=>{if(t===e)return!0
const to=(t,e)=>{if(t===e)return!0
const n=Object.keys(t)

@@ -1179,51 +1192,51 @@ const r=Object.keys(e)

if(!e.hasOwnProperty(s)||t[s]!==e[a])return!1}return!0}
const Zr=(t,e)=>t===e||t.length===e.length&&t.every((t,n)=>t===e[n])
const to=(t,e)=>{if(t===e)return!0
const eo=(t,e)=>t===e||t.length===e.length&&t.every((t,n)=>t===e[n])
const no=(t,e)=>{if(t===e)return!0
if(t.length!==e.length)return!1
for(let n=0,r=t.length;n<r;n++)if(t[n]!==e[n])return!1
return!0}
const eo=t=>{let e=null
const ro=t=>{let e=null
let n=null
return(...r)=>{if(!n||!to(n,r)){e=t.apply(null,r)
return(...r)=>{if(!n||!no(n,r)){e=t.apply(null,r)
n=r}return e}}
const no=t=>t
const ro=t=>t*t
const oo=t=>t*(2-t)
const so=t=>t<.5?t*t*2:t*(2-t)*2-1
const ao=t=>Math.pow(t,3)
const co=t=>Math.pow(t-1,3)+1
const io=t=>t<.5?4*Math.pow(t,3):Math.pow(2*t-2,3)/2+1
const uo=t=>Math.pow(t,4)
const lo=t=>1-Math.pow(t-1,4)
const ho=t=>t<.5?8*Math.pow(t,4):1-Math.pow(2*t-2,4)/2
const fo=t=>Math.pow(t,5)
const po=t=>Math.pow(t-1,5)+1
const yo=t=>t<.5?16*Math.pow(t,5):Math.pow(2*t-2,5)/2+1
const go=Math.PI/2
const mo=t=>1-Math.cos(t*go)
const vo=t=>Math.sin(t*go)
const wo=t=>.5-Math.cos(t*Math.PI)/2
const xo=t=>Math.pow(2,10*t-10)
const bo=t=>1-Math.pow(2,-10*t)
const Eo=t=>t<.5?Math.pow(2,20*t-10)/2:1-Math.pow(2,10-20*t)/2
const Ao=t=>1-Math.sqrt(1-t*t)
const Mo=t=>Math.sqrt((2-t)*t)
const So=t=>t<.5?.5-Math.sqrt(.25-t*t):Math.sqrt(t*(2-t)-.75)+.5
var Lo=n(1)
const Oo=(t,e)=>{const n=[]
const oo=t=>t
const so=t=>t*t
const ao=t=>t*(2-t)
const co=t=>t<.5?t*t*2:t*(2-t)*2-1
const io=t=>Math.pow(t,3)
const uo=t=>Math.pow(t-1,3)+1
const lo=t=>t<.5?4*Math.pow(t,3):Math.pow(2*t-2,3)/2+1
const ho=t=>Math.pow(t,4)
const po=t=>1-Math.pow(t-1,4)
const fo=t=>t<.5?8*Math.pow(t,4):1-Math.pow(2*t-2,4)/2
const yo=t=>Math.pow(t,5)
const go=t=>Math.pow(t-1,5)+1
const mo=t=>t<.5?16*Math.pow(t,5):Math.pow(2*t-2,5)/2+1
const vo=Math.PI/2
const wo=t=>1-Math.cos(t*vo)
const xo=t=>Math.sin(t*vo)
const bo=t=>.5-Math.cos(t*Math.PI)/2
const Eo=t=>Math.pow(2,10*t-10)
const Ao=t=>1-Math.pow(2,-10*t)
const Mo=t=>t<.5?Math.pow(2,20*t-10)/2:1-Math.pow(2,10-20*t)/2
const So=t=>1-Math.sqrt(1-t*t)
const Oo=t=>Math.sqrt((2-t)*t)
const Lo=t=>t<.5?.5-Math.sqrt(.25-t*t):Math.sqrt(t*(2-t)-.75)+.5
var To=n(1)
const ko=(t,e)=>{const n=[]
for(let r=0;r<e;r++)n.push(t(r))
return n}
const To=(t,e)=>Oo(e=>e+t,e-t+1)
const ko=t=>Oo(e=>e/t,1+t)
const Do=1e3
const Co=1/Do
const jo=(()=>{try{const{performance:t}=ht.c
const jo=(t,e)=>ko(e=>e+t,e-t+1)
const Do=t=>ko(e=>e/t,1+t)
const Co=1e3
const Ro=1/Co
const Po=(()=>{try{const{performance:t}=ft.c
const e=()=>t.now()
if(e()<=e())return e}catch(t){}try{const{process:t}=ht.c
if(e()<=e())return e}catch(t){}try{const{process:t}=ft.c
const e=()=>{const[e,n]=t.hrtime()
return 1e3*e+1e-6*n}
if(e()<=e())return e}catch(t){}return Date.now})()
const Ro=()=>Math.floor(Date.now()*Co)
const $o=(t=0)=>new Promise(e=>setTimeout(e,t))
const[Bo,Po]=ht.c.requestAnimationFrame?[ht.c.requestAnimationFrame,ht.c.cancelAnimationFrame]:[t=>setTimeout(t,1e3/60),clearTimeout]
const $o=()=>Math.floor(Date.now()*Ro)
const _o=(t=0)=>new Promise(e=>setTimeout(e,t))
const[Bo,No]=ft.c.requestAnimationFrame?[ft.c.requestAnimationFrame,ft.c.cancelAnimationFrame]:[t=>setTimeout(t,1e3/60),clearTimeout]
const Fo=({func:t,delay:e,queueTask:n=setTimeout,cancelTask:r=clearTimeout})=>{let o=null

@@ -1238,7 +1251,7 @@ const s=()=>{if(o){o=n(s,e)

a()}}}}
const No=(t=jo())=>()=>{const e=jo()
const Io=(t=Po())=>()=>{const e=Po()
const n=e-t
t=e
return n}
const Io=(t,e=250,n=!1)=>{let r=null
const zo=(t,e=250,n=!1)=>{let r=null
return(...o)=>{const s=n&&null===r

@@ -1249,3 +1262,3 @@ clearTimeout(r)

s&&t.apply(null,o)}}
const _o=(t,e=250,n=!1)=>{let r=null
const Uo=(t,e=250,n=!1)=>{let r=null
return(...o)=>{if(r)return

@@ -1256,3 +1269,3 @@ const s=n&&null===r

s&&t.apply(null,o)}}
const zo=(t,e=It)=>{let n
const qo=(t,e=zt)=>{let n
const r=()=>{n=void 0}

@@ -1262,4 +1275,4 @@ const o=t=>{n=void 0

return{trigger:(...e)=>{if(!n)try{const s=t.apply(null,e)
sr(s)?n=s.then(r,o):r()}catch(t){o(t)}},getRunningPromise:()=>n}}
const Uo=(t,e=Io,...n)=>{let r=[]
cr(s)?n=s.then(r,o):r()}catch(t){o(t)}},getRunningPromise:()=>n}}
const Ko=(t,e=zo,...n)=>{let r=[]
const o=e(()=>{const e=r

@@ -1270,24 +1283,24 @@ r=[]

o()}}
const qo=(t,e=0)=>{let n=0
const Qo=(t,e=0)=>{let n=0
for(;e>n;){t(n,e)
n++}}
const Qo=async(t,e=0,n=0)=>{let r=0
for(;e>r;){const o=jo()
const Vo=async(t,e=0,n=0)=>{let r=0
for(;e>r;){const o=Po()
await t(r,e)
r++
const s=n-(jo()-o)
s>0&&await $o(s)}}
const Vo=(t,e=1/0)=>{let n=0
const s=n-(Po()-o)
s>0&&await _o(s)}}
const Ho=(t,e=1/0)=>{let n=0
for(;;)try{return t(n,e)}catch(t){if(e<++n)throw t}}
const Ko=async(t,e=1/0,n=0)=>{let r=0
for(;;){const o=jo()
const Go=async(t,e=1/0,n=0)=>{let r=0
for(;;){const o=Po()
try{return await t(r,e)}catch(t){if(e<++r)throw t
const s=n-(jo()-o)
s>0&&await $o(s)}}}
const Ho=(t,e)=>Go(t(),e)
const Go=(t,e)=>{let n=null
const s=n-(Po()-o)
s>0&&await _o(s)}}}
const Yo=(t,e)=>Wo(t(),e)
const Wo=(t,e)=>{let n=null
return Promise.race([t,new Promise((t,r)=>{n=setTimeout(()=>r(new Error(`timeout after: ${e}`)),e)})]).then(t=>{clearTimeout(n)
return t},t=>{clearTimeout(n)
throw t})}
const Yo=()=>{let t,e
const Jo=()=>{let t,e
return{promise:new Promise((n,r)=>{t=n

@@ -1299,8 +1312,8 @@ e=r}),resolve:n=>{const r=t

r&&r(n)}}}
const Jo=(t=0,e=!0)=>({A:()=>t,B:()=>++t,C:()=>--t,D:()=>e,E:()=>e=!1})
const Wo=(t=(t=>{}))=>{let e=Jo()
const Xo=(t=0,e=!0)=>({A:()=>t,B:()=>++t,C:()=>--t,D:()=>e,E:()=>e=!1})
const Zo=(t=(t=>{}))=>{let e=Xo()
let n=Promise.resolve("QUEUE_HEAD")
return{reset:()=>{e.E()
e=Jo()
n=Promise.resolve("QUEUE_HEAD")},getLength:()=>e.A(),pushTask:r=>{const{promise:o,resolve:s}=Yo()
e=Xo()
n=Promise.resolve("QUEUE_HEAD")},getLength:()=>e.A(),pushTask:r=>{const{promise:o,resolve:s}=Jo()
const a=n.then(r)

@@ -1312,5 +1325,5 @@ a.catch(t).then(()=>{e.C()

return a}}}
const Xo=({laneSize:t,selectLane:e=Zo})=>{if(!((t=Number(t))>=1))throw new Error(`invalid laneSize: ${t}`)
const ts=({laneSize:t,selectLane:e=es})=>{if(!((t=Number(t))>=1))throw new Error(`invalid laneSize: ${t}`)
const n=[]
for(let e=0;e<t;e++)n.push({index:e,infoQueue:[],taskQueue:Wo()})
for(let e=0;e<t;e++)n.push({index:e,infoQueue:[],taskQueue:Zo()})
return{reset:()=>n.forEach(({taskQueue:t,infoQueue:e})=>{t.reset()

@@ -1322,4 +1335,4 @@ e.length=0}),getStatus:t=>n.map(({index:e,infoQueue:n,taskQueue:r})=>({index:t?e:void 0,infoQueue:t?n:n.length,taskQueue:r.getLength()})),trimInfoQueue:()=>n.forEach(({taskQueue:t,infoQueue:e})=>{e.length=t.getLength()}),pushTask:(t,r)=>{const{index:o,taskQueue:s,infoQueue:a}=e(n,r)

return c}}}
const Zo=t=>t.reduce((t,e)=>t.taskQueue.getLength()>e.taskQueue.getLength()?e:t,t[0])
const ts=({clearRunner:t=(()=>{}),resetRunner:e=((t,e)=>{}),getTaskId:n,getTaskInitialState:r=(t=>t),runTask:o})=>{const{reset:s,getLength:a,pushTask:c}=Wo()
const es=t=>t.reduce((t,e)=>t.taskQueue.getLength()>e.taskQueue.getLength()?e:t,t[0])
const ns=({clearRunner:t=(()=>{}),resetRunner:e=((t,e)=>{}),getTaskId:n,getTaskInitialState:r=(t=>t),runTask:o})=>{const{reset:s,getLength:a,pushTask:c}=Zo()
const i=new Map

@@ -1333,29 +1346,29 @@ const d=t=>i.get(t)

return t()},getStatus:t=>({taskQueue:a(),taskStateMap:i.size,taskStateList:t?Array.from(i.entries()):void 0}),getQueueLength:a,getTaskState:d,startTask:t=>{const s=n(t)
return i.get(s)||((t,n)=>{const s=c(()=>o(t,{getTaskState:d,updateTaskState:u})).then(e=>u(t,{result:e,promise:null,endAt:Ro()})).catch(n=>{u(t,{error:n,promise:null,endAt:Ro()})
return i.get(s)||((t,n)=>{const s=c(()=>o(t,{getTaskState:d,updateTaskState:u})).then(e=>u(t,{result:e,promise:null,endAt:$o()})).catch(n=>{u(t,{error:n,promise:null,endAt:$o()})
return e(n,t)})
const a=r({id:t,option:n,promise:s,error:null,result:null,startAt:Ro(),endAt:null})
const a=r({id:t,option:n,promise:s,error:null,result:null,startAt:$o(),endAt:null})
i.set(t,a)
return a})(s,t)},endTask:l,autoEndTask:t=>{const e=Ro()-Math.abs(t)
return a})(s,t)},endTask:l,autoEndTask:t=>{const e=$o()-Math.abs(t)
i.forEach((t,n)=>{t.endAt&&t.endAt<=e&&l(n)})}}}
const es=({runnerList:t=[],getRunnerByTaskId:e,selectRunner:n=ns})=>({clear:()=>t.map(t=>t.clear()),getStatus:e=>t.map(t=>t.getStatus(e)),getQueueLength:()=>t.map(t=>t.getQueueLength()),getTaskState:n=>{const r=e(t,n)
const rs=({runnerList:t=[],getRunnerByTaskId:e,selectRunner:n=os})=>({clear:()=>t.map(t=>t.clear()),getStatus:e=>t.map(t=>t.getStatus(e)),getQueueLength:()=>t.map(t=>t.getQueueLength()),getTaskState:n=>{const r=e(t,n)
return r&&r.getTaskState(n)},startTask:e=>n(t,e).startTask(e),endTask:n=>{const r=e(t,n)
return r&&r.endTask(n)},autoEndTask:e=>t.forEach(t=>t.autoEndTask(e))})
const ns=t=>t.reduce((t,e)=>t.getQueueLength()>e.getQueueLength()?e:t,t[0])
const rs=["","▏","▎","▍","▋","▊","▉"]
const os=t=>rs[Math.floor(Ze(t,0,1)*(rs.length-1))]
const ss=t=>{let e=""
for(;t>0;){e+=os(t)
const os=t=>t.reduce((t,e)=>t.getQueueLength()>e.getQueueLength()?e:t,t[0])
const ss=["","▏","▎","▍","▋","▊","▉"]
const as=t=>ss[Math.floor(en(t,0,1)*(ss.length-1))]
const cs=t=>{let e=""
for(;t>0;){e+=as(t)
t-=1}return e}
const as=({valueList:t=[],valueMax:e=t.reduce((t,e)=>Math.max(t,e),-1/0),valueMin:n=t.reduce((t,e)=>Math.min(t,e),1/0),width:r=20})=>t.map(t=>ss(Ze(t,n,e)/(e-n)*r))
const cs=(...t)=>`@/${t.join("/")}`
const is=(...t)=>t.reduce((t,e)=>{const n=Array.isArray(e)?e:[e]
const is=({valueList:t=[],valueMax:e=t.reduce((t,e)=>Math.max(t,e),-1/0),valueMin:n=t.reduce((t,e)=>Math.min(t,e),1/0),width:r=20})=>t.map(t=>cs(en(t,n,e)/(e-n)*r))
const ds=(...t)=>`@/${t.join("/")}`
const us=(...t)=>t.reduce((t,e)=>{const n=Array.isArray(e)?e:[e]
const r=[]
t.forEach(t=>n.forEach(e=>r.push(`${t}/${e}`)))
return r},["@"])
const ds=({keyCount:t})=>{const e={}
const ls=({keyCount:t})=>{const e={}
return{set:(n,r)=>r.forEach(r=>{if(t!==r.length)throw new Error(`invalid keySelectorList length: ${r.length}, expect: ${t}`)
is(...r).forEach(t=>{if(e[t])throw new Error(`duplicate switchKey: ${t}`)
us(...r).forEach(t=>{if(e[t])throw new Error(`duplicate switchKey: ${t}`)
e[t]=n})}),get:(...n)=>{if(t!==n.length)throw new Error(`invalid keyCount: ${n.length}, expect: ${t}`)
return e[cs(...n)]},verifyFull:(...n)=>{if(t!==n.length)throw new Error(`invalid keyCount: ${n.length}, expect: ${t}`)
const r=is(...n)
return e[ds(...n)]},verifyFull:(...n)=>{if(t!==n.length)throw new Error(`invalid keyCount: ${n.length}, expect: ${t}`)
const r=us(...n)
const o=Object.keys(e)

@@ -1366,5 +1379,45 @@ if(r.length!==o.length){const t=r.filter(t=>!o.includes(t))

throw new Error("[verifyFull] not all possible key is set")}}}}
const us=[]
const ls=[]
const hs=(t,e)=>{if(t===e)return 0
const hs=(t,e)=>t<e?-1:t>e?1:0
const ps=(t,e)=>t.localeCompare(e)
const fs=(t="",e="")=>{if(t===e)return 0
let n=-1
let r,o
do{n++
r=t.charCodeAt(n)
o=e.charCodeAt(n)}while(r===o)
const s=ys(r)
const a=ys(o)
return s&&(a||ys(e.charCodeAt(n-1)))||a&&(s||ys(t.charCodeAt(n-1)))?gs(t,s?n:n-1)-gs(e,a?n:n-1):(r||0)-(o||0)}
const ys=t=>t>=48&&t<=57
const gs=(t="",e)=>{let n=e-1
let r=e+1
for(;ys(t.charCodeAt(n));)n--
for(;ys(t.charCodeAt(r));)r++
return Number(t.slice(n+1,r))}
const ms=/[\w-]+/
const vs=({NAME_KEY:t="key",NAME_SUB_LIST:e="subList"})=>{if(!ms.test(t))throw new Error(`expect ${t} to match: ${ms}`)
if(!ms.test(e))throw new Error(`expect ${e} to match: ${ms}`)
const n=new RegExp(`"},{"${t}":"`,"g")
const r=new RegExp(`(?:","${e}":|^)\\[{"${t}":"`,"g")
const o=new RegExp(`"((?:}])+)(?:},{"${t}":"|$)`,"g")
const s=new RegExp(",","g")
const a=new RegExp("\\[","g")
const c=new RegExp("(]+)","g")
return{stringify:t=>JSON.stringify(t).replace(r,"[").replace(o,(t,e)=>"]".repeat(e.length/2)).replace(n,","),parse:n=>JSON.parse(n.replace(s,`"},{"${t}":"`).replace(c,(e,n,r,o)=>`"${"}]".repeat(n.length)}${r+e.length!==o.length?`},{"${t}":"`:""}`).replace(a,(n,r)=>`${0!==r?`","${e}":`:""}[{"${t}":"`)),createBuilder:n=>{const r=new Map
const o=n=>{const a={[t]:n}
const c=r.get(n)
r.delete(n)
void 0!==c&&0!==c.length&&(a[e]=c.sort(s).map(([t])=>o(t)))
return a}
const s=([t,e],[n,r])=>e-r||hs(t,n)
return{add:(t,e,n)=>{let o=r.get(n)
if(void 0===o){o=[]
r.set(n,o)}o.push([t,e])},build:()=>{const s=[]
let a=n
for(;a;){const{[e]:t}=o(a)
void 0!==t&&s.push(...t)
a=r.keys().next().value}return 0===s.length?{[t]:n}:{[t]:n,[e]:s}}}}}}
const ws=[]
const xs=[]
const bs=(t,e)=>{if(t===e)return 0
t.length>e.length&&([t,e]=[e,t])

@@ -1379,4 +1432,4 @@ let n=t.length

let s=0
for(;s<n;){ls[s]=t.charCodeAt(o+s)
us[s]=++s}let a,c,i,d
for(;s<n;){xs[s]=t.charCodeAt(o+s)
ws[s]=++s}let a,c,i,d
let u=0

@@ -1386,20 +1439,58 @@ for(;u<r;){a=e.charCodeAt(o+u)

c=u
for(s=0;s<n;s++){d=a===ls[s]?i:i+1
i=us[s]
c=us[s]=i>c?d>c?c+1:d:d>i?i+1:d}}return c}
const fs="application/octet-stream"
const ps=["application/gzip;gz","application/javascript;js;mjs","application/json","application/pdf","application/xml","application/x-7z-compressed;7z","application/x-tar;tar","application/zip","audio/midi;mid","audio/mpeg;mp3","audio/ogg","audio/wav","audio/webm;weba","audio/x-flac;flac","font/ttf","font/otf","font/woff","font/woff2","image/bmp","image/gif","image/jpeg;jpg","image/png","image/svg+xml;svg","image/webp","image/x-icon;ico","text/css","text/csv","text/html;htm","text/plain;txt;text;conf;log;ini","text/rtf","text/xml","video/mp4;mp4v;mpg4","video/mpeg;mpg","video/webm","video/x-flv;flv","video/x-ms-wmv;wmv","video/x-msvideo;avi"].reduce((t,e)=>{const[n]=e.split(";")
for(s=0;s<n;s++){d=a===xs[s]?i:i+1
i=ws[s]
c=ws[s]=i>c?d>c?c+1:d:d>i?i+1:d}}return c}
const Es="application/octet-stream"
const As=["application/gzip;gz","application/javascript;js;mjs","application/json","application/pdf","application/xml","application/x-7z-compressed;7z","application/x-tar;tar","application/zip","audio/midi;mid","audio/mpeg;mp3","audio/ogg","audio/wav","audio/webm;weba","audio/x-flac;flac","font/ttf","font/otf","font/woff","font/woff2","image/bmp","image/gif","image/jpeg;jpg","image/png","image/svg+xml;svg","image/webp","image/x-icon;ico","text/css","text/csv","text/html;htm","text/plain;txt;text;conf;log;ini","text/rtf","text/xml","video/mp4;mp4v;mpg4","video/mpeg;mpg","video/webm","video/x-flv;flv","video/x-ms-wmv;wmv","video/x-msvideo;avi"].reduce((t,e)=>{const[n]=e.split(";")
e.split("/")[1].split(";").forEach(e=>t[e]=n)
return t},{})
const ys=/\.(\w+)$/
const gs=t=>{const e=ys.exec(t)
return e&&ps[e[1]]||fs}
const ms=(t,e)=>void 0===t[e]?t[e]={}:t[e]
const vs=(t,e)=>{const n=[]
const Ms=/\.(\w+)$/
const Ss=t=>{const e=Ms.exec(t)
return e&&As[e[1]]||Es}
const Os=({NAME_KEY:t="key",NAME_MODIFY_TIME:e="mtime",EPSILON_MODIFY_TIME:n=1,isChanged:r=((t,n)=>t[e]!==n[e]),shouldApplyDelete:o=((t,n)=>t[e]>=n[e]),shouldApplyUpdate:s=((t,n)=>t[e]>n[e]),getPatchData:a=((t,r)=>t[e]<r[e]?Object.assign({},t,{[e]:r[e]+n}):t)})=>{const c=(e,n)=>e.set(n[t],n)
return{NAME_KEY:t,NAME_MODIFY_TIME:e,isChanged:r,shouldApplyDelete:o,shouldApplyUpdate:s,hasPatch:(e,n)=>{for(let o=0,s=n.length;o<s;o++){const s=n[o]
const a=s[t]
const c=e.get(a)
if(void 0===c)return!0
if(r(c,s))return!0
e.delete(a)}return e.size>=1},countPatch:(e,n)=>{let o=0
for(let s=0,a=n.length;s<a;s++){const a=n[s]
const c=a[t]
const i=e.get(c)
void 0===i?o++:r(i,a)&&o++
e.delete(c)}return o+e.size},generatePatch:(n,o)=>{const s=[]
const c=[]
for(let i=0,d=o.length;i<d;i++){const d=o[i]
const u=d[t]
const l=n.get(u)
void 0===l?s.push({[t]:u,[e]:d[e]}):r(l,d)&&c.push(a(l,d))
n.delete(u)}n.forEach(t=>{c.push(t)})
return{deleteList:s,updateList:c}},applyPatch:(e,n,r,a)=>{let i=!1
const d=e.reduce(c,new Map)
const u=n.reduce(c,new Map)
for(const e of r){const n=e[t]
const r=d.get(n)
if(void 0!==r&&o(r,e)){a(void 0,e)
i=!0
continue}const c=u.get(n)
if(void 0!==c){u.delete(n)
if(s(c,e)){a(c,e)
i=!0
continue}}a(e,e)}u.forEach(t=>{a(t,void 0)
i=!0})
return i},arrayMapReducer:c}}
const Ls=t=>{const{NAME_KEY:e,hasPatch:n,countPatch:r,generatePatch:o,applyPatch:s}=t
return{hasObjectPatch:(t,e)=>n(new Map(Object.entries(t)),Object.values(e)),countObjectPatch:(t,e)=>r(new Map(Object.entries(t)),Object.values(e)),generateObjectPatch:(t,e)=>o(new Map(Object.entries(t)),Object.values(e)),applyObjectPatch:(t,{deleteList:n,updateList:r})=>{const o={}
return s(n,r,Object.values(t),(t,n)=>{void 0!==t&&(o[t[e]]=t)})?o:t}}}
const Ts=t=>{const{hasPatch:e,countPatch:n,generatePatch:r,applyPatch:o,arrayMapReducer:s}=t
return{hasArrayWithKeyPatch:(t,n)=>e(t.reduce(s,new Map),n),countArrayWithKeyPatch:(t,e)=>n(t.reduce(s,new Map),e),generateArrayWithKeyPatch:(t,e)=>r(t.reduce(s,new Map),e),applyArrayWithKeyPatch:(t,{deleteList:e,updateList:n})=>{const r=[]
return o(e,n,t,(t,e)=>{void 0!==t&&r.push(t)})?r:t}}}
const ks=(t,e)=>void 0===t[e]?t[e]={}:t[e]
const js=(t,e)=>{const n=[]
return{routeNode:t=e.split("/").reduce((t,r)=>{if("*"===r){n.push("/*")
return ms(t,"/*")}if(":"===r[0]){const o=r.slice(1)
return ks(t,"/*")}if(":"===r[0]){const o=r.slice(1)
if(!o||n.includes(o))throw new Error(`invalid frag [${r}] for route: ${e}`)
n.push(o)
return ms(t,"/:PARAM")}return ms(t,r)},t),paramNameList:n}}
const ws=(t,e)=>{const n=[]
return ks(t,"/:PARAM")}return ks(t,r)},t),paramNameList:n}}
const Ds=(t,e)=>{const n=[]
const r=e.split("/")

@@ -1412,9 +1503,9 @@ for(let e=0,o=r.length;e<o;e++){const o=r[e]

t=t["/:PARAM"]}}return{routeNode:t,paramValueList:n}}
const xs=(t={},e="/",n)=>{if(Array.isArray(e))return e.reduce((e,r)=>xs(t,r,n),t)
const{routeNode:r,paramNameList:o}=vs(t,e)
const Cs=(t={},e="/",n)=>{if(Array.isArray(e))return e.reduce((e,r)=>Cs(t,r,n),t)
const{routeNode:r,paramNameList:o}=js(t,e)
if(r["/DATA"])throw new Error(`duplicate route: ${e}`)
r["/DATA"]={route:e,paramNameList:o,data:n}
return t}
const bs=t=>t.reduce((t,[e,n])=>xs(t,e,n),{})
const Es=(t,e)=>{const n=ws(t,e)
const Rs=t=>t.reduce((t,[e,n])=>Cs(t,e,n),{})
const Ps=(t,e)=>{const n=Ds(t,e)
if(void 0===n)return

@@ -1426,23 +1517,6 @@ const{routeNode:r,paramValueList:o}=n

return t},{}),data:c}}
const As=({paramMap:t})=>t["/*"]
const Ms=({paramMap:t},e)=>t[e]
const Ss=(t,e)=>t<e?-1:t>e?1:0
const Ls=(t,e)=>t.localeCompare(e)
const Os=(t="",e="")=>{if(t===e)return 0
let n=-1
let r,o
do{n++
r=t.charCodeAt(n)
o=e.charCodeAt(n)}while(r===o)
const s=Ts(r)
const a=Ts(o)
return s&&(a||Ts(e.charCodeAt(n-1)))||a&&(s||Ts(t.charCodeAt(n-1)))?ks(t,s?n:n-1)-ks(e,a?n:n-1):(r||0)-(o||0)}
const Ts=t=>t>=48&&t<=57
const ks=(t="",e)=>{let n=e-1
let r=e+1
for(;Ts(t.charCodeAt(n));)n--
for(;Ts(t.charCodeAt(r));)r++
return Number(t.slice(n+1,r))}
const Ds=/^(\d+)\.(\d+)\.(\d+)(.*)$/
const Cs=t=>{let[,e,n,r,o=""]=Ds.exec(t)||[]
const $s=({paramMap:t})=>t["/*"]
const _s=({paramMap:t},e)=>t[e]
const Bs=/^(\d+)\.(\d+)\.(\d+)(.*)$/
const Ns=t=>{let[,e,n,r,o=""]=Bs.exec(t)||[]
e=parseInt(e)

@@ -1453,14 +1527,14 @@ n=parseInt(n)

return{major:e,minor:n,patch:r,label:o}}
const js=(t,e)=>{const n=Cs(t)
const r=Cs(e)
return n.major-r.major||n.minor-r.minor||n.patch-r.patch||Rs(n.label,r.label)}
const Rs=(t,e)=>t===e?0:e.startsWith(t)?1:t.startsWith(e)?-1:Os(t,e)
const $s="1".charCodeAt(0)
const Bs=(t,e,n,r=0)=>{const o=(r=Math.floor(r)).toString(2)
const Fs=(t,e)=>{const n=Ns(t)
const r=Ns(e)
return n.major-r.major||n.minor-r.minor||n.patch-r.patch||Is(n.label,r.label)}
const Is=(t,e)=>t===e?0:e.startsWith(t)?1:t.startsWith(e)?-1:fs(t,e)
const zs="1".charCodeAt(0)
const Us=(t,e,n,r=0)=>{const o=(r=Math.floor(r)).toString(2)
const s=Math.pow(16,e)
let a=r%t
let c=n.getUint8(a)
for(let e=0,r=o.length;e<r;e++){o.charCodeAt(e)===$s?a=(a+n.getUint8((a+1)%t))%t:c*=16
for(let e=0,r=o.length;e<r;e++){o.charCodeAt(e)===zs?a=(a+n.getUint8((a+1)%t))%t:c*=16
c=(c+n.getUint8(a))%s}return(c%Math.pow(2,4*e)).toString(16).padStart(e,"0")}
const Ps=({tag:t=Ro().toString(36),size:e=65536,tokenSize:n=8,timeGap:r=30})=>{if(!/^\w*$/.test(t))throw new Error(`invalid tag: ${t}`)
const qs=({tag:t=$o().toString(36),size:e=65536,tokenSize:n=8,timeGap:r=30})=>{if(!/^\w*$/.test(t))throw new Error(`invalid tag: ${t}`)
if(!Number.isInteger(e)||e<=1024||e%32)throw new Error(`invalid size: ${e}`)

@@ -1470,21 +1544,21 @@ if(!Number.isInteger(n)||n>13||n<2)throw new Error(`invalid tokenSize: ${n}`)

return{tag:t,size:e,tokenSize:n,timeGap:r}}
const Fs=(t,e,n=Ro())=>{if("string"!=typeof e||e.length<t.tokenSize)throw new Error(`invalid checkCode: ${e}`)
Ns(t,Us(e),n)}
const Ns=({tag:t,size:e,tokenSize:n,timeGap:r,dataView:o},[s,a,c],i=Ro())=>{if(s!==t)throw new Error(`tag mismatch: ${s}, expect: ${t}`)
const Ks=(t,e,n=$o())=>{if("string"!=typeof e||e.length<t.tokenSize)throw new Error(`invalid checkCode: ${e}`)
Qs(t,Ys(e),n)}
const Qs=({tag:t,size:e,tokenSize:n,timeGap:r,dataView:o},[s,a,c],i=$o())=>{if(s!==t)throw new Error(`tag mismatch: ${s}, expect: ${t}`)
if(Math.abs(i-a)>r)throw new Error(`timestamp mismatch: ${a}, expect: ${i}±${r}`)
const d=Bs(e,n,o,a/r)
const d=Us(e,n,o,a/r)
if(d!==c)throw new Error(`code mismatch: ${c}, expect: ${d}`)}
const Is=t=>{t=Ps(t)
return Object.assign({},t,{dataView:new DataView(Object(Lo.a)(t.size))})}
const _s=({tag:t,size:e,tokenSize:n,timeGap:r,dataView:o},s=Ro())=>{const a=Bs(e,n,o,s/r)
return zs(t,s,a)}
const zs=(t,e,n)=>re([t,e.toString(36),n].join("-"))
const Us=t=>{const e=re(t).split("-")
const Vs=t=>{t=qs(t)
return Object.assign({},t,{dataView:new DataView(Object(To.a)(t.size))})}
const Hs=({tag:t,size:e,tokenSize:n,timeGap:r,dataView:o},s=$o())=>{const a=Us(e,n,o,s/r)
return Gs(t,s,a)}
const Gs=(t,e,n)=>se([t,e.toString(36),n].join("-"))
const Ys=t=>{const e=se(t).split("-")
e[1]=Number.parseInt(e[1],36)
return e}
const qs=({tag:t,size:e,tokenSize:n,timeGap:r,dataView:o})=>Lt(JSON.stringify([t,e,n,r]),o.buffer)
const Qs=t=>{const[e,n]=Ot(t)
const Ws=({tag:t,size:e,tokenSize:n,timeGap:r,dataView:o})=>Tt(JSON.stringify([t,e,n,r]),o.buffer)
const Js=t=>{const[e,n]=kt(t)
const[r,o,s,a]=JSON.parse(e)
return{tag:r,size:o,tokenSize:s,timeGap:a,dataView:new DataView(n)}}
const Vs=()=>{let t
const Xs=()=>{let t
let e

@@ -1498,58 +1572,58 @@ let n

o()
return{clear:o,pushFunc:e=>{t.push(e)},setFunc:(t,r)=>{e=zn(e,t,r)
n=Object.values(e)},deleteFunc:t=>{e=Un(e,t)
return{clear:o,pushFunc:e=>{t.push(e)},setFunc:(t,r)=>{e=qn(e,t,r)
n=Object.values(e)},deleteFunc:t=>{e=Kn(e,t)
n=Object.values(e)},update:()=>{const e=Date.now()
const o=e-r
const s=t=>t(o*Co)
const s=t=>t(o*Ro)
r=e
t.length&&(t=t.filter(s))
n.forEach(s)}}}
const Ks=({delay:t,queueTask:e=Bo,cancelTask:n=Po}={})=>{const{clear:r,pushFunc:o,setFunc:s,deleteFunc:a,update:c}=Vs()
const Zs=({delay:t,queueTask:e=Bo,cancelTask:n=No}={})=>{const{clear:r,pushFunc:o,setFunc:s,deleteFunc:a,update:c}=Xs()
const{start:i,stop:d}=Fo({func:c,queueTask:e,cancelTask:n,delay:t})
return{start:i,stop:d,clear:r,pushFunc:o,setFunc:s,deleteFunc:a}}
const Hs=(t,e)=>{Object.entries(e).forEach(([e,n])=>{const r=t[e]
r!==n&&(t[e]=Zn(r)&&Zn(n)?Hs(r,n):n)})
const ta=(t,e)=>{Object.entries(e).forEach(([e,n])=>{const r=t[e]
r!==n&&(t[e]=er(r)&&er(n)?ta(r,n):n)})
return t}
const Gs=(t,e=Ls)=>{Object.keys(t).sort(e).forEach(e=>{const n=t[e]
const ea=(t,e=ps)=>{Object.keys(t).sort(e).forEach(e=>{const n=t[e]
delete t[e]
t[e]=n})
return t}
const Ys=/\n/g
const Js=(t,e=" ",n=e)=>`${n}${t.replace(Ys,`\n${e}`)}`
const Ws=(t,e=[],n=" - ",r=" ".repeat(n.length))=>[t,...e.map(t=>Js(t,r,n))].join("\n")
const Xs=(t="",e=64,n=32,r=16)=>t.length>e?`${t.slice(0,n)}...${r>0?t.slice(-r):""} (+${t.length-n-r})`:t
const Zs=/[^A-Z]/
const ta=/([^A-Z]|[A-Z]{2,})([A-Z])/g
const ea=t=>Zs.test(t)?t.replace(ta,"$1 $2").split(" "):[t]
const na=t=>t.split("_")
const ra=t=>t.split("-")
const oa=(t,e=1)=>t.reduce((t,n,r)=>t+(r<e?n:ca(n)),"")
const sa=t=>t.join("_").toUpperCase()
const aa=t=>t.join("-").toLowerCase()
const ca=t=>t.charAt(0).toUpperCase()+t.slice(1)
const ia={'"':"&#34;","&":"&#38;","'":"&#39;","<":"&#60;",">":"&#62;"}
const da=/["&'<>]/g
const ua=t=>ia[t]||t
const la=t=>t&&t.replace(da,ua)
const ha={"&#34;":'"',"&quot;":'"',"&#38;":"&","&amp;":"&","&#39;":"'","&apos;":"'","&#60;":"<","&lt;":"<","&#62;":">","&gt;":">"}
const fa=/&(?:#34|quot|#38|amp|#39|apos|#60|lt|#62|gt);/g
const pa=t=>ha[t]||t
const ya=t=>t&&t.replace(fa,pa)
const ga=/[^\x09\x0A\x0D\x20-\xFF\x85\xA0-\uD7FF\uE000-\uFDCF\uFDE0-\uFFFD]/gm
const ma=t=>t.replace(ga,"")
const{Blob:va,FileReader:wa}=window
const xa=t=>e=>new Promise((n,r)=>{const o=new wa
const na=/\n/g
const ra=(t,e=" ",n=e)=>`${n}${t.replace(na,`\n${e}`)}`
const oa=(t,e=[],n=" - ",r=" ".repeat(n.length))=>[t,...e.map(t=>ra(t,r,n))].join("\n")
const sa=(t="",e=64,n=32,r=16)=>t.length>e?`${t.slice(0,n)}...${r>0?t.slice(-r):""} (+${t.length-n-r})`:t
const aa=/[^A-Z]/
const ca=/([^A-Z]|[A-Z]{2,})([A-Z])/g
const ia=t=>aa.test(t)?t.replace(ca,"$1 $2").split(" "):[t]
const da=t=>t.split("_")
const ua=t=>t.split("-")
const la=(t,e=1)=>t.reduce((t,n,r)=>t+(r<e?n:fa(n)),"")
const ha=t=>t.join("_").toUpperCase()
const pa=t=>t.join("-").toLowerCase()
const fa=t=>t.charAt(0).toUpperCase()+t.slice(1)
const ya={'"':"&#34;","&":"&#38;","'":"&#39;","<":"&#60;",">":"&#62;"}
const ga=/["&'<>]/g
const ma=t=>ya[t]||t
const va=t=>t&&t.replace(ga,ma)
const wa={"&#34;":'"',"&quot;":'"',"&#38;":"&","&amp;":"&","&#39;":"'","&apos;":"'","&#60;":"<","&lt;":"<","&#62;":">","&gt;":">"}
const xa=/&(?:#34|quot|#38|amp|#39|apos|#60|lt|#62|gt);/g
const ba=t=>wa[t]||t
const Ea=t=>t&&t.replace(xa,ba)
const Aa=/[^\x09\x0A\x0D\x20-\xFF\x85\xA0-\uD7FF\uE000-\uFDCF\uFDE0-\uFFFD]/gm
const Ma=t=>t.replace(Aa,"")
const{Blob:Sa,FileReader:Oa}=window
const La=t=>e=>new Promise((n,r)=>{const o=new Oa
o.addEventListener("error",r)
o.addEventListener("load",()=>n(o.result))
o[t](e)})
const ba=xa("readAsText")
const Ea=xa("readAsDataURL")
const Aa=xa("readAsArrayBuffer")
const Ma=new va
const Sa=(t,e=Ma)=>new va([...Mt(xt(t)),e])
const La=async t=>{const e=new DataView(await Aa(t.slice(0,Et))).getUint32(0,!1)
return[wt(await Aa(t.slice(Et,Et+e))),t.slice(Et+e)]}
const Oa=({eventSource:t=window.document,isSkipPreventDefault:e=!1})=>{const n=new Map
const Ta=La("readAsText")
const ka=La("readAsDataURL")
const ja=La("readAsArrayBuffer")
const Da=new Sa
const Ca=(t,e=Da)=>new Sa([...Ot(Et(t)),e])
const Ra=async t=>{const e=new DataView(await ja(t.slice(0,Mt))).getUint32(0,!1)
return[bt(await ja(t.slice(Mt,Mt+e))),t.slice(Mt+e)]}
const Pa=({eventSource:t=window.document,isSkipPreventDefault:e=!1})=>{const n=new Map
const r=t=>n.forEach(n=>{const{target:r,checkMap:o,callback:s}=n
if((!r||r.contains(t.target))&&er(t,o)){!e&&t.preventDefault()
if((!r||r.contains(t.target))&&rr(t,o)){!e&&t.preventDefault()
s(t,n)}})

@@ -1559,6 +1633,6 @@ let o=!1

o=!0},stop:()=>{t.removeEventListener("keydown",r)
o=!1},addKeyCommand:({id:t=Object(Lo.b)(),target:e,checkMap:r,callback:o})=>{n.set(t,{id:t,target:e,checkMap:r,callback:o})
o=!1},addKeyCommand:({id:t=Object(To.b)(),target:e,checkMap:r,callback:o})=>{n.set(t,{id:t,target:e,checkMap:r,callback:o})
return t},deleteKeyCommand:({id:t})=>n.delete(t)}}
const Ta={START:"START",MOVE:"MOVE",END:"END",CANCEL:"CANCEL"}
const ka=({element:t,onEvent:e,isGlobal:n=!1,isCancel:r=!0,isCancelOnOutOfBound:o=!0,isUseTouchEvent:s=!0})=>{!window.getComputedStyle(t).touchAction&&console.warn("[applyPointerEventListener] should set CSS 'touch-action' to 'none' to prevent browser defaults")
const $a={START:"START",MOVE:"MOVE",END:"END",CANCEL:"CANCEL"}
const _a=({element:t,onEvent:e,isGlobal:n=!1,isCancel:r=!0,isCancelOnOutOfBound:o=!0,isUseTouchEvent:s=!0})=>{!window.getComputedStyle(t).touchAction&&console.warn("[applyPointerEventListener] should set CSS 'touch-action' to 'none' to prevent browser defaults")
const a=n?window.document:t

@@ -1583,10 +1657,10 @@ o=r&&o

s&&r&&a.removeEventListener("touchcancel",w)}
const f=s&&window.TouchEvent?t=>t instanceof window.TouchEvent?t.touches.length?{x:t.touches[0].clientX,y:t.touches[0].clientY}:{x:t.changedTouches[0].clientX,y:t.changedTouches[0].clientY}:{x:t.clientX,y:t.clientY}:t=>({x:t.clientX,y:t.clientY})
const p=t=>{if(t!==u){const e=jo()
const n=f(t)
const p=s&&window.TouchEvent?t=>t instanceof window.TouchEvent?t.touches.length?{x:t.touches[0].clientX,y:t.touches[0].clientY}:{x:t.changedTouches[0].clientX,y:t.changedTouches[0].clientY}:{x:t.clientX,y:t.clientY}:t=>({x:t.clientX,y:t.clientY})
const f=t=>{if(t!==u){const e=Po()
const n=p(t)
u=t
l={timeStart:c,pointStart:i,eventStart:d,time:e,point:n,event:t,duration:e-c,distance:xe(i,n)}}return l}
l={timeStart:c,pointStart:i,eventStart:d,time:e,point:n,event:t,duration:e-c,distance:Ee(i,n)}}return l}
const y=s&&window.TouchEvent?t=>t instanceof window.TouchEvent?"touchend"===t.type||"touchcancel"===t.type?0!==t.touches.length:1!==t.touches.length:!t.isPrimary||"touch"===t.pointerType:t=>!t.isPrimary
const g=t=>{if(!y(t)){c=jo()
i=f(t)
const g=t=>{if(!y(t)){c=Po()
i=p(t)
d=t

@@ -1600,10 +1674,10 @@ a.addEventListener("pointermove",m)

s&&r&&a.addEventListener("touchcancel",w)
e(Ta.START,t,p)}}
e($a.START,t,f)}}
const m=n=>{if(y(n))return
const{point:r}=p(n)
if(o&&!fe(t.getBoundingClientRect(),r))return w(n)
e(Ta.MOVE,n,p)}
const v=t=>{if(!y(t)){e(Ta.END,t,p)
const{point:r}=f(n)
if(o&&!ye(t.getBoundingClientRect(),r))return w(n)
e($a.MOVE,n,f)}
const v=t=>{if(!y(t)){e($a.END,t,f)
h()}}
const w=t=>{if(!y(t)){e(Ta.CANCEL,t,p)
const w=t=>{if(!y(t)){e($a.CANCEL,t,f)
h()}}

@@ -1616,4 +1690,4 @@ t.addEventListener("pointerdown",g)

h()}}
const Da={TAP:"TAP",HOLD:"HOLD",DRAG_MOVE:"DRAG_MOVE",DRAG_END:"DRAG_END",DRAG_CANCEL:"DRAG_CANCEL"}
const Ca=t=>{let{onEnhancedEvent:e,onEvent:n,holdDurationThreshold:r=500,dragDistanceThreshold:o=5}=t,s=function(t,e){if(null==t)return{}
const Ba={TAP:"TAP",HOLD:"HOLD",DRAG_MOVE:"DRAG_MOVE",DRAG_END:"DRAG_END",DRAG_CANCEL:"DRAG_CANCEL"}
const Na=t=>{let{onEnhancedEvent:e,onEvent:n,holdDurationThreshold:r=500,dragDistanceThreshold:o=5}=t,s=function(t,e){if(null==t)return{}
var n={}

@@ -1625,11 +1699,11 @@ var r=Object.keys(t)

let a=!1
return ka(Object.assign({onEvent:(t,s,c)=>{const i=c(s)
switch(t){case Ta.START:a=!1
return _a(Object.assign({onEvent:(t,s,c)=>{const i=c(s)
switch(t){case $a.START:a=!1
break
case Ta.MOVE:(a|=i.distance>=o)&&e(Da.DRAG_MOVE,i)
case $a.MOVE:(a|=i.distance>=o)&&e(Ba.DRAG_MOVE,i)
break
case Ta.END:a?e(Da.DRAG_END,i):i.duration>=r?e(Da.HOLD,i):e(Da.TAP,i)
case $a.END:a?e(Ba.DRAG_END,i):i.duration>=r?e(Ba.HOLD,i):e(Ba.TAP,i)
break
case Ta.CANCEL:a&&e(Da.DRAG_CANCEL,i)}n&&n(t,s,c)}},s))}
const ja=(t=window.location.href)=>{const e=(e,n)=>{if("string"!=typeof e)throw new Error(`non-string href: ${e}`)
case $a.CANCEL:a&&e(Ba.DRAG_CANCEL,i)}n&&n(t,s,c)}},s))}
const Fa=(t=window.location.href)=>{const e=(e,n)=>{if("string"!=typeof e)throw new Error(`non-string href: ${e}`)
if(e===t)return t

@@ -1650,3 +1724,3 @@ const r=t

window.removeEventListener("hashchange",r)}}}}
const Ra=({keyPrefix:t="STATE",setItem:e=((e,n)=>window.localStorage.setItem(`${t}|${e}`,JSON.stringify(n))),getItem:n=(e=>JSON.parse(window.localStorage.getItem(`${t}|${e}`))),removeItem:r=(e=>window.localStorage.removeItem(`${t}|${e}`))})=>{let o={}
const Ia=({keyPrefix:t="STATE",setItem:e=((e,n)=>window.localStorage.setItem(`${t}|${e}`,JSON.stringify(n))),getItem:n=(e=>JSON.parse(window.localStorage.getItem(`${t}|${e}`))),removeItem:r=(e=>window.localStorage.removeItem(`${t}|${e}`))})=>{let o={}
let s=[]

@@ -1659,3 +1733,3 @@ const a=t=>{o={}

for(const e of s)!t[e]&&r(e)
to(n,s)||e("@@KEY_LIST",n)
no(n,s)||e("@@KEY_LIST",n)
o=t

@@ -1668,3 +1742,3 @@ s=n}

return{reset:a,init:t=>a(Object.assign({},t,i())),save:c,load:i}}
const $a=t=>{let e=null
const za=t=>{let e=null
const n=()=>{const n=e

@@ -1675,14 +1749,14 @@ e=null

e=t}}
const Ba=t=>{t.stopPropagation()
const Ua=t=>{t.stopPropagation()
t.preventDefault()}
const Pa=(t=window.document,e)=>{const n=t=>{Ba(t)
const qa=(t=window.document,e)=>{const n=t=>{Ua(t)
const{files:n}=t.dataTransfer
n&&n.length&&e(n)}
t.addEventListener("dragenter",Ba)
t.addEventListener("dragover",Ba)
t.addEventListener("dragenter",Ua)
t.addEventListener("dragover",Ua)
t.addEventListener("drop",n)
return()=>{t.removeEventListener("dragenter",Ba)
t.removeEventListener("dragover",Ba)
return()=>{t.removeEventListener("dragenter",Ua)
t.removeEventListener("dragover",Ua)
t.removeEventListener("drop",n)}}
const Fa=(t,e)=>{if(!t.contains(e))return[]
const Ka=(t,e)=>{if(!t.contains(e))return[]
let n=e

@@ -1692,3 +1766,3 @@ const r=[]

n=n.parentElement}return r}
const Na=(t,e)=>{const n=e&&e.map(t=>{const{visibility:e}=t.style
const Qa=(t,e)=>{const n=e&&e.map(t=>{const{visibility:e}=t.style
t.style.visibility="hidden"

@@ -1699,6 +1773,6 @@ return e})

return r}
const{XMLHttpRequest:Ia,Blob:_a,TextDecoder:za}=ht.c
const Ua=/[\r\n]+/
const qa=(t,{method:e="GET",headers:n,body:r,timeout:o=0,credentials:s,onUploadProgress:a,onDownloadProgress:c}={})=>new Promise((i,d)=>{const u=(n,r)=>Object.assign(new Error(n),{status:r,url:t,method:e})
const l=new Ia
const{XMLHttpRequest:Va,Blob:Ha,TextDecoder:Ga}=ft.c
const Ya=/[\r\n]+/
const Wa=(t,{method:e="GET",headers:n,body:r,timeout:o=0,credentials:s,onUploadProgress:a,onDownloadProgress:c}={})=>new Promise((i,d)=>{const u=(n,r)=>Object.assign(new Error(n),{status:r,url:t,method:e})
const l=new Va
l.onerror=(()=>d(u("NETWORK_ERROR",-1)))

@@ -1709,6 +1783,6 @@ l.ontimeout=(()=>d(u("NETWORK_TIMEOUT",-1)))

if(0===e){l.abort()
return d(u("HEADER_STATUS_ERROR",-1))}const n=l.getAllResponseHeaders().split(Ua).reduce((t,e)=>{const[n,...r]=e.split(":")
return d(u("HEADER_STATUS_ERROR",-1))}const n=l.getAllResponseHeaders().split(Ya).reduce((t,e)=>{const[n,...r]=e.split(":")
r.length&&(t[n.trim().toLowerCase()]=r.join(":").trim())
return t},{})
i(Object.assign({status:e,ok:e>=200&&e<300,headers:n},Qa(l,u)))})
i(Object.assign({status:e,ok:e>=200&&e<300,headers:n},Ja(l,u)))})
a&&l.upload&&(l.upload.onprogress=a)

@@ -1722,3 +1796,3 @@ c&&(l.onprogress=c)

l.send(r||null)})
const Qa=(t,e)=>{let n
const Ja=(t,e)=>{let n
let r

@@ -1734,34 +1808,34 @@ setTimeout(()=>{if(!n){r=!0

n(t.response)}})})}
const s=()=>o().then(Ka)
return{arrayBuffer:o,blob:()=>o().then(Va),text:s,json:()=>s().then(Ha)}}
const Va=t=>new _a([t])
const Ka=t=>(new za).decode(t)
const Ha=t=>JSON.parse(t)
const{fetch:Ga,navigator:Ya,caches:Ja,URL:Wa,Blob:Xa,Request:Za,Response:tc}=window
const ec=(t,e={})=>Object.assign(document.createElement(t),e)
const nc=async t=>(await Ga(t)).text()
const rc=t=>new Promise((e,n)=>ec("img",{src:t,onerror:n,onload:t=>e(t.currentTarget)}))
const oc=t=>new Promise((e,n)=>document.body.appendChild(ec("script",{src:t,async:!1,type:ps.js,onerror:n,onload:t=>e(t.currentTarget)})))
const sc=(t,e)=>{const n=ec("a",{download:t,href:e})
const s=()=>o().then(Za)
return{arrayBuffer:o,blob:()=>o().then(Xa),text:s,json:()=>s().then(tc)}}
const Xa=t=>new Ha([t])
const Za=t=>(new Ga).decode(t)
const tc=t=>JSON.parse(t)
const{fetch:ec,navigator:nc,caches:rc,URL:oc,Blob:sc,Request:ac,Response:cc}=window
const ic=(t,e={})=>Object.assign(document.createElement(t),e)
const dc=async t=>(await ec(t)).text()
const uc=t=>new Promise((e,n)=>ic("img",{src:t,onerror:n,onload:t=>e(t.currentTarget)}))
const lc=t=>new Promise((e,n)=>document.body.appendChild(ic("script",{src:t,async:!1,type:As.js,onerror:n,onload:t=>e(t.currentTarget)})))
const hc=(t,e)=>{const n=ic("a",{download:t,href:e})
document.body.appendChild(n)
n.click()
document.body.removeChild(n)}
const ac=(t,e)=>{if(Ya.msSaveOrOpenBlob)return Ya.msSaveOrOpenBlob(e,t)
const n=Wa.createObjectURL(e)
sc(t,n)
setTimeout(()=>Wa.revokeObjectURL(n),5e3)}
const cc=(t,e,n=ps.txt)=>ac(t,new Xa([e],{type:n}))
const ic=(t,e,n=ps.json)=>cc(t,JSON.stringify(e),n)
const dc=async(t,e,n)=>{const r=await Ja.open(t)
await r.put(new Za(e),new tc(n))
const pc=(t,e)=>{if(nc.msSaveOrOpenBlob)return nc.msSaveOrOpenBlob(e,t)
const n=oc.createObjectURL(e)
hc(t,n)
setTimeout(()=>oc.revokeObjectURL(n),5e3)}
const fc=(t,e,n=As.txt)=>pc(t,new sc([e],{type:n}))
const yc=(t,e,n=As.json)=>fc(t,JSON.stringify(e),n)
const gc=async(t,e,n)=>{const r=await rc.open(t)
await r.put(new ac(e),new cc(n))
return{bucketName:t,key:e}}
const uc=async(t,e)=>{const n=await Ja.open(t)
const r=await n.match(new Za(e))
const mc=async(t,e)=>{const n=await rc.open(t)
const r=await n.match(new ac(e))
return r&&r.arrayBuffer()}
const lc=async(t,e)=>{if(!e)return Ja.delete(t)
const n=await Ja.open(t)
return n&&n.delete(new Za(e))}
const vc=async(t,e)=>{if(!e)return rc.delete(t)
const n=await rc.open(t)
return n&&n.delete(new ac(e))}
n.d(e,"Env",()=>r)
n.d(e,"Common",()=>J)
n.d(e,"Browser",()=>dt)}])},"object"==typeof exports&&"object"==typeof module?module.exports=factory():"function"==typeof define&&define.amd?define([],factory):"object"==typeof exports?exports.Dr=factory():root.Dr=factory()
n.d(e,"Common",()=>X)
n.d(e,"Browser",()=>lt)}])},"object"==typeof exports&&"object"==typeof module?module.exports=factory():"function"==typeof define&&define.amd?define([],factory):"object"==typeof exports?exports.Dr=factory():root.Dr=factory()
var root,factory
const tryRequire=(name="")=>{try{return eval("require")(name)}catch(e){}}
exports.tryRequire=tryRequire
const tryRequireResolve=(name="")=>{try{return eval("require.resolve")(name)}catch(e){}}
exports.tryRequireResolve=tryRequireResolve

@@ -0,15 +1,22 @@

var r=require("fs")
var e=require("vm")
var s=require("../env/tryRequire")
var t=require("./net")
var r=require("./file/function")
const a=async r=>{const a=await(await(0,t.fetchLikeRequest)(r)).text()
return(0,e.runInThisContext)(a,{filename:r,displayErrors:!0})}
exports.loadRemoteScript=a
const s=async t=>{const a=String(await(0,r.readFileAsync)(t))
return(0,e.runInThisContext)(a,{filename:t,displayErrors:!0})}
exports.loadLocalScript=s
exports.loadScript=(e=>e.includes("://")?a(e):s(e))
const n=async e=>(await(0,t.fetchLikeRequest)(e)).json()
exports.loadRemoteJSON=n
const o=async e=>JSON.parse(await(0,r.readFileAsync)(e))
exports.loadLocalJSON=o
exports.loadJSON=(e=>e.includes("://")?n(e):o(e))
var a=require("./file/function")
const i=()=>["dr-js/library/Dr.browser.js",`${__dirname}/../library/Dr.browser.js`,`${__dirname}/Dr.browser.js`,"Dr.browser.js"].reduce((r,e)=>r||(0,s.tryRequireResolve)(e),null)
exports.DR_BROWSER_FILE_PATH=i
let o
exports.DR_BROWSER_SCRIPT_TAG=(()=>{void 0===o&&(o=`<script>${(0,r.readFileSync)(i())}<\/script>`)
return o})
const n=async r=>{const s=await(await(0,t.fetchLikeRequest)(r)).text()
return(0,e.runInThisContext)(s,{filename:r,displayErrors:!0})}
exports.loadRemoteScript=n
const c=async r=>{const s=String(await(0,a.readFileAsync)(r))
return(0,e.runInThisContext)(s,{filename:r,displayErrors:!0})}
exports.loadLocalScript=c
exports.loadScript=(r=>r.includes("://")?n(r):c(r))
const l=async r=>(await(0,t.fetchLikeRequest)(r)).json()
exports.loadRemoteJSON=l
const u=async r=>JSON.parse(await(0,a.readFileAsync)(r))
exports.loadLocalJSON=u
exports.loadJSON=(r=>r.includes("://")?l(r):u(r))
var t=require("../../common/time")
var e=require("../../common/data/Tree")
var i=require("./Run")
const o=(t,e,o,s)=>async()=>{const{promise:r,stdoutBufferPromise:p}=(0,i.runQuiet)({command:t})
await r
return((t,e,i=[],o=[])=>{const[s,...r]=t.split(e)
const p=(t=>{let e=" "===t.charAt(0)
var e=require("../../common/string")
var i=require("../../common/format")
var o=require("../../common/data/Tree")
var r=require("./Run")
const s=(t,e,i,o)=>async()=>{const{promise:s,stdoutBufferPromise:n}=(0,r.runQuiet)({command:t})
await s
return((t,e,i=[],o=[])=>{const[r,...s]=t.split(e)
const n=(t=>{let e=" "===t.charAt(0)
let i=2
const o=[0]
for(let s=0,r=t.length;s<r;s++)if(e!==(" "===t.charAt(s))){e=!e
if(0==--i){o.push(s)
i=2}}return o})(s)
if(p.length!==i.length)throw new Error(`title col mismatch: ${p.length}, expect: ${i.length}`)
return r.map(t=>t&&((t,e,i,o)=>{const s={}
for(let r=0,p=e.length;r<p;r++)s[i[r]]=o[r](t.slice(e[r],e[r+1]))
return s})(t,p,i,o)).filter(Boolean)})((await p).toString(),e,o,s)}
const s=t=>t.trim()
const r=t=>parseInt(t)
const p=["ps ax -ww -o pid,ppid,args","\n",["pid","ppid","command"],[r,r,s]]
const n=["ps ax -o pid,ppid,args",...p.slice(1)]
const c=["WMIC PROCESS get Commandline,ParentProcessId,Processid","\r\r\n",["command","ppid","pid"],[s,r,r]]
const d=o(...p)
const a=o(...n)
const m={linux:d,win32:o(...c),darwin:d,android:a}
const l=()=>{const t=m[process.platform]
for(let r=0,s=t.length;r<s;r++)if(e!==(" "===t.charAt(r))){e=!e
if(0==--i){o.push(r)
i=2}}return o})(r)
if(n.length!==i.length)throw new Error(`title col mismatch: ${n.length}, expect: ${i.length}`)
return s.map(t=>t&&((t,e,i,o)=>{const r={}
for(let s=0,n=e.length;s<n;s++)r[i[s]]=o[s](t.slice(e[s],e[s+1]))
return r})(t,n,i,o)).filter(Boolean)})((await n).toString(),e,i,o)}
const n=t=>t.trim()
const p=t=>parseInt(t)
const c=["ps ax -ww -o pid,ppid,args","\n",["pid","ppid","command"],[p,p,n]]
const a=["ps ax -o pid,ppid,args",...c.slice(1)]
const d=["WMIC PROCESS get Commandline,ParentProcessId,Processid","\r\r\n",["command","ppid","pid"],[n,p,p]]
const m=s(...c)
const l=s(...a)
const u={linux:m,win32:s(...d),darwin:m,android:l}
const w=()=>{const t=u[process.platform]
if(!t)throw new Error(`unsupported platform: ${process.platform}`)
return t()}
exports.getProcessList=l
const u={"pid++":(t,e)=>t.pid-e.pid,"pid--":(t,e)=>e.pid-t.pid,"ppid++":(t,e)=>t.ppid-e.ppid||t.pid-e.pid,"ppid--":(t,e)=>e.ppid-t.ppid||t.pid-e.pid}
exports.sortProcessList=((t,e="pid--")=>t.sort(u[e]))
const w=async t=>{void 0===t&&(t=await l())
exports.getProcessList=w
const f={"pid++":(t,e)=>t.pid-e.pid,"pid--":(t,e)=>e.pid-t.pid,"ppid++":(t,e)=>t.ppid-e.ppid||t.pid-e.pid,"ppid--":(t,e)=>e.ppid-t.ppid||t.pid-e.pid}
const h=(t,e="pid--")=>t.sort(f[e])
exports.sortProcessList=h
const T=async t=>{void 0===t&&(t=await w())
return t.reduce((t,e)=>{t[e.pid]=e
return t},{})}
exports.getProcessPidMap=w
const f=async t=>{void 0===t&&(t=await l())
exports.getProcessPidMap=T
const g=async t=>{void 0===t&&(t=await w())
const e={pid:0,ppid:-1,command:"ROOT"}
const i={0:e}
const o={0:{}}
for(const e of t){const{pid:t,ppid:s}=e
for(const e of t){const{pid:t,ppid:r}=e
if(0!==t){i[t]=e
void 0===o[s]&&(o[s]={})
o[s][t]=e}}i[e.pid]=e
Object.entries(o).forEach(([t,s])=>{let r=i[t]
r||(o[(r={pid:t,ppid:e.pid,command:""}).ppid][r.pid]=r)
r.subTree=s})
void 0===o[r]&&(o[r]={})
o[r][t]=e}}i[e.pid]=e
Object.entries(o).forEach(([t,r])=>{let s=i[t]
s||(o[(s={pid:t,ppid:e.pid,command:""}).ppid][s.pid]=s)
s.subTree=r})
return e}
exports.getProcessTree=f
exports.findProcessTreeNode=(async(t,e)=>{void 0===e&&(e=await f())
return y(e,e=>P(t,e))})
const h=async(t,e)=>{void 0===e&&(e=await w())
exports.getProcessTree=g
exports.findProcessTreeNode=(async(t,e)=>{void 0===e&&(e=await g())
return b(e,e=>P(t,e))})
const y=async(t,e)=>{void 0===e&&(e=await T())
return P(t,e[t.pid])}
exports.checkProcessExist=h
exports.checkProcessExist=y
const P=({pid:t,ppid:e,command:i},o)=>o&&o.pid===t&&(void 0===e||o.ppid===e)&&(void 0===i||o.command===i)
const g=async e=>{if(await h(e)){process.kill(e.pid)
const v=async e=>{if(await y(e)){process.kill(e.pid)
await(0,t.setTimeoutAsync)(500)
if(await h(e)){process.kill(e.pid)
if(await y(e)){process.kill(e.pid)
await(0,t.setTimeoutAsync)(2e3)
if(await h(e)){process.kill(e.pid,"SIGKILL")
if(await y(e)){process.kill(e.pid,"SIGKILL")
await(0,t.setTimeoutAsync)(4e3)
if(await h(e))throw new Error(`failed to stop process, pid: ${e.pid}, ppid: ${e.ppid}, command: ${e.command}`)}}}}
exports.tryKillProcess=g
exports.tryKillProcessTreeNode=(async(t,e=!1)=>{const i=e?g:({pid:t,command:e})=>g({pid:t,command:e})
t&&await T(t,i)
if(await y(e))throw new Error(`failed to stop process, pid: ${e.pid}, ppid: ${e.ppid}, command: ${e.command}`)}}}}
exports.tryKillProcess=v
exports.tryKillProcessTreeNode=(async(t,e=!1)=>{const i=e?v:({pid:t,command:e})=>v({pid:t,command:e})
t&&await $(t,i)
t&&await i(t)})
const x=t=>t.subTree&&Object.values(t.subTree)
const y=(0,e.createTreeDepthFirstSearch)(x)
const T=(0,e.createTreeBottomUpSearchAsync)(x)
const b=(0,o.createTreeDepthFirstSearch)(x)
const $=(0,o.createTreeBottomUpSearchAsync)(x)
exports.collectAllProcessStatus=(async(t,o)=>{if(t.startsWith("t")){const i=await g()
if(o)return i
const r=S(i)
return"tree-wide"!==t&&"tw"!==t?r.split("\n").map(t=>(0,e.autoEllipsis)(t,128,96,16)).join("\n"):r}const r=h(await w(),t)
return o?r:(0,i.padTable)({table:[["pid","ppid","command"],...r.map(({pid:t,ppid:e,command:i})=>[t,e,i])]})})
const S=t=>{const e=[]
const i=(t,{pid:i,command:o})=>e.push(`${`${i}`.padStart(8," ")} | ${t}${o||"..."}`)
i("",{pid:"pid",command:"command"});(0,o.prettyStringifyTree)([t,-1,!1],([t,e,i])=>t.subTree&&Object.values(t.subTree).map((t,i,{length:o})=>[t,e+1,i!==o-1]),i)
return e.join("\n")}

@@ -6,2 +6,7 @@ const tryRequire = (name = "") => {

};
export { tryRequire };
const tryRequireResolve = (name = "") => {
try {
return eval("require.resolve")(name);
} catch (error) {}
};
export { tryRequire, tryRequireResolve };

@@ -0,4 +1,12 @@

import { readFileSync } from "fs";
import { runInThisContext } from "vm";
import { tryRequireResolve } from "../env/tryRequire";
import { fetchLikeRequest } from "./net";
import { readFileAsync } from "./file/function";
const DR_BROWSER_FILE_PATH = () => [ "dr-js/library/Dr.browser.js", `${__dirname}/../library/Dr.browser.js`, `${__dirname}/Dr.browser.js`, "Dr.browser.js" ].reduce((o, path) => o || tryRequireResolve(path), null);
let cache;
const DR_BROWSER_SCRIPT_TAG = () => {
void 0 === cache && (cache = `<script>${readFileSync(DR_BROWSER_FILE_PATH())}<\/script>`);
return cache;
};
const loadRemoteScript = async uri => {

@@ -22,2 +30,2 @@ const scriptString = await (await fetchLikeRequest(uri)).text();

const loadJSON = uri => uri.includes("://") ? loadRemoteJSON(uri) : loadLocalJSON(uri);
export { loadRemoteScript, loadLocalScript, loadScript, loadRemoteJSON, loadLocalJSON, loadJSON };
export { DR_BROWSER_FILE_PATH, DR_BROWSER_SCRIPT_TAG, loadRemoteScript, loadLocalScript, loadScript, loadRemoteJSON, loadLocalJSON, loadJSON };
import { setTimeoutAsync } from "../../common/time";
import { createTreeDepthFirstSearch, createTreeBottomUpSearchAsync } from "../../common/data/Tree";
import { autoEllipsis } from "../../common/string";
import { padTable } from "../../common/format";
import { createTreeDepthFirstSearch, createTreeBottomUpSearchAsync, prettyStringifyTree } from "../../common/data/Tree";
import { runQuiet } from "./Run";

@@ -132,2 +134,24 @@ const createGetProcessList = (command, lineSeparator, keyList, valueProcessList) => async () => {

const processTreeBottomUpSearchAsync = createTreeBottomUpSearchAsync(getSubNodeListFunc);
export { getProcessList, sortProcessList, getProcessPidMap, getProcessTree, findProcessTreeNode, checkProcessExist, tryKillProcess, tryKillProcessTreeNode };
const collectAllProcessStatus = async (outputMode, isOutputJSON) => {
if (outputMode.startsWith("t")) {
const processRootInfo = await getProcessTree();
if (isOutputJSON) return processRootInfo;
const text = prettyStringifyProcessTree(processRootInfo);
return "tree-wide" !== outputMode && "tw" !== outputMode ? text.split("\n").map(line => autoEllipsis(line, 128, 96, 16)).join("\n") : text;
}
const processList = sortProcessList(await getProcessList(), outputMode);
return isOutputJSON ? processList : padTable({
table: [ [ "pid", "ppid", "command" ], ...processList.map(({pid, ppid, command}) => [ pid, ppid, command ]) ]
});
};
const prettyStringifyProcessTree = processRootInfo => {
const resultList = [];
const addLine = (prefix, {pid, command}) => resultList.push(`${`${pid}`.padStart(8, " ")} | ${prefix}${command || "..."}`);
addLine("", {
pid: "pid",
command: "command"
});
prettyStringifyTree([ processRootInfo, -1, !1 ], ([info, level, hasMore]) => info.subTree && Object.values(info.subTree).map((subInfo, subIndex, {length}) => [ subInfo, level + 1, subIndex !== length - 1 ]), addLine);
return resultList.join("\n");
};
export { getProcessList, sortProcessList, getProcessPidMap, getProcessTree, findProcessTreeNode, checkProcessExist, tryKillProcess, tryKillProcessTreeNode, collectAllProcessStatus };

@@ -1,1 +0,1 @@

{"name":"dr-js","version":"0.21.1-dev.0","description":"A collection of strange functions","author":"dr-js","license":"MIT","keywords":["Dr","Dr-js","JavaScript"],"repository":"github:dr-js/dr-js","bin":"bin/index.js","browser":"library/Dr.browser.js","engines":{"node":">=10.15","npm":">=6"},"sideEffects":false}
{"name":"dr-js","version":"0.21.1-dev.1","description":"A collection of strange functions","author":"dr-js","license":"MIT","keywords":["Dr","Dr-js","JavaScript"],"repository":"github:dr-js/dr-js","bin":"bin/index.js","browser":"library/Dr.browser.js","engines":{"node":">=10.15","npm":">=6"},"sideEffects":false}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc