jinrai 1.0.4 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/config.ts +1 -0
  2. package/front.config.json +24 -0
  3. package/index.ts +6 -1
  4. package/lib/bin/bin.js +12 -0
  5. package/lib/config/config.d.ts +1 -0
  6. package/lib/config/config.js +1 -0
  7. package/lib/{src → config/src/bin}/config/userConfig.d.ts +0 -2
  8. package/lib/index.d.ts +6 -1
  9. package/lib/index.js +2 -1
  10. package/lib/src/front/server-state/DataProxy.d.ts +8 -0
  11. package/lib/src/front/server-state/DataProxy.js +104 -0
  12. package/lib/src/front/server-state/SSR.d.ts +4 -0
  13. package/lib/src/front/server-state/SSR.js +6 -0
  14. package/lib/src/front/server-state/real.d.ts +1 -0
  15. package/lib/src/front/server-state/real.js +36 -0
  16. package/lib/src/front/server-state/serverStates.d.ts +5 -0
  17. package/lib/src/front/server-state/serverStates.js +29 -0
  18. package/lib/src/front/server-state/useServerState.d.ts +14 -0
  19. package/lib/src/front/server-state/useServerState.js +28 -0
  20. package/lib/src/front/url/JinraiContext.d.ts +6 -0
  21. package/lib/src/front/url/JinraiContext.js +8 -0
  22. package/lib/src/front/url/adapter/def.d.ts +2 -0
  23. package/lib/src/front/url/adapter/def.js +9 -0
  24. package/lib/src/front/url/adapter/rrd6.d.ts +2 -0
  25. package/lib/src/front/url/adapter/rrd6.js +12 -0
  26. package/lib/src/front/url/adapter/rrd7.d.ts +2 -0
  27. package/lib/src/front/url/adapter/rrd7.js +11 -0
  28. package/lib/src/front/url/params/useParamsIndex.d.ts +1 -0
  29. package/lib/src/front/url/params/useParamsIndex.js +15 -0
  30. package/lib/src/front/url/search/useSearch.d.ts +1 -0
  31. package/lib/src/front/url/search/useSearch.js +15 -0
  32. package/lib/src/front/url/search/useSearchValue.d.ts +16 -0
  33. package/lib/src/front/url/search/useSearchValue.js +49 -0
  34. package/lib/src/front/wrapper/Custom.d.ts +8 -0
  35. package/lib/src/front/wrapper/Custom.js +9 -0
  36. package/lib/vite/plugin.js +1 -0
  37. package/package.json +39 -7
  38. package/readme.md +11 -0
  39. package/rollup.front.config.mjs +57 -0
  40. package/src/bin/bin.ts +10 -0
  41. package/src/bin/build/build.ts +69 -0
  42. package/src/{config → bin/config}/userConfig.ts +0 -2
  43. package/src/bin/playwright/pageCollector.ts +11 -0
  44. package/src/{templates.ts → bin/playwright/templates.ts} +20 -29
  45. package/src/{routes → bin/routes}/Parser.ts +3 -3
  46. package/src/{routes → bin/routes}/getRoutes.ts +4 -4
  47. package/src/front/server-state/DataProxy.ts +120 -0
  48. package/src/front/server-state/SSR.ts +4 -0
  49. package/src/front/server-state/real.ts +41 -0
  50. package/src/front/server-state/serverStates.ts +36 -0
  51. package/src/front/server-state/useServerState.ts +48 -0
  52. package/src/front/url/JinraiContext.tsx +10 -0
  53. package/src/front/url/adapter/def.tsx +10 -0
  54. package/src/front/url/adapter/rrd6.tsx +16 -0
  55. package/src/front/url/adapter/rrd7.tsx +15 -0
  56. package/src/front/url/params/useParamsIndex.ts +16 -0
  57. package/src/front/url/search/useSearch.ts +15 -0
  58. package/src/front/url/search/useSearchValue.ts +72 -0
  59. package/src/front/wrapper/Custom.tsx +14 -0
  60. package/tests/custom.test.ts +2 -2
  61. package/tests/parse.test.ts +3 -3
  62. package/tsconfig.json +2 -2
  63. package/vite/plugin.ts +83 -0
  64. package/lib/bin.js +0 -12
  65. package/lib/generate.js +0 -26
  66. package/src/bin.ts +0 -66
  67. /package/lib/{src → config/src/bin}/config/define.d.ts +0 -0
  68. /package/src/{config → bin/config}/defaultIndexHtml.ts +0 -0
  69. /package/src/{config → bin/config}/define.ts +0 -0
  70. /package/src/{content/normolizeContent.ts → bin/content/normalizeContent.ts} +0 -0
  71. /package/src/{routes → bin/routes}/replaceDevScripts.ts +0 -0
  72. /package/src/{server → bin/server}/vitePreview.ts +0 -0
  73. /package/src/{types → bin/types}/shims.d.ts +0 -0
  74. /package/src/{ui → bin/ui}/task.tsx +0 -0
@@ -0,0 +1,41 @@
1
+ import { ssr } from "./SSR"
2
+ import { sources } from "./DataProxy"
3
+
4
+ export function real<T>(value: T): T {
5
+ if (!ssr.current) return value
6
+
7
+ switch (typeof value) {
8
+ case "number":
9
+ return value
10
+ case "string":
11
+ return value.startsWith("{{") && value.endsWith("}}") ? getArrayByPath(value.slice(2, -2)) : value
12
+
13
+ case "object":
14
+ // @ts-ignore
15
+ if (value && typeof value.getValue === "function") {
16
+ // @ts-ignore
17
+ return value.getValue()
18
+ }
19
+
20
+ return value
21
+
22
+ default:
23
+ return value
24
+ }
25
+ }
26
+
27
+ const getArrayByPath = (path: string) => {
28
+ const [sourceIndex, requestPath] = path.split("@", 2)
29
+ const keys = requestPath.split("/")
30
+ const requestId = keys.shift()
31
+
32
+ let link = sources.get(sourceIndex)
33
+
34
+ for (let key of keys) {
35
+ if (key.startsWith("[ITEM=")) key = key.slice(6, -1)
36
+
37
+ link = link[key]
38
+ }
39
+
40
+ return link
41
+ }
@@ -0,0 +1,36 @@
1
+ import createDataProxy from "./DataProxy"
2
+ import { ssr } from "./SSR"
3
+ import { ServerStateOptions } from "./useServerState"
4
+
5
+ export type ServerValue = any
6
+
7
+ export const serverStates = new Map<string, string>()
8
+ if (window != undefined) {
9
+ // @ts-ignore
10
+ window.__serverExportStates__ = serverStates
11
+ }
12
+
13
+ export const getServerValue = (key: string, def?: ServerValue) => {
14
+ if (key == "") {
15
+ return [def, false]
16
+ }
17
+
18
+ // @ts-ignore
19
+ if (window != undefined && window?.__serverInitialStates__ && key in window.__serverInitialStates__) {
20
+ // @ts-ignore
21
+ return [window.__serverInitialStates__[key], true]
22
+ }
23
+
24
+ return [serverStates.get(key) ?? def, false]
25
+ }
26
+
27
+ export const setServerValue = (key: string, value: ServerValue, options?: ServerStateOptions) => {
28
+ ssr.exportParams = true
29
+ const json = JSON.stringify({ value, options })
30
+ ssr.exportParams = false
31
+
32
+ console.log(key, json)
33
+ serverStates.set(key, json)
34
+
35
+ return createDataProxy(value, `${key}@`)
36
+ }
@@ -0,0 +1,48 @@
1
+ import { Dispatch, SetStateAction, useState } from "react"
2
+ import { ssr } from "./SSR"
3
+ import { getServerValue, ServerValue, setServerValue } from "./serverStates"
4
+
5
+ interface Request {
6
+ method: string
7
+ url: string
8
+ input: any
9
+ }
10
+
11
+ export interface ServerStateOptions {
12
+ source: {
13
+ request?: Request
14
+ }
15
+ }
16
+
17
+ export const useServerState = <T extends ServerValue>(
18
+ serverKey: string,
19
+ initialValue: T,
20
+ options?: ServerStateOptions,
21
+ ) => {
22
+ const [serverValue, isInitOnServer] = getServerValue(serverKey, initialValue)
23
+ const [value, setStateValue] = useState(serverValue)
24
+ const [isInit, setIsInit] = useState(isInitOnServer)
25
+
26
+ const setValue: Dispatch<SetStateAction<T>> = (value: T | ((prevState: T) => T)) => {
27
+ setStateValue((prev: T) => {
28
+ const result = value instanceof Function ? (value as (prevState: T) => T)(prev) : value
29
+
30
+ if (serverKey && ssr.current) {
31
+ return setServerValue(serverKey, result, options)
32
+ }
33
+
34
+ return result
35
+ })
36
+ }
37
+
38
+ const initOnServer = () => {
39
+ if (isInit) {
40
+ setIsInit(false)
41
+ return true
42
+ }
43
+
44
+ return false
45
+ }
46
+
47
+ return [value, setValue, initOnServer] as [T, Dispatch<SetStateAction<T>>, () => boolean]
48
+ }
@@ -0,0 +1,10 @@
1
+ import { createContext, DependencyList, ReactNode } from "react"
2
+
3
+ export interface JinraiProps {
4
+ deps?: DependencyList
5
+ children?: ReactNode
6
+ }
7
+ export const JinraiContext = createContext<JinraiProps>({
8
+ deps: [],
9
+ children: undefined,
10
+ })
@@ -0,0 +1,10 @@
1
+ import { JinraiContext, JinraiProps } from "../JinraiContext"
2
+ import { NuqsAdapter } from "nuqs/adapters/react"
3
+
4
+ export const Adapter = (props: JinraiProps) => {
5
+ return (
6
+ <NuqsAdapter>
7
+ <JinraiContext.Provider value={{ deps: props.deps ?? [] }} {...props} />
8
+ </NuqsAdapter>
9
+ )
10
+ }
@@ -0,0 +1,16 @@
1
+ import { NuqsAdapter } from "nuqs/adapters/react-router/v6"
2
+
3
+ // @ts-ignore
4
+ import { useLocation } from "react-router-dom"
5
+ import { JinraiContext, JinraiProps } from "../JinraiContext"
6
+
7
+ export const Adapter = (props: JinraiProps) => {
8
+ console.log("LOAD ADAPTER")
9
+ const { pathname } = useLocation()
10
+
11
+ return (
12
+ <NuqsAdapter>
13
+ <JinraiContext.Provider value={{ deps: [...(props.deps ?? [], [pathname])] }} {...props} />
14
+ </NuqsAdapter>
15
+ )
16
+ }
@@ -0,0 +1,15 @@
1
+ import type { FC } from "react"
2
+ import { NuqsAdapter } from "nuqs/adapters/react-router/v7"
3
+ // @ts-ignore
4
+ import { useLocation } from "react-router-dom"
5
+ import { JinraiContext, JinraiProps } from "../JinraiContext"
6
+
7
+ export const Adapter = (props: JinraiProps) => {
8
+ const { pathname } = useLocation()
9
+
10
+ return (
11
+ <NuqsAdapter>
12
+ <JinraiContext.Provider value={{ deps: [...(props.deps ?? [], [pathname])] }} {...props} />
13
+ </NuqsAdapter>
14
+ )
15
+ }
@@ -0,0 +1,16 @@
1
+ import { useContext, useMemo } from "react"
2
+
3
+ import { getJinraiValue } from "../search/useSearchValue"
4
+ import { JinraiContext } from "../JinraiContext"
5
+ import { ssr } from "../../server-state/SSR"
6
+
7
+ export const useParamsIndex = (index: number, def: string = ""): string => {
8
+ const { deps } = useContext(JinraiContext)
9
+ const value = useMemo(() => location.pathname.split("/")[index + 1] ?? def, deps ? deps : [])
10
+
11
+ const stableValue = useMemo(() => {
12
+ return ssr.current ? value.bindSource(getJinraiValue(index.toString(), "paramsIndex", "", def)) : value
13
+ }, [value])
14
+
15
+ return stableValue
16
+ }
@@ -0,0 +1,15 @@
1
+ import { useContext, useMemo } from "react"
2
+ import { JinraiContext } from "../JinraiContext"
3
+ import { ssr } from "../../server-state/SSR"
4
+ import { getJinraiValue } from "./useSearchValue"
5
+
6
+ export const useSearch = (): string => {
7
+ const { deps } = useContext(JinraiContext)
8
+ const value = useMemo(() => location.search.substring(1), deps ? deps : [])
9
+
10
+ const stableValue = useMemo(() => {
11
+ return ssr.current ? value.bindSource(getJinraiValue("", "search", "", "")) : value
12
+ }, [value])
13
+
14
+ return stableValue
15
+ }
@@ -0,0 +1,72 @@
1
+ import { parseAsArrayOf, parseAsString, useQueryState, UseQueryStateReturn } from "nuqs"
2
+ import { useMemo } from "react"
3
+ import { ssr } from "../../server-state/SSR"
4
+
5
+ declare global {
6
+ interface String {
7
+ source?: string
8
+ toJSON: () => string
9
+ bindSource: (source: string) => string
10
+ }
11
+ interface Array<T> {
12
+ source?: string
13
+ toJSON(): any
14
+ bindSource(source: string): T[]
15
+ }
16
+ }
17
+
18
+ function toJSON() {
19
+ // @ts-ignore
20
+ if (ssr.exportParams) return this.source
21
+ // @ts-ignore
22
+ return this
23
+ }
24
+
25
+ if (true) {
26
+ String.prototype.source = undefined
27
+ String.prototype.toJSON = toJSON
28
+ String.prototype.bindSource = function (source: string): string {
29
+ const result = new String(this)
30
+ result.source = source
31
+ return result as string
32
+ }
33
+
34
+ if (!Array.prototype.toJSON) {
35
+ Array.prototype.toJSON = toJSON
36
+ }
37
+
38
+ if (!Array.prototype.bindSource) {
39
+ Array.prototype.bindSource = function (source: string) {
40
+ this.source = source
41
+ return this
42
+ }
43
+ }
44
+ }
45
+
46
+ export const useSearchValue = (key: string, defaultValue: string): UseQueryStateReturn<string, string> => {
47
+ const [value, setValue] = useQueryState(key, { defaultValue })
48
+
49
+ const stableValue = useMemo(() => {
50
+ return ssr.current ? value.bindSource(getJinraiValue(key, "searchString", "", defaultValue)) : value
51
+ }, [key, value])
52
+
53
+ return [stableValue, setValue]
54
+ }
55
+
56
+ export const useSearchArray = (
57
+ key: string,
58
+ defaultValue: string[] = [],
59
+ separator = ",",
60
+ ): UseQueryStateReturn<string[], string[]> => {
61
+ const stableDefault = useMemo(() => defaultValue, [])
62
+ const [value, setValue] = useQueryState(key, parseAsArrayOf(parseAsString, separator).withDefault(stableDefault))
63
+ const stableValue = useMemo(() => {
64
+ return ssr.current ? value.bindSource(getJinraiValue(key, "searchArray", separator, defaultValue)) : value
65
+ }, [key, value])
66
+
67
+ return [stableValue, setValue]
68
+ }
69
+
70
+ export const getJinraiValue = (key: string, type: string, separator: string, def: any) => {
71
+ return `@JV[[${JSON.stringify({ key, type, separator, def })}]]`
72
+ }
@@ -0,0 +1,14 @@
1
+ import type { FC, ReactElement, ReactNode } from "react"
2
+ import { ssr } from "../server-state/SSR"
3
+
4
+ interface CustomProps {
5
+ name: string
6
+ props: object
7
+ children: ReactNode
8
+ }
9
+
10
+ export const Custom = ({ name, props, children }: CustomProps) => {
11
+ if (!ssr.current) return children as ReactElement
12
+
13
+ return `<custom>${JSON.stringify({ name, props })}<custom>`
14
+ }
@@ -1,11 +1,11 @@
1
1
  import { describe, expect, it } from "vitest"
2
- import { Parser } from "../src/routes/Parser"
2
+ import { Parser } from "../src/bin/routes/Parser"
3
3
  import { readFile } from "fs/promises"
4
4
 
5
5
  import custom from "./content/custom.json"
6
6
 
7
7
  describe("test custom component", async () => {
8
- const parsr = new Parser({ normolize: true })
8
+ const parsr = new Parser({ normalize: true })
9
9
 
10
10
  it("parse custom.html", async () => {
11
11
  const html = await readFile("./tests/content/custom.html", "utf-8")
@@ -1,6 +1,6 @@
1
1
  import { readFile } from "node:fs/promises"
2
2
  import { describe, expect, it } from "vitest"
3
- import { Parser } from "../src/routes/Parser"
3
+ import { Parser } from "../src/bin/routes/Parser"
4
4
 
5
5
  import result_1 from "./content/1_result.json"
6
6
  import result_2 from "./content/2_result.json"
@@ -11,7 +11,7 @@ import index_tempates from "./content/index_with_templates.json"
11
11
  import templates from "./content/templates.json"
12
12
 
13
13
  describe("test Parser class", async () => {
14
- const parsr = new Parser({ normolize: true })
14
+ const parsr = new Parser({ normalize: true })
15
15
 
16
16
  it("parse 1.html", async () => {
17
17
  const html = await readFile("./tests/content/1.html", "utf-8")
@@ -40,7 +40,7 @@ describe("test Parser class", async () => {
40
40
  })
41
41
 
42
42
  describe("test Parser templates", async () => {
43
- const parsr = new Parser({ normolize: true, templates: true })
43
+ const parsr = new Parser({ normalize: true, templates: true })
44
44
 
45
45
  it("parse index.html", async () => {
46
46
  const html = await readFile("./tests/content/index.html", "utf-8")
package/tsconfig.json CHANGED
@@ -5,9 +5,9 @@
5
5
  "module": "esnext",
6
6
  "declaration": true,
7
7
  "emitDeclarationOnly": true,
8
- "outDir": "lib",
8
+ "outDir": "lib/config",
9
9
  "skipLibCheck": true
10
10
  },
11
- "include": ["index.ts", "src/types"],
11
+ "include": ["config.ts", "src/bin/types"],
12
12
 
13
13
  }
package/vite/plugin.ts ADDED
@@ -0,0 +1,83 @@
1
+ import { createServer, type Plugin, type ViteDevServer } from "vite"
2
+
3
+ import { AsyncLocalStorage } from "async_hooks"
4
+ import { type BrowserContext, chromium } from "playwright"
5
+ import { pageCollector } from "../src/bin/playwright/pageCollector"
6
+ import { getRoutesAndTemplates } from "../src/bin/routes/getRoutes"
7
+
8
+ import { writeFile } from "fs/promises"
9
+
10
+ const urlStorage = new AsyncLocalStorage<string>()
11
+
12
+ export function hydration(): Plugin {
13
+ if (process.env.CHILD_JINRAI_DEV_SERVER) {
14
+ return { name: "vite-jinrai-dummy" }
15
+ }
16
+ process.env.CHILD_JINRAI_DEV_SERVER = "true"
17
+
18
+ console.log("create mirror")
19
+ let mirrorServer: ViteDevServer | undefined = undefined
20
+ let context: BrowserContext | undefined = undefined
21
+
22
+ let debugUrl: string | undefined = undefined
23
+
24
+ createServer({
25
+ server: {
26
+ port: 3012,
27
+ },
28
+ }).then(async server => {
29
+ mirrorServer = server
30
+ await mirrorServer.listen()
31
+
32
+ debugUrl = mirrorServer.resolvedUrls?.local[0].slice(0, -1)
33
+
34
+ chromium.launch({ headless: true, devtools: false }).then(async browser => {
35
+ console.log("create context")
36
+ context = await browser.newContext({
37
+ userAgent: "____fast-ssr-tool___",
38
+ locale: "ru-RU",
39
+ })
40
+ })
41
+ })
42
+
43
+ return {
44
+ name: "vite-jinrai",
45
+
46
+ configureServer(server: ViteDevServer) {
47
+ server.middlewares.use((req, _res, next) => {
48
+ if (req.url?.startsWith("/@")) {
49
+ return next()
50
+ }
51
+ urlStorage.run(req.url!, () => {
52
+ next()
53
+ })
54
+ })
55
+ },
56
+
57
+ async transformIndexHtml(html: string) {
58
+ const currentUrl = urlStorage.getStore()
59
+ if (currentUrl && context) {
60
+ const page = await context.newPage()
61
+ await page.goto(debugUrl + currentUrl)
62
+ await page.waitForLoadState("networkidle")
63
+
64
+ const { root } = await pageCollector(page)
65
+ const { routes } = getRoutesAndTemplates([{ id: 1, input: [], mask: currentUrl, root }], true, false)
66
+
67
+ console.log({ routes })
68
+ writeFile("./routs.json", JSON.stringify(routes, null, 2))
69
+
70
+ const result = html.replace("<!--app-html-->", root)
71
+
72
+ page.close()
73
+ return result
74
+ }
75
+ return html
76
+ },
77
+
78
+ closeWatcher() {
79
+ console.log("Stop server")
80
+ // mirrorServer?.close()
81
+ },
82
+ }
83
+ }
package/lib/bin.js DELETED
@@ -1,12 +0,0 @@
1
- #!/usr/bin/env node
2
- var Xt=Object.defineProperty;var Zt=(t,e)=>{for(var r in e)Xt(t,r,{get:e[r],enumerable:!0})};import{writeFile as ht}from"node:fs/promises";import{createJiti as Qt}from"jiti";import{pathToFileURL as te}from"url";import{resolve as ee}from"path";var _t=async t=>{let e=Qt(import.meta.url,{debug:!1}),r=te(ee(process.cwd(),t)).href;return(await e.import(r)).default};var R=t=>t.replace(/\r?\n|\r/g," ").replace(/\s+/g," ").replace(/>\s+</g,"><").trim();import{createHash as re}from"node:crypto";var I=class{options;openVar="{{";createVar="}}";createArray="</loopwrapper";createCustom="</custom";deepUp="<loopwrapper";deepUp2="<custom";templates={};constructor(e){this.options=e}parse(e){let r=[];return this.handle(this.options?.normolize?R(e):e,r),r}handle(e,r){let i,s=0,n=0,o=new RegExp("(<loopwrapper(\\s+[^>]*)?>|</loopwrapper>|{{|}}|<custom(\\s+[^>]*)?>|</custom>)","gi");for(;(i=o.exec(e))!==null;){let l=i[0],u=e.substring(n,i.index);if(l.startsWith(this.createArray)){if(s--,s>0)continue;this.createElement(r,u)}else if(l.startsWith(this.deepUp)){if(s++,s>1)continue;this.createElement(r,u)}else if(l.startsWith(this.createCustom)){if(s--,s!=0)continue;this.createCustomElement(r,u)}else if(l.startsWith(this.deepUp2)){if(s++,s>1)continue;this.createElement(r,u)}else if(l==this.createVar){if(s!=0)continue;this.createElement(r,u,!0)}else{if(s!=0)continue;this.createElement(r,u)}n=i.index+l.length}if(n<e.length){let l=e.substring(n);this.createElement(r,l)}}createCustomElement(e,r){let[i,...s]=r.trimStart().split("|");r=s.join("|"),e.push({type:"custom",name:i,props:r})}createElement(e,r,i){if(i)return e.push({type:"value",key:r});if(r.trimStart().startsWith("ArrayDataKey=")){let[s,...n]=r.trimStart().substring(13).split("|");r=n.join("|");let o=[];return this.handle(r,o),e.push({type:"array",data:o,key:s})}r&&e.push({type:"html",content:this.options?.templates?this.createTemplate(r):r})}createTemplate(e){return e in this.templates||(this.templates[e]=re("md5").update(Object.keys(this.templates).length.toString()).digest("hex")),this.templates[e]}};var Ft=t=>{let e=[],r=new I({normolize:!0,templates:!0});for(let[i,s]of t.entries()){let n=r.parse(s.root),o=s.mask.replaceAll("/","\\/").replace(/{(.*?)}/,".+?");e.push({id:i,content:n,mask:o,requests:s.input})}return{routes:e,templates:r.templates}};import{chromium as Ht}from"playwright";import U from"node:process";var xt=(t=0)=>e=>`\x1B[${e+t}m`,bt=(t=0)=>e=>`\x1B[${38+t};5;${e}m`,Et=(t=0)=>(e,r,i)=>`\x1B[${38+t};2;${e};${r};${i}m`,c={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},hr=Object.keys(c.modifier),ie=Object.keys(c.color),se=Object.keys(c.bgColor),dr=[...ie,...se];function ne(){let t=new Map;for(let[e,r]of Object.entries(c)){for(let[i,s]of Object.entries(r))c[i]={open:`\x1B[${s[0]}m`,close:`\x1B[${s[1]}m`},r[i]=c[i],t.set(s[0],s[1]);Object.defineProperty(c,e,{value:r,enumerable:!1})}return Object.defineProperty(c,"codes",{value:t,enumerable:!1}),c.color.close="\x1B[39m",c.bgColor.close="\x1B[49m",c.color.ansi=xt(),c.color.ansi256=bt(),c.color.ansi16m=Et(),c.bgColor.ansi=xt(10),c.bgColor.ansi256=bt(10),c.bgColor.ansi16m=Et(10),Object.defineProperties(c,{rgbToAnsi256:{value(e,r,i){return e===r&&r===i?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(i/255*5)},enumerable:!1},hexToRgb:{value(e){let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!r)return[0,0,0];let[i]=r;i.length===3&&(i=[...i].map(n=>n+n).join(""));let s=Number.parseInt(i,16);return[s>>16&255,s>>8&255,s&255]},enumerable:!1},hexToAnsi256:{value:e=>c.rgbToAnsi256(...c.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let r,i,s;if(e>=232)r=((e-232)*10+8)/255,i=r,s=r;else{e-=16;let l=e%36;r=Math.floor(e/36)/5,i=Math.floor(l/6)/5,s=l%6/5}let n=Math.max(r,i,s)*2;if(n===0)return 30;let o=30+(Math.round(s)<<2|Math.round(i)<<1|Math.round(r));return n===2&&(o+=60),o},enumerable:!1},rgbToAnsi:{value:(e,r,i)=>c.ansi256ToAnsi(c.rgbToAnsi256(e,r,i)),enumerable:!1},hexToAnsi:{value:e=>c.ansi256ToAnsi(c.hexToAnsi256(e)),enumerable:!1}}),c}var oe=ne(),p=oe;import q from"node:process";import ae from"node:os";import Ct from"node:tty";function m(t,e=globalThis.Deno?globalThis.Deno.args:q.argv){let r=t.startsWith("-")?"":t.length===1?"-":"--",i=e.indexOf(r+t),s=e.indexOf("--");return i!==-1&&(s===-1||i<s)}var{env:f}=q,P;m("no-color")||m("no-colors")||m("color=false")||m("color=never")?P=0:(m("color")||m("colors")||m("color=true")||m("color=always"))&&(P=1);function le(){if("FORCE_COLOR"in f)return f.FORCE_COLOR==="true"?1:f.FORCE_COLOR==="false"?0:f.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(f.FORCE_COLOR,10),3)}function ce(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function fe(t,{streamIsTTY:e,sniffFlags:r=!0}={}){let i=le();i!==void 0&&(P=i);let s=r?P:i;if(s===0)return 0;if(r){if(m("color=16m")||m("color=full")||m("color=truecolor"))return 3;if(m("color=256"))return 2}if("TF_BUILD"in f&&"AGENT_NAME"in f)return 1;if(t&&!e&&s===void 0)return 0;let n=s||0;if(f.TERM==="dumb")return n;if(q.platform==="win32"){let o=ae.release().split(".");return Number(o[0])>=10&&Number(o[2])>=10586?Number(o[2])>=14931?3:2:1}if("CI"in f)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(o=>o in f)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(o=>o in f)||f.CI_NAME==="codeship"?1:n;if("TEAMCITY_VERSION"in f)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(f.TEAMCITY_VERSION)?1:0;if(f.COLORTERM==="truecolor"||f.TERM==="xterm-kitty"||f.TERM==="xterm-ghostty"||f.TERM==="wezterm")return 3;if("TERM_PROGRAM"in f){let o=Number.parseInt((f.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(f.TERM_PROGRAM){case"iTerm.app":return o>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(f.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(f.TERM)||"COLORTERM"in f?1:n}function yt(t,e={}){let r=fe(t,{streamIsTTY:t&&t.isTTY,...e});return ce(r)}var ue={stdout:yt({isTTY:Ct.isatty(1)}),stderr:yt({isTTY:Ct.isatty(2)})},wt=ue;function vt(t,e,r){let i=t.indexOf(e);if(i===-1)return t;let s=e.length,n=0,o="";do o+=t.slice(n,i)+e+r,n=i+s,i=t.indexOf(e,n);while(i!==-1);return o+=t.slice(n),o}function Tt(t,e,r,i){let s=0,n="";do{let o=t[i-1]==="\r";n+=t.slice(s,o?i-1:i)+e+(o?`\r
3
- `:`
4
- `)+r,s=i+1,i=t.indexOf(`
5
- `,s)}while(i!==-1);return n+=t.slice(s),n}var{stdout:At,stderr:Bt}=wt,z=Symbol("GENERATOR"),y=Symbol("STYLER"),B=Symbol("IS_EMPTY"),St=["ansi","ansi","ansi256","ansi16m"],w=Object.create(null),me=(t,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=At?At.level:0;t.level=e.level===void 0?r:e.level};var pe=t=>{let e=(...r)=>r.join(" ");return me(e,t),Object.setPrototypeOf(e,S.prototype),e};function S(t){return pe(t)}Object.setPrototypeOf(S.prototype,Function.prototype);for(let[t,e]of Object.entries(p))w[t]={get(){let r=M(this,J(e.open,e.close,this[y]),this[B]);return Object.defineProperty(this,t,{value:r}),r}};w.visible={get(){let t=M(this,this[y],!0);return Object.defineProperty(this,"visible",{value:t}),t}};var K=(t,e,r,...i)=>t==="rgb"?e==="ansi16m"?p[r].ansi16m(...i):e==="ansi256"?p[r].ansi256(p.rgbToAnsi256(...i)):p[r].ansi(p.rgbToAnsi(...i)):t==="hex"?K("rgb",e,r,...p.hexToRgb(...i)):p[r][t](...i),he=["rgb","hex","ansi256"];for(let t of he){w[t]={get(){let{level:r}=this;return function(...i){let s=J(K(t,St[r],"color",...i),p.color.close,this[y]);return M(this,s,this[B])}}};let e="bg"+t[0].toUpperCase()+t.slice(1);w[e]={get(){let{level:r}=this;return function(...i){let s=J(K(t,St[r],"bgColor",...i),p.bgColor.close,this[y]);return M(this,s,this[B])}}}}var de=Object.defineProperties(()=>{},{...w,level:{enumerable:!0,get(){return this[z].level},set(t){this[z].level=t}}}),J=(t,e,r)=>{let i,s;return r===void 0?(i=t,s=e):(i=r.openAll+t,s=e+r.closeAll),{open:t,close:e,openAll:i,closeAll:s,parent:r}},M=(t,e,r)=>{let i=(...s)=>ge(i,s.length===1?""+s[0]:s.join(" "));return Object.setPrototypeOf(i,de),i[z]=t,i[y]=e,i[B]=r,i},ge=(t,e)=>{if(t.level<=0||!e)return t[B]?"":e;let r=t[y];if(r===void 0)return e;let{openAll:i,closeAll:s}=r;if(e.includes("\x1B"))for(;r!==void 0;)e=vt(e,r.close,r.open),r=r.parent;let n=e.indexOf(`
6
- `);return n!==-1&&(e=Tt(e,s,i,n)),i+e+s};Object.defineProperties(S.prototype,w);var _e=S(),vr=S({level:Bt?Bt.level:0});var Ot=_e;import Nt from"node:process";import L from"node:process";var Fe=(t,e,r,i)=>{if(r==="length"||r==="prototype"||r==="arguments"||r==="caller")return;let s=Object.getOwnPropertyDescriptor(t,r),n=Object.getOwnPropertyDescriptor(e,r);!xe(s,n)&&i||Object.defineProperty(t,r,n)},xe=function(t,e){return t===void 0||t.configurable||t.writable===e.writable&&t.enumerable===e.enumerable&&t.configurable===e.configurable&&(t.writable||t.value===e.value)},be=(t,e)=>{let r=Object.getPrototypeOf(e);r!==Object.getPrototypeOf(t)&&Object.setPrototypeOf(t,r)},Ee=(t,e)=>`/* Wrapped ${t}*/
7
- ${e}`,Ce=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),ye=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),we=(t,e,r)=>{let i=r===""?"":`with ${r.trim()}() `,s=Ee.bind(null,i,e.toString());Object.defineProperty(s,"name",ye);let{writable:n,enumerable:o,configurable:l}=Ce;Object.defineProperty(t,"toString",{value:s,writable:n,enumerable:o,configurable:l})};function X(t,e,{ignoreNonConfigurable:r=!1}={}){let{name:i}=t;for(let s of Reflect.ownKeys(e))Fe(t,e,s,r);return be(t,e),we(t,e,i),t}var N=new WeakMap,Dt=(t,e={})=>{if(typeof t!="function")throw new TypeError("Expected a function");let r,i=0,s=t.displayName||t.name||"<anonymous>",n=function(...o){if(N.set(n,++i),i===1)r=t.apply(this,o),t=void 0;else if(e.throw===!0)throw new Error(`Function \`${s}\` can only be called once`);return r};return X(n,t),N.set(n,i),n};Dt.callCount=t=>{if(!N.has(t))throw new Error(`The given function \`${t.name}\` is not wrapped by the \`onetime\` package`);return N.get(t)};var Rt=Dt;var F=[];F.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&F.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&F.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var j=t=>!!t&&typeof t=="object"&&typeof t.removeListener=="function"&&typeof t.emit=="function"&&typeof t.reallyExit=="function"&&typeof t.listeners=="function"&&typeof t.kill=="function"&&typeof t.pid=="number"&&typeof t.on=="function",Z=Symbol.for("signal-exit emitter"),Q=globalThis,ve=Object.defineProperty.bind(Object),tt=class{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(Q[Z])return Q[Z];ve(Q,Z,{value:this,writable:!1,enumerable:!1,configurable:!1})}on(e,r){this.listeners[e].push(r)}removeListener(e,r){let i=this.listeners[e],s=i.indexOf(r);s!==-1&&(s===0&&i.length===1?i.length=0:i.splice(s,1))}emit(e,r,i){if(this.emitted[e])return!1;this.emitted[e]=!0;let s=!1;for(let n of this.listeners[e])s=n(r,i)===!0||s;return e==="exit"&&(s=this.emit("afterExit",r,i)||s),s}},k=class{},Te=t=>({onExit(e,r){return t.onExit(e,r)},load(){return t.load()},unload(){return t.unload()}}),et=class extends k{onExit(){return()=>{}}load(){}unload(){}},rt=class extends k{#n=it.platform==="win32"?"SIGINT":"SIGHUP";#i=new tt;#t;#s;#p;#u={};#e=!1;constructor(e){super(),this.#t=e,this.#u={};for(let r of F)this.#u[r]=()=>{let i=this.#t.listeners(r),{count:s}=this.#i,n=e;if(typeof n.__signal_exit_emitter__=="object"&&typeof n.__signal_exit_emitter__.count=="number"&&(s+=n.__signal_exit_emitter__.count),i.length===s){this.unload();let o=this.#i.emit("exit",null,r),l=r==="SIGHUP"?this.#n:r;o||e.kill(e.pid,l)}};this.#p=e.reallyExit,this.#s=e.emit}onExit(e,r){if(!j(this.#t))return()=>{};this.#e===!1&&this.load();let i=r?.alwaysLast?"afterExit":"exit";return this.#i.on(i,e),()=>{this.#i.removeListener(i,e),this.#i.listeners.exit.length===0&&this.#i.listeners.afterExit.length===0&&this.unload()}}load(){if(!this.#e){this.#e=!0,this.#i.count+=1;for(let e of F)try{let r=this.#u[e];r&&this.#t.on(e,r)}catch{}this.#t.emit=(e,...r)=>this.#r(e,...r),this.#t.reallyExit=e=>this.#o(e)}}unload(){this.#e&&(this.#e=!1,F.forEach(e=>{let r=this.#u[e];if(!r)throw new Error("Listener not defined for signal: "+e);try{this.#t.removeListener(e,r)}catch{}}),this.#t.emit=this.#s,this.#t.reallyExit=this.#p,this.#i.count-=1)}#o(e){return j(this.#t)?(this.#t.exitCode=e||0,this.#i.emit("exit",this.#t.exitCode,null),this.#p.call(this.#t,this.#t.exitCode)):0}#r(e,...r){let i=this.#s;if(e==="exit"&&j(this.#t)){typeof r[0]=="number"&&(this.#t.exitCode=r[0]);let s=i.call(this.#t,e,...r);return this.#i.emit("exit",this.#t.exitCode,null),s}else return i.call(this.#t,e,...r)}},it=globalThis.process,{onExit:It,load:Rr,unload:Ir}=Te(j(it)?new rt(it):new et);var Pt=L.stderr.isTTY?L.stderr:L.stdout.isTTY?L.stdout:void 0,Ae=Pt?Rt(()=>{It(()=>{Pt.write("\x1B[?25h")},{alwaysLast:!0})}):()=>{},Mt=Ae;var G=!1,v={};v.show=(t=Nt.stderr)=>{t.isTTY&&(G=!1,t.write("\x1B[?25h"))};v.hide=(t=Nt.stderr)=>{t.isTTY&&(Mt(),G=!0,t.write("\x1B[?25l"))};v.toggle=(t,e)=>{t!==void 0&&(G=t),G?v.show(e):v.hide(e)};var st=v;var nt={dots:{interval:80,frames:["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"]},dots2:{interval:80,frames:["\u28FE","\u28FD","\u28FB","\u28BF","\u287F","\u28DF","\u28EF","\u28F7"]},dots3:{interval:80,frames:["\u280B","\u2819","\u281A","\u281E","\u2816","\u2826","\u2834","\u2832","\u2833","\u2813"]},dots4:{interval:80,frames:["\u2804","\u2806","\u2807","\u280B","\u2819","\u2838","\u2830","\u2820","\u2830","\u2838","\u2819","\u280B","\u2807","\u2806"]},dots5:{interval:80,frames:["\u280B","\u2819","\u281A","\u2812","\u2802","\u2802","\u2812","\u2832","\u2834","\u2826","\u2816","\u2812","\u2810","\u2810","\u2812","\u2813","\u280B"]},dots6:{interval:80,frames:["\u2801","\u2809","\u2819","\u281A","\u2812","\u2802","\u2802","\u2812","\u2832","\u2834","\u2824","\u2804","\u2804","\u2824","\u2834","\u2832","\u2812","\u2802","\u2802","\u2812","\u281A","\u2819","\u2809","\u2801"]},dots7:{interval:80,frames:["\u2808","\u2809","\u280B","\u2813","\u2812","\u2810","\u2810","\u2812","\u2816","\u2826","\u2824","\u2820","\u2820","\u2824","\u2826","\u2816","\u2812","\u2810","\u2810","\u2812","\u2813","\u280B","\u2809","\u2808"]},dots8:{interval:80,frames:["\u2801","\u2801","\u2809","\u2819","\u281A","\u2812","\u2802","\u2802","\u2812","\u2832","\u2834","\u2824","\u2804","\u2804","\u2824","\u2820","\u2820","\u2824","\u2826","\u2816","\u2812","\u2810","\u2810","\u2812","\u2813","\u280B","\u2809","\u2808","\u2808"]},dots9:{interval:80,frames:["\u28B9","\u28BA","\u28BC","\u28F8","\u28C7","\u2867","\u2857","\u284F"]},dots10:{interval:80,frames:["\u2884","\u2882","\u2881","\u2841","\u2848","\u2850","\u2860"]},dots11:{interval:100,frames:["\u2801","\u2802","\u2804","\u2840","\u2880","\u2820","\u2810","\u2808"]},dots12:{interval:80,frames:["\u2880\u2800","\u2840\u2800","\u2804\u2800","\u2882\u2800","\u2842\u2800","\u2805\u2800","\u2883\u2800","\u2843\u2800","\u280D\u2800","\u288B\u2800","\u284B\u2800","\u280D\u2801","\u288B\u2801","\u284B\u2801","\u280D\u2809","\u280B\u2809","\u280B\u2809","\u2809\u2819","\u2809\u2819","\u2809\u2829","\u2808\u2899","\u2808\u2859","\u2888\u2829","\u2840\u2899","\u2804\u2859","\u2882\u2829","\u2842\u2898","\u2805\u2858","\u2883\u2828","\u2843\u2890","\u280D\u2850","\u288B\u2820","\u284B\u2880","\u280D\u2841","\u288B\u2801","\u284B\u2801","\u280D\u2809","\u280B\u2809","\u280B\u2809","\u2809\u2819","\u2809\u2819","\u2809\u2829","\u2808\u2899","\u2808\u2859","\u2808\u2829","\u2800\u2899","\u2800\u2859","\u2800\u2829","\u2800\u2898","\u2800\u2858","\u2800\u2828","\u2800\u2890","\u2800\u2850","\u2800\u2820","\u2800\u2880","\u2800\u2840"]},dots13:{interval:80,frames:["\u28FC","\u28F9","\u28BB","\u283F","\u285F","\u28CF","\u28E7","\u28F6"]},dots14:{interval:80,frames:["\u2809\u2809","\u2808\u2819","\u2800\u2839","\u2800\u28B8","\u2800\u28F0","\u2880\u28E0","\u28C0\u28C0","\u28C4\u2840","\u28C6\u2800","\u2847\u2800","\u280F\u2800","\u280B\u2801"]},dots8Bit:{interval:80,frames:["\u2800","\u2801","\u2802","\u2803","\u2804","\u2805","\u2806","\u2807","\u2840","\u2841","\u2842","\u2843","\u2844","\u2845","\u2846","\u2847","\u2808","\u2809","\u280A","\u280B","\u280C","\u280D","\u280E","\u280F","\u2848","\u2849","\u284A","\u284B","\u284C","\u284D","\u284E","\u284F","\u2810","\u2811","\u2812","\u2813","\u2814","\u2815","\u2816","\u2817","\u2850","\u2851","\u2852","\u2853","\u2854","\u2855","\u2856","\u2857","\u2818","\u2819","\u281A","\u281B","\u281C","\u281D","\u281E","\u281F","\u2858","\u2859","\u285A","\u285B","\u285C","\u285D","\u285E","\u285F","\u2820","\u2821","\u2822","\u2823","\u2824","\u2825","\u2826","\u2827","\u2860","\u2861","\u2862","\u2863","\u2864","\u2865","\u2866","\u2867","\u2828","\u2829","\u282A","\u282B","\u282C","\u282D","\u282E","\u282F","\u2868","\u2869","\u286A","\u286B","\u286C","\u286D","\u286E","\u286F","\u2830","\u2831","\u2832","\u2833","\u2834","\u2835","\u2836","\u2837","\u2870","\u2871","\u2872","\u2873","\u2874","\u2875","\u2876","\u2877","\u2838","\u2839","\u283A","\u283B","\u283C","\u283D","\u283E","\u283F","\u2878","\u2879","\u287A","\u287B","\u287C","\u287D","\u287E","\u287F","\u2880","\u2881","\u2882","\u2883","\u2884","\u2885","\u2886","\u2887","\u28C0","\u28C1","\u28C2","\u28C3","\u28C4","\u28C5","\u28C6","\u28C7","\u2888","\u2889","\u288A","\u288B","\u288C","\u288D","\u288E","\u288F","\u28C8","\u28C9","\u28CA","\u28CB","\u28CC","\u28CD","\u28CE","\u28CF","\u2890","\u2891","\u2892","\u2893","\u2894","\u2895","\u2896","\u2897","\u28D0","\u28D1","\u28D2","\u28D3","\u28D4","\u28D5","\u28D6","\u28D7","\u2898","\u2899","\u289A","\u289B","\u289C","\u289D","\u289E","\u289F","\u28D8","\u28D9","\u28DA","\u28DB","\u28DC","\u28DD","\u28DE","\u28DF","\u28A0","\u28A1","\u28A2","\u28A3","\u28A4","\u28A5","\u28A6","\u28A7","\u28E0","\u28E1","\u28E2","\u28E3","\u28E4","\u28E5","\u28E6","\u28E7","\u28A8","\u28A9","\u28AA","\u28AB","\u28AC","\u28AD","\u28AE","\u28AF","\u28E8","\u28E9","\u28EA","\u28EB","\u28EC","\u28ED","\u28EE","\u28EF","\u28B0","\u28B1","\u28B2","\u28B3","\u28B4","\u28B5","\u28B6","\u28B7","\u28F0","\u28F1","\u28F2","\u28F3","\u28F4","\u28F5","\u28F6","\u28F7","\u28B8","\u28B9","\u28BA","\u28BB","\u28BC","\u28BD","\u28BE","\u28BF","\u28F8","\u28F9","\u28FA","\u28FB","\u28FC","\u28FD","\u28FE","\u28FF"]},dotsCircle:{interval:80,frames:["\u288E ","\u280E\u2801","\u280A\u2811","\u2808\u2831"," \u2871","\u2880\u2870","\u2884\u2860","\u2886\u2840"]},sand:{interval:80,frames:["\u2801","\u2802","\u2804","\u2840","\u2848","\u2850","\u2860","\u28C0","\u28C1","\u28C2","\u28C4","\u28CC","\u28D4","\u28E4","\u28E5","\u28E6","\u28EE","\u28F6","\u28F7","\u28FF","\u287F","\u283F","\u289F","\u281F","\u285B","\u281B","\u282B","\u288B","\u280B","\u280D","\u2849","\u2809","\u2811","\u2821","\u2881"]},line:{interval:130,frames:["-","\\","|","/"]},line2:{interval:100,frames:["\u2802","-","\u2013","\u2014","\u2013","-"]},rollingLine:{interval:80,frames:["/ "," - "," \\ "," |"," |"," \\ "," - ","/ "]},pipe:{interval:100,frames:["\u2524","\u2518","\u2534","\u2514","\u251C","\u250C","\u252C","\u2510"]},simpleDots:{interval:400,frames:[". ",".. ","..."," "]},simpleDotsScrolling:{interval:200,frames:[". ",".. ","..."," .."," ."," "]},star:{interval:70,frames:["\u2736","\u2738","\u2739","\u273A","\u2739","\u2737"]},star2:{interval:80,frames:["+","x","*"]},flip:{interval:70,frames:["_","_","_","-","`","`","'","\xB4","-","_","_","_"]},hamburger:{interval:100,frames:["\u2631","\u2632","\u2634"]},growVertical:{interval:120,frames:["\u2581","\u2583","\u2584","\u2585","\u2586","\u2587","\u2586","\u2585","\u2584","\u2583"]},growHorizontal:{interval:120,frames:["\u258F","\u258E","\u258D","\u258C","\u258B","\u258A","\u2589","\u258A","\u258B","\u258C","\u258D","\u258E"]},balloon:{interval:140,frames:[" ",".","o","O","@","*"," "]},balloon2:{interval:120,frames:[".","o","O","\xB0","O","o","."]},noise:{interval:100,frames:["\u2593","\u2592","\u2591"]},bounce:{interval:120,frames:["\u2801","\u2802","\u2804","\u2802"]},boxBounce:{interval:120,frames:["\u2596","\u2598","\u259D","\u2597"]},boxBounce2:{interval:100,frames:["\u258C","\u2580","\u2590","\u2584"]},triangle:{interval:50,frames:["\u25E2","\u25E3","\u25E4","\u25E5"]},binary:{interval:80,frames:["010010","001100","100101","111010","111101","010111","101011","111000","110011","110101"]},arc:{interval:100,frames:["\u25DC","\u25E0","\u25DD","\u25DE","\u25E1","\u25DF"]},circle:{interval:120,frames:["\u25E1","\u2299","\u25E0"]},squareCorners:{interval:180,frames:["\u25F0","\u25F3","\u25F2","\u25F1"]},circleQuarters:{interval:120,frames:["\u25F4","\u25F7","\u25F6","\u25F5"]},circleHalves:{interval:50,frames:["\u25D0","\u25D3","\u25D1","\u25D2"]},squish:{interval:100,frames:["\u256B","\u256A"]},toggle:{interval:250,frames:["\u22B6","\u22B7"]},toggle2:{interval:80,frames:["\u25AB","\u25AA"]},toggle3:{interval:120,frames:["\u25A1","\u25A0"]},toggle4:{interval:100,frames:["\u25A0","\u25A1","\u25AA","\u25AB"]},toggle5:{interval:100,frames:["\u25AE","\u25AF"]},toggle6:{interval:300,frames:["\u101D","\u1040"]},toggle7:{interval:80,frames:["\u29BE","\u29BF"]},toggle8:{interval:100,frames:["\u25CD","\u25CC"]},toggle9:{interval:100,frames:["\u25C9","\u25CE"]},toggle10:{interval:100,frames:["\u3282","\u3280","\u3281"]},toggle11:{interval:50,frames:["\u29C7","\u29C6"]},toggle12:{interval:120,frames:["\u2617","\u2616"]},toggle13:{interval:80,frames:["=","*","-"]},arrow:{interval:100,frames:["\u2190","\u2196","\u2191","\u2197","\u2192","\u2198","\u2193","\u2199"]},arrow2:{interval:80,frames:["\u2B06\uFE0F ","\u2197\uFE0F ","\u27A1\uFE0F ","\u2198\uFE0F ","\u2B07\uFE0F ","\u2199\uFE0F ","\u2B05\uFE0F ","\u2196\uFE0F "]},arrow3:{interval:120,frames:["\u25B9\u25B9\u25B9\u25B9\u25B9","\u25B8\u25B9\u25B9\u25B9\u25B9","\u25B9\u25B8\u25B9\u25B9\u25B9","\u25B9\u25B9\u25B8\u25B9\u25B9","\u25B9\u25B9\u25B9\u25B8\u25B9","\u25B9\u25B9\u25B9\u25B9\u25B8"]},bouncingBar:{interval:80,frames:["[ ]","[= ]","[== ]","[=== ]","[====]","[ ===]","[ ==]","[ =]","[ ]","[ =]","[ ==]","[ ===]","[====]","[=== ]","[== ]","[= ]"]},bouncingBall:{interval:80,frames:["( \u25CF )","( \u25CF )","( \u25CF )","( \u25CF )","( \u25CF)","( \u25CF )","( \u25CF )","( \u25CF )","( \u25CF )","(\u25CF )"]},smiley:{interval:200,frames:["\u{1F604} ","\u{1F61D} "]},monkey:{interval:300,frames:["\u{1F648} ","\u{1F648} ","\u{1F649} ","\u{1F64A} "]},hearts:{interval:100,frames:["\u{1F49B} ","\u{1F499} ","\u{1F49C} ","\u{1F49A} ","\u{1F497} "]},clock:{interval:100,frames:["\u{1F55B} ","\u{1F550} ","\u{1F551} ","\u{1F552} ","\u{1F553} ","\u{1F554} ","\u{1F555} ","\u{1F556} ","\u{1F557} ","\u{1F558} ","\u{1F559} ","\u{1F55A} "]},earth:{interval:180,frames:["\u{1F30D} ","\u{1F30E} ","\u{1F30F} "]},material:{interval:17,frames:["\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581","\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588","\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588","\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588","\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581"]},moon:{interval:80,frames:["\u{1F311} ","\u{1F312} ","\u{1F313} ","\u{1F314} ","\u{1F315} ","\u{1F316} ","\u{1F317} ","\u{1F318} "]},runner:{interval:140,frames:["\u{1F6B6} ","\u{1F3C3} "]},pong:{interval:80,frames:["\u2590\u2802 \u258C","\u2590\u2808 \u258C","\u2590 \u2802 \u258C","\u2590 \u2820 \u258C","\u2590 \u2840 \u258C","\u2590 \u2820 \u258C","\u2590 \u2802 \u258C","\u2590 \u2808 \u258C","\u2590 \u2802 \u258C","\u2590 \u2820 \u258C","\u2590 \u2840 \u258C","\u2590 \u2820 \u258C","\u2590 \u2802 \u258C","\u2590 \u2808 \u258C","\u2590 \u2802\u258C","\u2590 \u2820\u258C","\u2590 \u2840\u258C","\u2590 \u2820 \u258C","\u2590 \u2802 \u258C","\u2590 \u2808 \u258C","\u2590 \u2802 \u258C","\u2590 \u2820 \u258C","\u2590 \u2840 \u258C","\u2590 \u2820 \u258C","\u2590 \u2802 \u258C","\u2590 \u2808 \u258C","\u2590 \u2802 \u258C","\u2590 \u2820 \u258C","\u2590 \u2840 \u258C","\u2590\u2820 \u258C"]},shark:{interval:120,frames:["\u2590|\\____________\u258C","\u2590_|\\___________\u258C","\u2590__|\\__________\u258C","\u2590___|\\_________\u258C","\u2590____|\\________\u258C","\u2590_____|\\_______\u258C","\u2590______|\\______\u258C","\u2590_______|\\_____\u258C","\u2590________|\\____\u258C","\u2590_________|\\___\u258C","\u2590__________|\\__\u258C","\u2590___________|\\_\u258C","\u2590____________|\\\u258C","\u2590____________/|\u258C","\u2590___________/|_\u258C","\u2590__________/|__\u258C","\u2590_________/|___\u258C","\u2590________/|____\u258C","\u2590_______/|_____\u258C","\u2590______/|______\u258C","\u2590_____/|_______\u258C","\u2590____/|________\u258C","\u2590___/|_________\u258C","\u2590__/|__________\u258C","\u2590_/|___________\u258C","\u2590/|____________\u258C"]},dqpb:{interval:100,frames:["d","q","p","b"]},weather:{interval:100,frames:["\u2600\uFE0F ","\u2600\uFE0F ","\u2600\uFE0F ","\u{1F324} ","\u26C5\uFE0F ","\u{1F325} ","\u2601\uFE0F ","\u{1F327} ","\u{1F328} ","\u{1F327} ","\u{1F328} ","\u{1F327} ","\u{1F328} ","\u26C8 ","\u{1F328} ","\u{1F327} ","\u{1F328} ","\u2601\uFE0F ","\u{1F325} ","\u26C5\uFE0F ","\u{1F324} ","\u2600\uFE0F ","\u2600\uFE0F "]},christmas:{interval:400,frames:["\u{1F332}","\u{1F384}"]},grenade:{interval:80,frames:["\u060C ","\u2032 "," \xB4 "," \u203E "," \u2E0C"," \u2E0A"," |"," \u204E"," \u2055"," \u0DF4 "," \u2053"," "," "," "]},point:{interval:125,frames:["\u2219\u2219\u2219","\u25CF\u2219\u2219","\u2219\u25CF\u2219","\u2219\u2219\u25CF","\u2219\u2219\u2219"]},layer:{interval:150,frames:["-","=","\u2261"]},betaWave:{interval:80,frames:["\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2","\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2","\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2","\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2","\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2","\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2","\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1"]},fingerDance:{interval:160,frames:["\u{1F918} ","\u{1F91F} ","\u{1F596} ","\u270B ","\u{1F91A} ","\u{1F446} "]},fistBump:{interval:80,frames:["\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ","\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ","\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ","\u3000\u{1F91C}\u3000\u3000\u{1F91B}\u3000 ","\u3000\u3000\u{1F91C}\u{1F91B}\u3000\u3000 ","\u3000\u{1F91C}\u2728\u{1F91B}\u3000\u3000 ","\u{1F91C}\u3000\u2728\u3000\u{1F91B}\u3000 "]},soccerHeader:{interval:80,frames:[" \u{1F9D1}\u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F\u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} "]},mindblown:{interval:160,frames:["\u{1F610} ","\u{1F610} ","\u{1F62E} ","\u{1F62E} ","\u{1F626} ","\u{1F626} ","\u{1F627} ","\u{1F627} ","\u{1F92F} ","\u{1F4A5} ","\u2728 ","\u3000 ","\u3000 ","\u3000 "]},speaker:{interval:160,frames:["\u{1F508} ","\u{1F509} ","\u{1F50A} ","\u{1F509} "]},orangePulse:{interval:100,frames:["\u{1F538} ","\u{1F536} ","\u{1F7E0} ","\u{1F7E0} ","\u{1F536} "]},bluePulse:{interval:100,frames:["\u{1F539} ","\u{1F537} ","\u{1F535} ","\u{1F535} ","\u{1F537} "]},orangeBluePulse:{interval:100,frames:["\u{1F538} ","\u{1F536} ","\u{1F7E0} ","\u{1F7E0} ","\u{1F536} ","\u{1F539} ","\u{1F537} ","\u{1F535} ","\u{1F535} ","\u{1F537} "]},timeTravel:{interval:100,frames:["\u{1F55B} ","\u{1F55A} ","\u{1F559} ","\u{1F558} ","\u{1F557} ","\u{1F556} ","\u{1F555} ","\u{1F554} ","\u{1F553} ","\u{1F552} ","\u{1F551} ","\u{1F550} "]},aesthetic:{interval:80,frames:["\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1","\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1","\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1","\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1","\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1","\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1","\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0","\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1"]},dwarfFortress:{interval:80,frames:[" \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A \u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A \u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A \u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\xA3\xA3\xA3 "," \u263A \u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\xA3\xA3\xA3 "," \u263A \u2588\xA3\xA3\xA3 "," \u263A\u2588\xA3\xA3\xA3 "," \u263A\u2588\xA3\xA3\xA3 "," \u263A\u2593\xA3\xA3\xA3 "," \u263A\u2593\xA3\xA3\xA3 "," \u263A\u2592\xA3\xA3\xA3 "," \u263A\u2592\xA3\xA3\xA3 "," \u263A\u2591\xA3\xA3\xA3 "," \u263A\u2591\xA3\xA3\xA3 "," \u263A \xA3\xA3\xA3 "," \u263A\xA3\xA3\xA3 "," \u263A\xA3\xA3\xA3 "," \u263A\u2593\xA3\xA3 "," \u263A\u2593\xA3\xA3 "," \u263A\u2592\xA3\xA3 "," \u263A\u2592\xA3\xA3 "," \u263A\u2591\xA3\xA3 "," \u263A\u2591\xA3\xA3 "," \u263A \xA3\xA3 "," \u263A\xA3\xA3 "," \u263A\xA3\xA3 "," \u263A\u2593\xA3 "," \u263A\u2593\xA3 "," \u263A\u2592\xA3 "," \u263A\u2592\xA3 "," \u263A\u2591\xA3 "," \u263A\u2591\xA3 "," \u263A \xA3 "," \u263A\xA3 "," \u263A\xA3 "," \u263A\u2593 "," \u263A\u2593 "," \u263A\u2592 "," \u263A\u2592 "," \u263A\u2591 "," \u263A\u2591 "," \u263A "," \u263A &"," \u263A \u263C&"," \u263A \u263C &"," \u263A\u263C &"," \u263A\u263C & "," \u203C & "," \u263A & "," \u203C & "," \u263A & "," \u203C & "," \u263A & ","\u203C & "," & "," & "," & \u2591 "," & \u2592 "," & \u2593 "," & \xA3 "," & \u2591\xA3 "," & \u2592\xA3 "," & \u2593\xA3 "," & \xA3\xA3 "," & \u2591\xA3\xA3 "," & \u2592\xA3\xA3 ","& \u2593\xA3\xA3 ","& \xA3\xA3\xA3 "," \u2591\xA3\xA3\xA3 "," \u2592\xA3\xA3\xA3 "," \u2593\xA3\xA3\xA3 "," \u2588\xA3\xA3\xA3 "," \u2591\u2588\xA3\xA3\xA3 "," \u2592\u2588\xA3\xA3\xA3 "," \u2593\u2588\xA3\xA3\xA3 "," \u2588\u2588\xA3\xA3\xA3 "," \u2591\u2588\u2588\xA3\xA3\xA3 "," \u2592\u2588\u2588\xA3\xA3\xA3 "," \u2593\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\xA3\xA3\xA3 "," \u2591\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2592\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2593\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "]}};var d=nt,Yr=Object.keys(nt);var x={};Zt(x,{error:()=>Pe,info:()=>De,success:()=>Re,warning:()=>Ie});import Se from"node:tty";var Oe=Se?.WriteStream?.prototype?.hasColors?.()??!1,a=(t,e)=>{if(!Oe)return s=>s;let r=`\x1B[${t}m`,i=`\x1B[${e}m`;return s=>{let n=s+"",o=n.indexOf(i);if(o===-1)return r+n+i;let l=r,u=0,A=(e===22?i:"")+r;for(;o!==-1;)l+=n.slice(u,o)+A,u=o+i.length,o=n.indexOf(i,u);return l+=n.slice(u)+i,l}},qr=a(0,0),zr=a(1,22),Kr=a(2,22),Jr=a(3,23),Xr=a(4,24),Zr=a(53,55),Qr=a(7,27),ti=a(8,28),ei=a(9,29),ri=a(30,39),jt=a(31,39),kt=a(32,39),Lt=a(33,39),Gt=a(34,39),ii=a(35,39),si=a(36,39),ni=a(37,39),oi=a(90,39),ai=a(40,49),li=a(41,49),ci=a(42,49),fi=a(43,49),ui=a(44,49),mi=a(45,49),pi=a(46,49),hi=a(47,49),di=a(100,49),gi=a(91,39),_i=a(92,39),Fi=a(93,39),xi=a(94,39),bi=a(95,39),Ei=a(96,39),Ci=a(97,39),yi=a(101,49),wi=a(102,49),vi=a(103,49),Ti=a(104,49),Ai=a(105,49),Bi=a(106,49),Si=a(107,49);import Wt from"node:process";function O(){let{env:t}=Wt,{TERM:e,TERM_PROGRAM:r}=t;return Wt.platform!=="win32"?e!=="linux":!!t.WT_SESSION||!!t.TERMINUS_SUBLIME||t.ConEmuTask==="{cmd::Cmder}"||r==="Terminus-Sublime"||r==="vscode"||e==="xterm-256color"||e==="alacritty"||e==="rxvt-unicode"||e==="rxvt-unicode-256color"||t.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var W=O(),De=Gt(W?"\u2139":"i"),Re=kt(W?"\u2714":"\u221A"),Ie=Lt(W?"\u26A0":"\u203C"),Pe=jt(W?"\u2716":"\xD7");function ot({onlyFirst:t=!1}={}){let s="(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";return new RegExp(s,t?void 0:"g")}var Me=ot();function D(t){if(typeof t!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);return t.replace(Me,"")}function Ut(t){return t===161||t===164||t===167||t===168||t===170||t===173||t===174||t>=176&&t<=180||t>=182&&t<=186||t>=188&&t<=191||t===198||t===208||t===215||t===216||t>=222&&t<=225||t===230||t>=232&&t<=234||t===236||t===237||t===240||t===242||t===243||t>=247&&t<=250||t===252||t===254||t===257||t===273||t===275||t===283||t===294||t===295||t===299||t>=305&&t<=307||t===312||t>=319&&t<=322||t===324||t>=328&&t<=331||t===333||t===338||t===339||t===358||t===359||t===363||t===462||t===464||t===466||t===468||t===470||t===472||t===474||t===476||t===593||t===609||t===708||t===711||t>=713&&t<=715||t===717||t===720||t>=728&&t<=731||t===733||t===735||t>=768&&t<=879||t>=913&&t<=929||t>=931&&t<=937||t>=945&&t<=961||t>=963&&t<=969||t===1025||t>=1040&&t<=1103||t===1105||t===8208||t>=8211&&t<=8214||t===8216||t===8217||t===8220||t===8221||t>=8224&&t<=8226||t>=8228&&t<=8231||t===8240||t===8242||t===8243||t===8245||t===8251||t===8254||t===8308||t===8319||t>=8321&&t<=8324||t===8364||t===8451||t===8453||t===8457||t===8467||t===8470||t===8481||t===8482||t===8486||t===8491||t===8531||t===8532||t>=8539&&t<=8542||t>=8544&&t<=8555||t>=8560&&t<=8569||t===8585||t>=8592&&t<=8601||t===8632||t===8633||t===8658||t===8660||t===8679||t===8704||t===8706||t===8707||t===8711||t===8712||t===8715||t===8719||t===8721||t===8725||t===8730||t>=8733&&t<=8736||t===8739||t===8741||t>=8743&&t<=8748||t===8750||t>=8756&&t<=8759||t===8764||t===8765||t===8776||t===8780||t===8786||t===8800||t===8801||t>=8804&&t<=8807||t===8810||t===8811||t===8814||t===8815||t===8834||t===8835||t===8838||t===8839||t===8853||t===8857||t===8869||t===8895||t===8978||t>=9312&&t<=9449||t>=9451&&t<=9547||t>=9552&&t<=9587||t>=9600&&t<=9615||t>=9618&&t<=9621||t===9632||t===9633||t>=9635&&t<=9641||t===9650||t===9651||t===9654||t===9655||t===9660||t===9661||t===9664||t===9665||t>=9670&&t<=9672||t===9675||t>=9678&&t<=9681||t>=9698&&t<=9701||t===9711||t===9733||t===9734||t===9737||t===9742||t===9743||t===9756||t===9758||t===9792||t===9794||t===9824||t===9825||t>=9827&&t<=9829||t>=9831&&t<=9834||t===9836||t===9837||t===9839||t===9886||t===9887||t===9919||t>=9926&&t<=9933||t>=9935&&t<=9939||t>=9941&&t<=9953||t===9955||t===9960||t===9961||t>=9963&&t<=9969||t===9972||t>=9974&&t<=9977||t===9979||t===9980||t===9982||t===9983||t===10045||t>=10102&&t<=10111||t>=11094&&t<=11097||t>=12872&&t<=12879||t>=57344&&t<=63743||t>=65024&&t<=65039||t===65533||t>=127232&&t<=127242||t>=127248&&t<=127277||t>=127280&&t<=127337||t>=127344&&t<=127373||t===127375||t===127376||t>=127387&&t<=127404||t>=917760&&t<=917999||t>=983040&&t<=1048573||t>=1048576&&t<=1114109}function $t(t){return t===12288||t>=65281&&t<=65376||t>=65504&&t<=65510}function Yt(t){return t>=4352&&t<=4447||t===8986||t===8987||t===9001||t===9002||t>=9193&&t<=9196||t===9200||t===9203||t===9725||t===9726||t===9748||t===9749||t>=9776&&t<=9783||t>=9800&&t<=9811||t===9855||t>=9866&&t<=9871||t===9875||t===9889||t===9898||t===9899||t===9917||t===9918||t===9924||t===9925||t===9934||t===9940||t===9962||t===9970||t===9971||t===9973||t===9978||t===9981||t===9989||t===9994||t===9995||t===10024||t===10060||t===10062||t>=10067&&t<=10069||t===10071||t>=10133&&t<=10135||t===10160||t===10175||t===11035||t===11036||t===11088||t===11093||t>=11904&&t<=11929||t>=11931&&t<=12019||t>=12032&&t<=12245||t>=12272&&t<=12287||t>=12289&&t<=12350||t>=12353&&t<=12438||t>=12441&&t<=12543||t>=12549&&t<=12591||t>=12593&&t<=12686||t>=12688&&t<=12773||t>=12783&&t<=12830||t>=12832&&t<=12871||t>=12880&&t<=42124||t>=42128&&t<=42182||t>=43360&&t<=43388||t>=44032&&t<=55203||t>=63744&&t<=64255||t>=65040&&t<=65049||t>=65072&&t<=65106||t>=65108&&t<=65126||t>=65128&&t<=65131||t>=94176&&t<=94180||t>=94192&&t<=94198||t>=94208&&t<=101589||t>=101631&&t<=101662||t>=101760&&t<=101874||t>=110576&&t<=110579||t>=110581&&t<=110587||t===110589||t===110590||t>=110592&&t<=110882||t===110898||t>=110928&&t<=110930||t===110933||t>=110948&&t<=110951||t>=110960&&t<=111355||t>=119552&&t<=119638||t>=119648&&t<=119670||t===126980||t===127183||t===127374||t>=127377&&t<=127386||t>=127488&&t<=127490||t>=127504&&t<=127547||t>=127552&&t<=127560||t===127568||t===127569||t>=127584&&t<=127589||t>=127744&&t<=127776||t>=127789&&t<=127797||t>=127799&&t<=127868||t>=127870&&t<=127891||t>=127904&&t<=127946||t>=127951&&t<=127955||t>=127968&&t<=127984||t===127988||t>=127992&&t<=128062||t===128064||t>=128066&&t<=128252||t>=128255&&t<=128317||t>=128331&&t<=128334||t>=128336&&t<=128359||t===128378||t===128405||t===128406||t===128420||t>=128507&&t<=128591||t>=128640&&t<=128709||t===128716||t>=128720&&t<=128722||t>=128725&&t<=128728||t>=128732&&t<=128735||t===128747||t===128748||t>=128756&&t<=128764||t>=128992&&t<=129003||t===129008||t>=129292&&t<=129338||t>=129340&&t<=129349||t>=129351&&t<=129535||t>=129648&&t<=129660||t>=129664&&t<=129674||t>=129678&&t<=129734||t===129736||t>=129741&&t<=129756||t>=129759&&t<=129770||t>=129775&&t<=129784||t>=131072&&t<=196605||t>=196608&&t<=262141}function Ne(t){if(!Number.isSafeInteger(t))throw new TypeError(`Expected a code point, got \`${typeof t}\`.`)}function at(t,{ambiguousAsWide:e=!1}={}){return Ne(t),$t(t)||Yt(t)||e&&Ut(t)?2:1}var je=new Intl.Segmenter,ke=/^(?:\p{Default_Ignorable_Code_Point}|\p{Control}|\p{Mark}|\p{Surrogate})+$/v,Le=/^[\p{Default_Ignorable_Code_Point}\p{Control}\p{Format}\p{Mark}\p{Surrogate}]+/v,Ge=/^\p{RGI_Emoji}$/v;function We(t){return t.replace(Le,"")}function Ue(t){return ke.test(t)}function $e(t,e){let r=0;if(t.length>1)for(let i of t.slice(1))i>="\uFF00"&&i<="\uFFEF"&&(r+=at(i.codePointAt(0),e));return r}function lt(t,e={}){if(typeof t!="string"||t.length===0)return 0;let{ambiguousIsNarrow:r=!0,countAnsiEscapeCodes:i=!1}=e,s=t;if(i||(s=D(s)),s.length===0)return 0;let n=0,o={ambiguousAsWide:!r};for(let{segment:l}of je.segment(s)){if(Ue(l))continue;if(Ge.test(l)){n+=2;continue}let u=We(l).codePointAt(0);n+=at(u,o),n+=$e(l,o)}return n}function ct({stream:t=process.stdout}={}){return!!(t&&t.isTTY&&process.env.TERM!=="dumb"&&!("CI"in process.env))}import h from"node:process";var Ye=3,ft=class{#n=0;start(){this.#n++,this.#n===1&&this.#i()}stop(){if(this.#n<=0)throw new Error("`stop` called more times than `start`");this.#n--,this.#n===0&&this.#t()}#i(){h.platform==="win32"||!h.stdin.isTTY||(h.stdin.setRawMode(!0),h.stdin.on("data",this.#s),h.stdin.resume())}#t(){h.stdin.isTTY&&(h.stdin.off("data",this.#s),h.stdin.pause(),h.stdin.setRawMode(!1))}#s(e){e[0]===Ye&&h.emit("SIGINT")}},He=new ft,ut=He;var mt=class{#n=0;#i=!1;#t=0;#s=-1;#p=0;#u=0;#e;#o;#r;#h;#_;#a;#m;#l;#d;#c;#f;color;constructor(e){typeof e=="string"&&(e={text:e}),this.#e={color:"cyan",stream:U.stderr,discardStdin:!0,hideCursor:!0,...e},this.color=this.#e.color,this.spinner=this.#e.spinner,this.#_=this.#e.interval,this.#r=this.#e.stream,this.#a=typeof this.#e.isEnabled=="boolean"?this.#e.isEnabled:ct({stream:this.#r}),this.#m=typeof this.#e.isSilent=="boolean"?this.#e.isSilent:!1,this.text=this.#e.text,this.prefixText=this.#e.prefixText,this.suffixText=this.#e.suffixText,this.indent=this.#e.indent,U.env.NODE_ENV==="test"&&(this._stream=this.#r,this._isEnabled=this.#a,Object.defineProperty(this,"_linesToClear",{get(){return this.#n},set(r){this.#n=r}}),Object.defineProperty(this,"_frameIndex",{get(){return this.#s}}),Object.defineProperty(this,"_lineCount",{get(){return this.#t}}))}get indent(){return this.#l}set indent(e=0){if(!(e>=0&&Number.isInteger(e)))throw new Error("The `indent` option must be an integer from 0 and up");this.#l=e,this.#g()}get interval(){return this.#_??this.#o.interval??100}get spinner(){return this.#o}set spinner(e){if(this.#s=-1,this.#_=void 0,typeof e=="object"){if(!Array.isArray(e.frames)||e.frames.length===0||e.frames.some(r=>typeof r!="string"))throw new Error("The given spinner must have a non-empty `frames` array of strings");if(e.interval!==void 0&&!(Number.isInteger(e.interval)&&e.interval>0))throw new Error("`spinner.interval` must be a positive integer if provided");this.#o=e}else if(!O())this.#o=d.line;else if(e===void 0)this.#o=d.dots;else if(e!=="default"&&d[e])this.#o=d[e];else throw new Error(`There is no built-in spinner named '${e}'. See https://github.com/sindresorhus/cli-spinners/blob/main/spinners.json for a full list.`)}get text(){return this.#d}set text(e=""){this.#d=e,this.#g()}get prefixText(){return this.#c}set prefixText(e=""){this.#c=e,this.#g()}get suffixText(){return this.#f}set suffixText(e=""){this.#f=e,this.#g()}get isSpinning(){return this.#h!==void 0}#E(e,r,i=!1){let s=typeof e=="function"?e():e;return typeof s=="string"&&s!==""?i?r+s:s+r:""}#F(e=this.#c,r=" "){return this.#E(e,r,!1)}#x(e=this.#f,r=" "){return this.#E(e,r,!0)}#b(e,r){let i=0;for(let s of D(e).split(`
8
- `))i+=Math.max(1,Math.ceil(lt(s)/r));return i}#g(){let e=this.#r.columns??80,r=typeof this.#c=="function"?"":this.#c,i=typeof this.#f=="function"?"":this.#f,s=typeof r=="string"&&r!==""?r+" ":"",n=typeof i=="string"&&i!==""?" "+i:"",l=" ".repeat(this.#l)+s+"-"+(typeof this.#d=="string"?" "+this.#d:"")+n;this.#t=this.#b(l,e)}get isEnabled(){return this.#a&&!this.#m}set isEnabled(e){if(typeof e!="boolean")throw new TypeError("The `isEnabled` option must be a boolean");this.#a=e}get isSilent(){return this.#m}set isSilent(e){if(typeof e!="boolean")throw new TypeError("The `isSilent` option must be a boolean");this.#m=e}frame(){let e=Date.now();(this.#s===-1||e-this.#p>=this.interval)&&(this.#s=++this.#s%this.#o.frames.length,this.#p=e);let{frames:r}=this.#o,i=r[this.#s];this.color&&(i=Ot[this.color](i));let s=this.#F(this.#c," "),n=typeof this.text=="string"?" "+this.text:"",o=this.#x(this.#f," ");return s+i+n+o}clear(){if(!this.#a||!this.#r.isTTY)return this;this.#r.cursorTo(0);for(let e=0;e<this.#n;e++)e>0&&this.#r.moveCursor(0,-1),this.#r.clearLine(1);return(this.#l||this.#u!==this.#l)&&this.#r.cursorTo(this.#l),this.#u=this.#l,this.#n=0,this}render(){if(!this.#a||this.#m)return this;this.clear();let e=this.frame(),r=this.#r.columns??80,i=this.#b(e,r),s=this.#r.rows;if(s&&s>1&&i>s){let n=e.split(`
9
- `),o=s-1;e=[...n.slice(0,o),"... (content truncated to fit terminal)"].join(`
10
- `)}return this.#r.write(e),this.#n=this.#b(e,r),this}start(e){if(e&&(this.text=e),this.#m)return this;if(!this.#a){let r=" ".repeat(this.#l)+this.#F(this.#c," ")+(this.text?`- ${this.text}`:"")+this.#x(this.#f," ");return r.trim()!==""&&this.#r.write(r+`
11
- `),this}return this.isSpinning?this:(this.#e.hideCursor&&st.hide(this.#r),this.#e.discardStdin&&U.stdin.isTTY&&(this.#i=!0,ut.start()),this.render(),this.#h=setInterval(this.render.bind(this),this.interval),this)}stop(){return clearInterval(this.#h),this.#h=void 0,this.#s=0,this.#a&&(this.clear(),this.#e.hideCursor&&st.show(this.#r)),this.#e.discardStdin&&U.stdin.isTTY&&this.#i&&(ut.stop(),this.#i=!1),this}succeed(e){return this.stopAndPersist({symbol:x.success,text:e})}fail(e){return this.stopAndPersist({symbol:x.error,text:e})}warn(e){return this.stopAndPersist({symbol:x.warning,text:e})}info(e){return this.stopAndPersist({symbol:x.info,text:e})}stopAndPersist(e={}){if(this.#m)return this;let r=e.prefixText??this.#c,i=this.#F(r," "),s=e.symbol??" ",n=e.text??this.text,l=typeof n=="string"?(s?" ":"")+n:"",u=e.suffixText??this.#f,C=this.#x(u," "),A=i+s+l+C+`
12
- `;return this.stop(),this.#r.write(A),this}};function pt(t){return new mt(t)}import{stdin as Ve,stdout as qe}from"node:process";import ze from"node:readline/promises";var b=class{spiner=void 0;do(e,r,i,s){this.spiner=pt({text:e,color:r,spinner:i,prefixText:s}).start()}next(e,r,i,s=0){this.success(),this.do(e,r,i,s?" ".repeat(s)+"\u2514\u2500":void 0)}success(){this.spiner&&this.spiner.succeed()}fail(){this.spiner&&this.spiner.fail()}async ask(e,r=""){this.spiner&&(this.spiner.spinner={interval:100,frames:["?","."," ","."]});let i=ze.createInterface({input:Ve,output:qe}),s=(await i.question("")).trim();return i.close(),s||r}};var Vt=async(t,e,r=!1,i=!1)=>{let s=new b;s.next("Router analysis","yellow",d.dotsCircle);let n=[],o=await Ht.launch({headless:!i,devtools:!0}),l=await Ht.launch({headless:!0}),u=await o.newContext({userAgent:"____fast-ssr-tool___"}),C;for await(let[A,H]of e.entries()){s.next(H,"yellow",d.dotsCircle,1);let g=await u.newPage(),V=H.replaceAll("{","").replaceAll("}","");C||g.on("response",async _=>{_.status()==200&&_.url()==t+V&&(C=await _.text())}),await g.goto(t+V),await g.waitForLoadState("networkidle"),await g.waitForTimeout(1e3);let dt=await g.evaluate(()=>window.__page_requests);i&&console.log({input:dt});let Jt=await g.locator("#root").innerHTML(),gt;if(r){let _=await l.newPage();await _.goto(t+V),await _.waitForLoadState("networkidle"),await _.waitForTimeout(1e3),gt=await g.locator("#root").innerHTML()}i&&await s.ask("continue?"),g.close(),n.push({id:A,input:dt,mask:H,root:Jt,test:gt})}return await o.close(),await l.close(),s.success(),{pages:n,indexHtml:C}};import $ from"node:path";import{mkdir as Je}from"node:fs/promises";import{preview as Ke}from"vite";var qt=async()=>{let t=await Ke({preview:{port:8084}});if(!t.resolvedUrls?.local?.length)throw new Error("vite is not defined");return[t.resolvedUrls?.local[0].slice(0,-1),()=>t.close()]};var T=new b,Xe=process.argv[2]?process.argv[2]:"jinrai.config";T.do("Init");var E=await _t(Xe);T.success();var[Ze,Qe]=await qt(),zt=await Vt(Ze,E.pages,E.test,E.debug);Qe();var Y=$.join(E.dist??"dist",".cached");T.do("Format");var{routes:tr,templates:Kt}=Ft(zt.pages);T.next(`Export: (${Kt.length})`);await Je(Y,{recursive:!0});console.log("dev");var er={routes:tr,proxy:E.proxy,meta:E.meta};await ht($.join(Y,"config.json"),JSON.stringify(er,null,2));for await(let[t,e]of Object.entries(Kt))await ht($.join(Y,`${e}.html`),t);if(E.test){T.next("Tests");for await(let t of zt.pages)t.test&&await ht($.join(Y,`test_${t.id}.html`),R(t.test))}T.success();