In [ ]:
. ./nbs_header.ps1
. ./core.ps1
In [ ]:
{ pwsh ../apps/builder/build.ps1 } | Invoke-Block
── markdown ────────────────────────────────────────────────────────────────────
│ # DibParser (Polyglot)

── fsharp ──────────────────────────────────────────────────────────────────────
#r 
@"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
dard2.1/FSharp.Control.AsyncSeq.dll"
#r 
@"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
0/System.Reactive.dll"
#r 
@"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
netstandard2.0/System.Reactive.Linq.dll"
#r 
@"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
#r 
@"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
arsec.dll"
#r 
@"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
arsecCS.dll"

── pwsh ────────────────────────────────────────────────────────────────────────
ls ~/.nuget/packages/argu

── [ 181.24ms - stdout ] ───────────────────────────────────────────────────────
│ 6.2.4
│ 6.2.5
│ 

── fsharp ──────────────────────────────────────────────────────────────────────
#if !INTERACTIVE
open Lib
#endif

── fsharp ──────────────────────────────────────────────────────────────────────
open Common
open FParsec
open SpiralFileSystem.Operators

── markdown ────────────────────────────────────────────────────────────────────
│ ## escapeCell (test)

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let inline escapeCell input =
    input
    |> SpiralSm.split "\n"
    |> Array.map (function
        | line when line |> SpiralSm.starts_with "\\#!" || line |> 
SpiralSm.starts_with "\\#r" ->
            System.Text.RegularExpressions.Regex.Replace (line, "^\\\\#", "#")
        | line -> line
    )
    |> SpiralSm.concat "\n"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

$"a{nl}\\#!magic{nl}b{nl}"
|> escapeCell
|> _assertEqual (
    $"a{nl}#!magic{nl}b{nl}"
)

── [ 40.85ms - stdout ] ────────────────────────────────────────────────────────
│ "a
│ #!magic
│ b
│ "
│ 
│ 

── markdown ────────────────────────────────────────────────────────────────────
│ ## magicMarker

── fsharp ──────────────────────────────────────────────────────────────────────
let magicMarker : Parser<string, unit> = pstring "#!"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!magic"
|> run magicMarker
|> _assertEqual (
    Success ("#!", (), Position ("", 2, 1, 3))
)

── [ 24.86ms - stdout ] ────────────────────────────────────────────────────────
│ Success: "#!"
│ 
│ 

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"##!magic"
|> run magicMarker
|> _assertEqual (
    Failure (
        $"Error in Ln: 1 Col: 1{nl}##!magic{nl}^{nl}Expecting: '#!'{nl}",
        ParserError (
            Position ("", 0, 1, 1),
            (),
            ErrorMessageList (ExpectedString "#!")
        ),
        ()
    )
)

── fsharp ──────────────────────────────────────────────────────────────────────
── [ 53.63ms - diagnostics ] ───────────────────────────────────────────────────
│ input.fsx (10,13)-(10,15) typecheck warning This expression 
uses 'unit' for an 'obj'-typed argument. This will lead to passing 'null' at 
runtime. This warning may be disabled using '#nowarn "3397".

── [ 54.12ms - stdout ] ────────────────────────────────────────────────────────
│ Failure:
│ Error in Ln: 1 Col: 1
│ ##!magic
│ ^
│ Expecting: '#!'
│ 
│ 
│ 

── markdown ────────────────────────────────────────────────────────────────────
│ ## magicCommand

── fsharp ──────────────────────────────────────────────────────────────────────
let magicCommand =
    magicMarker
    >>. manyTill anyChar newline
    |>> (System.String.Concat >> SpiralSm.trim)

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!magic

a"
|> run magicCommand
|> _assertEqual (
    Success ("magic", (), Position ("", 8, 2, 1))
)

── [ 18.60ms - stdout ] ────────────────────────────────────────────────────────
│ Success: "magic"
│ 
│ 

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

" #!magic

a"
|> run magicCommand
|> _assertEqual (
    Failure (
        $"Error in Ln: 1 Col: 1{nl} #!magic{nl}^{nl}Expecting: '#!'{nl}",
        ParserError (
            Position ("", 0, 1, 1),
            (),
            ErrorMessageList (ExpectedString "#!")
        ),
        ()
    )
)

── fsharp ──────────────────────────────────────────────────────────────────────
── [ 15.07ms - diagnostics ] ───────────────────────────────────────────────────
│ input.fsx (12,13)-(12,15) typecheck warning This expression 
uses 'unit' for an 'obj'-typed argument. This will lead to passing 'null' at 
runtime. This warning may be disabled using '#nowarn "3397".

── [ 15.54ms - stdout ] ────────────────────────────────────────────────────────
│ Failure:
│ Error in Ln: 1 Col: 1
│  #!magic
│ ^
│ Expecting: '#!'
│ 
│ 
│ 

── markdown ────────────────────────────────────────────────────────────────────
│ ## content

── fsharp ──────────────────────────────────────────────────────────────────────
let content =
    (newline >>. magicMarker) <|> (eof >>. preturn "")
    |> attempt
    |> lookAhead
    |> manyTill anyChar
    |>> (System.String.Concat >> SpiralSm.trim)

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!magic


a


"
|> run content
|> _assertEqual (
    Success ("#!magic


a", (), Position ("", 14, 7, 1))
)

── [ 13.01ms - stdout ] ────────────────────────────────────────────────────────
│ Success: "#!magic
│ 
│ 
│ a"
│ 
│ 

── markdown ────────────────────────────────────────────────────────────────────
│ ## Output

── fsharp ──────────────────────────────────────────────────────────────────────
type Output =
    | Fs
    | Md
    | Spi
    | Spir

── markdown ────────────────────────────────────────────────────────────────────
│ ## Magic

── fsharp ──────────────────────────────────────────────────────────────────────
type Magic =
    | Fsharp
    | Markdown
    | Spiral of Output
    | Magic of string

── markdown ────────────────────────────────────────────────────────────────────
│ ## kernelOutputs

── fsharp ──────────────────────────────────────────────────────────────────────
let inline kernelOutputs magic =
    match magic with
    | Fsharp -> [[ Fs ]]
    | Markdown -> [[ Md ]]
    | Spiral output -> [[ output ]]
    | _ -> [[]]

── markdown ────────────────────────────────────────────────────────────────────
│ ## Block

── fsharp ──────────────────────────────────────────────────────────────────────
type Block =
    {
        magic : Magic
        content : string
    }

── markdown ────────────────────────────────────────────────────────────────────
│ ## block

── fsharp ──────────────────────────────────────────────────────────────────────
let block =
    pipe2
        magicCommand
        content
        (fun magic content ->
            let magic, content =
                match magic with
                | "fsharp" -> Fsharp, content
                | "markdown" -> Markdown, content
                | "spiral" ->
                    let output = if content |> SpiralSm.contains "//// real\n" 
then Spir else Spi
                    let content =
                        if output = Spi
                        then content
                        else
                            content
                            |> SpiralSm.replace "//// real\n\n" ""
                            |> SpiralSm.replace "//// real\n" ""
                    Spiral output, content
                | magic -> magic |> Magic, content
            {
                magic = magic
                content = content
            })

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!magic


a


"
|> run block
|> _assertEqual (
    Success (
        { magic = Magic "magic"; content = "a" },
        (),
        Position ("", 14, 7, 1)
    )
)

── [ 23.62ms - stdout ] ────────────────────────────────────────────────────────
│ Success: { magic = Magic "magic"
│   content = "a" }
│ 
│ 

── markdown ────────────────────────────────────────────────────────────────────
│ ## blocks

── fsharp ──────────────────────────────────────────────────────────────────────
let blocks =
    skipMany newline
    >>. sepEndBy block (skipMany1 newline)

── fsharp ──────────────────────────────────────────────────────────────────────
//// test


"#!magic1

a

\#!magic2

b

"
|> escapeCell
|> run blocks
|> _assertEqual (
    Success (
        [[
            { magic = Magic "magic1"; content = "a" }
            { magic = Magic "magic2"; content = "b" }
        ]],
        (),
        Position ("", 26, 9, 1)
    )
)

── [ 23.41ms - stdout ] ────────────────────────────────────────────────────────
│ Success: [{ magic = Magic "magic1"
│    content = "a" }; { magic = Magic "magic2"
│                       content = "b" }]
│ 
│ 

── markdown ────────────────────────────────────────────────────────────────────
│ ## formatBlock

── fsharp ──────────────────────────────────────────────────────────────────────
let inline formatBlock output (block : Block) =
    match output, block with
    | output, { magic = Markdown; content = content } ->
        let markdownComment =
            match output with
            | Spi | Spir -> "/// "
            | Fs -> "/// "
            | _ -> ""
        content
        |> SpiralSm.split "\n"
        |> Array.map (SpiralSm.trim_end [[||]])
        |> Array.filter (SpiralSm.ends_with " (test)" >> not)
        |> Array.map (function
            | "" -> markdownComment
            | line -> System.Text.RegularExpressions.Regex.Replace (line, 
"^\\s*", $"$&{markdownComment}")
        )
        |> SpiralSm.concat "\n"
    | Fs, { magic = Fsharp; content = content } ->
        let trimmedContent = content |> SpiralSm.trim
        if trimmedContent |> SpiralSm.contains "//// test\n"
            || trimmedContent |> SpiralSm.contains "//// ignore\n"
        then ""
        else
            content
            |> SpiralSm.split "\n"
            |> Array.filter (SpiralSm.trim_start [[||]] >> SpiralSm.starts_with 
"#r" >> not)
            |> SpiralSm.concat "\n"
    | (Spi | Spir), { magic = Spiral output'; content = content } when output' =
output ->
        let trimmedContent = content |> SpiralSm.trim
        if trimmedContent |> SpiralSm.contains "//// test\n"
            || trimmedContent |> SpiralSm.contains "//// ignore\n"
        then ""
        else content
    | _ -> ""

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!markdown


a

    b

c


\#!markdown


c


\#!fsharp


let a = 1"
|> escapeCell
|> run block
|> function
    | Success (block, _, _) -> formatBlock Fs block
    | Failure (msg, _, _) -> failwith msg
|> _assertEqual "/// a
/// 
    /// b
/// 
/// c"

── [ 29.86ms - stdout ] ────────────────────────────────────────────────────────
│ "/// a
│ /// 
│     /// b
│ /// 
│ /// c"
│ 
│ 

── markdown ────────────────────────────────────────────────────────────────────
│ ## formatBlocks

── fsharp ──────────────────────────────────────────────────────────────────────
let inline formatBlocks output blocks =
    blocks
    |> List.map (fun block ->
        block, formatBlock output block
    )
    |> List.filter (snd >> (<>) "")
    |> fun list ->
        (list, (None, [[]]))
        ||> List.foldBack (fun (block, content) (lastMagic, acc) ->
            let lineBreak =
                if block.magic = Markdown && lastMagic <> Some Markdown && 
lastMagic <> None
                then ""
                else "\n"
            Some block.magic, $"{content}{lineBreak}" :: acc
        )
    |> snd
    |> SpiralSm.concat "\n"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!markdown


a

b


\#!markdown


c


\#!fsharp


let a = 1

\#!markdown

d (test)

\#!fsharp

//// test

let a = 2

\#!markdown

e

\#!fsharp

let a = 3"
|> escapeCell
|> run blocks
|> function
    | Success (blocks, _, _) -> formatBlocks Fs blocks
    | Failure (msg, _, _) -> failwith msg
|> _assertEqual "/// a
/// 
/// b

/// c
let a = 1

/// e
let a = 3
"

── [ 39.54ms - stdout ] ────────────────────────────────────────────────────────
│ "/// a
│ /// 
│ /// b
│ 
│ /// c
│ let a = 1
│ 
│ /// e
│ let a = 3
│ "
│ 
│ 

── markdown ────────────────────────────────────────────────────────────────────
│ ## indentBlock

── fsharp ──────────────────────────────────────────────────────────────────────
let inline indentBlock (block : Block) =
    { block with
        content =
            block.content
            |> SpiralSm.split "\n"
            |> Array.fold
                (fun (lines, isMultiline) line ->
                    let trimmedLine = line |> SpiralSm.trim
                    if trimmedLine = ""
                    then "" :: lines, isMultiline
                    else
                        let inline singleQuoteLine () =
                            trimmedLine |> Seq.sumBy ((=) '"' >> 
System.Convert.ToInt32) = 1
                            && trimmedLine |> SpiralSm.contains @"'""'" |> not
                            && trimmedLine |> SpiralSm.ends_with "{" |> not
                            && trimmedLine |> SpiralSm.ends_with "{|" |> not
                            && trimmedLine |> SpiralSm.starts_with "}" |> not
                            && trimmedLine |> SpiralSm.starts_with "|}" |> not

                        match isMultiline, trimmedLine |> SpiralSm.split_string 
[[| $"{q}{q}{q}" |]] with
                        | false, [[| _; _ |]] ->
                            $"    {line}" :: lines, true

                        | true, [[| _; _ |]] ->
                            line :: lines, false

                        | false, _ when singleQuoteLine () ->
                            $"    {line}" :: lines, true

                        | false, _ when line |> SpiralSm.starts_with "#" && 
block.magic = Fsharp ->
                            line :: lines, false

                        | false, _ ->
                            $"    {line}" :: lines, false

                        | true, _ when singleQuoteLine () && line |> 
SpiralSm.starts_with "    " ->
                            $"    {line}" :: lines, false

                        | true, _ when singleQuoteLine () ->
                            line :: lines, false

                        | true, _ ->
                            line :: lines, true
                )
                ([[]], false)
            |> fst
            |> List.rev
            |> SpiralSm.concat "\n"
    }

── markdown ────────────────────────────────────────────────────────────────────
│ ## parse

── fsharp ──────────────────────────────────────────────────────────────────────
let inline parse output input =
    match run blocks input with
    | Success (blocks, _, _) ->
        blocks
        |> List.filter (fun block ->
            block.magic |> kernelOutputs |> List.contains output || block.magic 
= Markdown
        )
        |> List.map Some
        |> fun x -> x @ [[ None ]]
        |> List.pairwise
        |> List.choose (function
            | Some { magic = Markdown } as block, Some { magic = Markdown } -> 
block
            | Some { magic = Markdown } as block, Some { magic = magic }
                when magic |> kernelOutputs |> List.contains output -> block
            | Some { magic = Markdown } as block, _ when output = Md -> block
            | Some { magic = Markdown }, _ -> None
            | Some block, _ -> Some block
            | _ -> None
        )
        |> List.fold
            (fun (acc, indent) -> function
                | { magic = Markdown; content = content }
                    when output = Fs
                    && content |> SpiralSm.starts_with "# "
                    && content |> SpiralSm.ends_with ")"
                    ->
                    let moduleName, namespaceName =
                        System.Text.RegularExpressions.Regex.Match (content, @"#
(.*) \((.*)\)$")
                        |> fun m -> m.Groups.[[1]].Value, m.Groups.[[2]].Value

                    let moduleBlock =
                        {
                            magic = Fsharp
                            content =
                                $"#if !INTERACTIVE
namespace {namespaceName}
#endif

module {moduleName} ="
                        }

                    moduleBlock :: acc, (indent + 1)
                | { magic = magic ; content = content } as block
                    when indent > 0
                    ->
                    indentBlock block :: acc, indent
                | block -> block :: acc, indent
            )
            ([[]], 0)
        |> fst
        |> List.rev
        |> Result.Ok
    | Failure (errorMsg, _, _) -> Result.Error errorMsg

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let example1 =
    $"""#!meta

{{"kernelInfo":{{"defaultKernelName":"fsharp","items":[[{{"aliases":[[]],"name":
"fsharp"}},{{"aliases":[[]],"name":"fsharp"}}]]}}}}

\#!markdown

# TestModule (TestNamespace)

\#!fsharp

\#!import file.dib

\#!fsharp

\#r "nuget:Expecto"

\#!markdown

## ParserLibrary

\#!fsharp

open System

\#!markdown

## x (test)

\#!fsharp

//// ignore

let x = 1

\#!spiral

//// test

inl x = 1i32

\#!spiral

//// real

inl x = 2i32

\#!spiral

inl x = 3i32

\#!markdown

### TextInput

\#!fsharp

let str1 = "abc
def"

let str2 =
    "abc\
def"

let str3 =
    $"1{{
        1
    }}1"

let str4 =
    $"1{{({{|
        a = 1
    |}}).a}}1"

let str5 =
    "abc \
        def"

let x =
    match '"' with
    | '"' -> true
    | _ -> false

let long1 = {q}{q}{q}a{q}{q}{q}

let long2 =
    {q}{q}{q}
a
{q}{q}{q}

\#!fsharp

type Position =
    {{
#if INTERACTIVE
        line : string
#else
        line : int
#endif
        column : int
    }}"""
    |> escapeCell

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

example1
|> parse Fs
|> Result.toOption
|> Option.get
|> (formatBlocks Fs)
|> _assertEqual $"""#if !INTERACTIVE
namespace TestNamespace
#endif

module TestModule =

    /// ## ParserLibrary
    open System

    /// ### TextInput
    let str1 = "abc
def"

    let str2 =
        "abc\
def"

    let str3 =
        $"1{{
            1
        }}1"

    let str4 =
        $"1{{({{|
            a = 1
        |}}).a}}1"

    let str5 =
        "abc \
            def"

    let x =
        match '"' with
        | '"' -> true
        | _ -> false

    let long1 = {q}{q}{q}a{q}{q}{q}

    let long2 =
        {q}{q}{q}
a
{q}{q}{q}

    type Position =
        {{
#if INTERACTIVE
            line : string
#else
            line : int
#endif
            column : int
        }}
"""

── [ 84.76ms - stdout ] ────────────────────────────────────────────────────────
│ "#if !INTERACTIVE
│ namespace TestNamespace
│ #endif
│ 
│ module TestModule =
│ 
│     /// ## ParserLibrary
│     open System
│ 
│     /// ### TextInput
│     let str1 = "abc
│ def"
│ 
│     let str2 =
│         "abc\
│ def"
│ 
│     let str3 =
│         $"1{
│             1
│         }1"
│ 
│     let str4 =
│         $"1{({|
│             a = 1
│         |}).a}1"
│ 
│     let str5 =
│         "abc \
│             def"
│ 
│     let x =
│         match '"' with
│         | '"' -> true
│         | _ -> false
│ 
│     let long1 = """a"""
│ 
│     let long2 =
│         """
│ a
│ """
│ 
│     type Position =
│         {
│ #if INTERACTIVE
│             line : string
│ #else
│             line : int
│ #endif
│             column : int
│         }
│ "
│ 
│ 

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

example1
|> parse Md
|> Result.toOption
|> Option.get
|> (formatBlocks Md)
|> _assertEqual "# TestModule (TestNamespace)

## ParserLibrary

### TextInput
"

── [ 73.76ms - stdout ] ────────────────────────────────────────────────────────
│ "# TestModule (TestNamespace)
│ 
│ ## ParserLibrary
│ 
│ ### TextInput
│ "
│ 
│ 

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

example1
|> parse Spi
|> Result.toOption
|> Option.get
|> (formatBlocks Spi)
|> _assertEqual "/// # TestModule (TestNamespace)

/// ## ParserLibrary
inl x = 3i32
"

── [ 75.52ms - stdout ] ────────────────────────────────────────────────────────
│ "/// # TestModule (TestNamespace)
│ 
│ /// ## ParserLibrary
│ inl x = 3i32
│ "
│ 
│ 

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

example1
|> parse Spir
|> Result.toOption
|> Option.get
|> (formatBlocks Spir)
|> _assertEqual "/// # TestModule (TestNamespace)

/// ## ParserLibrary
inl x = 2i32
"

── [ 78.13ms - stdout ] ────────────────────────────────────────────────────────
│ "/// # TestModule (TestNamespace)
│ 
│ /// ## ParserLibrary
│ inl x = 2i32
│ "
│ 
│ 

── markdown ────────────────────────────────────────────────────────────────────
│ ## parseDibCode

── fsharp ──────────────────────────────────────────────────────────────────────
let inline parseDibCode output file = async {
    trace Debug
        (fun () -> "parseDibCode")
        (fun () -> $"output: {output} / file: {file} / {_locals ()}")
    let! input = file |> SpiralFileSystem.read_all_text_async
    match parse output input with
    | Result.Ok blocks -> return blocks |> formatBlocks output
    | Result.Error msg -> return failwith msg
}

── markdown ────────────────────────────────────────────────────────────────────
│ ## writeDibCode

── fsharp ──────────────────────────────────────────────────────────────────────
let inline writeDibCode output path = async {
    trace Debug
        (fun () -> "writeDibCode")
        (fun () -> $"output: {output} / path: {path} / {_locals ()}")
    let! result = parseDibCode output path
    let pathDir = path |> System.IO.Path.GetDirectoryName
    let fileNameWithoutExt =
        match output, path |> System.IO.Path.GetFileNameWithoutExtension with
        | Spir, fileNameWithoutExt -> $"{fileNameWithoutExt}_real"
        | _, fileNameWithoutExt -> fileNameWithoutExt
    let outputPath = pathDir </> $"{fileNameWithoutExt}.{output |> string |> 
SpiralSm.to_lower}"
    do! result |> SpiralFileSystem.write_all_text_async outputPath
}

── markdown ────────────────────────────────────────────────────────────────────
│ ## Arguments

── fsharp ──────────────────────────────────────────────────────────────────────
[[<RequireQualifiedAccess>]]
type Arguments =
    | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.Mandatory>]]
        File of file : string * Output

    interface Argu.IArgParserTemplate with
        member s.Usage =
            match s with
            | File _ -> nameof File

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

Argu.ArgumentParser.Create<Arguments>().PrintUsage ()

── [ 64.03ms - return value ] ──────────────────────────────────────────────────
│ "USAGE: dotnet-repl [--help] <file> <fs|md|spi|spir>
│ 
│ FILE:
│ 
│     <file> <fs|md|spi|spir>
│                           File
│ 
│ OPTIONS:
│ 
│     --help                display this list of options.
│ "
│ 

── markdown ────────────────────────────────────────────────────────────────────
│ ## main

── fsharp ──────────────────────────────────────────────────────────────────────
let main args =
    let argsMap = args |> Runtime.parseArgsMap<Arguments>

    let files =
        argsMap.[[nameof Arguments.File]]
        |> List.map (function
            | Arguments.File (path, output) -> path, output
        )

    files
    |> List.map (fun (path, output) -> path |> writeDibCode output)
    |> Async.Parallel
    |> Async.Ignore
    |> Async.runWithTimeout 30000
    |> function
        | Some () -> 0
        | None -> 1

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let args =
    System.Environment.GetEnvironmentVariable "ARGS"
    |> SpiralRuntime.split_args
    |> Result.toArray
    |> Array.collect id

match args with
| [[||]] -> 0
| args -> if main args = 0 then 0 else failwith "main failed"

── [ 117.69ms - return value ] ─────────────────────────────────────────────────
│ <div class="dni-plaintext"><pre>0
│ </pre></div><style>
│ .dni-code-hint {
│     font-style: italic;
│     overflow: hidden;
│     white-space: nowrap;
│ }
│ .dni-treeview {
│     white-space: nowrap;
│ }
│ .dni-treeview td {
│     vertical-align: top;
│     text-align: start;
│ }
│ details.dni-treeview {
│     padding-left: 1em;
│ }
│ table td {
│     text-align: start;
│ }
│ table tr { 
│     vertical-align: top; 
│     margin: 0em 0px;
│ }
│ table tr td pre 
│ { 
│     vertical-align: top !important; 
│     margin: 0em 0px !important;
│ } 
│ table th {
│     text-align: start;
│ }
│ </style>

── [ 118.33ms - stdout ] ───────────────────────────────────────────────────────
│ 00:00:02 d #1 writeDibCode / output: Fs / path: 
Builder.dib
│ 00:00:02 d #2 parseDibCode / output: Fs / file: 
Builder.dib
│ 
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Builder.dib"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None; stderr = true } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ # Builder (Polyglot)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
> dard2.1/FSharp.Control.AsyncSeq.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
> 0/System.Reactive.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
> netstandard2.0/System.Reactive.Linq.dll"
> #r 
> @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #if !INTERACTIVE
> open Lib
> #endif
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Common
> open SpiralFileSystem.Operators
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## buildProject
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline buildProject runtime outputDir path = async {
>     let fullPath = path |> System.IO.Path.GetFullPath
>     let fileDir = fullPath |> System.IO.Path.GetDirectoryName
>     let extension = fullPath |> System.IO.Path.GetExtension
> 
>     trace Debug
>         (fun () -> "buildProject")
>         (fun () -> $"fullPath: {fullPath} / {_locals ()}")
> 
>     match extension with
>     | ".fsproj" -> ()
>     | _ -> failwith "Invalid project file"
> 
>     let runtimes =
>         runtime
>         |> Option.map List.singleton
>         |> Option.defaultValue [[ "linux-x64"; "win-x64" ]]
> 
>     let outputDir = outputDir |> Option.defaultValue "dist"
> 
>     let! exitCodes =
>         runtimes
>         |> List.map (fun runtime -> async {
>             let command = $@"dotnet publish ""{fullPath}"" --configuration 
> Release --output ""{outputDir}"" --runtime {runtime}"
>             let! exitCode, _result =
>                 SpiralRuntime.execution_options (fun x ->
>                     { x with
>                         l0 = command
>                         l6 = Some fileDir
>                     }
>                 )
>                 |> SpiralRuntime.execute_with_options_async
>             return exitCode
>         })
>         |> Async.Sequential
>         |> Async.map Array.sum
> 
>     if "CI" |> System.Environment.GetEnvironmentVariable |> 
> System.String.IsNullOrEmpty |> not then
>         do! fileDir </> "bin" |> SpiralFileSystem.delete_directory_async |> 
> Async.Ignore
>         do! fileDir </> "obj" |> SpiralFileSystem.delete_directory_async |> 
> Async.Ignore
> 
>     return exitCodes
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## persistCodeProject
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline persistCodeProject packages modules name hash code = async {
>     trace Debug
>         (fun () -> "persistCodeProject")
>         (fun () -> $"packages: {packages} / modules: {modules} / name: {name} / 
> hash: {hash} / code.Length: {code |> String.length} / {_locals ()}")
> 
>     let workspaceRoot = SpiralFileSystem.get_workspace_root ()
> 
>     let targetDir =
>         let targetDir = workspaceRoot </> "target/Builder" </> name
>         match hash with
>         | Some hash -> targetDir </> "packages" </> hash
>         | None -> targetDir
>     targetDir |> System.IO.Directory.CreateDirectory |> ignore
> 
>     let filePath = targetDir </> $"{name}.fs" |> System.IO.Path.GetFullPath
>     do! code |> SpiralFileSystem.write_all_text_exists filePath
> 
>     let modulesCode =
>         modules
>         |> List.map (fun path -> $"""<Compile Include="{workspaceRoot </> path}"
> />""")
>         |> SpiralSm.concat "\n        "
> 
>     let fsprojPath = targetDir </> $"{name}.fsproj"
>     let fsprojCode = $"""<Project Sdk="Microsoft.NET.Sdk">
>     <PropertyGroup>
>         <TargetFramework>net9.0</TargetFramework>
>         <LangVersion>preview</LangVersion>
>         <RollForward>Major</RollForward>
>         <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
>         <ServerGarbageCollection>true</ServerGarbageCollection>
>         <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
>         <PublishAot>false</PublishAot>
>         <PublishTrimmed>false</PublishTrimmed>
>         <PublishSingleFile>true</PublishSingleFile>
>         <SelfContained>true</SelfContained>
>         <Version>0.0.1-alpha.1</Version>
>         <OutputType>Exe</OutputType>
>     </PropertyGroup>
> 
>     <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('FreeBSD'))">
>         <DefineConstants>_FREEBSD</DefineConstants>
>     </PropertyGroup>
> 
>     <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('Linux'))">
>         <DefineConstants>_LINUX</DefineConstants>
>     </PropertyGroup>
> 
>     <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('OSX'))">
>         <DefineConstants>_OSX</DefineConstants>
>     </PropertyGroup>
> 
>     <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('Windows'))">
>         <DefineConstants>_WINDOWS</DefineConstants>
>     </PropertyGroup>
> 
>     <ItemGroup>
>         {modulesCode}
>         <Compile Include="{filePath}" />
>     </ItemGroup>
> 
>     <ItemGroup>
>         <FrameworkReference Include="Microsoft.AspNetCore.App" />
>     </ItemGroup>
> 
>     <Import Project="{workspaceRoot}/.paket/Paket.Restore.targets" />
> </Project>
> """
>     do! fsprojCode |> SpiralFileSystem.write_all_text_exists fsprojPath
> 
>     let paketReferencesPath = targetDir </> "paket.references"
>     let paketReferencesCode =
>         "FSharp.Core" :: packages
>         |> SpiralSm.concat "\n"
>     do! paketReferencesCode |> SpiralFileSystem.write_all_text_exists 
> paketReferencesPath
> 
>     return fsprojPath
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## buildCode
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline buildCode runtime packages modules outputDir name code = async {
>     let! fsprojPath = code |> persistCodeProject packages modules name None
>     let! exitCode = fsprojPath |> buildProject runtime outputDir
>     if exitCode <> 0 then
>         trace Critical
>             (fun () -> "buildCode")
>             (fun () -> $"code: {code |> SpiralSm.ellipsis_end 400} / {_locals 
> ()}")
>     return exitCode
> }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "1 + 1 |> ignore"
> |> buildCode None [[]] [[]] None "test1"
> |> Async.runWithTimeout 180000
> |> _assertEqual (Some 0)
> 
> ── [ 10.14s - stdout ] ─────────────────────────────────────────────────────────
> │ 00:00:01 d #1 persistCodeProject / packages: [] / 
> modules: [] / name: test1 / hash:  / code.Length: 15
> │ 00:00:01 d #2 buildProject / fullPath: 
> /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj
> │ 00:00:03 d #1 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   "publish 
> "/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj" 
> --configuration Release --output "dist" --runtime linux-x64"; options = { 
> command = dotnet publish 
> "/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj" 
> --configuration Release --output "dist" --runtime linux-x64; cancellation_token 
> = None; environment_variables = [||]; on_line = None; stdin = None; trace = 
> true; working_directory = Some 
> "/home/runner/work/polyglot/polyglot/target/Builder/test1"; stderr = true } }
> │ 00:00:04 v #2 >   Determining projects to restore...
> │ 00:00:04 v #3 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:04 v #4 >   The last full restore is still up to 
> date. Nothing left to do.
> │ 00:00:04 v #5 >   Total time taken: 0 milliseconds
> │ 00:00:04 v #6 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:05 v #7 >   Restoring 
> /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj
> │ 00:00:05 v #8 >   Starting restore process.
> │ 00:00:05 v #9 >   Total time taken: 0 milliseconds
> │ 00:00:05 v #10 >   Restored 
> /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj (in 285 
> ms).
> │ 00:00:07 v #11 > 
> /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fs(1,16): warning
> FS0988: Main module of program is empty: nothing will happen when it is run 
> [/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj]
> │ 00:00:08 v #12 >   test1 -> 
> /home/runner/work/polyglot/polyglot/target/Builder/test1/bin/Release/net9.0/linu
> x-x64/test1.dll
> │ 00:00:09 v #13 >   test1 -> 
> /home/runner/work/polyglot/polyglot/target/Builder/test1/dist
> │ 00:00:09 d #14 runtime.execute_with_options_async / { 
> exit_code = 0; output_length = 911; options = { command = dotnet publish 
> "/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj" 
> --configuration Release --output "dist" --runtime linux-x64; cancellation_token 
> = None; environment_variables = [||]; on_line = None; stdin = None; trace = 
> true; working_directory = Some 
> "/home/runner/work/polyglot/polyglot/target/Builder/test1"; stderr = true } }
> │ 00:00:09 d #15 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   "publish 
> "/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj" 
> --configuration Release --output "dist" --runtime win-x64"; options = { command 
> = dotnet publish 
> "/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj" 
> --configuration Release --output "dist" --runtime win-x64; cancellation_token = 
> None; environment_variables = [||]; on_line = None; stdin = None; trace = true; 
> working_directory = Some 
> "/home/runner/work/polyglot/polyglot/target/Builder/test1"; stderr = true } }
> │ 00:00:09 v #16 >   Determining projects to restore...
> │ 00:00:09 v #17 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:09 v #18 >   The last full restore is still up to 
> date. Nothing left to do.
> │ 00:00:09 v #19 >   Total time taken: 0 milliseconds
> │ 00:00:10 v #20 >   Restored 
> /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj (in 240 
> ms).
> │ 00:00:12 v #21 > 
> /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fs(1,16): warning
> FS0988: Main module of program is empty: nothing will happen when it is run 
> [/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj]
> │ 00:00:12 v #22 >   test1 -> 
> /home/runner/work/polyglot/polyglot/target/Builder/test1/bin/Release/net9.0/win-
> x64/test1.dll
> │ 00:00:13 v #23 >   test1 -> 
> /home/runner/work/polyglot/polyglot/target/Builder/test1/dist
> │ 00:00:13 d #24 runtime.execute_with_options_async / { 
> exit_code = 0; output_length = 701; options = { command = dotnet publish 
> "/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj" 
> --configuration Release --output "dist" --runtime win-x64; cancellation_token = 
> None; environment_variables = [||]; on_line = None; stdin = None; trace = true; 
> working_directory = Some 
> "/home/runner/work/polyglot/polyglot/target/Builder/test1"; stderr = true } }
> │ Some 0
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "1 + a |> ignore"
> |> buildCode None [[]] [[]] None "test2"
> |> Async.runWithTimeout 180000
> |> _assertEqual (Some 2)
> 
> ── [ 6.76s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:11 d #3 persistCodeProject / packages: [] / 
> modules: [] / name: test2 / hash:  / code.Length: 15
> │ 00:00:11 d #4 buildProject / fullPath: 
> /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj
> │ 00:00:13 d #25 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   "publish 
> "/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj" 
> --configuration Release --output "dist" --runtime linux-x64"; options = { 
> command = dotnet publish 
> "/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj" 
> --configuration Release --output "dist" --runtime linux-x64; cancellation_token 
> = None; environment_variables = [||]; on_line = None; stdin = None; trace = 
> true; working_directory = Some 
> "/home/runner/work/polyglot/polyglot/target/Builder/test2"; stderr = true } }
> │ 00:00:14 v #26 >   Determining projects to restore...
> │ 00:00:14 v #27 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:14 v #28 >   The last full restore is still up to 
> date. Nothing left to do.
> │ 00:00:14 v #29 >   Total time taken: 0 milliseconds
> │ 00:00:14 v #30 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:15 v #31 >   Restoring 
> /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj
> │ 00:00:15 v #32 >   Starting restore process.
> │ 00:00:15 v #33 >   Total time taken: 0 milliseconds
> │ 00:00:15 v #34 >   Restored 
> /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj (in 238 
> ms).
> │ 00:00:17 v #35 > 
> /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fs(1,5): error 
> FS0039: The value or constructor 'a' is not defined. 
> [/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj]
> │ 00:00:17 d #36 runtime.execute_with_options_async / { 
> exit_code = 1; output_length = 704; options = { command = dotnet publish 
> "/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj" 
> --configuration Release --output "dist" --runtime linux-x64; cancellation_token 
> = None; environment_variables = [||]; on_line = None; stdin = None; trace = 
> true; working_directory = Some 
> "/home/runner/work/polyglot/polyglot/target/Builder/test2"; stderr = true } }
> │ 00:00:17 d #37 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   "publish 
> "/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj" 
> --configuration Release --output "dist" --runtime win-x64"; options = { command 
> = dotnet publish 
> "/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj" 
> --configuration Release --output "dist" --runtime win-x64; cancellation_token = 
> None; environment_variables = [||]; on_line = None; stdin = None; trace = true; 
> working_directory = Some 
> "/home/runner/work/polyglot/polyglot/target/Builder/test2"; stderr = true } }
> │ 00:00:17 v #38 >   Determining projects to restore...
> │ 00:00:18 v #39 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:18 v #40 >   The last full restore is still up to 
> date. Nothing left to do.
> │ 00:00:18 v #41 >   Total time taken: 0 milliseconds
> │ 00:00:18 v #42 >   Restored 
> /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj (in 261 
> ms).
> │ 00:00:20 v #43 > 
> /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fs(1,5): error 
> FS0039: The value or constructor 'a' is not defined. 
> [/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj]
> │ 00:00:20 d #44 runtime.execute_with_options_async / { 
> exit_code = 1; output_length = 496; options = { command = dotnet publish 
> "/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj" 
> --configuration Release --output "dist" --runtime win-x64; cancellation_token = 
> None; environment_variables = [||]; on_line = None; stdin = None; trace = true; 
> working_directory = Some 
> "/home/runner/work/polyglot/polyglot/target/Builder/test2"; stderr = true } }
> │ 00:00:18 c #5 buildCode / code: 1 + a |> ignore
> │ Some 2
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## readFile
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline readFile path = async {
>     let! code = path |> SpiralFileSystem.read_all_text_async
> 
>     let code = System.Text.RegularExpressions.Regex.Replace (
>         code,
>         @"( *)(let\s+main\s+\w+\s*=)",
>         fun m -> m.Groups.[[1]].Value + "[[<EntryPoint>]]\n" + 
> m.Groups.[[1]].Value + m.Groups.[[2]].Value
>     )
> 
>     let codeTrim = code |> SpiralSm.trim_end [[||]]
>     return
>         if codeTrim |> SpiralSm.ends_with "\n()"
>         then codeTrim |> SpiralSm.slice 0 ((codeTrim |> String.length) - 3)
>         else code
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## buildFile
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline buildFile runtime packages modules path = async {
>     let fullPath = path |> System.IO.Path.GetFullPath
>     let dir = fullPath |> System.IO.Path.GetDirectoryName
>     let name = fullPath |> System.IO.Path.GetFileNameWithoutExtension
>     let! code = fullPath |> readFile
>     return! code |> buildCode runtime packages modules (dir </> "dist" |> Some) 
> name
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## persistFile
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline persistFile packages modules path = async {
>     let fullPath = path |> System.IO.Path.GetFullPath
>     let name = fullPath |> System.IO.Path.GetFileNameWithoutExtension
>     let! code = fullPath |> readFile
>     return! code |> persistCodeProject packages modules name None
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## Arguments
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> [[<RequireQualifiedAccess>]]
> type Arguments =
>     | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.ExactlyOnce>]] 
> Path of path : string
>     | [[<Argu.ArguAttributes.Unique>]] Packages of packages : string list
>     | [[<Argu.ArguAttributes.Unique>]] Modules of modules : string list
>     | [[<Argu.ArguAttributes.Unique>]] Runtime of runtime : string
>     | [[<Argu.ArguAttributes.Unique>]] Persist_Only
> 
>     interface Argu.IArgParserTemplate with
>         member s.Usage =
>             match s with
>             | Path _ -> nameof Path
>             | Packages _ -> nameof Packages
>             | Modules _ -> nameof Modules
>             | Runtime _ -> nameof Runtime
>             | Persist_Only -> nameof Persist_Only
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> Argu.ArgumentParser.Create<Arguments>().PrintUsage ()
> 
> ── [ 102.43ms - return value ] ─────────────────────────────────────────────────
> │ "USAGE: dotnet-repl [--help] [--packages [<packages>...]]
> │                    [--modules [<modules>...]] [--runtime 
> <runtime>]
> │                    [--persist-only] <path>
> │ 
> │ PATH:
> │ 
> │     <path>                Path
> │ 
> │ OPTIONS:
> │ 
> │     --packages [<packages>...]
> │                           Packages
> │     --modules [<modules>...]
> │                           Modules
> │     --runtime <runtime>   Runtime
> │     --persist-only        Persist_Only
> │     --help                display this list of options.
> │ "
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## main
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let main args =
>     let argsMap = args |> Runtime.parseArgsMap<Arguments>
> 
>     let path =
>         match argsMap.[[nameof Arguments.Path]] with
>         | [[ Arguments.Path path ]] -> Some path
>         | _ -> None
>         |> Option.get
> 
>     let packages =
>         match argsMap |> Map.tryFind (nameof Arguments.Packages) with
>         | Some [[ Arguments.Packages packages ]] -> packages
>         | _ -> [[]]
> 
>     let modules =
>         match argsMap |> Map.tryFind (nameof Arguments.Modules) with
>         | Some [[ Arguments.Modules modules ]] -> modules
>         | _ -> [[]]
> 
>     let runtime =
>         match argsMap |> Map.tryFind (nameof Arguments.Runtime) with
>         | Some [[ Arguments.Runtime runtime ]] -> Some runtime
>         | _ -> None
> 
>     let persistOnly = argsMap |> Map.containsKey (nameof Arguments.Persist_Only)
> 
>     if persistOnly
>     then path |> persistFile packages modules |> Async.map (fun _ -> 0)
>     else path |> buildFile runtime packages modules
>     |> Async.runWithTimeout (60001 * 60 * 24)
>     |> function
>         | Some exitCode -> exitCode
>         | None -> 1
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let args =
>     System.Environment.GetEnvironmentVariable "ARGS"
>     |> SpiralRuntime.split_args
>     |> Result.toArray
>     |> Array.collect id
> 
> match args with
> | [[||]] -> 0
> | args -> if main args = 0 then 0 else failwith "main failed"
> 
> ── [ 14.13s - return value ] ───────────────────────────────────────────────────
> │ <div class="dni-plaintext"><pre>0
> │ </pre></div><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 14.14s - stdout ] ─────────────────────────────────────────────────────────
> │ 00:00:18 d #6 persistCodeProject / packages: [Argu; 
> FSharp.Control.AsyncSeq; System.Reactive.Linq] / modules: 
> [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; 
> deps/spiral/lib/spiral/crypto.fsx; ... ] / name: Builder / hash:  / code.Length:
> 8673
> │ 00:00:18 d #7 buildProject / fullPath: 
> /home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj
> │ 00:00:20 d #45 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   "publish 
> "/home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj" 
> --configuration Release --output 
> "/home/runner/work/polyglot/polyglot/apps/builder/dist" --runtime linux-x64"; 
> options = { command = dotnet publish 
> "/home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj" 
> --configuration Release --output 
> "/home/runner/work/polyglot/polyglot/apps/builder/dist" --runtime linux-x64; 
> cancellation_token = None; environment_variables = [||]; on_line = None; stdin =
> None; trace = true; working_directory = Some 
> "/home/runner/work/polyglot/polyglot/target/Builder/Builder"; stderr = true } }
> │ 00:00:21 v #46 >   Determining projects to restore...
> │ 00:00:21 v #47 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:21 v #48 >   The last full restore is still up to 
> date. Nothing left to do.
> │ 00:00:21 v #49 >   Total time taken: 0 milliseconds
> │ 00:00:22 v #50 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:22 v #51 >   Restoring 
> /home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj
> │ 00:00:22 v #52 >   Starting restore process.
> │ 00:00:22 v #53 >   Total time taken: 0 milliseconds
> │ 00:00:23 v #54 >   Restored 
> /home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj (in 
> 260 ms).
> │ 00:00:34 v #55 >   Builder -> 
> /home/runner/work/polyglot/polyglot/target/Builder/Builder/bin/Release/net9.0/li
> nux-x64/Builder.dll
> │ 00:00:34 v #56 >   Builder -> 
> /home/runner/work/polyglot/polyglot/apps/builder/dist
> │ 00:00:34 d #57 runtime.execute_with_options_async / { 
> exit_code = 0; output_length = 690; options = { command = dotnet publish 
> "/home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj" 
> --configuration Release --output 
> "/home/runner/work/polyglot/polyglot/apps/builder/dist" --runtime linux-x64; 
> cancellation_token = None; environment_variables = [||]; on_line = None; stdin =
> None; trace = true; working_directory = Some 
> "/home/runner/work/polyglot/polyglot/target/Builder/Builder"; stderr = true } }
> │ 
00:00:47 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 27408 }
00:00:47 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:00:48 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb to html
00:00:48 v #6 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:48 v #7 !   validate(nb)
00:00:48 v #8 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:48 v #9 !   return _pygments_highlight(
00:00:49 v #10 ! [NbConvertApp] Writing 337247 bytes to /home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.html
00:00:49 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 904 }
00:00:49 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 904 }
00:00:49 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:00:49 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:49 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:49 d #16 spiral.run / dib / { exit_code = 0; result_length = 28371 }
polyglot/apps/builder/build.ps1 / $env:CI:'true'
In [ ]:
{ pwsh ../deps/spiral/apps/spiral/build.ps1 -fast 1 -SkipFsx 1 } | Invoke-Block
spiral/apps/spiral/build.ps1 / ScriptDir: /home/runner/work/polyglot/polyglot/deps/spiral/apps/spiral / ResolvedScriptDir: /home/runner/work/polyglot/spiral/apps/spiral
00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: spiral / hash:  / code.Length: 2025897
spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: /home/runner/work/polyglot/polyglot/target/Builder/spiral
polyglot/scripts/core.ps1/ResolveLink #4 / Path: /home/runner/work/polyglot/polyglot/deps/spiral/deps/polyglot/deps/spiral/lib/spiral/../../deps/polyglot / parent_target:  / path_target: /home/runner/work/polyglot/polyglot / parent: /home/runner/work/polyglot/polyglot/deps/spiral/deps/polyglot/deps/spiral/lib/spiral/../../deps / End: polyglot
spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: /home/runner/work/polyglot/polyglot/target/Builder/spiral / ProjectName: spiral / Language: rs / Runtime:  / root: /home/runner/work/polyglot/polyglot
Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha)

Thanks to the contributor! @7sharp9
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target/Builder/spiral/spiral.fsproj...
Project and references (14 source files) parsed in 3018ms

Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)

Started Fable compilation...

Fable compilation finished in 13775ms

./deps/spiral/lib/spiral/common.fsx(2206,0): (2206,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/sm.fsx(561,0): (561,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/async_.fsx(250,0): (250,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/crypto.fsx(2436,0): (2436,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/date_time.fsx(2553,0): (2553,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/platform.fsx(122,0): (122,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/networking.fsx(5525,0): (5525,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/trace.fsx(2244,0): (2244,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/runtime.fsx(9174,0): (9174,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/file_system.fsx(20847,0): (20847,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
spiral/apps/spiral/build.ps1 / path: /home/runner/work/polyglot/polyglot/target/Builder/spiral/target/rs/spiral.rs
spiral/apps/spiral/build.ps1 / $projectName: spiral / $env:CI:'true'
   Compiling spiral v0.0.1 (/home/runner/work/polyglot/spiral/apps/spiral)
    Finished `release` profile [optimized] target(s) in 17.72s
In [ ]:
{ pwsh ../apps/parser/build.ps1 } | Invoke-Block
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "DibParser.dib"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None; stderr = true } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ # DibParser (Polyglot)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
> dard2.1/FSharp.Control.AsyncSeq.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
> 0/System.Reactive.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
> netstandard2.0/System.Reactive.Linq.dll"
> #r 
> @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
> #r 
> @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
> arsec.dll"
> #r 
> @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
> arsecCS.dll"
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> ls ~/.nuget/packages/argu
> 
> ── [ 181.95ms - stdout ] ───────────────────────────────────────────────────────
> │ 6.2.4
> │ 6.2.5
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #if !INTERACTIVE
> open Lib
> #endif
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Common
> open FParsec
> open SpiralFileSystem.Operators
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## escapeCell (test)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let inline escapeCell input =
>     input
>     |> SpiralSm.split "\n"
>     |> Array.map (function
>         | line when line |> SpiralSm.starts_with "\\#!" || line |> 
> SpiralSm.starts_with "\\#r" ->
>             System.Text.RegularExpressions.Regex.Replace (line, "^\\\\#", "#")
>         | line -> line
>     )
>     |> SpiralSm.concat "\n"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> $"a{nl}\\#!magic{nl}b{nl}"
> |> escapeCell
> |> _assertEqual (
>     $"a{nl}#!magic{nl}b{nl}"
> )
> 
> ── [ 40.63ms - stdout ] ────────────────────────────────────────────────────────
> │ "a
> │ #!magic
> │ b
> │ "
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## magicMarker
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let magicMarker : Parser<string, unit> = pstring "#!"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "#!magic"
> |> run magicMarker
> |> _assertEqual (
>     Success ("#!", (), Position ("", 2, 1, 3))
> )
> 
> ── [ 24.71ms - stdout ] ────────────────────────────────────────────────────────
> │ Success: "#!"
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "##!magic"
> |> run magicMarker
> |> _assertEqual (
>     Failure (
>         $"Error in Ln: 1 Col: 1{nl}##!magic{nl}^{nl}Expecting: '#!'{nl}",
>         ParserError (
>             Position ("", 0, 1, 1),
>             (),
>             ErrorMessageList (ExpectedString "#!")
>         ),
>         ()
>     )
> )
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> ── [ 54.05ms - diagnostics ] ───────────────────────────────────────────────────
> │ input.fsx (10,13)-(10,15) typecheck warning This expression 
> uses 'unit' for an 'obj'-typed argument. This will lead to passing 'null' at 
> runtime. This warning may be disabled using '#nowarn "3397".
> 
> ── [ 54.49ms - stdout ] ────────────────────────────────────────────────────────
> │ Failure:
> │ Error in Ln: 1 Col: 1
> │ ##!magic
> │ ^
> │ Expecting: '#!'
> │ 
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## magicCommand
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let magicCommand =
>     magicMarker
>     >>. manyTill anyChar newline
>     |>> (System.String.Concat >> SpiralSm.trim)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "#!magic
> 
> a"
> |> run magicCommand
> |> _assertEqual (
>     Success ("magic", (), Position ("", 8, 2, 1))
> )
> 
> ── [ 14.27ms - stdout ] ────────────────────────────────────────────────────────
> │ Success: "magic"
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> " #!magic
> 
> a"
> |> run magicCommand
> |> _assertEqual (
>     Failure (
>         $"Error in Ln: 1 Col: 1{nl} #!magic{nl}^{nl}Expecting: '#!'{nl}",
>         ParserError (
>             Position ("", 0, 1, 1),
>             (),
>             ErrorMessageList (ExpectedString "#!")
>         ),
>         ()
>     )
> )
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> ── [ 14.04ms - diagnostics ] ───────────────────────────────────────────────────
> │ input.fsx (12,13)-(12,15) typecheck warning This expression 
> uses 'unit' for an 'obj'-typed argument. This will lead to passing 'null' at 
> runtime. This warning may be disabled using '#nowarn "3397".
> 
> ── [ 14.52ms - stdout ] ────────────────────────────────────────────────────────
> │ Failure:
> │ Error in Ln: 1 Col: 1
> │  #!magic
> │ ^
> │ Expecting: '#!'
> │ 
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## content
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let content =
>     (newline >>. magicMarker) <|> (eof >>. preturn "")
>     |> attempt
>     |> lookAhead
>     |> manyTill anyChar
>     |>> (System.String.Concat >> SpiralSm.trim)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "#!magic
> 
> 
> a
> 
> 
> "
> |> run content
> |> _assertEqual (
>     Success ("#!magic
> 
> 
> a", (), Position ("", 14, 7, 1))
> )
> 
> ── [ 13.28ms - stdout ] ────────────────────────────────────────────────────────
> │ Success: "#!magic
> │ 
> │ 
> │ a"
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## Output
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Output =
>     | Fs
>     | Md
>     | Spi
>     | Spir
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## Magic
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Magic =
>     | Fsharp
>     | Markdown
>     | Spiral of Output
>     | Magic of string
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## kernelOutputs
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline kernelOutputs magic =
>     match magic with
>     | Fsharp -> [[ Fs ]]
>     | Markdown -> [[ Md ]]
>     | Spiral output -> [[ output ]]
>     | _ -> [[]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## Block
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Block =
>     {
>         magic : Magic
>         content : string
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## block
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let block =
>     pipe2
>         magicCommand
>         content
>         (fun magic content ->
>             let magic, content =
>                 match magic with
>                 | "fsharp" -> Fsharp, content
>                 | "markdown" -> Markdown, content
>                 | "spiral" ->
>                     let output = if content |> SpiralSm.contains "//// real\n" 
> then Spir else Spi
>                     let content =
>                         if output = Spi
>                         then content
>                         else
>                             content
>                             |> SpiralSm.replace "//// real\n\n" ""
>                             |> SpiralSm.replace "//// real\n" ""
>                     Spiral output, content
>                 | magic -> magic |> Magic, content
>             {
>                 magic = magic
>                 content = content
>             })
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "#!magic
> 
> 
> a
> 
> 
> "
> |> run block
> |> _assertEqual (
>     Success (
>         { magic = Magic "magic"; content = "a" },
>         (),
>         Position ("", 14, 7, 1)
>     )
> )
> 
> ── [ 23.88ms - stdout ] ────────────────────────────────────────────────────────
> │ Success: { magic = Magic "magic"
> │   content = "a" }
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## blocks
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let blocks =
>     skipMany newline
>     >>. sepEndBy block (skipMany1 newline)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> 
> "#!magic1
> 
> a
> 
> \#!magic2
> 
> b
> 
> "
> |> escapeCell
> |> run blocks
> |> _assertEqual (
>     Success (
>         [[
>             { magic = Magic "magic1"; content = "a" }
>             { magic = Magic "magic2"; content = "b" }
>         ]],
>         (),
>         Position ("", 26, 9, 1)
>     )
> )
> 
> ── [ 23.34ms - stdout ] ────────────────────────────────────────────────────────
> │ Success: [{ magic = Magic "magic1"
> │    content = "a" }; { magic = Magic "magic2"
> │                       content = "b" }]
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## formatBlock
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline formatBlock output (block : Block) =
>     match output, block with
>     | output, { magic = Markdown; content = content } ->
>         let markdownComment =
>             match output with
>             | Spi | Spir -> "/// "
>             | Fs -> "/// "
>             | _ -> ""
>         content
>         |> SpiralSm.split "\n"
>         |> Array.map (SpiralSm.trim_end [[||]])
>         |> Array.filter (SpiralSm.ends_with " (test)" >> not)
>         |> Array.map (function
>             | "" -> markdownComment
>             | line -> System.Text.RegularExpressions.Regex.Replace (line, 
> "^\\s*", $"$&{markdownComment}")
>         )
>         |> SpiralSm.concat "\n"
>     | Fs, { magic = Fsharp; content = content } ->
>         let trimmedContent = content |> SpiralSm.trim
>         if trimmedContent |> SpiralSm.contains "//// test\n"
>             || trimmedContent |> SpiralSm.contains "//// ignore\n"
>         then ""
>         else
>             content
>             |> SpiralSm.split "\n"
>             |> Array.filter (SpiralSm.trim_start [[||]] >> SpiralSm.starts_with 
> "#r" >> not)
>             |> SpiralSm.concat "\n"
>     | (Spi | Spir), { magic = Spiral output'; content = content } when output' =
> output ->
>         let trimmedContent = content |> SpiralSm.trim
>         if trimmedContent |> SpiralSm.contains "//// test\n"
>             || trimmedContent |> SpiralSm.contains "//// ignore\n"
>         then ""
>         else content
>     | _ -> ""
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "#!markdown
> 
> 
> a
> 
>     b
> 
> c
> 
> 
> \#!markdown
> 
> 
> c
> 
> 
> \#!fsharp
> 
> 
> let a = 1"
> |> escapeCell
> |> run block
> |> function
>     | Success (block, _, _) -> formatBlock Fs block
>     | Failure (msg, _, _) -> failwith msg
> |> _assertEqual "/// a
> /// 
>     /// b
> /// 
> /// c"
> 
> ── [ 30.16ms - stdout ] ────────────────────────────────────────────────────────
> │ "/// a
> │ /// 
> │     /// b
> │ /// 
> │ /// c"
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## formatBlocks
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline formatBlocks output blocks =
>     blocks
>     |> List.map (fun block ->
>         block, formatBlock output block
>     )
>     |> List.filter (snd >> (<>) "")
>     |> fun list ->
>         (list, (None, [[]]))
>         ||> List.foldBack (fun (block, content) (lastMagic, acc) ->
>             let lineBreak =
>                 if block.magic = Markdown && lastMagic <> Some Markdown && 
> lastMagic <> None
>                 then ""
>                 else "\n"
>             Some block.magic, $"{content}{lineBreak}" :: acc
>         )
>     |> snd
>     |> SpiralSm.concat "\n"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "#!markdown
> 
> 
> a
> 
> b
> 
> 
> \#!markdown
> 
> 
> c
> 
> 
> \#!fsharp
> 
> 
> let a = 1
> 
> \#!markdown
> 
> d (test)
> 
> \#!fsharp
> 
> //// test
> 
> let a = 2
> 
> \#!markdown
> 
> e
> 
> \#!fsharp
> 
> let a = 3"
> |> escapeCell
> |> run blocks
> |> function
>     | Success (blocks, _, _) -> formatBlocks Fs blocks
>     | Failure (msg, _, _) -> failwith msg
> |> _assertEqual "/// a
> /// 
> /// b
> 
> /// c
> let a = 1
> 
> /// e
> let a = 3
> "
> 
> ── [ 37.92ms - stdout ] ────────────────────────────────────────────────────────
> │ "/// a
> │ /// 
> │ /// b
> │ 
> │ /// c
> │ let a = 1
> │ 
> │ /// e
> │ let a = 3
> │ "
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## indentBlock
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline indentBlock (block : Block) =
>     { block with
>         content =
>             block.content
>             |> SpiralSm.split "\n"
>             |> Array.fold
>                 (fun (lines, isMultiline) line ->
>                     let trimmedLine = line |> SpiralSm.trim
>                     if trimmedLine = ""
>                     then "" :: lines, isMultiline
>                     else
>                         let inline singleQuoteLine () =
>                             trimmedLine |> Seq.sumBy ((=) '"' >> 
> System.Convert.ToInt32) = 1
>                             && trimmedLine |> SpiralSm.contains @"'""'" |> not
>                             && trimmedLine |> SpiralSm.ends_with "{" |> not
>                             && trimmedLine |> SpiralSm.ends_with "{|" |> not
>                             && trimmedLine |> SpiralSm.starts_with "}" |> not
>                             && trimmedLine |> SpiralSm.starts_with "|}" |> not
> 
>                         match isMultiline, trimmedLine |> SpiralSm.split_string 
> [[| $"{q}{q}{q}" |]] with
>                         | false, [[| _; _ |]] ->
>                             $"    {line}" :: lines, true
> 
>                         | true, [[| _; _ |]] ->
>                             line :: lines, false
> 
>                         | false, _ when singleQuoteLine () ->
>                             $"    {line}" :: lines, true
> 
>                         | false, _ when line |> SpiralSm.starts_with "#" && 
> block.magic = Fsharp ->
>                             line :: lines, false
> 
>                         | false, _ ->
>                             $"    {line}" :: lines, false
> 
>                         | true, _ when singleQuoteLine () && line |> 
> SpiralSm.starts_with "    " ->
>                             $"    {line}" :: lines, false
> 
>                         | true, _ when singleQuoteLine () ->
>                             line :: lines, false
> 
>                         | true, _ ->
>                             line :: lines, true
>                 )
>                 ([[]], false)
>             |> fst
>             |> List.rev
>             |> SpiralSm.concat "\n"
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## parse
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline parse output input =
>     match run blocks input with
>     | Success (blocks, _, _) ->
>         blocks
>         |> List.filter (fun block ->
>             block.magic |> kernelOutputs |> List.contains output || block.magic 
> = Markdown
>         )
>         |> List.map Some
>         |> fun x -> x @ [[ None ]]
>         |> List.pairwise
>         |> List.choose (function
>             | Some { magic = Markdown } as block, Some { magic = Markdown } -> 
> block
>             | Some { magic = Markdown } as block, Some { magic = magic }
>                 when magic |> kernelOutputs |> List.contains output -> block
>             | Some { magic = Markdown } as block, _ when output = Md -> block
>             | Some { magic = Markdown }, _ -> None
>             | Some block, _ -> Some block
>             | _ -> None
>         )
>         |> List.fold
>             (fun (acc, indent) -> function
>                 | { magic = Markdown; content = content }
>                     when output = Fs
>                     && content |> SpiralSm.starts_with "# "
>                     && content |> SpiralSm.ends_with ")"
>                     ->
>                     let moduleName, namespaceName =
>                         System.Text.RegularExpressions.Regex.Match (content, @"#
> (.*) \((.*)\)$")
>                         |> fun m -> m.Groups.[[1]].Value, m.Groups.[[2]].Value
> 
>                     let moduleBlock =
>                         {
>                             magic = Fsharp
>                             content =
>                                 $"#if !INTERACTIVE
> namespace {namespaceName}
> #endif
> 
> module {moduleName} ="
>                         }
> 
>                     moduleBlock :: acc, (indent + 1)
>                 | { magic = magic ; content = content } as block
>                     when indent > 0
>                     ->
>                     indentBlock block :: acc, indent
>                 | block -> block :: acc, indent
>             )
>             ([[]], 0)
>         |> fst
>         |> List.rev
>         |> Result.Ok
>     | Failure (errorMsg, _, _) -> Result.Error errorMsg
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let example1 =
>     $"""#!meta
> 
> {{"kernelInfo":{{"defaultKernelName":"fsharp","items":[[{{"aliases":[[]],"name":
> "fsharp"}},{{"aliases":[[]],"name":"fsharp"}}]]}}}}
> 
> \#!markdown
> 
> # TestModule (TestNamespace)
> 
> \#!fsharp
> 
> \#!import file.dib
> 
> \#!fsharp
> 
> \#r "nuget:Expecto"
> 
> \#!markdown
> 
> ## ParserLibrary
> 
> \#!fsharp
> 
> open System
> 
> \#!markdown
> 
> ## x (test)
> 
> \#!fsharp
> 
> //// ignore
> 
> let x = 1
> 
> \#!spiral
> 
> //// test
> 
> inl x = 1i32
> 
> \#!spiral
> 
> //// real
> 
> inl x = 2i32
> 
> \#!spiral
> 
> inl x = 3i32
> 
> \#!markdown
> 
> ### TextInput
> 
> \#!fsharp
> 
> let str1 = "abc
> def"
> 
> let str2 =
>     "abc\
> def"
> 
> let str3 =
>     $"1{{
>         1
>     }}1"
> 
> let str4 =
>     $"1{{({{|
>         a = 1
>     |}}).a}}1"
> 
> let str5 =
>     "abc \
>         def"
> 
> let x =
>     match '"' with
>     | '"' -> true
>     | _ -> false
> 
> let long1 = {q}{q}{q}a{q}{q}{q}
> 
> let long2 =
>     {q}{q}{q}
> a
> {q}{q}{q}
> 
> \#!fsharp
> 
> type Position =
>     {{
> #if INTERACTIVE
>         line : string
> #else
>         line : int
> #endif
>         column : int
>     }}"""
>     |> escapeCell
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> example1
> |> parse Fs
> |> Result.toOption
> |> Option.get
> |> (formatBlocks Fs)
> |> _assertEqual $"""#if !INTERACTIVE
> namespace TestNamespace
> #endif
> 
> module TestModule =
> 
>     /// ## ParserLibrary
>     open System
> 
>     /// ### TextInput
>     let str1 = "abc
> def"
> 
>     let str2 =
>         "abc\
> def"
> 
>     let str3 =
>         $"1{{
>             1
>         }}1"
> 
>     let str4 =
>         $"1{{({{|
>             a = 1
>         |}}).a}}1"
> 
>     let str5 =
>         "abc \
>             def"
> 
>     let x =
>         match '"' with
>         | '"' -> true
>         | _ -> false
> 
>     let long1 = {q}{q}{q}a{q}{q}{q}
> 
>     let long2 =
>         {q}{q}{q}
> a
> {q}{q}{q}
> 
>     type Position =
>         {{
> #if INTERACTIVE
>             line : string
> #else
>             line : int
> #endif
>             column : int
>         }}
> """
> 
> ── [ 83.94ms - stdout ] ────────────────────────────────────────────────────────
> │ "#if !INTERACTIVE
> │ namespace TestNamespace
> │ #endif
> │ 
> │ module TestModule =
> │ 
> │     /// ## ParserLibrary
> │     open System
> │ 
> │     /// ### TextInput
> │     let str1 = "abc
> │ def"
> │ 
> │     let str2 =
> │         "abc\
> │ def"
> │ 
> │     let str3 =
> │         $"1{
> │             1
> │         }1"
> │ 
> │     let str4 =
> │         $"1{({|
> │             a = 1
> │         |}).a}1"
> │ 
> │     let str5 =
> │         "abc \
> │             def"
> │ 
> │     let x =
> │         match '"' with
> │         | '"' -> true
> │         | _ -> false
> │ 
> │     let long1 = """a"""
> │ 
> │     let long2 =
> │         """
> │ a
> │ """
> │ 
> │     type Position =
> │         {
> │ #if INTERACTIVE
> │             line : string
> │ #else
> │             line : int
> │ #endif
> │             column : int
> │         }
> │ "
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> example1
> |> parse Md
> |> Result.toOption
> |> Option.get
> |> (formatBlocks Md)
> |> _assertEqual "# TestModule (TestNamespace)
> 
> ## ParserLibrary
> 
> ### TextInput
> "
> 
> ── [ 73.69ms - stdout ] ────────────────────────────────────────────────────────
> │ "# TestModule (TestNamespace)
> │ 
> │ ## ParserLibrary
> │ 
> │ ### TextInput
> │ "
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> example1
> |> parse Spi
> |> Result.toOption
> |> Option.get
> |> (formatBlocks Spi)
> |> _assertEqual "/// # TestModule (TestNamespace)
> 
> /// ## ParserLibrary
> inl x = 3i32
> "
> 
> ── [ 77.28ms - stdout ] ────────────────────────────────────────────────────────
> │ "/// # TestModule (TestNamespace)
> │ 
> │ /// ## ParserLibrary
> │ inl x = 3i32
> │ "
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> example1
> |> parse Spir
> |> Result.toOption
> |> Option.get
> |> (formatBlocks Spir)
> |> _assertEqual "/// # TestModule (TestNamespace)
> 
> /// ## ParserLibrary
> inl x = 2i32
> "
> 
> ── [ 117.07ms - stdout ] ───────────────────────────────────────────────────────
> │ "/// # TestModule (TestNamespace)
> │ 
> │ /// ## ParserLibrary
> │ inl x = 2i32
> │ "
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## parseDibCode
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline parseDibCode output file = async {
>     trace Debug
>         (fun () -> "parseDibCode")
>         (fun () -> $"output: {output} / file: {file} / {_locals ()}")
>     let! input = file |> SpiralFileSystem.read_all_text_async
>     match parse output input with
>     | Result.Ok blocks -> return blocks |> formatBlocks output
>     | Result.Error msg -> return failwith msg
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## writeDibCode
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline writeDibCode output path = async {
>     trace Debug
>         (fun () -> "writeDibCode")
>         (fun () -> $"output: {output} / path: {path} / {_locals ()}")
>     let! result = parseDibCode output path
>     let pathDir = path |> System.IO.Path.GetDirectoryName
>     let fileNameWithoutExt =
>         match output, path |> System.IO.Path.GetFileNameWithoutExtension with
>         | Spir, fileNameWithoutExt -> $"{fileNameWithoutExt}_real"
>         | _, fileNameWithoutExt -> fileNameWithoutExt
>     let outputPath = pathDir </> $"{fileNameWithoutExt}.{output |> string |> 
> SpiralSm.to_lower}"
>     do! result |> SpiralFileSystem.write_all_text_async outputPath
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## Arguments
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> [[<RequireQualifiedAccess>]]
> type Arguments =
>     | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.Mandatory>]]
>         File of file : string * Output
> 
>     interface Argu.IArgParserTemplate with
>         member s.Usage =
>             match s with
>             | File _ -> nameof File
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> Argu.ArgumentParser.Create<Arguments>().PrintUsage ()
> 
> ── [ 62.63ms - return value ] ──────────────────────────────────────────────────
> │ "USAGE: dotnet-repl [--help] <file> <fs|md|spi|spir>
> │ 
> │ FILE:
> │ 
> │     <file> <fs|md|spi|spir>
> │                           File
> │ 
> │ OPTIONS:
> │ 
> │     --help                display this list of options.
> │ "
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## main
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let main args =
>     let argsMap = args |> Runtime.parseArgsMap<Arguments>
> 
>     let files =
>         argsMap.[[nameof Arguments.File]]
>         |> List.map (function
>             | Arguments.File (path, output) -> path, output
>         )
> 
>     files
>     |> List.map (fun (path, output) -> path |> writeDibCode output)
>     |> Async.Parallel
>     |> Async.Ignore
>     |> Async.runWithTimeout 30000
>     |> function
>         | Some () -> 0
>         | None -> 1
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let args =
>     System.Environment.GetEnvironmentVariable "ARGS"
>     |> SpiralRuntime.split_args
>     |> Result.toArray
>     |> Array.collect id
> 
> match args with
> | [[||]] -> 0
> | args -> if main args = 0 then 0 else failwith "main failed"
> 
> ── [ 117.35ms - return value ] ─────────────────────────────────────────────────
> │ <div class="dni-plaintext"><pre>0
> │ </pre></div><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 118.14ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:00:02 d #1 writeDibCode / output: Fs / path: 
> DibParser.dib
> │ 00:00:02 d #2 parseDibCode / output: Fs / file: 
> DibParser.dib
> │ 
00:00:17 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 30905 }
00:00:17 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:00:18 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb to html
00:00:18 v #6 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:18 v #7 !   validate(nb)
00:00:18 v #8 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:18 v #9 !   return _pygments_highlight(
00:00:19 v #10 ! [NbConvertApp] Writing 381005 bytes to /home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.html
00:00:19 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 906 }
00:00:19 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 906 }
00:00:19 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:00:19 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:19 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:19 d #16 spiral.run / dib / { exit_code = 0; result_length = 31870 }
00:00:00 d #1 persistCodeProject / packages: [Argu; FParsec; FSharp.Control.AsyncSeq; ... ] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: DibParser / hash:  / code.Length: 11045
00:00:00 d #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "/home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/parser/dist" --runtime linux-x64"; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/parser/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/DibParser"; stderr = true } }
00:00:00 v #2 >   Determining projects to restore...
00:00:01 v #3 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:01 v #4 >   The last full restore is still up to date. Nothing left to do.
00:00:01 v #5 >   Total time taken: 0 milliseconds
00:00:01 v #6 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:01 v #7 >   Restoring /home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj
00:00:01 v #8 >   Starting restore process.
00:00:01 v #9 >   Total time taken: 0 milliseconds
00:00:02 v #10 >   Restored /home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj (in 282 ms).
00:00:14 v #11 >   DibParser -> /home/runner/work/polyglot/polyglot/target/Builder/DibParser/bin/Release/net9.0/linux-x64/DibParser.dll
00:00:14 v #12 >   DibParser -> /home/runner/work/polyglot/polyglot/apps/parser/dist
00:00:14 d #13 runtime.execute_with_options_async / { exit_code = 0; output_length = 705; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/parser/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/DibParser"; stderr = true } }
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "JsonParser.dib"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None; stderr = true } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ # JsonParser (Polyglot)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Common
> open Parser
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## JsonParser
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> (*
> // --------------------------------
> JSON spec from http://www.json.org/
> // --------------------------------
> 
> The JSON spec is available at [[json.org]](http://www.json.org/). I'll paraphase
> it here:
> 
> * A `value` can be a `string` or a `number` or a `bool` or `null` or an `object`
> or an `array`.
>   * These structures can be nested.
> * A `string` is a sequence of zero or more Unicode characters, wrapped in double
> quotes, using backslash escapes.
> * A `number` is very much like a C or Java number, except that the octal and 
> hexadecimal formats are not used.
> * A `boolean` is the literal `true` or `false`
> * A `null` is the literal `null`
> * An `object` is an unordered set of name/value pairs.
>   * An object begins with { (left brace) and ends with } (right brace).
>   * Each name is followed by : (colon) and the name/value pairs are separated by
> , (comma).
> * An `array` is an ordered collection of values.
>   * An array begins with [[ (left bracket) and ends with ]] (right bracket).
>   * Values are separated by , (comma).
> * Whitespace can be inserted between any pair of tokens.
> *)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let inline parserEqual (expected : ParseResult<'a>) (actual : ParseResult<'a * 
> Input>) =
>     match actual, expected with
>     | Success (_actual, _), Success _expected ->
>         printResult actual
>         _actual |> _assertEqual _expected
>     | Failure (l1, e1, p1), Failure (l2, e2, p2) when l1 = l2 && e1 = e2 && p1 =
> p2 ->
>         printResult actual
>     | _ ->
>         printfn $"Actual: {actual}"
>         printfn $"Expected: {expected}"
>         failwith "Parse failed"
>     actual
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### JValue
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type JValue =
>     | JString of string
>     | JNumber of float
>     | JBool   of bool
>     | JNull
>     | JObject of Map<string, JValue>
>     | JArray  of JValue list
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jValue, jValueRef = createParserForwardedToRef<JValue> ()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### jNull
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jNull =
>     pstring "null"
>     >>% JNull
>     <?> "null"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> jValueRef <|
>     choice
>         [[
>             jNull
>         ]]
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jValue "null"
> |> parserEqual (Success JNull)
> 
> ── [ 151.03ms - return value ] ─────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JNull, { lines = [|&quot;null&quot;|]<br />
> position = { line = 0<br />                               column = 4 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JNull, { lines = [|&quot;null&quot;|]<br />  
> position = { line = 0<br />               column = 4 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JNull</code></span></summary><div><table><thead><tr>
> </tr></thead><tbody></tbody></table></div></details></td></tr><tr><td>Item2</td>
> <td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ 
> lines = [|&quot;null&quot;|]<br />  position = { line = 0<br />               
> column = 4 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ null 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 4 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>4
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 160.27ms - stdout ] ───────────────────────────────────────────────────────
> │ JNull
> │ JNull
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNull "nulp"
> |> parserEqual (
>     Failure (
>         "null",
>         "Unexpected 'p'",
>         { currentLine = "nulp"; line = 0; column = 3 }
>     )
> )
> 
> ── [ 32.91ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Failure (&quot;null&quot;, &quot;Unexpected 
> &#39;p&#39;&quot;, { currentLine = &quot;nulp&quot;<br />
> line = 0<br />                                     column = 3 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><div class="dni-plaintext"><pre>&quot;null&quot;
> │ </pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>&quot;Unexpected &#39;p&#39;&quot;
> │ </pre></div></td></tr><tr><td>Item3</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = 
> &quot;nulp&quot;<br />  line = 0<br />  column = 3 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr
> entLine</td><td><div class="dni-plaintext"><pre>&quot;nulp&quot;
> │ </pre></div></td></tr><tr><td>line</td><td><div 
> class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>3
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 34.10ms - stdout ] ────────────────────────────────────────────────────────
> │ Line:0 Col:3 Error parsing null
> │ nulp
> │    ^Unexpected 'p'
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### jBool
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jBool =
>     let jtrue =
>         pstring "true"
>         >>% JBool true
>     let jfalse =
>         pstring "false"
>         >>% JBool false
> 
>     jtrue <|> jfalse
>     <?> "bool"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> jValueRef <|
>     choice
>         [[
>             jNull
>             jBool
>         ]]
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jBool "true"
> |> parserEqual (Success (JBool true))
> 
> ── [ 29.57ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JBool true, { lines = 
> [|&quot;true&quot;|]<br />                       position = { line = 0<br />
> column = 4 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JBool true, { lines = [|&quot;true&quot;|]<br />  
> position = { line = 0<br />               column = 4 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JBool 
> true</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I
> tem</td><td><div class="dni-plaintext"><pre>true
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;true&quot;|]<br />  position = { line = 0<br />               
> column = 4 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ true 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 4 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>4
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 31.18ms - stdout ] ────────────────────────────────────────────────────────
> │ JBool true
> │ JBool true
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jBool "false"
> |> parserEqual (Success (JBool false))
> 
> ── [ 21.33ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JBool false, { lines = 
> [|&quot;false&quot;|]<br />                        position = { line = 0<br />
> column = 5 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JBool false, { lines = [|&quot;false&quot;|]<br />
> position = { line = 0<br />               column = 5 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JBool 
> false</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>
> Item</td><td><div class="dni-plaintext"><pre>false
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;false&quot;|]<br />  position = { line = 0<br />               
> column = 5 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ false 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 5 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>5
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 23.01ms - stdout ] ────────────────────────────────────────────────────────
> │ JBool false
> │ JBool false
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jBool "truX"
> |> parserEqual (
>     Failure (
>         "bool",
>         "Unexpected 't'",
>         { currentLine = "truX"; line = 0; column = 0 }
>     )
> )
> 
> ── [ 17.46ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Failure (&quot;bool&quot;, &quot;Unexpected 
> &#39;t&#39;&quot;, { currentLine = &quot;truX&quot;<br />
> line = 0<br />                                     column = 0 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><div class="dni-plaintext"><pre>&quot;bool&quot;
> │ </pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>&quot;Unexpected &#39;t&#39;&quot;
> │ </pre></div></td></tr><tr><td>Item3</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = 
> &quot;truX&quot;<br />  line = 0<br />  column = 0 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr
> entLine</td><td><div class="dni-plaintext"><pre>&quot;truX&quot;
> │ </pre></div></td></tr><tr><td>line</td><td><div 
> class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 18.64ms - stdout ] ────────────────────────────────────────────────────────
> │ Line:0 Col:0 Error parsing bool
> │ truX
> │ ^Unexpected 't'
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### jUnescapedChar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jUnescapedChar =
>     satisfy (fun ch -> ch <> '\\' && ch <> '\"') "char"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jUnescapedChar "a"
> |> parserEqual (Success 'a')
> 
> ── [ 33.43ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (&#39;a&#39;, { lines = [|&quot;a&quot;|]<br
> />                position = { line = 0<br />                             column
> = 1 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(a, { lines = [|&quot;a&quot;|]<br />  position = { 
> line = 0<br />               column = 1 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><div class="dni-plaintext"><pre>&#39;a&#39;
> │ </pre></div></td></tr><tr><td>Item2</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = 
> [|&quot;a&quot;|]<br />  position = { line = 0<br />               column = 1 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ a 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 1 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>1
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 35.02ms - stdout ] ────────────────────────────────────────────────────────
> │ 'a'
> │ 'a'
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jUnescapedChar "\\"
> |> parserEqual (
>     Failure (
>         "char",
>         "Unexpected '\\'",
>         { currentLine = "\\"; line = 0; column = 0 }
>     )
> )
> 
> ── [ 23.93ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Failure (&quot;char&quot;, &quot;Unexpected 
> &#39;\&#39;&quot;, { currentLine = &quot;\&quot;<br />
> line = 0<br />                                     column = 0 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><div class="dni-plaintext"><pre>&quot;char&quot;
> │ </pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>&quot;Unexpected &#39;\&#39;&quot;
> │ </pre></div></td></tr><tr><td>Item3</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = 
> &quot;\&quot;<br />  line = 0<br />  column = 0 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr
> entLine</td><td><div class="dni-plaintext"><pre>&quot;\&quot;
> │ </pre></div></td></tr><tr><td>line</td><td><div 
> class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 25.13ms - stdout ] ────────────────────────────────────────────────────────
> │ Line:0 Col:0 Error parsing char
> │ \
> │ ^Unexpected '\'
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### jEscapedChar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jEscapedChar =
>     [[
>         ("\\\"",'\"')
>         ("\\\\",'\\')
>         ("\\/",'/')
>         ("\\b",'\b')
>         ("\\f",'\f')
>         ("\\n",'\n')
>         ("\\r",'\r')
>         ("\\t",'\t')
>     ]]
>     |> List.map (fun (toMatch, result) ->
>         pstring toMatch >>% result
>     )
>     |> choice
>     <?> "escaped char"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jEscapedChar "\\\\"
> |> parserEqual (Success '\\')
> 
> ── [ 20.76ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (&#39;\\&#39;, { lines = 
> [|&quot;\\&quot;|]<br />                 position = { line = 0<br />
> column = 2 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(\, { lines = [|&quot;\\&quot;|]<br />  position = {
> line = 0<br />               column = 2 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><div class="dni-plaintext"><pre>&#39;\\&#39;
> │ </pre></div></td></tr><tr><td>Item2</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = 
> [|&quot;\\&quot;|]<br />  position = { line = 0<br />               column = 2 }
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ \\ 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 2 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>2
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 22.76ms - stdout ] ────────────────────────────────────────────────────────
> │ '\\'
> │ '\\'
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jEscapedChar "\\t"
> |> parserEqual (Success '\t')
> 
> ── [ 18.66ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (&#39;\009&#39;, { lines = 
> [|&quot;\t&quot;|]<br />                   position = { line = 0<br />
> column = 2 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(	, { lines = [|&quot;\t&quot;|]<br />  position = { 
> line = 0<br />               column = 2 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><div class="dni-plaintext"><pre>&#39;\009&#39;
> │ </pre></div></td></tr><tr><td>Item2</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = 
> [|&quot;\t&quot;|]<br />  position = { line = 0<br />               column = 2 }
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ \t 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 2 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>2
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 20.32ms - stdout ] ────────────────────────────────────────────────────────
> │ '\009'
> │ '\009'
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jEscapedChar @"\\"
> |> parserEqual (Success '\\')
> 
> ── [ 18.47ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (&#39;\\&#39;, { lines = 
> [|&quot;\\&quot;|]<br />                 position = { line = 0<br />
> column = 2 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(\, { lines = [|&quot;\\&quot;|]<br />  position = {
> line = 0<br />               column = 2 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><div class="dni-plaintext"><pre>&#39;\\&#39;
> │ </pre></div></td></tr><tr><td>Item2</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = 
> [|&quot;\\&quot;|]<br />  position = { line = 0<br />               column = 2 }
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ \\ 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 2 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>2
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 20.03ms - stdout ] ────────────────────────────────────────────────────────
> │ '\\'
> │ '\\'
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jEscapedChar @"\n"
> |> parserEqual (Success '\n')
> 
> ── [ 18.56ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (&#39;\010&#39;, { lines = [|&quot;<br 
> />&quot;|]<br />                   position = { line = 0<br />
> column = 2 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(<br />, { lines = [|&quot;<br />&quot;|]<br />  
> position = { line = 0<br />               column = 2 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><div class="dni-plaintext"><pre>&#39;\010&#39;
> │ </pre></div></td></tr><tr><td>Item2</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = 
> [|&quot;<br />&quot;|]<br />  position = { line = 0<br />               column =
> 2 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ <br /> 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 2 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>2
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 20.04ms - stdout ] ────────────────────────────────────────────────────────
> │ '\010'
> │ '\010'
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jEscapedChar "a"
> |> parserEqual (
>     Failure (
>         "escaped char",
>         "Unexpected 'a'",
>         { currentLine = "a"; line = 0; column = 0 }
>     )
> )
> 
> ── [ 17.76ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Failure (&quot;escaped char&quot;, &quot;Unexpected 
> &#39;a&#39;&quot;, { currentLine = &quot;a&quot;<br />
> line = 0<br />                                             column = 0 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><div class="dni-plaintext"><pre>&quot;escaped char&quot;
> │ </pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>&quot;Unexpected &#39;a&#39;&quot;
> │ </pre></div></td></tr><tr><td>Item3</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = 
> &quot;a&quot;<br />  line = 0<br />  column = 0 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr
> entLine</td><td><div class="dni-plaintext"><pre>&quot;a&quot;
> │ </pre></div></td></tr><tr><td>line</td><td><div 
> class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 18.93ms - stdout ] ────────────────────────────────────────────────────────
> │ Line:0 Col:0 Error parsing escaped char
> │ a
> │ ^Unexpected 'a'
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### jUnicodeChar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jUnicodeChar =
>     let backslash = pchar '\\'
>     let uChar = pchar 'u'
>     let hexdigit = anyOf ([[ '0' .. '9' ]] @ [[ 'A' .. 'F' ]] @ [[ 'a' .. 'f' 
> ]])
>     let fourHexDigits = hexdigit .>>. hexdigit .>>. hexdigit .>>. hexdigit
> 
>     let inline convertToChar (((h1, h2), h3), h4) =
>         let str = $"%c{h1}%c{h2}%c{h3}%c{h4}"
>         Int32.Parse (str, Globalization.NumberStyles.HexNumber) |> char
> 
>     backslash >>. uChar >>. fourHexDigits
>     |>> convertToChar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jUnicodeChar "\\u263A"
> |> parserEqual (Success '☺')
> 
> ── [ 26.84ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (&#39;☺&#39;, { lines = 
> [|&quot;\u263A&quot;|]<br />                position = { line = 0<br />
> column = 6 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(☺, { lines = [|&quot;\u263A&quot;|]<br />  position
> = { line = 0<br />               column = 6 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><div class="dni-plaintext"><pre>&#39;☺&#39;
> │ </pre></div></td></tr><tr><td>Item2</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = 
> [|&quot;\u263A&quot;|]<br />  position = { line = 0<br />               column =
> 6 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ \u263A 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 6 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>6
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 28.38ms - stdout ] ────────────────────────────────────────────────────────
> │ '☺'
> │ '☺'
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### jString
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let quotedString =
>     let quote = pchar '\"' <?> "quote"
>     let jchar = jUnescapedChar <|> jEscapedChar <|> jUnicodeChar
> 
>     quote >>. manyChars jchar .>> quote
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jString =
>     quotedString
>     |>> JString
>     <?> "quoted string"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> jValueRef <|
>     choice
>         [[
>             jNull
>             jBool
>             jString
>         ]]
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jString "\"\""
> |> parserEqual (Success (JString ""))
> 
> ── [ 28.42ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JString &quot;&quot;, { lines = 
> [|&quot;&quot;&quot;&quot;|]<br />                       position = { line = 
> 0<br />                                    column = 2 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JString &quot;&quot;, { lines = 
> [|&quot;&quot;&quot;&quot;|]<br />  position = { line = 0<br />               
> column = 2 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JString 
> &quot;&quot;</code></span></summary><div><table><thead><tr></tr></thead><tbody><
> tr><td>Item</td><td><div class="dni-plaintext"><pre>&quot;&quot;
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;&quot;&quot;&quot;|]<br />  position = { line = 0<br />
> column = 2 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ &quot;&quot; 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 2 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>2
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 30.07ms - stdout ] ────────────────────────────────────────────────────────
> │ JString ""
> │ JString ""
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jString "\"a\""
> |> parserEqual (Success (JString "a"))
> 
> ── [ 20.73ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JString &quot;a&quot;, { lines = 
> [|&quot;&quot;a&quot;&quot;|]<br />                        position = { line = 
> 0<br />                                     column = 3 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JString &quot;a&quot;, { lines = 
> [|&quot;&quot;a&quot;&quot;|]<br />  position = { line = 0<br />               
> column = 3 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JString 
> &quot;a&quot;</code></span></summary><div><table><thead><tr></tr></thead><tbody>
> <tr><td>Item</td><td><div class="dni-plaintext"><pre>&quot;a&quot;
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;&quot;a&quot;&quot;|]<br />  position = { line = 0<br />
> column = 3 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ &quot;a&quot; 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 3 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>3
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 22.39ms - stdout ] ────────────────────────────────────────────────────────
> │ JString "a"
> │ JString "a"
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jString "\"ab\""
> |> parserEqual (Success (JString "ab"))
> 
> ── [ 19.97ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JString &quot;ab&quot;, { lines = 
> [|&quot;&quot;ab&quot;&quot;|]<br />                         position = { line =
> 0<br />                                      column = 4 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JString &quot;ab&quot;, { lines = 
> [|&quot;&quot;ab&quot;&quot;|]<br />  position = { line = 0<br />               
> column = 4 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JString 
> &quot;ab&quot;</code></span></summary><div><table><thead><tr></tr></thead><tbody
> ><tr><td>Item</td><td><div class="dni-plaintext"><pre>&quot;ab&quot;
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;&quot;ab&quot;&quot;|]<br />  position = { line = 0<br />
> column = 4 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ &quot;ab&quot; 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 4 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>4
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 21.74ms - stdout ] ────────────────────────────────────────────────────────
> │ JString "ab"
> │ JString "ab"
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jString "\"ab\\tde\""
> |> parserEqual (Success (JString "ab\tde"))
> 
> ── [ 20.80ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JString &quot;ab	de&quot;, { lines = 
> [|&quot;&quot;ab\tde&quot;&quot;|]<br />                            position = {
> line = 0<br />                                         column = 8 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JString &quot;ab	de&quot;, { lines = 
> [|&quot;&quot;ab\tde&quot;&quot;|]<br />  position = { line = 0<br />
> column = 8 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JString &quot;ab	
> de&quot;</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><
> td>Item</td><td><div class="dni-plaintext"><pre>&quot;ab	de&quot;
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;&quot;ab\tde&quot;&quot;|]<br />  position = { line = 0<br />
> column = 8 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ &quot;ab\tde&quot; 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 8 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>8
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 22.42ms - stdout ] ────────────────────────────────────────────────────────
> │ JString "ab	de"
> │ JString "ab	de"
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jString "\"ab\\u263Ade\""
> |> parserEqual (Success (JString "ab☺de"))
> 
> ── [ 20.79ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JString &quot;ab☺de&quot;, { lines = 
> [|&quot;&quot;ab\u263Ade&quot;&quot;|]<br />                            position
> = { line = 0<br />                                         column = 12 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JString &quot;ab☺de&quot;, { lines = 
> [|&quot;&quot;ab\u263Ade&quot;&quot;|]<br />  position = { line = 0<br />
> column = 12 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JString 
> &quot;ab☺de&quot;</code></span></summary><div><table><thead><tr></tr></thead><tb
> ody><tr><td>Item</td><td><div class="dni-plaintext"><pre>&quot;ab☺de&quot;
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;&quot;ab\u263Ade&quot;&quot;|]<br />  position = { line = 0<br 
> />               column = 12 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ &quot;ab\u263Ade&quot; 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 12 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>12
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 22.45ms - stdout ] ────────────────────────────────────────────────────────
> │ JString "ab☺de"
> │ JString "ab☺de"
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### jNumber
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jNumber =
>     let optSign = opt (pchar '-')
> 
>     let zero = pstring "0"
> 
>     let digitOneNine =
>         satisfy (fun ch -> Char.IsDigit ch && ch <> '0') "1-9"
> 
>     let digit =
>         satisfy Char.IsDigit "digit"
> 
>     let point = pchar '.'
> 
>     let e = pchar 'e' <|> pchar 'E'
> 
>     let optPlusMinus = opt (pchar '-' <|> pchar '+')
> 
>     let nonZeroInt =
>         digitOneNine .>>. manyChars digit
>         |>> fun (first, rest) -> string first + rest
> 
>     let intPart = zero <|> nonZeroInt
> 
>     let fractionPart = point >>. manyChars1 digit
> 
>     let exponentPart = e >>. optPlusMinus .>>. manyChars1 digit
> 
>     let inline (|>?) opt f =
>         match opt with
>         | None -> ""
>         | Some x -> f x
> 
>     let inline convertToJNumber (((optSign, intPart), fractionPart), expPart) =
>         let signStr =
>             optSign
>             |>? string
> 
>         let fractionPartStr =
>             fractionPart
>             |>? (fun digits -> "." + digits)
> 
>         let expPartStr =
>             expPart
>             |>? fun (optSign, digits) ->
>                 let sign = optSign |>? string
>                 "e" + sign + digits
> 
>         (signStr + intPart + fractionPartStr + expPartStr)
>         |> float
>         |> JNumber
> 
>     optSign .>>. intPart .>>. opt fractionPart .>>. opt exponentPart
>     |>> convertToJNumber
>     <?> "number"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> jValueRef <|
>     choice
>         [[
>             jNull
>             jBool
>             jString
>             jNumber
>         ]]
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber "123"
> |> parserEqual (Success (JNumber 123.0))
> 
> ── [ 37.48ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JNumber 123.0, { lines = 
> [|&quot;123&quot;|]<br />                          position = { line = 0<br />
> column = 3 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JNumber 123.0, { lines = [|&quot;123&quot;|]<br />
> position = { line = 0<br />               column = 3 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JNumber 
> 123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>
> Item</td><td><div class="dni-plaintext"><pre>123.0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;123&quot;|]<br />  position = { line = 0<br />               
> column = 3 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ 123 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 3 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>3
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 39.03ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber 123.0
> │ JNumber 123.0
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber "-123"
> |> parserEqual (Success (JNumber -123.0))
> 
> ── [ 21.42ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JNumber -123.0, { lines = 
> [|&quot;-123&quot;|]<br />                           position = { line = 0<br />
> column = 4 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JNumber -123.0, { lines = [|&quot;-123&quot;|]<br 
> />  position = { line = 0<br />               column = 4 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JNumber 
> -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td
> >Item</td><td><div class="dni-plaintext"><pre>-123.0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;-123&quot;|]<br />  position = { line = 0<br />               
> column = 4 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ -123 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 4 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>4
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 23.12ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber -123.0
> │ JNumber -123.0
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber "123.4"
> |> parserEqual (Success (JNumber 123.4))
> 
> ── [ 21.92ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JNumber 123.4, { lines = 
> [|&quot;123.4&quot;|]<br />                          position = { line = 0<br />
> column = 5 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JNumber 123.4, { lines = [|&quot;123.4&quot;|]<br 
> />  position = { line = 0<br />               column = 5 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JNumber 
> 123.4</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>
> Item</td><td><div class="dni-plaintext"><pre>123.4
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;123.4&quot;|]<br />  position = { line = 0<br />               
> column = 5 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ 123.4 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 5 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>5
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 23.47ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber 123.4
> │ JNumber 123.4
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber "-123."
> |> parserEqual (Success (JNumber -123.0))
> 
> ── [ 20.13ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JNumber -123.0, { lines = 
> [|&quot;-123.&quot;|]<br />                           position = { line = 0<br 
> />                                        column = 4 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JNumber -123.0, { lines = [|&quot;-123.&quot;|]<br 
> />  position = { line = 0<br />               column = 4 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JNumber 
> -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td
> >Item</td><td><div class="dni-plaintext"><pre>-123.0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;-123.&quot;|]<br />  position = { line = 0<br />               
> column = 4 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ -123. 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 4 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>4
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 21.67ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber -123.0
> │ JNumber -123.0
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber "00.1"
> |> parserEqual (Success (JNumber 0.0))
> 
> ── [ 20.06ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JNumber 0.0, { lines = 
> [|&quot;00.1&quot;|]<br />                        position = { line = 0<br />
> column = 1 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JNumber 0.0, { lines = [|&quot;00.1&quot;|]<br />  
> position = { line = 0<br />               column = 1 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JNumber 
> 0.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It
> em</td><td><div class="dni-plaintext"><pre>0.0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;00.1&quot;|]<br />  position = { line = 0<br />               
> column = 1 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ 00.1 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 1 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>1
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 21.62ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber 0.0
> │ JNumber 0.0
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let jNumber_ = jNumber .>> spaces1
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "123"
> |> parserEqual (Success (JNumber 123.0))
> 
> ── [ 22.56ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JNumber 123.0, { lines = 
> [|&quot;123&quot;|]<br />                          position = { line = 1<br />
> column = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JNumber 123.0, { lines = [|&quot;123&quot;|]<br />
> position = { line = 1<br />               column = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JNumber 
> 123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>
> Item</td><td><div class="dni-plaintext"><pre>123.0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;123&quot;|]<br />  position = { line = 1<br />               
> column = 0 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ 123 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br />
> column = 0 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>1
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 24.09ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber 123.0
> │ JNumber 123.0
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "-123"
> |> parserEqual (Success (JNumber -123.0))
> 
> ── [ 21.05ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JNumber -123.0, { lines = 
> [|&quot;-123&quot;|]<br />                           position = { line = 1<br />
> column = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JNumber -123.0, { lines = [|&quot;-123&quot;|]<br 
> />  position = { line = 1<br />               column = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JNumber 
> -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td
> >Item</td><td><div class="dni-plaintext"><pre>-123.0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;-123&quot;|]<br />  position = { line = 1<br />               
> column = 0 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ -123 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br />
> column = 0 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>1
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 22.64ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber -123.0
> │ JNumber -123.0
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "-123."
> |> parserEqual (
>     Failure (
>         "number andThen many1 whitespace",
>         "Unexpected '.'",
>         { currentLine = "-123."; line = 0; column = 4 }
>     )
> )
> 
> ── [ 26.72ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Failure<br />  (&quot;number andThen many1 
> whitespace&quot;, &quot;Unexpected &#39;.&#39;&quot;, { currentLine = 
> &quot;-123.&quot;<br />
> line = 0<br />                                                          column =
> 4 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><div class="dni-plaintext"><pre>&quot;number andThen many1 
> whitespace&quot;
> │ </pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>&quot;Unexpected &#39;.&#39;&quot;
> │ </pre></div></td></tr><tr><td>Item3</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = 
> &quot;-123.&quot;<br />  line = 0<br />  column = 4 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr
> entLine</td><td><div class="dni-plaintext"><pre>&quot;-123.&quot;
> │ </pre></div></td></tr><tr><td>line</td><td><div 
> class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>4
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 28.41ms - stdout ] ────────────────────────────────────────────────────────
> │ Line:0 Col:4 Error parsing number andThen many1 whitespace
> │ -123.
> │     ^Unexpected '.'
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "123.4"
> |> parserEqual (Success (JNumber 123.4))
> 
> ── [ 33.99ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JNumber 123.4, { lines = 
> [|&quot;123.4&quot;|]<br />                          position = { line = 1<br />
> column = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JNumber 123.4, { lines = [|&quot;123.4&quot;|]<br 
> />  position = { line = 1<br />               column = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JNumber 
> 123.4</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>
> Item</td><td><div class="dni-plaintext"><pre>123.4
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;123.4&quot;|]<br />  position = { line = 1<br />               
> column = 0 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ 123.4 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br />
> column = 0 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>1
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 36.52ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber 123.4
> │ JNumber 123.4
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "00.4"
> |> parserEqual (
>     Failure (
>         "number andThen many1 whitespace",
>         "Unexpected '0'",
>         { currentLine = "00.4"; line = 0; column = 1 }
>     )
> )
> 
> ── [ 30.46ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Failure<br />  (&quot;number andThen many1 
> whitespace&quot;, &quot;Unexpected &#39;0&#39;&quot;, { currentLine = 
> &quot;00.4&quot;<br />                                                          
> line = 0<br />                                                          column =
> 1 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><div class="dni-plaintext"><pre>&quot;number andThen many1 
> whitespace&quot;
> │ </pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>&quot;Unexpected &#39;0&#39;&quot;
> │ </pre></div></td></tr><tr><td>Item3</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = 
> &quot;00.4&quot;<br />  line = 0<br />  column = 1 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr
> entLine</td><td><div class="dni-plaintext"><pre>&quot;00.4&quot;
> │ </pre></div></td></tr><tr><td>line</td><td><div 
> class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>1
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 31.83ms - stdout ] ────────────────────────────────────────────────────────
> │ Line:0 Col:1 Error parsing number andThen many1 whitespace
> │ 00.4
> │  ^Unexpected '0'
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "123e4"
> |> parserEqual (Success (JNumber 1230000.0))
> 
> ── [ 25.27ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JNumber 1230000.0, { lines = 
> [|&quot;123e4&quot;|]<br />                              position = { line = 
> 1<br />                                           column = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JNumber 1230000.0, { lines = 
> [|&quot;123e4&quot;|]<br />  position = { line = 1<br />               column = 
> 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JNumber 
> 1230000.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr>
> <td>Item</td><td><div class="dni-plaintext"><pre>1230000.0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;123e4&quot;|]<br />  position = { line = 1<br />               
> column = 0 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ 123e4 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br />
> column = 0 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>1
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 26.84ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber 1230000.0
> │ JNumber 1230000.0
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "123.4e5"
> |> parserEqual (Success (JNumber 12340000.0))
> 
> ── [ 22.19ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JNumber 12340000.0, { lines = 
> [|&quot;123.4e5&quot;|]<br />                               position = { line = 
> 1<br />                                            column = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JNumber 12340000.0, { lines = 
> [|&quot;123.4e5&quot;|]<br />  position = { line = 1<br />               column 
> = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JNumber 
> 12340000.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr
> ><td>Item</td><td><div class="dni-plaintext"><pre>12340000.0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;123.4e5&quot;|]<br />  position = { line = 1<br />
> column = 0 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ 123.4e5 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br />
> column = 0 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>1
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 23.72ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber 12340000.0
> │ JNumber 12340000.0
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "123.4e-5"
> |> parserEqual (Success (JNumber 0.001234))
> 
> ── [ 22.04ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JNumber 0.001234, { lines = 
> [|&quot;123.4e-5&quot;|]<br />                             position = { line = 
> 1<br />                                          column = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JNumber 0.001234, { lines = 
> [|&quot;123.4e-5&quot;|]<br />  position = { line = 1<br />               column
> = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JNumber 
> 0.001234</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><
> td>Item</td><td><div class="dni-plaintext"><pre>0.001234
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;123.4e-5&quot;|]<br />  position = { line = 1<br />
> column = 0 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ 123.4e-5 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br />
> column = 0 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>1
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 23.55ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber 0.001234
> │ JNumber 0.001234
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### jArray
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jArray =
>     let left = pchar '[[' .>> spaces
>     let right = pchar ']]' .>> spaces
>     let comma = pchar ',' .>> spaces
>     let value = jValue .>> spaces
> 
>     let values = sepBy value comma
> 
>     between left values right
>     |>> JArray
>     <?> "array"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> jValueRef <|
>     choice
>         [[
>             jNull
>             jBool
>             jString
>             jNumber
>             jArray
>         ]]
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jArray "[[ 1, 2 ]]"
> |> parserEqual (Success (JArray [[ JNumber 1.0; JNumber 2.0 ]]))
> 
> ── [ 55.44ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JArray [JNumber 1.0; JNumber 2.0], { lines 
> = [|&quot;[ 1, 2 ]&quot;|]<br />                                              
> position = { line = 1<br />
> column = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JArray [JNumber 1.0; JNumber 2.0], { lines = 
> [|&quot;[ 1, 2 ]&quot;|]<br />  position = { line = 1<br />               column
> = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JArray [JNumber 1.0; JNumber 
> 2.0]</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I
> tem</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><t
> body><tr><td>0</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JNumber 
> 1.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It
> em</td><td><div class="dni-plaintext"><pre>1.0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><t
> d><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JNumber 
> 2.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It
> em</td><td><div class="dni-plaintext"><pre>2.0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </td></tr></tbody></table></div></details></td></tr><tr><td>Item2</td><td><detai
> ls class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = 
> [|&quot;[ 1, 2 ]&quot;|]<br />  position = { line = 1<br />               column
> = 0 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ [ 1, 2 ] 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br />
> column = 0 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>1
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 57.42ms - stdout ] ────────────────────────────────────────────────────────
> │ JArray [JNumber 1.0; JNumber 2.0]
> │ JArray [JNumber 1.0; JNumber 2.0]
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jArray "[[ 1, 2, ]]"
> |> parserEqual (
>     Failure (
>         "array",
>         "Unexpected ','",
>         { currentLine = "[[ 1, 2, ]]"; line = 0; column = 6 }
>     )
> )
> 
> ── [ 23.13ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Failure (&quot;array&quot;, &quot;Unexpected 
> &#39;,&#39;&quot;, { currentLine = &quot;[ 1, 2, ]&quot;<br />
> line = 0<br />                                      column = 6 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><div class="dni-plaintext"><pre>&quot;array&quot;
> │ </pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>&quot;Unexpected &#39;,&#39;&quot;
> │ </pre></div></td></tr><tr><td>Item3</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = 
> &quot;[ 1, 2, ]&quot;<br />  line = 0<br />  column = 6 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr
> entLine</td><td><div class="dni-plaintext"><pre>&quot;[ 1, 2, ]&quot;
> │ </pre></div></td></tr><tr><td>line</td><td><div 
> class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>6
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 24.38ms - stdout ] ────────────────────────────────────────────────────────
> │ Line:0 Col:6 Error parsing array
> │ [ 1, 2, ]
> │       ^Unexpected ','
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### jObject
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jObject =
>     let left = spaces >>. pchar '{' .>> spaces
>     let right = pchar '}' .>> spaces
>     let colon = pchar ':' .>> spaces
>     let comma = pchar ',' .>> spaces
>     let key = quotedString .>> spaces
>     let value = jValue .>> spaces
> 
>     let keyValue = (key .>> colon) .>>. value
>     let keyValues = sepBy keyValue comma
> 
>     between left keyValues right
>     |>> Map.ofList
>     |>> JObject
>     <?> "object"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> jValueRef <|
>     choice
>         [[
>             jNull
>             jBool
>             jString
>             jNumber
>             jArray
>             jObject
>         ]]
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jObject """{ "a":1, "b"  :  2 }"""
> |> parserEqual (
>     Success (
>         JObject (
>             Map.ofList [[
>                 "a", JNumber 1.0
>                 "b", JNumber 2.0
>             ]]
>         )
>     )
> )
> 
> ── [ 59.30ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success<br />  (JObject (map [(&quot;a&quot;, 
> JNumber 1.0); (&quot;b&quot;, JNumber 2.0)]),<br />   { lines = [|&quot;{ 
> &quot;a&quot;:1, &quot;b&quot;  :  2 }&quot;|]<br />     position = { line = 
> 1<br />                  column = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JObject (map [(&quot;a&quot;, JNumber 1.0); 
> (&quot;b&quot;, JNumber 2.0)]), { lines = [|&quot;{ &quot;a&quot;:1, 
> &quot;b&quot;  :  2 }&quot;|]<br />  position = { line = 1<br />               
> column = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JObject (map [(&quot;a&quot;, JNumber 1.0); 
> (&quot;b&quot;, JNumber 
> 2.0)])</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td
> >Item</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><t
> body><tr><td><div class="dni-plaintext"><pre>&quot;a&quot;
> │ </pre></div></td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>JNumber 
> 1.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It
> em</td><td><div class="dni-plaintext"><pre>1.0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td><div 
> class="dni-plaintext"><pre>&quot;b&quot;
> │ 
> </pre></div>...</details></td></tr></tbody></table></td></tr></tbody></table></d
> iv></details></td></tr><tr><td>Item2</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = 
> [|&quot;{ &quot;a&quot;:1, &quot;b&quot;  :  2 }&quot;|]<br />  position = { 
> line = 1<br />               column = 0 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ { &quot;a&quot;:1, &quot;b&quot;  :
> 2 } ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br />
> column = 0 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>1
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 61.22ms - stdout ] ────────────────────────────────────────────────────────
> │ JObject (map [("a", JNumber 1.0); ("b", JNumber 2.0)])
> │ JObject (map [("a", JNumber 1.0); ("b", JNumber 2.0)])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jObject """{ "a":1, "b"  :  2, }"""
> |> parserEqual (
>     Failure (
>         "object",
>         "Unexpected ','",
>         { currentLine = """{ "a":1, "b"  :  2, }"""; line = 0; column = 18 }
>     )
> )
> 
> ── [ 25.15ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Failure (&quot;object&quot;, &quot;Unexpected 
> &#39;,&#39;&quot;, { currentLine = &quot;{ &quot;a&quot;:1, &quot;b&quot;  :  2,
> }&quot;<br />                                       line = 0<br />
> column = 18 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><div class="dni-plaintext"><pre>&quot;object&quot;
> │ </pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>&quot;Unexpected &#39;,&#39;&quot;
> │ </pre></div></td></tr><tr><td>Item3</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = 
> &quot;{ &quot;a&quot;:1, &quot;b&quot;  :  2, }&quot;<br />  line = 0<br />  
> column = 18 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr
> entLine</td><td><div class="dni-plaintext"><pre>&quot;{ &quot;a&quot;:1, 
> &quot;b&quot;  :  2, }&quot;
> │ </pre></div></td></tr><tr><td>line</td><td><div 
> class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>18
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 26.32ms - stdout ] ────────────────────────────────────────────────────────
> │ Line:0 Col:18 Error parsing object
> │ { "a":1, "b"  :  2, }
> │                   ^Unexpected ','
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### jValue
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let example1 = """{
>     "name" : "Scott",
>     "isMale" : true,
>     "bday" : {"year":2001, "month":12, "day":25 },
>     "favouriteColors" : [["blue", "green"]],
>     "emptyArray" : [[]],
>     "emptyObject" : {}
> }"""
> run jValue example1
> |> parserEqual (
>     Success (
>         JObject (
>             Map.ofList [[
>                 "name", JString "Scott"
>                 "isMale", JBool true
>                 "bday", JObject (
>                     Map.ofList [[
>                         "year", JNumber 2001.0
>                         "month", JNumber 12.0
>                         "day", JNumber 25.0
>                     ]]
>                 )
>                 "favouriteColors", JArray [[ JString "blue"; JString "green" ]]
>                 "emptyArray", JArray [[]]
>                 "emptyObject", JObject Map.empty
>             ]]
>         )
>     )
> )
> 
> ── [ 105.83ms - return value ] ─────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success<br />  (JObject<br />     (map<br />        
> [(&quot;bday&quot;,<br />          JObject<br />            (map<br />
> [(&quot;day&quot;, JNumber 25.0); (&quot;month&quot;, JNumber 12.0);<br />
> (&quot;year&quot;, JNumber 2001.0)])); (&quot;emptyArray&quot;, JArray []);<br 
> />         (&quot;emptyObject&quot;, JObject (map []));<br />         
> (&quot;favouriteColors&quot;, 
> ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It
> em</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JObject<br />  (map<br />     
> [(&quot;bday&quot;,<br />       JObject<br />         (map<br />            
> [(&quot;day&quot;, JNumber 25.0); (&quot;month&quot;, JNumber 12.0);<br />
> (&quot;year&quot;, JNumber 2001.0)])); (&quot;emptyArray&quot;, JArray []);<br 
> />      (&quot;emptyObject&quot;, JObject (map []));<br />      
> (&quot;favouriteColors&quot;, JArray [JString &quot;blue&quot;; JString 
> &quot;gr...</code></span></summary><div><table><thead><tr></tr></thead><tbody><t
> r><td>Item1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JObject<br />  (map<br />     [(&quot;bday&quot;,<br
> />       JObject<br />         (map<br />            [(&quot;day&quot;, JNumber 
> 25.0); (&quot;month&quot;, JNumber 12.0);<br />             (&quot;year&quot;, 
> JNumber 2001.0)])); (&quot;emptyArray&quot;, JArra...= 8<br />               
> column = 0 } 
> ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>li
> nes</td><td><div class="dni-plaintext"><pre>[ {,     &quot;name&quot; : 
> &quot;Scott&quot;,,     &quot;isMale&quot; : true,,     &quot;bday&quot; : 
> {&quot;year&quot;:2001, &quot;month&quot;:12, &quot;day&quot;:25 },,     
> &quot;favouriteColors&quot; : [&quot;blue&quot;, &quot;green&quot;],,     
> &quot;emptyArray&quot; : [],,     &quot;emptyObject&quot; : {}, } 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 8<br />
> column = 0 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>8
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 107.58ms - stdout ] ───────────────────────────────────────────────────────
> │ JObject
> │   (map
> │      [("bday",
> │        JObject
> │          (map
> │             [("day", JNumber 25.0); ("month", JNumber 12.0);
> │              ("year", JNumber 2001.0)])); ("emptyArray", 
> JArray []);
> │       ("emptyObject", JObject (map []));
> │       ("favouriteColors", JArray [JString "blue"; JString 
> "green"]);
> │       ("isMale", JBool true); ("name", JString "Scott")])
> │ JObject
> │   (map
> │      [("bday", JObject (map [("day", JNumber 25.0); ("month",
> JNumber 12.0); ("year", JNumber 2001.0)]));
> │       ("emptyArray", JArray []); ("emptyObject", JObject (map
> []));
> │       ("favouriteColors", JArray [JString "blue"; JString 
> "green"]); ("isMale", JBool true); ("name", JString "Scott")])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let example2 = """{"widget": {
>     "debug": "on",
>     "window": {
>         "title": "Sample Konfabulator Widget",
>         "name": "main_window",
>         "width": 500,
>         "height": 500
>     },
>     "image": {
>         "src": "Images/Sun.png",
>         "name": "sun1",
>         "hOffset": 250,
>         "vOffset": 250,
>         "alignment": "center"
>     },
>     "text": {
>         "data": "Click Here",
>         "size": 36,
>         "style": "bold",
>         "name": "text1",
>         "hOffset": 250,
>         "vOffset": 100,
>         "alignment": "center",
>         "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
>     }
> }}"""
> 
> run jValue example2
> |> parserEqual (
>     Success (
>         JObject (
>             Map.ofList [[
>                 "widget", JObject (
>                     Map.ofList [[
>                         "debug", JString "on"
>                         "window", JObject (
>                             Map.ofList [[
>                                 "title", JString "Sample Konfabulator Widget"
>                                 "name", JString "main_window"
>                                 "width", JNumber 500.0
>                                 "height", JNumber 500.0
>                             ]]
>                         )
>                         "image", JObject (
>                             Map.ofList [[
>                                 "src", JString "Images/Sun.png"
>                                 "name", JString "sun1"
>                                 "hOffset", JNumber 250.0
>                                 "vOffset", JNumber 250.0
>                                 "alignment", JString "center"
>                             ]]
>                         )
>                         "text", JObject (
>                             Map.ofList [[
>                                 "data", JString "Click Here"
>                                 "size", JNumber 36.0
>                                 "style", JString "bold"
>                                 "name", JString "text1"
>                                 "hOffset", JNumber 250.0
>                                 "vOffset", JNumber 100.0
>                                 "alignment", JString "center"
>                                 "onMouseUp", JString "sun1.opacity = 
> (sun1.opacity / 100) * 90;"
>                             ]]
>                         )
>                     ]]
>                 )
>             ]]
>         )
>     )
> )
> 
> ── [ 219.65ms - return value ] ─────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success<br />  (JObject<br />     (map<br />        
> [(&quot;widget&quot;,<br />          JObject<br />            (map<br />
> [(&quot;debug&quot;, JString &quot;on&quot;);<br />                
> (&quot;image&quot;,<br />                 JObject<br />                   
> (map<br />                      [(&quot;alignment&quot;, JString 
> &quot;center&quot;);<br />                       
> (&quot;hOffset&quot;...</code></span></summary><div><table><thead><tr></tr></the
> ad><tbody><tr><td>Item</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JObject<br />  (map<br />     
> [(&quot;widget&quot;,<br />       JObject<br />         (map<br />            
> [(&quot;debug&quot;, JString &quot;on&quot;);<br />             
> (&quot;image&quot;,<br />              JObject<br />                (map<br />
> [(&quot;alignment&quot;, JString &quot;center&quot;); (&quot;hOffset&quot;, 
> JNumber 250.0);<br />                    (&quot;name&quot;, JString 
> &quot;sun1&quot;...</code></span></summary><div><table><thead><tr></tr></thead><
> tbody><tr><td>Item1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JObject<br />  (map<br />     
> [(&quot;widget&quot;,<br />       JObject<br />         (map<br />            
> [(&quot;debug&quot;, JString &quot;on&quot;);<br />             
> (&quot;image&quot;,<br />              JObject<br />                (...       
> &quot;alignment&quot;: &quot;center&quot;,     },,     &quot;text&quot;: {,
> &quot;data&quot;: &quot;Click Here&quot;,,         &quot;size&quot;: 36,,
> &quot;style&quot;: &quot;bold&quot;,,         &quot;name&quot;: 
> &quot;text1&quot;,,         &quot;hOffset&quot;: 250,,         
> &quot;vOffset&quot;: 100,,         &quot;alignment&quot;: &quot;center&quot;,,
> &quot;onMouseUp&quot;: &quot;sun1.opacity = (sun1.opacity / 100) * 90;&quot;,
> }, }} ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 26<br 
> />  column = 0 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>26
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 221.27ms - stdout ] ───────────────────────────────────────────────────────
> │ JObject
> │   (map
> │      [("widget",
> │        JObject
> │          (map
> │             [("debug", JString "on");
> │              ("image",
> │               JObject
> │                 (map
> │                    [("alignment", JString "center"); 
> ("hOffset", JNumber 250.0);
> │                     ("name", JString "sun1"); ("src", JString
> "Images/Sun.png");
> │                     ("vOffset", JNumber 250.0)]));
> │              ("text",
> │               JObject
> │                 (map
> │                    [("alignment", JString "center");
> │                     ("data", JString "Click Here"); 
> ("hOffset", JNumber 250.0);
> │                     ("name", JString "text1");
> │                     ("onMouseUp",
> │                      JString "sun1.opacity = (sun1.opacity / 
> 100) * 90;");
> │                     ("size", JNumber 36.0); ("style", JString
> "bold");
> │                     ("vOffset", JNumber 100.0)]));
> │              ("window",
> │               JObject
> │                 (map
> │                    [("height", JNumber 500.0); ("name", 
> JString "main_window");
> │                     ("title", JString "Sample Konfabulator 
> Widget");
> │                     ("width", JNumber 500.0)]))]))])
> │ JObject
> │   (map
> │      [("widget",
> │        JObject
> │          (map
> │             [("debug", JString "on");
> │              ("image",
> │               JObject
> │                 (map
> │                    [("alignment", JString "center"); 
> ("hOffset", JNumber 250.0); ("name", JString "sun1");
> │                     ("src", JString "Images/Sun.png"); 
> ("vOffset", JNumber 250.0)]));
> │              ("text",
> │               JObject
> │                 (map
> │                    [("alignment", JString "center"); ("data",
> JString "Click Here"); ("hOffset", JNumber 250.0);
> │                     ("name", JString "text1"); ("onMouseUp", 
> JString "sun1.opacity = (sun1.opacity / 100) * 90;");
> │                     ("size", JNumber 36.0); ("style", JString
> "bold"); ("vOffset", JNumber 100.0)]));
> │              ("window",
> │               JObject
> │                 (map
> │                    [("height", JNumber 500.0); ("name", 
> JString "main_window");
> │                     ("title", JString "Sample Konfabulator 
> Widget"); ("width", JNumber 500.0)]))]))])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let example3 = """{
>   "string": "Hello, \"World\"!",
>   "escapedString": "This string contains \\/\\\\\\b\\f\\n\\r\\t\\\"\\'",
>   "number": 42,
>   "scientificNumber": 3.14e-10,
>   "boolean": true,
>   "nullValue": null,
>   "array": [[1, 2, 3, 4, 5]],
>   "unicodeString1": "프리마",
>   "unicodeString2": "\u0048\u0065\u006C\u006C\u006F, 
> \u0022\u0057\u006F\u0072\u006C\u0064\u0022!",
>   "specialCharacters": "!@#$%^&*()",
>   "emptyArray": [[]],
>   "emptyObject": {},
>   "nestedArrays": [[[[1, 2, 3]], [[4, 5, 6]]]],
>   "object": {
>     "nestedString": "Nested Value",
>     "nestedNumber": 3.14,
>     "nestedBoolean": false,
>     "nestedNull": null,
>     "nestedArray": [["a", "b", "c"]],
>     "nestedObject": {
>       "nestedProperty": "Nested Object Value"
>     }
>   },
>   "nestedObjects": [[
>     {"name": "Alice", "age": 25},
>     {"name": "Bob", "age": 30}
>   ]]
> }"""
> run jValue example3
> |> parserEqual (
>     Success (
>         JObject (
>             Map.ofList [[
>                 "string", JString @"Hello, ""World""!"
>                 "escapedString", JString @"This string contains 
> \/\\\b\f\n\r\t\""\'"
>                 "number", JNumber 42.0
>                 "scientificNumber", JNumber 3.14e-10
>                 "boolean", JBool true
>                 "nullValue", JNull
>                 "array", JArray [[
>                     JNumber 1.0; JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber 
> 5.0
>                 ]]
>                 "unicodeString1", JString "프리마"
>                 "unicodeString2", JString @"Hello, ""World""!"
>                 "specialCharacters", JString "!@#$%^&*()"
>                 "emptyArray", JArray [[]]
>                 "emptyObject", JObject Map.empty
>                 "nestedArrays", JArray [[
>                     JArray [[ JNumber 1.0; JNumber 2.0; JNumber 3.0 ]]
>                     JArray [[ JNumber 4.0; JNumber 5.0; JNumber 6.0 ]]
>                 ]]
>                 "object", JObject (
>                     Map.ofList [[
>                         "nestedString", JString "Nested Value"
>                         "nestedNumber", JNumber 3.14
>                         "nestedBoolean", JBool false
>                         "nestedNull", JNull
>                         "nestedArray", JArray [[JString "a"; JString "b"; 
> JString "c"]]
>                         "nestedObject", JObject (
>                             Map.ofList [[
>                                 "nestedProperty", JString "Nested Object Value"
>                             ]]
>                         )
>                     ]]
>                 )
>                 "nestedObjects", JArray [[
>                   JObject (Map.ofList [[ "name", JString "Alice"; "age", JNumber
> 25.0 ]])
>                   JObject (Map.ofList [[ "name", JString "Bob"; "age", JNumber 
> 30.0 ]])
>                 ]]
>             ]]
>         )
>     )
> )
> 
> ── [ 314.46ms - return value ] ─────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success<br />  (JObject<br />     (map<br />        
> [(&quot;array&quot;,<br />          JArray<br />            [JNumber 1.0; 
> JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber 5.0]);<br />         
> (&quot;boolean&quot;, JBool true); (&quot;emptyArray&quot;, JArray []);<br />
> (&quot;emptyObject&quot;, JObject (map []));<br />         
> (&quot;escapedString&quot;, JString &quot;This 
> s...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I
> tem</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JObject<br />  (map<br />     
> [(&quot;array&quot;,<br />       JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0; 
> JNumber 4.0; JNumber 5.0]);<br />      (&quot;boolean&quot;, JBool true); 
> (&quot;emptyArray&quot;, JArray []);<br />      (&quot;emptyObject&quot;, 
> JObject (map []));<br />      (&quot;escapedString&quot;, JString &quot;This 
> string contains \/\\\b\f<br />\r\t\&quot;\&#39;&quot;);<br />    
> ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It
> em1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JObject<br />  (map<br />     
> [(&quot;array&quot;,<br />       JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0; 
> JNumber 4.0; JNumber 5.0]);<br />      (&quot;boolean&quot;, JBool true); 
> (&quot;emptyArray&quot;, JArray []);<br />      (&quot;emptyObject&quot;, 
> JObject (map []));<br />      (&quot;es...quot;,,     &quot;nestedNumber&quot;: 
> 3.14,,     &quot;nestedBoolean&quot;: false,,     &quot;nestedNull&quot;: null,,
> &quot;nestedArray&quot;: [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;],,     
> &quot;nestedObject&quot;: {,       &quot;nestedProperty&quot;: &quot;Nested 
> Object Value&quot;,     },   },,   &quot;nestedObjects&quot;: [,     
> {&quot;name&quot;: &quot;Alice&quot;, &quot;age&quot;: 25},,     
> {&quot;name&quot;: &quot;Bob&quot;, &quot;age&quot;: 30},   ], } 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 29<br 
> />  column = 0 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>29
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta
> ble></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 316.56ms - stdout ] ───────────────────────────────────────────────────────
> │ JObject
> │   (map
> │      [("array",
> │        JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0; JNumber
> 4.0; JNumber 5.0]);
> │       ("boolean", JBool true); ("emptyArray", JArray []);
> │       ("emptyObject", JObject (map []));
> │       ("escapedString", JString "This string contains 
> \/\\\b\f\n\r\t\"\'");
> │       ("nestedArrays",
> │        JArray
> │          [JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0];
> │           JArray [JNumber 4.0; JNumber 5.0; JNumber 6.0]]);
> │       ("nestedObjects",
> │        JArray
> │          [JObject (map [("age", JNumber 25.0); ("name", 
> JString "Alice")]);
> │           JObject (map [("age", JNumber 30.0); ("name", 
> JString "Bob")])]);
> │       ("nullValue", JNull); ("number", JNumber 42.0); ...])
> │ JObject
> │   (map
> │      [("array", JArray [JNumber 1.0; JNumber 2.0; JNumber 
> 3.0; JNumber 4.0; JNumber 5.0]); ("boolean", JBool true);
> │       ("emptyArray", JArray []); ("emptyObject", JObject (map
> []));
> │       ("escapedString", JString "This string contains 
> \/\\\b\f\n\r\t\"\'");
> │       ("nestedArrays",
> │        JArray [JArray [JNumber 1.0; JNumber 2.0; JNumber 
> 3.0]; JArray [JNumber 4.0; JNumber 5.0; JNumber 6.0]]);
> │       ("nestedObjects",
> │        JArray
> │          [JObject (map [("age", JNumber 25.0); ("name", 
> JString "Alice")]);
> │           JObject (map [("age", JNumber 30.0); ("name", 
> JString "Bob")])]); ("nullValue", JNull);
> │       ("number", JNumber 42.0); ...])
> │ 
> │ 
00:00:18 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 154933 }
00:00:18 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:00:18 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb to html
00:00:18 v #6 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:18 v #7 !   validate(nb)
00:00:19 v #8 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:19 v #9 !   return _pygments_highlight(
00:00:19 v #10 ! [NbConvertApp] Writing 500494 bytes to /home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.html
00:00:19 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 908 }
00:00:19 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 908 }
00:00:19 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:00:20 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:20 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:20 d #16 spiral.run / dib / { exit_code = 0; result_length = 155900 }
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Parser.dib"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None; stderr = true } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ # Parser (Polyglot)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Common
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### TextInput
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Position =
>     {
>         line : int
>         column : int
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let initialPos = { line = 0; column = 0 }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline incrCol (pos : Position) =
>     { pos with column = pos.column + 1 }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline incrLine pos =
>     { line = pos.line + 1; column = 0 }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type InputState =
>     {
>         lines : string[[]]
>         position : Position
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline fromStr str =
>     {
>         lines =
>             if str |> String.IsNullOrEmpty
>             then [[||]]
>             else str |> SpiralSm.split_string [[| "\r\n"; "\n" |]]
>         position = initialPos
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> fromStr "" |> _assertEqual {
>     lines = [[||]]
>     position = { line = 0; column = 0 }
> }
> 
> ── [ 37.24ms - stdout ] ────────────────────────────────────────────────────────
> │ { lines = [||]
> │   position = { line = 0
> │                column = 0 } }
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> fromStr "Hello \n World" |> _assertEqual {
>     lines = [[| "Hello "; " World" |]]
>     position = { line = 0; column = 0 }
> }
> 
> ── [ 14.63ms - stdout ] ────────────────────────────────────────────────────────
> │ { lines = [|"Hello "; " World"|]
> │   position = { line = 0
> │                column = 0 } }
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline currentLine inputState =
>     let linePos = inputState.position.line
>     if linePos < inputState.lines.Length
>     then inputState.lines.[[linePos]]
>     else "end of file"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline nextChar input =
>     let linePos = input.position.line
>     let colPos = input.position.column
> 
>     if linePos >= input.lines.Length
>     then input, None
>     else
>         let currentLine = currentLine input
>         if colPos < currentLine.Length then
>             let char = currentLine.[[colPos]]
>             let newPos = incrCol input.position
>             let newState = { input with position = newPos }
>             newState, Some char
>         else
>             let char = '\n'
>             let newPos = incrLine input.position
>             let newState = { input with position = newPos }
>             newState, Some char
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let newInput, charOpt = fromStr "Hello World" |> nextChar
> 
> newInput |> _assertEqual {
>     lines = [[| "Hello World" |]]
>     position = { line = 0; column = 1 }
> }
> charOpt |> _assertEqual (Some 'H')
> 
> ── [ 29.33ms - stdout ] ────────────────────────────────────────────────────────
> │ { lines = [|"Hello World"|]
> │   position = { line = 0
> │                column = 1 } }
> │ 
> │ Some 'H'
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let newInput, charOpt = fromStr "Hello\n\nWorld" |> nextChar
> 
> newInput |> _assertEqual {
>     lines = [[| "Hello"; ""; "World" |]]
>     position = { line = 0; column = 1 }
> }
> charOpt |> _assertEqual (Some 'H')
> 
> ── [ 18.97ms - stdout ] ────────────────────────────────────────────────────────
> │ { lines = [|"Hello"; ""; "World"|]
> │   position = { line = 0
> │                column = 1 } }
> │ 
> │ Some 'H'
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Parser
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Input = InputState
> type ParserLabel = string
> type ParserError = string
> 
> type ParserPosition =
>     {
>         currentLine : string
>         line : int
>         column : int
>     }
> 
> type ParseResult<'a> =
>     | Success of 'a
>     | Failure of ParserLabel * ParserError * ParserPosition
> 
> type Parser<'a> =
>     {
>         label : ParserLabel
>         parseFn : Input -> ParseResult<'a * Input>
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline printResult result =
>     match result with
>     | Success (value, input) ->
>         printfn $"%A{value}"
>     | Failure (label, error, parserPos) ->
>         let errorLine = parserPos.currentLine
>         let colPos = parserPos.column
>         let linePos = parserPos.line
>         let failureCaret = $"{' ' |> string |> String.replicate colPos}^{error}"
>         printfn $"Line:%i{linePos} Col:%i{colPos} Error parsing 
> %s{label}\n%s{errorLine}\n%s{failureCaret}"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline runOnInput parser input =
>     parser.parseFn input
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline run parser inputStr =
>     runOnInput parser (fromStr inputStr)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline parserPositionFromInputState (inputState : Input) =
>     {
>         currentLine = currentLine inputState
>         line = inputState.position.line
>         column = inputState.position.column
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline getLabel parser =
>     parser.label
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline setLabel parser newLabel =
>     {
>         label = newLabel
>         parseFn = fun input ->
>             match parser.parseFn input with
>             | Success s -> Success s
>             | Failure (oldLabel, err, pos) -> Failure (newLabel, err, pos)
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let (<?>) = setLabel
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline satisfy predicate label =
>     {
>         label = label
>         parseFn = fun input ->
>             let remainingInput, charOpt = nextChar input
>             match charOpt with
>             | None ->
>                 let err = "No more input"
>                 let pos = parserPositionFromInputState input
>                 Failure (label, err, pos)
>             | Some first ->
>                 if predicate first
>                 then Success (first, remainingInput)
>                 else
>                     let err = $"Unexpected '%c{first}'"
>                     let pos = parserPositionFromInputState input
>                     Failure (label, err, pos)
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> runOnInput parser input |> _assertEqual (
>     Success (
>         'H',
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 1 }
>         }
>     )
> )
> 
> ── [ 24.74ms - stdout ] ────────────────────────────────────────────────────────
> │ Success ('H', { lines = [|"Hello"|]
> │                 position = { line = 0
> │                              column = 1 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "World"
> let parser = satisfy (fun c -> c = 'H') "H"
> runOnInput parser input |> _assertEqual (
>     Failure (
>         "H",
>         "Unexpected 'W'",
>         {
>             currentLine = "World"
>             line = 0
>             column = 0
>         }
>     )
> )
> 
> ── [ 20.30ms - stdout ] ────────────────────────────────────────────────────────
> │ Failure ("H", "Unexpected 'W'", { currentLine = "World"
> │                                   line = 0
> │                                   column = 0 })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline bindP f p =
>     {
>         label = "unknown"
>         parseFn = fun input ->
>             match runOnInput p input with
>             | Failure (label, err, pos) -> Failure (label, err, pos)
>             | Success (value1, remainingInput) -> runOnInput (f value1) 
> remainingInput
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (>>=) p f = bindP f p
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = parser >>= fun c -> satisfy (fun c -> c = 'e') "e"
> runOnInput parser2 input |> _assertEqual (
>     Success (
>         'e',
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 2 }
>         }
>     )
> )
> 
> ── [ 27.14ms - stdout ] ────────────────────────────────────────────────────────
> │ Success ('e', { lines = [|"Hello"|]
> │                 position = { line = 0
> │                              column = 2 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "World"
> let parser = satisfy (fun c -> c = 'W') "W"
> let parser2 = parser >>= fun c -> satisfy (fun c -> c = 'e') "e"
> runOnInput parser2 input |> _assertEqual (
>     Failure (
>         "e",
>         "Unexpected 'o'",
>         {
>             currentLine = "World"
>             line = 0
>             column = 1
>         }
>     )
> )
> 
> ── [ 26.68ms - stdout ] ────────────────────────────────────────────────────────
> │ Failure ("e", "Unexpected 'o'", { currentLine = "World"
> │                                   line = 0
> │                                   column = 1 })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline returnP x =
>     {
>         label = $"%A{x}"
>         parseFn = fun input -> Success (x, input)
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = returnP "Hello"
> runOnInput parser input |> _assertEqual (
>     Success (
>         "Hello",
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 0 }
>         }
>     )
> )
> 
> ── [ 16.35ms - stdout ] ────────────────────────────────────────────────────────
> │ Success ("Hello", { lines = [|"Hello"|]
> │                     position = { line = 0
> │                                  column = 0 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline mapP f =
>     bindP (f >> returnP)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let (<!>) = mapP
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (|>>) x f = f <!> x
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = parser |>> string
> runOnInput parser2 input |> _assertEqual (
>     Success (
>         "H",
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 1 }
>         }
>     )
> )
> 
> ── [ 23.12ms - stdout ] ────────────────────────────────────────────────────────
> │ Success ("H", { lines = [|"Hello"|]
> │                 position = { line = 0
> │                              column = 1 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline applyP fP xP =
>     fP >>=
>         fun f ->
>             xP >>=
>                 fun x ->
>                     returnP (f x)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let (<*>) = applyP
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline lift2 f xP yP =
>     returnP f <*> xP <*> yP
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = satisfy (fun c -> c = 'e') "e"
> let parser3 = lift2 (fun c1 c2 -> string c1 + string c2) parser parser2
> runOnInput parser3 input |> _assertEqual (
>     Success (
>         "He",
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 2 }
>         }
>     )
> )
> 
> ── [ 41.19ms - stdout ] ────────────────────────────────────────────────────────
> │ Success ("He", { lines = [|"Hello"|]
> │                  position = { line = 0
> │                               column = 2 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline andThen p1 p2 =
>     p1 >>=
>         fun p1Result ->
>             p2 >>=
>                 fun p2Result ->
>                     returnP (p1Result, p2Result)
>     <?> $"{getLabel p1} andThen {getLabel p2}"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let (.>>.) = andThen
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = satisfy (fun c -> c = 'e') "e"
> let parser3 = parser .>>. parser2
> runOnInput parser3 input |> _assertEqual (
>     Success (
>         ('H', 'e'),
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 2 }
>         }
>     )
> )
> 
> ── [ 27.21ms - stdout ] ────────────────────────────────────────────────────────
> │ Success (('H', 'e'), { lines = [|"Hello"|]
> │                        position = { line = 0
> │                                     column = 2 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline orElse p1 p2 =
>     {
>         label = $"{getLabel p1} orElse {getLabel p2}"
>         parseFn = fun input ->
>             match runOnInput p1 input with
>             | Success _ as result -> result
>             | Failure _ -> runOnInput p2 input
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let (<|>) = orElse
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = satisfy (fun c -> c = 'h') "h"
> let parser3 = parser <|> parser2
> runOnInput parser3 input |> _assertEqual (
>     Success (
>         'h',
>         {
>             lines = [[| "hello" |]]
>             position = { line = 0; column = 1 }
>         }
>     )
> )
> 
> ── [ 24.19ms - stdout ] ────────────────────────────────────────────────────────
> │ Success ('h', { lines = [|"hello"|]
> │                 position = { line = 0
> │                              column = 1 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline choice listOfParsers =
>     listOfParsers |> List.reduce (<|>)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = satisfy (fun c -> c = 'h') "h"
> let parser3 = choice [[ parser; parser2 ]]
> runOnInput parser3 input |> _assertEqual (
>     Success (
>         'h',
>         {
>             lines = [[| "hello" |]]
>             position = { line = 0; column = 1 }
>         }
>     )
> )
> 
> ── [ 23.79ms - stdout ] ────────────────────────────────────────────────────────
> │ Success ('h', { lines = [|"hello"|]
> │                 position = { line = 0
> │                              column = 1 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec sequence parserList =
>     match parserList with
>     | [[]] -> returnP [[]]
>     | head :: tail -> (lift2 cons) head (sequence tail)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = satisfy (fun c -> c = 'e') "e"
> let parser3 = sequence [[ parser; parser2 ]]
> runOnInput parser3 input |> _assertEqual (
>     Success (
>         [[ 'H'; 'e' ]],
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 2 }
>         }
>     )
> )
> 
> ── [ 31.12ms - stdout ] ────────────────────────────────────────────────────────
> │ Success (['H'; 'e'], { lines = [|"Hello"|]
> │                        position = { line = 0
> │                                     column = 2 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec parseZeroOrMore parser input =
>     match runOnInput parser input with
>     | Failure (_, _, _) ->
>         [[]], input
>     | Success (firstValue, inputAfterFirstParse) ->
>         let subsequentValues, remainingInput = parseZeroOrMore parser 
> inputAfterFirstParse
>         firstValue :: subsequentValues, remainingInput
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline many parser =
>     {
>         label = $"many {getLabel parser}"
>         parseFn = fun input -> Success (parseZeroOrMore parser input)
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = many parser
> runOnInput parser2 input |> _assertEqual (
>     Success (
>         [[]],
>         {
>             lines = [[| "hello" |]]
>             position = { line = 0; column = 0 }
>         }
>     )
> )
> 
> ── [ 21.20ms - stdout ] ────────────────────────────────────────────────────────
> │ Success ([], { lines = [|"hello"|]
> │                position = { line = 0
> │                             column = 0 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline many1 p =
>     p >>=
>         fun head ->
>             many p >>=
>                 fun tail ->
>                     returnP (head :: tail)
>     <?> $"many1 {getLabel p}"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = many1 parser
> runOnInput parser2 input |> _assertEqual (
>     Failure (
>         "many1 H",
>         "Unexpected 'h'",
>         {
>             currentLine = "hello"
>             line = 0
>             column = 0
>         }
>     )
> )
> 
> ── [ 29.49ms - stdout ] ────────────────────────────────────────────────────────
> │ Failure ("many1 H", "Unexpected 'h'", { currentLine = "hello"
> │                                         line = 0
> │                                         column = 0 })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline opt p =
>     let some = p |>> Some
>     let none = returnP None
>     (some <|> none)
>     <?> $"opt {getLabel p}"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = opt parser
> runOnInput parser2 input |> _assertEqual (
>     Success (
>         None,
>         {
>             lines = [[| "hello" |]]
>             position = { line = 0; column = 0 }
>         }
>     )
> )
> 
> ── [ 25.19ms - stdout ] ────────────────────────────────────────────────────────
> │ Success (None, { lines = [|"hello"|]
> │                  position = { line = 0
> │                               column = 0 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (.>>) p1 p2 =
>     p1 .>>. p2
>     |> mapP fst
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (>>.) p1 p2 =
>     p1 .>>. p2
>     |> mapP snd
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline between p1 p2 p3 =
>     p1 >>. p2 .>> p3
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "[[Hello]]"
> let parser =
>     between
>         (satisfy (fun c -> c = '[[') "[[")
>         (many (satisfy (fun c -> [[ 'a' .. 'z' ]] @ [[ 'A' .. 'Z' ]] |> 
> List.contains c) "letter"))
>         (satisfy (fun c -> c = ']]') "]]")
> runOnInput parser input |> _assertEqual (
>     Success (
>         [[ 'H'; 'e'; 'l'; 'l'; 'o' ]],
>         {
>             lines = [[| "[[Hello]]" |]]
>             position = { line = 0; column = 7 }
>         }
>     )
> )
> 
> ── [ 82.61ms - stdout ] ────────────────────────────────────────────────────────
> │ Success (['H'; 'e'; 'l'; 'l'; 'o'], { lines = [|"[Hello]"|]
> │                                       position = { line = 0
> │                                                    column = 7
> } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline sepBy1 p sep =
>     let sepThenP = sep >>. p
>     p .>>. many sepThenP
>     |>> fun (p, pList) -> p :: pList
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline sepBy p sep =
>     sepBy1 p sep <|> returnP [[]]
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello,World"
> let parser = sepBy (many (satisfy (fun c -> c <> ',') "not comma")) (satisfy 
> (fun c -> c = ',') "comma")
> runOnInput parser input |> _assertEqual (
>     Success (
>         [[ [[ 'H'; 'e'; 'l'; 'l'; 'o' ]]; [[ 'W'; 'o'; 'r'; 'l'; 'd'; '\n' ]] 
> ]],
>         {
>             lines = [[| "Hello,World" |]]
>             position = { line = 1; column = 0 }
>         }
>     )
> )
> 
> ── [ 51.36ms - stdout ] ────────────────────────────────────────────────────────
> │ Success ([['H'; 'e'; 'l'; 'l'; 'o']; ['W'; 'o'; 'r'; 'l'; 
> 'd'; '\010']], { lines = [|"Hello,World"|]
> │
> position = { line = 1
> │
>                                                                                 
> column = 0 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline pchar charToMatch =
>     satisfy ((=) charToMatch) $"%c{charToMatch}"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline anyOf listOfChars =
>     listOfChars
>     |> List.map pchar
>     |> choice
>     <?> $"anyOf %A{listOfChars}"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = anyOf [[ 'H'; 'e'; 'l'; 'o' ]] |> many
> runOnInput parser input |> _assertEqual (
>     Success (
>         [[ 'H'; 'e'; 'l'; 'l'; 'o' ]],
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 5 }
>         }
>     )
> )
> 
> ── [ 26.23ms - stdout ] ────────────────────────────────────────────────────────
> │ Success (['H'; 'e'; 'l'; 'l'; 'o'], { lines = [|"Hello"|]
> │                                       position = { line = 0
> │                                                    column = 5
> } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline charListToStr charList =
>     charList |> List.toArray |> String
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline manyChars cp =
>     many cp
>     |>> charListToStr
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline manyChars1 cp =
>     many1 cp
>     |>> charListToStr
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = manyChars1 (anyOf [[ 'H'; 'e'; 'l'; 'o' ]])
> runOnInput parser input |> _assertEqual (
>     Success (
>         "Hello",
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 5 }
>         }
>     )
> )
> 
> ── [ 35.97ms - stdout ] ────────────────────────────────────────────────────────
> │ Success ("Hello", { lines = [|"Hello"|]
> │                     position = { line = 0
> │                                  column = 5 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline pstring str =
>     str
>     |> List.ofSeq
>     |> List.map pchar
>     |> sequence
>     |> mapP charListToStr
>     <?> str
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = pstring "Hello"
> runOnInput parser input |> _assertEqual (
>     Success (
>         "Hello",
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 5 }
>         }
>     )
> )
> 
> ── [ 36.95ms - stdout ] ────────────────────────────────────────────────────────
> │ Success ("Hello", { lines = [|"Hello"|]
> │                     position = { line = 0
> │                                  column = 5 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let whitespaceChar =
>     satisfy Char.IsWhiteSpace "whitespace"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let spaces = many whitespaceChar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let spaces1 = many1 whitespaceChar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "  Hello"
> let parser = spaces1 .>>. pstring "Hello"
> runOnInput parser input |> _assertEqual (
>     Success (
>         ([[ ' '; ' ' ]], "Hello"),
>         {
>             lines = [[| "  Hello" |]]
>             position = { line = 0; column = 7 }
>         }
>     )
> )
> 
> ── [ 33.54ms - stdout ] ────────────────────────────────────────────────────────
> │ Success (([' '; ' '], "Hello"), { lines = [|"  Hello"|]
> │                                   position = { line = 0
> │                                                column = 7 } 
> })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let digitChar =
>     satisfy Char.IsDigit "digit"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = digitChar
> runOnInput parser input |> _assertEqual (
>     Failure (
>         "digit",
>         "Unexpected 'H'",
>         {
>             currentLine = "Hello"
>             line = 0
>             column = 0
>         }
>     )
> )
> 
> ── [ 14.17ms - stdout ] ────────────────────────────────────────────────────────
> │ Failure ("digit", "Unexpected 'H'", { currentLine = "Hello"
> │                                       line = 0
> │                                       column = 0 })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let pint =
>     let inline resultToInt (sign, digits) =
>         let i = int digits
>         match sign with
>         | Some ch -> -i
>         | None -> i
> 
>     let digits = manyChars1 digitChar
> 
>     opt (pchar '-') .>>. digits
>     |> mapP resultToInt
>     <?> "integer"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run pint "-123"
> |> _assertEqual (
>     Success (
>         -123,
>         {
>             lines = [[| "-123" |]]
>             position = { line = 0; column = 4 }
>         }
>     )
> )
> 
> ── [ 17.82ms - stdout ] ────────────────────────────────────────────────────────
> │ Success (-123, { lines = [|"-123"|]
> │                  position = { line = 0
> │                               column = 4 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let pfloat =
>     let inline resultToFloat (((sign, digits1), point), digits2) =
>         let fl = float $"{digits1}.{digits2}"
>         match sign with
>         | Some ch -> -fl
>         | None -> fl
> 
>     let digits = manyChars1 digitChar
> 
>     opt (pchar '-') .>>. digits .>>. pchar '.' .>>. digits
>     |> mapP resultToFloat
>     <?> "float"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run pfloat "-123.45"
> |> _assertEqual (
>     Success (
>         -123.45,
>         {
>             lines = [[| "-123.45" |]]
>             position = { line = 0; column = 7 }
>         }
>     )
> )
> 
> ── [ 22.34ms - stdout ] ────────────────────────────────────────────────────────
> │ Success (-123.45, { lines = [|"-123.45"|]
> │                     position = { line = 0
> │                                  column = 7 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline createParserForwardedToRef<'a> () =
>     let mutable parserRef : Parser<'a> =
>         {
>             label = "unknown"
>             parseFn = fun _ -> failwith "unfixed forwarded parser"
>         }
> 
>     let wrapperParser =
>         { parserRef with
>             parseFn = fun input -> runOnInput parserRef input
>         }
> 
>     wrapperParser, (fun v -> parserRef <- v)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (>>%) p x =
>     p
>     |>> fun _ -> x
00:00:16 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 33524 }
00:00:16 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:00:17 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb to html
00:00:17 v #6 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:17 v #7 !   validate(nb)
00:00:17 v #8 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:17 v #9 !   return _pygments_highlight(
00:00:18 v #10 ! [NbConvertApp] Writing 413727 bytes to /home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.html
00:00:18 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 900 }
00:00:18 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 900 }
00:00:18 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:00:18 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:18 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:18 d #16 spiral.run / dib / { exit_code = 0; result_length = 34483 }
00:00:00 d #1 writeDibCode / output: Fs / path: Parser.dib
00:00:00 d #1 writeDibCode / output: Fs / path: JsonParser.dib
00:00:00 d #2 parseDibCode / output: Fs / file: Parser.dib
00:00:00 d #3 parseDibCode / output: Fs / file: JsonParser.dib
polyglot/apps/parser/build.ps1 / $env:CI:'true'
In [ ]:
{ pwsh ../apps/spiral/build.ps1 } | Invoke-Block
00:00:00 d #1 writeDibCode / output: Fs / path: spiral_compiler.dib
00:00:00 d #2 parseDibCode / output: Fs / file: spiral_compiler.dib
00:00:00 d #1 persistCodeProject / packages: [Fable.Core; FSharp.Control.AsyncSeq; FSharpx.Collections; ... ] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: spiral_compiler / hash:  / code.Length: 828082
00:00:00 d #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/spiral_compiler/spiral_compiler.fsproj
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "/home/runner/work/polyglot/polyglot/target/Builder/spiral_compiler/spiral_compiler.fsproj" --configuration Release --output "/home/runner/work/polyglot/spiral/apps/compiler/dist" --runtime linux-x64"; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/spiral_compiler/spiral_compiler.fsproj" --configuration Release --output "/home/runner/work/polyglot/spiral/apps/compiler/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/spiral_compiler"; stderr = true } }
00:00:00 v #2 >   Determining projects to restore...
00:00:01 v #3 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:01 v #4 >   The last full restore is still up to date. Nothing left to do.
00:00:01 v #5 >   Total time taken: 0 milliseconds
00:00:01 v #6 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:01 v #7 >   Restoring /home/runner/work/polyglot/polyglot/target/Builder/spiral_compiler/spiral_compiler.fsproj
00:00:01 v #8 >   Starting restore process.
00:00:01 v #9 >   Total time taken: 0 milliseconds
00:00:02 v #10 >   Restored /home/runner/work/polyglot/polyglot/target/Builder/spiral_compiler/spiral_compiler.fsproj (in 296 ms).
00:00:30 v #11 >   spiral_compiler -> /home/runner/work/polyglot/polyglot/target/Builder/spiral_compiler/bin/Release/net9.0/linux-x64/spiral_compiler.dll
00:00:30 v #12 >   spiral_compiler -> /home/runner/work/polyglot/spiral/apps/compiler/dist
00:00:30 d #13 runtime.execute_with_options_async / { exit_code = 0; output_length = 753; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/spiral_compiler/spiral_compiler.fsproj" --configuration Release --output "/home/runner/work/polyglot/spiral/apps/compiler/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/spiral_compiler"; stderr = true } }
spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: /home/runner/work/polyglot/polyglot/target/Builder/spiral_compiler
spiral/apps/compiler/build.ps1 / $targetDir = /home/runner/work/polyglot/polyglot/target/Builder/spiral_compiler / $projectName: spiral_compiler / $env:CI:'true'
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Supervisor.dib", "--retries", "3"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None; stderr = true } }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #nowarn 0686
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ # Supervisor (Polyglot)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
> dard2.1/FSharp.Control.AsyncSeq.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
> 0/System.Reactive.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
> netstandard2.0/System.Reactive.Linq.dll"
> #r 
> @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com
> mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli
> ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0
> /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0
> /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/
> 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll"
> #r 
> @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha
> rp.Json.dll"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #if !INTERACTIVE
> open Lib
> #endif
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Common
> open SpiralFileSystem.Operators
> open Microsoft.AspNetCore.SignalR.Client
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### sendJson
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let sendJson (port : int) (json : string) = async {
>     let host = "127.0.0.1"
>     let! portOpen = SpiralNetworking.test_port_open host port
>     if portOpen then
>         try
>             let connection = 
> HubConnectionBuilder().WithUrl($"http://{host}:{port}").Build()
>             do! connection.StartAsync () |> Async.AwaitTask
>             let! result = connection.InvokeAsync<string> ("ClientToServerMsg", 
> json) |> Async.AwaitTask
>             do! connection.StopAsync () |> Async.AwaitTask
>             trace Verbose (fun () -> $"Supervisor.sendJson / port: {port} / 
> json: {json |> SpiralSm.ellipsis_end 200} / result: {result |> Option.ofObj |> 
> Option.map (SpiralSm.ellipsis_end 200)}") _locals
>             return Some result
>         with ex ->
>             trace Critical (fun () -> $"Supervisor.sendJson / port: {port} / 
> json: {json |> SpiralSm.ellipsis_end 200} / ex: {ex |> 
> SpiralSm.format_exception}") _locals
>             return None
>     else
>         trace Debug (fun () -> $"Supervisor.sendJson / port: {port} / error: 
> port not open") _locals
>         return None
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### sendObj
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let sendObj port obj =
>     obj
>     |> System.Text.Json.JsonSerializer.Serialize
>     |> sendJson port
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### workspaceRoot
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let workspaceRoot = SpiralFileSystem.get_workspace_root ()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### getFilePathFromUri
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let getFilePathFromUri uri =
>     match System.Uri.TryCreate (uri, System.UriKind.Absolute) with
>     | true, uri -> uri.AbsolutePath |> System.IO.Path.GetFullPath
>     | _ -> failwith "invalid uri"
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### getCompilerPort
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let getCompilerPort () =
>     13805
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### serialize_obj
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
>     let serializeObj obj =
>         try
>             obj
>             |> FSharp.Json.Json.serialize
>             |> SpiralSm.replace "\\\\" "\\"
>             |> SpiralSm.replace "\\r\\n" "\n"
>             |> SpiralSm.replace "\\n" "\n"
>         with ex ->
>             trace Critical (fun () -> "Supervisor.serialize_obj / obj: %A{obj}")
> _locals
>             ""
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Backend
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Backend =
>     | Gleam
>     | Fsharp
>     | Python
>     | Cpp
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/fsharpx.collections/3.1.0/lib/netstandard
> 2.0/FSharpx.Collections.dll"
> #r 
> @"../../../../../../../.nuget/packages/hopac/0.5.1/lib/netstandard2.0/Hopac.dll"
> #r 
> @"../../../../../../../.nuget/packages/hopac/0.5.1/lib/netstandard2.0/Hopac.Core
> .dll"
> #r 
> @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
> arsec.dll"
> #r 
> @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
> arsecCS.dll"
> 
> 
> 
> #if _LINUX
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.dll"
> #else
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.dll"
> #endif
> 
> #if _LINUX
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.dll"
> #else
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.dll"
> #endif
> 
> #if _LINUX
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.Core.dll"
> #else
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.Core.dll"
> #endif
> 
> #if _LINUX
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Cors.dll"
> #else
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Cors.dll"
> #endif
> 
> #if _LINUX
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll
> "
> #else
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll"
> #endif
> 
> #if _LINUX
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Connections.Abstracti
> ons.dll"
> #else
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Connections.Abstractions.
> dll"
> #endif
> 
> #if _LINUX
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Hosting.Abstractions.
> dll"
> #else
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Hosting.Abstractions.dll"
> #endif
> 
> #if _LINUX
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Http.Connections.dll"
> #else
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Http.Connections.dll"
> #endif
> 
> #if _LINUX
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Routing.dll"
> #else
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Routing.dll"
> #endif
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> ls ~/.nuget/packages/microsoft.extensions.logging
> 
> ── [ 181.07ms - stdout ] ───────────────────────────────────────────────────────
> │ 2.1.1
> │ 6.0.0
> │ 8.0.1
> │ 9.0.0
> │ 9.0.0-preview.1.24080.9
> │ 9.0.3
> │ 9.0.5
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/microsoft.extensions.logging/9.0.5/lib/ne
> t9.0/Microsoft.Extensions.Logging.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.extensions.logging.abstractions
> /9.0.5/lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.extensions.dependencyinjection.
> abstractions/9.0.5/lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstracti
> ons.dll"
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> ls ~/.nuget/packages/system.management
> 
> ── [ 16.45ms - stdout ] ────────────────────────────────────────────────────────
> │ 7.0.0
> │ 9.0.0
> │ 9.0.0-preview.1.24080.9
> │ 9.0.4
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/system.management/9.0.4/lib/netstandard2.
> 0/System.Management.dll"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open spiral_compiler
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### awaitCompiler
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let awaitCompiler port cancellationToken = async {
>     let host = "127.0.0.1"
>     let struct (ct, disposable) = cancellationToken |> 
> SpiralThreading.new_disposable_token
>     let! ct = ct |> SpiralAsync.merge_cancellation_token_with_default_async
> 
>     let compiler = MailboxProcessor.Start (fun inbox -> async {
>         let! availablePort = SpiralNetworking.get_available_port (Some 180) host
> port
>         if availablePort <> port then
>             inbox.Post (port, false)
>         else
>             let compilerDir =
>                 workspaceRoot </> "deps/spiral/apps/compiler/dist"
>                 |> System.IO.Path.GetFullPath
> 
>             let compilerPath = compilerDir </> 
> $"spiral_compiler{SpiralPlatform.get_executable_suffix ()}"
> 
>             let! exitCode, result =
>                 SpiralRuntime.execution_options (fun x ->
>                     { x with
>                         l0 = $"\"{compilerPath}\" --port {availablePort} 
> --default-int i32 --default-float f64"
>                         l1 = Some ct
>                         l3 = Some (fun struct (_, line, _) -> async {
>                             if line |> SpiralSm.contains 
> $"System.IO.IOException: Failed to bind to address http://{host}:{port}: address
> already in use." then
>                                 inbox.Post (port, false)
> 
>                             if line |> SpiralSm.contains $"Server bound to: 
> http://localhost:{availablePort}" then
>                                 let rec 루프 retry = async {
>                                     do!
>                                         SpiralNetworking.wait_for_port_access 
> (Some 100) true host availablePort
>                                         |> Async.runWithTimeoutAsync 500
>                                         |> Async.Ignore
> 
>                                     let _locals () = $"port: {availablePort} / 
> retry: {retry} / {_locals ()}"
>                                     try
>                                         let pingObj = {| Ping = true |}
>                                         let! pingResult = pingObj |> sendObj 
> availablePort
>                                         trace Verbose (fun () -> 
> $"Supervisor.awaitCompiler / Ping / result: '%A{pingResult}'") _locals
> 
>                                         match pingResult with
>                                         | Some _ -> inbox.Post (availablePort, 
> true)
>                                         | None -> do! 루프 (retry + 1)
>                                     with ex ->
>                                         trace Verbose (fun () -> 
> $"Supervisor.awaitCompiler / Ping / ex: {ex |> SpiralSm.format_exception}") 
> _locals
>                                         do! 루프 (retry + 1)
>                                 }
>                                 do! 루프 1
>                         })
>                         l6 = Some workspaceRoot
>                     }
>                 )
>                 |> SpiralRuntime.execute_with_options_async
> 
>             trace Debug (fun () -> $"Supervisor.awaitCompiler / exitCode: 
> {exitCode} / result: {result}") _locals
>             disposable.Dispose ()
>     }, ct)
> 
>     let! serverPort, managed = compiler.Receive ()
> 
>     let connection = 
> HubConnectionBuilder().WithUrl($"http://{host}:{serverPort}").Build ()
>     do! connection.StartAsync () |> Async.AwaitTask
> 
>     let event = Event<_> ()
>     let disposable' = connection.On<string> ("ServerToClientMsg", event.Trigger)
>     let stream =
>         FSharp.Control.AsyncSeq.unfoldAsync
>             (fun () -> async {
>                 let! msg = event.Publish |> Async.AwaitEvent
>                 return Some (msg |> 
> FSharp.Json.Json.deserialize<ClientErrorsRes>, ())
>             })
>             ()
> 
>     let disposable' =
>         new_disposable (fun () ->
>             async {
>                 disposable'.Dispose ()
>                 do! connection.StopAsync () |> Async.AwaitTask
>                 disposable.Dispose ()
>                 if managed
>                 then do!
>                     SpiralNetworking.wait_for_port_access (Some 100) false host 
> serverPort
>                     |> Async.runWithTimeoutAsync 1500
>                     |> Async.Ignore
>             }
>             |> Async.RunSynchronously
>         )
> 
>     return
>         serverPort,
>         stream,
>         ct,
>         disposable'
> }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Hopac
> open Hopac.Infixes
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### server
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let server1 = new_server<Job<unit>, obj, string option, Job<unit>, unit> ()
> let server2 = new_server<Job<unit>, obj, int array, Job<unit>, unit> ()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### buildFile
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let buildFile backend timeout port cancellationToken path =
>     let rec 루프 retry = async {
>         let fullPath = path |> System.IO.Path.GetFullPath |> 
> SpiralFileSystem.normalize_path
>         let fileDir = fullPath |> System.IO.Path.GetDirectoryName
>         let fileName = fullPath |> System.IO.Path.GetFileNameWithoutExtension
>         let! code = fullPath |> SpiralFileSystem.read_all_text_async
> 
>         // let stream, disposable = fileDir |> FileSystem.watchDirectory (fun _ 
> -> true)
>         // use _ = disposable
> 
>         let struct (token, disposable) = SpiralThreading.new_disposable_token 
> cancellationToken
>         use _ = disposable
> 
>         let outputFileName =
>             match backend with
>             | Gleam -> $"{fileName}.gleam"
>             | Fsharp -> $"{fileName}.fsx"
>             | Python -> $"{fileName}.py"
>             | Cpp -> $"{fileName}.cpp"
> 
>         // let outputContentSeq =
>         //     stream
>         //     |> FSharp.Control.AsyncSeq.chooseAsync (function
>         //         | _, (FileSystem.FileSystemChange.Changed (path, Some text))
>         //             when (path |> System.IO.Path.GetFileName) = 
> outputFileName
>         //             ->
>         //                 // fileDir </> path |> 
> SpiralFileSystem.read_all_text_retry_async
>         //                 text |> Some |> Async.init
>         //         | _ -> None |> Async.init
>         //     )
>         //     |> FSharp.Control.AsyncSeq.map (fun content ->
>         //         Some (content |> SpiralSm.replace "\r\n" "\n"), None
>         //     )
> 
>         let printErrorData (data : {| uri : string; errors : RString list |}) =
>             let fileName = data.uri |> System.IO.Path.GetFileName
>             let errors =
>                 data.errors
>                 |> List.map snd
>                 |> SpiralSm.concat "\n"
>             $"{fileName}:\n{errors}"
> 
> 
>         let port = port |> Option.defaultWith getCompilerPort
>         // let! serverPort, errors, ct, disposable = awaitCompiler port (Some 
> token)
>         let serverPort = port
>         // use _ = disposable
> 
>         let errorsSeq =
>             server1.errors
>             |> FSharp.Control.AsyncSeq.choose (fun error ->
>                 match error with
>                 | FatalError message ->
>                     Some (message, error)
>                 | TracedError data ->
>                     Some (data.message, error)
>                 | PackageErrors data when data.errors |> List.isEmpty |> not ->
>                     Some (data |> printErrorData, error)
>                 | TokenizerErrors data when data.errors |> List.isEmpty |> not 
> ->
>                     Some (data |> printErrorData, error)
>                 | ParserErrors data when data.errors |> List.isEmpty |> not ->
>                     Some (data |> printErrorData, error)
>                 | TypeErrors data when data.errors |> List.isEmpty |> not ->
>                     Some (data |> printErrorData, error)
>                 | _ -> None
>             )
>             |> FSharp.Control.AsyncSeq.map (fun (message, error) ->
>                 None, Some (message, error)
>             )
> 
>         let timerSeq =
>             500
>             |> FSharp.Control.AsyncSeq.intervalMs
>             |> FSharp.Control.AsyncSeq.map (fun _ -> None, None)
> 
>         let compilerEvent = Event<option<string> * option<string * 
> ClientErrorsRes>> ()
>         // let disposable' = connection.On<string> ("ServerToClientMsg", 
> event.Trigger)
>         let outputContentSeq =
>             FSharp.Control.AsyncSeq.unfoldAsync
>                 (fun () -> async {
>                     let! msg = compilerEvent.Publish |> Async.AwaitEvent
>                     trace Verbose (fun () -> $"Supervisor.buildFile / 
> outputContentSeq unfoldAsync / msg: %A{msg}") _locals
>                     return Some (msg, ())
>                 })
>                 ()
> 
>         let compilerEvent2 = Event<option<string> * (string * ClientErrorsRes) 
> list * int> ()
>         // let disposable' = connection.On<string> ("ServerToClientMsg", 
> event.Trigger)
>         let outputContentSeq2 =
>             FSharp.Control.AsyncSeq.unfoldAsync
>                 (fun () -> async {
>                     let! msg = compilerEvent2.Publish |> Async.AwaitEvent
>                     trace Verbose (fun () -> $"Supervisor.buildFile / 
> outputContentSeq2 unfoldAsync / msg: %A{msg}") _locals
>                     return Some (msg, ())
>                 })
>                 ()
> 
>         let outputSeq =
>             [[ outputContentSeq; errorsSeq; timerSeq ]]
>             // [[ errorsSeq; timerSeq ]]
>             |> FSharp.Control.AsyncSeq.mergeAll
> 
>         let! outputChild =
>             ((None, [[]], 0), outputSeq)
>             ||> FSharp.Control.AsyncSeq.scan (
>                 fun (outputContentResult, errors, typeErrorCount) 
> (outputContent, error) ->
>                     trace Verbose (fun () -> $"Supervisor.buildFile / 
> AsyncSeq.scan / outputContent:\n'{outputContent |> Option.map 
> (SpiralSm.ellipsis_end 1500)} / errors: {errors |> serializeObj} / 
> outputContentResult: {outputContentResult} / typeErrorCount: {typeErrorCount} / 
> retry: {retry} / error: {error} / path: {path}'") _locals
>                     match outputContent, error with
>                     | Some outputContent, None -> Some outputContent, errors, 
> typeErrorCount
>                     | None, Some (
>                         _,
>                         FatalError "File main has a type error somewhere in its 
> path."
>                         ) ->
>                         outputContentResult, errors, typeErrorCount + 1
>                     | None, Some error -> outputContentResult, error :: errors, 
> typeErrorCount
>                     | None, None when typeErrorCount >= 1 ->
>                         outputContentResult, errors, typeErrorCount + 1
>                     | _ -> outputContentResult, errors, typeErrorCount
>             )
>             |> FSharp.Control.AsyncSeq.takeWhileInclusive (fun (outputContent, 
> errors, typeErrorCount) ->
>                 trace
>                     Verbose
>                     (fun () -> $"Supervisor.buildFile / takeWhileInclusive / 
> outputContent:\n'{outputContent |> Option.map (SpiralSm.ellipsis_end 1500)}' / 
> errors: {errors |> serializeObj} / typeErrorCount: {typeErrorCount} / retry: 
> {retry} / path: {path}")
>                     _locals
>     #if INTERACTIVE
>                 let errorWait = 1
>     #else
>                 let errorWait = 1
>     #endif
>                 match outputContent, errors with
>                 | None, [[]] when typeErrorCount > errorWait -> false
>                 | _, [[ message, TypeErrors errors ]] ->
>                     compilerEvent.Trigger (None, Some (message, TypeErrors 
> errors))
>                     trace Verbose (fun () -> $"Supervisor.buildFile / 
> takeWhileInclusive / TypeErrors trigger") _locals
>                     false
>                 | None, [[]] -> true
>                 | _ -> false
>             )
>             |> FSharp.Control.AsyncSeq.tryLast
>             // |> Async.withCancellationToken ct
>             |> Async.catch
>             |> Async.runWithTimeoutAsync timeout
>             |> Async.StartChild
> 
>         // do! Async.Sleep 60
> 
>         let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> 
> SpiralFileSystem.new_file_uri
> 
>         trace Verbose (fun () -> $"Supervisor.buildFile / fullPathUri: 
> %A{fullPathUri}") (fun () -> "")
> 
>         // let fileOpenObj = {| FileOpen = {| uri = fullPathUri; spiText = code 
> |} |}
> 
>         // let! _fileOpenResult = fileOpenObj |> sendObj serverPort
>         let fileOpenArgs = {| uri = fullPathUri; spiText = code |}
>         let! _fileOpenResult =
>             server1.job_null (server1.supervisor *<+ SupervisorReq.FileOpen 
> fileOpenArgs)
>             |> Async.AwaitTask
>             |> Async.runWithTimeoutAsync 60000
>             |> Async.map Option.get
>         trace Verbose (fun () -> $"Supervisor.buildFile / _fileOpenResult: 
> %A{_fileOpenResult}") (fun () -> "")
> 
>         // let! _fileOpenResult = fileOpenObj |> sendObj serverPort
> 
>         // do! Async.Sleep 60
> 
>         let backendId =
>             match backend with
>             | Gleam -> "Gleam"
>             | Fsharp -> "Fsharp"
>             | Python -> "Python + Cuda"
>             | Cpp -> "Cpp + Cuda"
>         // let buildFileObj = {| BuildFile = {| uri = fullPathUri; backend = 
> backendId |} |}
> 
>         // let backend = Supervisor.Fsharp
>         let buildFileArgs = {| uri = fullPathUri; backend = backendId |}
>         let buildFileResultAsync =
>             server1.job_val (fun res -> server1.supervisor *<+ 
> SupervisorReq.BuildFile(buildFileArgs,res))
>             |> Async.AwaitTask
>             |> Async.runWithTimeoutAsync timeout
>             |> Async.map Option.get
> 
>         let buildFileResultAsync = async {
>             let! buildFileResult = buildFileResultAsync
>             let buildFileResult =
>                 if buildFileResult = "" || buildFileResult = null
>                 then None
>                 else buildFileResult |> SpiralSm.replace "\r\n" "\n" |> Some
>             trace Verbose (fun () -> $"Supervisor.buildFile / buildFileResult: 
> %A{buildFileResult}") (fun () -> "")
>             if buildFileResult.IsSome then
>                 compilerEvent2.Trigger (buildFileResult, [[]], 0)
>             return buildFileResult, [[]], 0
>         }
> 
>         let resultAsync =
>             outputChild
>             |> Async.map (fun x ->
>                 trace Verbose (fun () -> $"Supervisor.buildFile / outputChild / 
> x: %A{x}") _locals
>                 match x with
>                 | Some (Ok (Some (outputCode, errors, typeErrorCount))) ->
>                     let x =
>                         match errors with
>                         | [[ message, TypeErrors errors ]] ->
>                             trace Verbose (fun () -> $"Supervisor.buildFile / 
> outputChild |> Async.map") _locals
>                             compilerEvent2.Trigger (None, [[ message, TypeErrors
> errors ]], 0)
>                             trace Verbose (fun () -> $"Supervisor.buildFile / 
> outputChild |> Async.map") _locals
>                         | _ -> ()
>                     outputCode, errors |> List.distinct |> List.rev, 
> typeErrorCount
>                 | Some (Error ex) ->
>                     trace Critical (fun () -> $"Supervisor.buildFile / error: 
> {ex |> SpiralSm.format_exception} / retry: {retry}") _locals
>                     None, [[]], 0
>                 | _ -> None, [[]], 0
>             )
> 
>         trace Verbose (fun () -> $"Supervisor.buildFile / before result: 
> %A{()}") (fun () -> "")
> 
>         // let resultSeq =
>         //     [[| buildFileResultAsync; resultAsync |]]
>         //     |> FSharp.Control.AsyncSeq.ofSeqAsync
> 
> 
>         let buildFileResultSeq = [[| buildFileResultAsync |]] |> 
> FSharp.Control.AsyncSeq.ofSeqAsync
>         let resultSeq = [[| resultAsync |]] |> 
> FSharp.Control.AsyncSeq.ofSeqAsync
> 
>         let resultSeq =
>             [[ outputContentSeq2; buildFileResultSeq; resultSeq ]]
>             |> FSharp.Control.AsyncSeq.mergeAll
> 
>         let! buildFileResult, result, typeErrorCount =
>             resultSeq
>             // |> FSharp.Control.AsyncSeq.collect (Array.singleton >> 
> FSharp.Control.AsyncSeq.ofSeq)
>             |> FSharp.Control.AsyncSeq.collect (fun x ->
>                 trace Verbose (fun () -> $"Supervisor.buildFile / ofSeqAsync / 
> x: %A{x}") _locals
>                 match x with
>                 | Some _, _, _ as x -> [[| x |]]
>                 | _, _ :: _, _ as x -> [[| x |]]
>                 | _ -> [[||]]
>                 |> FSharp.Control.AsyncSeq.ofSeq
>             )
>             |> FSharp.Control.AsyncSeq.tryFirst
>             |> Async.map Option.get
> 
>         trace Verbose (fun () -> $"Supervisor.buildFile / result: %A{result} / 
> buildFileResult: %A{buildFileResult} / typeErrorCount: {typeErrorCount}") (fun 
> () -> "")
> 
>         match buildFileResult with
>         // | None when typeErrorCount > 0 && retry = 0 ->
>         //     trace Verbose (fun () -> $"Supervisor.buildFile / result: 
> {result} / retry: {retry} / typeErrorCount: {typeErrorCount} / fileDir: 
> {fileDir} / targetDir: {targetDir}") _locals
>         //     return! 루프 (retry + 1)
>         | _ ->
>             let targetDir = workspaceRoot </> "target"
>             trace Verbose (fun () -> $"Supervisor.buildFile / retry: {retry} / 
> typeErrorCount: {typeErrorCount} / fileDir: {fileDir} / targetDir: {targetDir}")
> _locals
>             if fileDir |> SpiralSm.starts_with targetDir then
>                 let fileDirUri = fileDir |> SpiralFileSystem.normalize_path |> 
> SpiralFileSystem.new_file_uri
> 
>                 // let fileDeleteObj = {| FileDelete = {| uris = [[| fileDirUri 
> |]] |} |}
>                 // let! _fileDeleteResult = fileDeleteObj |> sendObj serverPort
>                 let fileDeleteArgs = {| uris = [[| fileDirUri |]] |}
>                 let! _fileDeleteResult =
>                     server1.job_null (server1.supervisor *<+ 
> SupervisorReq.FileDelete fileDeleteArgs)
>                     |> Async.AwaitTask
>                 ()
> 
>             let outputPath = fileDir </> outputFileName
>             return outputPath, buildFileResult, result
>     }
>     루프 0
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### SpiralInput
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type SpiralInput =
>     | Spi of string * string option
>     | Spir of string
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### persistCode
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let persistCode (input: {| backend : Backend option; input: SpiralInput; 
> packages: string [[]] |}) = async {
>     let targetDir = workspaceRoot </> "target/spiral_Eval"
> 
>     let packagesDir = targetDir </> "packages"
> 
>     let hashHex = $"%A{input.backend}%A{input.input}" |> SpiralCrypto.hash_text
> 
>     let packageDir = packagesDir </> hashHex
> 
>     let packageDir =
>         if input.backend = Some Gleam
>         then packageDir </> "src"
>         else packageDir
> 
>     packageDir |> System.IO.Directory.CreateDirectory |> ignore
> 
>     let moduleName = "main"
> 
>     let spirModule, spiModule =
>         match input.input with
>         | Spi (_spi, Some _spir) -> true, true
>         | Spi (_spi, None) -> false, true
>         | Spir _spir -> true, false
>         |> fun (spir, spi) ->
>             (if spir then $"{moduleName}_real*-" else ""),
>             if spi then moduleName else ""
> 
>     let libLinkTargetPath = workspaceRoot </> "../spiral/lib/spiral"
>     let libLinkPath = packageDir </> "spiral"
> 
>     let packagesModule =
>         input.packages
>         |> Array.map (fun package ->
>             let path = workspaceRoot </> package
>             let packageName = path |> System.IO.Path.GetFileName
>             let libLinkPath = packageDir </> packageName
>             libLinkPath |> SpiralFileSystem.link_directory path
>             $"{packageName}-"
>         )
>         |> String.concat "\n    "
> 
>     let packageDir' =
>         if input.packages |> Array.isEmpty
>         then workspaceRoot </> "../spiral/lib"
>         else
>             libLinkPath |> SpiralFileSystem.link_directory libLinkTargetPath
>             packageDir
> 
>     let spiprojPath = packageDir </> "package.spiproj"
>     let spiprojCode =
>         $"""packageDir: {packageDir'}
> packages:
>     |core-
>     spiral-
>     {packagesModule}
> modules:
>     {spirModule}
>     {spiModule}
> """
>     do! spiprojCode |> SpiralFileSystem.write_all_text_exists spiprojPath
> 
>     let spirPath = packageDir </> $"{moduleName}_real.spir"
>     let spiPath = packageDir </> $"{moduleName}.spi"
> 
>     let spirCode, spiCode =
>         match input.input with
>         | Spi (spi, Some spir) -> Some spir, Some spi
>         | Spi (spi, None) -> None, Some spi
>         | Spir spir -> Some spir, None
> 
>     match spirCode with
>     | Some spir -> do! spir |> SpiralFileSystem.write_all_text_exists spirPath
>     | None -> ()
>     match spiCode with
>     | Some spi -> do! spi |> SpiralFileSystem.write_all_text_exists spiPath
>     | None -> ()
> 
>     let spiralPath =
>         match input.input with
>         | Spi _ -> spiPath
>         | Spir _ -> spirPath
>     match input.backend with
>     | None -> return spiralPath, None
>     | Some backend ->
>         let outputFileName =
>             let fileName =
>                 match input.input with
>                 | Spi _ -> moduleName
>                 | Spir _ -> $"{moduleName}_real"
>             match backend with
>             | Gleam -> $"{fileName}.gleam"
>             | Fsharp -> $"{fileName}.fsx"
>             | Python -> $"{fileName}.py"
>             | Cpp -> $"{fileName}.cpp"
>         let outputPath = packageDir </> outputFileName
>         if outputPath |> System.IO.File.Exists |> not
>         then return spiralPath, None
>         else
>             let! oldCode = spiralPath |> SpiralFileSystem.read_all_text_async
>             if oldCode <> (spiCode |> Option.defaultValue (spirCode |> 
> Option.defaultValue ""))
>             then return spiralPath, None
>             else
>                 let! outputCode = outputPath |> 
> SpiralFileSystem.read_all_text_async
>                 return spiralPath, Some (outputPath, outputCode |> 
> SpiralSm.replace "\r\n" "\n")
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### buildCode
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let buildCode backend packages isCache timeout cancellationToken input = async {
>     let! mainPath, outputCache =
>         persistCode {| input = input; backend = Some backend; packages = 
> packages |}
>     match outputCache with
>     | Some (outputPath, outputCode) when isCache -> return mainPath, 
> (outputPath, Some outputCode), [[]]
>     | _ ->
>         let! outputPath, outputCode, errors = mainPath |> buildFile backend 
> timeout None cancellationToken
>         return mainPath, (outputPath, outputCode), errors
> }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> SpiralTrace.TraceLevel.US0_0 |> set_trace_level
> """inl app () =
>     console.write_line "text"
>     1i32
> 
> inl main () =
>     app
>     |> dyn
>     |> ignore
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 20000 None
> |> Async.runWithTimeout 21000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         Some """let rec closure1 () () : unit =
>     let v0 : (string -> unit) = System.Console.WriteLine
>     let v1 : string = "text"
>     v0 v1
> and closure0 () () : int32 =
>     let v3 : unit = ()
>     let v4 : (unit -> unit) = closure1()
>     let v5 : unit = (fun () -> v4 (); v3) ()
>     1
> let v0 : (unit -> int32) = closure0()
> ()
> """,
>         [[]]
>     )
> )
> 
> ── [ 2.61s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:54 v #1 Supervisor.buildFile / fullPathUri: 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd043
> 17d5605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi"
> │ 00:00:54 v #2 Supervisor.buildFile / _fileOpenResult: 
> <null>
> │ 00:00:54 v #3 Supervisor.buildFile / before result: ()
> │ 00:00:54 v #4 Supervisor.buildFile / takeWhileInclusive 
> / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c
> 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi
> │ 00:00:54 v #7 Supervisor.buildFile / AsyncSeq.scan / 
> outputContent:
> │ ' / errors: [] / outputContentResult:  / typeErrorCount: 0 / 
> retry: 0 / error:  / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c
> 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi'
> │ 00:00:54 v #8 Supervisor.buildFile / takeWhileInclusive 
> / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c
> 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi
> │ 00:00:54 v #540 Supervisor.buildFile / AsyncSeq.scan / 
> outputContent:
> │ ' / errors: [] / outputContentResult:  / typeErrorCount: 0 / 
> retry: 0 / error:  / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c
> 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi'
> │ 00:00:54 v #541 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c
> 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi
> │ 00:00:55 v #965 Supervisor.buildFile / AsyncSeq.scan / 
> outputContent:
> │ ' / errors: [] / outputContentResult:  / typeErrorCount: 0 / 
> retry: 0 / error:  / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c
> 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi'
> │ 00:00:55 v #966 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c
> 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi
> │ 00:00:55 v #1140 Supervisor.buildFile / AsyncSeq.scan / 
> outputContent:
> │ ' / errors: [] / outputContentResult:  / typeErrorCount: 0 / 
> retry: 0 / error:  / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c
> 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi'
> │ 00:00:55 v #1141 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c
> 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi
> │ 00:00:56 v #1320 Supervisor.buildFile / AsyncSeq.scan / 
> outputContent:
> │ ' / errors: [] / outputContentResult:  / typeErrorCount: 0 / 
> retry: 0 / error:  / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c
> 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi'
> │ 00:00:56 v #1321 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c
> 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi
> │ 00:00:56 v #1322 Supervisor.buildFile / buildFileResult:
> Some
> │   "let rec closure1 () () : unit =
> │     let v0 : (string -> unit) = System.Console.WriteLine
> │     let v1 : string = "text"
> │     v0 v1
> │ and closure0 () () : int32 =
> │     let v3 : unit = ()
> │     let v4 : (unit -> unit) = closure1()
> │     let v5 : unit = (fun () -> v4 (); v3) ()
> │     1
> │ let v0 : (unit -> int32) = closure0()
> │ ()
> │ "
> │ 00:00:56 v #1323 Supervisor.buildFile / 
> outputContentSeq2 unfoldAsync / msg: (Some
> │    "let rec closure1 () () : unit =
> │     let v0 : (string -> unit) = System.Console.WriteLine
> │     let v1 : string = "text"
> │     v0 v1
> │ and closure0 () () : int32 =
> │     let v3 : unit = ()
> │     let v4 : (unit -> unit) = closure1()
> │     let v5 : unit = (fun () -> v4 (); v3) ()
> │     1
> │ let v0 : (unit -> int32) = closure0()
> │ ()
> │ ",
> │  [], 0)
> │ 00:00:56 v #1324 Supervisor.buildFile / ofSeqAsync / x: 
> (Some
> │    "let rec closure1 () () : unit =
> │     let v0 : (string -> unit) = System.Console.WriteLine
> │     let v1 : string = "text"
> │     v0 v1
> │ and closure0 () () : int32 =
> │     let v3 : unit = ()
> │     let v4 : (unit -> unit) = closure1()
> │     let v5 : unit = (fun () -> v4 (); v3) ()
> │     1
> │ let v0 : (unit -> int32) = closure0()
> │ ()
> │ ",
> │  [], 0)
> │ 00:00:56 v #1325 Supervisor.buildFile / result: [] / 
> buildFileResult: Some
> │   "let rec closure1 () () : unit =
> │     let v0 : (string -> unit) = System.Console.WriteLine
> │     let v1 : string = "text"
> │     v0 v1
> │ and closure0 () () : int32 =
> │     let v3 : unit = ()
> │     let v4 : (unit -> unit) = closure1()
> │     let v5 : unit = (fun () -> v4 (); v3) ()
> │     1
> │ let v0 : (unit -> int32) = closure0()
> │ ()
> │ " / typeErrorCount: 0
> │ 00:00:56 v #1326 Supervisor.buildFile / retry: 0 / 
> typeErrorCount: 0 / fileDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c
> 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6 / targetDir: 
> /home/runner/work/polyglot/polyglot/target
> │ Some
> │   (Some
> │      "let rec closure1 () () : unit =
> │     let v0 : (string -> unit) = System.Console.WriteLine
> │     let v1 : string = "text"
> │     v0 v1
> │ and closure0 () () : int32 =
> │     let v3 : unit = ()
> │     let v4 : (unit -> unit) = closure1()
> │     let v5 : unit = (fun () -> v4 (); v3) ()
> │     1
> │ let v0 : (unit -> int32) = closure0()
> │ ()
> │ ",
> │    [])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """
> inl init_series start end inc =
>     inl total : f64 = conv ((end - start) / inc) + 1
>     listm.init total (conv >> (*) inc >> (+) start) : list f64
> 
> type integration = (f64 -> f64) -> f64 -> f64 -> f64
> 
> inl integral dt : integration =
>     fun f a b =>
>         init_series (a + dt / 2) (b - dt / 2) dt
>         |> listm.map (f >> (*) dt)
>         |> listm.fold (+) 0
> 
> inl main () =
>     integral 0.1 (fun x => x ** 2) 0 1
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 10000 None
> |> Async.runWithTimeout 11000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         Some "0.3325000000000001\n",
>         [[]]
>     )
> )
> 
> ── [ 343.78ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:00:56 v #1344 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d
> 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi
> │ 00:00:56 v #1345 Supervisor.buildFile / AsyncSeq.scan / 
> outputContent:
> │ ' / errors: [] / outputContentResult:  / typeErrorCount: 0 / 
> retry: 0 / error:  / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d
> 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi'
> │ 00:00:56 v #1346 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d
> 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi
> │ 00:00:56 v #1347 Supervisor.buildFile / fullPathUri: 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414d
> e2a2a92d9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi"
> │ 00:00:56 v #1348 Supervisor.buildFile / _fileOpenResult:
> <null>
> │ 00:00:56 v #1349 Supervisor.buildFile / before result: 
> ()
> │ 00:00:57 v #1587 Supervisor.buildFile / buildFileResult:
> Some "0.3325000000000001
> │ "
> │ 00:00:57 v #1588 Supervisor.buildFile / 
> outputContentSeq2 unfoldAsync / msg: (Some "0.3325000000000001
> │ ", [], 0)
> │ 00:00:57 v #1589 Supervisor.buildFile / ofSeqAsync / x: 
> (Some "0.3325000000000001
> │ ", [], 0)
> │ 00:00:57 v #1590 Supervisor.buildFile / result: [] / 
> buildFileResult: Some "0.3325000000000001
> │ " / typeErrorCount: 0
> │ 00:00:57 v #1591 Supervisor.buildFile / retry: 0 / 
> typeErrorCount: 0 / fileDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d
> 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db / targetDir: 
> /home/runner/work/polyglot/polyglot/target
> │ Some (Some "0.3325000000000001
> │ ", [])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """
> inl init_series start end inc =
>     inl total : f64 = conv ((end - start) / inc) + 1
>     listm.init total (conv >> (*) inc >> (+) start) : list f64
> 
> type integration = (f64 -> f64) -> f64 -> f64 -> f64
> 
> inl integral dt : integration =
>     fun f a b =>
>         init_series (a + dt / 2) (b - dt / 2) dt
>         |> listm.map (f >> (*) dt)
>         |> listm.fold (+) 0
> 
> inl main () =
>     integral 0.1 (fun x => x ** 2) 0 1
> """
> |> fun code -> Spi (code, None)
> |> buildCode Python [[||]] false 10000 None
> |> Async.runWithTimeout 11000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         Some @"kernels_aux = r""""""
> // The types of these two will be replaced during compilation by the Spiral code
> generator. 
> // It matches on `using default_int = ` and `;` with the inner part being 
> replaced so the form should be kept as is. 
> // The two statements need to begin at the start of a line.
> using default_int = int;
> using default_uint = unsigned int;
> 
> #ifndef __NVRTC__
> // NVRTC has these includes by default so they need to be left out if it is used
> as the compiler.
> #include <new>
> #include <assert.h>
> #include <stdio.h>
> #endif
> 
> // For error checking on the host.
> #define gpuErrchk(ans) { gpuAssert((ans), __FILE__, __LINE__); }
> template <typename T> inline __device__ void destroy(T& obj) { obj.~T(); }
> inline void gpuAssert(cudaError error, const char *file, int line, bool 
> abort=true) {
>     if (error != cudaSuccess) {
>         fprintf(stderr, ""GPUassert: %s %s %d\n"", cudaGetErrorString(error), 
> file, line);
>         if (abort) exit(error);
>     }
> }
> 
> template <typename el>
> struct sptr // Shared pointer for the Spiral datatypes. They have to have the 
> refc field inside them to work.
> {
>     el* base;
> 
>     __device__ sptr() : base(nullptr) {}
>     __device__ sptr(el* ptr) : base(ptr) { this->base->refc++; }
> 
>     __device__ ~sptr()
>     {
>         if (this->base != nullptr && --this->base->refc == 0)
>         {
>             delete this->base;
>             this->base = nullptr;
>         }
>     }
> 
>     __device__ sptr(sptr& x)
>     {
>         this->base = x.base;
>         this->base->refc++;
>     }
> 
>     __device__ sptr(sptr&& x)
>     {
>         this->base = x.base;
>         x.base = nullptr;
>     }
> 
>     __device__ sptr& operator=(sptr& x)
>     {
>         if (this->base != x.base)
>         {
>             delete this->base;
>             this->base = x.base;
>             this->base->refc++;
>         }
>         return *this;
>     }
> 
>     __device__ sptr& operator=(sptr&& x)
>     {
>         if (this->base != x.base)
>         {
>             delete this->base;
>             this->base = x.base;
>             x.base = nullptr;
>         }
>         return *this;
>     }
> };
> 
> template <typename el>
> struct csptr : public sptr<el>
> { // Shared pointer for closures specifically.
>     using sptr<el>::sptr;
>     template <typename... Args>
>     __device__ auto operator()(Args... args) -> 
> decltype(this->base->operator()(args...))
>     {
>         return this->base->operator()(args...);
>     }
> };
> 
> template <typename el, default_int max_length>
> struct static_array
> {
>     el ptr[[max_length]];
>     __device__ el& operator[[]](default_int i) {
>         assert(""The index has to be in range."" && 0 <= i && i < max_length);
>         return this->ptr[[i]];
>     }
> };
> 
> template <typename el, default_int max_length>
> struct static_array_list
> {
>     default_int length{ 0 };
>     el ptr[[max_length]];
> 
>     __device__ el& operator[[]](default_int i) {
>         assert(""The index has to be in range."" && 0 <= i && i < this->length);
>         return this->ptr[[i]];
>     }
>     __device__ void push(el& x) {
>         ptr[[this->length++]] = x;
>         assert(""The array after pushing should not be greater than max 
> length."" && this->length <= max_length);
>     }
>     __device__ void push(el&& x) {
>         ptr[[this->length++]] = std::move(x);
>         assert(""The array after pushing should not be greater than max 
> length."" && this->length <= max_length);
>     }
>     __device__ el pop() {
>         assert(""The array before popping should be greater than 0."" && 0 < 
> this->length);
>         auto x = ptr[[--this->length]];
>         ptr[[this->length]].~el();
>         new (&ptr[[this->length]]) el();
>         return x;
>     }
>     // Should be used only during initialization.
>     __device__ void unsafe_set_length(default_int i) {
>         assert(""The new length should be in range."" && 0 <= i && i <= 
> max_length);
>         this->length = i;
>     }
> };
> 
> template <typename el, default_int max_length>
> struct dynamic_array_base
> {
>     int refc{ 0 };
>     el* ptr;
> 
>     __device__ dynamic_array_base() : ptr(new el[[max_length]]) {}
>     __device__ ~dynamic_array_base() { delete[[]] this->ptr; }
> 
>     __device__ el& operator[[]](default_int i) {
>         assert(""The index has to be in range."" && 0 <= i && i < this->length);
>         return this->ptr[[i]];
>     }
> };
> 
> template <typename el, default_int max_length>
> struct dynamic_array
> {
>     sptr<dynamic_array_base<el, max_length>> ptr;
> 
>     __device__ dynamic_array() = default;
>     __device__ dynamic_array(bool t) : ptr(new dynamic_array_base<el, 
> max_length>()) {}
>     __device__ el& operator[[]](default_int i) {
>         return this->ptr.base->operator[[]](i);
>     }
> };
> 
> template <typename el, default_int max_length>
> struct dynamic_array_list_base
> {
>     int refc{ 0 };
>     default_int length{ 0 };
>     el* ptr;
> 
>     __device__ dynamic_array_list_base() : ptr(new el[[max_length]]) {}
>     __device__ dynamic_array_list_base(default_int l) : ptr(new 
> el[[max_length]]) { this->unsafe_set_length(l); }
>     __device__ ~dynamic_array_list_base() { delete[[]] this->ptr; }
> 
>     __device__ el& operator[[]](default_int i) {
>         assert(""The index has to be in range."" && 0 <= i && i < this->length);
>         return this->ptr[[i]];
>     }
>     __device__ void push(el& x) {
>         ptr[[this->length++]] = x;
>         assert(""The array after pushing should not be greater than max 
> length."" && this->length <= max_length);
>     }
>     __device__ void push(el&& x) {
>         ptr[[this->length++]] = std::move(x);
>         assert(""The array after pushing should not be greater than max 
> length."" && this->length <= max_length);
>     }
>     __device__ el pop() {
>         assert(""The array before popping should be greater than 0."" && 0 < 
> this->length);
>         auto x = ptr[[--this->length]];
>         ptr[[this->length]].~el();
>         new (&ptr[[this->length]]) el();
>         return x;
>     }
>     // Should be used only during initialization.
>     __device__ void unsafe_set_length(default_int i) {
>         assert(""The new length should be in range."" && 0 <= i && i <= 
> max_length);
>         this->length = i;
>     }
> };
> 
> template <typename el, default_int max_length>
> struct dynamic_array_list
> {
>     sptr<dynamic_array_list_base<el, max_length>> ptr;
> 
>     __device__ dynamic_array_list() = default;
>     __device__ dynamic_array_list(default_int l) : ptr(new 
> dynamic_array_list_base<el, max_length>(l)) {}
> 
>     __device__ el& operator[[]](default_int i) {
>         return this->ptr.base->operator[[]](i);
>     }
>     __device__ void push(el& x) {
>         this->ptr.base->push(x);
>     }
>     __device__ void push(el&& x) {
>         this->ptr.base->push(std::move(x));
>     }
>     __device__ el pop() {
>         return this->ptr.base->pop();
>     }
>     // Should be used only during initialization.
>     __device__ void unsafe_set_length(default_int i) {
>         this->ptr.base->unsafe_set_length(i);
>     }
>     __device__ default_int length_() {
>         return this->ptr.base->length;
>     }
> };
> """"""
> class static_array():
>     def __init__(self, length):
>         self.ptr = [[]]
>         for _ in range(length):
>             self.ptr.append(None)
> 
>     def __getitem__(self, index):
>         assert 0 <= index < len(self.ptr), ""The get index needs to be in 
> range.""
>         return self.ptr[[index]]
>     
>     def __setitem__(self, index, value):
>         assert 0 <= index < len(self.ptr), ""The set index needs to be in 
> range.""
>         self.ptr[[index]] = value
> 
> class static_array_list(static_array):
>     def __init__(self, length):
>         super().__init__(length)
>         self.length = 0
> 
>     def __getitem__(self, index):
>         assert 0 <= index < self.length, ""The get index needs to be in range.""
>         return self.ptr[[index]]
>     
>     def __setitem__(self, index, value):
>         assert 0 <= index < self.length, ""The set index needs to be in range.""
>         self.ptr[[index]] = value
> 
>     def push(self,value):
>         assert (self.length < len(self.ptr)), ""The length before pushing has to
> be less than the maximum length of the array.""
>         self.ptr[[self.length]] = value
>         self.length += 1
> 
>     def pop(self):
>         assert (0 < self.length), ""The length before popping has to be greater 
> than 0.""
>         self.length -= 1
>         return self.ptr[[self.length]]
> 
>     def unsafe_set_length(self,i):
>         assert 0 <= i <= len(self.ptr), ""The new length has to be in range.""
>         self.length = i
> 
> class dynamic_array(static_array): 
>     pass
> 
> class dynamic_array_list(static_array_list):
>     def length_(self): return self.length
> 
> 
> kernels_main = r""""""
> """"""
> from main_auto import *
> kernels = kernels_aux + kernels_main
> import cupy as cp
> import numpy as np
> from dataclasses import dataclass
> from typing import NamedTuple, Union, Callable, Tuple
> i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = int; u32 = int; u64 =
> int; f32 = float; f64 = float; char = str; string = str
> cuda = False
> 
> 
> # fwd_dcls
> # types
> # functions
> # main_defs
> def main_body():
>     return 0.3325000000000001
> 
> def main():
>     r = main_body()
>     if cuda: cp.cuda.get_current_stream().synchronize() # This line is here so 
> the `__trap()` calls on the kernel aren't missed.
>     return r
> 
> if __name__ == '__main__': result = main(); None if result is None else 
> print(result)
> ",
>         [[]]
>     )
> )
> 
> ── [ 423.25ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:00:57 v #1609 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a4224c9f3d674d70
> fd56b6ecd3ae8c8ff3178a7124ae34f592336fef263568ea/main.spi
> │ 00:00:57 v #1610 Supervisor.buildFile / AsyncSeq.scan / 
> outputContent:
> │ ' / errors: [] / outputContentResult:  / typeErrorCount: 0 / 
> retry: 0 / error:  / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a4224c9f3d674d70
> fd56b6ecd3ae8c8ff3178a7124ae34f592336fef263568ea/main.spi'
> │ 00:00:57 v #1611 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a4224c9f3d674d70
> fd56b6ecd3ae8c8ff3178a7124ae34f592336fef263568ea/main.spi
> │ 00:00:57 v #1612 Supervisor.buildFile / fullPathUri: 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a4224c9f
> 3d674d70fd56b6ecd3ae8c8ff3178a7124ae34f592336fef263568ea/main.spi"
> │ 00:00:57 v #1613 Supervisor.buildFile / _fileOpenResult:
> <null>
> │ 00:00:57 v #1614 Supervisor.buildFile / before result: 
> ()
> │ 00:00:57 v #1854 Supervisor.buildFile / buildFileResult:
> Some
> │   "kernels_aux = r"""
> │ // The types of these two will be replaced during compilation
> by the Spiral code generator. 
> │ // It matches on `using default_int = ` and `;` with the 
> inner part being replaced so the form should be kept as is. 
> │ // The two statements need to begin at the start of a line.
> │ using default_int = int;
> │ using default_uint = unsigned int;
> │ 
> │ #ifndef __NVRTC__
> │ // NVRTC has these includes by default so they need to be 
> left out if it is used as the compiler.
> │ #include <new>
> │ #include <assert.h>
> │ #include <stdio.h>
> │ #endif
> │ 
> │ // For error checking on the host.
> │ #define gpuErrchk(ans) { gpuAssert((ans), __FILE__, 
> __LINE__); }
> │ template <typename T> inline __device__ void destroy(T& obj) 
> { obj.~T(); }
> │ inline void gpuAssert(cudaError error, const char *file, int 
> line, bool abort=true) {
> │     if (error != cudaSuccess) {
> │         fprintf(stderr, "GPUassert: %s %s %d\n", 
> cudaGetErrorString(error), file, line);
> │         if (abort) exit(error);
> │     }
> │ }
> │ 
> │ template <typename el>
> │ struct sptr // Shared pointer for the Spiral datatypes. They 
> have to have the refc field inside them to work.
> │ {
> │     el* base;
> │ 
> │     __device__ sptr() : base(nullptr) {}
> │     __device__ sptr(el* ptr) : base(ptr) { 
> this->base->refc++; }
> │ 
> │     __device__ ~sptr()
> │     {
> │         if (this->base != nullptr && --this->base->refc == 0)
> │         {
> │             delete this->base;
> │             this->base = nullptr;
> │         }
> │     }
> │ 
> │     __device__ sptr(sptr& x)
> │     {
> │         this->base = x.base;
> │         this->base->refc++;
> │     }
> │ 
> │     __device__ sptr(sptr&& x)
> │     {
> │         this->base = x.base;
> │         x.base = nullptr;
> │     }
> │ 
> │     __device__ sptr& operator=(sptr& x)
> │     {
> │         if (this->base != x.base)
> │         {
> │             delete this->base;
> │             this->base = x.base;
> │             this->base->refc++;
> │         }
> │         return *this;
> │     }
> │ 
> │     __device__ sptr& operator=(sptr&& x)
> │     {
> │         if (this->base != x.base)
> │         {
> │             delete this->base;
> │             this->base = x.base;
> │             x.base = nullptr;
> │         }
> │         return *this;
> │     }
> │ };
> │ 
> │ template <typename el>
> │ struct csptr : public sptr<el>
> │ { // Shared pointer for closures specifically.
> │     using sptr<el>::sptr;
> │     template <typename... Args>
> │     __device__ auto operator()(Args... args) -> 
> decltype(this->base->operator()(args...))
> │     {
> │         return this->base->operator()(args...);
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct static_array
> │ {
> │     el ptr[max_length];
> │     __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < max_length);
> │         return this->ptr[i];
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct static_array_list
> │ {
> │     default_int length{ 0 };
> │     el ptr[max_length];
> │ 
> │     __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │     __device__ void push(el& x) {
> │         ptr[this->length++] = x;
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __device__ void push(el&& x) {
> │         ptr[this->length++] = std::move(x);
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __device__ el pop() {
> │         assert("The array before popping should be greater 
> than 0." && 0 < this->length);
> │         auto x = ptr[--this->length];
> │         ptr[this->length].~el();
> │         new (&ptr[this->length]) el();
> │         return x;
> │     }
> │     // Should be used only during initialization.
> │     __device__ void unsafe_set_length(default_int i) {
> │         assert("The new length should be in range." && 0 <= i
> && i <= max_length);
> │         this->length = i;
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_base
> │ {
> │     int refc{ 0 };
> │     el* ptr;
> │ 
> │     __device__ dynamic_array_base() : ptr(new el[max_length])
> {}
> │     __device__ ~dynamic_array_base() { delete[] this->ptr; }
> │ 
> │     __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array
> │ {
> │     sptr<dynamic_array_base<el, max_length>> ptr;
> │ 
> │     __device__ dynamic_array() = default;
> │     __device__ dynamic_array(bool t) : ptr(new 
> dynamic_array_base<el, max_length>()) {}
> │     __device__ el& operator[](default_int i) {
> │         return this->ptr.base->operator[](i);
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_list_base
> │ {
> │     int refc{ 0 };
> │     default_int length{ 0 };
> │     el* ptr;
> │ 
> │     __device__ dynamic_array_list_base() : ptr(new 
> el[max_length]) {}
> │     __device__ dynamic_array_list_base(default_int l) : 
> ptr(new el[max_length]) { this->unsafe_set_length(l); }
> │     __device__ ~dynamic_array_list_base() { delete[] 
> this->ptr; }
> │ 
> │     __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │     __device__ void push(el& x) {
> │         ptr[this->length++] = x;
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __device__ void push(el&& x) {
> │         ptr[this->length++] = std::move(x);
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __device__ el pop() {
> │         assert("The array before popping should be greater 
> than 0." && 0 < this->length);
> │         auto x = ptr[--this->length];
> │         ptr[this->length].~el();
> │         new (&ptr[this->length]) el();
> │         return x;
> │     }
> │     // Should be used only during initialization.
> │     __device__ void unsafe_set_length(default_int i) {
> │         assert("The new length should be in range." && 0 <= i
> && i <= max_length);
> │         this->length = i;
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_list
> │ {
> │     sptr<dynamic_array_list_base<el, max_length>> ptr;
> │ 
> │     __device__ dynamic_array_list() = default;
> │     __device__ dynamic_array_list(default_int l) : ptr(new 
> dynamic_array_list_base<el, max_length>(l)) {}
> │ 
> │     __device__ el& operator[](default_int i) {
> │         return this->ptr.base->operator[](i);
> │     }
> │     __device__ void push(el& x) {
> │         this->ptr.base->push(x);
> │     }
> │     __device__ void push(el&& x) {
> │         this->ptr.base->push(std::move(x));
> │     }
> │     __device__ el pop() {
> │         return this->ptr.base->pop();
> │     }
> │     // Should be used only during initialization.
> │     __device__ void unsafe_set_length(default_int i) {
> │         this->ptr.base->unsafe_set_length(i);
> │     }
> │     __device__ default_int length_() {
> │         return this->ptr.base->length;
> │     }
> │ };
> │ """
> │ class static_array():
> │     def __init__(self, length):
> │         self.ptr = []
> │         for _ in range(length):
> │             self.ptr.append(None)
> │ 
> │     def __getitem__(self, index):
> │         assert 0 <= index < len(self.ptr), "The get index 
> needs to be in range."
> │         return self.ptr[index]
> │     
> │     def __setitem__(self, index, value):
> │         assert 0 <= index < len(self.ptr), "The set index 
> needs to be in range."
> │         self.ptr[index] = value
> │ 
> │ class static_array_list(static_array):
> │     def __init__(self, length):
> │         super().__init__(length)
> │         self.length = 0
> │ 
> │     def __getitem__(self, index):
> │         assert 0 <= index < self.length, "The get index needs
> to be in range."
> │         return self.ptr[index]
> │     
> │     def __setitem__(self, index, value):
> │         assert 0 <= index < self.length, "The set index needs
> to be in range."
> │         self.ptr[index] = value
> │ 
> │     def push(self,value):
> │         assert (self.length < len(self.ptr)), "The length 
> before pushing has to be less than the maximum length of the array."
> │         self.ptr[self.length] = value
> │         self.length += 1
> │ 
> │     def pop(self):
> │         assert (0 < self.length), "The length before popping 
> has to be greater than 0."
> │         self.length -= 1
> │         return self.ptr[self.length]
> │ 
> │     def unsafe_set_length(self,i):
> │         assert 0 <= i <= len(self.ptr), "The new length has 
> to be in range."
> │         self.length = i
> │ 
> │ class dynamic_array(static_array): 
> │     pass
> │ 
> │ class dynamic_array_list(static_array_list):
> │     def length_(self): return self.length
> │ 
> │ 
> │ kernels_main = r"""
> │ """
> │ from main_auto import *
> │ kernels = kernels_aux + kernels_main
> │ import cupy as cp
> │ import numpy as np
> │ from dataclasses import dataclass
> │ from typing import NamedTuple, Union, Callable, Tuple
> │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = 
> int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = str
> │ cuda = False
> │ 
> │ 
> │ # fwd_dcls
> │ # types
> │ # functions
> │ # main_defs
> │ def main_body():
> │     return 0.3325000000000001
> │ 
> │ def main():
> │     r = main_body()
> │     if cuda: cp.cuda.get_current_stream().synchronize() # 
> This line is here so the `__trap()` calls on the kernel aren't missed.
> │     return r
> │ 
> │ if __name__ == '__main__': result = main(); None if result is
> None else print(result)
> │ "
> │ 00:00:57 v #1855 Supervisor.buildFile / 
> outputContentSeq2 unfoldAsync / msg: (Some
> │    "kernels_aux = r"""
> │ // The types of these two will be replaced during compilation
> by the Spiral code generator. 
> │ // It matches on `using default_int = ` and `;` with the 
> inner part being replaced so the form should be kept as is. 
> │ // The two statements need to begin at the start of a line.
> │ using default_int = int;
> │ using default_uint = unsigned int;
> │ 
> │ #ifndef __NVRTC__
> │ // NVRTC has these includes by default so they need to be 
> left out if it is used as the compiler.
> │ #include <new>
> │ #include <assert.h>
> │ #include <stdio.h>
> │ #endif
> │ 
> │ // For error checking on the host.
> │ #define gpuErrchk(ans) { gpuAssert((ans), __FILE__, 
> __LINE__); }
> │ template <typename T> inline __device__ void destroy(T& obj) 
> { obj.~T(); }
> │ inline void gpuAssert(cudaError error, const char *file, int 
> line, bool abort=true) {
> │     if (error != cudaSuccess) {
> │         fprintf(stderr, "GPUassert: %s %s %d\n", 
> cudaGetErrorString(error), file, line);
> │         if (abort) exit(error);
> │     }
> │ }
> │ 
> │ template <typename el>
> │ struct sptr // Shared pointer for the Spiral datatypes. They 
> have to have the refc field inside them to work.
> │ {
> │     el* base;
> │ 
> │     __device__ sptr() : base(nullptr) {}
> │     __device__ sptr(el* ptr) : base(ptr) { 
> this->base->refc++; }
> │ 
> │     __device__ ~sptr()
> │     {
> │         if (this->base != nullptr && --this->base->refc == 0)
> │         {
> │             delete this->base;
> │             this->base = nullptr;
> │         }
> │     }
> │ 
> │     __device__ sptr(sptr& x)
> │     {
> │         this->base = x.base;
> │         this->base->refc++;
> │     }
> │ 
> │     __device__ sptr(sptr&& x)
> │     {
> │         this->base = x.base;
> │         x.base = nullptr;
> │     }
> │ 
> │     __device__ sptr& operator=(sptr& x)
> │     {
> │         if (this->base != x.base)
> │         {
> │             delete this->base;
> │             this->base = x.base;
> │             this->base->refc++;
> │         }
> │         return *this;
> │     }
> │ 
> │     __device__ sptr& operator=(sptr&& x)
> │     {
> │         if (this->base != x.base)
> │         {
> │             delete this->base;
> │             this->base = x.base;
> │             x.base = nullptr;
> │         }
> │         return *this;
> │     }
> │ };
> │ 
> │ template <typename el>
> │ struct csptr : public sptr<el>
> │ { // Shared pointer for closures specifically.
> │     using sptr<el>::sptr;
> │     template <typename... Args>
> │     __device__ auto operator()(Args... args) -> 
> decltype(this->base->operator()(args...))
> │     {
> │         return this->base->operator()(args...);
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct static_array
> │ {
> │     el ptr[max_length];
> │     __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < max_length);
> │         return this->ptr[i];
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct static_array_list
> │ {
> │     default_int length{ 0 };
> │     el ptr[max_length];
> │ 
> │     __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │     __device__ void push(el& x) {
> │         ptr[this->length++] = x;
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __device__ void push(el&& x) {
> │         ptr[this->length++] = std::move(x);
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __device__ el pop() {
> │         assert("The array before popping should be greater 
> than 0." && 0 < this->length);
> │         auto x = ptr[--this->length];
> │         ptr[this->length].~el();
> │         new (&ptr[this->length]) el();
> │         return x;
> │     }
> │     // Should be used only during initialization.
> │     __device__ void unsafe_set_length(default_int i) {
> │         assert("The new length should be in range." && 0 <= i
> && i <= max_length);
> │         this->length = i;
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_base
> │ {
> │     int refc{ 0 };
> │     el* ptr;
> │ 
> │     __device__ dynamic_array_base() : ptr(new el[max_length])
> {}
> │     __device__ ~dynamic_array_base() { delete[] this->ptr; }
> │ 
> │     __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array
> │ {
> │     sptr<dynamic_array_base<el, max_length>> ptr;
> │ 
> │     __device__ dynamic_array() = default;
> │     __device__ dynamic_array(bool t) : ptr(new 
> dynamic_array_base<el, max_length>()) {}
> │     __device__ el& operator[](default_int i) {
> │         return this->ptr.base->operator[](i);
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_list_base
> │ {
> │     int refc{ 0 };
> │     default_int length{ 0 };
> │     el* ptr;
> │ 
> │     __device__ dynamic_array_list_base() : ptr(new 
> el[max_length]) {}
> │     __device__ dynamic_array_list_base(default_int l) : 
> ptr(new el[max_length]) { this->unsafe_set_length(l); }
> │     __device__ ~dynamic_array_list_base() { delete[] 
> this->ptr; }
> │ 
> │     __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │     __device__ void push(el& x) {
> │         ptr[this->length++] = x;
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __device__ void push(el&& x) {
> │         ptr[this->length++] = std::move(x);
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __device__ el pop() {
> │         assert("The array before popping should be greater 
> than 0." && 0 < this->length);
> │         auto x = ptr[--this->length];
> │         ptr[this->length].~el();
> │         new (&ptr[this->length]) el();
> │         return x;
> │     }
> │     // Should be used only during initialization.
> │     __device__ void unsafe_set_length(default_int i) {
> │         assert("The new length should be in range." && 0 <= i
> && i <= max_length);
> │         this->length = i;
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_list
> │ {
> │     sptr<dynamic_array_list_base<el, max_length>> ptr;
> │ 
> │     __device__ dynamic_array_list() = default;
> │     __device__ dynamic_array_list(default_int l) : ptr(new 
> dynamic_array_list_base<el, max_length>(l)) {}
> │ 
> │     __device__ el& operator[](default_int i) {
> │         return this->ptr.base->operator[](i);
> │     }
> │     __device__ void push(el& x) {
> │         this->ptr.base->push(x);
> │     }
> │     __device__ void push(el&& x) {
> │         this->ptr.base->push(std::move(x));
> │     }
> │     __device__ el pop() {
> │         return this->ptr.base->pop();
> │     }
> │     // Should be used only during initialization.
> │     __device__ void unsafe_set_length(default_int i) {
> │         this->ptr.base->unsafe_set_length(i);
> │     }
> │     __device__ default_int length_() {
> │         return this->ptr.base->length;
> │     }
> │ };
> │ """
> │ class static_array():
> │     def __init__(self, length):
> │         self.ptr = []
> │         for _ in range(length):
> │             self.ptr.append(None)
> │ 
> │     def __getitem__(self, index):
> │         assert 0 <= index < len(self.ptr), "The get index 
> needs to be in range."
> │         return self.ptr[index]
> │     
> │     def __setitem__(self, index, value):
> │         assert 0 <= index < len(self.ptr), "The set index 
> needs to be in range."
> │         self.ptr[index] = value
> │ 
> │ class static_array_list(static_array):
> │     def __init__(self, length):
> │         super().__init__(length)
> │         self.length = 0
> │ 
> │     def __getitem__(self, index):
> │         assert 0 <= index < self.length, "The get index needs
> to be in range."
> │         return self.ptr[index]
> │     
> │     def __setitem__(self, index, value):
> │         assert 0 <= index < self.length, "The set index needs
> to be in range."
> │         self.ptr[index] = value
> │ 
> │     def push(self,value):
> │         assert (self.length < len(self.ptr)), "The length 
> before pushing has to be less than the maximum length of the array."
> │         self.ptr[self.length] = value
> │         self.length += 1
> │ 
> │     def pop(self):
> │         assert (0 < self.length), "The length before popping 
> has to be greater than 0."
> │         self.length -= 1
> │         return self.ptr[self.length]
> │ 
> │     def unsafe_set_length(self,i):
> │         assert 0 <= i <= len(self.ptr), "The new length has 
> to be in range."
> │         self.length = i
> │ 
> │ class dynamic_array(static_array): 
> │     pass
> │ 
> │ class dynamic_array_list(static_array_list):
> │     def length_(self): return self.length
> │ 
> │ 
> │ kernels_main = r"""
> │ """
> │ from main_auto import *
> │ kernels = kernels_aux + kernels_main
> │ import cupy as cp
> │ import numpy as np
> │ from dataclasses import dataclass
> │ from typing import NamedTuple, Union, Callable, Tuple
> │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = 
> int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = str
> │ cuda = False
> │ 
> │ 
> │ # fwd_dcls
> │ # types
> │ # functions
> │ # main_defs
> │ def main_body():
> │     return 0.3325000000000001
> │ 
> │ def main():
> │     r = main_body()
> │     if cuda: cp.cuda.get_current_stream().synchronize() # 
> This line is here so the `__trap()` calls on the kernel aren't missed.
> │     return r
> │ 
> │ if __name__ == '__main__': result = main(); None if result is
> None else print(result)
> │ ",
> │  [], 0)
> │ 00:00:57 v #1856 Supervisor.buildFile / ofSeqAsync / x: 
> (Some
> │    "kernels_aux = r"""
> │ // The types of these two will be replaced during compilation
> by the Spiral code generator. 
> │ // It matches on `using default_int = ` and `;` with the 
> inner part being replaced so the form should be kept as is. 
> │ // The two statements need to begin at the start of a line.
> │ using default_int = int;
> │ using default_uint = unsigned int;
> │ 
> │ #ifndef __NVRTC__
> │ // NVRTC has these includes by default so they need to be 
> left out if it is used as the compiler.
> │ #include <new>
> │ #include <assert.h>
> │ #include <stdio.h>
> │ #endif
> │ 
> │ // For error checking on the host.
> │ #define gpuErrchk(ans) { gpuAssert((ans), __FILE__, 
> __LINE__); }
> │ template <typename T> inline __device__ void destroy(T& obj) 
> { obj.~T(); }
> │ inline void gpuAssert(cudaError error, const char *file, int 
> line, bool abort=true) {
> │     if (error != cudaSuccess) {
> │         fprintf(stderr, "GPUassert: %s %s %d\n", 
> cudaGetErrorString(error), file, line);
> │         if (abort) exit(error);
> │     }
> │ }
> │ 
> │ template <typename el>
> │ struct sptr // Shared pointer for the Spiral datatypes. They 
> have to have the refc field inside them to work.
> │ {
> │     el* base;
> │ 
> │     __device__ sptr() : base(nullptr) {}
> │     __device__ sptr(el* ptr) : base(ptr) { 
> this->base->refc++; }
> │ 
> │     __device__ ~sptr()
> │     {
> │         if (this->base != nullptr && --this->base->refc == 0)
> │         {
> │             delete this->base;
> │             this->base = nullptr;
> │         }
> │     }
> │ 
> │     __device__ sptr(sptr& x)
> │     {
> │         this->base = x.base;
> │         this->base->refc++;
> │     }
> │ 
> │     __device__ sptr(sptr&& x)
> │     {
> │         this->base = x.base;
> │         x.base = nullptr;
> │     }
> │ 
> │     __device__ sptr& operator=(sptr& x)
> │     {
> │         if (this->base != x.base)
> │         {
> │             delete this->base;
> │             this->base = x.base;
> │             this->base->refc++;
> │         }
> │         return *this;
> │     }
> │ 
> │     __device__ sptr& operator=(sptr&& x)
> │     {
> │         if (this->base != x.base)
> │         {
> │             delete this->base;
> │             this->base = x.base;
> │             x.base = nullptr;
> │         }
> │         return *this;
> │     }
> │ };
> │ 
> │ template <typename el>
> │ struct csptr : public sptr<el>
> │ { // Shared pointer for closures specifically.
> │     using sptr<el>::sptr;
> │     template <typename... Args>
> │     __device__ auto operator()(Args... args) -> 
> decltype(this->base->operator()(args...))
> │     {
> │         return this->base->operator()(args...);
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct static_array
> │ {
> │     el ptr[max_length];
> │     __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < max_length);
> │         return this->ptr[i];
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct static_array_list
> │ {
> │     default_int length{ 0 };
> │     el ptr[max_length];
> │ 
> │     __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │     __device__ void push(el& x) {
> │         ptr[this->length++] = x;
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __device__ void push(el&& x) {
> │         ptr[this->length++] = std::move(x);
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __device__ el pop() {
> │         assert("The array before popping should be greater 
> than 0." && 0 < this->length);
> │         auto x = ptr[--this->length];
> │         ptr[this->length].~el();
> │         new (&ptr[this->length]) el();
> │         return x;
> │     }
> │     // Should be used only during initialization.
> │     __device__ void unsafe_set_length(default_int i) {
> │         assert("The new length should be in range." && 0 <= i
> && i <= max_length);
> │         this->length = i;
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_base
> │ {
> │     int refc{ 0 };
> │     el* ptr;
> │ 
> │     __device__ dynamic_array_base() : ptr(new el[max_length])
> {}
> │     __device__ ~dynamic_array_base() { delete[] this->ptr; }
> │ 
> │     __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array
> │ {
> │     sptr<dynamic_array_base<el, max_length>> ptr;
> │ 
> │     __device__ dynamic_array() = default;
> │     __device__ dynamic_array(bool t) : ptr(new 
> dynamic_array_base<el, max_length>()) {}
> │     __device__ el& operator[](default_int i) {
> │         return this->ptr.base->operator[](i);
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_list_base
> │ {
> │     int refc{ 0 };
> │     default_int length{ 0 };
> │     el* ptr;
> │ 
> │     __device__ dynamic_array_list_base() : ptr(new 
> el[max_length]) {}
> │     __device__ dynamic_array_list_base(default_int l) : 
> ptr(new el[max_length]) { this->unsafe_set_length(l); }
> │     __device__ ~dynamic_array_list_base() { delete[] 
> this->ptr; }
> │ 
> │     __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │     __device__ void push(el& x) {
> │         ptr[this->length++] = x;
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __device__ void push(el&& x) {
> │         ptr[this->length++] = std::move(x);
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __device__ el pop() {
> │         assert("The array before popping should be greater 
> than 0." && 0 < this->length);
> │         auto x = ptr[--this->length];
> │         ptr[this->length].~el();
> │         new (&ptr[this->length]) el();
> │         return x;
> │     }
> │     // Should be used only during initialization.
> │     __device__ void unsafe_set_length(default_int i) {
> │         assert("The new length should be in range." && 0 <= i
> && i <= max_length);
> │         this->length = i;
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_list
> │ {
> │     sptr<dynamic_array_list_base<el, max_length>> ptr;
> │ 
> │     __device__ dynamic_array_list() = default;
> │     __device__ dynamic_array_list(default_int l) : ptr(new 
> dynamic_array_list_base<el, max_length>(l)) {}
> │ 
> │     __device__ el& operator[](default_int i) {
> │         return this->ptr.base->operator[](i);
> │     }
> │     __device__ void push(el& x) {
> │         this->ptr.base->push(x);
> │     }
> │     __device__ void push(el&& x) {
> │         this->ptr.base->push(std::move(x));
> │     }
> │     __device__ el pop() {
> │         return this->ptr.base->pop();
> │     }
> │     // Should be used only during initialization.
> │     __device__ void unsafe_set_length(default_int i) {
> │         this->ptr.base->unsafe_set_length(i);
> │     }
> │     __device__ default_int length_() {
> │         return this->ptr.base->length;
> │     }
> │ };
> │ """
> │ class static_array():
> │     def __init__(self, length):
> │         self.ptr = []
> │         for _ in range(length):
> │             self.ptr.append(None)
> │ 
> │     def __getitem__(self, index):
> │         assert 0 <= index < len(self.ptr), "The get index 
> needs to be in range."
> │         return self.ptr[index]
> │     
> │     def __setitem__(self, index, value):
> │         assert 0 <= index < len(self.ptr), "The set index 
> needs to be in range."
> │         self.ptr[index] = value
> │ 
> │ class static_array_list(static_array):
> │     def __init__(self, length):
> │         super().__init__(length)
> │         self.length = 0
> │ 
> │     def __getitem__(self, index):
> │         assert 0 <= index < self.length, "The get index needs
> to be in range."
> │         return self.ptr[index]
> │     
> │     def __setitem__(self, index, value):
> │         assert 0 <= index < self.length, "The set index needs
> to be in range."
> │         self.ptr[index] = value
> │ 
> │     def push(self,value):
> │         assert (self.length < len(self.ptr)), "The length 
> before pushing has to be less than the maximum length of the array."
> │         self.ptr[self.length] = value
> │         self.length += 1
> │ 
> │     def pop(self):
> │         assert (0 < self.length), "The length before popping 
> has to be greater than 0."
> │         self.length -= 1
> │         return self.ptr[self.length]
> │ 
> │     def unsafe_set_length(self,i):
> │         assert 0 <= i <= len(self.ptr), "The new length has 
> to be in range."
> │         self.length = i
> │ 
> │ class dynamic_array(static_array): 
> │     pass
> │ 
> │ class dynamic_array_list(static_array_list):
> │     def length_(self): return self.length
> │ 
> │ 
> │ kernels_main = r"""
> │ """
> │ from main_auto import *
> │ kernels = kernels_aux + kernels_main
> │ import cupy as cp
> │ import numpy as np
> │ from dataclasses import dataclass
> │ from typing import NamedTuple, Union, Callable, Tuple
> │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = 
> int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = str
> │ cuda = False
> │ 
> │ 
> │ # fwd_dcls
> │ # types
> │ # functions
> │ # main_defs
> │ def main_body():
> │     return 0.3325000000000001
> │ 
> │ def main():
> │     r = main_body()
> │     if cuda: cp.cuda.get_current_stream().synchronize() # 
> This line is here so the `__trap()` calls on the kernel aren't missed.
> │     return r
> │ 
> │ if __name__ == '__main__': result = main(); None if result is
> None else print(result)
> │ ",
> │  [], 0)
> │ 00:00:57 v #1857 Supervisor.buildFile / result: [] / 
> buildFileResult: Some
> │   "kernels_aux = r"""
> │ // The types of these two will be replaced during compilation
> by the Spiral code generator. 
> │ // It matches on `using default_int = ` and `;` with the 
> inner part being replaced so the form should be kept as is. 
> │ // The two statements need to begin at the start of a line.
> │ using default_int = int;
> │ using default_uint = unsigned int;
> │ 
> │ #ifndef __NVRTC__
> │ // NVRTC has these includes by default so they need to be 
> left out if it is used as the compiler.
> │ #include <new>
> │ #include <assert.h>
> │ #include <stdio.h>
> │ #endif
> │ 
> │ // For error checking on the host.
> │ #define gpuErrchk(ans) { gpuAssert((ans), __FILE__, 
> __LINE__); }
> │ template <typename T> inline __device__ void destroy(T& obj) 
> { obj.~T(); }
> │ inline void gpuAssert(cudaError error, const char *file, int 
> line, bool abort=true) {
> │     if (error != cudaSuccess) {
> │         fprintf(stderr, "GPUassert: %s %s %d\n", 
> cudaGetErrorString(error), file, line);
> │         if (abort) exit(error);
> │     }
> │ }
> │ 
> │ template <typename el>
> │ struct sptr // Shared pointer for the Spiral datatypes. They 
> have to have the refc field inside them to work.
> │ {
> │     el* base;
> │ 
> │     __device__ sptr() : base(nullptr) {}
> │     __device__ sptr(el* ptr) : base(ptr) { 
> this->base->refc++; }
> │ 
> │     __device__ ~sptr()
> │     {
> │         if (this->base != nullptr && --this->base->refc == 0)
> │         {
> │             delete this->base;
> │             this->base = nullptr;
> │         }
> │     }
> │ 
> │     __device__ sptr(sptr& x)
> │     {
> │         this->base = x.base;
> │         this->base->refc++;
> │     }
> │ 
> │     __device__ sptr(sptr&& x)
> │     {
> │         this->base = x.base;
> │         x.base = nullptr;
> │     }
> │ 
> │     __device__ sptr& operator=(sptr& x)
> │     {
> │         if (this->base != x.base)
> │         {
> │             delete this->base;
> │             this->base = x.base;
> │             this->base->refc++;
> │         }
> │         return *this;
> │     }
> │ 
> │     __device__ sptr& operator=(sptr&& x)
> │     {
> │         if (this->base != x.base)
> │         {
> │             delete this->base;
> │             this->base = x.base;
> │             x.base = nullptr;
> │         }
> │         return *this;
> │     }
> │ };
> │ 
> │ template <typename el>
> │ struct csptr : public sptr<el>
> │ { // Shared pointer for closures specifically.
> │     using sptr<el>::sptr;
> │     template <typename... Args>
> │     __device__ auto operator()(Args... args) -> 
> decltype(this->base->operator()(args...))
> │     {
> │         return this->base->operator()(args...);
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct static_array
> │ {
> │     el ptr[max_length];
> │     __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < max_length);
> │         return this->ptr[i];
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct static_array_list
> │ {
> │     default_int length{ 0 };
> │     el ptr[max_length];
> │ 
> │     __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │     __device__ void push(el& x) {
> │         ptr[this->length++] = x;
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __device__ void push(el&& x) {
> │         ptr[this->length++] = std::move(x);
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __device__ el pop() {
> │         assert("The array before popping should be greater 
> than 0." && 0 < this->length);
> │         auto x = ptr[--this->length];
> │         ptr[this->length].~el();
> │         new (&ptr[this->length]) el();
> │         return x;
> │     }
> │     // Should be used only during initialization.
> │     __device__ void unsafe_set_length(default_int i) {
> │         assert("The new length should be in range." && 0 <= i
> && i <= max_length);
> │         this->length = i;
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_base
> │ {
> │     int refc{ 0 };
> │     el* ptr;
> │ 
> │     __device__ dynamic_array_base() : ptr(new el[max_length])
> {}
> │     __device__ ~dynamic_array_base() { delete[] this->ptr; }
> │ 
> │     __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array
> │ {
> │     sptr<dynamic_array_base<el, max_length>> ptr;
> │ 
> │     __device__ dynamic_array() = default;
> │     __device__ dynamic_array(bool t) : ptr(new 
> dynamic_array_base<el, max_length>()) {}
> │     __device__ el& operator[](default_int i) {
> │         return this->ptr.base->operator[](i);
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_list_base
> │ {
> │     int refc{ 0 };
> │     default_int length{ 0 };
> │     el* ptr;
> │ 
> │     __device__ dynamic_array_list_base() : ptr(new 
> el[max_length]) {}
> │     __device__ dynamic_array_list_base(default_int l) : 
> ptr(new el[max_length]) { this->unsafe_set_length(l); }
> │     __device__ ~dynamic_array_list_base() { delete[] 
> this->ptr; }
> │ 
> │     __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │     __device__ void push(el& x) {
> │         ptr[this->length++] = x;
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __device__ void push(el&& x) {
> │         ptr[this->length++] = std::move(x);
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __device__ el pop() {
> │         assert("The array before popping should be greater 
> than 0." && 0 < this->length);
> │         auto x = ptr[--this->length];
> │         ptr[this->length].~el();
> │         new (&ptr[this->length]) el();
> │         return x;
> │     }
> │     // Should be used only during initialization.
> │     __device__ void unsafe_set_length(default_int i) {
> │         assert("The new length should be in range." && 0 <= i
> && i <= max_length);
> │         this->length = i;
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_list
> │ {
> │     sptr<dynamic_array_list_base<el, max_length>> ptr;
> │ 
> │     __device__ dynamic_array_list() = default;
> │     __device__ dynamic_array_list(default_int l) : ptr(new 
> dynamic_array_list_base<el, max_length>(l)) {}
> │ 
> │     __device__ el& operator[](default_int i) {
> │         return this->ptr.base->operator[](i);
> │     }
> │     __device__ void push(el& x) {
> │         this->ptr.base->push(x);
> │     }
> │     __device__ void push(el&& x) {
> │         this->ptr.base->push(std::move(x));
> │     }
> │     __device__ el pop() {
> │         return this->ptr.base->pop();
> │     }
> │     // Should be used only during initialization.
> │     __device__ void unsafe_set_length(default_int i) {
> │         this->ptr.base->unsafe_set_length(i);
> │     }
> │     __device__ default_int length_() {
> │         return this->ptr.base->length;
> │     }
> │ };
> │ """
> │ class static_array():
> │     def __init__(self, length):
> │         self.ptr = []
> │         for _ in range(length):
> │             self.ptr.append(None)
> │ 
> │     def __getitem__(self, index):
> │         assert 0 <= index < len(self.ptr), "The get index 
> needs to be in range."
> │         return self.ptr[index]
> │     
> │     def __setitem__(self, index, value):
> │         assert 0 <= index < len(self.ptr), "The set index 
> needs to be in range."
> │         self.ptr[index] = value
> │ 
> │ class static_array_list(static_array):
> │     def __init__(self, length):
> │         super().__init__(length)
> │         self.length = 0
> │ 
> │     def __getitem__(self, index):
> │         assert 0 <= index < self.length, "The get index needs
> to be in range."
> │         return self.ptr[index]
> │     
> │     def __setitem__(self, index, value):
> │         assert 0 <= index < self.length, "The set index needs
> to be in range."
> │         self.ptr[index] = value
> │ 
> │     def push(self,value):
> │         assert (self.length < len(self.ptr)), "The length 
> before pushing has to be less than the maximum length of the array."
> │         self.ptr[self.length] = value
> │         self.length += 1
> │ 
> │     def pop(self):
> │         assert (0 < self.length), "The length before popping 
> has to be greater than 0."
> │         self.length -= 1
> │         return self.ptr[self.length]
> │ 
> │     def unsafe_set_length(self,i):
> │         assert 0 <= i <= len(self.ptr), "The new length has 
> to be in range."
> │         self.length = i
> │ 
> │ class dynamic_array(static_array): 
> │     pass
> │ 
> │ class dynamic_array_list(static_array_list):
> │     def length_(self): return self.length
> │ 
> │ 
> │ kernels_main = r"""
> │ """
> │ from main_auto import *
> │ kernels = kernels_aux + kernels_main
> │ import cupy as cp
> │ import numpy as np
> │ from dataclasses import dataclass
> │ from typing import NamedTuple, Union, Callable, Tuple
> │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = 
> int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = str
> │ cuda = False
> │ 
> │ 
> │ # fwd_dcls
> │ # types
> │ # functions
> │ # main_defs
> │ def main_body():
> │     return 0.3325000000000001
> │ 
> │ def main():
> │     r = main_body()
> │     if cuda: cp.cuda.get_current_stream().synchronize() # 
> This line is here so the `__trap()` calls on the kernel aren't missed.
> │     return r
> │ 
> │ if __name__ == '__main__': result = main(); None if result is
> None else print(result)
> │ " / typeErrorCount: 0
> │ 00:00:57 v #1858 Supervisor.buildFile / retry: 0 / 
> typeErrorCount: 0 / fileDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a4224c9f3d674d70
> fd56b6ecd3ae8c8ff3178a7124ae34f592336fef263568ea / targetDir: 
> /home/runner/work/polyglot/polyglot/target
> │ Some
> │   (Some
> │      "kernels_aux = r"""
> │ // The types of these two will be replaced during compilation
> by the Spiral code generator. 
> │ // It matches on `using default_int = ` and `;` with the 
> inner part being replaced so the form should be kept as is. 
> │ // The two statements need to begin at the start of a line.
> │ using default_int = int;
> │ using default_uint = unsigned int;
> │ 
> │ #ifndef __NVRTC__
> │ // NVRTC has these includes by default so they need to be 
> left out if it is used as the compiler.
> │ #include <new>
> │ #include <assert.h>
> │ #include <stdio.h>
> │ #endif
> │ 
> │ // For error checking on the host.
> │ #define gpuErrchk(ans) { gpuAssert((ans), __FILE__, 
> __LINE__); }
> │ template <typename T> inline __device__ void destroy(T& obj) 
> { obj.~T(); }
> │ inline void gpuAssert(cudaError error, const char *file, int 
> line, bool abort=true) {
> │     if (error != cudaSuccess) {
> │         fprintf(stderr, "GPUassert: %s %s %d\n", 
> cudaGetErrorString(error), file, line);
> │         if (abort) exit(error);
> │     }
> │ }
> │ 
> │ template <typename el>
> │ struct sptr // Shared pointer for the Spiral datatypes. They 
> have to have the refc field inside them to work.
> │ {
> │     el* base;
> │ 
> │     __device__ sptr() : base(nullptr) {}
> │     __device__ sptr(el* ptr) : base(ptr) { 
> this->base->refc++; }
> │ 
> │     __device__ ~sptr()
> │     {
> │         if (this->base != nullptr && --this->base->refc == 0)
> │         {
> │             delete this->base;
> │             this->base = nullptr;
> │         }
> │     }
> │ 
> │     __device__ sptr(sptr& x)
> │     {
> │         this->base = x.base;
> │         this->base->refc++;
> │     }
> │ 
> │     __device__ sptr(sptr&& x)
> │     {
> │         this->base = x.base;
> │         x.base = nullptr;
> │     }
> │ 
> │     __device__ sptr& operator=(sptr& x)
> │     {
> │         if (this->base != x.base)
> │         {
> │             delete this->base;
> │             this->base = x.base;
> │             this->base->refc++;
> │         }
> │         return *this;
> │     }
> │ 
> │     __device__ sptr& operator=(sptr&& x)
> │     {
> │         if (this->base != x.base)
> │         {
> │             delete this->base;
> │             this->base = x.base;
> │             x.base = nullptr;
> │         }
> │         return *this;
> │     }
> │ };
> │ 
> │ template <typename el>
> │ struct csptr : public sptr<el>
> │ { // Shared pointer for closures specifically.
> │     using sptr<el>::sptr;
> │     template <typename... Args>
> │     __device__ auto operator()(Args... args) -> 
> decltype(this->base->operator()(args...))
> │     {
> │         return this->base->operator()(args...);
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct static_array
> │ {
> │     el ptr[max_length];
> │     __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < max_length);
> │         return this->ptr[i];
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct static_array_list
> │ {
> │     default_int length{ 0 };
> │     el ptr[max_length];
> │ 
> │     __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │     __device__ void push(el& x) {
> │         ptr[this->length++] = x;
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __device__ void push(el&& x) {
> │         ptr[this->length++] = std::move(x);
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __device__ el pop() {
> │         assert("The array before popping should be greater 
> than 0." && 0 < this->length);
> │         auto x = ptr[--this->length];
> │         ptr[this->length].~el();
> │         new (&ptr[this->length]) el();
> │         return x;
> │     }
> │     // Should be used only during initialization.
> │     __device__ void unsafe_set_length(default_int i) {
> │         assert("The new length should be in range." && 0 <= i
> && i <= max_length);
> │         this->length = i;
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_base
> │ {
> │     int refc{ 0 };
> │     el* ptr;
> │ 
> │     __device__ dynamic_array_base() : ptr(new el[max_length])
> {}
> │     __device__ ~dynamic_array_base() { delete[] this->ptr; }
> │ 
> │     __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array
> │ {
> │     sptr<dynamic_array_base<el, max_length>> ptr;
> │ 
> │     __device__ dynamic_array() = default;
> │     __device__ dynamic_array(bool t) : ptr(new 
> dynamic_array_base<el, max_length>()) {}
> │     __device__ el& operator[](default_int i) {
> │         return this->ptr.base->operator[](i);
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_list_base
> │ {
> │     int refc{ 0 };
> │     default_int length{ 0 };
> │     el* ptr;
> │ 
> │     __device__ dynamic_array_list_base() : ptr(new 
> el[max_length]) {}
> │     __device__ dynamic_array_list_base(default_int l) : 
> ptr(new el[max_length]) { this->unsafe_set_length(l); }
> │     __device__ ~dynamic_array_list_base() { delete[] 
> this->ptr; }
> │ 
> │     __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │     __device__ void push(el& x) {
> │         ptr[this->length++] = x;
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __device__ void push(el&& x) {
> │         ptr[this->length++] = std::move(x);
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __device__ el pop() {
> │         assert("The array before popping should be greater 
> than 0." && 0 < this->length);
> │         auto x = ptr[--this->length];
> │         ptr[this->length].~el();
> │         new (&ptr[this->length]) el();
> │         return x;
> │     }
> │     // Should be used only during initialization.
> │     __device__ void unsafe_set_length(default_int i) {
> │         assert("The new length should be in range." && 0 <= i
> && i <= max_length);
> │         this->length = i;
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_list
> │ {
> │     sptr<dynamic_array_list_base<el, max_length>> ptr;
> │ 
> │     __device__ dynamic_array_list() = default;
> │     __device__ dynamic_array_list(default_int l) : ptr(new 
> dynamic_array_list_base<el, max_length>(l)) {}
> │ 
> │     __device__ el& operator[](default_int i) {
> │         return this->ptr.base->operator[](i);
> │     }
> │     __device__ void push(el& x) {
> │         this->ptr.base->push(x);
> │     }
> │     __device__ void push(el&& x) {
> │         this->ptr.base->push(std::move(x));
> │     }
> │     __device__ el pop() {
> │         return this->ptr.base->pop();
> │     }
> │     // Should be used only during initialization.
> │     __device__ void unsafe_set_length(default_int i) {
> │         this->ptr.base->unsafe_set_length(i);
> │     }
> │     __device__ default_int length_() {
> │         return this->ptr.base->length;
> │     }
> │ };
> │ """
> │ class static_array():
> │     def __init__(self, length):
> │         self.ptr = []
> │         for _ in range(length):
> │             self.ptr.append(None)
> │ 
> │     def __getitem__(self, index):
> │         assert 0 <= index < len(self.ptr), "The get index 
> needs to be in range."
> │         return self.ptr[index]
> │     
> │     def __setitem__(self, index, value):
> │         assert 0 <= index < len(self.ptr), "The set index 
> needs to be in range."
> │         self.ptr[index] = value
> │ 
> │ class static_array_list(static_array):
> │     def __init__(self, length):
> │         super().__init__(length)
> │         self.length = 0
> │ 
> │     def __getitem__(self, index):
> │         assert 0 <= index < self.length, "The get index needs
> to be in range."
> │         return self.ptr[index]
> │     
> │     def __setitem__(self, index, value):
> │         assert 0 <= index < self.length, "The set index needs
> to be in range."
> │         self.ptr[index] = value
> │ 
> │     def push(self,value):
> │         assert (self.length < len(self.ptr)), "The length 
> before pushing has to be less than the maximum length of the array."
> │         self.ptr[self.length] = value
> │         self.length += 1
> │ 
> │     def pop(self):
> │         assert (0 < self.length), "The length before popping 
> has to be greater than 0."
> │         self.length -= 1
> │         return self.ptr[self.length]
> │ 
> │     def unsafe_set_length(self,i):
> │         assert 0 <= i <= len(self.ptr), "The new length has 
> to be in range."
> │         self.length = i
> │ 
> │ class dynamic_array(static_array): 
> │     pass
> │ 
> │ class dynamic_array_list(static_array_list):
> │     def length_(self): return self.length
> │ 
> │ 
> │ kernels_main = r"""
> │ """
> │ from main_auto import *
> │ kernels = kernels_aux + kernels_main
> │ import cupy as cp
> │ import numpy as np
> │ from dataclasses import dataclass
> │ from typing import NamedTuple, Union, Callable, Tuple
> │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = 
> int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = str
> │ cuda = False
> │ 
> │ 
> │ # fwd_dcls
> │ # types
> │ # functions
> │ # main_defs
> │ def main_body():
> │     return 0.3325000000000001
> │ 
> │ def main():
> │     r = main_body()
> │     if cuda: cp.cuda.get_current_stream().synchronize() # 
> This line is here so the `__trap()` calls on the kernel aren't missed.
> │     return r
> │ 
> │ if __name__ == '__main__': result = main(); None if result is
> None else print(result)
> │ ",
> │    [])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """
> inl init_series start end inc =
>     inl total : f64 = conv ((end - start) / inc) + 1
>     listm.init total (conv >> (*) inc >> (+) start) : list f64
> 
> type integration = (f64 -> f64) -> f64 -> f64 -> f64
> 
> inl integral dt : integration =
>     fun f a b =>
>         init_series (a + dt / 2) (b - dt / 2) dt
>         |> listm.map (f >> (*) dt)
>         |> listm.fold (+) 0
> 
> inl main () =
>     integral 0.1 (fun x => x ** 2) 0 1 |> convert : i32
> """
> |> fun code -> Spi (code, None)
> |> buildCode Cpp [[||]] false 10000 None
> |> Async.runWithTimeout 11000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         Some @"// The types of these two will be replaced during compilation by 
> the Spiral code generator. 
> // It matches on `using default_int = ` and `;` with the inner part being 
> replaced so the form should be kept as is. 
> // The two statements need to begin at the start of a line.
> using default_int = int;
> using default_uint = unsigned int;
> 
> #ifndef __NVRTC__
> // NVRTC has these includes by default so they need to be left out if it is used
> as the compiler.
> #include <new>
> #include <assert.h>
> #include <stdio.h>
> #endif
> 
> // For error checking on the host.
> #define gpuErrchk(ans) { gpuAssert((ans), __FILE__, __LINE__); }
> template <typename T> inline __host__ __device__ void destroy(T& obj) { 
> obj.~T(); }
> inline void gpuAssert(cudaError error, const char *file, int line, bool 
> abort=true) {
>     if (error != cudaSuccess) {
>         fprintf(stderr, ""GPUassert: %s %s %d\n"", cudaGetErrorString(error), 
> file, line);
>         if (abort) exit(error);
>     }
> }
> 
> template <typename el>
> struct sptr // Shared pointer for the Spiral datatypes. They have to have the 
> refc field inside them to work.
> {
>     el* base;
> 
>     __host__ __device__ sptr() : base(nullptr) {}
>     __host__ __device__ sptr(el* ptr) : base(ptr) { this->base->refc++; }
> 
>     __host__ __device__ ~sptr()
>     {
>         if (this->base != nullptr && --this->base->refc == 0)
>         {
>             delete this->base;
>             this->base = nullptr;
>         }
>     }
> 
>     __host__ __device__ sptr(sptr& x)
>     {
>         this->base = x.base;
>         this->base->refc++;
>     }
> 
>     __host__ __device__ sptr(sptr&& x)
>     {
>         this->base = x.base;
>         x.base = nullptr;
>     }
> 
>     __host__ __device__ sptr& operator=(sptr& x)
>     {
>         if (this->base != x.base)
>         {
>             delete this->base;
>             this->base = x.base;
>             this->base->refc++;
>         }
>         return *this;
>     }
> 
>     __host__ __device__ sptr& operator=(sptr&& x)
>     {
>         if (this->base != x.base)
>         {
>             delete this->base;
>             this->base = x.base;
>             x.base = nullptr;
>         }
>         return *this;
>     }
> };
> 
> template <typename el>
> struct csptr : public sptr<el>
> { // Shared pointer for closures specifically.
>     using sptr<el>::sptr;
>     template <typename... Args>
>     __host__ __device__ auto operator()(Args... args) -> 
> decltype(this->base->operator()(args...))
>     {
>         return this->base->operator()(args...);
>     }
> };
> 
> template <typename el, default_int max_length>
> struct static_array
> {
>     el ptr[[max_length]];
>     __host__ __device__ el& operator[[]](default_int i) {
>         assert(""The index has to be in range."" && 0 <= i && i < max_length);
>         return this->ptr[[i]];
>     }
> };
> 
> template <typename el, default_int max_length>
> struct static_array_list
> {
>     default_int length{ 0 };
>     el ptr[[max_length]];
> 
>     __host__ __device__ el& operator[[]](default_int i) {
>         assert(""The index has to be in range."" && 0 <= i && i < this->length);
>         return this->ptr[[i]];
>     }
>     __host__ __device__ void push(el& x) {
>         ptr[[this->length++]] = x;
>         assert(""The array after pushing should not be greater than max 
> length."" && this->length <= max_length);
>     }
>     __host__ __device__ void push(el&& x) {
>         ptr[[this->length++]] = std::move(x);
>         assert(""The array after pushing should not be greater than max 
> length."" && this->length <= max_length);
>     }
>     __host__ __device__ el pop() {
>         assert(""The array before popping should be greater than 0."" && 0 < 
> this->length);
>         auto x = ptr[[--this->length]];
>         ptr[[this->length]].~el();
>         new (&ptr[[this->length]]) el();
>         return x;
>     }
>     // Should be used only during initialization.
>     __host__ __device__ void unsafe_set_length(default_int i) {
>         assert(""The new length should be in range."" && 0 <= i && i <= 
> max_length);
>         this->length = i;
>     }
> };
> 
> template <typename el, default_int max_length>
> struct dynamic_array_base
> {
>     int refc{ 0 };
>     el* ptr;
> 
>     __host__ __device__ dynamic_array_base() : ptr(new el[[max_length]]) {}
>     __host__ __device__ ~dynamic_array_base() { delete[[]] this->ptr; }
> 
>     __host__ __device__ el& operator[[]](default_int i) {
>         assert(""The index has to be in range."" && 0 <= i && i < this->length);
>         return this->ptr[[i]];
>     }
> };
> 
> template <typename el, default_int max_length>
> struct dynamic_array
> {
>     sptr<dynamic_array_base<el, max_length>> ptr;
> 
>     __host__ __device__ dynamic_array() = default;
>     __host__ __device__ dynamic_array(bool t) : ptr(new dynamic_array_base<el, 
> max_length>()) {}
>     __host__ __device__ el& operator[[]](default_int i) {
>         return this->ptr.base->operator[[]](i);
>     }
> };
> 
> template <typename el, default_int max_length>
> struct dynamic_array_list_base
> {
>     int refc{ 0 };
>     default_int length{ 0 };
>     el* ptr;
> 
>     __host__ __device__ dynamic_array_list_base() : ptr(new el[[max_length]]) {}
>     __host__ __device__ dynamic_array_list_base(default_int l) : ptr(new 
> el[[max_length]]) { this->unsafe_set_length(l); }
>     __host__ __device__ ~dynamic_array_list_base() { delete[[]] this->ptr; }
> 
>     __host__ __device__ el& operator[[]](default_int i) {
>         assert(""The index has to be in range."" && 0 <= i && i < this->length);
>         return this->ptr[[i]];
>     }
>     __host__ __device__ void push(el& x) {
>         ptr[[this->length++]] = x;
>         assert(""The array after pushing should not be greater than max 
> length."" && this->length <= max_length);
>     }
>     __host__ __device__ void push(el&& x) {
>         ptr[[this->length++]] = std::move(x);
>         assert(""The array after pushing should not be greater than max 
> length."" && this->length <= max_length);
>     }
>     __host__ __device__ el pop() {
>         assert(""The array before popping should be greater than 0."" && 0 < 
> this->length);
>         auto x = ptr[[--this->length]];
>         ptr[[this->length]].~el();
>         new (&ptr[[this->length]]) el();
>         return x;
>     }
>     // Should be used only during initialization.
>     __host__ __device__ void unsafe_set_length(default_int i) {
>         assert(""The new length should be in range."" && 0 <= i && i <= 
> max_length);
>         this->length = i;
>     }
> };
> 
> template <typename el, default_int max_length>
> struct dynamic_array_list
> {
>     sptr<dynamic_array_list_base<el, max_length>> ptr;
> 
>     __host__ __device__ dynamic_array_list() = default;
>     __host__ __device__ dynamic_array_list(default_int l) : ptr(new 
> dynamic_array_list_base<el, max_length>(l)) {}
> 
>     __host__ __device__ el& operator[[]](default_int i) {
>         return this->ptr.base->operator[[]](i);
>     }
>     __host__ __device__ void push(el& x) {
>         this->ptr.base->push(x);
>     }
>     __host__ __device__ void push(el&& x) {
>         this->ptr.base->push(std::move(x));
>     }
>     __host__ __device__ el pop() {
>         return this->ptr.base->pop();
>     }
>     // Should be used only during initialization.
>     __host__ __device__ void unsafe_set_length(default_int i) {
>         this->ptr.base->unsafe_set_length(i);
>     }
>     __host__ __device__ default_int length_() {
>         return this->ptr.base->length;
>     }
> };
> #include ""main.auto.cu""
> namespace Device {
> }
> int main_body() {
>     int v3;
>     v3 = ;
>     return v3;
> }
> int main(){
>     auto r = main_body();
>     gpuErrchk(cudaDeviceSynchronize()); // This line is here so the `__trap()` 
> calls on the kernel aren't missed.
>     return r;
> }
> ",
>         [[]]
>     )
> )
> 
> ── [ 329.80ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:00:57 v #1876 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a702c5b29a050ecc
> fe7c911beeea63f353f61e71985bbebdb653ac32f3395c52/main.spi
> │ 00:00:57 v #1877 Supervisor.buildFile / AsyncSeq.scan / 
> outputContent:
> │ ' / errors: [] / outputContentResult:  / typeErrorCount: 0 / 
> retry: 0 / error:  / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a702c5b29a050ecc
> fe7c911beeea63f353f61e71985bbebdb653ac32f3395c52/main.spi'
> │ 00:00:57 v #1878 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a702c5b29a050ecc
> fe7c911beeea63f353f61e71985bbebdb653ac32f3395c52/main.spi
> │ 00:00:57 v #1879 Supervisor.buildFile / fullPathUri: 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a702c5b2
> 9a050eccfe7c911beeea63f353f61e71985bbebdb653ac32f3395c52/main.spi"
> │ 00:00:57 v #1880 Supervisor.buildFile / _fileOpenResult:
> <null>
> │ 00:00:57 v #1881 Supervisor.buildFile / before result: 
> ()
> │ 00:00:57 v #2118 Supervisor.buildFile / buildFileResult:
> Some
> │   "// The types of these two will be replaced during 
> compilation by the Spiral code generator. 
> │ // It matches on `using default_int = ` and `;` with the 
> inner part being replaced so the form should be kept as is. 
> │ // The two statements need to begin at the start of a line.
> │ using default_int = int;
> │ using default_uint = unsigned int;
> │ 
> │ #ifndef __NVRTC__
> │ // NVRTC has these includes by default so they need to be 
> left out if it is used as the compiler.
> │ #include <new>
> │ #include <assert.h>
> │ #include <stdio.h>
> │ #endif
> │ 
> │ // For error checking on the host.
> │ #define gpuErrchk(ans) { gpuAssert((ans), __FILE__, 
> __LINE__); }
> │ template <typename T> inline __host__ __device__ void 
> destroy(T& obj) { obj.~T(); }
> │ inline void gpuAssert(cudaError error, const char *file, int 
> line, bool abort=true) {
> │     if (error != cudaSuccess) {
> │         fprintf(stderr, "GPUassert: %s %s %d\n", 
> cudaGetErrorString(error), file, line);
> │         if (abort) exit(error);
> │     }
> │ }
> │ 
> │ template <typename el>
> │ struct sptr // Shared pointer for the Spiral datatypes. They 
> have to have the refc field inside them to work.
> │ {
> │     el* base;
> │ 
> │     __host__ __device__ sptr() : base(nullptr) {}
> │     __host__ __device__ sptr(el* ptr) : base(ptr) { 
> this->base->refc++; }
> │ 
> │     __host__ __device__ ~sptr()
> │     {
> │         if (this->base != nullptr && --this->base->refc == 0)
> │         {
> │             delete this->base;
> │             this->base = nullptr;
> │         }
> │     }
> │ 
> │     __host__ __device__ sptr(sptr& x)
> │     {
> │         this->base = x.base;
> │         this->base->refc++;
> │     }
> │ 
> │     __host__ __device__ sptr(sptr&& x)
> │     {
> │         this->base = x.base;
> │         x.base = nullptr;
> │     }
> │ 
> │     __host__ __device__ sptr& operator=(sptr& x)
> │     {
> │         if (this->base != x.base)
> │         {
> │             delete this->base;
> │             this->base = x.base;
> │             this->base->refc++;
> │         }
> │         return *this;
> │     }
> │ 
> │     __host__ __device__ sptr& operator=(sptr&& x)
> │     {
> │         if (this->base != x.base)
> │         {
> │             delete this->base;
> │             this->base = x.base;
> │             x.base = nullptr;
> │         }
> │         return *this;
> │     }
> │ };
> │ 
> │ template <typename el>
> │ struct csptr : public sptr<el>
> │ { // Shared pointer for closures specifically.
> │     using sptr<el>::sptr;
> │     template <typename... Args>
> │     __host__ __device__ auto operator()(Args... args) -> 
> decltype(this->base->operator()(args...))
> │     {
> │         return this->base->operator()(args...);
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct static_array
> │ {
> │     el ptr[max_length];
> │     __host__ __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < max_length);
> │         return this->ptr[i];
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct static_array_list
> │ {
> │     default_int length{ 0 };
> │     el ptr[max_length];
> │ 
> │     __host__ __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │     __host__ __device__ void push(el& x) {
> │         ptr[this->length++] = x;
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __host__ __device__ void push(el&& x) {
> │         ptr[this->length++] = std::move(x);
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __host__ __device__ el pop() {
> │         assert("The array before popping should be greater 
> than 0." && 0 < this->length);
> │         auto x = ptr[--this->length];
> │         ptr[this->length].~el();
> │         new (&ptr[this->length]) el();
> │         return x;
> │     }
> │     // Should be used only during initialization.
> │     __host__ __device__ void unsafe_set_length(default_int i)
> {
> │         assert("The new length should be in range." && 0 <= i
> && i <= max_length);
> │         this->length = i;
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_base
> │ {
> │     int refc{ 0 };
> │     el* ptr;
> │ 
> │     __host__ __device__ dynamic_array_base() : ptr(new 
> el[max_length]) {}
> │     __host__ __device__ ~dynamic_array_base() { delete[] 
> this->ptr; }
> │ 
> │     __host__ __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array
> │ {
> │     sptr<dynamic_array_base<el, max_length>> ptr;
> │ 
> │     __host__ __device__ dynamic_array() = default;
> │     __host__ __device__ dynamic_array(bool t) : ptr(new 
> dynamic_array_base<el, max_length>()) {}
> │     __host__ __device__ el& operator[](default_int i) {
> │         return this->ptr.base->operator[](i);
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_list_base
> │ {
> │     int refc{ 0 };
> │     default_int length{ 0 };
> │     el* ptr;
> │ 
> │     __host__ __device__ dynamic_array_list_base() : ptr(new 
> el[max_length]) {}
> │     __host__ __device__ dynamic_array_list_base(default_int 
> l) : ptr(new el[max_length]) { this->unsafe_set_length(l); }
> │     __host__ __device__ ~dynamic_array_list_base() { delete[]
> this->ptr; }
> │ 
> │     __host__ __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │     __host__ __device__ void push(el& x) {
> │         ptr[this->length++] = x;
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __host__ __device__ void push(el&& x) {
> │         ptr[this->length++] = std::move(x);
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __host__ __device__ el pop() {
> │         assert("The array before popping should be greater 
> than 0." && 0 < this->length);
> │         auto x = ptr[--this->length];
> │         ptr[this->length].~el();
> │         new (&ptr[this->length]) el();
> │         return x;
> │     }
> │     // Should be used only during initialization.
> │     __host__ __device__ void unsafe_set_length(default_int i)
> {
> │         assert("The new length should be in range." && 0 <= i
> && i <= max_length);
> │         this->length = i;
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_list
> │ {
> │     sptr<dynamic_array_list_base<el, max_length>> ptr;
> │ 
> │     __host__ __device__ dynamic_array_list() = default;
> │     __host__ __device__ dynamic_array_list(default_int l) : 
> ptr(new dynamic_array_list_base<el, max_length>(l)) {}
> │ 
> │     __host__ __device__ el& operator[](default_int i) {
> │         return this->ptr.base->operator[](i);
> │     }
> │     __host__ __device__ void push(el& x) {
> │         this->ptr.base->push(x);
> │     }
> │     __host__ __device__ void push(el&& x) {
> │         this->ptr.base->push(std::move(x));
> │     }
> │     __host__ __device__ el pop() {
> │         return this->ptr.base->pop();
> │     }
> │     // Should be used only during initialization.
> │     __host__ __device__ void unsafe_set_length(default_int i)
> {
> │         this->ptr.base->unsafe_set_length(i);
> │     }
> │     __host__ __device__ default_int length_() {
> │         return this->ptr.base->length;
> │     }
> │ };
> │ #include "main.auto.cu"
> │ namespace Device {
> │ }
> │ int main_body() {
> │     int v3;
> │     v3 = ;
> │     return v3;
> │ }
> │ int main(){
> │     auto r = main_body();
> │     gpuErrchk(cudaDeviceSynchronize()); // This line is here 
> so the `__trap()` calls on the kernel aren't missed.
> │     return r;
> │ }
> │ "
> │ 00:00:57 v #2119 Supervisor.buildFile / 
> outputContentSeq2 unfoldAsync / msg: (Some
> │    "// The types of these two will be replaced during 
> compilation by the Spiral code generator. 
> │ // It matches on `using default_int = ` and `;` with the 
> inner part being replaced so the form should be kept as is. 
> │ // The two statements need to begin at the start of a line.
> │ using default_int = int;
> │ using default_uint = unsigned int;
> │ 
> │ #ifndef __NVRTC__
> │ // NVRTC has these includes by default so they need to be 
> left out if it is used as the compiler.
> │ #include <new>
> │ #include <assert.h>
> │ #include <stdio.h>
> │ #endif
> │ 
> │ // For error checking on the host.
> │ #define gpuErrchk(ans) { gpuAssert((ans), __FILE__, 
> __LINE__); }
> │ template <typename T> inline __host__ __device__ void 
> destroy(T& obj) { obj.~T(); }
> │ inline void gpuAssert(cudaError error, const char *file, int 
> line, bool abort=true) {
> │     if (error != cudaSuccess) {
> │         fprintf(stderr, "GPUassert: %s %s %d\n", 
> cudaGetErrorString(error), file, line);
> │         if (abort) exit(error);
> │     }
> │ }
> │ 
> │ template <typename el>
> │ struct sptr // Shared pointer for the Spiral datatypes. They 
> have to have the refc field inside them to work.
> │ {
> │     el* base;
> │ 
> │     __host__ __device__ sptr() : base(nullptr) {}
> │     __host__ __device__ sptr(el* ptr) : base(ptr) { 
> this->base->refc++; }
> │ 
> │     __host__ __device__ ~sptr()
> │     {
> │         if (this->base != nullptr && --this->base->refc == 0)
> │         {
> │             delete this->base;
> │             this->base = nullptr;
> │         }
> │     }
> │ 
> │     __host__ __device__ sptr(sptr& x)
> │     {
> │         this->base = x.base;
> │         this->base->refc++;
> │     }
> │ 
> │     __host__ __device__ sptr(sptr&& x)
> │     {
> │         this->base = x.base;
> │         x.base = nullptr;
> │     }
> │ 
> │     __host__ __device__ sptr& operator=(sptr& x)
> │     {
> │         if (this->base != x.base)
> │         {
> │             delete this->base;
> │             this->base = x.base;
> │             this->base->refc++;
> │         }
> │         return *this;
> │     }
> │ 
> │     __host__ __device__ sptr& operator=(sptr&& x)
> │     {
> │         if (this->base != x.base)
> │         {
> │             delete this->base;
> │             this->base = x.base;
> │             x.base = nullptr;
> │         }
> │         return *this;
> │     }
> │ };
> │ 
> │ template <typename el>
> │ struct csptr : public sptr<el>
> │ { // Shared pointer for closures specifically.
> │     using sptr<el>::sptr;
> │     template <typename... Args>
> │     __host__ __device__ auto operator()(Args... args) -> 
> decltype(this->base->operator()(args...))
> │     {
> │         return this->base->operator()(args...);
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct static_array
> │ {
> │     el ptr[max_length];
> │     __host__ __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < max_length);
> │         return this->ptr[i];
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct static_array_list
> │ {
> │     default_int length{ 0 };
> │     el ptr[max_length];
> │ 
> │     __host__ __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │     __host__ __device__ void push(el& x) {
> │         ptr[this->length++] = x;
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __host__ __device__ void push(el&& x) {
> │         ptr[this->length++] = std::move(x);
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __host__ __device__ el pop() {
> │         assert("The array before popping should be greater 
> than 0." && 0 < this->length);
> │         auto x = ptr[--this->length];
> │         ptr[this->length].~el();
> │         new (&ptr[this->length]) el();
> │         return x;
> │     }
> │     // Should be used only during initialization.
> │     __host__ __device__ void unsafe_set_length(default_int i)
> {
> │         assert("The new length should be in range." && 0 <= i
> && i <= max_length);
> │         this->length = i;
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_base
> │ {
> │     int refc{ 0 };
> │     el* ptr;
> │ 
> │     __host__ __device__ dynamic_array_base() : ptr(new 
> el[max_length]) {}
> │     __host__ __device__ ~dynamic_array_base() { delete[] 
> this->ptr; }
> │ 
> │     __host__ __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array
> │ {
> │     sptr<dynamic_array_base<el, max_length>> ptr;
> │ 
> │     __host__ __device__ dynamic_array() = default;
> │     __host__ __device__ dynamic_array(bool t) : ptr(new 
> dynamic_array_base<el, max_length>()) {}
> │     __host__ __device__ el& operator[](default_int i) {
> │         return this->ptr.base->operator[](i);
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_list_base
> │ {
> │     int refc{ 0 };
> │     default_int length{ 0 };
> │     el* ptr;
> │ 
> │     __host__ __device__ dynamic_array_list_base() : ptr(new 
> el[max_length]) {}
> │     __host__ __device__ dynamic_array_list_base(default_int 
> l) : ptr(new el[max_length]) { this->unsafe_set_length(l); }
> │     __host__ __device__ ~dynamic_array_list_base() { delete[]
> this->ptr; }
> │ 
> │     __host__ __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │     __host__ __device__ void push(el& x) {
> │         ptr[this->length++] = x;
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __host__ __device__ void push(el&& x) {
> │         ptr[this->length++] = std::move(x);
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __host__ __device__ el pop() {
> │         assert("The array before popping should be greater 
> than 0." && 0 < this->length);
> │         auto x = ptr[--this->length];
> │         ptr[this->length].~el();
> │         new (&ptr[this->length]) el();
> │         return x;
> │     }
> │     // Should be used only during initialization.
> │     __host__ __device__ void unsafe_set_length(default_int i)
> {
> │         assert("The new length should be in range." && 0 <= i
> && i <= max_length);
> │         this->length = i;
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_list
> │ {
> │     sptr<dynamic_array_list_base<el, max_length>> ptr;
> │ 
> │     __host__ __device__ dynamic_array_list() = default;
> │     __host__ __device__ dynamic_array_list(default_int l) : 
> ptr(new dynamic_array_list_base<el, max_length>(l)) {}
> │ 
> │     __host__ __device__ el& operator[](default_int i) {
> │         return this->ptr.base->operator[](i);
> │     }
> │     __host__ __device__ void push(el& x) {
> │         this->ptr.base->push(x);
> │     }
> │     __host__ __device__ void push(el&& x) {
> │         this->ptr.base->push(std::move(x));
> │     }
> │     __host__ __device__ el pop() {
> │         return this->ptr.base->pop();
> │     }
> │     // Should be used only during initialization.
> │     __host__ __device__ void unsafe_set_length(default_int i)
> {
> │         this->ptr.base->unsafe_set_length(i);
> │     }
> │     __host__ __device__ default_int length_() {
> │         return this->ptr.base->length;
> │     }
> │ };
> │ #include "main.auto.cu"
> │ namespace Device {
> │ }
> │ int main_body() {
> │     int v3;
> │     v3 = ;
> │     return v3;
> │ }
> │ int main(){
> │     auto r = main_body();
> │     gpuErrchk(cudaDeviceSynchronize()); // This line is here 
> so the `__trap()` calls on the kernel aren't missed.
> │     return r;
> │ }
> │ ",
> │  [], 0)
> │ 00:00:57 v #2120 Supervisor.buildFile / ofSeqAsync / x: 
> (Some
> │    "// The types of these two will be replaced during 
> compilation by the Spiral code generator. 
> │ // It matches on `using default_int = ` and `;` with the 
> inner part being replaced so the form should be kept as is. 
> │ // The two statements need to begin at the start of a line.
> │ using default_int = int;
> │ using default_uint = unsigned int;
> │ 
> │ #ifndef __NVRTC__
> │ // NVRTC has these includes by default so they need to be 
> left out if it is used as the compiler.
> │ #include <new>
> │ #include <assert.h>
> │ #include <stdio.h>
> │ #endif
> │ 
> │ // For error checking on the host.
> │ #define gpuErrchk(ans) { gpuAssert((ans), __FILE__, 
> __LINE__); }
> │ template <typename T> inline __host__ __device__ void 
> destroy(T& obj) { obj.~T(); }
> │ inline void gpuAssert(cudaError error, const char *file, int 
> line, bool abort=true) {
> │     if (error != cudaSuccess) {
> │         fprintf(stderr, "GPUassert: %s %s %d\n", 
> cudaGetErrorString(error), file, line);
> │         if (abort) exit(error);
> │     }
> │ }
> │ 
> │ template <typename el>
> │ struct sptr // Shared pointer for the Spiral datatypes. They 
> have to have the refc field inside them to work.
> │ {
> │     el* base;
> │ 
> │     __host__ __device__ sptr() : base(nullptr) {}
> │     __host__ __device__ sptr(el* ptr) : base(ptr) { 
> this->base->refc++; }
> │ 
> │     __host__ __device__ ~sptr()
> │     {
> │         if (this->base != nullptr && --this->base->refc == 0)
> │         {
> │             delete this->base;
> │             this->base = nullptr;
> │         }
> │     }
> │ 
> │     __host__ __device__ sptr(sptr& x)
> │     {
> │         this->base = x.base;
> │         this->base->refc++;
> │     }
> │ 
> │     __host__ __device__ sptr(sptr&& x)
> │     {
> │         this->base = x.base;
> │         x.base = nullptr;
> │     }
> │ 
> │     __host__ __device__ sptr& operator=(sptr& x)
> │     {
> │         if (this->base != x.base)
> │         {
> │             delete this->base;
> │             this->base = x.base;
> │             this->base->refc++;
> │         }
> │         return *this;
> │     }
> │ 
> │     __host__ __device__ sptr& operator=(sptr&& x)
> │     {
> │         if (this->base != x.base)
> │         {
> │             delete this->base;
> │             this->base = x.base;
> │             x.base = nullptr;
> │         }
> │         return *this;
> │     }
> │ };
> │ 
> │ template <typename el>
> │ struct csptr : public sptr<el>
> │ { // Shared pointer for closures specifically.
> │     using sptr<el>::sptr;
> │     template <typename... Args>
> │     __host__ __device__ auto operator()(Args... args) -> 
> decltype(this->base->operator()(args...))
> │     {
> │         return this->base->operator()(args...);
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct static_array
> │ {
> │     el ptr[max_length];
> │     __host__ __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < max_length);
> │         return this->ptr[i];
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct static_array_list
> │ {
> │     default_int length{ 0 };
> │     el ptr[max_length];
> │ 
> │     __host__ __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │     __host__ __device__ void push(el& x) {
> │         ptr[this->length++] = x;
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __host__ __device__ void push(el&& x) {
> │         ptr[this->length++] = std::move(x);
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __host__ __device__ el pop() {
> │         assert("The array before popping should be greater 
> than 0." && 0 < this->length);
> │         auto x = ptr[--this->length];
> │         ptr[this->length].~el();
> │         new (&ptr[this->length]) el();
> │         return x;
> │     }
> │     // Should be used only during initialization.
> │     __host__ __device__ void unsafe_set_length(default_int i)
> {
> │         assert("The new length should be in range." && 0 <= i
> && i <= max_length);
> │         this->length = i;
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_base
> │ {
> │     int refc{ 0 };
> │     el* ptr;
> │ 
> │     __host__ __device__ dynamic_array_base() : ptr(new 
> el[max_length]) {}
> │     __host__ __device__ ~dynamic_array_base() { delete[] 
> this->ptr; }
> │ 
> │     __host__ __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array
> │ {
> │     sptr<dynamic_array_base<el, max_length>> ptr;
> │ 
> │     __host__ __device__ dynamic_array() = default;
> │     __host__ __device__ dynamic_array(bool t) : ptr(new 
> dynamic_array_base<el, max_length>()) {}
> │     __host__ __device__ el& operator[](default_int i) {
> │         return this->ptr.base->operator[](i);
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_list_base
> │ {
> │     int refc{ 0 };
> │     default_int length{ 0 };
> │     el* ptr;
> │ 
> │     __host__ __device__ dynamic_array_list_base() : ptr(new 
> el[max_length]) {}
> │     __host__ __device__ dynamic_array_list_base(default_int 
> l) : ptr(new el[max_length]) { this->unsafe_set_length(l); }
> │     __host__ __device__ ~dynamic_array_list_base() { delete[]
> this->ptr; }
> │ 
> │     __host__ __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │     __host__ __device__ void push(el& x) {
> │         ptr[this->length++] = x;
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __host__ __device__ void push(el&& x) {
> │         ptr[this->length++] = std::move(x);
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __host__ __device__ el pop() {
> │         assert("The array before popping should be greater 
> than 0." && 0 < this->length);
> │         auto x = ptr[--this->length];
> │         ptr[this->length].~el();
> │         new (&ptr[this->length]) el();
> │         return x;
> │     }
> │     // Should be used only during initialization.
> │     __host__ __device__ void unsafe_set_length(default_int i)
> {
> │         assert("The new length should be in range." && 0 <= i
> && i <= max_length);
> │         this->length = i;
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_list
> │ {
> │     sptr<dynamic_array_list_base<el, max_length>> ptr;
> │ 
> │     __host__ __device__ dynamic_array_list() = default;
> │     __host__ __device__ dynamic_array_list(default_int l) : 
> ptr(new dynamic_array_list_base<el, max_length>(l)) {}
> │ 
> │     __host__ __device__ el& operator[](default_int i) {
> │         return this->ptr.base->operator[](i);
> │     }
> │     __host__ __device__ void push(el& x) {
> │         this->ptr.base->push(x);
> │     }
> │     __host__ __device__ void push(el&& x) {
> │         this->ptr.base->push(std::move(x));
> │     }
> │     __host__ __device__ el pop() {
> │         return this->ptr.base->pop();
> │     }
> │     // Should be used only during initialization.
> │     __host__ __device__ void unsafe_set_length(default_int i)
> {
> │         this->ptr.base->unsafe_set_length(i);
> │     }
> │     __host__ __device__ default_int length_() {
> │         return this->ptr.base->length;
> │     }
> │ };
> │ #include "main.auto.cu"
> │ namespace Device {
> │ }
> │ int main_body() {
> │     int v3;
> │     v3 = ;
> │     return v3;
> │ }
> │ int main(){
> │     auto r = main_body();
> │     gpuErrchk(cudaDeviceSynchronize()); // This line is here 
> so the `__trap()` calls on the kernel aren't missed.
> │     return r;
> │ }
> │ ",
> │  [], 0)
> │ 00:00:57 v #2121 Supervisor.buildFile / result: [] / 
> buildFileResult: Some
> │   "// The types of these two will be replaced during 
> compilation by the Spiral code generator. 
> │ // It matches on `using default_int = ` and `;` with the 
> inner part being replaced so the form should be kept as is. 
> │ // The two statements need to begin at the start of a line.
> │ using default_int = int;
> │ using default_uint = unsigned int;
> │ 
> │ #ifndef __NVRTC__
> │ // NVRTC has these includes by default so they need to be 
> left out if it is used as the compiler.
> │ #include <new>
> │ #include <assert.h>
> │ #include <stdio.h>
> │ #endif
> │ 
> │ // For error checking on the host.
> │ #define gpuErrchk(ans) { gpuAssert((ans), __FILE__, 
> __LINE__); }
> │ template <typename T> inline __host__ __device__ void 
> destroy(T& obj) { obj.~T(); }
> │ inline void gpuAssert(cudaError error, const char *file, int 
> line, bool abort=true) {
> │     if (error != cudaSuccess) {
> │         fprintf(stderr, "GPUassert: %s %s %d\n", 
> cudaGetErrorString(error), file, line);
> │         if (abort) exit(error);
> │     }
> │ }
> │ 
> │ template <typename el>
> │ struct sptr // Shared pointer for the Spiral datatypes. They 
> have to have the refc field inside them to work.
> │ {
> │     el* base;
> │ 
> │     __host__ __device__ sptr() : base(nullptr) {}
> │     __host__ __device__ sptr(el* ptr) : base(ptr) { 
> this->base->refc++; }
> │ 
> │     __host__ __device__ ~sptr()
> │     {
> │         if (this->base != nullptr && --this->base->refc == 0)
> │         {
> │             delete this->base;
> │             this->base = nullptr;
> │         }
> │     }
> │ 
> │     __host__ __device__ sptr(sptr& x)
> │     {
> │         this->base = x.base;
> │         this->base->refc++;
> │     }
> │ 
> │     __host__ __device__ sptr(sptr&& x)
> │     {
> │         this->base = x.base;
> │         x.base = nullptr;
> │     }
> │ 
> │     __host__ __device__ sptr& operator=(sptr& x)
> │     {
> │         if (this->base != x.base)
> │         {
> │             delete this->base;
> │             this->base = x.base;
> │             this->base->refc++;
> │         }
> │         return *this;
> │     }
> │ 
> │     __host__ __device__ sptr& operator=(sptr&& x)
> │     {
> │         if (this->base != x.base)
> │         {
> │             delete this->base;
> │             this->base = x.base;
> │             x.base = nullptr;
> │         }
> │         return *this;
> │     }
> │ };
> │ 
> │ template <typename el>
> │ struct csptr : public sptr<el>
> │ { // Shared pointer for closures specifically.
> │     using sptr<el>::sptr;
> │     template <typename... Args>
> │     __host__ __device__ auto operator()(Args... args) -> 
> decltype(this->base->operator()(args...))
> │     {
> │         return this->base->operator()(args...);
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct static_array
> │ {
> │     el ptr[max_length];
> │     __host__ __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < max_length);
> │         return this->ptr[i];
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct static_array_list
> │ {
> │     default_int length{ 0 };
> │     el ptr[max_length];
> │ 
> │     __host__ __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │     __host__ __device__ void push(el& x) {
> │         ptr[this->length++] = x;
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __host__ __device__ void push(el&& x) {
> │         ptr[this->length++] = std::move(x);
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __host__ __device__ el pop() {
> │         assert("The array before popping should be greater 
> than 0." && 0 < this->length);
> │         auto x = ptr[--this->length];
> │         ptr[this->length].~el();
> │         new (&ptr[this->length]) el();
> │         return x;
> │     }
> │     // Should be used only during initialization.
> │     __host__ __device__ void unsafe_set_length(default_int i)
> {
> │         assert("The new length should be in range." && 0 <= i
> && i <= max_length);
> │         this->length = i;
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_base
> │ {
> │     int refc{ 0 };
> │     el* ptr;
> │ 
> │     __host__ __device__ dynamic_array_base() : ptr(new 
> el[max_length]) {}
> │     __host__ __device__ ~dynamic_array_base() { delete[] 
> this->ptr; }
> │ 
> │     __host__ __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array
> │ {
> │     sptr<dynamic_array_base<el, max_length>> ptr;
> │ 
> │     __host__ __device__ dynamic_array() = default;
> │     __host__ __device__ dynamic_array(bool t) : ptr(new 
> dynamic_array_base<el, max_length>()) {}
> │     __host__ __device__ el& operator[](default_int i) {
> │         return this->ptr.base->operator[](i);
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_list_base
> │ {
> │     int refc{ 0 };
> │     default_int length{ 0 };
> │     el* ptr;
> │ 
> │     __host__ __device__ dynamic_array_list_base() : ptr(new 
> el[max_length]) {}
> │     __host__ __device__ dynamic_array_list_base(default_int 
> l) : ptr(new el[max_length]) { this->unsafe_set_length(l); }
> │     __host__ __device__ ~dynamic_array_list_base() { delete[]
> this->ptr; }
> │ 
> │     __host__ __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │     __host__ __device__ void push(el& x) {
> │         ptr[this->length++] = x;
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __host__ __device__ void push(el&& x) {
> │         ptr[this->length++] = std::move(x);
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __host__ __device__ el pop() {
> │         assert("The array before popping should be greater 
> than 0." && 0 < this->length);
> │         auto x = ptr[--this->length];
> │         ptr[this->length].~el();
> │         new (&ptr[this->length]) el();
> │         return x;
> │     }
> │     // Should be used only during initialization.
> │     __host__ __device__ void unsafe_set_length(default_int i)
> {
> │         assert("The new length should be in range." && 0 <= i
> && i <= max_length);
> │         this->length = i;
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_list
> │ {
> │     sptr<dynamic_array_list_base<el, max_length>> ptr;
> │ 
> │     __host__ __device__ dynamic_array_list() = default;
> │     __host__ __device__ dynamic_array_list(default_int l) : 
> ptr(new dynamic_array_list_base<el, max_length>(l)) {}
> │ 
> │     __host__ __device__ el& operator[](default_int i) {
> │         return this->ptr.base->operator[](i);
> │     }
> │     __host__ __device__ void push(el& x) {
> │         this->ptr.base->push(x);
> │     }
> │     __host__ __device__ void push(el&& x) {
> │         this->ptr.base->push(std::move(x));
> │     }
> │     __host__ __device__ el pop() {
> │         return this->ptr.base->pop();
> │     }
> │     // Should be used only during initialization.
> │     __host__ __device__ void unsafe_set_length(default_int i)
> {
> │         this->ptr.base->unsafe_set_length(i);
> │     }
> │     __host__ __device__ default_int length_() {
> │         return this->ptr.base->length;
> │     }
> │ };
> │ #include "main.auto.cu"
> │ namespace Device {
> │ }
> │ int main_body() {
> │     int v3;
> │     v3 = ;
> │     return v3;
> │ }
> │ int main(){
> │     auto r = main_body();
> │     gpuErrchk(cudaDeviceSynchronize()); // This line is here 
> so the `__trap()` calls on the kernel aren't missed.
> │     return r;
> │ }
> │ " / typeErrorCount: 0
> │ 00:00:57 v #2122 Supervisor.buildFile / retry: 0 / 
> typeErrorCount: 0 / fileDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a702c5b29a050ecc
> fe7c911beeea63f353f61e71985bbebdb653ac32f3395c52 / targetDir: 
> /home/runner/work/polyglot/polyglot/target
> │ Some
> │   (Some
> │      "// The types of these two will be replaced during 
> compilation by the Spiral code generator. 
> │ // It matches on `using default_int = ` and `;` with the 
> inner part being replaced so the form should be kept as is. 
> │ // The two statements need to begin at the start of a line.
> │ using default_int = int;
> │ using default_uint = unsigned int;
> │ 
> │ #ifndef __NVRTC__
> │ // NVRTC has these includes by default so they need to be 
> left out if it is used as the compiler.
> │ #include <new>
> │ #include <assert.h>
> │ #include <stdio.h>
> │ #endif
> │ 
> │ // For error checking on the host.
> │ #define gpuErrchk(ans) { gpuAssert((ans), __FILE__, 
> __LINE__); }
> │ template <typename T> inline __host__ __device__ void 
> destroy(T& obj) { obj.~T(); }
> │ inline void gpuAssert(cudaError error, const char *file, int 
> line, bool abort=true) {
> │     if (error != cudaSuccess) {
> │         fprintf(stderr, "GPUassert: %s %s %d\n", 
> cudaGetErrorString(error), file, line);
> │         if (abort) exit(error);
> │     }
> │ }
> │ 
> │ template <typename el>
> │ struct sptr // Shared pointer for the Spiral datatypes. They 
> have to have the refc field inside them to work.
> │ {
> │     el* base;
> │ 
> │     __host__ __device__ sptr() : base(nullptr) {}
> │     __host__ __device__ sptr(el* ptr) : base(ptr) { 
> this->base->refc++; }
> │ 
> │     __host__ __device__ ~sptr()
> │     {
> │         if (this->base != nullptr && --this->base->refc == 0)
> │         {
> │             delete this->base;
> │             this->base = nullptr;
> │         }
> │     }
> │ 
> │     __host__ __device__ sptr(sptr& x)
> │     {
> │         this->base = x.base;
> │         this->base->refc++;
> │     }
> │ 
> │     __host__ __device__ sptr(sptr&& x)
> │     {
> │         this->base = x.base;
> │         x.base = nullptr;
> │     }
> │ 
> │     __host__ __device__ sptr& operator=(sptr& x)
> │     {
> │         if (this->base != x.base)
> │         {
> │             delete this->base;
> │             this->base = x.base;
> │             this->base->refc++;
> │         }
> │         return *this;
> │     }
> │ 
> │     __host__ __device__ sptr& operator=(sptr&& x)
> │     {
> │         if (this->base != x.base)
> │         {
> │             delete this->base;
> │             this->base = x.base;
> │             x.base = nullptr;
> │         }
> │         return *this;
> │     }
> │ };
> │ 
> │ template <typename el>
> │ struct csptr : public sptr<el>
> │ { // Shared pointer for closures specifically.
> │     using sptr<el>::sptr;
> │     template <typename... Args>
> │     __host__ __device__ auto operator()(Args... args) -> 
> decltype(this->base->operator()(args...))
> │     {
> │         return this->base->operator()(args...);
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct static_array
> │ {
> │     el ptr[max_length];
> │     __host__ __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < max_length);
> │         return this->ptr[i];
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct static_array_list
> │ {
> │     default_int length{ 0 };
> │     el ptr[max_length];
> │ 
> │     __host__ __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │     __host__ __device__ void push(el& x) {
> │         ptr[this->length++] = x;
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __host__ __device__ void push(el&& x) {
> │         ptr[this->length++] = std::move(x);
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __host__ __device__ el pop() {
> │         assert("The array before popping should be greater 
> than 0." && 0 < this->length);
> │         auto x = ptr[--this->length];
> │         ptr[this->length].~el();
> │         new (&ptr[this->length]) el();
> │         return x;
> │     }
> │     // Should be used only during initialization.
> │     __host__ __device__ void unsafe_set_length(default_int i)
> {
> │         assert("The new length should be in range." && 0 <= i
> && i <= max_length);
> │         this->length = i;
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_base
> │ {
> │     int refc{ 0 };
> │     el* ptr;
> │ 
> │     __host__ __device__ dynamic_array_base() : ptr(new 
> el[max_length]) {}
> │     __host__ __device__ ~dynamic_array_base() { delete[] 
> this->ptr; }
> │ 
> │     __host__ __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array
> │ {
> │     sptr<dynamic_array_base<el, max_length>> ptr;
> │ 
> │     __host__ __device__ dynamic_array() = default;
> │     __host__ __device__ dynamic_array(bool t) : ptr(new 
> dynamic_array_base<el, max_length>()) {}
> │     __host__ __device__ el& operator[](default_int i) {
> │         return this->ptr.base->operator[](i);
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_list_base
> │ {
> │     int refc{ 0 };
> │     default_int length{ 0 };
> │     el* ptr;
> │ 
> │     __host__ __device__ dynamic_array_list_base() : ptr(new 
> el[max_length]) {}
> │     __host__ __device__ dynamic_array_list_base(default_int 
> l) : ptr(new el[max_length]) { this->unsafe_set_length(l); }
> │     __host__ __device__ ~dynamic_array_list_base() { delete[]
> this->ptr; }
> │ 
> │     __host__ __device__ el& operator[](default_int i) {
> │         assert("The index has to be in range." && 0 <= i && i
> < this->length);
> │         return this->ptr[i];
> │     }
> │     __host__ __device__ void push(el& x) {
> │         ptr[this->length++] = x;
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __host__ __device__ void push(el&& x) {
> │         ptr[this->length++] = std::move(x);
> │         assert("The array after pushing should not be greater
> than max length." && this->length <= max_length);
> │     }
> │     __host__ __device__ el pop() {
> │         assert("The array before popping should be greater 
> than 0." && 0 < this->length);
> │         auto x = ptr[--this->length];
> │         ptr[this->length].~el();
> │         new (&ptr[this->length]) el();
> │         return x;
> │     }
> │     // Should be used only during initialization.
> │     __host__ __device__ void unsafe_set_length(default_int i)
> {
> │         assert("The new length should be in range." && 0 <= i
> && i <= max_length);
> │         this->length = i;
> │     }
> │ };
> │ 
> │ template <typename el, default_int max_length>
> │ struct dynamic_array_list
> │ {
> │     sptr<dynamic_array_list_base<el, max_length>> ptr;
> │ 
> │     __host__ __device__ dynamic_array_list() = default;
> │     __host__ __device__ dynamic_array_list(default_int l) : 
> ptr(new dynamic_array_list_base<el, max_length>(l)) {}
> │ 
> │     __host__ __device__ el& operator[](default_int i) {
> │         return this->ptr.base->operator[](i);
> │     }
> │     __host__ __device__ void push(el& x) {
> │         this->ptr.base->push(x);
> │     }
> │     __host__ __device__ void push(el&& x) {
> │         this->ptr.base->push(std::move(x));
> │     }
> │     __host__ __device__ el pop() {
> │         return this->ptr.base->pop();
> │     }
> │     // Should be used only during initialization.
> │     __host__ __device__ void unsafe_set_length(default_int i)
> {
> │         this->ptr.base->unsafe_set_length(i);
> │     }
> │     __host__ __device__ default_int length_() {
> │         return this->ptr.base->length;
> │     }
> │ };
> │ #include "main.auto.cu"
> │ namespace Device {
> │ }
> │ int main_body() {
> │     int v3;
> │     v3 = ;
> │     return v3;
> │ }
> │ int main(){
> │     auto r = main_body();
> │     gpuErrchk(cudaDeviceSynchronize()); // This line is here 
> so the `__trap()` calls on the kernel aren't missed.
> │     return r;
> │ }
> │ ",
> │    [])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """
> inl init_series start end inc =
>     inl total : f64 = conv ((end - start) / inc) + 1
>     listm.init total (conv >> (*) inc >> (+) start) : list f64
> 
> type integration = (f64 -> f64) -> f64 -> f64 -> f64
> 
> inl integral dt : integration =
>     fun f a b =>
>         init_series (a + dt / 2) (b - dt / 2) dt
>         |> listm.map (f >> (*) dt)
>         |> listm.fold (+) 0
> 
> inl main () =
>     integral 0.1 (fun x => x ** 2) 0 1
> """
> |> fun code -> Spi (code, None)
> |> buildCode Gleam [[||]] false 10000 None
> |> Async.runWithTimeout 11000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         Some "pub fn main () { 0.3325000000000001\n }",
>         [[]]
>     )
> )
> 
> ── [ 422.72ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:00:58 v #2144 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/9fee147a19a3a90a
> b5113d3c8fb7b0b2072de018aa3d73cd2d4eb0e7e7a32620/src/main.spi
> │ 00:00:58 v #2145 Supervisor.buildFile / AsyncSeq.scan / 
> outputContent:
> │ ' / errors: [] / outputContentResult:  / typeErrorCount: 0 / 
> retry: 0 / error:  / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/9fee147a19a3a90a
> b5113d3c8fb7b0b2072de018aa3d73cd2d4eb0e7e7a32620/src/main.spi'
> │ 00:00:58 v #2146 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/9fee147a19a3a90a
> b5113d3c8fb7b0b2072de018aa3d73cd2d4eb0e7e7a32620/src/main.spi
> │ 00:00:58 v #2147 Supervisor.buildFile / fullPathUri: 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/9fee147a
> 19a3a90ab5113d3c8fb7b0b2072de018aa3d73cd2d4eb0e7e7a32620/src/main.spi"
> │ 00:00:58 v #2148 Supervisor.buildFile / _fileOpenResult:
> <null>
> │ 00:00:58 v #2149 Supervisor.buildFile / before result: 
> ()
> │ 00:00:58 v #2387 Supervisor.buildFile / buildFileResult:
> Some "pub fn main () { 0.3325000000000001
> │  }"
> │ 00:00:58 v #2388 Supervisor.buildFile / 
> outputContentSeq2 unfoldAsync / msg: (Some "pub fn main () { 0.3325000000000001
> │  }", [], 0)
> │ 00:00:58 v #2389 Supervisor.buildFile / ofSeqAsync / x: 
> (Some "pub fn main () { 0.3325000000000001
> │  }", [], 0)
> │ 00:00:58 v #2390 Supervisor.buildFile / result: [] / 
> buildFileResult: Some "pub fn main () { 0.3325000000000001
> │  }" / typeErrorCount: 0
> │ 00:00:58 v #2391 Supervisor.buildFile / retry: 0 / 
> typeErrorCount: 0 / fileDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/9fee147a19a3a90a
> b5113d3c8fb7b0b2072de018aa3d73cd2d4eb0e7e7a32620/src / targetDir: 
> /home/runner/work/polyglot/polyglot/target
> │ Some (Some "pub fn main () { 0.3325000000000001
> │  }", [])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> SpiralTrace.TraceLevel.US0_0 |> set_trace_level
> """
> inl init_series start end inc =
>     inl total : f64 = conv ((end - start) / inc) + 1
>     listm.init total (conv >> (*) inc >> (+) start) : list f64
> 
> type integration = (f64 -> f64) -> f64 -> f64 -> f64
> 
> inl integral dt : integration =
>     fun f a b =>
>         init_series (a + dt / 2) (b - dt / 2) dt
>         |> listm.map (f >> (*) dt)
>         |> listm.fold (+) 0
> 
> inl main () =
>     integral 0.01 (fun x => x ** 2) 0 1
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 10000 None
> |> Async.runWithTimeout 11000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         Some "0.33332500000000004\n",
>         [[]]
>     )
> )
> // |> _assertEqual None
> // |> fun x -> printfn $"{x.ToDisplayString ()}"
> 
> ── [ 342.54ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:00:58 v #2415 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce
> 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi
> │ 00:00:58 v #2416 Supervisor.buildFile / AsyncSeq.scan / 
> outputContent:
> │ ' / errors: [] / outputContentResult:  / typeErrorCount: 0 / 
> retry: 0 / error:  / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce
> 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi'
> │ 00:00:58 v #2417 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce
> 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi
> │ 00:00:58 v #2418 Supervisor.buildFile / fullPathUri: 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d9
> 7e6b50ce3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi"
> │ 00:00:58 v #2419 Supervisor.buildFile / _fileOpenResult:
> <null>
> │ 00:00:58 v #2420 Supervisor.buildFile / before result: 
> ()
> │ 00:00:58 v #2657 Supervisor.buildFile / buildFileResult:
> Some "0.33332500000000004
> │ "
> │ 00:00:58 v #2658 Supervisor.buildFile / 
> outputContentSeq2 unfoldAsync / msg: (Some "0.33332500000000004
> │ ", [], 0)
> │ 00:00:58 v #2659 Supervisor.buildFile / ofSeqAsync / x: 
> (Some "0.33332500000000004
> │ ", [], 0)
> │ 00:00:58 v #2660 Supervisor.buildFile / result: [] / 
> buildFileResult: Some "0.33332500000000004
> │ " / typeErrorCount: 0
> │ 00:00:58 v #2661 Supervisor.buildFile / retry: 0 / 
> typeErrorCount: 0 / fileDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce
> 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4 / targetDir: 
> /home/runner/work/polyglot/polyglot/target
> │ Some (Some "0.33332500000000004
> │ ", [])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> SpiralTrace.TraceLevel.US0_0 |> set_trace_level
> ""
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 10000 None
> |> Async.runWithTimeout 11000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[ "Cannot find `main` in file main." ]]
>     )
> )
> 
> ── [ 399.20ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:00:58 v #2683 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9
> 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi
> │ 00:00:58 v #2684 Supervisor.buildFile / AsyncSeq.scan / 
> outputContent:
> │ ' / errors: [] / outputContentResult:  / typeErrorCount: 0 / 
> retry: 0 / error:  / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9
> 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi'
> │ 00:00:58 v #2685 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9
> 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi
> │ 00:00:58 v #2686 Supervisor.buildFile / fullPathUri: 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342cc
> c7da0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi"
> │ 00:00:58 v #2687 Supervisor.buildFile / _fileOpenResult:
> <null>
> │ 00:00:58 v #2688 Supervisor.buildFile / before result: 
> ()
> │ 00:00:59 v #2929 Supervisor.buildFile / buildFileResult:
> None
> │ 00:00:59 v #2930 Supervisor.buildFile / ofSeqAsync / x: 
> (None, [], 0)
> │ 00:00:59 v #2943 Supervisor.buildFile / AsyncSeq.scan / 
> outputContent:
> │ ' / errors: [] / outputContentResult:  / typeErrorCount: 0 / 
> retry: 0 / error: Some((Cannot find `main` in file main., FatalError "Cannot 
> find `main` in file main.")) / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9
> 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi'
> │ 00:00:59 v #2944 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [
> │   [
> │     "Cannot find `main` in file main.",
> │     {
> │       "FatalError": "Cannot find `main` in file main."
> │     }
> │   ]
> │ ] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9
> 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi
> │ 00:00:59 v #2951 Supervisor.buildFile / outputChild / x:
> Some
> │   (Ok
> │      (Some
> │         (None,
> │          [("Cannot find `main` in file main.",
> │            FatalError "Cannot find `main` in file main.")], 
> 0)))
> │ 00:00:59 v #2953 Supervisor.buildFile / ofSeqAsync / x: 
> (None,
> │  [("Cannot find `main` in file main.",
> │    FatalError "Cannot find `main` in file main.")], 0)
> │ 00:00:59 v #2954 Supervisor.buildFile / result: 
> [("Cannot find `main` in file main.",
> │   FatalError "Cannot find `main` in file main.")] / 
> buildFileResult: None / typeErrorCount: 0
> │ 00:00:59 v #2955 Supervisor.buildFile / retry: 0 / 
> typeErrorCount: 0 / fileDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9
> 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa / targetDir: 
> /home/runner/work/polyglot/polyglot/target
> │ Some (None, ["Cannot find `main` in file main."])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> SpiralTrace.TraceLevel.US0_0 |> set_trace_level
> """inl main () =
>     1i32 / 0i32
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 10000 None
> |> Async.runWithTimeout 11000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[ "An attempt to divide by zero has been detected at compile time." ]]
>     )
> )
> 
> ── [ 384.99ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:00:59 v #2973 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi
> │ 00:00:59 v #2974 Supervisor.buildFile / AsyncSeq.scan / 
> outputContent:
> │ ' / errors: [] / outputContentResult:  / typeErrorCount: 0 / 
> retry: 0 / error:  / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi'
> │ 00:00:59 v #2975 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi
> │ 00:00:59 v #2976 Supervisor.buildFile / fullPathUri: 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d
> 9b06b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi"
> │ 00:00:59 v #2977 Supervisor.buildFile / _fileOpenResult:
> <null>
> │ 00:00:59 v #2978 Supervisor.buildFile / before result: 
> ()
> │ 00:00:59 v #3215 Supervisor.buildFile / buildFileResult:
> None
> │ 00:00:59 v #3216 Supervisor.buildFile / ofSeqAsync / x: 
> (None, [], 0)
> │ 00:00:59 v #3217 Supervisor.buildFile / AsyncSeq.scan / 
> outputContent:
> │ ' / errors: [] / outputContentResult:  / typeErrorCount: 0 / 
> retry: 0 / error: Some((An attempt to divide by zero has been detected at 
> compile time., TracedError
> │   { message = "An attempt to divide by zero has been detected
> at compile time."
> │     trace =
> │      ["Error trace on line: 1, column: 10 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi .
> │ inl main () =
> │          ^
> │ ";
> │       "Error trace on line: 2, column: 5 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi .
> │     1i32 / 0i32
> │     ^
> │ "] })) / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi'
> │ 00:00:59 v #3218 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [
> │   [
> │     "An attempt to divide by zero has been detected at 
> compile time.",
> │     {
> │       "TracedError": {
> │         "message": "An attempt to divide by zero has been 
> detected at compile time.",
> │         "trace": [
> │           "Error trace on line: 1, column: 10 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi .
> │ inl main () =
> │          ^
> │ ",
> │           "Error trace on line: 2, column: 5 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi .
> │     1i32 / 0i32
> │     ^
> │ "
> │         ]
> │       }
> │     }
> │   ]
> │ ] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi
> │ 00:00:59 v #3220 Supervisor.buildFile / outputChild / x:
> Some
> │   (Ok
> │      (Some
> │         (None,
> │          [("An attempt to divide by zero has been detected at
> compile time.",
> │            TracedError
> │              { message =
> │                 "An attempt to divide by zero has been 
> detected at compile time."
> │                trace =
> │                 ["Error trace on line: 1, column: 10 in 
> module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi .
> │ inl main () =
> │          ^
> │ ";
> │                  "Error trace on line: 2, column: 5 in 
> module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi .
> │     1i32 / 0i32
> │     ^
> │ "] })],
> │          0)))
> │ 00:00:59 v #3221 Supervisor.buildFile / ofSeqAsync / x: 
> (None,
> │  [("An attempt to divide by zero has been detected at compile
> time.",
> │    TracedError
> │      { message =
> │         "An attempt to divide by zero has been detected at 
> compile time."
> │        trace =
> │         ["Error trace on line: 1, column: 10 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi .
> │ inl main () =
> │          ^
> │ ";
> │          "Error trace on line: 2, column: 5 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi .
> │     1i32 / 0i32
> │     ^
> │ "] })],
> │  0)
> │ 00:00:59 v #3222 Supervisor.buildFile / result: [("An 
> attempt to divide by zero has been detected at compile time.",
> │   TracedError
> │     { message =
> │        "An attempt to divide by zero has been detected at 
> compile time."
> │       trace =
> │        ["Error trace on line: 1, column: 10 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi .
> │ inl main () =
> │          ^
> │ ";
> │         "Error trace on line: 2, column: 5 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi .
> │     1i32 / 0i32
> │     ^
> │ "] })] / buildFileResult: None / typeErrorCount: 0
> │ 00:00:59 v #3223 Supervisor.buildFile / retry: 0 / 
> typeErrorCount: 0 / fileDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2 / targetDir: 
> /home/runner/work/polyglot/polyglot/target
> │ Some (None, ["An attempt to divide by zero has been detected 
> at compile time."])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> SpiralTrace.TraceLevel.US0_0 |> set_trace_level
> """
> inl main () =
>     real
>         inl unbox_real forall a. (obj : a) : a =
>             typecase obj with
>             | _ => obj
>         unbox_real ()
>     ()
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 10000 None
> |> Async.runWithTimeout 11000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[ "Cannot apply a forall with a term." ]]
>     )
> )
> 
> ── [ 325.54ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:00:59 v #3241 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi
> │ 00:00:59 v #3242 Supervisor.buildFile / AsyncSeq.scan / 
> outputContent:
> │ ' / errors: [] / outputContentResult:  / typeErrorCount: 0 / 
> retry: 0 / error:  / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi'
> │ 00:00:59 v #3243 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi
> │ 00:00:59 v #3244 Supervisor.buildFile / fullPathUri: 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/66752865
> 9dc2e5af51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi"
> │ 00:00:59 v #3245 Supervisor.buildFile / _fileOpenResult:
> <null>
> │ 00:00:59 v #3246 Supervisor.buildFile / before result: 
> ()
> │ 00:00:59 v #3483 Supervisor.buildFile / buildFileResult:
> None
> │ 00:00:59 v #3484 Supervisor.buildFile / ofSeqAsync / x: 
> (None, [], 0)
> │ 00:00:59 v #3485 Supervisor.buildFile / AsyncSeq.scan / 
> outputContent:
> │ ' / errors: [] / outputContentResult:  / typeErrorCount: 0 / 
> retry: 0 / error: Some((Cannot apply a forall with a term., TracedError
> │   { message = "Cannot apply a forall with a term."
> │     trace =
> │      ["Error trace on line: 2, column: 10 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │ inl main () =
> │          ^
> │ ";
> │       "Error trace on line: 4, column: 9 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │         inl unbox_real forall a. (obj : a) : a =
> │         ^
> │ ";
> │       "Error trace on line: 7, column: 9 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │         unbox_real ()
> │         ^
> │ "] })) / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi'
> │ 00:00:59 v #3486 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [
> │   [
> │     "Cannot apply a forall with a term.",
> │     {
> │       "TracedError": {
> │         "message": "Cannot apply a forall with a term.",
> │         "trace": [
> │           "Error trace on line: 2, column: 10 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │ inl main () =
> │          ^
> │ ",
> │           "Error trace on line: 4, column: 9 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │         inl unbox_real forall a. (obj : a) : a =
> │         ^
> │ ",
> │           "Error trace on line: 7, column: 9 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │         unbox_real ()
> │         ^
> │ "
> │         ]
> │       }
> │     }
> │   ]
> │ ] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi
> │ 00:00:59 v #3488 Supervisor.buildFile / outputChild / x:
> Some
> │   (Ok
> │      (Some
> │         (None,
> │          [("Cannot apply a forall with a term.",
> │            TracedError
> │              { message = "Cannot apply a forall with a term."
> │                trace =
> │                 ["Error trace on line: 2, column: 10 in 
> module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │ inl main () =
> │          ^
> │ ";
> │                  "Error trace on line: 4, column: 9 in 
> module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │         inl unbox_real forall a. (obj : a) : a =
> │         ^
> │ ";
> │                  "Error trace on line: 7, column: 9 in 
> module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │         unbox_real ()
> │         ^
> │ "] })],
> │          0)))
> │ 00:00:59 v #3489 Supervisor.buildFile / ofSeqAsync / x: 
> (None,
> │  [("Cannot apply a forall with a term.",
> │    TracedError
> │      { message = "Cannot apply a forall with a term."
> │        trace =
> │         ["Error trace on line: 2, column: 10 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │ inl main () =
> │          ^
> │ ";
> │          "Error trace on line: 4, column: 9 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │         inl unbox_real forall a. (obj : a) : a =
> │         ^
> │ ";
> │          "Error trace on line: 7, column: 9 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │         unbox_real ()
> │         ^
> │ "] })],
> │  0)
> │ 00:00:59 v #3490 Supervisor.buildFile / result: 
> [("Cannot apply a forall with a term.",
> │   TracedError
> │     { message = "Cannot apply a forall with a term."
> │       trace =
> │        ["Error trace on line: 2, column: 10 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │ inl main () =
> │          ^
> │ ";
> │         "Error trace on line: 4, column: 9 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │         inl unbox_real forall a. (obj : a) : a =
> │         ^
> │ ";
> │         "Error trace on line: 7, column: 9 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │         unbox_real ()
> │         ^
> │ "] })] / buildFileResult: None / typeErrorCount: 0
> │ 00:00:59 v #3491 Supervisor.buildFile / retry: 0 / 
> typeErrorCount: 0 / fileDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a / targetDir: 
> /home/runner/work/polyglot/polyglot/target
> │ Some (None, ["Cannot apply a forall with a term."])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> SpiralTrace.TraceLevel.US0_0 |> set_trace_level
> """
> inl main () =
>     real
>         inl unbox_real forall a. (obj : a) : a =
>             typecase obj with
>             | _ => obj
>         unbox_real `i32 1
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 10000 None
> |> Async.runWithTimeout 11000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[ "The main function should not have a forall." ]]
>     )
> )
> 
> ── [ 359.08ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:00:59 v #3509 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79
> 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi
> │ 00:00:59 v #3510 Supervisor.buildFile / AsyncSeq.scan / 
> outputContent:
> │ ' / errors: [] / outputContentResult:  / typeErrorCount: 0 / 
> retry: 0 / error:  / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79
> 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi'
> │ 00:00:59 v #3511 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79
> 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi
> │ 00:00:59 v #3512 Supervisor.buildFile / fullPathUri: 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42
> df309b790acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi"
> │ 00:00:59 v #3513 Supervisor.buildFile / _fileOpenResult:
> <null>
> │ 00:00:59 v #3514 Supervisor.buildFile / before result: 
> ()
> │ 00:01:00 v #3751 Supervisor.buildFile / buildFileResult:
> None
> │ 00:01:00 v #3752 Supervisor.buildFile / ofSeqAsync / x: 
> (None, [], 0)
> │ 00:01:00 v #3753 Supervisor.buildFile / AsyncSeq.scan / 
> outputContent:
> │ ' / errors: [] / outputContentResult:  / typeErrorCount: 0 / 
> retry: 0 / error: Some((The main function should not have a forall., TracedError
> { message = "The main function should not have a forall."
> │               trace = [] })) / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79
> 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi'
> │ 00:01:00 v #3754 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [
> │   [
> │     "The main function should not have a forall.",
> │     {
> │       "TracedError": {
> │         "message": "The main function should not have a 
> forall.",
> │         "trace": []
> │       }
> │     }
> │   ]
> │ ] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79
> 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi
> │ 00:01:00 v #3756 Supervisor.buildFile / outputChild / x:
> Some
> │   (Ok
> │      (Some
> │         (None,
> │          [("The main function should not have a forall.",
> │            TracedError { message = "The main function should 
> not have a forall."
> │                          trace = [] })], 0)))
> │ 00:01:00 v #3757 Supervisor.buildFile / ofSeqAsync / x: 
> (None,
> │  [("The main function should not have a forall.",
> │    TracedError { message = "The main function should not have
> a forall."
> │                  trace = [] })], 0)
> │ 00:01:00 v #3758 Supervisor.buildFile / result: [("The 
> main function should not have a forall.",
> │   TracedError { message = "The main function should not have 
> a forall."
> │                 trace = [] })] / buildFileResult: None / 
> typeErrorCount: 0
> │ 00:01:00 v #3759 Supervisor.buildFile / retry: 0 / 
> typeErrorCount: 0 / fileDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79
> 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f / targetDir: 
> /home/runner/work/polyglot/polyglot/target
> │ Some (None, ["The main function should not have a forall."])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> SpiralTrace.TraceLevel.US0_0 |> set_trace_level
> """
> inl main () =
>     real
>         inl unbox_real forall a. (obj : a) : a =
>             typecase obj with
>             | _ => obj
>         unbox_real ()
>     ()
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 10000 None
> |> Async.runWithTimeout 11000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[ "Cannot apply a forall with a term." ]]
>     )
> )
> 
> ── [ 340.49ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:01:00 v #3776 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi
> │ 00:01:00 v #3777 Supervisor.buildFile / AsyncSeq.scan / 
> outputContent:
> │ ' / errors: [] / outputContentResult:  / typeErrorCount: 0 / 
> retry: 0 / error:  / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi'
> │ 00:01:00 v #3778 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi
> │ 00:01:00 v #3779 Supervisor.buildFile / fullPathUri: 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/66752865
> 9dc2e5af51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi"
> │ 00:01:00 v #3780 Supervisor.buildFile / _fileOpenResult:
> <null>
> │ 00:01:00 v #3781 Supervisor.buildFile / before result: 
> ()
> │ 00:01:00 v #4018 Supervisor.buildFile / buildFileResult:
> None
> │ 00:01:00 v #4019 Supervisor.buildFile / ofSeqAsync / x: 
> (None, [], 0)
> │ 00:01:00 v #4020 Supervisor.buildFile / AsyncSeq.scan / 
> outputContent:
> │ ' / errors: [] / outputContentResult:  / typeErrorCount: 0 / 
> retry: 0 / error: Some((Cannot apply a forall with a term., TracedError
> │   { message = "Cannot apply a forall with a term."
> │     trace =
> │      ["Error trace on line: 2, column: 10 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │ inl main () =
> │          ^
> │ ";
> │       "Error trace on line: 4, column: 9 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │         inl unbox_real forall a. (obj : a) : a =
> │         ^
> │ ";
> │       "Error trace on line: 7, column: 9 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │         unbox_real ()
> │         ^
> │ "] })) / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi'
> │ 00:01:00 v #4021 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [
> │   [
> │     "Cannot apply a forall with a term.",
> │     {
> │       "TracedError": {
> │         "message": "Cannot apply a forall with a term.",
> │         "trace": [
> │           "Error trace on line: 2, column: 10 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │ inl main () =
> │          ^
> │ ",
> │           "Error trace on line: 4, column: 9 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │         inl unbox_real forall a. (obj : a) : a =
> │         ^
> │ ",
> │           "Error trace on line: 7, column: 9 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │         unbox_real ()
> │         ^
> │ "
> │         ]
> │       }
> │     }
> │   ]
> │ ] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi
> │ 00:01:00 v #4023 Supervisor.buildFile / outputChild / x:
> Some
> │   (Ok
> │      (Some
> │         (None,
> │          [("Cannot apply a forall with a term.",
> │            TracedError
> │              { message = "Cannot apply a forall with a term."
> │                trace =
> │                 ["Error trace on line: 2, column: 10 in 
> module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │ inl main () =
> │          ^
> │ ";
> │                  "Error trace on line: 4, column: 9 in 
> module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │         inl unbox_real forall a. (obj : a) : a =
> │         ^
> │ ";
> │                  "Error trace on line: 7, column: 9 in 
> module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │         unbox_real ()
> │         ^
> │ "] })],
> │          0)))
> │ 00:01:00 v #4024 Supervisor.buildFile / ofSeqAsync / x: 
> (None,
> │  [("Cannot apply a forall with a term.",
> │    TracedError
> │      { message = "Cannot apply a forall with a term."
> │        trace =
> │         ["Error trace on line: 2, column: 10 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │ inl main () =
> │          ^
> │ ";
> │          "Error trace on line: 4, column: 9 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │         inl unbox_real forall a. (obj : a) : a =
> │         ^
> │ ";
> │          "Error trace on line: 7, column: 9 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │         unbox_real ()
> │         ^
> │ "] })],
> │  0)
> │ 00:01:00 v #4025 Supervisor.buildFile / result: 
> [("Cannot apply a forall with a term.",
> │   TracedError
> │     { message = "Cannot apply a forall with a term."
> │       trace =
> │        ["Error trace on line: 2, column: 10 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │ inl main () =
> │          ^
> │ ";
> │         "Error trace on line: 4, column: 9 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │         inl unbox_real forall a. (obj : a) : a =
> │         ^
> │ ";
> │         "Error trace on line: 7, column: 9 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi .
> │         unbox_real ()
> │         ^
> │ "] })] / buildFileResult: None / typeErrorCount: 0
> │ 00:01:00 v #4026 Supervisor.buildFile / retry: 0 / 
> typeErrorCount: 0 / fileDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a / targetDir: 
> /home/runner/work/polyglot/polyglot/target
> │ Some (None, ["Cannot apply a forall with a term."])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> SpiralTrace.TraceLevel.US0_0 |> set_trace_level
> """inl main () =
>     1 + ""
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 10000 None
> |> Async.runWithTimeout 11000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[
>             "main.spi:
> Constraint satisfaction error.
> Got: string
> Fails to satisfy: number"
>         ]]
>     )
> )
> 
> ── [ 220.52ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:01:00 v #4044 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef
> cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi
> │ 00:01:00 v #4045 Supervisor.buildFile / AsyncSeq.scan / 
> outputContent:
> │ ' / errors: [] / outputContentResult:  / typeErrorCount: 0 / 
> retry: 0 / error:  / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef
> cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi'
> │ 00:01:00 v #4046 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef
> cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi
> │ 00:01:00 v #4047 Supervisor.buildFile / fullPathUri: 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f
> 8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"
> │ 00:01:00 v #4048 Supervisor.buildFile / _fileOpenResult:
> <null>
> │ 00:01:00 v #4049 Supervisor.buildFile / before result: 
> ()
> │ 00:01:00 v #4103 Supervisor.buildFile / AsyncSeq.scan / 
> outputContent:
> │ ' / errors: [] / outputContentResult:  / typeErrorCount: 0 / 
> retry: 0 / error: Some((main.spi:
> │ Constraint satisfaction error.
> │ Got: string
> │ Fails to satisfy: number, TypeErrors
> │   { errors =
> │      [(({ character = 8
> │           line = 1 }, { character = 10
> │                         line = 1 }),
> │        "Constraint satisfaction error.
> │ Got: string
> │ Fails to satisfy: number")]
> │     uri =
> │      
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f
> 8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" })) / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef
> cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi'
> │ 00:01:00 v #4105 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [
> │   [
> │     "main.spi:
> │ Constraint satisfaction error.
> │ Got: string
> │ Fails to satisfy: number",
> │     {
> │       "TypeErrors": {
> │         "errors": [
> │           [
> │             [
> │               {
> │                 "character": 8,
> │                 "line": 1
> │               },
> │               {
> │                 "character": 10,
> │                 "line": 1
> │               }
> │             ],
> │             "Constraint satisfaction error.
> │ Got: string
> │ Fails to satisfy: number"
> │           ]
> │         ],
> │         "uri": 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f
> 8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"
> │       }
> │     }
> │   ]
> │ ] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef
> cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi
> │ 00:01:00 v #4132 Supervisor.buildFile / outputContentSeq
> unfoldAsync / msg: (None,
> │  Some
> │    ("main.spi:
> │ Constraint satisfaction error.
> │ Got: string
> │ Fails to satisfy: number",
> │     TypeErrors
> │       { errors =
> │          [(({ character = 8
> │               line = 1 }, { character = 10
> │                             line = 1 }),
> │            "Constraint satisfaction error.
> │ Got: string
> │ Fails to satisfy: number")]
> │         uri =
> │          
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f
> 8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" }))
> │ 00:01:00 v #4134 Supervisor.buildFile / 
> takeWhileInclusive / TypeErrors trigger
> │ 00:01:00 v #4139 Supervisor.buildFile / outputChild / x:
> Some
> │   (Ok
> │      (Some
> │         (None,
> │          [("main.spi:
> │ Constraint satisfaction error.
> │ Got: string
> │ Fails to satisfy: number",
> │            TypeErrors
> │              { errors =
> │                 [(({ character = 8
> │                      line = 1 }, { character = 10
> │                                    line = 1 }),
> │                   "Constraint satisfaction error.
> │ Got: string
> │ Fails to satisfy: number")]
> │                uri =
> │                 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f
> 8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" })],
> │          0)))
> │ 00:01:00 v #4140 Supervisor.buildFile / outputChild |> 
> Async.map
> │ 00:01:00 v #4143 Supervisor.buildFile / 
> outputContentSeq2 unfoldAsync / msg: (None,
> │  [("main.spi:
> │ Constraint satisfaction error.
> │ Got: string
> │ Fails to satisfy: number",
> │    TypeErrors
> │      { errors =
> │         [(({ character = 8
> │              line = 1 }, { character = 10
> │                            line = 1 }),
> │           "Constraint satisfaction error.
> │ Got: string
> │ Fails to satisfy: number")]
> │        uri =
> │         
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f
> 8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" })],
> │  0)
> │ 00:01:00 v #4146 Supervisor.buildFile / ofSeqAsync / x: 
> (None,
> │  [("main.spi:
> │ Constraint satisfaction error.
> │ Got: string
> │ Fails to satisfy: number",
> │    TypeErrors
> │      { errors =
> │         [(({ character = 8
> │              line = 1 }, { character = 10
> │                            line = 1 }),
> │           "Constraint satisfaction error.
> │ Got: string
> │ Fails to satisfy: number")]
> │        uri =
> │         
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f
> 8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" })],
> │  0)
> │ 00:01:00 v #4149 Supervisor.buildFile / result: 
> [("main.spi:
> │ Constraint satisfaction error.
> │ Got: string
> │ Fails to satisfy: number",
> │   TypeErrors
> │     { errors =
> │        [(({ character = 8
> │             line = 1 }, { character = 10
> │                           line = 1 }),
> │          "Constraint satisfaction error.
> │ Got: string
> │ Fails to satisfy: number")]
> │       uri =
> │        
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f
> 8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" })] / 
> buildFileResult: None / typeErrorCount: 0
> │ 00:01:00 v #4150 Supervisor.buildFile / retry: 0 / 
> typeErrorCount: 0 / fileDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef
> cbdd9aabeace67685221d91a46e3655199e42df713504aa0 / targetDir: 
> /home/runner/work/polyglot/polyglot/target
> │ 00:01:00 v #4152 Supervisor.buildFile / outputChild |> 
> Async.map
> │ Some (None, ["main.spi:
> │ Constraint satisfaction error.
> │ Got: string
> │ Fails to satisfy: number"])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> SpiralTrace.TraceLevel.US0_0 |> set_trace_level
> """inl main () =
>     x + y
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 10000 None
> |> Async.runWithTimeout 11000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[
>             "main.spi:
> Unbound variable: x.
> Unbound variable: y."
>         ]]
>     )
> )
> 
> ── [ 263.56ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:01:00 v #4314 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba
> 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi
> │ 00:01:00 v #4315 Supervisor.buildFile / AsyncSeq.scan / 
> outputContent:
> │ ' / errors: [] / outputContentResult:  / typeErrorCount: 0 / 
> retry: 0 / error:  / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba
> 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi'
> │ 00:01:00 v #4316 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba
> 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi
> │ 00:01:00 v #4317 Supervisor.buildFile / fullPathUri: 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec50
> 7f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi"
> │ 00:01:00 v #4318 Supervisor.buildFile / _fileOpenResult:
> <null>
> │ 00:01:00 v #4319 Supervisor.buildFile / before result: 
> ()
> │ 00:01:00 v #4360 Supervisor.buildFile / AsyncSeq.scan / 
> outputContent:
> │ ' / errors: [] / outputContentResult:  / typeErrorCount: 0 / 
> retry: 0 / error: Some((main.spi:
> │ Unbound variable: x.
> │ Unbound variable: y., TypeErrors
> │   { errors =
> │      [(({ character = 4
> │           line = 1 }, { character = 5
> │                         line = 1 }), "Unbound variable: x.");
> │       (({ character = 8
> │           line = 1 }, { character = 9
> │                         line = 1 }), "Unbound variable: y.")]
> │     uri =
> │      
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec50
> 7f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })) / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba
> 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi'
> │ 00:01:00 v #4362 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [
> │   [
> │     "main.spi:
> │ Unbound variable: x.
> │ Unbound variable: y.",
> │     {
> │       "TypeErrors": {
> │         "errors": [
> │           [
> │             [
> │               {
> │                 "character": 4,
> │                 "line": 1
> │               },
> │               {
> │                 "character": 5,
> │                 "line": 1
> │               }
> │             ],
> │             "Unbound variable: x."
> │           ],
> │           [
> │             [
> │               {
> │                 "character": 8,
> │                 "line": 1
> │               },
> │               {
> │                 "character": 9,
> │                 "line": 1
> │               }
> │             ],
> │             "Unbound variable: y."
> │           ]
> │         ],
> │         "uri": 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec50
> 7f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi"
> │       }
> │     }
> │   ]
> │ ] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba
> 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi
> │ 00:01:00 v #4365 Supervisor.buildFile / outputContentSeq
> unfoldAsync / msg: (None,
> │  Some
> │    ("main.spi:
> │ Unbound variable: x.
> │ Unbound variable: y.",
> │     TypeErrors
> │       { errors =
> │          [(({ character = 4
> │               line = 1 }, { character = 5
> │                             line = 1 }), "Unbound variable: 
> x.");
> │           (({ character = 8
> │               line = 1 }, { character = 9
> │                             line = 1 }), "Unbound variable: 
> y.")]
> │         uri =
> │          
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec50
> 7f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" }))
> │ 00:01:00 v #4366 Supervisor.buildFile / 
> takeWhileInclusive / TypeErrors trigger
> │ 00:01:00 v #4371 Supervisor.buildFile / outputChild / x:
> Some
> │   (Ok
> │      (Some
> │         (None,
> │          [("main.spi:
> │ Unbound variable: x.
> │ Unbound variable: y.",
> │            TypeErrors
> │              { errors =
> │                 [(({ character = 4
> │                      line = 1 }, { character = 5
> │                                    line = 1 }), "Unbound 
> variable: x.");
> │                  (({ character = 8
> │                      line = 1 }, { character = 9
> │                                    line = 1 }), "Unbound 
> variable: y.")]
> │                uri =
> │                 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec50
> 7f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })],
> │          0)))
> │ 00:01:00 v #4372 Supervisor.buildFile / outputChild |> 
> Async.map
> │ 00:01:00 v #4375 Supervisor.buildFile / 
> outputContentSeq2 unfoldAsync / msg: (None,
> │  [("main.spi:
> │ Unbound variable: x.
> │ Unbound variable: y.",
> │    TypeErrors
> │      { errors =
> │         [(({ character = 4
> │              line = 1 }, { character = 5
> │                            line = 1 }), "Unbound variable: 
> x.");
> │          (({ character = 8
> │              line = 1 }, { character = 9
> │                            line = 1 }), "Unbound variable: 
> y.")]
> │        uri =
> │         
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec50
> 7f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })],
> │  0)
> │ 00:01:00 v #4377 Supervisor.buildFile / ofSeqAsync / x: 
> (None,
> │  [("main.spi:
> │ Unbound variable: x.
> │ Unbound variable: y.",
> │    TypeErrors
> │      { errors =
> │         [(({ character = 4
> │              line = 1 }, { character = 5
> │                            line = 1 }), "Unbound variable: 
> x.");
> │          (({ character = 8
> │              line = 1 }, { character = 9
> │                            line = 1 }), "Unbound variable: 
> y.")]
> │        uri =
> │         
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec50
> 7f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })],
> │  0)
> │ 00:01:00 v #4380 Supervisor.buildFile / result: 
> [("main.spi:
> │ Unbound variable: x.
> │ Unbound variable: y.",
> │   TypeErrors
> │     { errors =
> │        [(({ character = 4
> │             line = 1 }, { character = 5
> │                           line = 1 }), "Unbound variable: 
> x.");
> │         (({ character = 8
> │             line = 1 }, { character = 9
> │                           line = 1 }), "Unbound variable: 
> y.")]
> │       uri =
> │        
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec50
> 7f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })] / 
> buildFileResult: None / typeErrorCount: 0
> │ 00:01:00 v #4381 Supervisor.buildFile / retry: 0 / 
> typeErrorCount: 0 / fileDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba
> 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1 / targetDir: 
> /home/runner/work/polyglot/polyglot/target
> │ 00:01:00 v #4383 Supervisor.buildFile / outputChild |> 
> Async.map
> │ Some (None, ["main.spi:
> │ Unbound variable: x.
> │ Unbound variable: y."])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> SpiralTrace.TraceLevel.US0_0 |> set_trace_level
> """inl rec main () = main"""
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 10000 None
> |> Async.runWithTimeout 11000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[
>             "main.spi:
> Recursive metavariables are not allowed. A metavar cannot be unified with a type
> that has itself.
> Got:      'a
> Expected: () -> 'a"
>         ]]
>     )
> )
> // |> _assertEqual None
> // |> fun x -> printfn $"{x.ToDisplayString ()}"
> 
> ── [ 220.05ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:01:01 v #4584 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9
> 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi
> │ 00:01:01 v #4585 Supervisor.buildFile / AsyncSeq.scan / 
> outputContent:
> │ ' / errors: [] / outputContentResult:  / typeErrorCount: 0 / 
> retry: 0 / error:  / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9
> 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi'
> │ 00:01:01 v #4586 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9
> 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi
> │ 00:01:01 v #4587 Supervisor.buildFile / fullPathUri: 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123
> fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi"
> │ 00:01:01 v #4588 Supervisor.buildFile / _fileOpenResult:
> <null>
> │ 00:01:01 v #4589 Supervisor.buildFile / before result: 
> ()
> │ 00:01:01 v #4628 Supervisor.buildFile / AsyncSeq.scan / 
> outputContent:
> │ ' / errors: [] / outputContentResult:  / typeErrorCount: 0 / 
> retry: 0 / error: Some((main.spi:
> │ Recursive metavariables are not allowed. A metavar cannot be 
> unified with a type that has itself.
> │ Got:      'a
> │ Expected: () -> 'a, TypeErrors
> │   { errors =
> │      [(({ character = 18
> │           line = 0 }, { character = 22
> │                         line = 0 }),
> │        "Recursive metavariables are not allowed. A metavar 
> cannot be unified with a type that has itself.
> │ Got:      'a
> │ Expected: () -> 'a")]
> │     uri =
> │      
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123
> fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })) / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9
> 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi'
> │ 00:01:01 v #4630 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [
> │   [
> │     "main.spi:
> │ Recursive metavariables are not allowed. A metavar cannot be 
> unified with a type that has itself.
> │ Got:      'a
> │ Expected: () -> 'a",
> │     {
> │       "TypeErrors": {
> │         "errors": [
> │           [
> │             [
> │               {
> │                 "character": 18,
> │                 "line": 0
> │               },
> │               {
> │                 "character": 22,
> │                 "line": 0
> │               }
> │             ],
> │             "Recursive metavariables are not allowed. A 
> metavar cannot be unified with a type that has itself.
> │ Got:      'a
> │ Expected: () -> 'a"
> │           ]
> │         ],
> │         "uri": 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123
> fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi"
> │       }
> │     }
> │   ]
> │ ] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9
> 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi
> │ 00:01:01 v #4633 Supervisor.buildFile / outputContentSeq
> unfoldAsync / msg: (None,
> │  Some
> │    ("main.spi:
> │ Recursive metavariables are not allowed. A metavar cannot be 
> unified with a type that has itself.
> │ Got:      'a
> │ Expected: () -> 'a",
> │     TypeErrors
> │       { errors =
> │          [(({ character = 18
> │               line = 0 }, { character = 22
> │                             line = 0 }),
> │            "Recursive metavariables are not allowed. A 
> metavar cannot be unified with a type that has itself.
> │ Got:      'a
> │ Expected: () -> 'a")]
> │         uri =
> │          
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123
> fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" }))
> │ 00:01:01 v #4634 Supervisor.buildFile / 
> takeWhileInclusive / TypeErrors trigger
> │ 00:01:01 v #4638 Supervisor.buildFile / outputChild / x:
> Some
> │   (Ok
> │      (Some
> │         (None,
> │          [("main.spi:
> │ Recursive metavariables are not allowed. A metavar cannot be 
> unified with a type that has itself.
> │ Got:      'a
> │ Expected: () -> 'a",
> │            TypeErrors
> │              { errors =
> │                 [(({ character = 18
> │                      line = 0 }, { character = 22
> │                                    line = 0 }),
> │                   "Recursive metavariables are not allowed. A
> metavar cannot be unified with a type that has itself.
> │ Got:      'a
> │ Expected: () -> 'a")]
> │                uri =
> │                 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123
> fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })],
> │          0)))
> │ 00:01:01 v #4639 Supervisor.buildFile / outputChild |> 
> Async.map
> │ 00:01:01 v #4642 Supervisor.buildFile / 
> outputContentSeq2 unfoldAsync / msg: (None,
> │  [("main.spi:
> │ Recursive metavariables are not allowed. A metavar cannot be 
> unified with a type that has itself.
> │ Got:      'a
> │ Expected: () -> 'a",
> │    TypeErrors
> │      { errors =
> │         [(({ character = 18
> │              line = 0 }, { character = 22
> │                            line = 0 }),
> │           "Recursive metavariables are not allowed. A metavar
> cannot be unified with a type that has itself.
> │ Got:      'a
> │ Expected: () -> 'a")]
> │        uri =
> │         
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123
> fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })],
> │  0)
> │ 00:01:01 v #4644 Supervisor.buildFile / ofSeqAsync / x: 
> (None,
> │  [("main.spi:
> │ Recursive metavariables are not allowed. A metavar cannot be 
> unified with a type that has itself.
> │ Got:      'a
> │ Expected: () -> 'a",
> │    TypeErrors
> │      { errors =
> │         [(({ character = 18
> │              line = 0 }, { character = 22
> │                            line = 0 }),
> │           "Recursive metavariables are not allowed. A metavar
> cannot be unified with a type that has itself.
> │ Got:      'a
> │ Expected: () -> 'a")]
> │        uri =
> │         
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123
> fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })],
> │  0)
> │ 00:01:01 v #4647 Supervisor.buildFile / result: 
> [("main.spi:
> │ Recursive metavariables are not allowed. A metavar cannot be 
> unified with a type that has itself.
> │ Got:      'a
> │ Expected: () -> 'a",
> │   TypeErrors
> │     { errors =
> │        [(({ character = 18
> │             line = 0 }, { character = 22
> │                           line = 0 }),
> │          "Recursive metavariables are not allowed. A metavar 
> cannot be unified with a type that has itself.
> │ Got:      'a
> │ Expected: () -> 'a")]
> │       uri =
> │        
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123
> fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })] / 
> buildFileResult: None / typeErrorCount: 0
> │ 00:01:01 v #4648 Supervisor.buildFile / retry: 0 / 
> typeErrorCount: 0 / fileDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9
> 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7 / targetDir: 
> /home/runner/work/polyglot/polyglot/target
> │ 00:01:01 v #4650 Supervisor.buildFile / outputChild |> 
> Async.map
> │ Some
> │   (None,
> │    ["main.spi:
> │ Recursive metavariables are not allowed. A metavar cannot be 
> unified with a type that has itself.
> │ Got:      'a
> │ Expected: () -> 'a"])
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## getFileTokenRange
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let getFileTokenRange port cancellationToken path = async {
>     let fullPath = path |> System.IO.Path.GetFullPath
>     let! code = fullPath |> SpiralFileSystem.read_all_text_async
>     let lines = code |> SpiralSm.split "\n"
> 
>     let struct (token, disposable) = SpiralThreading.new_disposable_token 
> cancellationToken
>     use _ = disposable
> 
>     let port = port |> Option.defaultWith getCompilerPort
>     // let! serverPort, _errors, ct, disposable = awaitCompiler port (Some 
> token)
>     // use _ = disposable
> 
>     let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> 
> SpiralFileSystem.new_file_uri
> 
>     // let fileOpenObj = {| FileOpen = {| uri = fullPathUri; spiText = code |} 
> |}
>     // let! _fileOpenResult = fileOpenObj |> sendObj serverPort
>     let fileOpenArgs = {| uri = fullPathUri; spiText = code |}
>     let! _fileOpenResult =
>         server2.job_null (server2.supervisor *<+ SupervisorReq.FileOpen 
> fileOpenArgs)
>         |> Async.AwaitTask
> 
>     // do! Async.Sleep 60
> 
>     let fileTokenRangeArgs =
>         {|
>             uri = fullPathUri
>             range =
>                 {|
>                     line = 0
>                     character = 0
>                 |},
>                 {|
>                     line = lines.Length - 1
>                     character = lines.[[lines.Length - 1]].Length
>                 |}
>         |}
>     // let! fileTokenRangeResult =
>     //     fileTokenRangeObj
>     //     |> sendObj serverPort
>     //     |> Async.withCancellationToken ct
> 
>     // let fileTokenRangeArgs = {| uri = fullPathUri; backend = backendId |}
>     let! fileTokenRangeResult =
>         server2.job_val (fun res -> server2.supervisor *<+ 
> SupervisorReq.FileTokenRange(fileTokenRangeArgs,res))
>         |> Async.AwaitTask
> 
>     let fileDir = fullPath |> System.IO.Path.GetDirectoryName
>     if fileDir |> SpiralSm.starts_with (workspaceRoot </> "target") then
>         let fileDirUri = fileDir |> SpiralFileSystem.normalize_path |> 
> SpiralFileSystem.new_file_uri
>         // let fileDeleteObj = {| FileDelete = {| uris = [[| fileDirUri |]] |} 
> |}
>         // let! _fileDeleteResult = fileDeleteObj |> sendObj serverPort
>         let fileDeleteArgs = {| uris = [[| fileDirUri |]] |}
>         let! _fileDeleteResult =
>             server2.job_null (server2.supervisor *<+ SupervisorReq.FileDelete 
> fileDeleteArgs)
>             |> Async.AwaitTask
>         ()
> 
>     return fileTokenRangeResult |> FSharp.Json.Json.deserialize<int array> |> 
> Some
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## getCodeTokenRange
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let getCodeTokenRange cancellationToken code = async {
>     let! mainPath, _ =
>         persistCode {| input = Spi (code, None); backend = None; packages = 
> [[||]] |}
> 
>     let codeDir = mainPath |> System.IO.Path.GetDirectoryName
>     let tokensPath = codeDir </> "tokens.json"
>     let! tokens = async {
>         if tokensPath |> System.IO.File.Exists |> not
>         then return None
>         else
>             let! text = tokensPath |> SpiralFileSystem.read_all_text_async
> 
>             return
>                 if text.Length > 2
>                 then text |> FSharp.Json.Json.deserialize<int array> |> Some
>                 else None
>     }
>     match tokens with
>     | Some tokens ->
>         return tokens |> Some
>     | None -> return! mainPath |> getFileTokenRange None cancellationToken
> }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """inl main () = ()"""
> |> getCodeTokenRange None
> |> Async.runWithTimeout 10000
> |> Option.flatten
> |> _assertEqual (Some [[| 0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; 
> 8; 0; 0; 2; 1; 4; 0; 0;
> 2; 1; 8; 0; 0; 1; 1; 8; 0 |]])
> 
> ── [ 511.40ms - stdout ] ───────────────────────────────────────────────────────
> │ Some [|0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; 
> 8; 0; 0; 2; 1; 4; 0; 0; 2; 1; 8; 0; 0; 1; 1; 8; 0|]
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """inl main () = 1i32"""
> |> getCodeTokenRange None
> |> Async.runWithTimeout 10000
> |> Option.flatten
> |> _assertEqual (Some [[| 0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; 
> 8; 0; 0; 2; 1; 4; 0; 0;
> 2; 1; 3; 0; 0; 1; 3; 12; 0 |]])
> 
> ── [ 1.10s - stdout ] ──────────────────────────────────────────────────────────
> │ Some [|0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; 
> 8; 0; 0; 2; 1; 4; 0; 0; 2; 1; 3; 0; 0; 1; 3; 12; 0|]
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## getFileHoverAt
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let getFileHoverAt
>     port
>     cancellationToken
>     path
>     (position : {| line: int; character: int |})
>     = async {
>     let fullPath = path |> System.IO.Path.GetFullPath
>     let! code = fullPath |> SpiralFileSystem.read_all_text_async
>     let lines = code |> SpiralSm.split "\n"
> 
>     let struct (token, disposable) = SpiralThreading.new_disposable_token 
> cancellationToken
>     use _ = disposable
> 
>     let port = port |> Option.defaultWith getCompilerPort
>     // let! serverPort, _errors, ct, disposable = awaitCompiler port (Some 
> token)
>     // use _ = disposable
> 
>     let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> 
> SpiralFileSystem.new_file_uri
> 
>     // let fileOpenObj = {| FileOpen = {| uri = fullPathUri; spiText = code |} 
> |}
>     // let! _fileOpenResult = fileOpenObj |> sendObj serverPort
>     let fileOpenArgs = {| uri = fullPathUri; spiText = code |}
>     let! _fileOpenResult =
>         server1.job_null (server1.supervisor *<+ SupervisorReq.FileOpen 
> fileOpenArgs)
>         |> Async.AwaitTask
> 
>     // do! Async.Sleep 60
> 
>     let hoverAtArgs =
>             {|
>                 uri = fullPathUri
>                 pos = position
>             |}
> 
>     let! hoverAtResult =
>         server1.job_val (fun res -> server1.supervisor *<+ 
> SupervisorReq.HoverAt(hoverAtArgs,res))
>         |> Async.AwaitTask
> 
>     let fileDir = fullPath |> System.IO.Path.GetDirectoryName
>     if fileDir |> SpiralSm.starts_with (workspaceRoot </> "target") then
>         let fileDirUri = fileDir |> SpiralFileSystem.normalize_path |> 
> SpiralFileSystem.new_file_uri
>         // let fileDeleteObj = {| FileDelete = {| uris = [[| fileDirUri |]] |} 
> |}
>         // let! _fileDeleteResult = fileDeleteObj |> sendObj serverPort
>         let fileDeleteArgs = {| uris = [[| fileDirUri |]] |}
>         let! _fileDeleteResult =
>             server1.job_null (server1.supervisor *<+ SupervisorReq.FileDelete 
> fileDeleteArgs)
>             |> Async.AwaitTask
>             |> Async.runWithTimeoutAsync 60000
>             |> Async.map Option.get
>         ()
> 
>     return hoverAtResult |> Some
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## getCodeHoverAt
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let getCodeHoverAt cancellationToken code position = async {
>     let! mainPath, _ =
>         persistCode {| input = Spi (code, None); backend = None; packages = 
> [[||]] |}
> 
>     let codeDir = mainPath |> System.IO.Path.GetDirectoryName
>     let filePath = codeDir </> "hover.json"
>     let! output = async {
>         if filePath |> System.IO.File.Exists |> not
>         then return None
>         else
>             let! text = filePath |> SpiralFileSystem.read_all_text_async
> 
>             return
>                 if text.Length > 2
>                 then text |> Some
>                 else None
>     }
>     match output with
>     | Some output ->
>         return output |> Some
>     | None -> return! getFileHoverAt None cancellationToken mainPath position
> }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> getCodeHoverAt None """inl main () = ()""" {| line = 0; character = 4 |}
> |> Async.runWithTimeout 10000
> |> Option.flatten
> |> _assertEqual (Some "() -> ()")
> 
> ── [ 202.71ms - stdout ] ───────────────────────────────────────────────────────
> │ Some "() -> ()"
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> getCodeHoverAt None """inl main () = ()""" {| line = 0; character = 0 |}
> |> Async.runWithTimeout 10000
> |> Option.flatten
> |> _assertEqual (Some null)
> 
> ── [ 185.21ms - stdout ] ───────────────────────────────────────────────────────
> │ Some null
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> getCodeHoverAt None """inl rec main () = main""" {| line = 0; character = 8 |}
> |> Async.runWithTimeout 10000
> |> Option.flatten
> |> _assertEqual (Some "forall 'a. () -> 'a")
> 
> ── [ 182.49ms - stdout ] ───────────────────────────────────────────────────────
> │ Some "forall 'a. () -> 'a"
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> getCodeHoverAt None """inl main () = 1""" {| line = 0; character = 4 |}
> |> Async.runWithTimeout 10000
> |> Option.flatten
> |> _assertEqual (Some "forall 'a {number}. () -> 'a")
> 
> ── [ 183.53ms - stdout ] ───────────────────────────────────────────────────────
> │ Some "forall 'a {number}. () -> 'a"
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## Arguments
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> [[<RequireQualifiedAccess>]]
> type Arguments =
>     | Build_File of string * string
>     | File_Token_Range of string * string
>     | File_Hover_At of string * string * int * int
>     | Execute_Command of string
>     | [[<Argu.ArguAttributes.Unique>]] Timeout of int
>     | [[<Argu.ArguAttributes.Unique>]] Port of int
>     | [[<Argu.ArguAttributes.Unique>]] Parallel
>     | [[<Argu.ArguAttributes.Unique>]] Exit_On_Error
> 
>     interface Argu.IArgParserTemplate with
>         member s.Usage =
>             match s with
>             | Build_File _ -> nameof Build_File
>             | File_Token_Range _ -> nameof File_Token_Range
>             | File_Hover_At _ -> nameof File_Hover_At
>             | Execute_Command _ -> nameof Execute_Command
>             | Timeout _ -> nameof Timeout
>             | Port _ -> nameof Port
>             | Parallel -> nameof Parallel
>             | Exit_On_Error-> nameof Exit_On_Error
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> Argu.ArgumentParser.Create<Arguments>().PrintUsage ()
> 
> ── [ 78.05ms - return value ] ──────────────────────────────────────────────────
> │ "USAGE: dotnet-repl [--help] [--build-file <string> <string>]
> │                    [--file-token-range <string> <string>]
> │                    [--file-hover-at <string> <string> <int> 
> <int>]
> │                    [--execute-command <string>] [--timeout 
> <int>] [--port <int>]
> │                    [--parallel] [--exit-on-error]
> │ 
> │ OPTIONS:
> │ 
> │     --build-file <string> <string>
> │                           Build_File
> │     --file-token-range <string> <string>
> │                           File_Token_Range
> │     --file-hover-at <string> <string> <int> <int>
> │                           File_Hover_At
> │     --execute-command <string>
> │                           Execute_Command
> │     --timeout <int>       Timeout
> │     --port <int>          Port
> │     --parallel            Parallel
> │     --exit-on-error       Exit_On_Error
> │     --help                display this list of options.
> │ "
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## main
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let main args =
>     SpiralTrace.TraceLevel.US0_1 |> set_trace_level
>     let argsMap = args |> Runtime.parseArgsMap<Arguments>
> 
>     let buildFileActions =
>         argsMap
>         |> Map.tryFind (nameof Arguments.Build_File)
>         |> Option.defaultValue [[]]
>         |> List.choose (function
>             | Arguments.Build_File (inputPath, outputPath) -> Some (inputPath, 
> outputPath)
>             | _ -> None
>         )
> 
>     let fileTokenRangeActions =
>         argsMap
>         |> Map.tryFind (nameof Arguments.File_Token_Range)
>         |> Option.defaultValue [[]]
>         |> List.choose (function
>             | Arguments.File_Token_Range (inputPath, outputPath) -> Some 
> (inputPath, outputPath)
>             | _ -> None
>         )
> 
>     let fileHoverAtActions =
>         argsMap
>         |> Map.tryFind (nameof Arguments.File_Hover_At)
>         |> Option.defaultValue [[]]
>         |> List.choose (function
>             | Arguments.File_Hover_At (inputPath, outputPath, line, character) 
> ->
>                 Some (inputPath, outputPath, line, character)
>             | _ -> None
>         )
> 
>     let executeCommandActions =
>         argsMap
>         |> Map.tryFind (nameof Arguments.Execute_Command)
>         |> Option.defaultValue [[]]
>         |> List.choose (function
>             | Arguments.Execute_Command command -> Some command
>             | _ -> None
>         )
> 
>     let timeout =
>         match argsMap |> Map.tryFind (nameof Arguments.Timeout) with
>         | Some [[ Arguments.Timeout timeout ]] -> timeout
>         | _ -> 60002 * 60 * 24
> 
>     let port =
>         match argsMap |> Map.tryFind (nameof Arguments.Port) with
>         | Some [[ Arguments.Port port ]] -> Some port
>         | _ -> None
> 
>     let isParallel = argsMap |> Map.containsKey (nameof Arguments.Parallel)
> 
>     let isExitOnError = argsMap |> Map.containsKey (nameof 
> Arguments.Exit_On_Error)
> 
>     async {
>         let port =
>             port
>             |> Option.defaultWith getCompilerPort
>         let struct (localToken, disposable) = 
> SpiralThreading.new_disposable_token None
>         // let! serverPort, _errors, compilerToken, disposable = awaitCompiler 
> port (Some localToken)
>         let serverPort = port
>         let struct (compilerToken, disposable) = 
> SpiralThreading.new_disposable_token None
>         use _ = disposable
> 
>         let buildFileAsync =
>             buildFileActions
>             |> List.map (fun (inputPath, outputPath) -> async {
>                 let! _outputPath, outputCode, errors =
>                     let backend =
>                         if outputPath |> SpiralSm.ends_with ".gleam"
>                         then Gleam
>                         elif outputPath |> SpiralSm.ends_with ".fsx"
>                         then Fsharp
>                         elif outputPath |> SpiralSm.ends_with ".py"
>                         then Python
>                         elif outputPath |> SpiralSm.ends_with ".cpp"
>                         then Cpp
>                         else failwith $"Supervisor.main / invalid backend / 
> outputPath: {outputPath}"
>                     let isReal = inputPath |> SpiralSm.ends_with ".spir"
>                     inputPath |> buildFile backend timeout (Some serverPort) 
> None
> 
>                 errors
>                 |> List.map snd
>                 |> List.iter (fun error ->
>                     trace Critical (fun () -> $"main / error: {error |> 
> serializeObj}") _locals
>                 )
> 
>                 match outputCode with
>                 | Some outputCode ->
>                     do! outputCode |> SpiralFileSystem.write_all_text_exists 
> outputPath
>                     return 0
>                 | None ->
>                     if isExitOnError
>                     then SpiralRuntime.current_process_kill ()
> 
>                     return 1
>             })
> 
>         let fileTokenRangeAsync =
>             fileTokenRangeActions
>             |> List.map (fun (inputPath, outputPath) -> async {
>                 let! tokenRange = inputPath |> getFileTokenRange (Some 
> serverPort) None
>                 match tokenRange with
>                 | Some tokenRange ->
>                     do! tokenRange |> FSharp.Json.Json.serialize |> 
> SpiralFileSystem.write_all_text_exists outputPath
>                     return 0
>                 | None ->
>                     if isExitOnError
>                     then SpiralRuntime.current_process_kill ()
> 
>                     return 1
>             })
> 
>         let fileHoverAtAsync =
>             fileHoverAtActions
>             |> List.map (fun (inputPath, outputPath, line, character) -> async {
>                 let! hoverAt =
>                     getFileHoverAt
>                         (Some serverPort)
>                         None
>                         inputPath
>                         {| line = line; character = character |}
>                 match hoverAt with
>                 | Some hoverAt ->
>                     do! hoverAt |> FSharp.Json.Json.serialize |> 
> SpiralFileSystem.write_all_text_exists outputPath
>                     return 0
>                 | None ->
>                     if isExitOnError
>                     then SpiralRuntime.current_process_kill ()
> 
>                     return 1
>             })
> 
>         let executeCommandAsync =
>             executeCommandActions
>             |> List.map (fun command -> async {
>                 let! exitCode, result =
>                     SpiralRuntime.execution_options (fun x ->
>                         { x with
>                             l0 = command
>                             l1 = Some compilerToken
>                         }
>                     )
>                     |> SpiralRuntime.execute_with_options_async
> 
>                 trace Debug (fun () -> $"main / executeCommand / exitCode: 
> {exitCode} / command: {command}") _locals
> 
>                 if isExitOnError && exitCode <> 0
>                 then SpiralRuntime.current_process_kill ()
> 
>                 return exitCode
>             })
> 
>         return!
>             [[| buildFileAsync; fileTokenRangeAsync; fileHoverAtAsync; 
> executeCommandAsync |]]
>             |> Seq.collect id
>             |> fun x ->
>                 if isParallel
>                 then Async.Parallel (x, float System.Environment.ProcessorCount 
> * 0.51 |> ceil |> int)
>                 else Async.Sequential x
>             |> Async.map Array.sum
>     }
>     |> Async.runWithTimeout timeout
>     |> Option.defaultValue 1
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let args =
>     System.Environment.GetEnvironmentVariable "ARGS"
>     |> SpiralRuntime.split_args
>     |> Result.toArray
>     |> Array.collect id
> 
> match args with
> | [[||]] -> 0
> | args -> if main args = 0 then 0 else failwith "main failed"
> 
> ── [ 71.32ms - return value ] ──────────────────────────────────────────────────
> │ <div class="dni-plaintext"><pre>0
> │ </pre></div><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
00:01:21 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 312838 }
00:01:21 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:01:21 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb to html
00:01:21 v #6 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:01:21 v #7 !   validate(nb)
00:01:22 v #8 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:01:22 v #9 !   return _pygments_highlight(
00:01:23 v #10 ! [NbConvertApp] Writing 750546 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.html
00:01:23 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 908 }
00:01:23 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 908 }
00:01:23 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:01:23 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:01:23 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:01:23 d #16 spiral.run / dib / { exit_code = 0; result_length = 313805 }
00:00:00 d #1 writeDibCode / output: Fs / path: Supervisor.dib
00:00:00 d #2 parseDibCode / output: Fs / file: Supervisor.dib
00:00:00 d #1 persistCodeProject / packages: [Argu; FSharp.Control.AsyncSeq; FSharp.Json; ... ] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: Supervisor / hash:  / code.Length: 40571
00:00:00 d #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "/home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/spiral/dist" --runtime linux-x64"; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/spiral/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/Supervisor"; stderr = true } }
00:00:00 v #2 >   Determining projects to restore...
00:00:01 v #3 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:01 v #4 >   The last full restore is still up to date. Nothing left to do.
00:00:01 v #5 >   Total time taken: 0 milliseconds
00:00:01 v #6 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:01 v #7 >   Restoring /home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj
00:00:01 v #8 >   Starting restore process.
00:00:01 v #9 >   Total time taken: 0 milliseconds
00:00:02 v #10 >   Restored /home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj (in 283 ms).
00:00:29 v #11 >   Supervisor -> /home/runner/work/polyglot/polyglot/target/Builder/Supervisor/bin/Release/net9.0/linux-x64/Supervisor.dll
00:00:30 v #12 >   Supervisor -> /home/runner/work/polyglot/polyglot/apps/spiral/dist
00:00:30 d #13 runtime.execute_with_options_async / { exit_code = 0; output_length = 713; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/spiral/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/Supervisor"; stderr = true } }
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Eval.dib", "--retries", "3"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None; stderr = true } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ # Eval (Polyglot)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
> dard2.1/FSharp.Control.AsyncSeq.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
> 0/System.Reactive.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
> netstandard2.0/System.Reactive.Linq.dll"
> #r 
> @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com
> mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli
> ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0
> /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0
> /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/
> 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll"
> #r 
> @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha
> rp.Json.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.management/7.0.0/lib/netstandard2.
> 0/System.Management.dll"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/fsharpx.collections/3.1.0/lib/netstandard
> 2.0/FSharpx.Collections.dll"
> #r 
> @"../../../../../../../.nuget/packages/hopac/0.5.1/lib/netstandard2.0/Hopac.dll"
> #r 
> @"../../../../../../../.nuget/packages/hopac/0.5.1/lib/netstandard2.0/Hopac.Core
> .dll"
> #r 
> @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
> arsec.dll"
> #r 
> @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
> arsecCS.dll"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #if _LINUX
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.dll"
> #else
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.dll"
> #endif
> 
> #if _LINUX
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.dll"
> #else
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.dll"
> #endif
> 
> #if _LINUX
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.Core.dll"
> #else
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.Core.dll"
> #endif
> 
> #if _LINUX
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Cors.dll"
> #else
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Cors.dll"
> #endif
> 
> #if _LINUX
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll
> "
> #else
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll"
> #endif
> 
> #if _LINUX
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Connections.Abstracti
> ons.dll"
> #else
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Connections.Abstractions.
> dll"
> #endif
> 
> #if _LINUX
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Hosting.Abstractions.
> dll"
> #else
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Hosting.Abstractions.dll"
> #endif
> 
> #if _LINUX
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Http.Connections.dll"
> #else
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Http.Connections.dll"
> #endif
> 
> #if _LINUX
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6
> 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Routing.dll"
> #else
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/
> 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Routing.dll"
> #endif
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> ls ~/.nuget/packages/microsoft.extensions.logging
> 
> ── [ 194.83ms - stdout ] ───────────────────────────────────────────────────────
> │ 2.1.1
> │ 6.0.0
> │ 8.0.1
> │ 9.0.0
> │ 9.0.0-preview.1.24080.9
> │ 9.0.3
> │ 9.0.5
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/microsoft.extensions.logging/9.0.5/lib/ne
> t9.0/Microsoft.Extensions.Logging.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.extensions.logging.abstractions
> /9.0.5/lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.extensions.dependencyinjection.
> abstractions/9.0.5/lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstracti
> ons.dll"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open spiral_compiler
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #if !INTERACTIVE
> open Lib
> #endif
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Common
> open SpiralFileSystem.Operators
> open Microsoft.AspNetCore.SignalR.Client
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open System
> open System.Collections.Generic
> open System.IO
> open System.Text
> open System.Threading
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## mapErrors
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline mapErrors (severity, errors, lastTopLevelIndex) allCode =
>     let allCodeLineLength =
>         allCode |> SpiralSm.split "\n" |> Array.length
> 
>     errors
>     |> List.map (fun (_, error) ->
>         match error with
>         | FatalError message ->
>             (
>                 severity, message, 0, ("", (0, 0), (0, 0))
>             )
>             |> List.singleton
>         | TracedError data ->
>             data.trace
>             |> List.truncate 5
>             |> List.append [[ data.message ]]
>             |> List.map (fun message ->
>                 (
>                     severity, message, 0, ("", (0, 0), (0, 0))
>                 )
>             )
>         | PackageErrors data
>         | TokenizerErrors data
>         | ParserErrors data
>         | TypeErrors data ->
>             data.errors
>             |> List.filter (fun ((rangeStart, _), _) ->
>                 trace Debug (fun () -> $"Eval.mapErrors / rangeStart.line: 
> {rangeStart.line} / lastTopLevelIndex: {lastTopLevelIndex} / allCodeLineLength: 
> {allCodeLineLength} / filtered: {rangeStart.line > allCodeLineLength}") _locals
>                 rangeStart.line > allCodeLineLength
>             )
>             |> List.map (fun ((rangeStart, rangeEnd), message) ->
>                 (
>                     severity,
>                     message,
>                     0,
>                     (
>                         (data.uri |> System.IO.Path.GetFileName),
>                         (
>                             (match lastTopLevelIndex with
>                             | Some i when rangeStart.line >= i + 
> allCodeLineLength + 3 ->
>                                 rangeStart.line - allCodeLineLength - 2
>                             | _ -> rangeStart.line - allCodeLineLength),
>                             (match lastTopLevelIndex with
>                             | Some i when rangeStart.line >= i + 
> allCodeLineLength + 3 ->
>                                 rangeStart.character - 4
>                             | _ -> rangeStart.character)
>                         ),
>                         (
>                             (match lastTopLevelIndex with
>                             | Some i when rangeStart.line >= i + 
> allCodeLineLength + 3 ->
>                                 rangeEnd.line - allCodeLineLength - 2
>                             | _ -> rangeEnd.line - allCodeLineLength),
>                             (match lastTopLevelIndex with
>                             | Some i when rangeStart.line >= i + 
> allCodeLineLength + 3 ->
>                                 rangeEnd.character - 4
>                             | _ -> rangeEnd.character)
>                         )
>                     )
>                 )
>             )
>     )
>     |> List.collect id
>     |> List.toArray
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### workspaceRoot
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let workspaceRoot = SpiralFileSystem.get_workspace_root ()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### targetDir
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let targetDir = workspaceRoot </> "target/spiral_Eval"
> [[ targetDir ]]
> |> List.iter (fun dir -> if Directory.Exists dir |> not then 
> Directory.CreateDirectory dir |> ignore)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## allCode
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let mutable allCode = ""
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### allPackages
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let mutable allPackages : string [[]] = [[||]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## allCodeReal
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let mutable allCodeReal = ""
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## traceToggle
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let mutable traceToggle = false
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## startTokenRangeWatcher
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline startTokenRangeWatcher () =
>     if [[ "dotnet-repl" ]] |> List.contains spiral_compiler.assemblyName
>     then new_disposable (fun () -> ())
>     else
>         let tokensDir = targetDir </> "tokens"
> 
>         [[ tokensDir ]]
>         |> List.iter (fun dir -> if Directory.Exists dir |> not then 
> Directory.CreateDirectory dir |> ignore)
> 
>         let stream, disposable = FileSystem.watchDirectory (fun _ -> false) 
> tokensDir
> 
>         try
>             let existingFilesChild =
>                 tokensDir
>                 |> System.IO.Directory.GetDirectories
>                 |> Array.map (fun codeDir -> async {
>                     try
>                         let tokensPath = codeDir </> "tokens.json"
>                         if tokensPath |> File.Exists |> not then
>                             let spiralCodePath = codeDir </> "main.spi"
>                             let spiralRealCodePath = codeDir </> 
> "main_real.spir"
>                             let spiralExists = spiralCodePath |> 
> System.IO.File.Exists
>                             let spiralRealExists = spiralRealCodePath |> 
> System.IO.File.Exists
>                             if spiralExists |> not && spiralRealExists |> not
>                             then do! codeDir |> 
> SpiralFileSystem.delete_directory_async |> Async.Ignore
>                             else
>                                 let! tokens =
>                                     if spiralExists then spiralCodePath else 
> spiralRealCodePath
>                                     |> Supervisor.getFileTokenRange None None
>                                 match tokens with
>                                 | Some tokens ->
>                                     do!
>                                         tokens
>                                         |> FSharp.Json.Json.serialize
>                                         |> SpiralFileSystem.write_all_text_async
> tokensPath
>                                 | None ->
>                                     trace Verbose (fun () -> 
> $"Eval.startTokenRangeWatcher / GetDirectories / tokens: None") _locals
>                     with ex ->
>                         trace Critical (fun () -> $"Eval.startTokenRangeWatcher 
> / GetDirectories / ex: {ex |> SpiralSm.format_exception}") _locals
>                 })
>                 |> Async.Parallel
>                 |> Async.Ignore
> 
>             let streamAsyncChild =
>                 stream
>                 |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun (ticks, event)
> ->
>                     match event with
>                     | FileSystem.FileSystemChange.Changed (codePath, _)
>                         when [[ "main.spi"; "main_real.spir" ]]
>                             |> List.contains (System.IO.Path.GetFileName 
> codePath)
>                         ->
>                         async {
>                             let hashDir = codePath |> 
> System.IO.Directory.GetParent
>                             let hashHex = hashDir.Name
>                             let codePath = tokensDir </> codePath
>                             let tokensPath = tokensDir </> hashHex </> 
> "tokens.json"
>                             // do! Async.Sleep 30
>                             let rec 루프 retry = async {
>                                 let! tokens = codePath |> 
> Supervisor.getFileTokenRange None None
>                                 if retry = 3 || tokens <> Some [[||]]
>                                 then return tokens, retry
>                                 else
>                                     trace Debug
>                                         (fun () -> $"Eval.startTokenRangeWatcher
> / iterAsyncParallel")
>                                         (fun () -> $"retry: {retry} / tokens: 
> %A{tokens}")
>                                     do! Async.Sleep 30
>                                     return! 루프 (retry + 1)
>                             }
>                             let! tokens, retries = 루프 1
>                             match tokens with
>                             | Some tokens ->
>                                 do!
>                                     tokens
>                                     |> FSharp.Json.Json.serialize
>                                     |> SpiralFileSystem.write_all_text_exists 
> tokensPath
>                             | None ->
>                                 trace Debug
>                                     (fun () -> $"Eval.startTokenRangeWatcher / 
> iterAsyncParallel")
>                                     (fun () -> $"retries: {retries} / tokens: 
> {tokens}")
>                         }
>                         |> Async.retryAsync 3
>                         |> Async.map (Result.toOption >> Option.defaultValue ())
>                     | _ -> () |> Async.init
>                 )
> 
>             async {
>                 do! Async.Sleep 3000
>                 existingFilesChild |> Async.StartImmediate
>                 streamAsyncChild |> Async.Start
>             }
>             |> Async.Start
>         with ex ->
>             trace Critical (fun () -> $"Eval.startTokenRangeWatcher / ex: {ex |>
> SpiralSm.format_exception}") _locals
> 
>         disposable
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## startCommandsWatcher
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let startCommandsWatcher (uriServer : string) =
>     let commandsDir = targetDir </> "eval_commands"
>     let commandHistoryDir = targetDir </> "eval_command_history"
>     [[ commandsDir; commandHistoryDir ]]
>     |> List.iter (fun dir -> if Directory.Exists dir |> not then 
> Directory.CreateDirectory dir |> ignore)
> 
>     Directory.EnumerateFiles commandsDir |> Seq.iter File.Delete
> 
>     let stream, disposable =
>         commandsDir
>         |> FileSystem.watchDirectory (function
>             | FileSystem.FileSystemChange.Created _ -> true
>             | _ -> false
>         )
> 
>     let connection = HubConnectionBuilder().WithUrl(uriServer).Build()
>     connection.StartAsync() |> Async.AwaitTask |> Async.Start
>     // let _ = connection.On<string>("ServerToClientMsg", fun x ->
>     //     printfn $"ServerToClientMsg: '{x}'"
>     // )
> 
>     stream
>     |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun (ticks, event) -> async {
>         let _locals () = $"ticks: {ticks} / event: {event} / {_locals ()}"
>         trace Verbose (fun () -> "Eval.startCommandsWatcher / 
> iterAsyncParallel") _locals
> 
>         match event with
>         | FileSystem.FileSystemChange.Created (path, Some json) ->
>             try
>                 let fullPath = commandsDir </> path
>                 let! result = 
> connection.InvokeAsync<string>("ClientToServerMsg", json) |> Async.AwaitTask
>                 let commandHistoryPath = commandHistoryDir </> path
>                 do! fullPath |> SpiralFileSystem.move_file_async 
> commandHistoryPath |> Async.Ignore
>                 if result |> SpiralSm.trim |> String.length > 0 then
>                     let resultPath = commandHistoryDir </> 
> $"{Path.GetFileNameWithoutExtension path}_result.json"
>                     do! result |> SpiralFileSystem.write_all_text_async 
> resultPath
>             with ex ->
>                 let _locals () = $"ex: {ex |> SpiralSm.format_exception} / 
> {_locals ()}"
>                 trace Critical (fun () -> "Eval.startCommandsWatcher / 
> iterAsyncParallel") _locals
>         | _ -> ()
>     })
>     |> Async.StartChild
>     |> Async.Ignore
>     |> Async.Start
> 
>     new_disposable (fun () ->
>         disposable.Dispose ()
>     )
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## prepareSpiral
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let prepareSpiral rawCellCode lines =
>     let lastBlock =
>         lines
>         |> Array.tryFindBack (fun line ->
>             line |> String.length > 0
>             && line.[[0]] <> ' '
>         )
> 
>     let hasMain =
>         lastBlock
>         |> Option.exists (fun line ->
>             line |> SpiralSm.starts_with "inl main "
>             || line |> SpiralSm.starts_with "let main "
>         )
> 
>     if hasMain
>     then rawCellCode, None
>     else
>         let lastTopLevelIndex, _ =
>             (lines |> Array.indexed, (None, false))
>             ||> Array.foldBack (fun (i, line) (lastTopLevelIndex, finished) ->
>                 // trace Verbose (fun () -> $"Eval.prepareSpiral / i: {i} / 
> line: '{line}' / lastTopLevelIndex: {lastTopLevelIndex} / finished: {finished}")
> _locals
>                 match line with
>                 | _ when finished -> lastTopLevelIndex, true
>                 | "" -> lastTopLevelIndex, false
>                 | line when
>                     line |> SpiralSm.starts_with " "
>                     || line |> SpiralSm.starts_with "// " -> lastTopLevelIndex, 
> false
>                 | line when
>                     line |> SpiralSm.starts_with "open "
>                     || line |> SpiralSm.starts_with "prototype "
>                     || line |> SpiralSm.starts_with "instance "
>                     || line |> SpiralSm.starts_with "type "
>                     || line |> SpiralSm.starts_with "union "
>                     || line |> SpiralSm.starts_with "nominal " -> 
> lastTopLevelIndex, true
>                 | line when
>                     line |> SpiralSm.starts_with "inl "
>                     || line |> SpiralSm.starts_with "and "
>                     || line |> SpiralSm.starts_with "let " ->
>                     let m =
>                         System.Text.RegularExpressions.Regex.Match (
>                             line,
>                             @"^(?:and +)?(inl|let) +((?:[[{( 
> ]]*)?[[~\(\w]]+[[\w\d']]*(?:|[[\w\d']]+[[ }]]*(?:&? *[[\w\d']]*\))?| 
> *[[~\w]][[\w\d']]*\)|, *[[~\w]][[\w\d']]*)) +[[:=]](?! +function)"
>                         )
>                     trace Verbose (fun () -> $"Eval.prepareSpi / m: '{m}' / 
> m.Groups.Count: {m.Groups.Count}") _locals
>                     if m.Groups.Count = 3
>                     then Some i, false
>                     else lastTopLevelIndex, true
>                 | _ -> Some i, false
>             )
>         let code =
>             match lastTopLevelIndex with
>             | Some lastTopLevelIndex ->
>                 lines
>                 |> Array.mapi (fun i line ->
>                     match i with
>                     | i when i < lastTopLevelIndex -> line
>                     | i when i = lastTopLevelIndex -> $"\nlet main () =\n    
> {line}"
>                     | _ when line |> SpiralSm.trim = "" -> ""
>                     | _ -> $"    {line}"
>                 )
>                 |> SpiralSm.concat "\n"
>             | None -> $"{rawCellCode}\n\ninl main () = ()\n"
>         code, lastTopLevelIndex
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## processSpiralOutput
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let processSpiralOutput
>     (props : {|
>         printCode: bool
>         traceLevel: TraceLevel
>         builderCommands: string array
>         lastTopLevelIndex: int option
>         backend: Supervisor.Backend
>         cancellationToken: _
>         spiralErrors: _
>         code: string
>         outputPath: string
>         isReal: bool
>     |})
>     = async {
>     let inline _trace (fn : unit -> string) =
>         if props.traceLevel = Verbose
>         then trace Info (fun () -> $"Eval.processSpiralOutput / props: {props |>
> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / {fn ()}") _locals
>         else fn () |> System.Console.WriteLine
> 
>     if props.printCode
>         && props.backend <> Supervisor.Gleam
>         && props.backend <> Supervisor.Python
>         && props.backend <> Supervisor.Cpp then
>         let ext = props.outputPath |> System.IO.Path.GetExtension
>         _trace (fun () -> if props.builderCommands.Length > 0 then 
> $"{ext}:\n{props.code}\n" else props.code)
> 
>     let workspaceRootExternal =
>         let currentDir = System.IO.Directory.GetCurrentDirectory () |> 
> SpiralSm.to_lower
>         let workspaceRoot = workspaceRoot |> SpiralSm.to_lower
>         if currentDir |> SpiralSm.starts_with workspaceRoot
>         then None
>         else Some workspaceRoot
> 
>     let! spiralBuilderResults =
>         match props.builderCommands, props.lastTopLevelIndex with
>         | [[||]], _ | _, None -> [[||]] |> Async.init
>         | builderCommands, _ ->
>             builderCommands
>             |> Array.map (fun builderCommand ->
>                 let path =
>                     workspaceRoot </> 
> $@"deps/spiral/workspace/target/release/spiral{SpiralPlatform.get_executable_suf
> fix ()}"
>                     |> System.IO.Path.GetFullPath
>                 let commands =
>                     if props.backend = Supervisor.Fsharp
>                         && (
>                             builderCommand |> SpiralSm.starts_with "rust"
>                             || builderCommand |> SpiralSm.starts_with 
> "typescript"
>                             || builderCommand |> SpiralSm.starts_with "python"
>                         )
>                     then [[| $"{path} fable --fs-path \"{props.outputPath}\" 
> --command \"{builderCommand}\"" |]]
>                     elif props.backend = Supervisor.Python
>                         && builderCommand |> SpiralSm.starts_with "cuda"
>                     then [[| $"{path} {builderCommand} --py-path 
> \"{props.outputPath}\"" |]]
>                     elif props.backend = Supervisor.Cpp
>                         && builderCommand |> SpiralSm.starts_with "cpp"
>                     then [[| $"{path} {builderCommand} --cpp-path 
> \"{props.outputPath}\"" |]]
>                     elif props.backend = Supervisor.Gleam
>                         && builderCommand |> SpiralSm.starts_with "gleam"
>                     then [[| $"{path} {builderCommand} --gleam-path 
> \"{props.outputPath}\"" |]]
>                     else [[||]]
>                 builderCommand, commands
>             )
>             |> Array.filter (fun (_, commands) -> commands.Length > 0)
>             |> Array.collect (fun (builderCommand, commands) ->
>                 commands
>                 |> Array.map (fun command -> async {
>                     let! exitCode, result =
>                         SpiralRuntime.execution_options (fun x ->
>                             { x with
>                                 l0 = command
>                                 l1 = props.cancellationToken
>                                 l2 = [[|
>                                     "AUTOMATION", spiral_compiler.assemblyName =
> "dotnet-repl" |> string
>                                     "TRACE_LEVEL", $"%A{if props.printCode then 
> props.traceLevel else Info}"
>                                 |]]
>                                 l6 = workspaceRootExternal
>                             }
>                         )
>                         |> SpiralRuntime.execute_with_options_async
>                     trace Debug
>                         (fun () -> $"Eval.processSpiralOutput / spiral cli")
>                         (fun () -> $"exitCode: {exitCode} / builderCommand: 
> {builderCommand} / command: {command} / result: {result |> SpiralSm.ellipsis_end
> 400} / {_locals ()}")
>                     return
>                         if exitCode = 0
>                         then {| code = result; eval = false; builderCommand = 
> builderCommand |} |> Ok
>                         else result |> Error
>                 })
>             )
>             |> Async.Parallel
> 
>     let hasEval =
>         props.backend = Supervisor.Fsharp
>         && props.builderCommands |> Array.exists (fun x -> x |> 
> SpiralSm.starts_with "fsharp")
> 
>     let outputResult =
>         if props.builderCommands.Length > 0 && not hasEval
>         then None
>         else
>             let code =
>                 if props.builderCommands.Length > 1
>                 then
>                     let header = "System.Console.WriteLine \".fsx output:\"\n"
>                     $"{header}{props.code}"
>                 else props.code
>             Some (Ok [[ {| code = code; eval = true; builderCommand = "" |} ]])
> 
>     match outputResult, spiralBuilderResults with
>     | Some outputResult, [[||]] ->
>         return outputResult, [[||]]
>     | None, [[||]] ->
>         return Ok [[ {| code = "()"; eval = true; builderCommand = "" |} ]], 
> [[||]]
>     | _, spiralBuilderResults ->
>         try
>             let spiralResults =
>                 match outputResult with
>                 | Some (Ok code) ->
>                     spiralBuilderResults
>                     |> Array.append (code |> List.map Ok |> List.toArray)
>                 | _ -> spiralBuilderResults
>             let codes =
>                 spiralResults
>                 |> Array.map (fun spiralBuilderResult' ->
>                     let commandResult, errors =
>                         match spiralBuilderResult' with
>                         | Ok result when result.eval = false ->
>                             let result' =
>                                 result.code
>                                 |> 
> FSharp.Json.Json.deserialize<Map<string,string>>
>                             let result =
>                                 match result' |> Map.tryFind "command_result" 
> with
>                                 | Some result'' ->
>                                     result''
>                                     |> 
> FSharp.Json.Json.deserialize<Map<string,string>>
>                                     |> Map.add "builderCommand" 
> result.builderCommand
>                                 | None -> Map.empty
>                             result, [[||]]
>                         | Ok result when result.eval = true ->
>                             let result =
>                                 [[
>                                     "extension", "fsx"
>                                     "code", result.code
>                                     "output", ""
>                                 ]]
>                                 |> Map.ofList
>                             result, [[||]]
>                         | Error error ->
>                             Map.empty,
>                             [[|
>                                 (
>                                     TraceLevel.Critical, 
> $"Eval.processSpiralOutput / evalResult error / errors[[0]] / outputPath: 
> {props.outputPath} / builderCommands: %A{props.builderCommands} / 
> spiralBuilderResult': %A{spiralBuilderResult'} / error: %A{error}", 0, ("", (0, 
> 0), (0, 0))
>                                 )
>                             |]]
>                         | _ ->
>                             Map.empty, [[||]]
> 
>                     if errors |> Array.isEmpty |> not
>                     then Error (Exception $"Eval.processSpiralOutput / 
> evalResult errors / Exception / commandResult: %A{commandResult}"), errors
>                     else
>                         let extension = commandResult.[["extension"]]
>                         let code = commandResult.[["code"]]
>                         let output = commandResult.[["output"]]
>                         let builderCommand =
>                             commandResult
>                             |> Map.tryFind "builderCommand"
>                             |> Option.defaultValue ""
> 
>                         let backendInfo =
>                             match props.backend, builderCommand with
>                             | Supervisor.Fsharp, builderCommand
>                                 when builderCommand |> SpiralSm.contains " " -> 
> $" ({builderCommand})"
>                             | Supervisor.Fsharp, _ -> ""
>                             | _ -> $" ({props.backend})"
> 
>                         let eval = output = "" && extension = "fsx"
> 
>                         if props.printCode && not eval
>                         then _trace (fun () -> 
> $""".{extension}{backendInfo}:{'\n'}{code}""")
> 
>                         trace Debug
>                             (fun () -> $"Eval.processSpiralOutput / result")
>                             (fun () -> $"builderCommand: {builderCommand} / 
> extension: {extension} / commandResult: {commandResult |> 
> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400}/ {_locals ()}")
> 
>                         let code =
>                             if props.printCode
>                                 || spiralResults.Length > 1
>                                 || props.builderCommands.Length > 1
>                             then
>                                 if eval
>                                 then code
>                                 else
>                                     let header = $".{extension} 
> output{backendInfo}:\n"
>                                     $"""{if output |> SpiralSm.contains "\n" 
> then "\n" else ""}{header}{output}"""
>                             elif eval
>                             then code
>                             else output
>                         Ok {| code = code; eval = eval; builderCommand = 
> builderCommand |}, [[||]]
>                 )
>             trace Debug
>                 (fun () -> $"Eval.processSpiralOutput / codes")
>                 (fun () ->
>                     let props = {| props with cancellationToken = None |}
>                     $"codes: {codes |> FSharp.Json.Json.serialize |> 
> SpiralSm.ellipsis_end 400} / spiralResults: {spiralResults |> 
> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / spiralBuilderResults:
> {spiralBuilderResults |> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 
> 400} / props: {props |> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400}
> / {_locals ()}")
>             return
>                 (((Ok [[]]), [[||]]), codes)
>                 ||> Array.fold (fun (acc_code, acc_errors) (code, errors) ->
>                     match code, acc_code with
>                     | Ok code, Ok acc_code ->
>                         let errors =
>                             acc_errors
>                             |> Array.append errors
>                             |> Array.append props.spiralErrors
>                         let errors =
>                             if errors |> Array.isEmpty
>                             then errors
>                             else
>                                 let code = $"%A{code}"
>                                 errors
>                                 |> Array.append [[|
>                                     TraceLevel.Critical, 
> $"Eval.processSpiralOutput / errors / errors[[-1]] / outputPath: 
> {props.outputPath} / builderCommands: %A{props.builderCommands} / code: {code |>
> SpiralSm.ellipsis_end 400}", 0, ("", (0, 0), (0, 0))
>                                 |]]
>                         Ok (code :: acc_code), errors
>                     | Error ex, _
>                     | _, Error ex ->
>                         Error (Exception $"Eval.processSpiralOutput / -1 / 
> Exception / spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> 
> SpiralSm.format_exception}"),
>                         acc_errors |> Array.append errors
>                 )
>         with ex ->
>             trace Critical (fun () -> $"Eval.processSpiralOutput / try 2 ex / 
> spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> 
> SpiralSm.format_exception}") _locals
>             return
>                 Error (Exception $"Eval.processSpiralOutput / try 2 ex / 
> Exception / spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> 
> SpiralSm.format_exception}"),
>                 [[|
>                     (
>                         TraceLevel.Critical, $"Eval.processSpiralOutput / try 2 
> ex / errors[[0]] / spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> 
> SpiralSm.format_exception}", 0, ("", (0, 0), (0, 0))
>                     )
>                 |]]
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## tryGetPropertyValue
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let tryGetPropertyValue (propertyName: string) (obj: obj) =
>     let objType = obj.GetType ()
>     let propertyInfo = propertyName |> objType.GetProperty
>     if propertyInfo <> null
>     then propertyInfo.GetValue (obj, null) |> Some
>     else None
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## evalAsync
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec evalAsync
>     retry
>     (props : {|
>         rawCellCode: _
>         lines: _
>         isReal: _
>         builderCommands: _ array
>         isCache: _
>         timeout: _
>         cancellationToken: _
>         printCode: _
>         traceLevel: _
>         fsi_eval: _
>     |})
>     = async {
>     try
>         let cellCode, lastTopLevelIndex = prepareSpiral props.rawCellCode 
> props.lines
>         let newAllCode =
>             if props.isReal
>             then $"{allCodeReal}\n\n{cellCode}"
>             else $"{allCode}\n\n{cellCode}"
> 
>         let buildBackends =
>             if props.builderCommands.Length = 0
>             then [[| Supervisor.Fsharp |]]
>             else
>                 props.builderCommands
>                 |> Array.map (fun x ->
>                     if x |> SpiralSm.starts_with "gleam"
>                     then Supervisor.Gleam
>                     elif x |> SpiralSm.starts_with "cuda"
>                     then Supervisor.Python
>                     elif x |> SpiralSm.starts_with "cpp"
>                     then Supervisor.Cpp
>                     else Supervisor.Fsharp
>                 )
>                 |> Array.distinct
> 
>         trace Verbose
>             (fun () -> $"Eval.eval")
>             (fun () -> $"lastTopLevelIndex: {lastTopLevelIndex} / 
> builderCommands: %A{props.builderCommands} / buildBackends: %A{buildBackends} / 
> isReal: {props.isReal} / {_locals ()}")
> 
>         let! buildCodeResults =
>             buildBackends
>             |> Array.map (fun backend -> async {
>                 let! result =
>                     if props.isReal
>                     then Supervisor.Spir newAllCode
>                     else
>                         Supervisor.Spi
>                             (newAllCode, if allCodeReal = "" then None else Some
> allCodeReal)
>                     |> Supervisor.buildCode backend allPackages props.isCache 
> props.timeout props.cancellationToken
>                 return backend, result
>             })
>             |> Async.Parallel
>             |> Async.catch
>             |> Async.runWithTimeoutAsync props.timeout
> 
>         match buildCodeResults with
>         | Some (Ok buildCodeResults) ->
>             let! result, errors =
>                 ((Ok [[]], [[||]]), buildCodeResults)
>                 ||> Async.fold (fun acc buildCodeResult -> async {
>                     match buildCodeResult with
>                     | backend, (_, (outputPath, Some code), spiralErrors) ->
>                         let spiralErrors =
>                             allCode |> mapErrors (Warning, spiralErrors, 
> lastTopLevelIndex)
>                         let! result =
>                             processSpiralOutput
>                                 {|
>                                     printCode = props.printCode
>                                     traceLevel = props.traceLevel
>                                     builderCommands = props.builderCommands
>                                     lastTopLevelIndex = lastTopLevelIndex
>                                     backend = backend
>                                     cancellationToken = props.cancellationToken
>                                     spiralErrors = spiralErrors
>                                     code = code
>                                     outputPath = outputPath
>                                     isReal = props.isReal
>                                 |}
>                         match result, acc with
>                         | (Ok code, errors), (Ok acc_code, acc_errors) ->
>                             return Ok (acc_code @ code), acc_errors |> 
> Array.append errors
>                         | (Error ex, errors), _ | _, (Error ex, errors) ->
>                             return
>                                 Error (Exception $"Eval.evalAsync / 
> processSpiralOutput / Exception / buildCodeResult: %A{buildCodeResult |> 
> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / ex: {ex |> 
> SpiralSm.format_exception}"),
>                                 errors |> Array.append errors
>                     | _, (_, _, errors) when errors |> List.isEmpty |> not ->
>                         return errors.[[0]] |> fst |> Exception |> Error,
>                         allCode |> mapErrors (TraceLevel.Critical, errors, 
> lastTopLevelIndex)
>                     | _ -> return acc
>                 })
>             let cancellationToken = defaultArg props.cancellationToken 
> System.Threading.CancellationToken.None
>             match result, errors with
>             | Ok code, [[||]] ->
>                 let code, eval =
>                     code
>                     |> List.map (fun code ->
>                         if code.eval
>                         then None, Some code.code
>                         else Some code.code, None
>                     )
>                     |> List.unzip
>                 let code = code |> List.choose id
>                 let eval = eval |> List.choose id
> 
>                 trace Debug
>                     (fun () -> $"Eval.eval")
>                     (fun () -> $"eval: {eval |> FSharp.Json.Json.serialize |> 
> SpiralSm.ellipsis_end 400} / code: {code |> FSharp.Json.Json.serialize |> 
> SpiralSm.ellipsis_end 400} / {_locals ()}")
> 
>                 let ch, errors =
>                     match eval, code with
>                     | [[]], [[]] ->
>                         Choice2Of2 (Exception $"Eval.evalAsync / eval=[[]] / 
> code=[[]] / buildCodeResults: %A{buildCodeResults} / code: %A{code}"), errors
>                     | [[ eval ]], [[]] ->
>                         let eval =
>                             if eval |> SpiralSm.contains "<script"
>                             then $"{eval}, \"text/html1\""
>                             else eval
>                         let ch, errors2 = props.fsi_eval eval cancellationToken
>                         let errors =
>                             errors2
>                             // |> Array.map (fun (e1, e2, e3, _) ->
>                             //     (e1, e2, e3, ("", (0, 0), (0, 0)))
>                             // )
>                             |> Array.append errors
>                         ch, errors
>                     | [[]], _ ->
>                         let code = code |> List.rev |> String.concat "\n\n"
>                         let code =
>                             if props.printCode
>                             then $"\"\"\"{code}\n\n\"\"\""
>                             else $"\"\"\"{code}\n\"\"\""
>                         let code =
>                             if code |> SpiralSm.contains "<script"
>                             then $"{code}, \"text/html2\""
>                             else code
>                         let ch, errors2 = props.fsi_eval code cancellationToken
>                         let errors =
>                             errors2
>                             // |> Array.map (fun (e1, e2, e3, _) ->
>                             //     (e1, e2, e3, ("", (0, 0), (0, 0)))
>                             // )
>                             |> Array.append errors
>                         ch, errors
>                     | _ ->
>                         let code, errors =
>                             ((Ok (code |> List.rev), [[||]]), eval)
>                             ||> List.fold (fun (acc, acc_errors) eval ->
>                                 match acc with
>                                 | Error ch -> Error ch, acc_errors
>                                 | Ok acc ->
>                                     let eval =
>                                         if eval |> SpiralSm.contains "<script"
>                                         then $"{eval}, \"text/html3\""
>                                         else eval
>                                     let ch, errors = props.fsi_eval eval 
> cancellationToken
>                                     let errors =
>                                         errors
>                                         // |> Array.map (fun (e1, e2, e3, _) ->
>                                         //     (e1, e2, e3, ("", (0, 0), (0, 
> 0)))
>                                         // )
>                                         |> Array.append acc_errors
>                                     match ch with
>                                     | Choice1Of2 v ->
>                                         let v =
>                                             v
>                                             |> tryGetPropertyValue 
> "ReflectionValue"
>                                             |> Option.map (fun x -> $"%A{x}")
>                                             |> Option.defaultValue ""
>                                         Ok (v :: acc), errors
>                                     | Choice2Of2 ex ->
>                                         trace Critical (fun () -> 
> $"Eval.evalAsync / fsi_eval fold Choice error / buildCodeResults: 
> %A{buildCodeResults} / ex: {ex |> SpiralSm.format_exception}") _locals
>                                         Error ch, errors
>                             )
>                         match code with
>                         | Error ch -> ch, errors
>                         | Ok code ->
>                             let code =
>                                 code
>                                 |> List.filter ((<>) "")
>                                 |> String.concat "\n\n"
> 
>                             let code =
>                                 if props.builderCommands.Length > 0 && 
> eval.Length = 0
>                                 then code
>                                 elif code |> SpiralSm.contains "\n\n\n"
>                                 then $"{code}\n\n"
>                                 else $"{code}\n"
> 
>                             let code =
>                                 if props.printCode
>                                 then $"\"\"\"{code}\n\n\n\"\"\""
>                                 else $"\"\"\"{code}\n\"\"\""
>                             let code =
>                                 if code |> SpiralSm.contains "<script"
>                                 then $"{code}, \"text/html4\""
>                                 else code
>                             let ch, errors2 = props.fsi_eval code 
> cancellationToken
>                             let errors =
>                                 errors2
>                                 // |> Array.map (fun (e1, e2, e3, _) ->
>                                 //     (e1, e2, e3, ("", (0, 0), (0, 0)))
>                                 // )
>                                 |> Array.append errors
>                             ch, errors
>                 match ch with
>                 | Choice1Of2 v ->
>                     if props.isReal
>                     then allCodeReal <- newAllCode
>                     else allCode <- newAllCode
>                     return Ok(v), errors
>                 | Choice2Of2 ex ->
>                     return
>                         Error (Exception $"Eval.evalAsync / -2 / Exception / ex:
> {ex |> SpiralSm.format_exception} / buildCodeResults: {buildCodeResults |> 
> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400}"),
>                         errors
>             | Ok code, errors ->
>                 return
>                     Error (Exception "Eval.evalAsync / errors / 
> buildCodeResults: %A{buildCodeResults} / code: %A{code}"),
>                     errors
>             | Error ex, errors ->
>                 let ex = ex |> SpiralSm.format_exception
>                 if retry <= 3 &&
>                     (ex |> SpiralSm.contains "Expected one of: inl, let, union, 
> nominal, prototype, type, instance, and, open")
>                     || (ex |> SpiralSm.contains "Unexpected end of block past 
> this token.")
>                     || (ex |> SpiralSm.contains "Unbound variable:")
>                 then return! evalAsync (retry + 1) props
>                 else
>                     return
>                         Error (Exception $"Eval.evalAsync / -1 / Exception / ex:
> {ex} / buildCodeResults: {buildCodeResults |> FSharp.Json.Json.serialize |> 
> SpiralSm.ellipsis_end 1500}"),
>                         errors
>         | Some (Error ex) ->
>             trace Critical (fun () -> $"Eval.evalAsync / buildCodeResults Error 
> / buildCodeResults: %A{buildCodeResults} / ex: {ex |> 
> SpiralSm.format_exception}") _locals
>             return
>                 Error (Exception $"Eval.evalAsync / buildCodeResults Error / 
> Exception / buildCodeResults: %A{buildCodeResults} / ex: {ex |> 
> SpiralSm.format_exception}"),
>                 [[|
>                     (
>                         TraceLevel.Critical, $"Eval.evalAsync / buildCodeResults
> Error / errors[[0]] / ex: {ex |> SpiralSm.format_exception} / buildCodeResults: 
> %A{buildCodeResults}", 0, ("", (0, 0), (0, 0))
>                     )
>                 |]]
>         | _ ->
>             return
>                 Error (Exception $"Eval.evalAsync / buildCodeResults / Exception
> / buildCodeResults: %A{buildCodeResults}"),
>                 [[|
>                     (
>                         TraceLevel.Critical, $"Eval.evalAsync / buildCodeResults
> / errors[[0]] / buildCodeResults: %A{buildCodeResults}", 0, ("", (0, 0), (0, 0))
>                     )
>                 |]]
>     with ex ->
>         trace Critical (fun () -> $"Eval.evalAsync / try 1 ex / ex: {ex |> 
> SpiralSm.format_exception} / lines: %A{props.lines}") _locals
>         return
>             Error (Exception $"Eval.evalAsync / try 1 ex / Exception / ex: {ex 
> |> SpiralSm.format_exception} / lines: %A{props.lines}"),
>             [[|
>                 (
>                     TraceLevel.Critical, $"Eval.evalAsync / try 1 ex / 
> errors[[0]] / ex: {ex |> SpiralSm.format_exception} / lines: %A{props.lines}", 
> 0, ("", (0, 0), (0, 0))
>                 )
>             |]]
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## eval
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline eval
>     (fsi_eval:
>         string
>         -> System.Threading.CancellationToken
>         -> Choice<'a, Exception> * (TraceLevel * string * int * (string * (int *
> int) * (int * int))) array)
>     (cancellationToken: Option<System.Threading.CancellationToken>)
>     (code: string)
>     =
>     trace Verbose
>         (fun () -> $"Eval.eval")
>         (fun () -> $"code: {code |> SpiralSm.ellipsis_end 400} / {_locals ()}")
> 
>     let rawCellCode =
>         code |> SpiralSm.replace "\r\n" "\n"
> 
>     let lines = rawCellCode |> SpiralSm.split "\n"
> 
>     if lines |> Array.exists (fun line -> line |> SpiralSm.starts_with "#r " && 
> line |> SpiralSm.ends_with "\"") then
>         let cancellationToken = defaultArg cancellationToken 
> System.Threading.CancellationToken.None
>         let code =
>             if code |> SpiralSm.contains "<script"
>             then $"{code}, \"text/html5\""
>             else code
>         let ch, errors = fsi_eval code cancellationToken
>         trace Verbose (fun () -> $"Eval.eval / fsi_eval 1 / ch: %A{ch} / errors:
> %A{errors}") _locals
>         match ch with
>         | Choice1Of2 v -> Ok(v), errors
>         | Choice2Of2 ex -> Error(ex), errors
>     else
>         let builderCommands =
>             lines
>             |> Array.choose (fun line ->
>                 if line |> SpiralSm.starts_with "///! "
>                 then line |> SpiralSm.split "///! " |> Array.tryItem 1
>                 else None
>             )
> 
>         let packages =
>             lines
>             |> Array.choose (fun line ->
>                 if line |> SpiralSm.starts_with "//// package="
>                 then line |> SpiralSm.split "=" |> Array.skip 1 |> 
> SpiralSm.concat "" |> Some
>                 else None
>             )
> 
>         allPackages <- packages |> Array.append allPackages |> Array.distinct
> 
>         let timeout =
>             lines
>             |> Array.tryPick (fun line ->
>                 if line |> SpiralSm.starts_with "//// timeout="
>                 then line |> SpiralSm.split "=" |> Array.tryItem 1 |> Option.map
> int
>                 else None
>             )
>             |> Option.defaultValue (60003 * 60 * 24)
> 
>         let boolArg def command =
>             lines
>             |> Array.tryPick (fun line ->
>                 let text = $"//// {command}"
>                 match line.[[0..text.Length-1]], line.[[text.Length..]] with
>                 | head, "" when head = text ->
>                     Some true
>                 | head, _ when head = text ->
>                     line |> SpiralSm.split "=" |> Array.tryItem 1 |> Option.map 
> ((<>) "false")
>                 | _ -> None
>             )
>             |> Option.defaultValue def
> 
>         let printCode = "print_code" |> boolArg false
>         let isTraceToggle = "trace_toggle" |> boolArg false
>         let isTrace = "trace" |> boolArg false
>         let isCache = "cache" |> boolArg false
>         let isReal = "real" |> boolArg false
>         let timeout_continue = "timeout_continue" |> boolArg false
> 
>         if isTraceToggle
>         then traceToggle <- not traceToggle
> 
>         let oldLevel = get_trace_level ()
>         let traceLevel =
>             if isTrace || traceToggle
>             then Verbose
>             else Info
>         traceLevel
>         |> to_trace_level
>         |> set_trace_level
>         use _ = (new_disposable (fun () ->
>             oldLevel |> set_trace_level
>         ))
> 
>         evalAsync 1
>             {|
>                 rawCellCode = rawCellCode
>                 lines = lines
>                 isReal = isReal
>                 builderCommands = builderCommands
>                 isCache = isCache
>                 timeout = timeout
>                 cancellationToken = cancellationToken
>                 printCode = printCode
>                 traceLevel = traceLevel
>                 fsi_eval = fsi_eval
>             |}
>         |> Async.runWithTimeout timeout
>         |> (fun x ->
>             match x with
>             | Some ((Ok x), a) -> Some ((Ok x), a)
>             | Some ((Error x), a) ->
>                 trace Info (fun () -> $"Eval.eval / error / exception: 
> {x.GetType().FullName} / a: %A{a} / x: %A{x}") (fun () -> "")
>                 Some ((Error x), a)
>             | _ -> None
>         )
>         |> Option.defaultWith (fun () -> (
>             let lines = lines |> SpiralSm.concat (string '\n') |> 
> SpiralSm.ellipsis_end 1500
>             in
>             Error (Exception $"Eval.eval / Async.runWithTimeout / Exception / 
> timeout: {timeout} / timeout_continue: {timeout_continue} / lines: {lines}"),
>             [[|
>                 (
>                     TraceLevel.Critical, $"Eval.eval / Async.runWithTimeout / 
> errors[[0]] / timeout: {timeout} / lines: {lines}", 0, ("", (0, 0), (0, 0))
>                 )
>             |]]
>         ))
00:01:16 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 54798 }
00:01:16 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:01:17 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb to html
00:01:17 v #6 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:01:17 v #7 !   validate(nb)
00:01:17 v #8 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:01:17 v #9 !   return _pygments_highlight(
00:01:18 v #10 ! [NbConvertApp] Writing 466878 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.html
00:01:18 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 896 }
00:01:18 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 896 }
00:01:18 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:01:18 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:01:18 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:01:18 d #16 spiral.run / dib / { exit_code = 0; result_length = 55753 }
00:00:00 d #1 writeDibCode / output: Fs / path: Eval.dib
00:00:00 d #2 parseDibCode / output: Fs / file: Eval.dib
polyglot/apps/spiral/build.ps1 / $env:CI:'true'
In [ ]:
{ pwsh ../lib/fsharp/build.ps1 -sequential 1 } | Invoke-Block
00:00:00 d #1 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path Async.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path Async.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:00:18 d #2 runtime.execute_with_options_async / { exit_code = 0; output_length = 20495; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path Async.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:00:18 d #1 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path Async.dib --retries 3
00:00:18 d #3 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path AsyncSeq.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path AsyncSeq.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:00:37 d #4 runtime.execute_with_options_async / { exit_code = 0; output_length = 12252; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path AsyncSeq.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:00:37 d #2 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path AsyncSeq.dib --retries 3
00:00:37 d #5 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path Common.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path Common.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:00:53 d #6 runtime.execute_with_options_async / { exit_code = 0; output_length = 5893; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path Common.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:00:53 d #3 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path Common.dib --retries 3
00:00:53 d #7 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path CommonFSharp.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path CommonFSharp.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:01:10 d #8 runtime.execute_with_options_async / { exit_code = 0; output_length = 4775; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path CommonFSharp.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:01:10 d #4 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path CommonFSharp.dib --retries 3
00:01:10 d #9 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path FileSystem.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path FileSystem.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:01:45 d #10 runtime.execute_with_options_async / { exit_code = 0; output_length = 97683; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path FileSystem.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:01:45 d #5 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path FileSystem.dib --retries 3
00:01:45 d #11 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path Runtime.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path Runtime.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:02:03 d #12 runtime.execute_with_options_async / { exit_code = 0; output_length = 9703; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path Runtime.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:02:03 d #6 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path Runtime.dib --retries 3
00:00:00 d #1 writeDibCode / output: Fs / path: Common.dib
00:00:00 d #1 writeDibCode / output: Fs / path: CommonFSharp.dib
00:00:00 d #1 writeDibCode / output: Fs / path: Async.dib
00:00:00 d #1 writeDibCode / output: Fs / path: AsyncSeq.dib
00:00:00 d #2 parseDibCode / output: Fs / file: Common.dib
00:00:00 d #3 parseDibCode / output: Fs / file: CommonFSharp.dib
00:00:00 d #4 parseDibCode / output: Fs / file: Async.dib
00:00:00 d #5 parseDibCode / output: Fs / file: AsyncSeq.dib
00:00:00 d #6 writeDibCode / output: Fs / path: FileSystem.dib
00:00:00 d #7 writeDibCode / output: Fs / path: Runtime.dib
00:00:00 d #8 parseDibCode / output: Fs / file: FileSystem.dib
00:00:00 d #9 parseDibCode / output: Fs / file: Runtime.dib
In [ ]:
{ pwsh ../deps/spiral/apps/wasm/build.ps1 -SkipFsx 1 } | Invoke-Block
00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: spiral_wasm / hash:  / code.Length: 354789
spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm
polyglot/scripts/core.ps1/ResolveLink #4 / Path: /home/runner/work/polyglot/polyglot/deps/spiral/deps/polyglot/deps/spiral/lib/spiral/../../deps/polyglot / parent_target:  / path_target: /home/runner/work/polyglot/polyglot / parent: /home/runner/work/polyglot/polyglot/deps/spiral/deps/polyglot/deps/spiral/lib/spiral/../../deps / End: polyglot
spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm / ProjectName: spiral_wasm / Language: rs / Runtime:  / root: /home/runner/work/polyglot/polyglot
Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha)

Thanks to the contributor! @2sComplement
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target/Builder/spiral_wasm/spiral_wasm.fsproj...
Project and references (14 source files) parsed in 3266ms

Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)

Started Fable compilation...

Fable compilation finished in 10039ms

./deps/spiral/lib/spiral/common.fsx(2206,0): (2206,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/sm.fsx(561,0): (561,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/async_.fsx(250,0): (250,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/crypto.fsx(2436,0): (2436,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/date_time.fsx(2553,0): (2553,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/platform.fsx(122,0): (122,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/networking.fsx(5525,0): (5525,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/trace.fsx(2244,0): (2244,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/runtime.fsx(9174,0): (9174,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/file_system.fsx(20847,0): (20847,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
spiral/apps/wasm/build.ps1 / path: /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm/target/rs/spiral_wasm.rs
spiral/apps/wasm/build.ps1 / $targetDir = /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm / $projectName: spiral_wasm / $env:CI:'true'
 Downloading crates ...
  Downloaded crypto-hash v0.3.4
  Downloaded async-recursion v1.1.1
  Downloaded hex-conservative v0.1.2
  Downloaded hyper-timeout v0.4.1
  Downloaded pdb v0.7.0
  Downloaded hashbrown v0.15.2
  Downloaded io-lifetimes v1.0.11
  Downloaded opentelemetry_sdk v0.22.1
  Downloaded near-abi-client-impl v0.1.1
  Downloaded rustversion v1.0.20
  Downloaded goblin v0.5.4
  Downloaded flate2 v1.1.0
  Downloaded bytesize v1.3.2
  Downloaded crypto-mac v0.9.1
  Downloaded color-spantrace v0.2.1
  Downloaded color-eyre v0.6.3
  Downloaded utf16_iter v1.0.5
  Downloaded serde_with v3.12.0
  Downloaded unicode-linebreak v0.1.5
  Downloaded tracing-appender v0.2.3
  Downloaded once_cell v1.21.1
  Downloaded urlencoding v2.1.3
  Downloaded wasmparser v0.83.0
  Downloaded wasmparser v0.211.1
  Downloaded zerovec-derive v0.10.3
  Downloaded indexmap v2.8.0
  Downloaded near-abi-client-macros v0.1.1
  Downloaded zvariant_derive v3.15.2
  Downloaded near-account-id v1.0.0
  Downloaded near-parameters v0.23.0
  Downloaded opaque-debug v0.3.1
  Downloaded num v0.4.3
  Downloaded near-gas v0.3.0
  Downloaded linux-keyutils v0.2.4
  Downloaded memoffset v0.7.1
  Downloaded icu_collections v1.5.0
  Downloaded near-primitives-core v0.23.0
  Downloaded near-jsonrpc-primitives v0.23.0
  Downloaded near-o11y v0.23.0
  Downloaded indicatif v0.17.11
  Downloaded num-bigint v0.3.3
  Downloaded mio v1.0.3
  Downloaded near-sdk v5.11.0
  Downloaded icu_properties_data v1.5.0
  Downloaded mio v0.8.11
  Downloaded nix v0.26.4
  Downloaded openssl v0.10.71
  Downloaded miniz_oxide v0.8.5
  Downloaded near-primitives v0.23.0
  Downloaded linux-raw-sys v0.3.8
  Downloaded near-cli-rs v0.11.1
  Downloaded gimli v0.26.2
  Downloaded hyper-util v0.1.10
  Downloaded indexmap v1.9.3
  Downloaded icu_locid_transform_data v1.5.0
  Downloaded near-time v0.23.0
  Downloaded num-rational v0.3.2
  Downloaded opentelemetry v0.22.0
  Downloaded libloading v0.8.6
  Downloaded indent_write v2.2.0
  Downloaded owo-colors v3.5.0
  Downloaded ordered-stream v0.2.0
  Downloaded ordered-float v4.6.0
  Downloaded opentelemetry-semantic-conventions v0.14.0
  Downloaded near-sandbox-utils v0.14.0
  Downloaded opentelemetry-otlp v0.15.0
  Downloaded num-rational v0.4.2
  Downloaded num-complex v0.4.6
  Downloaded near-chain-configs v0.23.0
  Downloaded icu_provider v1.5.0
  Downloaded icu_properties v1.5.1
  Downloaded linux-raw-sys v0.9.3
  Downloaded icu_normalizer_data v1.5.0
  Downloaded near-workspaces v0.11.1
  Downloaded near-jsonrpc-client v0.10.1
  Downloaded icu_normalizer v1.5.0
  Downloaded csv v1.3.1
  Downloaded near-stdx v0.23.0
  Downloaded near-socialdb-client v0.3.2
  Downloaded near-sandbox-utils v0.9.0
  Downloaded near-sandbox-utils v0.8.0
  Downloaded near-rpc-error-core v0.23.0
  Downloaded near-token v0.2.1
  Downloaded near-crypto v0.23.0
  Downloaded nom-supreme v0.6.0
  Downloaded near_schemafy_lib v0.7.0
  Downloaded near_schemafy_core v0.7.0
  Downloaded near-sys v0.2.2
  Downloaded opentelemetry-proto v0.5.0
  Downloaded openssl-sys v0.9.106
  Downloaded miniz_oxide v0.7.4
  Downloaded litemap v0.7.5
  Downloaded icu_locid_transform v1.5.0
  Downloaded icu_locid v1.5.0
  Downloaded near-token v0.3.0
  Downloaded keyring v2.3.3
  Downloaded keccak v0.1.5
  Downloaded jsonptr v0.4.7
  Downloaded json_comments v0.2.2
  Downloaded json-patch v2.0.0
  Downloaded joinery v2.1.0
  Downloaded near-config-utils v0.23.0
  Downloaded icu_provider_macros v1.5.0
  Downloaded newline-converter v0.3.0
  Downloaded jiff v0.2.5
  Downloaded near-gas v0.2.5
  Downloaded near-fmt v0.23.0
  Downloaded idna_adapter v1.2.0
  Downloaded ident_case v1.0.1
  Downloaded new_debug_unreachable v1.0.6
  Downloaded inquire v0.7.5
  Downloaded near-sdk-macros v5.11.0
  Downloaded names v0.14.0
  Downloaded memmap2 v0.5.10
  Downloaded interactive-clap-derive v0.2.10
  Downloaded zvariant v3.15.2
  Downloaded password-hash v0.4.2
  Downloaded winnow v0.7.4
  Downloaded ureq v2.12.1
  Downloaded secp256k1-sys v0.8.1
  Downloaded near-performance-metrics v0.23.0
  Downloaded near-abi v0.4.3
  Downloaded interactive-clap v0.2.10
  Downloaded zvariant_utils v1.0.1
  Downloaded zstd v0.11.2+zstd.1.5.2
  Downloaded zbus v3.15.2
  Downloaded near-abi-client v0.1.1
  Downloaded matchit v0.7.3
  Downloaded zstd-safe v5.0.2+zstd.1.5.2
  Downloaded zerovec v0.10.4
  Downloaded zbus_names v2.6.1
  Downloaded unicode-normalization v0.1.22
  Downloaded tracing-opentelemetry v0.23.0
  Downloaded rust_decimal v1.37.1
  Downloaded gimli v0.28.1
  Downloaded zip v0.5.13
  Downloaded pbkdf2 v0.11.0
  Downloaded yoke v0.7.5
  Downloaded write16 v1.0.0
  Downloaded vte v0.11.1
  Downloaded rustls v0.23.25
  Downloaded rustix v1.0.3
  Downloaded portable-atomic v1.11.0
  Downloaded h2 v0.3.26
  Downloaded zbus_macros v3.15.2
  Downloaded xml-rs v0.8.25
  Downloaded xdg-home v1.3.0
  Downloaded writeable v0.5.5
  Downloaded vte_generate_state_changes v0.1.2
  Downloaded vt100 v0.15.2
  Downloaded near-rpc-error-macro v0.23.0
  Downloaded near-async v0.23.0
  Downloaded near-async-derive v0.23.0
  Downloaded uuid v0.8.2
  Downloaded uriparse v0.6.4
  Downloaded uint v0.9.5
  Downloaded sync_wrapper v0.1.2
  Downloaded prost-derive v0.12.6
  Downloaded prometheus v0.13.4
  Downloaded hyper v0.14.32
  Downloaded http v0.2.12
  Downloaded fuzzy-matcher v0.3.7
  Downloaded fluent-uri v0.1.4
  Downloaded fastrand v1.9.0
  Downloaded env_logger v0.11.7
  Downloaded elementtree v0.7.0
  Downloaded ed25519-dalek v2.1.1
  Downloaded derive_more v0.99.19
  Downloaded deranged v0.4.1
  Downloaded curve25519-dalek v4.1.3
  Downloaded yoke-derive v0.7.5
  Downloaded webpki-roots v0.26.8
  Downloaded waker-fn v1.2.0
  Downloaded tracing-indicatif v0.3.9
  Downloaded tracing-attributes v0.1.28
  Downloaded tokio v1.44.1
  Downloaded tinystr v0.7.6
  Downloaded symbolic-common v8.8.0
  Downloaded string_cache v0.8.8
  Downloaded reqwest v0.12.15
  Downloaded proc-macro-error-attr v1.0.4
  Downloaded prettytable v0.10.0
  Downloaded prettyplease v0.1.25
  Downloaded polling v2.8.0
  Downloaded hex v0.3.2
  Downloaded heck v0.4.1
  Downloaded glob v0.3.2
  Downloaded fs2 v0.4.3
  Downloaded enum-map-derive v0.17.0
  Downloaded easy-ext v1.0.2
  Downloaded easy-ext v0.2.9
  Downloaded dirs v5.0.1
  Downloaded derive_arbitrary v1.4.1
  Downloaded curve25519-dalek-derive v0.1.1
  Downloaded unicode-width v0.2.0
  Downloaded toml v0.8.20
  Downloaded symbolic-debuginfo v8.8.0
  Downloaded slipped10 v0.4.6
  Downloaded shellexpand v3.1.0
  Downloaded rustls-pki-types v1.11.0
  Downloaded h2 v0.4.8
  Downloaded fixed-hash v0.7.0
  Downloaded toml_edit v0.22.24
  Downloaded tokio-retry v0.3.0
  Downloaded term v0.7.0
  Downloaded tempfile v3.19.1
  Downloaded strum v0.24.1
  Downloaded socket2 v0.4.10
  Downloaded smart-default v0.7.1
  Downloaded smart-default v0.6.0
  Downloaded smallvec v1.14.0
  Downloaded signal-hook-registry v1.4.2
  Downloaded sha3 v0.10.8
  Downloaded rustls-webpki v0.103.0
  Downloaded rustix v0.37.28
  Downloaded reed-solomon-erasure v4.0.2
  Downloaded proc-macro-error v1.0.4
  Downloaded proc-macro-crate v3.3.0
  Downloaded proc-macro-crate v1.3.1
  Downloaded http-body v0.4.6
  Downloaded enumflags2 v0.7.11
  Downloaded enum-map v2.7.3
  Downloaded encode_unicode v1.0.0
  Downloaded ed25519 v2.2.3
  Downloaded darling v0.20.10
  Downloaded tracing-core v0.1.33
  Downloaded synstructure v0.13.1
  Downloaded strum_macros v0.24.3
  Downloaded smawk v0.3.2
  Downloaded signal-hook v0.3.17
  Downloaded secret-service v3.1.0
  Downloaded scroll v0.11.0
  Downloaded hmac v0.9.0
  Downloaded fallible-iterator v0.2.0
  Downloaded event-listener v2.5.3
  Downloaded dmsort v1.0.2
  Downloaded debugid v0.7.3
  Downloaded openssl-src v300.4.2+3.4.1
  Downloaded adler v1.0.2
  Downloaded textwrap v0.16.2
  Downloaded socket2 v0.5.8
  Downloaded signal-hook-mio v0.2.4
  Downloaded plain v0.2.3
  Downloaded futures-lite v1.13.0
  Downloaded enumflags2_derive v0.7.11
  Downloaded crossterm v0.25.0
  Downloaded crossbeam-channel v0.5.14
  Downloaded tonic v0.11.0
  Downloaded tokio-util v0.7.14
  Downloaded serde_yaml v0.9.34+deprecated
  Downloaded secp256k1 v0.27.0
  Downloaded scroll_derive v0.11.1
  Downloaded primitive-types v0.10.1
  Downloaded darling_core v0.20.10
  Downloaded cc v1.2.17
  Downloaded cargo_metadata v0.18.1
  Downloaded brownstone v1.1.0
  Downloaded axum v0.6.20
  Downloaded async-io v1.13.0
  Downloaded async-fs v1.6.0
  Downloaded async-executor v1.13.1
  Downloaded async-broadcast v0.5.1
  Downloaded tracing-error v0.2.1
  Downloaded sha2 v0.9.9
  Downloaded serde_repr v0.1.20
  Downloaded protobuf v2.28.0
  Downloaded prost v0.12.6
  Downloaded clap_derive v4.5.32
  Downloaded bitcoin-internals v0.2.0
  Downloaded addr2line v0.21.0
  Downloaded actix-rt v2.10.0
  Downloaded actix-macros v0.2.4
  Downloaded tokio-io-timeout v1.2.0
  Downloaded serde_with_macros v3.12.0
  Downloaded scroll v0.10.2
  Downloaded convert_case v0.5.0
  Downloaded constant_time_eq v0.1.5
  Downloaded colored v2.2.0
  Downloaded cargo-near v0.6.4
  Downloaded blake2 v0.10.6
  Downloaded axum-core v0.3.4
  Downloaded async-stream v0.3.6
  Downloaded borsh-derive v1.5.6
  Downloaded block-buffer v0.9.0
  Downloaded bitcoin_hashes v0.13.0
  Downloaded binary-install v0.2.0
  Downloaded base64ct v1.7.3
  Downloaded atty v0.2.14
  Downloaded async-lock v2.8.0
  Downloaded bs58 v0.5.1
  Downloaded bs58 v0.4.0
  Downloaded borsh v1.5.6
  Downloaded bip39 v2.1.0
  Downloaded cargo-util v0.1.2
  Downloaded async-stream-impl v0.3.6
  Downloaded backtrace v0.3.71
  Downloaded actix v0.13.5
  Downloaded errno v0.3.10
  Downloaded hyper-rustls v0.27.5
  Downloaded derivative v2.2.0
  Downloaded anyhow v1.0.97
  Downloaded actix_derive v0.6.2
  Downloaded digest v0.9.0
  Downloaded darling_macro v0.20.10
  Downloaded csv-core v0.1.12
  Downloaded bitflags v2.9.0
  Downloaded arbitrary v1.4.1
  Downloaded Inflector v0.11.4
   Compiling libc v0.2.171
   Compiling serde v1.0.219
   Compiling syn v2.0.100
   Compiling version_check v0.9.5
   Compiling shlex v1.3.0
   Compiling jobserver v0.1.32
   Compiling once_cell v1.21.1
   Compiling cc v1.2.17
   Compiling generic-array v0.14.7
   Compiling smallvec v1.14.0
   Compiling futures-core v0.3.31
   Compiling pkg-config v0.3.32
   Compiling lock_api v0.4.12
   Compiling parking_lot_core v0.9.10
   Compiling scopeguard v1.2.0
   Compiling bytes v1.10.1
   Compiling parking_lot v0.12.3
   Compiling log v0.4.27
   Compiling signal-hook-registry v1.4.2
   Compiling getrandom v0.2.15
   Compiling equivalent v1.0.2
   Compiling hashbrown v0.15.2
   Compiling toml_datetime v0.6.8
   Compiling mio v1.0.3
   Compiling socket2 v0.5.8
   Compiling synstructure v0.13.1
   Compiling indexmap v2.8.0
   Compiling tracing-core v0.1.33
   Compiling futures-sink v0.3.31
   Compiling subtle v2.6.1
   Compiling rand_core v0.6.4
   Compiling crypto-common v0.1.6
   Compiling futures-channel v0.3.31
   Compiling num-traits v0.2.19
   Compiling anyhow v1.0.97
   Compiling block-buffer v0.10.4
   Compiling fnv v1.0.7
   Compiling syn v1.0.109
   Compiling cfg_aliases v0.2.1
   Compiling digest v0.10.7
   Compiling winnow v0.7.4
   Compiling serde_derive v1.0.219
   Compiling zerofrom-derive v0.1.6
   Compiling yoke-derive v0.7.5
   Compiling tokio-macros v2.5.0
   Compiling tokio v1.44.1
   Compiling tracing-attributes v0.1.28
   Compiling zerovec-derive v0.10.3
   Compiling tracing v0.1.41
   Compiling displaydoc v0.2.5
   Compiling futures-macro v0.3.31
   Compiling toml_edit v0.22.24
   Compiling futures-util v0.3.31
   Compiling zstd-sys v2.0.15+zstd.1.5.7
   Compiling rustversion v1.0.20
   Compiling crossbeam-utils v0.8.21
   Compiling proc-macro-crate v3.3.0
   Compiling icu_provider_macros v1.5.0
   Compiling bitflags v2.9.0
   Compiling borsh-derive v1.5.6
   Compiling thiserror v1.0.69
   Compiling thiserror-impl v1.0.69
   Compiling lazy_static v1.5.0
   Compiling rand_chacha v0.3.1
   Compiling byteorder v1.5.0
   Compiling serde_json v1.0.140
   Compiling rand v0.8.5
   Compiling borsh v1.5.6
   Compiling stable_deref_trait v1.2.0
   Compiling tokio-util v0.7.14
   Compiling sha2 v0.10.8
   Compiling semver v1.0.26
   Compiling percent-encoding v2.3.1
   Compiling zerofrom v0.1.6
   Compiling bitflags v1.3.2
   Compiling yoke v0.7.5
   Compiling num-integer v0.1.46
   Compiling memchr v2.7.4
   Compiling tower-service v0.3.3
   Compiling httparse v1.10.1
   Compiling zerovec v0.10.4
   Compiling hex v0.4.3
   Compiling ring v0.17.14
   Compiling cfg-if v1.0.0
   Compiling try-lock v0.2.5
   Compiling want v0.3.1
   Compiling async-trait v0.1.88
   Compiling typenum v1.18.0
   Compiling static_assertions v1.1.0
   Compiling tinystr v0.7.6
   Compiling http v0.2.12
   Compiling thread_local v1.1.8
   Compiling powerfmt v0.2.0
   Compiling regex-syntax v0.6.29
   Compiling writeable v0.5.5
   Compiling litemap v0.7.5
   Compiling deranged v0.4.1
   Compiling icu_locid v1.5.0
   Compiling regex-automata v0.1.10
   Compiling num_cpus v1.16.0
   Compiling openssl-src v300.4.2+3.4.1
   Compiling tower-layer v0.3.3
   Compiling time-core v0.1.4
   Compiling vcpkg v0.2.15
   Compiling num-conv v0.1.0
   Compiling overload v0.1.1
   Compiling nu-ansi-term v0.46.0
   Compiling time v0.3.41
   Compiling openssl-sys v0.9.106
   Compiling futures-executor v0.3.31
   Compiling matchers v0.1.0
   Compiling icu_provider v1.5.0
   Compiling http-body v0.4.6
   Compiling aho-corasick v1.1.3
   Compiling rustc_version v0.4.1
   Compiling sharded-slab v0.1.7
   Compiling crossbeam-channel v0.5.14
   Compiling serde_repr v0.1.20
   Compiling pin-project-internal v1.1.10
   Compiling tracing-log v0.2.0
   Compiling bzip2-sys v0.1.13+1.0.8
   Compiling indexmap v1.9.3
   Compiling num-bigint v0.3.3
   Compiling icu_locid_transform_data v1.5.0
   Compiling zstd-safe v5.0.2+zstd.1.5.2
   Compiling base64 v0.21.7
   Compiling regex-syntax v0.8.5
   Compiling pin-project v1.1.10
   Compiling icu_locid_transform v1.5.0
   Compiling tracing-subscriber v0.3.19
   Compiling curve25519-dalek v4.1.3
   Compiling regex-automata v0.4.9
   Compiling h2 v0.3.26
   Compiling icu_collections v1.5.0
   Compiling near-account-id v1.0.0
   Compiling axum-core v0.3.4
   Compiling num-rational v0.3.2
   Compiling crunchy v0.2.3
   Compiling strsim v0.11.1
   Compiling convert_case v0.4.0
   Compiling icu_properties_data v1.5.0
   Compiling base64 v0.22.1
   Compiling httpdate v1.0.3
   Compiling either v1.15.0
   Compiling mime v0.3.17
   Compiling hashbrown v0.12.3
   Compiling ident_case v1.0.1
   Compiling darling_core v0.20.10
   Compiling itertools v0.12.1
   Compiling hyper v0.14.32
   Compiling icu_properties v1.5.1
   Compiling derive_more v0.99.19
   Compiling regex v1.11.1
   Compiling axum v0.6.20
   Compiling tokio-stream v0.1.17
   Compiling derive_arbitrary v1.4.1
   Compiling enum-map-derive v0.17.0
   Compiling curve25519-dalek-derive v0.1.1
   Compiling secp256k1-sys v0.8.1
   Compiling urlencoding v2.1.3
   Compiling heck v0.4.1
   Compiling signature v2.2.0
   Compiling utf16_iter v1.0.5
   Compiling heck v0.5.0
   Compiling schemars v0.8.22
   Compiling bs58 v0.4.0
   Compiling rustls v0.23.25
   Compiling icu_normalizer_data v1.5.0
   Compiling utf8_iter v1.0.4
   Compiling write16 v1.0.0
   Compiling rustls-pki-types v1.11.0
   Compiling icu_normalizer v1.5.0
   Compiling ed25519 v2.2.3
   Compiling strum_macros v0.24.3
   Compiling opentelemetry v0.22.0
   Compiling arbitrary v1.4.1
   Compiling enum-map v2.7.3
   Compiling darling_macro v0.20.10
   Compiling prost-derive v0.12.6
   Compiling tower v0.4.13
   Compiling concurrent-queue v2.5.0
   Compiling tokio-io-timeout v1.2.0
   Compiling async-stream-impl v0.3.6
   Compiling ordered-float v4.6.0
   Compiling serde_derive_internals v0.29.1
   Compiling block-padding v0.3.3
   Compiling foreign-types-shared v0.1.1
   Compiling sync_wrapper v0.1.2
   Compiling glob v0.3.2
   Compiling matchit v0.7.3
   Compiling openssl v0.10.71
   Compiling opentelemetry_sdk v0.22.1
   Compiling schemars_derive v0.8.22
   Compiling foreign-types v0.3.2
   Compiling inout v0.1.4
   Compiling async-stream v0.3.6
   Compiling hyper-timeout v0.4.1
   Compiling prost v0.12.6
   Compiling darling v0.20.10
   Compiling uint v0.9.5
   Compiling near-primitives-core v0.23.0
   Compiling ed25519-dalek v2.1.1
   Compiling strum v0.24.1
   Compiling idna_adapter v1.2.0
   Compiling fixed-hash v0.7.0
   Compiling form_urlencoded v1.2.1
   Compiling openssl-macros v0.1.1
   Compiling http v1.3.1
   Compiling json_comments v0.2.2
   Compiling protobuf v2.28.0
   Compiling rustix v1.0.3
   Compiling fastrand v2.3.0
   Compiling winnow v0.5.40
   Compiling near-config-utils v0.23.0
   Compiling primitive-types v0.10.1
   Compiling idna v1.0.3
   Compiling toml_edit v0.19.15
   Compiling tonic v0.11.0
   Compiling secp256k1 v0.27.0
   Compiling cipher v0.4.4
   Compiling actix-rt v2.10.0
   Compiling actix-macros v0.2.4
   Compiling actix_derive v0.6.2
   Compiling blake2 v0.10.6
   Compiling hmac v0.12.1
   Compiling proc-macro-error-attr v1.0.4
   Compiling itoa v1.0.15
   Compiling adler2 v2.0.0
   Compiling near-stdx v0.23.0
   Compiling ryu v1.0.20
   Compiling linux-raw-sys v0.9.3
   Compiling arrayvec v0.7.6
   Compiling prometheus v0.13.4
   Compiling zstd-safe v7.2.4
   Compiling clap_builder v4.5.32
   Compiling near-crypto v0.23.0
   Compiling miniz_oxide v0.8.5
   Compiling actix v0.13.5
   Compiling opentelemetry-proto v0.5.0
   Compiling proc-macro-crate v1.3.1
   Compiling url v2.5.4
   Compiling http-body v1.0.1
   Compiling event-listener v5.4.0
   Compiling clap_derive v4.5.32
   Compiling futures v0.3.31
   Compiling sha1 v0.10.6
   Compiling zvariant_utils v1.0.1
   Compiling proc-macro-error v1.0.4
   Compiling crc32fast v1.4.2
   Compiling cpufeatures v0.2.17
   Compiling reed-solomon-erasure v4.0.2
   Compiling event-listener v2.5.3
   Compiling native-tls v0.2.14
   Compiling io-lifetimes v1.0.11
   Compiling opentelemetry-semantic-conventions v0.14.0
   Compiling unsafe-libyaml v0.2.11
   Compiling opentelemetry-otlp v0.15.0
   Compiling serde_yaml v0.9.34+deprecated
   Compiling chrono v0.4.40
   Compiling flate2 v1.1.0
   Compiling clap v4.5.32
   Compiling event-listener-strategy v0.5.3
   Compiling aes v0.8.4
   Compiling h2 v0.4.8
   Compiling serde_with_macros v3.12.0
   Compiling tracing-opentelemetry v0.23.0
   Compiling tracing-appender v0.2.3
   Compiling near-time v0.23.0
   Compiling near-rpc-error-core v0.23.0
   Compiling enumflags2_derive v0.7.11
   Compiling dirs-sys-next v0.1.2
   Compiling futures-lite v2.6.0
   Compiling polling v2.8.0
   Compiling memoffset v0.7.1
   Compiling rustix v0.37.28
   Compiling keccak v0.1.5
   Compiling untrusted v0.9.0
   Compiling fastrand v1.9.0
   Compiling dyn-clone v1.0.19
   Compiling getrandom v0.3.2
   Compiling openssl-probe v0.1.6
   Compiling waker-fn v1.2.0
   Compiling futures-lite v1.13.0
   Compiling sha3 v0.10.8
   Compiling itertools v0.10.5
   Compiling dirs-next v2.0.0
   Compiling enumflags2 v0.7.11
   Compiling near-rpc-error-macro v0.23.0
   Compiling hyper v1.6.0
   Compiling near-o11y v0.23.0
   Compiling serde_with v3.12.0
   Compiling zstd v0.13.3
   Compiling async-channel v2.3.1
   Compiling near-parameters v0.23.0
   Compiling async-lock v2.8.0
   Compiling zvariant_derive v3.15.2
   Compiling near-performance-metrics v0.23.0
   Compiling piper v0.2.4
   Compiling near-fmt v0.23.0
   Compiling bytesize v1.3.2
   Compiling smart-default v0.6.0
   Compiling near-async-derive v0.23.0
   Compiling filetime v0.2.25
   Compiling async-fs v1.6.0
   Compiling async-io v1.13.0
   Compiling proc-macro2 v1.0.94
   Compiling easy-ext v0.2.9
   Compiling linux-raw-sys v0.3.8
   Compiling base64ct v1.7.3
   Compiling unicode-width v0.1.14
   Compiling unicode-ident v1.0.18
   Compiling signal-hook v0.3.17
   Compiling password-hash v0.4.2
   Compiling near-primitives v0.23.0
   Compiling near-async v0.23.0
   Compiling zvariant v3.15.2
   Compiling blocking v1.6.1
   Compiling interactive-clap-derive v0.2.10
   Compiling hyper-util v0.1.10
   Compiling rustls-webpki v0.103.0
   Compiling Inflector v0.11.4
   Compiling http-body-util v0.1.3
   Compiling num-bigint v0.4.6
   Compiling backtrace v0.3.71
   Compiling socket2 v0.4.10
   Compiling sync_wrapper v1.0.2
   Compiling ahash v0.8.11
   Compiling vte_generate_state_changes v0.1.2
   Compiling adler v1.0.2
   Compiling eyre v0.6.12
   Compiling portable-atomic v1.11.0
   Compiling gimli v0.28.1
   Compiling bitcoin-internals v0.2.0
   Compiling zeroize v1.8.1
   Compiling unicode-width v0.2.0
   Compiling addr2line v0.21.0
   Compiling miniz_oxide v0.7.4
   Compiling vte v0.11.1
   Compiling tower v0.5.2
   Compiling num-rational v0.4.2
   Compiling near-chain-configs v0.23.0
   Compiling pbkdf2 v0.11.0
   Compiling nix v0.26.4
   Compiling zstd v0.11.2+zstd.1.5.2
   Compiling interactive-clap v0.2.10
   Compiling zbus_names v2.6.1
   Compiling bzip2 v0.4.4
   Compiling xattr v1.5.0
   Compiling quote v1.0.40
   Compiling webpki-roots v0.26.8
   Compiling async-executor v1.13.1
   Compiling async-broadcast v0.5.1
   Compiling zbus_macros v3.15.2
   Compiling serde_urlencoded v0.7.1
   Compiling rustls-pemfile v2.2.0
   Compiling tracing-error v0.2.1
   Compiling num-iter v0.1.45
   Compiling derivative v2.2.0
   Compiling async-recursion v1.1.1
   Compiling num-complex v0.4.6
   Compiling mio v0.8.11
   Compiling digest v0.9.0
   Compiling xdg-home v1.3.0
   Compiling ordered-stream v0.2.0
   Compiling object v0.32.2
   Compiling rustc-demangle v0.1.24
   Compiling siphasher v1.0.1
   Compiling radium v0.7.0
   Compiling tinyvec_macros v0.1.1
   Compiling owo-colors v3.5.0
   Compiling constant_time_eq v0.1.5
   Compiling ipnet v2.11.0
   Compiling uuid v0.8.2
   Compiling option-ext v0.2.0
   Compiling zerocopy v0.7.35
   Compiling indenter v0.3.3
   Compiling dirs-sys v0.4.1
   Compiling color-spantrace v0.2.1
   Compiling zip v0.6.6
   Compiling ureq v2.12.1
   Compiling tinyvec v1.9.0
   Compiling phf_shared v0.11.3
   Compiling zbus v3.15.2
   Compiling signal-hook-mio v0.2.4
   Compiling num v0.4.3
   Compiling tar v0.4.44
   Compiling near-jsonrpc-primitives v0.23.0
   Compiling vt100 v0.15.2
   Compiling console v0.15.11
   Compiling near-abi v0.4.3
   Compiling uriparse v0.6.4
   Compiling near_schemafy_core v0.7.0
   Compiling hkdf v0.12.4
   Compiling cbc v0.1.2
   Compiling serde_spanned v0.6.8
   Compiling scroll_derive v0.11.1
   Compiling crypto-mac v0.9.1
   Compiling block-buffer v0.9.0
   Compiling is-docker v0.2.0
   Compiling csv-core v0.1.12
   Compiling fs2 v0.4.3
   Compiling minimal-lexical v0.2.1
   Compiling opaque-debug v0.3.1
   Compiling number_prefix v0.4.0
   Compiling camino v1.1.9
   Compiling precomputed-hash v0.1.1
   Compiling tap v1.0.1
   Compiling unicode-segmentation v1.12.0
   Compiling is_executable v0.1.2
   Compiling hex v0.3.2
   Compiling rust_decimal v1.37.1
   Compiling iana-time-zone v0.1.62
   Compiling fallible-iterator v0.2.0
   Compiling same-file v1.0.6
   Compiling new_debug_unreachable v1.0.6
   Compiling pin-project-lite v0.2.16
   Compiling hex-conservative v0.1.2
   Compiling near-sandbox-utils v0.8.0
   Compiling siphasher v0.3.11
   Compiling binary-install v0.2.0
   Compiling bitcoin_hashes v0.13.0
   Compiling string_cache v0.8.8
   Compiling walkdir v2.5.0
   Compiling newline-converter v0.3.0
   Compiling wyz v0.5.1
   Compiling nom v7.1.3
   Compiling indicatif v0.17.11
   Compiling sha2 v0.9.9
   Compiling csv v1.3.1
   Compiling scroll v0.11.0
   Compiling is-wsl v0.4.0
   Compiling hmac v0.9.0
   Compiling secret-service v3.1.0
   Compiling near_schemafy_lib v0.7.0
   Compiling crossterm v0.25.0
   Compiling unicode-normalization v0.1.22
   Compiling color-eyre v0.6.3
   Compiling dirs v5.0.1
   Compiling hashbrown v0.14.5
   Compiling debugid v0.7.3
   Compiling near-token v0.2.1
   Compiling tempfile v3.19.1
   Compiling term v0.7.0
   Compiling brownstone v1.1.0
   Compiling fuzzy-matcher v0.3.7
   Compiling fxhash v0.2.1
   Compiling linux-keyutils v0.2.4
   Compiling is-terminal v0.4.16
   Compiling memmap2 v0.5.10
   Compiling names v0.14.0
   Compiling pathdiff v0.2.3
   Compiling funty v2.0.0
   Compiling plain v0.2.3
   Compiling unicode-linebreak v0.1.5
   Compiling home v0.5.11
   Compiling shell-escape v0.1.5
   Compiling xml-rs v0.8.25
   Compiling encode_unicode v1.0.0
   Compiling indent_write v2.2.0
   Compiling joinery v2.1.0
   Compiling scroll v0.10.2
   Compiling bs58 v0.5.1
   Compiling prettyplease v0.1.25
   Compiling smawk v0.3.2
   Compiling elementtree v0.7.0
   Compiling textwrap v0.16.2
   Compiling pdb v0.7.0
   Compiling prettytable v0.10.0
   Compiling nom-supreme v0.6.0
   Compiling bitvec v1.0.1
   Compiling goblin v0.5.4
   Compiling open v5.3.2
   Compiling symbolic-common v8.8.0
   Compiling keyring v2.3.3
   Compiling inquire v0.7.5
   Compiling wasmparser v0.211.1
   Compiling shellexpand v3.1.0
   Compiling bip39 v2.1.0
   Compiling near-abi-client-impl v0.1.1
   Compiling slipped10 v0.4.6
   Compiling tracing-indicatif v0.3.9
   Compiling toml v0.8.20
   Compiling gimli v0.26.2
   Compiling near-gas v0.2.5
   Compiling zip v0.5.13
   Compiling env_filter v0.1.3
   Compiling linked-hash-map v0.5.6
   Compiling cargo-platform v0.1.9
   Compiling smart-default v0.7.1
   Compiling lazycell v1.3.0
   Compiling easy-ext v1.0.2
   Compiling shell-words v1.1.0
   Compiling near-sandbox-utils v0.9.0
   Compiling dmsort v1.0.2
   Compiling near-sdk-macros v5.11.0
   Compiling jiff v0.2.5
   Compiling wasmparser v0.83.0
   Compiling symbolic-debuginfo v8.8.0
   Compiling env_logger v0.11.7
   Compiling cargo_metadata v0.18.1
   Compiling near-abi-client-macros v0.1.1
   Compiling near-workspaces v0.11.1
   Compiling strum_macros v0.26.4
   Compiling jsonptr v0.4.7
   Compiling colored v2.2.0
   Compiling atty v0.2.14
   Compiling libloading v0.8.6
   Compiling strum v0.26.3
   Compiling dunce v1.0.5
   Compiling near-sandbox-utils v0.14.0
   Compiling convert_case v0.5.0
   Compiling json-patch v2.0.0
   Compiling near-abi-client v0.1.1
   Compiling uuid v1.16.0
   Compiling tokio-retry v0.3.0
   Compiling near-gas v0.3.0
   Compiling near-token v0.3.0
   Compiling near-sys v0.2.2
   Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/spiral/deps/polyglot/lib/rust/fable/fable_modules/fable-library-rust)
   Compiling near-sdk v5.11.0
   Compiling crypto-hash v0.3.4
   Compiling cargo-util v0.1.2
   Compiling tokio-native-tls v0.3.1
   Compiling hyper-tls v0.6.0
   Compiling reqwest v0.12.15
   Compiling near-jsonrpc-client v0.10.1
   Compiling near-socialdb-client v0.3.2
   Compiling near-cli-rs v0.11.1
   Compiling cargo-near v0.6.4
   Compiling spiral_wasm v0.0.1 (/home/runner/work/polyglot/spiral/apps/wasm)
    Finished `release` profile [optimized] target(s) in 4m 26s
In [ ]:
{ pwsh ../lib/math/build.ps1 } | Invoke-Block
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "math.dib", "--retries", "5"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/math/math.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/math/math.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None; stderr = true } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ # math
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> open testing
> open rust.rust_operators
> open rust
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## complex
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> nominal complex t =
>     `(
>         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 
> Fable.Core.Emit(\"num_complex::Complex<$0>\")>]]\n#endif\ntype 
> num_complex_Complex<'T> = class end"
>         $'' : $'num_complex_Complex<`t>'
>     )
> 
> inl complex forall t. ((re : t), (im : t)) : complex t =
>     !\\((re, im), $'"num_complex::Complex::new($0, $1)"')
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -d num-complex
> 
> complex (0f64, 0f64)
> |> sm'.format'
> |> sm'.from_std_string
> |> _assert_eq "0+0i"
> 
> ── [ 11.38s - return value ] ───────────────────────────────────────────────────
> │ { name = __assert_eq; actual = 0+0i; expected = 0+0i }
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## re
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl re forall t. (c : complex t) : t =
>     !\\(c, $'"$0.re"')
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## im
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl im forall t. (c : complex t) : t =
>     !\\(c, $'"$0.im"')
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## complex_unbox
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl complex_unbox forall t. (c : complex t) =
>     re c, im c
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## (~.^)
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl (~.^) c = complex c
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## complex_eq
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl complex_eq forall t. (a : complex t) (b : complex t) : bool =
>     !\\((a, b), $'"$0 == $1"')
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## (.=)
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl (.=) a b = complex_eq a b
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## equable complex
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> instance equable complex t = complex_eq
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## complex_add
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl complex_add forall t. (a : complex t) (b : complex t) : complex t =
>     !\\((a, b), $'"$0 + $1"')
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## (.+)
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl (.+) a b = complex_add a b
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## complex_sub
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl complex_sub forall t. (a : complex t) (b : complex t) : complex t =
>     !\\((a, b), $'"$0 - $1"')
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## (.-)
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl (.-) a b = complex_sub a b
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## complex_mult
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl complex_mult forall t. (a : complex t) (b : complex t) : complex t =
>     !\\((a, b), $'"$0 * $1"')
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## (.*)
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl (.*) a b = complex_mult a b
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## complex_div
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl complex_div forall t. (a : complex t) (b : complex t) : complex t =
>     !\\((a, b), $'"$0 / $1"')
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## (./)
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl (./) a b = complex_div a b
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## powc
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl powc forall t. (s : complex t) (c : complex t) : complex t =
>     !\\((c, s), $'"num_complex::Complex::powc($0, $1)"')
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## (.**)
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl (.**) a b = powc b a
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## complex_sin
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl complex_sin forall t. (c : complex t) : complex t =
>     !\\(c, $'"$0.sin()"')
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## conj
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl conj forall t. (c : complex t) : complex t =
>     !\\(c, $'"$0.conj()"')
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## zeta
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl zeta log (gamma : complex f64 -> complex f64) (s : complex f64) : complex 
> f64 =
>     // inl rec zeta count gamma s =
>     inl rec zeta forall t {number}.
>         (count : t)
>         (gamma : complex f64 -> complex f64)
>         (s : complex f64)
>         : complex f64
>         =
>         if log then
>             !\\((count, s), $'"println\!(\\\"zeta / count: {:?} / s: {:?}\\\", 
> $0, $1)"')
>         if re s > 1 then
>             (.^(0, 0), (am.init 10000i32 id : a i32 _))
>             ||> am.fold fun acc n =>
>                 acc .+ (.^(1, 0) ./ (.^(f64 n, 0) .** s))
>         else
>             inl gamma_term = gamma (.^(1, 0) .- s)
>             inl sin_term = .^(pi, 0) .* s ./ .^(2, 0) |> complex_sin
>             inl one_minus_s = .^(1 - re s, -(im s))
>             inl mirror_term =
>                 if re one_minus_s <= 1
>                 then .^(0, 0)
>                 else
>                     if count <= 3
>                     then zeta (count + 1) gamma one_minus_s
>                     else one_minus_s
>             inl reflection_formula =
>                 .^(2, 0) .* (.^(pi, 0) .** s) .* sin_term .* gamma_term .* 
> mirror_term
>             reflection_formula
>     join zeta 0i32 gamma s
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## bound
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> nominal bound t =
>     `(
>         backend_switch `(()) `({}) {
>             Fsharp = (fun () =>
>                 global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 
> Fable.Core.Emit(\"pyo3::Bound<$0>\")>]]\n#endif\ntype pyo3_Bound<'T> = class 
> end"
>                         ) : () -> ()
>         }
>         $'' : $'pyo3_Bound<`t>'
>     )
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## python
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> nominal python =
>     `(
>         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 
> Fable.Core.Emit(\"pyo3::Python\")>]]\n#endif\ntype pyo3_Python = class end"
>         $'' : $'pyo3_Python'
>     )
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## pymodule
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> nominal pymodule =
>     `(
>         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 
> Fable.Core.Emit(\"pyo3::types::PyModule\")>]]\n#endif\ntype pyo3_types_PyModule 
> = class end"
>         $'' : $'pyo3_types_PyModule'
>     )
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## pyany
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> nominal pyany =
>     `(
>         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 
> Fable.Core.Emit(\"pyo3::PyAny\")>]]\n#endif\ntype pyo3_PyAny = class end"
>         $'' : $'pyo3_PyAny'
>     )
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## pyerr
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> nominal pyerr =
>     `(
>         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 
> Fable.Core.Emit(\"pyo3::PyErr\")>]]\n#endif\ntype pyo3_PyErr = class end"
>         $'' : $'pyo3_PyErr'
>     )
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## eval
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl module_from_code (py : python) (code : string) : _ (bound pymodule) _ =
>     inl py = join py
>     inl code = code |> sm'.to_std_string |> sm'.new_c_string
>     inl empty = "" |> sm'.to_std_string |> sm'.new_c_string
>     !\\(code, $'"pyo3::types::PyModule::from_code(!py, &$0, &!empty, &!empty)"')
>     |> resultm.map_error'' fun (x : pyerr) => x |> sm'.format'
> 
> inl use_pyanymethods () =
>     global "Fable.Core.RustInterop.emitRustExpr () \");\nuse 
> pyo3::prelude::PyAnyMethods;\n//\""
> 
> inl getattr (attr : string) (module : bound pymodule) : _ (bound pyany) _ =
>     inl attr = join attr
>     inl attr = attr |> sm'.as_str
>     inl module = join module
>     use_pyanymethods ()
>     !\\(attr, $'"!module.getattr($0)"')
>     |> resultm.map_error'' fun (x : pyerr) => x |> sm'.format'
> 
> inl call forall t. (args : t) (module : bound pyany) : _ (bound pyany) _ =
>     inl args = join args
>     inl module = join module
>     !\($'"pyo3::prelude::PyAnyMethods::call(&!module, ((*!args).0, *(*!args).1),
> None)"')
>     |> resultm.map_error'' fun (x : pyerr) => x |> sm'.format'
> 
> inl extract forall t. (result : bound pyany) : _ t _ =
>     inl result = join result
>     use_pyanymethods ()
>     !\($'"!result.extract()"')
>     |> resultm.map_error'' fun (x : pyerr) => x |> sm'.format'
> 
> inl eval py code (args : pair bool (pair f64 f64)) : _ (_ f64) sm'.std_string =
>     inl code =
>         code
>         |> module_from_code py
>         |> resultm.unwrap'
>     inl fn =
>         code
>         |> getattr "fn"
>         |> resultm.unwrap'
> 
>     fn
>     |> call args
>     |> resultm.try'
>     |> extract
>     |> resultm.try'
>     |> complex
>     |> Ok
>     |> resultm.box
> 
> inl call1_ log py s code =
>     inl code = join (a code : _ i32 _) |> sm'.concat_array "\n"
> 
>     inl s = new_pair (re s) (im s)
>     inl args = new_pair log s
> 
>     eval py code args
> 
> inl call1_ log name py s line =
>     inl s = join s
>     join
>         ;[[
>             $'$"import sys"'
>             $'$"import traceback"'
>             $'$"import re"'
>             $'$"count = 0"'
>             $'$"memory_address_pattern = re.compile(r\' at 0x[[0-9a-fA-F]]+\')"'
>             $'$"def trace_calls(frame, event, arg):"'
>             $'$"    global count"'
>             $'$"    count += 1"'
>             $'$"    if count < 200:"'
>             $'$"        try:"'
>             $'$"            args = {{ k: v for k, v in frame.f_locals.items() if
> frame.f_code.co_name \!= \'make_mpc\' and k not in [[\'ctx\']] and not 
> callable(v) }}"'
>             $'$"            args_str = \', \'.join([[ 
> f\\\"{{k}}={{re.sub(memory_address_pattern, \' at 0x<?>\', repr(v))}}\\\" for k,
> v in args.items() ]])"'
>             $'$"            print(f\\\"{{event}}({!name}) / f_code.co_name: 
> {{frame.f_code.co_name}} / f_locals: {{args_str}} / f_lineno: {{frame.f_lineno}}
> / f_code.co_filename: 
> {{frame.f_code.co_filename.split(\'site-packages\')[[-1]]}} / f_back.f_lineno: 
> {{ \'\' if frame.f_back is None else frame.f_back.f_lineno }} / 
> f_back.f_code.co_filename: {{ \'\' if frame.f_back is None else 
> frame.f_back.f_code.co_filename.split(\'site-packages\')[[-1]] }} / arg: 
> {{re.sub(memory_address_pattern, \' at 0x<?>\', repr(arg))}}\\\", flush=True)"'
>             $'$"        except ValueError as e:"'
>             $'$"            print(f\'{!name} / e: {{e}}\', flush=True)"'
>             $'$"        return trace_calls"'
>             $'$"import mpmath"'
>             $'$"def fn(log, s):"'
>             $'$"    global count"'
>             $'$"    if log:"'
>             $'$"        print(f\'{!name} / s: {{s}} / count: {{count}}\', 
> flush=True)"'
>             $'$"    s = complex(*s)"'
>             $'$"    try:"'
>             $'$"        if log: sys.settrace(trace_calls)"'
>             line
>             $'$"        if log:"'
>             $'$"            sys.settrace(None)"'
>             $'$"            print(f\'{!name} / result: {{s}} / count: 
> {{count}}\', flush=True)"'
>             $'$"    except ValueError as e:"'
>             $'$"        if s.real == 1:"'
>             $'$"            s = complex(float(\'inf\'), 0)"'
>             $'$"    return (s.real, s.imag)"'
>         ]]
>         |> call1_ log py s
> 
> inl gamma_ log py s =
>     call1_ log "gamma_" py s $'$"        s = mpmath.gamma(s)"'
> 
> inl zeta_ log py s =
>     call1_ log "zeta_" py s $'$"        s = mpmath.zeta(s)"'
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## run_test
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl run_test log (fn : (complex f64 -> complex f64) * (complex f64 -> complex 
> f64) -> ()) =
>     inl fn_ (py : python) : resultm.result' () pyerr =
>         inl nan () =
>             !\($'"f64::NAN"')
>         inl gamma__ = fun (s : complex f64) =>
>             inl result = gamma_ log py s
>             if log then
>                 inl s = join s
>                 !\($'"println\!(\\\"gamma__ / s: {:?} / result: {:?}\\\", !s, 
> !result)"')
>             result |> resultm.ok' |> optionm'.unbox |> optionm'.default_value 
> .^(nan (), nan ())
>         inl zeta__ = fun (s : complex f64) =>
>             inl result = zeta_ log py s
> 
>             inl z = zeta true gamma__ s
> 
>             if log then
>                 inl s = join s
>                 !\($'"println\!(\\\"zeta__ / s: {:?} / result: {:?} / z: 
> {:?}\\\", !s, !result, !z)"')
> 
>     //             re result - re x |> abs
>     //             |> _assert_lt 0.001
> 
>     //             im result - im x |> abs
>     //             |> _assert_lt 0.001
> 
>             result |> resultm.ok' |> optionm'.unbox |> optionm'.default_value 
> .^(nan (), nan ())
>         join fn (zeta__, gamma__)
> 
>         Ok ()
>         |> resultm.box
> 
>     join
>         !\($'"pyo3::prepare_freethreaded_python()"') : ()
> 
>         !\($'"let __run_test = pyo3::Python::with_gil(|py| -> pyo3::PyResult<()>
> { //"')
> 
>         let x' = fn_ (!\($'"py"') : python)
>         inl x' = join x'
> 
>         inl closure_fix = 2u8, 1u8
>         x' |> rust.fix_closure closure_fix
> 
>         (!\($'"__run_test"') : _ () pyerr)
>         |> resultm.unwrap'
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## test_zeta_at_known_values_
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl test_zeta_at_known_values_ log = run_test log fun zeta, gamma =>
>     ;[[
>         .^(2, 0), pi ** 2 / 6
>         .^(-1, 0), -1 / 12
>     ]]
>     |> fun x => a x : _ i32 _
>     |> am.iter fun s, e =>
>         inl result = zeta s
> 
>         result |> im |> _assert_eq 0
>         re result - e |> abs |> _assert_lt 0.0001
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -d num-complex pyo3
> 
> test_zeta_at_known_values_ true
> 
> ── [ 15.94s - return value ] ───────────────────────────────────────────────────
> │ zeta_ / s: (2.0, 0.0) / count: 0
> │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
> derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
> derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
> derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
> derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
> derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), 
> kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: 
> /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: 
> /mpmath/functions/zeta.py / arg: None
> │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), 
> kwargs={}, name='zeta' / f_linen... f_code.co_filename: /mpmath/ctx_mp_python.py
> / f_back.f_lineno: 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / 
> arg: None
> │ line(gamma_) / f_code.co_name: make_mpc / f_locals:  / 
> f_lineno: 604 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 
> 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None
> │ line(gamma_) / f_code.co_name: make_mpc / f_locals:  / 
> f_lineno: 605 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 
> 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None
> │ return(gamma_) / f_code.co_name: make_mpc / f_locals:  / 
> f_lineno: 605 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 
> 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: 
> mpc(real='1.0', imag='0.0')
> │ return(gamma_) / f_code.co_name: f / f_locals: 
> x=mpc(real='2.0', imag='0.0'), kwargs={}, name='gamma', prec=53, rounding='n' / 
> f_lineno: 1007 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno:
> 25 / f_back.f_code.co_filename:  / arg: mpc(real='1.0', imag='0.0')
> │ gamma_ / result: (1.0 + 0.0j) / count: 140
> │ gamma__ / s: Complex { re: 2.0, im: 0.0 } / result: 
> Ok(Complex { re: 1.0, im: 0.0 })
> │ zeta / count: 1 / s: Complex { re: 2.0, im: -0.0 }
> │ zeta__ / s: Complex { re: -1.0, im: 0.0 } / result: 
> Ok(Complex { re: -0.08333333333333333, im: 0.0 }) / z: Complex { re: NaN, im: 
> NaN }
> │ { name = __assert_eq; actual = +0.000000; expected = 
> +0.000000 }
> │ { name = __assert_lt; actual = +0.000000; expected = 
> +0.000100 }
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## test_zeta_at_2_minus2
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl test_zeta_at_2_minus2 log = run_test log fun zeta, gamma =>
>     inl s = .^(2, -2)
>     inl result = zeta s
> 
>     (re result - 0.8673) |> abs |> _assert_lt 0.001
>     (im result - 0.2750) |> abs |> _assert_lt 0.001
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -d num-complex pyo3
> 
> test_zeta_at_2_minus2 true
> 
> ── [ 6.99s - return value ] ────────────────────────────────────────────────────
> │ zeta_ / s: (2.0, -2.0) / count: 0
> │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1,
> derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1,
> derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1,
> derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1,
> derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1,
> derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ call(zeta_) / f_code.co_name: f / f_locals: x=(2-2j), 
> kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: 
> /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: 
> /mpmath/functions/zeta.py / arg: None
> │ line(zeta_) / f_code.co_name: f / f_locals: x=(2-2j), 
> kwargs={}, name='zeta' / f_line... None
> │ call(zeta_) / f_code.co_name: python_bitcount / f_locals: n=2
> / f_lineno: 91 / f_code.co_filename: /mpmath/libmp/libintmath.py / 
> f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg:
> None
> │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: n=2
> / f_lineno: 93 / f_code.co_filename: /mpmath/libmp/libintmath.py / 
> f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg:
> None
> │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: 
> n=2, bc=2 / f_lineno: 94 / f_code.co_filename: /mpmath/libmp/libintmath.py / 
> f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg:
> None
> │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: 
> n=2, bc=2 / f_lineno: 95 / f_code.co_filename: /mpmath/libmp/libintmath.py / 
> f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg:
> None
> │ return(zeta_) / f_code.co_name: python_bitcount / f_locals: 
> n=2, bc=2 / f_lineno: 95 / f_code.co_filename: /mpmath/libmp/libintmath.py / 
> f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg:
> 2
> │ zeta_ / result: (0.867351829635993 + 0.275127238807858j) / 
> count: 1812
> │ zeta / count: 0 / s: Complex { re: 2.0, im: -2.0 }
> │ zeta__ / s: Complex { re: 2.0, im: -2.0 } / result: 
> Ok(Complex { re: 0.8673518296359931, im: 0.27512723880785767 }) / z: Complex { 
> re: NaN, im: NaN }
> │ { name = __assert_lt; actual = +0.000052; expected = 
> +0.001000 }
> │ { name = __assert_lt; actual = +0.000127; expected = 
> +0.001000 }
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## test_trivial_zero_at_negative_even___
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl test_trivial_zero_at_negative_even___ log = run_test log fun zeta, gamma =>
>     (join listm'.init_series -2f64 -40 -2)
>     |> listm.iter fun n =>
>         inl s = .^(n, 0)
>         inl result = zeta s
> 
>         result |> re |> _assert_eq 0
>         result |> im |> _assert_eq 0
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -d num-complex pyo3
> 
> test_trivial_zero_at_negative_even___ true
> 
> ── [ 7.38s - return value ] ────────────────────────────────────────────────────
> │ zeta_ / s: (-2.0, 0.0) / count: 0
> │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), 
> a=1, derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), 
> a=1, derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), 
> a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / 
> f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), 
> a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / 
> f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), 
> a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / 
> f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / arg: None
> │ call(zeta_) / f_code.co_name: f / f_locals: x=(-2+0j), 
> kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: 
> /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: 
> /mpmath/functions/zeta.py / arg: None
> │ line(zeta_) / f_code.co_name: f / f_locals: x=(-2+0j), 
> kwargs={}, name='zeta' /...neno: 1007 / f_back.f_code.co_filename: 
> /mpmath/ctx_mp_python.py / arg: None
> │ line(gamma_) / f_code.co_name: make_mpc / f_locals:  / 
> f_lineno: 604 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 
> 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None
> │ line(gamma_) / f_code.co_name: make_mpc / f_locals:  / 
> f_lineno: 605 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 
> 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None
> │ return(gamma_) / f_code.co_name: make_mpc / f_locals:  / 
> f_lineno: 605 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 
> 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: 
> mpc(real='8.1591528324789768e+47', imag='0.0')
> │ return(gamma_) / f_code.co_name: f / f_locals: 
> x=mpc(real='41.0', imag='0.0'), kwargs={}, name='gamma', prec=53, rounding='n' /
> f_lineno: 1007 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno:
> 25 / f_back.f_code.co_filename:  / arg: mpc(real='8.1591528324789768e+47', 
> imag='0.0')
> │ gamma_ / result: (8.15915283247898e+47 + 0.0j) / count: 149
> │ gamma__ / s: Complex { re: 41.0, im: 0.0 } / result: 
> Ok(Complex { re: 8.159152832478977e47, im: 0.0 })
> │ zeta / count: 1 / s: Complex { re: 41.0, im: -0.0 }
> │ zeta__ / s: Complex { re: -40.0, im: 0.0 } / result: 
> Ok(Complex { re: 0.0, im: 0.0 }) / z: Complex { re: NaN, im: NaN }
> │ { name = __assert_eq; actual = +0.000000; expected = 
> +0.000000 }
> │ { name = __assert_eq; actual = +0.000000; expected = 
> +0.000000 }
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## test_non_trivial_zero___
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl test_non_trivial_zero___ log = run_test log fun zeta, gamma =>
>     ;[[
>         .^(0.5, 14.134725)
>         .^(0.5, 21.022040)
>         .^(0.5, 25.010857)
>         .^(0.5, 30.424876)
>         .^(0.5, 32.935062)
>         .^(0.5, 37.586178)
>     ]]
>     |> fun x => a x : _ i32 _
>     |> am.iter fun x =>
>             inl result = zeta x
>             result |> re |> abs |> _assert_lt 0.0001
>             result |> im |> abs |> _assert_lt 0.0001
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -d num-complex pyo3
> 
> test_non_trivial_zero___ true
> 
> ── [ 7.18s - return value ] ────────────────────────────────────────────────────
> │ zeta_ / s: (0.5, 14.134725) / count: 0
> │ call(zeta_) / f_code.co_name: zeta / f_locals: 
> s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={} / f_lineno: 528 / 
> f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: 
> s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={} / f_lineno: 530 / 
> f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: 
> s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 
> 531 / f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: 
> s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 
> 532 / f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: 
> s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 
> 533 / f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / arg: None
> │ call(zeta_) / f_code.co_name: f / f_locals: 
> x=(0.5+14.134725j), kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename:
> /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: 
> /mpmath/functions/zeta.py / arg: None
> │ line(zeta_) / f_code...None
> │ line(gamma_) / f_code.co_name: complex_stirling_series / 
> f_locals: x=1208925819614629174706176, y=-90877802089662679288381440, prec=81, 
> _m=3416353708500640443578529333, tre=855591523614410863719, 
> tim=64316830603724894628746, ure=-1710577520534459139249, 
> uim=45518868236127668552, sre=1013002518538853602038572, 
> sim=90883161825546323029600502 / f_lineno: 1637 / f_code.co_filename: 
> /mpmath/libmp/gammazeta.py / f_back.f_lineno: 2050 / f_back.f_code.co_filename: 
> /mpmath/libmp/gammazeta.py / arg: None
> │ line(gamma_) / f_code.co_name: complex_stirling_series / 
> f_locals: x=1208925819614629174706176, y=-90877802089662679288381440, prec=81, 
> _m=3416353708500640443578529333, tre=-1816151534455075068, 
> tim=-45486653225747820096, ure=-1710577520534459139249, 
> uim=45518868236127668552, sre=1013002518538853602038572, 
> sim=90883161825546323029600502 / f_lineno: 1638 / f_code.co_filename: 
> /mpmath/libmp/gammazeta.py / f_back.f_lineno: 2050 / f_back.f_code.co_filename: 
> /mpmath/libmp/gammazeta.py / arg: None
> │ gamma_ / result: (-1.32798420042152e-26 + 
> 5.5751975252688e-26j) / count: 309
> │ gamma__ / s: Complex { re: 0.5, im: -37.586178 } / result: 
> Ok(Complex { re: -1.3279842004215153e-26, im: 5.575197525268802e-26 })
> │ zeta__ / s: Complex { re: 0.5, im: 37.586178 } / result: 
> Ok(Complex { re: -8.910186507947958e-8, im: -2.943780446402868e-7 }) / z: 
> Complex { re: -0.0, im: 0.0 }
> │ { name = __assert_lt; actual = +0.000000; expected = 
> +0.000100 }
> │ { name = __assert_lt; actual = +0.000000; expected = 
> +0.000100 }
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## test_real_part_greater_than_one___
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl test_real_part_greater_than_one___ log = run_test log fun zeta, gamma =>
>     inl points = ;[[ 2; 3; 4; 5; 10; 20; 50 ]]
>     (a points : _ i32 _)
>     |> am.iter fun point =>
>         inl s = .^(point, 0)
>         inl result = zeta s
>         result |> re |> _assert_gt 0
>         result |> im |> _assert_eq 0
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -d num-complex pyo3
> 
> test_real_part_greater_than_one___ true
> 
> ── [ 7.10s - return value ] ────────────────────────────────────────────────────
> │ zeta_ / s: (2.0, 0.0) / count: 0
> │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
> derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
> derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
> derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
> derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
> derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), 
> kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: 
> /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: 
> /mpmath/functions/zeta.py / arg: None
> │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), 
> kwargs={}, name='zeta' / f_linen..._mp_python.py / f_back.f_lineno: 1007 / 
> f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None
> │ line(zeta_) / f_code.co_name: make_mpc / f_locals:  / 
> f_lineno: 605 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 
> 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None
> │ return(zeta_) / f_code.co_name: make_mpc / f_locals:  / 
> f_lineno: 605 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 
> 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: 
> mpc(real='1.0000000000000009', imag='0.0')
> │ return(zeta_) / f_code.co_name: f / f_locals: 
> x=mpc(real='50.0', imag='0.0'), kwargs={}, name='zeta', prec=53, rounding='n' / 
> f_lineno: 1007 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno:
> 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py / arg: 
> mpc(real='1.0000000000000009', imag='0.0')
> │ return(zeta_) / f_code.co_name: zeta / f_locals: s=(50+0j), 
> a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / 
> f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / arg: mpc(real='1.0000000000000009', imag='0.0')
> │ zeta_ / result: (1.0 + 0.0j) / count: 181
> │ zeta / count: 0 / s: Complex { re: 50.0, im: 0.0 }
> │ zeta__ / s: Complex { re: 50.0, im: 0.0 } / result: 
> Ok(Complex { re: 1.0000000000000009, im: 0.0 }) / z: Complex { re: NaN, im: NaN 
> }
> │ { name = __assert_gt; actual = +1.000000; expected = 
> +0.000000 }
> │ { name = __assert_eq; actual = +0.000000; expected = 
> +0.000000 }
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## test_zeta_at_1___
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl test_zeta_at_1___ log = run_test log fun zeta, gamma =>
>     inl s = .^(1, 0)
>     inl result = zeta s
>     result |> re |> _assert_eq limit.max
>     result |> im |> _assert_eq 0
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -d num-complex pyo3
> 
> test_zeta_at_1___ true
> 
> ── [ 6.97s - return value ] ────────────────────────────────────────────────────
> │ zeta_ / s: (1.0, 0.0) / count: 0
> │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1,
> derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1,
> derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1,
> derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1,
> derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1,
> derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ call(zeta_) / f_code.co_name: f / f_locals: x=(1+0j), 
> kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: 
> /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: 
> /mpmath/functions/zeta.py / arg: None
> │ line(zeta_) / f_code.co_name: f / f_locals: x=(1+0j), 
> kwargs={}, name='zeta' / f_linen...) / f_code.co_name: f / f_locals: 
> x=mpc(real='0.0', imag='0.0'), kwargs={}, name='gamma', prec=53, rounding='n' / 
> f_lineno: 1007 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno:
> 25 / f_back.f_code.co_filename:  / arg: None
> │ exception(gamma_) / f_code.co_name: fn / f_locals: log=True, 
> s=0j / f_lineno: 25 / f_code.co_filename:  / f_back.f_lineno:  / 
> f_back.f_code.co_filename:  / arg: (<class 'ValueError'>, ValueError('gamma 
> function pole'), <traceback object at 0x<?>>)
> │ line(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j 
> / f_lineno: 29 / f_code.co_filename:  / f_back.f_lineno:  / 
> f_back.f_code.co_filename:  / arg: None
> │ line(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j,
> e=ValueError('gamma function pole') / f_lineno: 30 / f_code.co_filename:  / 
> f_back.f_lineno:  / f_back.f_code.co_filename:  / arg: None
> │ line(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j 
> / f_lineno: 32 / f_code.co_filename:  / f_back.f_lineno:  / 
> f_back.f_code.co_filename:  / arg: None
> │ return(gamma_) / f_code.co_name: fn / f_locals: log=True, 
> s=0j / f_lineno: 32 / f_code.co_filename:  / f_back.f_lineno:  / 
> f_back.f_code.co_filename:  / arg: (0.0, 0.0)
> │ gamma__ / s: Complex { re: 0.0, im: 0.0 } / result: 
> Ok(Complex { re: 0.0, im: 0.0 })
> │ zeta__ / s: Complex { re: 1.0, im: 0.0 } / result: Ok(Complex
> { re: inf, im: 0.0 }) / z: Complex { re: 0.0, im: 0.0 }
> │ { name = __assert_eq; actual = +inf; expected = +inf }
> │ { name = __assert_eq; actual = +0.000000; expected = 
> +0.000000 }
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## test_symmetry_across_real_axis___
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl test_symmetry_across_real_axis___ log = run_test log fun zeta, gamma =>
>     inl s = .^(2, 10)
>     inl result_positive_im = zeta s
>     inl result_negative_im = zeta .^(re s, -(im s))
>     inl conj = result_negative_im |> conj
>     result_positive_im |> re |> _assert_eq (conj |> re)
>     result_positive_im |> im |> _assert_eq (conj |> im)
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -d num-complex pyo3
> 
> test_symmetry_across_real_axis___ true
> 
> ── [ 6.96s - return value ] ────────────────────────────────────────────────────
> │ zeta_ / s: (2.0, 10.0) / count: 0
> │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), 
> a=1, derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), 
> a=1, derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), 
> a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / 
> f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), 
> a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / 
> f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), 
> a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / 
> f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / arg: None
> │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+10j), 
> kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: 
> /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: 
> /mpmath/functions/zeta.py / arg: None
> │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+10j), 
> kwargs={}, name='zeta' /...ack.f_lineno: 778 / f_back.f_code.co_filename: 
> /mpmath/libmp/libmpf.py / arg: None
> │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: 
> n=26, bc=5 / f_lineno: 94 / f_code.co_filename: /mpmath/libmp/libintmath.py / 
> f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg:
> None
> │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: 
> n=26, bc=5 / f_lineno: 95 / f_code.co_filename: /mpmath/libmp/libintmath.py / 
> f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg:
> None
> │ return(zeta_) / f_code.co_name: python_bitcount / f_locals: 
> n=26, bc=5 / f_lineno: 95 / f_code.co_filename: /mpmath/libmp/libintmath.py / 
> f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg:
> 5
> │ line(zeta_) / f_code.co_name: mpf_add / f_locals: s=(0, 1, 2,
> 1), t=(0, 25, 2, 5), prec=14, rnd='d', _sub=0, ssign=0, sman=1, sexp=2, sbc=1, 
> tsign=0, tman=25, texp=2, tbc=5, offset=0, man=26, bc=5 / f_lineno: 779 / 
> f_code.co_filename: /mpmath/libmp/libmpf.py / f_back.f_lineno: 1401 / 
> f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg: None
> │ zeta_ / result: (1.19798250067418 + 0.0791704917205257j) / 
> count: 1174
> │ zeta / count: 0 / s: Complex { re: 2.0, im: -10.0 }
> │ zeta__ / s: Complex { re: 2.0, im: -10.0 } / result: 
> Ok(Complex { re: 1.1979825006741847, im: 0.07917049172052575 }) / z: Complex { 
> re: NaN, im: NaN }
> │ { name = __assert_eq; actual = +1.197983; expected = 
> +1.197983 }
> │ { name = __assert_eq; actual = -0.079170; expected = 
> -0.079170 }
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## test_behavior_near_origin___
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl test_behavior_near_origin___ log = run_test log fun zeta, gamma =>
>     inl s = .^(0.01, 0.01)
>     inl result = zeta s
>     result |> re |> _assert_lt limit.max
>     result |> im |> _assert_lt limit.max
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -d num-complex pyo3
> 
> test_behavior_near_origin___ true
> 
> ── [ 7.05s - return value ] ────────────────────────────────────────────────────
> │ zeta_ / s: (0.01, 0.01) / count: 0
> │ call(zeta_) / f_code.co_name: zeta / f_locals: 
> s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={} / f_lineno: 528 / 
> f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: 
> s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={} / f_lineno: 530 / 
> f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: 
> s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 /
> f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: 
> s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 /
> f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: 
> s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 /
> f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / arg: None
> │ call(zeta_) / f_code.co_name: f / f_locals: x=(0.01+0.01j), 
> kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: 
> /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: 
> /mpmath/functions/zeta.py / arg: None
> │ line(zeta_) / f_code.co_name: f / f_locals: x=(0.../ 
> f_back.f_lineno: 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / 
> arg: None
> │ line(gamma_) / f_code.co_name: mpc_gamma / f_locals: z=((0, 
> 4458563631096791, -52, 52), (1, 5764607523034235, -59, 53)), prec=53, rnd='n', 
> type=0, a=(0, 4458563631096791, -52, 52), b=(1, 5764607523034235, -59, 53), 
> asign=0, aman=4458563631096791, aexp=-52, abc=52, bsign=1, 
> bman=5764607523034235, bexp=-59, bbc=53, wp=73, amag=0, bmag=-6, mag=0, an=0, 
> bn=0, absn=0j, gamma_size=0, need_reflection=0, zorig=((0, 4458563631096791, 
> -52, 52), (1, 5764607523034235, -59, 53)), yfinal=0, balance_prec=0, 
> n_for_stirling=14, need_reduction=True, afix=132131814190692672995328, 
> bfix=-94447329657392906240, r=0, zprered=((0, 4458563631096791, -52, 52), (1, 
> 5764607523034235, -59, 53)), d=14, rre=56942610883563778729574216337150, 
> one=9444732965739290427392, rim=-1820461636508155576115177658065, k=12 / 
> f_lineno: 2043 / f_code.co_filename: /mpmath/libmp/gammazeta.py / 
> f_back.f_lineno: 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / 
> arg: None
> │ gamma_ / result: (1.00577030202902 + 0.0059717824054102j) / 
> count: 383
> │ gamma__ / s: Complex { re: 0.99, im: -0.01 } / result: 
> Ok(Complex { re: 1.005770302029023, im: 0.005971782405410201 })
> │ zeta__ / s: Complex { re: 0.01, im: 0.01 } / result: 
> Ok(Complex { re: -0.5091873433665667, im: -0.00939202213994577 }) / z: Complex {
> re: 0.0, im: 0.0 }
> │ { name = __assert_lt; actual = -0.509187; expected = +inf }
> │ { name = __assert_lt; actual = -0.009392; expected = +inf }
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## test_imaginary_axis
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl test_imaginary_axis log = run_test log fun zeta, gamma =>
>     (join [[ 10; 20; 30; 40; 50; 60; 70; 80; 90; 100 ]])
>     |> listm.iter fun s =>
>         inl s = .^(0, s)
>         inl result = zeta s
>         result |> re |> _assert_ne 0
>         result |> im |> _assert_ne 0
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -d num-complex pyo3
> 
> test_imaginary_axis true
> 
> ── [ 7.26s - return value ] ────────────────────────────────────────────────────
> │ zeta_ / s: (0.0, 10.0) / count: 0
> │ call(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, 
> derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, 
> derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, 
> derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, 
> derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, 
> derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ call(zeta_) / f_code.co_name: f / f_locals: x=10j, kwargs={},
> name='zeta' / f_lineno: 989 / f_code.co_filename: /mpmath/ctx_mp_python.py / 
> f_back.f_lineno: 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py / 
> arg: None
> │ line(zeta_) / f_code.co_name: f / f_locals: x=10j, kwargs={},
> name='zeta' / f_lineno: 990 / f_code.co_f...a_) / f_code.co_name: to_fixed / 
> f_locals: s=(0, 1, 0, 1), prec=83 / f_lineno: 511 / f_code.co_filename: 
> /mpmath/libmp/libmpf.py / f_back.f_lineno: 2031 / f_back.f_code.co_filename: 
> /mpmath/libmp/gammazeta.py / arg: None
> │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1, 
> 0, 1), prec=83, sign=0, man=1, exp=0, bc=1 / f_lineno: 512 / f_code.co_filename:
> /mpmath/libmp/libmpf.py / f_back.f_lineno: 2031 / f_back.f_code.co_filename: 
> /mpmath/libmp/gammazeta.py / arg: None
> │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1, 
> 0, 1), prec=83, sign=0, man=1, exp=0, bc=1, offset=83 / f_lineno: 513 / 
> f_code.co_filename: /mpmath/libmp/libmpf.py / f_back.f_lineno: 2031 / 
> f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py / arg: None
> │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1, 
> 0, 1), prec=83, sign=0, man=1, exp=0, bc=1, offset=83 / f_lineno: 517 / 
> f_code.co_filename: /mpmath/libmp/libmpf.py / f_back.f_lineno: 2031 / 
> f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py / arg: None
> │ gamma_ / result: (-1.51425318049776e-67 + 
> 2.79082155561748e-69j) / count: 289
> │ gamma__ / s: Complex { re: 1.0, im: -100.0 } / result: 
> Ok(Complex { re: -1.514253180497756e-67, im: 2.7908215556174775e-69 })
> │ zeta__ / s: Complex { re: 0.0, im: 100.0 } / result: 
> Ok(Complex { re: 6.51721042625301, im: 0.18128842533791736 }) / z: Complex { re:
> 0.0, im: 0.0 }
> │ { name = __assert_ne; actual = +6.517210; expected = 
> +0.000000 }
> │ { name = __assert_ne; actual = +0.181288; expected = 
> +0.000000 }
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## test_critical_strip
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl test_critical_strip log = run_test log fun zeta, gamma =>
>     (join [[
>         .^(0.5, 14.134725)
>         .^(0.75, 20.5)
>         .^(1.25, 30.1)
>         .^(0.25, 40.0)
>         .^(1.0, 50.0)
>     ]])
>     |> listm.iter fun s =>
>         inl result = zeta s
>         result |> re |> _assert_ne 0
>         result |> im |> _assert_ne 0
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -d num-complex pyo3
> 
> test_critical_strip true
> 
> ── [ 7.10s - return value ] ────────────────────────────────────────────────────
> │ zeta_ / s: (0.5, 14.134725) / count: 0
> │ call(zeta_) / f_code.co_name: zeta / f_locals: 
> s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={} / f_lineno: 528 / 
> f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: 
> s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={} / f_lineno: 530 / 
> f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: 
> s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 
> 531 / f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: 
> s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 
> 532 / f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: 
> s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 
> 533 / f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / 
> f_back.f_code.co_filename:  / arg: None
> │ call(zeta_) / f_code.co_name: f / f_locals: 
> x=(0.5+14.134725j), kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename:
> /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: 
> /mpmath/functions/zeta.py / arg: None
> │ line(zeta_) / f_code...23535862290161314995 / f_lineno: 1648 
> / f_code.co_filename: /mpmath/libmp/gammazeta.py / f_back.f_lineno: 2050 / 
> f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py / arg: None
> │ line(gamma_) / f_code.co_name: complex_stirling_series / 
> f_locals: x=0, y=-241785163922925834941235200, prec=82, 
> _m=12089258196146291747061760000, tre=0, tim=396, ure=-1934281311383406679530, 
> uim=0, sre=4443714077719696485012210, sim=241793223535862290161314995 / 
> f_lineno: 1649 / f_code.co_filename: /mpmath/libmp/gammazeta.py / 
> f_back.f_lineno: 2050 / f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py / 
> arg: None
> │ line(gamma_) / f_code.co_name: complex_stirling_series / 
> f_locals: x=0, y=-241785163922925834941235200, prec=82, 
> _m=12089258196146291747061760000, tre=0, tim=396, ure=-1934281311383406679530, 
> uim=0, sre=4443714077719696485012210, sim=241793223535862290161314997 / 
> f_lineno: 1650 / f_code.co_filename: /mpmath/libmp/gammazeta.py / 
> f_back.f_lineno: 2050 / f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py / 
> arg: None
> │ gamma_ / result: (2.63173210619768e-35 - 
> 8.16464935465334e-36j) / count: 262
> │ gamma__ / s: Complex { re: 0.0, im: -50.0 } / result: 
> Ok(Complex { re: 2.6317321061976804e-35, im: -8.164649354653339e-36 })
> │ zeta__ / s: Complex { re: 1.0, im: 50.0 } / result: 
> Ok(Complex { re: 0.44103873082309397, im: 0.281582455029683 }) / z: Complex { 
> re: 0.0, im: 0.0 }
> │ { name = __assert_ne; actual = +0.441039; expected = 
> +0.000000 }
> │ { name = __assert_ne; actual = +0.281582; expected = 
> +0.000000 }
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## test_reflection_formula_for_specific_value
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl test_reflection_formula_for_specific_value log = run_test log fun zeta, 
> gamma =>
>     (join [[
>         .^(3, 4)
>         .^(2.5, -3.5)
>         .^(1.5, 2.5)
>         .^(0.5, 14.134725)
>     ]])
>     |> listm.iter fun s =>
>         inl lhs = zeta s
>         inl reflection_coefficient =
>             (.^(2, 0) .** s)
>             .* (.^(pi, 0) .** (s .- .^(1, 0)))
>             .* (.^(pi, 0) .* s ./ .^(2, 0) |> complex_sin)
>             .* gamma (.^(1, 0) .- s)
> 
>         inl one_minus_s = .^(1 - re s, -(im s))
>         inl rhs = reflection_coefficient .* zeta one_minus_s
> 
>         re lhs - re rhs |> abs |> _assert_lt 0.0001
>         im lhs - im rhs |> abs |> _assert_lt 0.0001
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -d num-complex pyo3
> 
> test_reflection_formula_for_specific_value true
> 
> ── [ 7.44s - return value ] ────────────────────────────────────────────────────
> │ zeta_ / s: (3.0, 4.0) / count: 0
> │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1,
> derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1,
> derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1,
> derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1,
> derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1,
> derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ call(zeta_) / f_code.co_name: f / f_locals: x=(3+4j), 
> kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: 
> /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: 
> /mpmath/functions/zeta.py / arg: None
> │ line(zeta_) / f_code.co_name: f / f_locals: x=(3+4j), 
> kwargs={}, name='zeta' / f_linen... / f_code.co_filename: 
> /mpmath/libmp/gammazeta.py / f_back.f_lineno: 1007 / f_back.f_code.co_filename: 
> /mpmath/ctx_mp_python.py / arg: None
> │ line(gamma_) / f_code.co_name: mpc_gamma / f_locals: z=((0, 
> 1, -1, 1), (0, 3978571390186527, -48, 52)), prec=53, rnd='n', type=0, a=(0, 1, 
> -1, 1), b=(0, 3978571390186527, -48, 52), asign=0, aman=1, aexp=-1, abc=1, 
> bsign=0, bman=3978571390186527, bexp=-48, bbc=52, wp=79, amag=0, bmag=4, mag=4, 
> an=0, bn=14, absn=14j, gamma_size=56, need_reflection=0, zorig=((0, 1, -1, 1), 
> (0, 3978571390186527, -48, 52)), yfinal=0, balance_prec=0, n_for_stirling=15, 
> need_reduction=True, afix=2115620184325601055735808, 
> bfix=8543917002826194402410496, r=0, zprered=((0, 1, -1, 1), (0, 
> 3978571390186527, -48, 52)), d=5, rre=-542313259704087430481959845, 
> one=604462909807314587353088, rim=-1657865507045117397880679064, k=2 / f_lineno:
> 2043 / f_code.co_filename: /mpmath/libmp/gammazeta.py / f_back.f_lineno: 1007 / 
> f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None
> │ gamma_ / result: (-1.4455538437607e-10 - 
> 5.52278876877407e-10j) / count: 318
> │ gamma__ / s: Complex { re: 0.5, im: 14.134725 } / result: 
> Ok(Complex { re: -1.4455538437606964e-10, im: -5.522788768774066e-10 })
> │ zeta__ / s: Complex { re: 0.5, im: -14.134725 } / result: 
> Ok(Complex { re: 1.7674298413849186e-8, im: 1.1102028930923156e-7 }) / z: 
> Complex { re: 0.0, im: 0.0 }
> │ { name = __assert_lt; actual = +0.000000; expected = 
> +0.000100 }
> │ { name = __assert_lt; actual = +0.000000; expected = 
> +0.000100 }
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## test_euler_product_formula
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl test_euler_product_formula log = run_test log fun zeta, gamma =>
>     inl s_values = join [[ 2; 2.5; 3; 3.5; 4; 4.5; 5 ]]
>     inl primes = join [[ 2; 3; 5; 7; 11; 13; 17; 19; 23; 29; 31; 37; 41; 43; 47;
> 53; 59; 61; 67; 71 ]]
>     s_values
>     |> listm.iter fun s_re =>
>         inl s = .^(s_re, 0)
>         inl product =
>             (1, primes)
>             ||> listm.fold fun acc x =>
>                 acc * 1 / (1 - x ** -s_re)
> 
>         inl result = zeta s
>         re result - product |> abs |> _assert_lt 0.01
>         result |> im |> _assert_lt 0.01
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -d num-complex pyo3
> 
> test_euler_product_formula true
> 
> ── [ 7.21s - return value ] ────────────────────────────────────────────────────
> │ zeta_ / s: (2.0, 0.0) / count: 0
> │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
> derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
> derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
> derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
> derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
> derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: 
> /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:  / 
> arg: None
> │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), 
> kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: 
> /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: 
> /mpmath/functions/zeta.py / arg: None
> │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), 
> kwargs={}, name='zeta' / f_linen..._code.co_filename: /mpmath/libmp/gammazeta.py
> / arg: None
> │ line(zeta_) / f_code.co_name: mpf_zeta_int / f_locals: s=5, 
> prec=53, rnd='n', wp=73, m=19.25, needed_terms=623488, n=33, d=[1, 2179, 792067,
> 115062531, 8930212611, 429314925315, 13983537177347, 327666966438659, 
> 5764846406968067, 78615943485956867, 851604426176701187, 7470527451121689347, 
> 53898915046387983107, 323897845985013506819, 1638178356374090130179, 
> 7034281785235908174595, 25833609859980306522883, 81661917475887913739011, 
> 223448095548034217779971, 532029677981012660429571, 1108048631855905753375491, 
> 2029946562680066824315651, 3292927237466655352791811, 4769455369342763680768771,
> 6235511670496346417767171, 7463408621503347142796035, 8322751284048216428487427,
> 8818779962777819524211459, 9050689474911140452082435, 9136270117622166323831555,
> 9160252037839493347779331, 9165045885455648617505539, 9165654628010081032708867,
> 9165691521498228451812099], t=-84153986440240940095109733900764881301998910956, 
> k=26 / f_lineno: 954 / f_code.co_filename: /mpmath/libmp/gammazeta.py / 
> f_back.f_lineno: 985 / f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py / 
> arg: None
> │ zeta_ / result: (1.03692775514337 + 0.0j) / count: 228
> │ zeta / count: 0 / s: Complex { re: 5.0, im: 0.0 }
> │ zeta__ / s: Complex { re: 5.0, im: 0.0 } / result: Ok(Complex
> { re: 1.03692775514337, im: 0.0 }) / z: Complex { re: NaN, im: NaN }
> │ { name = __assert_lt; actual = +0.000000; expected = 
> +0.010000 }
> │ { name = __assert_lt; actual = +0.000000; expected = 
> +0.010000 }
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## graph
> 
> ── mermaid ─────────────────────────────────────────────────────────────────────
> │ <div class="mermaidMarkdownContainer" 
> style="background-color:white">
> │ <link rel="stylesheet" 
> href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css"
> >
> │ <div 
> id="5bafbdcd0a37d73c9537431f21df3739beb7a90411d9002454eb71c9d9f37e56"></div>
> │ <script type="module">
> │ 
> │             import mermaid from 
> 'https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.esm.min.mjs';
> │             let renderTarget = 
> document.getElementById('5bafbdcd0a37d73c9537431f21df3739beb7a90411d9002454eb71c
> 9d9f37e56');
> │             try {
> │                 const {svg, bindFunctions} = await 
> mermaid.mermaidAPI.render( 
> │                     
> 'mermaid_5bafbdcd0a37d73c9537431f21df3739beb7a90411d9002454eb71c9d9f37e56', 
> │                     `graph TD
> │     zeta("zeta()") --> convert
> │     zeta --> f["f()"]
> │     f --> mpc_f["mpc_zeta()"]
> │     f --> mpf_f["mpf_zeta()"]
> │     convert --> from_float
> │     from_float --> from_man_exp
> │     from_man_exp --> python_bitcount
> │     python_bitcount --> _normalize
> │     _normalize --> make_mpc
> │     make_mpc --> mpc_zeta["mpc_zeta()"]
> │     mpc_zeta --> mpf_zeta["mpf_zeta()"]
> │     mpf_zeta --> to_int
> │     to_int --> mpf_zeta_int["mpf_zeta_int()"]
> │     mpf_zeta_int --> borwein_coefficients
> │     borwein_coefficients --> 
> from_man_exp_2("from_man_exp()")
> │     from_man_exp_2 --> 
> python_bitcount_2("python_bitcount()")
> │     python_bitcount_2 --> _normalize_2("_normalize()")
> │     _normalize_2 --> make_mpc_2("make_mpc()")
> │     make_mpc_2 --> stop_trace
> │     mpf_zeta_int --> mpf_bernoulli
> │     mpf_bernoulli --> bernoulli_size
> │     bernoulli_size --> mpf_rdiv_int
> │     mpf_rdiv_int --> python_bitcount_3("python_bitcount()")
> │     python_bitcount_3 --> _normalize1
> │     _normalize1 --> from_man_exp_3("from_man_exp()")
> │     from_man_exp_3 --> _normalize_3("_normalize()")
> │     _normalize_3 --> mpf_sub
> │     mpf_sub --> mpf_add
> │     mpf_add --> mpf_neg
> │     mpf_neg --> _normalize1_2("_normalize1()")
> │     _normalize1_2 --> from_int
> │     from_int --> mpf_div
> │     mpf_div --> python_bitcount_4("python_bitcount()")
> │     python_bitcount_4 --> _normalize1_3("_normalize1()")
> │     _normalize1_3 --> make_mpc_3("make_mpc()")
> │     make_mpc_3 --> final_stop["stop_trace()"]`);
> │                 renderTarget.innerHTML = svg;
> │                 bindFunctions?.(renderTarget);
> │             }
> │             catch (error) {
> │                 console.log(error);
> │             }
> │ </script>
> │ </div>
> │ 
> 
> ── mermaid ─────────────────────────────────────────────────────────────────────
> │ <div class="mermaidMarkdownContainer" 
> style="background-color:white">
> │ <link rel="stylesheet" 
> href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css"
> >
> │ <div 
> id="aaf0666a42db8a3ac57b6ca8f8968b39ef22fac6162cb4bcaf08a38290a0f7b4"></div>
> │ <script type="module">
> │ 
> │             import mermaid from 
> 'https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.esm.min.mjs';
> │             let renderTarget = 
> document.getElementById('aaf0666a42db8a3ac57b6ca8f8968b39ef22fac6162cb4bcaf08a38
> 290a0f7b4');
> │             try {
> │                 const {svg, bindFunctions} = await 
> mermaid.mermaidAPI.render( 
> │                     
> 'mermaid_aaf0666a42db8a3ac57b6ca8f8968b39ef22fac6162cb4bcaf08a38290a0f7b4', 
> │                     `graph TD
> │     zeta_rust("zeta() - Rust") --> num_traits("num-traits")
> │     zeta_rust --> num_bigint("num-bigint")
> │     zeta_rust --> rust_decimal("rust_decimal for 
> precision")
> │     zeta_rust --> error_handling("Rust Error Handling")
> │ 
> │     num_traits --> num_traits_usage("Use for common 
> traits")
> │     num_bigint --> bigint_operations("Arbitrary-precision 
> arithmetic operations")
> │     rust_decimal --> decimal_operations("High-precision 
> decimal operations")
> │     error_handling --> result_type("Use Result<T, E> for 
> error handling")
> │ 
> │     bigint_operations --> convert_rust("convert() - Rust")
> │     bigint_operations --> normalize_rust("_normalize() - 
> Rust")
> │ 
> │     convert_rust --> from_float_rust("from_float() - Rust")
> │     from_float_rust --> from_man_exp_rust("from_man_exp() -
> Rust")
> │     from_man_exp_rust --> bitcount_rust("bitcount() - 
> Rust")
> │     bitcount_rust --> normalize_rust
> │     normalize_rust --> mpc_zeta_rust("mpc_zeta() - Rust")
> │     mpc_zeta_rust --> mpf_zeta_rust("mpf_zeta() - Rust")
> │     mpf_zeta_rust --> to_int_rust("to_int() - Rust")
> │     to_int_rust --> mpf_zeta_int_rust("mpf_zeta_int() - 
> Rust")
> │ 
> │     mpf_zeta_int_rust --> 
> borwein_coefficients_rust("borwein_coefficients() - Rust")
> │     borwein_coefficients_rust --> 
> from_man_exp_rust_2("from_man_exp() - Rust")
> │     from_man_exp_rust_2 --> bitcount_rust_2("bitcount() - 
> Rust")
> │     bitcount_rust_2 --> normalize_rust_2("_normalize() - 
> Rust")
> │     normalize_rust_2 --> make_mpc_rust("make_mpc() - Rust")
> │ 
> │     mpf_zeta_int_rust --> 
> mpf_bernoulli_rust("mpf_bernoulli() - Rust")
> │     mpf_bernoulli_rust --> 
> bernoulli_size_rust("bernoulli_size() - Rust")
> │     bernoulli_size_rust --> 
> mpf_rdiv_int_rust("mpf_rdiv_int() - Rust")
> │     mpf_rdiv_int_rust --> bitcount_rust_3("bitcount() - 
> Rust")
> │     bitcount_rust_3 --> normalize1_rust("_normalize1() - 
> Rust")
> │     normalize1_rust --> from_man_exp_rust_3("from_man_exp()
> - Rust")
> │     from_man_exp_rust_3 --> normalize_rust_3("_normalize() 
> - Rust")
> │     normalize_rust_3 --> mpf_sub_rust("mpf_sub() - Rust")
> │     mpf_sub_rust --> mpf_add_rust("mpf_add() - Rust")
> │     mpf_add_rust --> mpf_neg_rust("mpf_neg() - Rust")
> │     mpf_neg_rust --> normalize1_rust_2("_normalize1() - 
> Rust")
> │     normalize1_rust_2 --> from_int_rust("from_int() - 
> Rust")
> │     from_int_rust --> mpf_div_rust("mpf_div() - Rust")
> │     mpf_div_rust --> bitcount_rust_4("bitcount() - Rust")
> │     bitcount_rust_4 --> normalize1_rust_3("_normalize1() - 
> Rust")
> │ 
> │     style zeta_rust fill:#f9f,stroke:#333,stroke-width:4px
> │     style num_traits fill:#bbf,stroke:#333,stroke-width:2px
> │     style num_bigint fill:#bbf,stroke:#333,stroke-width:2px
> │     style rust_decimal 
> fill:#bbf,stroke:#333,stroke-width:2px
> │     style error_handling 
> fill:#bbf,stroke:#333,stroke-width:2px
> │     style bigint_operations 
> fill:#bfb,stroke:#333,stroke-width:2px
> │     style decimal_operations 
> fill:#bfb,stroke:#333,stroke-width:2px
> │     style result_type 
> fill:#bfb,stroke:#333,stroke-width:2px`);
> │                 renderTarget.innerHTML = svg;
> │                 bindFunctions?.(renderTarget);
> │             }
> │             catch (error) {
> │                 console.log(error);
> │             }
> │ </script>
> │ </div>
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## tests
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl tests () =
>     testing.run_tests_log {
>         test_zeta_at_known_values_
>         test_zeta_at_2_minus2
>         test_trivial_zero_at_negative_even___
>         test_non_trivial_zero___
>         test_real_part_greater_than_one___
>         test_zeta_at_1___
>         test_symmetry_across_real_axis___
>         test_behavior_near_origin___
>         test_imaginary_axis
>         test_critical_strip
>         test_reflection_formula_for_specific_value
>         test_euler_product_formula
>     }
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> ///! _
> 
> inl main (_args : array_base string) =
>     inl value = 1i32
>     console.write_line ($'$"value: {!value}"' : string)
>     0i32
> 
> inl main () =
>     $'let tests () = !tests ()' : ()
>     $'let main args = !main args' : ()
00:02:00 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 79006 }
00:02:00 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:02:01 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb to html
00:02:01 v #6 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:02:01 v #7 !   validate(nb)
00:02:01 v #8 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:02:01 v #9 !   return _pygments_highlight(
00:02:02 v #10 ! [NbConvertApp] Writing 7174417 bytes to /home/runner/work/polyglot/polyglot/lib/math/math.dib.html
00:02:02 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 891 }
00:02:02 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 891 }
00:02:02 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/math/math.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/math/math.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:02:03 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:02:03 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:02:03 d #16 spiral.run / dib / { exit_code = 0; result_length = 79956 }
00:00:00 d #1 writeDibCode / output: Spi / path: math.dib
00:00:00 d #2 parseDibCode / output: Spi / file: math.dib
00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: math / hash:  / code.Length: 220445
00:00:00 d #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "/home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/lib/math/dist" --runtime linux-x64"; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/lib/math/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/math"; stderr = true } }
00:00:00 v #2 >   Determining projects to restore...
00:00:01 v #3 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:01 v #4 >   The last full restore is still up to date. Nothing left to do.
00:00:01 v #5 >   Total time taken: 0 milliseconds
00:00:01 v #6 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:01 v #7 >   Restoring /home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj
00:00:01 v #8 >   Starting restore process.
00:00:01 v #9 >   Total time taken: 0 milliseconds
00:00:02 v #10 >   Restored /home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj (in 276 ms).
00:00:13 v #11 >   math -> /home/runner/work/polyglot/polyglot/target/Builder/math/bin/Release/net9.0/linux-x64/math.dll
00:00:13 v #12 >   math -> /home/runner/work/polyglot/polyglot/lib/math/dist
00:00:13 d #13 runtime.execute_with_options_async / { exit_code = 0; output_length = 662; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/lib/math/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/math"; stderr = true } }
spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: /home/runner/work/polyglot/polyglot/target/Builder/math
polyglot/scripts/core.ps1/ResolveLink #4 / Path: /home/runner/work/polyglot/polyglot/deps/spiral/lib/spiral/../../deps/polyglot / parent_target:  / path_target: /home/runner/work/polyglot/polyglot / parent: /home/runner/work/polyglot/polyglot/deps/spiral/lib/spiral/../../deps / End: polyglot
spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: /home/runner/work/polyglot/polyglot/target/Builder/math / ProjectName: math / Language: rs / Runtime:  / root: /home/runner/work/polyglot/polyglot
Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha)

Thanks to the contributor! @cboudereau
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target/Builder/math/math.fsproj...
Project and references (14 source files) parsed in 2999ms

Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)

Started Fable compilation...

Fable compilation finished in 9547ms

./deps/spiral/lib/spiral/common.fsx(2206,0): (2206,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/sm.fsx(561,0): (561,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/async_.fsx(250,0): (250,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/crypto.fsx(2436,0): (2436,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/date_time.fsx(2553,0): (2553,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/platform.fsx(122,0): (122,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/networking.fsx(5525,0): (5525,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/trace.fsx(2244,0): (2244,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/runtime.fsx(9174,0): (9174,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/file_system.fsx(20847,0): (20847,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./target/Builder/math/math.fs(35,0): (37,3) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
polyglot/lib/math/build.ps1 / path: /home/runner/work/polyglot/polyglot/target/Builder/math/target/rs/math.rs
warning: /home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
warning: /home/runner/work/polyglot/polyglot/apps/chat/contract/tests/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
warning: /home/runner/work/polyglot/polyglot/lib/math/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
warning: /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
warning: /home/runner/work/polyglot/polyglot/apps/chat/contract/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
warning: /home/runner/work/polyglot/polyglot/examples/rust/exercism/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
warning: /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
warning: /home/runner/work/polyglot/polyglot/apps/plot/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
    Updating crates.io index
 Downloading crates ...
  Downloaded cpufeatures v0.2.16
  Downloaded const-oid v0.10.0-rc.3
  Downloaded rawpointer v0.2.1
  Downloaded unindent v0.2.3
  Downloaded float-cmp v0.10.0
  Downloaded pyo3-macros v0.23.3
  Downloaded indoc v2.0.5
  Downloaded approx v0.5.1
  Downloaded target-lexicon v0.12.16
  Downloaded unicode-ident v1.0.14
  Downloaded pyo3-ffi v0.23.3
  Downloaded rand_distr v0.4.3
  Downloaded wide v0.7.30
  Downloaded statrs v0.18.0
  Downloaded libm v0.2.11
  Downloaded safe_arch v0.7.2
  Downloaded pyo3-macros-backend v0.23.3
  Downloaded matrixmultiply v0.3.9
  Downloaded simba v0.9.0
  Downloaded pyo3-build-config v0.23.3
  Downloaded proc-macro2 v1.0.92
  Downloaded sha2 v0.11.0-pre.4
  Downloaded syn v2.0.90
  Downloaded pin-project-lite v0.2.15
  Downloaded hybrid-array v0.2.3
  Downloaded bytemuck v1.20.0
  Downloaded digest v0.11.0-pre.9
  Downloaded crypto-common v0.2.0-rc.1
  Downloaded nalgebra v0.33.2
  Downloaded block-buffer v0.11.0-rc.3
  Downloaded libc v0.2.168
  Downloaded pyo3 v0.23.3
   Compiling autocfg v1.4.0
   Compiling libc v0.2.168
   Compiling target-lexicon v0.12.16
   Compiling proc-macro2 v1.0.92
   Compiling unicode-ident v1.0.14
   Compiling libm v0.2.11
   Compiling num-traits v0.2.19
   Compiling pyo3-build-config v0.23.3
   Compiling quote v1.0.37
   Compiling syn v2.0.90
   Compiling cfg-if v1.0.0
   Compiling once_cell v1.20.2
   Compiling typenum v1.17.0
   Compiling getrandom v0.2.15
   Compiling byteorder v1.5.0
   Compiling memchr v2.7.4
   Compiling slab v0.4.9
   Compiling rand_core v0.6.4
   Compiling bytemuck v1.20.0
   Compiling futures-core v0.3.31
   Compiling paste v1.0.15
   Compiling futures-sink v0.3.31
   Compiling futures-channel v0.3.31
   Compiling safe_arch v0.7.2
   Compiling hybrid-array v0.2.3
   Compiling pyo3-macros-backend v0.23.3
   Compiling pyo3-ffi v0.23.3
   Compiling matrixmultiply v0.3.9
   Compiling pin-utils v0.1.0
   Compiling futures-io v0.3.31
   Compiling pin-project-lite v0.2.15
   Compiling futures-task v0.3.31
   Compiling wide v0.7.30
   Compiling futures-util v0.3.31
   Compiling num-complex v0.4.6
   Compiling num-integer v0.1.46
   Compiling approx v0.5.1
   Compiling num_cpus v1.16.0
   Compiling memoffset v0.9.1
   Compiling heck v0.5.0
   Compiling rawpointer v0.2.1
   Compiling zerocopy-derive v0.7.35
   Compiling futures-executor v0.3.31
   Compiling simba v0.9.0
   Compiling zerocopy v0.7.35
   Compiling num-rational v0.4.2
   Compiling ppv-lite86 v0.2.20
   Compiling crypto-common v0.2.0-rc.1
   Compiling rand_chacha v0.3.1
   Compiling rand v0.8.5
   Compiling rand_distr v0.4.3
   Compiling block-buffer v0.11.0-rc.3
   Compiling aho-corasick v1.1.3
   Compiling pyo3 v0.23.3
   Compiling iana-time-zone v0.1.61
   Compiling regex-syntax v0.8.5
   Compiling const-oid v0.10.0-rc.3
   Compiling digest v0.11.0-pre.9
   Compiling pyo3-macros v0.23.3
   Compiling chrono v0.4.39
   Compiling nalgebra v0.33.2
   Compiling regex-automata v0.4.9
   Compiling futures v0.3.31
   Compiling uuid v1.11.0
   Compiling indoc v2.0.5
   Compiling cpufeatures v0.2.16
   Compiling futures-timer v3.0.3
   Compiling startup v0.1.1 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust/vendored/startup)
   Compiling unindent v0.2.3
   Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust)
   Compiling regex v1.11.1
   Compiling sha2 v0.11.0-pre.4
   Compiling float-cmp v0.10.0
   Compiling inline_colorization v0.1.6
   Compiling statrs v0.18.0
   Compiling math v0.0.1 (/home/runner/work/polyglot/polyglot/lib/math)
    Finished `release` profile [optimized] target(s) in 26.80s
     Running unittests math.rs (/home/runner/work/polyglot/polyglot/workspace/target/release/deps/math-c64878e01a1ae353)

running 12 tests
test module_b7a9935b::Math::test_behavior_near_origin___ ... ok
test module_b7a9935b::Math::test_critical_strip ... ok
test module_b7a9935b::Math::test_non_trivial_zero___ ... ok
test module_b7a9935b::Math::test_euler_product_formula ... ok
test module_b7a9935b::Math::test_real_part_greater_than_one___ ... ok
test module_b7a9935b::Math::test_symmetry_across_real_axis___ ... ok
test module_b7a9935b::Math::test_zeta_at_1___ ... ok
test module_b7a9935b::Math::test_reflection_formula_for_specific_value ... ok
test module_b7a9935b::Math::test_zeta_at_2_minus2 ... ok
test module_b7a9935b::Math::test_zeta_at_known_values_ ... ok
test module_b7a9935b::Math::test_imaginary_axis ... ok
test module_b7a9935b::Math::test_trivial_zero_at_negative_even___ ... ok

test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.19s

polyglot/lib/math/build.ps1 / $targetDir: /home/runner/work/polyglot/polyglot/target/Builder/math / $projectName: math / $env:CI:'true'
In [ ]:
{ pwsh ../apps/plot/build.ps1 } | Invoke-Block
warning: /home/runner/work/polyglot/polyglot/apps/chat/contract/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
warning: /home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
warning: /home/runner/work/polyglot/polyglot/examples/rust/exercism/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
warning: /home/runner/work/polyglot/polyglot/apps/plot/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
warning: /home/runner/work/polyglot/polyglot/lib/math/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
warning: /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
warning: /home/runner/work/polyglot/polyglot/apps/chat/contract/tests/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
warning: /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
 Downloading crates ...
  Downloaded plotters-svg v0.3.7
  Downloaded itoa v1.0.14
  Downloaded plotters-backend v0.3.7
  Downloaded serde v1.0.216
  Downloaded plotters v0.3.7
  Downloaded serde_json v1.0.133
   Compiling memchr v2.7.4
   Compiling libc v0.2.168
   Compiling typenum v1.17.0
   Compiling num-traits v0.2.19
   Compiling futures-sink v0.3.31
   Compiling futures-core v0.3.31
   Compiling futures-channel v0.3.31
   Compiling slab v0.4.9
   Compiling pin-utils v0.1.0
   Compiling pin-project-lite v0.2.15
   Compiling futures-io v0.3.31
   Compiling futures-task v0.3.31
   Compiling cfg-if v1.0.0
   Compiling futures-util v0.3.31
   Compiling hybrid-array v0.2.3
   Compiling num_cpus v1.16.0
   Compiling serde v1.0.216
   Compiling crypto-common v0.2.0-rc.1
   Compiling block-buffer v0.11.0-rc.3
   Compiling getrandom v0.2.15
   Compiling aho-corasick v1.1.3
   Compiling iana-time-zone v0.1.61
   Compiling serde_json v1.0.133
   Compiling regex-syntax v0.8.5
   Compiling const-oid v0.10.0-rc.3
   Compiling plotters-backend v0.3.7
   Compiling futures-executor v0.3.31
   Compiling plotters-svg v0.3.7
   Compiling futures v0.3.31
   Compiling digest v0.11.0-pre.9
   Compiling regex-automata v0.4.9
   Compiling chrono v0.4.39
   Compiling uuid v1.11.0
   Compiling ryu v1.0.18
   Compiling futures-timer v3.0.3
   Compiling startup v0.1.1 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust/vendored/startup)
   Compiling itoa v1.0.14
   Compiling cpufeatures v0.2.16
   Compiling sha2 v0.11.0-pre.4
   Compiling regex v1.11.1
   Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust)
   Compiling plotters v0.3.7
   Compiling inline_colorization v0.1.6
   Compiling plot v0.0.1 (/home/runner/work/polyglot/polyglot/apps/plot)
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:647:33
    |
647 |         let v4: string = append((v0.l0.get().clone()), (v1));
    |                                 ^                   ^
    |
    = note: `#[warn(unused_parens)]` on by default
help: remove these parentheses
    |
647 -         let v4: string = append((v0.l0.get().clone()), (v1));
647 +         let v4: string = append(v0.l0.get().clone(), (v1));
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:647:56
    |
647 |         let v4: string = append((v0.l0.get().clone()), (v1));
    |                                                        ^  ^
    |
help: remove these parentheses
    |
647 -         let v4: string = append((v0.l0.get().clone()), (v1));
647 +         let v4: string = append((v0.l0.get().clone()), v1);
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:734:13
    |
734 |             (append(
    |             ^
...
746 |             )),
    |              ^
    |
help: remove these parentheses
    |
734 ~             append(
735 |                 (append(
...
745 |                 string(" / "),
746 ~             ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:747:13
    |
747 |             (v10),
    |             ^   ^
    |
help: remove these parentheses
    |
747 -             (v10),
747 +             v10,
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:735:17
    |
735 |                 (append(
    |                 ^
...
744 |                 )),
    |                  ^
    |
help: remove these parentheses
    |
735 ~                 append(
736 |                     (append(
...
743 |                     string("networking.test_port_open"),
744 ~                 ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:736:21
    |
736 |                     (append(
    |                     ^
...
742 |                     )),
    |                      ^
    |
help: remove these parentheses
    |
736 ~                     append(
737 |                         (append(
...
741 |                         string(" "),
742 ~                     ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:737:25
    |
737 |                         (append(
    |                         ^
...
740 |                         )),
    |                          ^
    |
help: remove these parentheses
    |
737 ~                         append(
738 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
739 |                             (toString(v0.l0.get().clone())),
740 ~                         ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:738:29
    |
738 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                       ^                                                                 ^
    |
help: remove these parentheses
    |
738 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
738 +                             append((append((append((v6), string(" "))), (v7))), string(" #")),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:739:29
    |
739 | ...                   (toString(v0.l0.get().clone())),
    |                       ^                             ^
    |
help: remove these parentheses
    |
739 -                             (toString(v0.l0.get().clone())),
739 +                             toString(v0.l0.get().clone()),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:738:37
    |
738 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                               ^                                         ^
    |
help: remove these parentheses
    |
738 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
738 +                             (append(append((append((v6), string(" "))), (v7)), string(" #"))),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:738:45
    |
738 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                       ^                         ^
    |
help: remove these parentheses
    |
738 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
738 +                             (append((append(append((v6), string(" ")), (v7))), string(" #"))),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:738:74
    |
738 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                                                    ^  ^
    |
help: remove these parentheses
    |
738 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
738 +                             (append((append((append((v6), string(" "))), v7)), string(" #"))),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:738:53
    |
738 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                               ^  ^
    |
help: remove these parentheses
    |
738 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
738 +                             (append((append((append(v6, string(" "))), (v7))), string(" #"))),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:935:13
    |
935 |             (append(
    |             ^
...
947 |             )),
    |              ^
    |
help: remove these parentheses
    |
935 ~             append(
936 |                 (append(
...
946 |                 string(" / "),
947 ~             ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:948:13
    |
948 |             (v9),
    |             ^  ^
    |
help: remove these parentheses
    |
948 -             (v9),
948 +             v9,
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:936:17
    |
936 |                 (append(
    |                 ^
...
945 |                 )),
    |                  ^
    |
help: remove these parentheses
    |
936 ~                 append(
937 |                     (append(
...
944 |                     string("async.run_with_timeout_async"),
945 ~                 ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:937:21
    |
937 |                     (append(
    |                     ^
...
943 |                     )),
    |                      ^
    |
help: remove these parentheses
    |
937 ~                     append(
938 |                         (append(
...
942 |                         string(" "),
943 ~                     ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:938:25
    |
938 |                         (append(
    |                         ^
...
941 |                         )),
    |                          ^
    |
help: remove these parentheses
    |
938 ~                         append(
939 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
940 |                             (toString(v0.l0.get().clone())),
941 ~                         ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:939:29
    |
939 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                       ^                                                                 ^
    |
help: remove these parentheses
    |
939 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
939 +                             append((append((append((v6), string(" "))), (v7))), string(" #")),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:940:29
    |
940 | ...                   (toString(v0.l0.get().clone())),
    |                       ^                             ^
    |
help: remove these parentheses
    |
940 -                             (toString(v0.l0.get().clone())),
940 +                             toString(v0.l0.get().clone()),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:939:37
    |
939 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                               ^                                         ^
    |
help: remove these parentheses
    |
939 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
939 +                             (append(append((append((v6), string(" "))), (v7)), string(" #"))),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:939:45
    |
939 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                       ^                         ^
    |
help: remove these parentheses
    |
939 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
939 +                             (append((append(append((v6), string(" ")), (v7))), string(" #"))),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:939:74
    |
939 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                                                    ^  ^
    |
help: remove these parentheses
    |
939 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
939 +                             (append((append((append((v6), string(" "))), v7)), string(" #"))),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:939:53
    |
939 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                               ^  ^
    |
help: remove these parentheses
    |
939 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
939 +                             (append((append((append(v6, string(" "))), (v7))), string(" #"))),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1110:13
     |
1110 |             (append(
     |             ^
...
1122 |             )),
     |              ^
     |
help: remove these parentheses
     |
1110 ~             append(
1111 |                 (append(
 ...
1121 |                 string(" / "),
1122 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1123:13
     |
1123 |             (v10),
     |             ^   ^
     |
help: remove these parentheses
     |
1123 -             (v10),
1123 +             v10,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1111:17
     |
1111 |                 (append(
     |                 ^
...
1120 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
1111 ~                 append(
1112 |                     (append(
 ...
1119 |                     string("async.run_with_timeout_async**"),
1120 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1112:21
     |
1112 |                     (append(
     |                     ^
...
1118 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
1112 ~                     append(
1113 |                         (append(
 ...
1117 |                         string(" "),
1118 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1113:25
     |
1113 |                         (append(
     |                         ^
...
1116 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
1113 ~                         append(
1114 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1115 |                             (toString(v0.l0.get().clone())),
1116 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1114:29
     |
1114 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
1114 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1114 +                             append((append((append((v6), string(" "))), (v7))), string(" #")),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1115:29
     |
1115 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
1115 -                             (toString(v0.l0.get().clone())),
1115 +                             toString(v0.l0.get().clone()),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1114:37
     |
1114 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
1114 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1114 +                             (append(append((append((v6), string(" "))), (v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1114:45
     |
1114 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
1114 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1114 +                             (append((append(append((v6), string(" ")), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1114:74
     |
1114 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
1114 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1114 +                             (append((append((append((v6), string(" "))), v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1114:53
     |
1114 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
1114 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1114 +                             (append((append((append(v6, string(" "))), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1358:13
     |
1358 |             (append(
     |             ^
...
1370 |             )),
     |              ^
     |
help: remove these parentheses
     |
1358 ~             append(
1359 |                 (append(
 ...
1369 |                 string(" / "),
1370 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1371:13
     |
1371 |             (v12),
     |             ^   ^
     |
help: remove these parentheses
     |
1371 -             (v12),
1371 +             v12,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1359:17
     |
1359 |                 (append(
     |                 ^
...
1368 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
1359 ~                 append(
1360 |                     (append(
 ...
1367 |                     string("networking.wait_for_port_access"),
1368 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1360:21
     |
1360 |                     (append(
     |                     ^
...
1366 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
1360 ~                     append(
1361 |                         (append(
 ...
1365 |                         string(" "),
1366 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1361:25
     |
1361 |                         (append(
     |                         ^
...
1364 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
1361 ~                         append(
1362 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1363 |                             (toString(v0.l0.get().clone())),
1364 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1362:29
     |
1362 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
1362 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1362 +                             append((append((append((v6), string(" "))), (v7))), string(" #")),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1363:29
     |
1363 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
1363 -                             (toString(v0.l0.get().clone())),
1363 +                             toString(v0.l0.get().clone()),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1362:37
     |
1362 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
1362 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1362 +                             (append(append((append((v6), string(" "))), (v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1362:45
     |
1362 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
1362 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1362 +                             (append((append(append((v6), string(" ")), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1362:74
     |
1362 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
1362 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1362 +                             (append((append((append((v6), string(" "))), v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1362:53
     |
1362 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
1362 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1362 +                             (append((append((append(v6, string(" "))), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:817:33
    |
817 |         let v4: string = append((v0.l0.get().clone()), (v1));
    |                                 ^                   ^
    |
help: remove these parentheses
    |
817 -         let v4: string = append((v0.l0.get().clone()), (v1));
817 +         let v4: string = append(v0.l0.get().clone(), (v1));
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:817:56
    |
817 |         let v4: string = append((v0.l0.get().clone()), (v1));
    |                                                        ^  ^
    |
help: remove these parentheses
    |
817 -         let v4: string = append((v0.l0.get().clone()), (v1));
817 +         let v4: string = append((v0.l0.get().clone()), v1);
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:866:13
    |
866 |             (append(
    |             ^
...
878 |             )),
    |              ^
    |
help: remove these parentheses
    |
866 ~             append(
867 |                 (append(
...
877 |                 string(" / "),
878 ~             ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:879:13
    |
879 |             (v8),
    |             ^  ^
    |
help: remove these parentheses
    |
879 -             (v8),
879 +             v8,
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:867:17
    |
867 |                 (append(
    |                 ^
...
876 |                 )),
    |                  ^
    |
help: remove these parentheses
    |
867 ~                 append(
868 |                     (append(
...
875 |                     string("runtime.current_process_kill / exiting... 3"),
876 ~                 ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:868:21
    |
868 |                     (append(
    |                     ^
...
874 |                     )),
    |                      ^
    |
help: remove these parentheses
    |
868 ~                     append(
869 |                         (append(
...
873 |                         string(" "),
874 ~                     ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:869:25
    |
869 |                         (append(
    |                         ^
...
872 |                         )),
    |                          ^
    |
help: remove these parentheses
    |
869 ~                         append(
870 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
871 |                             (toString(v0.l0.get().clone())),
872 ~                         ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:870:29
    |
870 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                       ^                                                                 ^
    |
help: remove these parentheses
    |
870 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
870 +                             append((append((append((v6), string(" "))), (v7))), string(" #")),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:871:29
    |
871 | ...                   (toString(v0.l0.get().clone())),
    |                       ^                             ^
    |
help: remove these parentheses
    |
871 -                             (toString(v0.l0.get().clone())),
871 +                             toString(v0.l0.get().clone()),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:870:37
    |
870 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                               ^                                         ^
    |
help: remove these parentheses
    |
870 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
870 +                             (append(append((append((v6), string(" "))), (v7)), string(" #"))),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:870:45
    |
870 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                       ^                         ^
    |
help: remove these parentheses
    |
870 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
870 +                             (append((append(append((v6), string(" ")), (v7))), string(" #"))),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:870:74
    |
870 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                                                    ^  ^
    |
help: remove these parentheses
    |
870 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
870 +                             (append((append((append((v6), string(" "))), v7)), string(" #"))),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:870:53
    |
870 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                               ^  ^
    |
help: remove these parentheses
    |
870 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
870 +                             (append((append((append(v6, string(" "))), (v7))), string(" #"))),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1003:13
     |
1003 |             (append(
     |             ^
...
1015 |             )),
     |              ^
     |
help: remove these parentheses
     |
1003 ~             append(
1004 |                 (append(
 ...
1014 |                 string(" / "),
1015 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1016:13
     |
1016 |             (v8),
     |             ^  ^
     |
help: remove these parentheses
     |
1016 -             (v8),
1016 +             v8,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1004:17
     |
1004 |                 (append(
     |                 ^
...
1013 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
1004 ~                 append(
1005 |                     (append(
 ...
1012 |                     string("runtime.current_process_kill / exiting... 2"),
1013 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1005:21
     |
1005 |                     (append(
     |                     ^
...
1011 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
1005 ~                     append(
1006 |                         (append(
 ...
1010 |                         string(" "),
1011 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1006:25
     |
1006 |                         (append(
     |                         ^
...
1009 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
1006 ~                         append(
1007 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1008 |                             (toString(v0.l0.get().clone())),
1009 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1007:29
     |
1007 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
1007 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1007 +                             append((append((append((v6), string(" "))), (v7))), string(" #")),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1008:29
     |
1008 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
1008 -                             (toString(v0.l0.get().clone())),
1008 +                             toString(v0.l0.get().clone()),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1007:37
     |
1007 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
1007 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1007 +                             (append(append((append((v6), string(" "))), (v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1007:45
     |
1007 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
1007 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1007 +                             (append((append(append((v6), string(" ")), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1007:74
     |
1007 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
1007 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1007 +                             (append((append((append((v6), string(" "))), v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1007:53
     |
1007 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
1007 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1007 +                             (append((append((append(v6, string(" "))), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1125:13
     |
1125 |             (append(
     |             ^
...
1137 |             )),
     |              ^
     |
help: remove these parentheses
     |
1125 ~             append(
1126 |                 (append(
 ...
1136 |                 string(" / "),
1137 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1138:13
     |
1138 |             (v8),
     |             ^  ^
     |
help: remove these parentheses
     |
1138 -             (v8),
1138 +             v8,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1126:17
     |
1126 |                 (append(
     |                 ^
...
1135 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
1126 ~                 append(
1127 |                     (append(
 ...
1134 |                     string("runtime.current_process_kill / exiting... 1"),
1135 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1127:21
     |
1127 |                     (append(
     |                     ^
...
1133 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
1127 ~                     append(
1128 |                         (append(
 ...
1132 |                         string(" "),
1133 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1128:25
     |
1128 |                         (append(
     |                         ^
...
1131 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
1128 ~                         append(
1129 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1130 |                             (toString(v0.l0.get().clone())),
1131 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1129:29
     |
1129 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
1129 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1129 +                             append((append((append((v6), string(" "))), (v7))), string(" #")),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1130:29
     |
1130 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
1130 -                             (toString(v0.l0.get().clone())),
1130 +                             toString(v0.l0.get().clone()),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1129:37
     |
1129 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
1129 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1129 +                             (append(append((append((v6), string(" "))), (v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1129:45
     |
1129 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
1129 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1129 +                             (append((append(append((v6), string(" ")), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1129:74
     |
1129 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
1129 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1129 +                             (append((append((append((v6), string(" "))), v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1129:53
     |
1129 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
1129 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1129 +                             (append((append((append(v6, string(" "))), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around `break` value
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1315:30
     |
1315 |             break '_method27 (match v0.get().clone().as_ref() {
     |                              ^
...
1353 |             });
     |              ^
     |
help: remove these parentheses
     |
1315 ~             break '_method27 match v0.get().clone().as_ref() {
1316 |                 Runtime::UH0::UH0_0 => (v1.get().clone(), v2.get().clone(), v3.get().clone()),
 ...
1352 |                 }
1353 ~             };
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1418:58
     |
1418 |             (Runtime::method29(v0, (v1) + 1_i32))(append((v2), string(" ")))
     |                                                          ^  ^
     |
help: remove these parentheses
     |
1418 -             (Runtime::method29(v0, (v1) + 1_i32))(append((v2), string(" ")))
1418 +             (Runtime::method29(v0, (v1) + 1_i32))(append(v2, string(" ")))
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1436:17
     |
1436 |                 (Runtime::method25('\"', v1.clone(), v2, v3)),
     |                 ^                                           ^
     |
help: remove these parentheses
     |
1436 -                 (Runtime::method25('\"', v1.clone(), v2, v3)),
1436 +                 Runtime::method25('\"', v1.clone(), v2, v3),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1471:21
     |
1471 |                     (append(
     |                     ^
...
1492 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
1471 ~                     append(
1472 |                         (append(
 ...
1491 |                         )),
1492 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1472:25
     |
1472 |                         (append(
     |                         ^
...
1487 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
1472 ~                         append(
1473 |                             (append(
 ...
1486 |                             string("\n"),
1487 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1488:25
     |
1488 |                         (append(
     |                         ^
...
1491 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
1488 ~                         append(
1489 |                             ((Runtime::method29((v3) - 1_i32, 0_i32))(string(""))),
1490 |                             string("^"),
1491 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1473:29
     |
1473 | ...                   (append(
     |                       ^
...
1485 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
1473 ~                             append(
1474 |                                 (append(
 ...
1484 |                                 (v114),
1485 ~                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1474:33
     |
1474 | ...                   (append(
     |                       ^
...
1483 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
1474 ~                                 append(
1475 |                                     (append(
 ...
1482 |                                     (toString(v1)),
1483 ~                                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1484:33
     |
1484 | ...                   (v114),
     |                       ^    ^
     |
help: remove these parentheses
     |
1484 -                                 (v114),
1484 +                                 v114,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1475:37
     |
1475 | ...                   (append(
     |                       ^
...
1481 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
1475 ~                                     append(
1476 |                                         (append(
 ...
1480 |                                         string("\n"),
1481 ~                                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1482:37
     |
1482 | ...                   (toString(v1)),
     |                       ^            ^
     |
help: remove these parentheses
     |
1482 -                                     (toString(v1)),
1482 +                                     toString(v1),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1476:41
     |
1476 | ...                   (append(
     |                       ^
...
1479 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
1476 ~                                         append(
1477 |                                             string("parsing.p_char / "),
1478 |                                             (Runtime::method28('\"', v2, v3)),
1479 ~                                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1478:45
     |
1478 | ...                   (Runtime::method28('\"', v2, v3)),
     |                       ^                               ^
     |
help: remove these parentheses
     |
1478 -                                             (Runtime::method28('\"', v2, v3)),
1478 +                                             Runtime::method28('\"', v2, v3),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1489:29
     |
1489 | ...                   ((Runtime::method29((v3) - 1_i32, 0_i32))(string(""))),
     |                       ^                                                    ^
     |
help: remove these parentheses
     |
1489 -                             ((Runtime::method29((v3) - 1_i32, 0_i32))(string(""))),
1489 +                             (Runtime::method29((v3) - 1_i32, 0_i32))(string("")),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1506:17
     |
1506 |                 (Runtime::method25('\'', v1.clone(), v2, v3)),
     |                 ^                                           ^
     |
help: remove these parentheses
     |
1506 -                 (Runtime::method25('\'', v1.clone(), v2, v3)),
1506 +                 Runtime::method25('\'', v1.clone(), v2, v3),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1541:21
     |
1541 |                     (append(
     |                     ^
...
1562 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
1541 ~                     append(
1542 |                         (append(
 ...
1561 |                         )),
1562 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1542:25
     |
1542 |                         (append(
     |                         ^
...
1557 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
1542 ~                         append(
1543 |                             (append(
 ...
1556 |                             string("\n"),
1557 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1558:25
     |
1558 |                         (append(
     |                         ^
...
1561 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
1558 ~                         append(
1559 |                             ((Runtime::method29((v3) - 1_i32, 0_i32))(string(""))),
1560 |                             string("^"),
1561 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1543:29
     |
1543 | ...                   (append(
     |                       ^
...
1555 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
1543 ~                             append(
1544 |                                 (append(
 ...
1554 |                                 (v114),
1555 ~                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1544:33
     |
1544 | ...                   (append(
     |                       ^
...
1553 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
1544 ~                                 append(
1545 |                                     (append(
 ...
1552 |                                     (toString(v1)),
1553 ~                                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1554:33
     |
1554 | ...                   (v114),
     |                       ^    ^
     |
help: remove these parentheses
     |
1554 -                                 (v114),
1554 +                                 v114,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1545:37
     |
1545 | ...                   (append(
     |                       ^
...
1551 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
1545 ~                                     append(
1546 |                                         (append(
 ...
1550 |                                         string("\n"),
1551 ~                                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1552:37
     |
1552 | ...                   (toString(v1)),
     |                       ^            ^
     |
help: remove these parentheses
     |
1552 -                                     (toString(v1)),
1552 +                                     toString(v1),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1546:41
     |
1546 | ...                   (append(
     |                       ^
...
1549 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
1546 ~                                         append(
1547 |                                             string("parsing.p_char / "),
1548 |                                             (Runtime::method28('\'', v2, v3)),
1549 ~                                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1548:45
     |
1548 | ...                   (Runtime::method28('\'', v2, v3)),
     |                       ^                               ^
     |
help: remove these parentheses
     |
1548 -                                             (Runtime::method28('\'', v2, v3)),
1548 +                                             Runtime::method28('\'', v2, v3),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1559:29
     |
1559 | ...                   ((Runtime::method29((v3) - 1_i32, 0_i32))(string(""))),
     |                       ^                                                    ^
     |
help: remove these parentheses
     |
1559 -                             ((Runtime::method29((v3) - 1_i32, 0_i32))(string(""))),
1559 +                             (Runtime::method29((v3) - 1_i32, 0_i32))(string("")),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around `break` value
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1577:30
     |
1577 |             break '_method30 (match v2.get().clone().as_ref() {
     |                              ^
...
1608 |             });
     |              ^
     |
help: remove these parentheses
     |
1577 ~             break '_method30 match v2.get().clone().as_ref() {
1578 |                 Runtime::UH1::UH1_0 => {
 ...
1607 |                 }
1608 ~             };
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around `break` value
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1672:30
     |
1672 |             break '_method33 (if (v1.get().clone()) >= 2_i64 {
     |                              ^
...
1703 |             });
     |              ^
     |
help: remove these parentheses
     |
1672 ~             break '_method33 if (v1.get().clone()) >= 2_i64 {
1673 |                 false
 ...
1702 |                 }
1703 ~             };
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around `break` value
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1782:30
     |
1782 |             break '_method35 ({
     |                              ^
...
1864 |             });
     |              ^
     |
help: remove these parentheses
     |
1782 ~             break '_method35 {
1783 |                 let v176: Runtime::US8 = if string("") == (v1.get().clone()) {
 ...
1863 |                 }
1864 ~             };
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1786:25
     |
1786 |                         (Runtime::method32(
     |                         ^
...
1791 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
1786 ~                         Runtime::method32(
1787 |                             Runtime::method31(toArray(ofArray(new_array(&['\"', '\''])))),
 ...
1790 |                             v4.get().clone(),
1791 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1818:29
     |
1818 | ...                   (Runtime::method34(
     |                       ^
...
1824 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
1818 ~                             Runtime::method34(
1819 |                                 v63,
 ...
1823 |                                 v4.get().clone(),
1824 ~                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1844:36
     |
1844 | ...                   append((v0.get().clone()), (ofChar(v188_0_0.clone())));
     |                              ^                ^
     |
help: remove these parentheses
     |
1844 -                             append((v0.get().clone()), (ofChar(v188_0_0.clone())));
1844 +                             append(v0.get().clone(), (ofChar(v188_0_0.clone())));
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1844:56
     |
1844 | ...                   append((v0.get().clone()), (ofChar(v188_0_0.clone())));
     |                                                  ^                        ^
     |
help: remove these parentheses
     |
1844 -                             append((v0.get().clone()), (ofChar(v188_0_0.clone())));
1844 +                             append((v0.get().clone()), ofChar(v188_0_0.clone()));
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around `break` value
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1880:30
     |
1880 |             break '_method36 (match v4.get().clone().as_ref() {
     |                              ^
...
1915 |             });
     |              ^
     |
help: remove these parentheses
     |
1880 ~             break '_method36 match v4.get().clone().as_ref() {
1881 |                 Runtime::UH1::UH1_0 => {
 ...
1914 |                 }
1915 ~             };
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around `break` value
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2049:30
     |
2049 |             break '_method38 (if (v1.get().clone()) >= 3_i64 {
     |                              ^
...
2085 |             });
     |              ^
     |
help: remove these parentheses
     |
2049 ~             break '_method38 if (v1.get().clone()) >= 3_i64 {
2050 |                 false
 ...
2084 |                 }
2085 ~             };
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around `break` value
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2101:30
     |
2101 |             break '_method39 ({
     |                              ^
...
2183 |             });
     |              ^
     |
help: remove these parentheses
     |
2101 ~             break '_method39 {
2102 |                 let v200: Runtime::US8 = if string("") == (v1.get().clone()) {
 ...
2182 |                 }
2183 ~             };
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2105:25
     |
2105 |                         (Runtime::method32(
     |                         ^
...
2110 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
2105 ~                         Runtime::method32(
2106 |                             Runtime::method31(toArray(ofArray(new_array(&['\"', '\'', ' '])))),
 ...
2109 |                             v4.get().clone(),
2110 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2137:29
     |
2137 | ...                   (Runtime::method34(
     |                       ^
...
2143 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
2137 ~                             Runtime::method34(
2138 |                                 v75,
 ...
2142 |                                 v4.get().clone(),
2143 ~                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2163:36
     |
2163 | ...                   append((v0.get().clone()), (ofChar(v212_0_0.clone())));
     |                              ^                ^
     |
help: remove these parentheses
     |
2163 -                             append((v0.get().clone()), (ofChar(v212_0_0.clone())));
2163 +                             append(v0.get().clone(), (ofChar(v212_0_0.clone())));
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2163:56
     |
2163 | ...                   append((v0.get().clone()), (ofChar(v212_0_0.clone())));
     |                                                  ^                        ^
     |
help: remove these parentheses
     |
2163 -                             append((v0.get().clone()), (ofChar(v212_0_0.clone())));
2163 +                             append((v0.get().clone()), ofChar(v212_0_0.clone()));
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around `break` value
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2216:30
     |
2216 |             break '_method41 (if (v1.get().clone()) >= (length(v0.get().clone())) {
     |                              ^
...
2228 |             });
     |              ^
     |
help: remove these parentheses
     |
2216 ~             break '_method41 if (v1.get().clone()) >= (length(v0.get().clone())) {
2217 |                 v1.get().clone()
 ...
2227 |                 }
2228 ~             };
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around `break` value
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2271:30
     |
2271 |             break '_method43 ({
     |                              ^
...
2321 |             });
     |              ^
     |
help: remove these parentheses
     |
2271 ~             break '_method43 {
2272 |                 let v66: Runtime::US8 = if string("") == (v1.get().clone()) {
 ...
2320 |                 }
2321 ~             };
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2275:25
     |
2275 |                         (Runtime::method42(v2.get().clone(), v3.get().clone(), v4.get().clone())),
     |                         ^                                                                       ^
     |
help: remove these parentheses
     |
2275 -                         (Runtime::method42(v2.get().clone(), v3.get().clone(), v4.get().clone())),
2275 +                         Runtime::method42(v2.get().clone(), v3.get().clone(), v4.get().clone()),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2301:54
     |
2301 |                         let v0_temp: string = append((v0.get().clone()), (ofChar(v66_0_0.clone())));
     |                                                      ^                ^
     |
help: remove these parentheses
     |
2301 -                         let v0_temp: string = append((v0.get().clone()), (ofChar(v66_0_0.clone())));
2301 +                         let v0_temp: string = append(v0.get().clone(), (ofChar(v66_0_0.clone())));
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2301:74
     |
2301 |                         let v0_temp: string = append((v0.get().clone()), (ofChar(v66_0_0.clone())));
     |                                                                          ^                       ^
     |
help: remove these parentheses
     |
2301 -                         let v0_temp: string = append((v0.get().clone()), (ofChar(v66_0_0.clone())));
2301 +                         let v0_temp: string = append((v0.get().clone()), ofChar(v66_0_0.clone()));
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2362:29
     |
2362 | ...                   (Runtime::method32(
     |                       ^
...
2367 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
2362 ~                             Runtime::method32(
2363 |                                 Runtime::method31(toArray(ofArray(new_array(&['\"', '\''])))),
 ...
2366 |                                 v29,
2367 ~                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2394:33
     |
2394 | ...                   (Runtime::method34(
     |                       ^
...
2400 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
2394 ~                                 Runtime::method34(
2395 |                                     v88,
 ...
2399 |                                     v29,
2400 ~                                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2484:37
     |
2484 | ...                   (Runtime::method37(
     |                       ^
...
2498 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
2484 ~                                     Runtime::method37(
2485 |                                         v252_1_0.clone(),
 ...
2497 |                                         v248,
2498 ~                                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2515:29
     |
2515 | ...                   (Runtime::method32(
     |                       ^
...
2520 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
2515 ~                             Runtime::method32(
2516 |                                 Runtime::method31(toArray(ofArray(new_array(&['\"', '\'', ' '])))),
 ...
2519 |                                 1_i32,
2520 ~                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2548:33
     |
2548 | ...                   (Runtime::method34(
     |                       ^
...
2556 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
2548 ~                                 Runtime::method34(
2549 |                                     v359,
 ...
2555 |                                     1_i32,
2556 ~                                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2603:37
     |
2603 | ...                   (Runtime::method40(v10.clone())),
     |                       ^                              ^
     |
help: remove these parentheses
     |
2603 -                                     (Runtime::method40(v10.clone())),
2603 +                                     Runtime::method40(v10.clone()),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2658:29
     |
2658 | ...                   (Runtime::method25(' ', v605.clone(), v606, v607)),
     |                       ^                                                ^
     |
help: remove these parentheses
     |
2658 -                             (Runtime::method25(' ', v605.clone(), v606, v607)),
2658 +                             Runtime::method25(' ', v605.clone(), v606, v607),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2697:33
     |
2697 | ...                   (append(
     |                       ^
...
2718 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
2697 ~                                 append(
2698 |                                     (append(
 ...
2717 |                                     )),
2718 ~                                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2698:37
     |
2698 | ...                   (append(
     |                       ^
...
2713 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
2698 ~                                     append(
2699 |                                         (append(
 ...
2712 |                                         string("\n"),
2713 ~                                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2714:37
     |
2714 | ...                   (append(
     |                       ^
...
2717 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
2714 ~                                     append(
2715 |                                         ((Runtime::method29((v607) - 1_i32, 0_i32))(string(""))),
2716 |                                         string("^"),
2717 ~                                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2699:41
     |
2699 | ...                   (append(
     |                       ^
...
2711 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
2699 ~                                         append(
2700 |                                             (append(
 ...
2710 |                                             (v718),
2711 ~                                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2700:45
     |
2700 | ...                   (append(
     |                       ^
...
2709 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
2700 ~                                             append(
2701 |                                                 (append(
 ...
2708 |                                                 (toString(v605.clone())),
2709 ~                                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2710:45
     |
2710 | ...                   (v718),
     |                       ^    ^
     |
help: remove these parentheses
     |
2710 -                                             (v718),
2710 +                                             v718,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2701:49
     |
2701 | ...                   (append(
     |                       ^
...
2707 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
2701 ~                                                 append(
2702 |                                                     (append(
 ...
2706 |                                                     string("\n"),
2707 ~                                                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2708:49
     |
2708 | ...                   (toString(v605.clone())),
     |                       ^                      ^
     |
help: remove these parentheses
     |
2708 -                                                 (toString(v605.clone())),
2708 +                                                 toString(v605.clone()),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2702:53
     |
2702 | ...                   (append(
     |                       ^
...
2705 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
2702 ~                                                     append(
2703 |                                                         string("parsing.p_char / "),
2704 |                                                         (Runtime::method28(' ', v606, v607)),
2705 ~                                                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2704:57
     |
2704 | ...                   (Runtime::method28(' ', v606, v607)),
     |                       ^                                  ^
     |
help: remove these parentheses
     |
2704 -                                                         (Runtime::method28(' ', v606, v607)),
2704 +                                                         Runtime::method28(' ', v606, v607),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2715:41
     |
2715 | ...                   ((Runtime::method29((v607) - 1_i32, 0_i32))(string(""))),
     |                       ^                                                      ^
     |
help: remove these parentheses
     |
2715 -                                         ((Runtime::method29((v607) - 1_i32, 0_i32))(string(""))),
2715 +                                         (Runtime::method29((v607) - 1_i32, 0_i32))(string("")),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2750:37
     |
2750 | ...                   (Runtime::method42(v786.clone(), v787, v788)),
     |                       ^                                           ^
     |
help: remove these parentheses
     |
2750 -                                     (Runtime::method42(v786.clone(), v787, v788)),
2750 +                                     Runtime::method42(v786.clone(), v787, v788),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3113:13
     |
3113 |             (append(
     |             ^
...
3125 |             )),
     |              ^
     |
help: remove these parentheses
     |
3113 ~             append(
3114 |                 (append(
 ...
3124 |                 string(" / "),
3125 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3126:13
     |
3126 |             (v18),
     |             ^   ^
     |
help: remove these parentheses
     |
3126 -             (v18),
3126 +             v18,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3114:17
     |
3114 |                 (append(
     |                 ^
...
3123 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
3114 ~                 append(
3115 |                     (append(
 ...
3122 |                     string("runtime.execute_with_options_async"),
3123 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3115:21
     |
3115 |                     (append(
     |                     ^
...
3121 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
3115 ~                     append(
3116 |                         (append(
 ...
3120 |                         string(" "),
3121 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3116:25
     |
3116 |                         (append(
     |                         ^
...
3119 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
3116 ~                         append(
3117 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3118 |                             (toString(v0.l0.get().clone())),
3119 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3117:29
     |
3117 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
3117 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3117 +                             append((append((append((v6), string(" "))), (v7))), string(" #")),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3118:29
     |
3118 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
3118 -                             (toString(v0.l0.get().clone())),
3118 +                             toString(v0.l0.get().clone()),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3117:37
     |
3117 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
3117 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3117 +                             (append(append((append((v6), string(" "))), (v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3117:45
     |
3117 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
3117 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3117 +                             (append((append(append((v6), string(" ")), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3117:74
     |
3117 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
3117 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3117 +                             (append((append((append((v6), string(" "))), v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3117:53
     |
3117 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
3117 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3117 +                             (append((append((append(v6, string(" "))), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3293:13
     |
3293 |             (append(
     |             ^
...
3305 |             )),
     |              ^
     |
help: remove these parentheses
     |
3293 ~             append(
3294 |                 (append(
 ...
3304 |                 string(" / "),
3305 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3306:13
     |
3306 |             (v9),
     |             ^  ^
     |
help: remove these parentheses
     |
3306 -             (v9),
3306 +             v9,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3294:17
     |
3294 |                 (append(
     |                 ^
...
3303 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
3294 ~                 append(
3295 |                     (append(
 ...
3302 |                     (v8),
3303 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3295:21
     |
3295 |                     (append(
     |                     ^
...
3301 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
3295 ~                     append(
3296 |                         (append(
 ...
3300 |                         string(" "),
3301 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3302:21
     |
3302 |                     (v8),
     |                     ^  ^
     |
help: remove these parentheses
     |
3302 -                     (v8),
3302 +                     v8,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3296:25
     |
3296 |                         (append(
     |                         ^
...
3299 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
3296 ~                         append(
3297 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3298 |                             (toString(v0.l0.get().clone())),
3299 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3297:29
     |
3297 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
3297 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3297 +                             append((append((append((v6), string(" "))), (v7))), string(" #")),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3298:29
     |
3298 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
3298 -                             (toString(v0.l0.get().clone())),
3298 +                             toString(v0.l0.get().clone()),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3297:37
     |
3297 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
3297 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3297 +                             (append(append((append((v6), string(" "))), (v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3297:45
     |
3297 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
3297 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3297 +                             (append((append(append((v6), string(" ")), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3297:74
     |
3297 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
3297 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3297 +                             (append((append((append((v6), string(" "))), v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3297:53
     |
3297 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
3297 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3297 +                             (append((append((append(v6, string(" "))), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3519:13
     |
3519 |             (append(
     |             ^
...
3531 |             )),
     |              ^
     |
help: remove these parentheses
     |
3519 ~             append(
3520 |                 (append(
 ...
3530 |                 string(" / "),
3531 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3532:13
     |
3532 |             (v9),
     |             ^  ^
     |
help: remove these parentheses
     |
3532 -             (v9),
3532 +             v9,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3520:17
     |
3520 |                 (append(
     |                 ^
...
3529 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
3520 ~                 append(
3521 |                     (append(
 ...
3528 |                     string("runtime.execute_with_options_async / WaitForExitAsync"),
3529 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3521:21
     |
3521 |                     (append(
     |                     ^
...
3527 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
3521 ~                     append(
3522 |                         (append(
 ...
3526 |                         string(" "),
3527 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3522:25
     |
3522 |                         (append(
     |                         ^
...
3525 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
3522 ~                         append(
3523 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3524 |                             (toString(v0.l0.get().clone())),
3525 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3523:29
     |
3523 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
3523 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3523 +                             append((append((append((v6), string(" "))), (v7))), string(" #")),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3524:29
     |
3524 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
3524 -                             (toString(v0.l0.get().clone())),
3524 +                             toString(v0.l0.get().clone()),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3523:37
     |
3523 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
3523 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3523 +                             (append(append((append((v6), string(" "))), (v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3523:45
     |
3523 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
3523 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3523 +                             (append((append(append((v6), string(" ")), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3523:74
     |
3523 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
3523 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3523 +                             (append((append((append((v6), string(" "))), v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3523:53
     |
3523 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
3523 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3523 +                             (append((append((append(v6, string(" "))), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3887:13
     |
3887 |             (append(
     |             ^
...
3899 |             )),
     |              ^
     |
help: remove these parentheses
     |
3887 ~             append(
3888 |                 (append(
 ...
3898 |                 string(" / "),
3899 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3900:13
     |
3900 |             (v18),
     |             ^   ^
     |
help: remove these parentheses
     |
3900 -             (v18),
3900 +             v18,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3888:17
     |
3888 |                 (append(
     |                 ^
...
3897 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
3888 ~                 append(
3889 |                     (append(
 ...
3896 |                     string("runtime.execute_with_options_async"),
3897 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3889:21
     |
3889 |                     (append(
     |                     ^
...
3895 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
3889 ~                     append(
3890 |                         (append(
 ...
3894 |                         string(" "),
3895 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3890:25
     |
3890 |                         (append(
     |                         ^
...
3893 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
3890 ~                         append(
3891 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3892 |                             (toString(v0.l0.get().clone())),
3893 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3891:29
     |
3891 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
3891 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3891 +                             append((append((append((v6), string(" "))), (v7))), string(" #")),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3892:29
     |
3892 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
3892 -                             (toString(v0.l0.get().clone())),
3892 +                             toString(v0.l0.get().clone()),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3891:37
     |
3891 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
3891 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3891 +                             (append(append((append((v6), string(" "))), (v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3891:45
     |
3891 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
3891 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3891 +                             (append((append(append((v6), string(" ")), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3891:74
     |
3891 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
3891 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3891 +                             (append((append((append((v6), string(" "))), v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3891:53
     |
3891 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
3891 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3891 +                             (append((append((append(v6, string(" "))), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around `break` value
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4120:30
     |
4120 |             break '_method68 (if (v1.get().clone()) >= 4_i64 {
     |                              ^
...
4161 |             });
     |              ^
     |
help: remove these parentheses
     |
4120 ~             break '_method68 if (v1.get().clone()) >= 4_i64 {
4121 |                 false
 ...
4160 |                 }
4161 ~             };
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around `break` value
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4177:30
     |
4177 |             break '_method69 ({
     |                              ^
...
4248 |             });
     |              ^
     |
help: remove these parentheses
     |
4177 ~             break '_method69 {
4178 |                 let v224: Runtime::US8 = if string("") == (v1.get().clone()) {
 ...
4247 |                 }
4248 ~             };
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4181:25
     |
4181 |                         (Runtime::method32(
     |                         ^
...
4186 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
4181 ~                         Runtime::method32(
4182 |                             Runtime::method31(toArray(ofArray(new_array(&['\\', '`', '\"', ' '])))),
 ...
4185 |                             v4.get().clone(),
4186 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4213:29
     |
4213 | ...                   (Runtime::method34(
     |                       ^
...
4221 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4213 ~                             Runtime::method34(
4214 |                                 v87,
 ...
4220 |                                 v4.get().clone(),
4221 ~                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4228:36
     |
4228 | ...                   append((v0.get().clone()), (ofChar(v224_0_0.clone())));
     |                              ^                ^
     |
help: remove these parentheses
     |
4228 -                             append((v0.get().clone()), (ofChar(v224_0_0.clone())));
4228 +                             append(v0.get().clone(), (ofChar(v224_0_0.clone())));
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4228:56
     |
4228 | ...                   append((v0.get().clone()), (ofChar(v224_0_0.clone())));
     |                                                  ^                        ^
     |
help: remove these parentheses
     |
4228 -                             append((v0.get().clone()), (ofChar(v224_0_0.clone())));
4228 +                             append((v0.get().clone()), ofChar(v224_0_0.clone()));
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around `break` value
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4255:30
     |
4255 |             break '_method71 (if (v1.get().clone()) >= 3_i64 {
     |                              ^
...
4291 |             });
     |              ^
     |
help: remove these parentheses
     |
4255 ~             break '_method71 if (v1.get().clone()) >= 3_i64 {
4256 |                 false
 ...
4290 |                 }
4291 ~             };
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4302:17
     |
4302 |                 (Runtime::method25('\\', v1.clone(), v2, v3)),
     |                 ^                                           ^
     |
help: remove these parentheses
     |
4302 -                 (Runtime::method25('\\', v1.clone(), v2, v3)),
4302 +                 Runtime::method25('\\', v1.clone(), v2, v3),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4337:21
     |
4337 |                     (append(
     |                     ^
...
4358 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
4337 ~                     append(
4338 |                         (append(
 ...
4357 |                         )),
4358 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4338:25
     |
4338 |                         (append(
     |                         ^
...
4353 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
4338 ~                         append(
4339 |                             (append(
 ...
4352 |                             string("\n"),
4353 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4354:25
     |
4354 |                         (append(
     |                         ^
...
4357 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
4354 ~                         append(
4355 |                             ((Runtime::method29((v3) - 1_i32, 0_i32))(string(""))),
4356 |                             string("^"),
4357 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4339:29
     |
4339 | ...                   (append(
     |                       ^
...
4351 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4339 ~                             append(
4340 |                                 (append(
 ...
4350 |                                 (v114),
4351 ~                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4340:33
     |
4340 | ...                   (append(
     |                       ^
...
4349 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4340 ~                                 append(
4341 |                                     (append(
 ...
4348 |                                     (toString(v1)),
4349 ~                                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4350:33
     |
4350 | ...                   (v114),
     |                       ^    ^
     |
help: remove these parentheses
     |
4350 -                                 (v114),
4350 +                                 v114,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4341:37
     |
4341 | ...                   (append(
     |                       ^
...
4347 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4341 ~                                     append(
4342 |                                         (append(
 ...
4346 |                                         string("\n"),
4347 ~                                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4348:37
     |
4348 | ...                   (toString(v1)),
     |                       ^            ^
     |
help: remove these parentheses
     |
4348 -                                     (toString(v1)),
4348 +                                     toString(v1),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4342:41
     |
4342 | ...                   (append(
     |                       ^
...
4345 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4342 ~                                         append(
4343 |                                             string("parsing.p_char / "),
4344 |                                             (Runtime::method28('\\', v2, v3)),
4345 ~                                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4344:45
     |
4344 | ...                   (Runtime::method28('\\', v2, v3)),
     |                       ^                               ^
     |
help: remove these parentheses
     |
4344 -                                             (Runtime::method28('\\', v2, v3)),
4344 +                                             Runtime::method28('\\', v2, v3),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4355:29
     |
4355 | ...                   ((Runtime::method29((v3) - 1_i32, 0_i32))(string(""))),
     |                       ^                                                    ^
     |
help: remove these parentheses
     |
4355 -                             ((Runtime::method29((v3) - 1_i32, 0_i32))(string(""))),
4355 +                             (Runtime::method29((v3) - 1_i32, 0_i32))(string("")),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4372:25
     |
4372 |                         (Runtime::method42(v171.clone(), v172, v173)),
     |                         ^                                           ^
     |
help: remove these parentheses
     |
4372 -                         (Runtime::method42(v171.clone(), v172, v173)),
4372 +                         Runtime::method42(v171.clone(), v172, v173),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4399:28
     |
4399 |                     append((ofChar('\\')), (ofChar(v239_0_0.clone()))),
     |                            ^            ^
     |
help: remove these parentheses
     |
4399 -                     append((ofChar('\\')), (ofChar(v239_0_0.clone()))),
4399 +                     append(ofChar('\\'), (ofChar(v239_0_0.clone()))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4399:44
     |
4399 |                     append((ofChar('\\')), (ofChar(v239_0_0.clone()))),
     |                                            ^                        ^
     |
help: remove these parentheses
     |
4399 -                     append((ofChar('\\')), (ofChar(v239_0_0.clone()))),
4399 +                     append((ofChar('\\')), ofChar(v239_0_0.clone())),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4417:17
     |
4417 |                 (Runtime::method25('`', v1.clone(), v2, v3)),
     |                 ^                                          ^
     |
help: remove these parentheses
     |
4417 -                 (Runtime::method25('`', v1.clone(), v2, v3)),
4417 +                 Runtime::method25('`', v1.clone(), v2, v3),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4452:21
     |
4452 |                     (append(
     |                     ^
...
4473 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
4452 ~                     append(
4453 |                         (append(
 ...
4472 |                         )),
4473 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4453:25
     |
4453 |                         (append(
     |                         ^
...
4468 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
4453 ~                         append(
4454 |                             (append(
 ...
4467 |                             string("\n"),
4468 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4469:25
     |
4469 |                         (append(
     |                         ^
...
4472 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
4469 ~                         append(
4470 |                             ((Runtime::method29((v3) - 1_i32, 0_i32))(string(""))),
4471 |                             string("^"),
4472 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4454:29
     |
4454 | ...                   (append(
     |                       ^
...
4466 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4454 ~                             append(
4455 |                                 (append(
 ...
4465 |                                 (v114),
4466 ~                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4455:33
     |
4455 | ...                   (append(
     |                       ^
...
4464 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4455 ~                                 append(
4456 |                                     (append(
 ...
4463 |                                     (toString(v1)),
4464 ~                                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4465:33
     |
4465 | ...                   (v114),
     |                       ^    ^
     |
help: remove these parentheses
     |
4465 -                                 (v114),
4465 +                                 v114,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4456:37
     |
4456 | ...                   (append(
     |                       ^
...
4462 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4456 ~                                     append(
4457 |                                         (append(
 ...
4461 |                                         string("\n"),
4462 ~                                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4463:37
     |
4463 | ...                   (toString(v1)),
     |                       ^            ^
     |
help: remove these parentheses
     |
4463 -                                     (toString(v1)),
4463 +                                     toString(v1),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4457:41
     |
4457 | ...                   (append(
     |                       ^
...
4460 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4457 ~                                         append(
4458 |                                             string("parsing.p_char / "),
4459 |                                             (Runtime::method28('`', v2, v3)),
4460 ~                                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4459:45
     |
4459 | ...                   (Runtime::method28('`', v2, v3)),
     |                       ^                              ^
     |
help: remove these parentheses
     |
4459 -                                             (Runtime::method28('`', v2, v3)),
4459 +                                             Runtime::method28('`', v2, v3),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4470:29
     |
4470 | ...                   ((Runtime::method29((v3) - 1_i32, 0_i32))(string(""))),
     |                       ^                                                    ^
     |
help: remove these parentheses
     |
4470 -                             ((Runtime::method29((v3) - 1_i32, 0_i32))(string(""))),
4470 +                             (Runtime::method29((v3) - 1_i32, 0_i32))(string("")),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4487:25
     |
4487 |                         (Runtime::method42(v171.clone(), v172, v173)),
     |                         ^                                           ^
     |
help: remove these parentheses
     |
4487 -                         (Runtime::method42(v171.clone(), v172, v173)),
4487 +                         Runtime::method42(v171.clone(), v172, v173),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4514:28
     |
4514 |                     append((ofChar('`')), (ofChar(v239_0_0.clone()))),
     |                            ^           ^
     |
help: remove these parentheses
     |
4514 -                     append((ofChar('`')), (ofChar(v239_0_0.clone()))),
4514 +                     append(ofChar('`'), (ofChar(v239_0_0.clone()))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4514:43
     |
4514 |                     append((ofChar('`')), (ofChar(v239_0_0.clone()))),
     |                                           ^                        ^
     |
help: remove these parentheses
     |
4514 -                     append((ofChar('`')), (ofChar(v239_0_0.clone()))),
4514 +                     append((ofChar('`')), ofChar(v239_0_0.clone())),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around `break` value
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4537:30
     |
4537 |             break '_method72 (match v4.get().clone().as_ref() {
     |                              ^
...
4572 |             });
     |              ^
     |
help: remove these parentheses
     |
4537 ~             break '_method72 match v4.get().clone().as_ref() {
4538 |                 Runtime::UH3::UH3_0 => {
 ...
4571 |                 }
4572 ~             };
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around `break` value
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4579:30
     |
4579 |             break '_method73 (match v0.get().clone().as_ref() {
     |                              ^
...
4599 |             });
     |              ^
     |
help: remove these parentheses
     |
4579 ~             break '_method73 match v0.get().clone().as_ref() {
4580 |                 Runtime::UH2::UH2_0 => v1.get().clone(),
 ...
4598 |                 }
4599 ~             };
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around `break` value
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4615:30
     |
4615 |             break '_method70 ({
     |                              ^
...
4727 |             });
     |              ^
     |
help: remove these parentheses
     |
4615 ~             break '_method70 {
4616 |                 let v200: Runtime::US8 = if string("") == (v1.get().clone()) {
 ...
4726 |                 }
4727 ~             };
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4619:25
     |
4619 |                         (Runtime::method32(
     |                         ^
...
4624 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
4619 ~                         Runtime::method32(
4620 |                             Runtime::method31(toArray(ofArray(new_array(&['\\', '`', '\"'])))),
 ...
4623 |                             v4.get().clone(),
4624 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4651:29
     |
4651 | ...                   (Runtime::method34(
     |                       ^
...
4657 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4651 ~                             Runtime::method34(
4652 |                                 v75,
 ...
4656 |                                 v4.get().clone(),
4657 ~                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around `break` value
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4763:30
     |
4763 |             break '_method75 ({
     |                              ^
...
4844 |             });
     |              ^
     |
help: remove these parentheses
     |
4763 ~             break '_method75 {
4764 |                 let v200: Runtime::US8 = if string("") == (v1.get().clone()) {
 ...
4843 |                 }
4844 ~             };
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4767:25
     |
4767 |                         (Runtime::method32(
     |                         ^
...
4772 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
4767 ~                         Runtime::method32(
4768 |                             Runtime::method31(toArray(ofArray(new_array(&['\\', '`', '\"'])))),
 ...
4771 |                             v4.get().clone(),
4772 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4799:29
     |
4799 | ...                   (Runtime::method34(
     |                       ^
...
4805 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4799 ~                             Runtime::method34(
4800 |                                 v75,
 ...
4804 |                                 v4.get().clone(),
4805 ~                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around `break` value
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4860:30
     |
4860 |             break '_method67 ({
     |                              ^
...
5378 |             });
     |              ^
     |
help: remove these parentheses
     |
4860 ~             break '_method67 {
4861 |                 let v5: bool = string("") == (v1.get().clone());
 ...
5377 |                 }
5378 ~             };
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4865:25
     |
4865 |                         (Runtime::method32(
     |                         ^
...
4870 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
4865 ~                         Runtime::method32(
4866 |                             Runtime::method31(toArray(ofArray(new_array(&['\\', '`', '\"', ' '])))),
 ...
4869 |                             v4.get().clone(),
4870 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4897:29
     |
4897 | ...                   (Runtime::method34(
     |                       ^
...
4905 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4897 ~                             Runtime::method34(
4898 |                                 v87,
 ...
4904 |                                 v4.get().clone(),
4905 ~                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4937:33
     |
4937 | ...                   (Runtime::method25(
     |                       ^
...
4942 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4937 ~                                 Runtime::method25(
4938 |                                     '\"',
 ...
4941 |                                     v4.get().clone(),
4942 ~                                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4981:37
     |
4981 | ...                   (append(
     |                       ^
...
5011 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4981 ~                                     append(
4982 |                                         (append(
 ...
5010 |                                         )),
5011 ~                                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4982:41
     |
4982 | ...                   (append(
     |                       ^
...
5001 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4982 ~                                         append(
4983 |                                             (append(
 ...
5000 |                                             string("\n"),
5001 ~                                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5002:41
     |
5002 | ...                   (append(
     |                       ^
...
5010 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
5002 ~                                         append(
5003 |                                             ((Runtime::method29(
 ...
5009 |                                             string("^"),
5010 ~                                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4983:45
     |
4983 | ...                   (append(
     |                       ^
...
4999 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4983 ~                                             append(
4984 |                                                 (append(
 ...
4998 |                                                 (v360),
4999 ~                                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4984:49
     |
4984 | ...                   (append(
     |                       ^
...
4997 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4984 ~                                                 append(
4985 |                                                     (append(
 ...
4996 |                                                     (toString(v2.get().clone())),
4997 ~                                                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4998:49
     |
4998 | ...                   (v360),
     |                       ^    ^
     |
help: remove these parentheses
     |
4998 -                                                 (v360),
4998 +                                                 v360,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4985:53
     |
4985 | ...                   (append(
     |                       ^
...
4995 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4985 ~                                                     append(
4986 |                                                         (append(
 ...
4994 |                                                         string("\n"),
4995 ~                                                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4996:53
     |
4996 | ...                   (toString(v2.get().clone())),
     |                       ^                          ^
     |
help: remove these parentheses
     |
4996 -                                                     (toString(v2.get().clone())),
4996 +                                                     toString(v2.get().clone()),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4986:57
     |
4986 | ...                   (append(
     |                       ^
...
4993 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4986 ~                                                         append(
4987 |                                                             string("parsing.p_char / "),
 ...
4992 |                                                             )),
4993 ~                                                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4988:61
     |
4988 | ...                   (Runtime::method28(
     |                       ^
...
4992 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4988 ~                                                             Runtime::method28(
4989 |                                                                 '\"',
4990 |                                                                 v3.get().clone(),
4991 |                                                                 v4.get().clone(),
4992 ~                                                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5003:45
     |
5003 | ...                   ((Runtime::method29(
     |                       ^
...
5008 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
5003 ~                                             (Runtime::method29(
5004 |                                                 (v4.get().clone()) - 1_i32,
 ...
5007 |                                                 string("")
5008 ~                                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5080:49
     |
5080 | ...                   (Runtime::method25('\"', v457.clone(), v458, v459)),
     |                       ^                                                 ^
     |
help: remove these parentheses
     |
5080 -                                                 (Runtime::method25('\"', v457.clone(), v458, v459)),
5080 +                                                 Runtime::method25('\"', v457.clone(), v458, v459),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5127:53
     |
5127 | ...                   (append(
     |                       ^
...
5157 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
5127 ~                                                     append(
5128 |                                                         (append(
 ...
5156 |                                                         )),
5157 ~                                                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5128:57
     |
5128 | ...                   (append(
     |                       ^
...
5147 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
5128 ~                                                         append(
5129 |                                                             (append(
 ...
5146 |                                                             string("\n"),
5147 ~                                                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5148:57
     |
5148 | ...                   (append(
     |                       ^
...
5156 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
5148 ~                                                         append(
5149 |                                                             ((Runtime::method29(
 ...
5155 |                                                             string("^"),
5156 ~                                                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5129:61
     |
5129 | ...                   (append(
     |                       ^
...
5145 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
5129 ~                                                             append(
5130 |                                                                 (append(
 ...
5144 |                                                                 (v570),
5145 ~                                                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5130:65
     |
5130 | ...                   (append(
     |                       ^
...
5143 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
5130 ~                                                                 append(
5131 |                                                                     (append(
 ...
5142 |                                                                     (toString(v457.clone())),
5143 ~                                                                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5144:65
     |
5144 | ...                   (v570),
     |                       ^    ^
     |
help: remove these parentheses
     |
5144 -                                                                 (v570),
5144 +                                                                 v570,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5131:69
     |
5131 | ...                   (append(
     |                       ^
...
5141 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
5131 ~                                                                     append(
5132 |                                                                         (append(
 ...
5140 |                                                                         string("\n"),
5141 ~                                                                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5142:69
     |
5142 | ...                   (toString(v457.clone())),
     |                       ^                      ^
     |
help: remove these parentheses
     |
5142 -                                                                     (toString(v457.clone())),
5142 +                                                                     toString(v457.clone()),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5132:73
     |
5132 | ...                   (append(
     |                       ^
...
5139 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
5132 ~                                                                         append(
5133 |                                                                             string(
 ...
5138 |                                                                             )),
5139 ~                                                                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5136:77
     |
5136 | ...                   (Runtime::method28(
     |                       ^
5137 | ...                       '\"', v458, v459,
5138 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
5136 ~                                                                             Runtime::method28(
5137 |                                                                                 '\"', v458, v459,
5138 ~                                                                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5149:61
     |
5149 | ...                   ((Runtime::method29(
     |                       ^
...
5154 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
5149 ~                                                             (Runtime::method29(
5150 |                                                                 (v459) - 1_i32,
 ...
5153 |                                                                 string("")
5154 ~                                                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5181:53
     |
5181 | ...                   (Runtime::method37(
     |                       ^
...
5195 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
5181 ~                                                     Runtime::method37(
5182 |                                                         v624_1_0.clone(),
 ...
5194 |                                                         v459,
5195 ~                                                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:591:33
    |
591 |         let v4: string = append((v0.l0.get().clone()), (v1));
    |                                 ^                   ^
    |
help: remove these parentheses
    |
591 -         let v4: string = append((v0.l0.get().clone()), (v1));
591 +         let v4: string = append(v0.l0.get().clone(), (v1));
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:591:56
    |
591 |         let v4: string = append((v0.l0.get().clone()), (v1));
    |                                                        ^  ^
    |
help: remove these parentheses
    |
591 -         let v4: string = append((v0.l0.get().clone()), (v1));
591 +         let v4: string = append((v0.l0.get().clone()), v1);
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:761:13
    |
761 |             (append(
    |             ^
...
773 |             )),
    |              ^
    |
help: remove these parentheses
    |
761 ~             append(
762 |                 (append(
...
772 |                 string(" / "),
773 ~             ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:774:13
    |
774 |             (v10),
    |             ^   ^
    |
help: remove these parentheses
    |
774 -             (v10),
774 +             v10,
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:762:17
    |
762 |                 (append(
    |                 ^
...
771 |                 )),
    |                  ^
    |
help: remove these parentheses
    |
762 ~                 append(
763 |                     (append(
...
770 |                     (v8),
771 ~                 ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:763:21
    |
763 |                     (append(
    |                     ^
...
769 |                     )),
    |                      ^
    |
help: remove these parentheses
    |
763 ~                     append(
764 |                         (append(
...
768 |                         string(" "),
769 ~                     ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:770:21
    |
770 |                     (v8),
    |                     ^  ^
    |
help: remove these parentheses
    |
770 -                     (v8),
770 +                     v8,
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:764:25
    |
764 |                         (append(
    |                         ^
...
767 |                         )),
    |                          ^
    |
help: remove these parentheses
    |
764 ~                         append(
765 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
766 |                             (toString(v0.l0.get().clone())),
767 ~                         ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:765:29
    |
765 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                       ^                                                                 ^
    |
help: remove these parentheses
    |
765 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
765 +                             append((append((append((v6), string(" "))), (v7))), string(" #")),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:766:29
    |
766 | ...                   (toString(v0.l0.get().clone())),
    |                       ^                             ^
    |
help: remove these parentheses
    |
766 -                             (toString(v0.l0.get().clone())),
766 +                             toString(v0.l0.get().clone()),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:765:37
    |
765 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                               ^                                         ^
    |
help: remove these parentheses
    |
765 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
765 +                             (append(append((append((v6), string(" "))), (v7)), string(" #"))),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:765:45
    |
765 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                       ^                         ^
    |
help: remove these parentheses
    |
765 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
765 +                             (append((append(append((v6), string(" ")), (v7))), string(" #"))),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:765:74
    |
765 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                                                    ^  ^
    |
help: remove these parentheses
    |
765 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
765 +                             (append((append((append((v6), string(" "))), v7)), string(" #"))),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:765:53
    |
765 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                               ^  ^
    |
help: remove these parentheses
    |
765 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
765 +                             (append((append((append(v6, string(" "))), (v7))), string(" #"))),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:867:33
    |
867 |         let v4: string = append((v0.l0.get().clone()), (v1));
    |                                 ^                   ^
    |
help: remove these parentheses
    |
867 -         let v4: string = append((v0.l0.get().clone()), (v1));
867 +         let v4: string = append(v0.l0.get().clone(), (v1));
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:867:56
    |
867 |         let v4: string = append((v0.l0.get().clone()), (v1));
    |                                                        ^  ^
    |
help: remove these parentheses
    |
867 -         let v4: string = append((v0.l0.get().clone()), (v1));
867 +         let v4: string = append((v0.l0.get().clone()), v1);
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:983:13
    |
983 |             (append(
    |             ^
...
995 |             )),
    |              ^
    |
help: remove these parentheses
    |
983 ~             append(
984 |                 (append(
...
994 |                 string(" / "),
995 ~             ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:996:13
    |
996 |             (v10),
    |             ^   ^
    |
help: remove these parentheses
    |
996 -             (v10),
996 +             v10,
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:984:17
    |
984 |                 (append(
    |                 ^
...
993 |                 )),
    |                  ^
    |
help: remove these parentheses
    |
984 ~                 append(
985 |                     (append(
...
992 |                     string("file_system.delete_directory_async"),
993 ~                 ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:985:21
    |
985 |                     (append(
    |                     ^
...
991 |                     )),
    |                      ^
    |
help: remove these parentheses
    |
985 ~                     append(
986 |                         (append(
...
990 |                         string(" "),
991 ~                     ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:986:25
    |
986 |                         (append(
    |                         ^
...
989 |                         )),
    |                          ^
    |
help: remove these parentheses
    |
986 ~                         append(
987 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
988 |                             (toString(v0.l0.get().clone())),
989 ~                         ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:987:29
    |
987 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                       ^                                                                 ^
    |
help: remove these parentheses
    |
987 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
987 +                             append((append((append((v6), string(" "))), (v7))), string(" #")),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:988:29
    |
988 | ...                   (toString(v0.l0.get().clone())),
    |                       ^                             ^
    |
help: remove these parentheses
    |
988 -                             (toString(v0.l0.get().clone())),
988 +                             toString(v0.l0.get().clone()),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:987:37
    |
987 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                               ^                                         ^
    |
help: remove these parentheses
    |
987 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
987 +                             (append(append((append((v6), string(" "))), (v7)), string(" #"))),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:987:45
    |
987 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                       ^                         ^
    |
help: remove these parentheses
    |
987 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
987 +                             (append((append(append((v6), string(" ")), (v7))), string(" #"))),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:987:74
    |
987 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                                                    ^  ^
    |
help: remove these parentheses
    |
987 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
987 +                             (append((append((append((v6), string(" "))), v7)), string(" #"))),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:987:53
    |
987 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                               ^  ^
    |
help: remove these parentheses
    |
987 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
987 +                             (append((append((append(v6, string(" "))), (v7))), string(" #"))),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1204:13
     |
1204 |             (append(
     |             ^
...
1216 |             )),
     |              ^
     |
help: remove these parentheses
     |
1204 ~             append(
1205 |                 (append(
 ...
1215 |                 string(" / "),
1216 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1217:13
     |
1217 |             (v11),
     |             ^   ^
     |
help: remove these parentheses
     |
1217 -             (v11),
1217 +             v11,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1205:17
     |
1205 |                 (append(
     |                 ^
...
1214 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
1205 ~                 append(
1206 |                     (append(
 ...
1213 |                     string("file_system.wait_for_file_access"),
1214 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1206:21
     |
1206 |                     (append(
     |                     ^
...
1212 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
1206 ~                     append(
1207 |                         (append(
 ...
1211 |                         string(" "),
1212 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1207:25
     |
1207 |                         (append(
     |                         ^
...
1210 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
1207 ~                         append(
1208 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1209 |                             (toString(v0.l0.get().clone())),
1210 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1208:29
     |
1208 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
1208 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1208 +                             append((append((append((v6), string(" "))), (v7))), string(" #")),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1209:29
     |
1209 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
1209 -                             (toString(v0.l0.get().clone())),
1209 +                             toString(v0.l0.get().clone()),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1208:37
     |
1208 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
1208 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1208 +                             (append(append((append((v6), string(" "))), (v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1208:45
     |
1208 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
1208 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1208 +                             (append((append(append((v6), string(" ")), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1208:74
     |
1208 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
1208 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1208 +                             (append((append((append((v6), string(" "))), v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1208:53
     |
1208 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
1208 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1208 +                             (append((append((append(v6, string(" "))), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1445:13
     |
1445 |             (append(
     |             ^
...
1457 |             )),
     |              ^
     |
help: remove these parentheses
     |
1445 ~             append(
1446 |                 (append(
 ...
1456 |                 string(" / "),
1457 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1458:13
     |
1458 |             (v11),
     |             ^   ^
     |
help: remove these parentheses
     |
1458 -             (v11),
1458 +             v11,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1446:17
     |
1446 |                 (append(
     |                 ^
...
1455 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
1446 ~                 append(
1447 |                     (append(
 ...
1454 |                     string("file_system.read_all_text_async"),
1455 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1447:21
     |
1447 |                     (append(
     |                     ^
...
1453 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
1447 ~                     append(
1448 |                         (append(
 ...
1452 |                         string(" "),
1453 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1448:25
     |
1448 |                         (append(
     |                         ^
...
1451 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
1448 ~                         append(
1449 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1450 |                             (toString(v0.l0.get().clone())),
1451 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1449:29
     |
1449 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
1449 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1449 +                             append((append((append((v6), string(" "))), (v7))), string(" #")),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1450:29
     |
1450 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
1450 -                             (toString(v0.l0.get().clone())),
1450 +                             toString(v0.l0.get().clone()),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1449:37
     |
1449 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
1449 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1449 +                             (append(append((append((v6), string(" "))), (v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1449:45
     |
1449 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
1449 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1449 +                             (append((append(append((v6), string(" ")), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1449:74
     |
1449 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
1449 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1449 +                             (append((append((append((v6), string(" "))), v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1449:53
     |
1449 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
1449 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1449 +                             (append((append((append(v6, string(" "))), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1722:13
     |
1722 |             (append(
     |             ^
...
1734 |             )),
     |              ^
     |
help: remove these parentheses
     |
1722 ~             append(
1723 |                 (append(
 ...
1733 |                 string(" / "),
1734 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1735:13
     |
1735 |             (v9),
     |             ^  ^
     |
help: remove these parentheses
     |
1735 -             (v9),
1735 +             v9,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1723:17
     |
1723 |                 (append(
     |                 ^
...
1732 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
1723 ~                 append(
1724 |                     (append(
 ...
1731 |                     string("file_system.file_delete"),
1732 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1724:21
     |
1724 |                     (append(
     |                     ^
...
1730 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
1724 ~                     append(
1725 |                         (append(
 ...
1729 |                         string(" "),
1730 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1725:25
     |
1725 |                         (append(
     |                         ^
...
1728 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
1725 ~                         append(
1726 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1727 |                             (toString(v0.l0.get().clone())),
1728 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1726:29
     |
1726 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
1726 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1726 +                             append((append((append((v6), string(" "))), (v7))), string(" #")),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1727:29
     |
1727 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
1727 -                             (toString(v0.l0.get().clone())),
1727 +                             toString(v0.l0.get().clone()),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1726:37
     |
1726 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
1726 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1726 +                             (append(append((append((v6), string(" "))), (v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1726:45
     |
1726 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
1726 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1726 +                             (append((append(append((v6), string(" ")), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1726:74
     |
1726 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
1726 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1726 +                             (append((append((append((v6), string(" "))), v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1726:53
     |
1726 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
1726 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1726 +                             (append((append((append(v6, string(" "))), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1906:13
     |
1906 |             (append(
     |             ^
...
1918 |             )),
     |              ^
     |
help: remove these parentheses
     |
1906 ~             append(
1907 |                 (append(
 ...
1917 |                 string(" / "),
1918 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1919:13
     |
1919 |             (v10),
     |             ^   ^
     |
help: remove these parentheses
     |
1919 -             (v10),
1919 +             v10,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1907:17
     |
1907 |                 (append(
     |                 ^
...
1916 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
1907 ~                 append(
1908 |                     (append(
 ...
1915 |                     string("delete_file_async"),
1916 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1908:21
     |
1908 |                     (append(
     |                     ^
...
1914 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
1908 ~                     append(
1909 |                         (append(
 ...
1913 |                         string(" "),
1914 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1909:25
     |
1909 |                         (append(
     |                         ^
...
1912 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
1909 ~                         append(
1910 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1911 |                             (toString(v0.l0.get().clone())),
1912 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1910:29
     |
1910 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
1910 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1910 +                             append((append((append((v6), string(" "))), (v7))), string(" #")),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1911:29
     |
1911 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
1911 -                             (toString(v0.l0.get().clone())),
1911 +                             toString(v0.l0.get().clone()),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1910:37
     |
1910 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
1910 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1910 +                             (append(append((append((v6), string(" "))), (v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1910:45
     |
1910 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
1910 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1910 +                             (append((append(append((v6), string(" ")), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1910:74
     |
1910 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
1910 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1910 +                             (append((append((append((v6), string(" "))), v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1910:53
     |
1910 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
1910 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1910 +                             (append((append((append(v6, string(" "))), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2115:13
     |
2115 |             (append(
     |             ^
...
2127 |             )),
     |              ^
     |
help: remove these parentheses
     |
2115 ~             append(
2116 |                 (append(
 ...
2126 |                 string(" / "),
2127 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2128:13
     |
2128 |             (v11),
     |             ^   ^
     |
help: remove these parentheses
     |
2128 -             (v11),
2128 +             v11,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2116:17
     |
2116 |                 (append(
     |                 ^
...
2125 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
2116 ~                 append(
2117 |                     (append(
 ...
2124 |                     string("move_file_async"),
2125 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2117:21
     |
2117 |                     (append(
     |                     ^
...
2123 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
2117 ~                     append(
2118 |                         (append(
 ...
2122 |                         string(" "),
2123 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2118:25
     |
2118 |                         (append(
     |                         ^
...
2121 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
2118 ~                         append(
2119 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2120 |                             (toString(v0.l0.get().clone())),
2121 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2119:29
     |
2119 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
2119 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2119 +                             append((append((append((v6), string(" "))), (v7))), string(" #")),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2120:29
     |
2120 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
2120 -                             (toString(v0.l0.get().clone())),
2120 +                             toString(v0.l0.get().clone()),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2119:37
     |
2119 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
2119 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2119 +                             (append(append((append((v6), string(" "))), (v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2119:45
     |
2119 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
2119 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2119 +                             (append((append(append((v6), string(" ")), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2119:74
     |
2119 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
2119 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2119 +                             (append((append((append((v6), string(" "))), v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2119:53
     |
2119 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
2119 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2119 +                             (append((append((append(v6, string(" "))), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2314:13
     |
2314 |             (append(
     |             ^
...
2326 |             )),
     |              ^
     |
help: remove these parentheses
     |
2314 ~             append(
2315 |                 (append(
 ...
2325 |                 string(" / "),
2326 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2327:13
     |
2327 |             (v9),
     |             ^  ^
     |
help: remove these parentheses
     |
2327 -             (v9),
2327 +             v9,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2315:17
     |
2315 |                 (append(
     |                 ^
...
2324 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
2315 ~                 append(
2316 |                     (append(
 ...
2323 |                     string("async.run_with_timeout_async"),
2324 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2316:21
     |
2316 |                     (append(
     |                     ^
...
2322 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
2316 ~                     append(
2317 |                         (append(
 ...
2321 |                         string(" "),
2322 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2317:25
     |
2317 |                         (append(
     |                         ^
...
2320 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
2317 ~                         append(
2318 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2319 |                             (toString(v0.l0.get().clone())),
2320 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2318:29
     |
2318 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
2318 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2318 +                             append((append((append((v6), string(" "))), (v7))), string(" #")),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2319:29
     |
2319 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
2319 -                             (toString(v0.l0.get().clone())),
2319 +                             toString(v0.l0.get().clone()),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2318:37
     |
2318 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
2318 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2318 +                             (append(append((append((v6), string(" "))), (v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2318:45
     |
2318 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
2318 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2318 +                             (append((append(append((v6), string(" ")), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2318:74
     |
2318 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
2318 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2318 +                             (append((append((append((v6), string(" "))), v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2318:53
     |
2318 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
2318 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2318 +                             (append((append((append(v6, string(" "))), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2490:13
     |
2490 |             (append(
     |             ^
...
2502 |             )),
     |              ^
     |
help: remove these parentheses
     |
2490 ~             append(
2491 |                 (append(
 ...
2501 |                 string(" / "),
2502 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2503:13
     |
2503 |             (v10),
     |             ^   ^
     |
help: remove these parentheses
     |
2503 -             (v10),
2503 +             v10,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2491:17
     |
2491 |                 (append(
     |                 ^
...
2500 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
2491 ~                 append(
2492 |                     (append(
 ...
2499 |                     string("async.run_with_timeout_async**"),
2500 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2492:21
     |
2492 |                     (append(
     |                     ^
...
2498 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
2492 ~                     append(
2493 |                         (append(
 ...
2497 |                         string(" "),
2498 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2493:25
     |
2493 |                         (append(
     |                         ^
...
2496 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
2493 ~                         append(
2494 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2495 |                             (toString(v0.l0.get().clone())),
2496 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2494:29
     |
2494 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
2494 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2494 +                             append((append((append((v6), string(" "))), (v7))), string(" #")),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2495:29
     |
2495 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
2495 -                             (toString(v0.l0.get().clone())),
2495 +                             toString(v0.l0.get().clone()),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2494:37
     |
2494 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
2494 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2494 +                             (append(append((append((v6), string(" "))), (v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2494:45
     |
2494 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
2494 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2494 +                             (append((append(append((v6), string(" ")), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2494:74
     |
2494 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
2494 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2494 +                             (append((append((append((v6), string(" "))), v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2494:53
     |
2494 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
2494 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2494 +                             (append((append((append(v6, string(" "))), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2679:13
     |
2679 |             (append(
     |             ^
...
2691 |             )),
     |              ^
     |
help: remove these parentheses
     |
2679 ~             append(
2680 |                 (append(
 ...
2690 |                 string(" / "),
2691 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2692:13
     |
2692 |             (v10),
     |             ^   ^
     |
help: remove these parentheses
     |
2692 -             (v10),
2692 +             v10,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2680:17
     |
2680 |                 (append(
     |                 ^
...
2689 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
2680 ~                 append(
2681 |                     (append(
 ...
2688 |                     string("file_system.read_all_text_retry_async"),
2689 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2681:21
     |
2681 |                     (append(
     |                     ^
...
2687 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
2681 ~                     append(
2682 |                         (append(
 ...
2686 |                         string(" "),
2687 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2682:25
     |
2682 |                         (append(
     |                         ^
...
2685 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
2682 ~                         append(
2683 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2684 |                             (toString(v0.l0.get().clone())),
2685 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2683:29
     |
2683 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
2683 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2683 +                             append((append((append((v6), string(" "))), (v7))), string(" #")),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2684:29
     |
2684 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
2684 -                             (toString(v0.l0.get().clone())),
2684 +                             toString(v0.l0.get().clone()),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2683:37
     |
2683 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
2683 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2683 +                             (append(append((append((v6), string(" "))), (v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2683:45
     |
2683 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
2683 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2683 +                             (append((append(append((v6), string(" ")), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2683:74
     |
2683 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
2683 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2683 +                             (append((append((append((v6), string(" "))), v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2683:53
     |
2683 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
2683 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2683 +                             (append((append((append(v6, string(" "))), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3027:13
     |
3027 |             (append(
     |             ^
...
3039 |             )),
     |              ^
     |
help: remove these parentheses
     |
3027 ~             append(
3028 |                 (append(
 ...
3038 |                 string(" / "),
3039 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3040:13
     |
3040 |             (v10),
     |             ^   ^
     |
help: remove these parentheses
     |
3040 -             (v10),
3040 +             v10,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3028:17
     |
3028 |                 (append(
     |                 ^
...
3037 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
3028 ~                 append(
3029 |                     (append(
 ...
3036 |                     string("file_system.create_dir"),
3037 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3029:21
     |
3029 |                     (append(
     |                     ^
...
3035 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
3029 ~                     append(
3030 |                         (append(
 ...
3034 |                         string(" "),
3035 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3030:25
     |
3030 |                         (append(
     |                         ^
...
3033 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
3030 ~                         append(
3031 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3032 |                             (toString(v0.l0.get().clone())),
3033 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3031:29
     |
3031 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
3031 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3031 +                             append((append((append((v6), string(" "))), (v7))), string(" #")),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3032:29
     |
3032 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
3032 -                             (toString(v0.l0.get().clone())),
3032 +                             toString(v0.l0.get().clone()),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3031:37
     |
3031 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
3031 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3031 +                             (append(append((append((v6), string(" "))), (v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3031:45
     |
3031 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
3031 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3031 +                             (append((append(append((v6), string(" ")), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3031:74
     |
3031 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
3031 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3031 +                             (append((append((append((v6), string(" "))), v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3031:53
     |
3031 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
3031 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3031 +                             (append((append((append(v6, string(" "))), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3187:13
     |
3187 |             (append(
     |             ^
...
3199 |             )),
     |              ^
     |
help: remove these parentheses
     |
3187 ~             append(
3188 |                 (append(
 ...
3198 |                 string(" / "),
3199 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3200:13
     |
3200 |             (v9),
     |             ^  ^
     |
help: remove these parentheses
     |
3200 -             (v9),
3200 +             v9,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3188:17
     |
3188 |                 (append(
     |                 ^
...
3197 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
3188 ~                 append(
3189 |                     (append(
 ...
3196 |                     string("file_system.create_dir"),
3197 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3189:21
     |
3189 |                     (append(
     |                     ^
...
3195 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
3189 ~                     append(
3190 |                         (append(
 ...
3194 |                         string(" "),
3195 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3190:25
     |
3190 |                         (append(
     |                         ^
...
3193 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
3190 ~                         append(
3191 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3192 |                             (toString(v0.l0.get().clone())),
3193 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3191:29
     |
3191 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
3191 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3191 +                             append((append((append((v6), string(" "))), (v7))), string(" #")),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3192:29
     |
3192 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
3192 -                             (toString(v0.l0.get().clone())),
3192 +                             toString(v0.l0.get().clone()),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3191:37
     |
3191 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
3191 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3191 +                             (append(append((append((v6), string(" "))), (v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3191:45
     |
3191 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
3191 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3191 +                             (append((append(append((v6), string(" ")), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3191:74
     |
3191 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
3191 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3191 +                             (append((append((append((v6), string(" "))), v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3191:53
     |
3191 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
3191 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3191 +                             (append((append((append(v6, string(" "))), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3381:13
     |
3381 |             (append(
     |             ^
...
3393 |             )),
     |              ^
     |
help: remove these parentheses
     |
3381 ~             append(
3382 |                 (append(
 ...
3392 |                 string(" / "),
3393 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3394:13
     |
3394 |             (v10),
     |             ^   ^
     |
help: remove these parentheses
     |
3394 -             (v10),
3394 +             v10,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3382:17
     |
3382 |                 (append(
     |                 ^
...
3391 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
3382 ~                 append(
3383 |                     (append(
 ...
3390 |                     string("file_system.create_dir"),
3391 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3383:21
     |
3383 |                     (append(
     |                     ^
...
3389 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
3383 ~                     append(
3384 |                         (append(
 ...
3388 |                         string(" "),
3389 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3384:25
     |
3384 |                         (append(
     |                         ^
...
3387 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
3384 ~                         append(
3385 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3386 |                             (toString(v0.l0.get().clone())),
3387 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3385:29
     |
3385 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
3385 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3385 +                             append((append((append((v6), string(" "))), (v7))), string(" #")),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3386:29
     |
3386 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
3386 -                             (toString(v0.l0.get().clone())),
3386 +                             toString(v0.l0.get().clone()),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3385:37
     |
3385 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
3385 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3385 +                             (append(append((append((v6), string(" "))), (v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3385:45
     |
3385 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
3385 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3385 +                             (append((append(append((v6), string(" ")), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3385:74
     |
3385 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
3385 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3385 +                             (append((append((append((v6), string(" "))), v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3385:53
     |
3385 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
3385 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3385 +                             (append((append((append(v6, string(" "))), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3573:75
     |
3573 |             (File_system::method107(v0, v1.clone(), (v2) + 1_i32))(append((v3), (v1)))
     |                                                                           ^  ^
     |
help: remove these parentheses
     |
3573 -             (File_system::method107(v0, v1.clone(), (v2) + 1_i32))(append((v3), (v1)))
3573 +             (File_system::method107(v0, v1.clone(), (v2) + 1_i32))(append(v3, (v1)))
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3573:81
     |
3573 |             (File_system::method107(v0, v1.clone(), (v2) + 1_i32))(append((v3), (v1)))
     |                                                                                 ^  ^
     |
help: remove these parentheses
     |
3573 -             (File_system::method107(v0, v1.clone(), (v2) + 1_i32))(append((v3), (v1)))
3573 +             (File_system::method107(v0, v1.clone(), (v2) + 1_i32))(append((v3), v1))
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3587:13
     |
3587 |             ((File_system::method107(32_i32 - (length(v0.clone())), v3, 0_i32))(string(""))),
     |             ^                                                                              ^
     |
help: remove these parentheses
     |
3587 -             ((File_system::method107(32_i32 - (length(v0.clone())), v3, 0_i32))(string(""))),
3587 +             (File_system::method107(32_i32 - (length(v0.clone())), v3, 0_i32))(string("")),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3588:13
     |
3588 |             (v0),
     |             ^  ^
     |
help: remove these parentheses
     |
3588 -             (v0),
3588 +             v0,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3591:13
     |
3591 |             (append(
     |             ^
...
3612 |             )),
     |              ^
     |
help: remove these parentheses
     |
3591 ~             append(
3592 |                 (append(
 ...
3611 |                 string("-"),
3612 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3613:13
     |
3613 |             (getSlice(v13, Some(20_i32), Some((32_i32) - 1_i32))),
     |             ^                                                   ^
     |
help: remove these parentheses
     |
3613 -             (getSlice(v13, Some(20_i32), Some((32_i32) - 1_i32))),
3613 +             getSlice(v13, Some(20_i32), Some((32_i32) - 1_i32)),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3592:17
     |
3592 |                 (append(
     |                 ^
...
3610 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
3592 ~                 append(
3593 |                     (append(
 ...
3609 |                     (getSlice(v13.clone(), Some(16_i32), Some((20_i32) - 1_i32))),
3610 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3593:21
     |
3593 |                     (append(
     |                     ^
...
3608 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
3593 ~                     append(
3594 |                         (append(
 ...
3607 |                         string("-"),
3608 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3609:21
     |
3609 |                     (getSlice(v13.clone(), Some(16_i32), Some((20_i32) - 1_i32))),
     |                     ^                                                           ^
     |
help: remove these parentheses
     |
3609 -                     (getSlice(v13.clone(), Some(16_i32), Some((20_i32) - 1_i32))),
3609 +                     getSlice(v13.clone(), Some(16_i32), Some((20_i32) - 1_i32)),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3594:25
     |
3594 |                         (append(
     |                         ^
...
3606 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
3594 ~                         append(
3595 |                             (append(
 ...
3605 |                             (getSlice(v13.clone(), Some(12_i32), Some((16_i32) - 1_i32))),
3606 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3595:29
     |
3595 | ...                   (append(
     |                       ^
...
3604 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
3595 ~                             append(
3596 |                                 (append(
 ...
3603 |                                 string("-"),
3604 ~                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3605:29
     |
3605 | ...                   (getSlice(v13.clone(), Some(12_i32), Some((16_i32) - 1_i32))),
     |                       ^                                                           ^
     |
help: remove these parentheses
     |
3605 -                             (getSlice(v13.clone(), Some(12_i32), Some((16_i32) - 1_i32))),
3605 +                             getSlice(v13.clone(), Some(12_i32), Some((16_i32) - 1_i32)),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3596:33
     |
3596 | ...                   (append(
     |                       ^
...
3602 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
3596 ~                                 append(
3597 |                                     (append(
 ...
3601 |                                     (getSlice(v13.clone(), Some(8_i32), Some((12_i32) - 1_i32))),
3602 ~                                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3597:37
     |
3597 | ...                   (append(
     |                       ^
...
3600 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
3597 ~                                     append(
3598 |                                         (getSlice(v13.clone(), Some(0_i32), Some((8_i32) - 1_i32))),
3599 |                                         string("-"),
3600 ~                                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3601:37
     |
3601 | ...                   (getSlice(v13.clone(), Some(8_i32), Some((12_i32) - 1_i32))),
     |                       ^                                                          ^
     |
help: remove these parentheses
     |
3601 -                                     (getSlice(v13.clone(), Some(8_i32), Some((12_i32) - 1_i32))),
3601 +                                     getSlice(v13.clone(), Some(8_i32), Some((12_i32) - 1_i32)),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3598:41
     |
3598 | ...                   (getSlice(v13.clone(), Some(0_i32), Some((8_i32) - 1_i32))),
     |                       ^                                                         ^
     |
help: remove these parentheses
     |
3598 -                                         (getSlice(v13.clone(), Some(0_i32), Some((8_i32) - 1_i32))),
3598 +                                         getSlice(v13.clone(), Some(0_i32), Some((8_i32) - 1_i32)),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around `break` value
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4476:31
     |
4476 |             break '_method139 (if v3(File_system::method88(v4.get().clone(), v0.get().clone())) {
     |                               ^
...
4517 |             });
     |              ^
     |
help: remove these parentheses
     |
4476 ~             break '_method139 if v3(File_system::method88(v4.get().clone(), v0.get().clone())) {
4477 |                 File_system::US18::US18_0(v4.get().clone())
 ...
4516 |                 }
4517 ~             };
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4501:25
     |
4501 |                         (concat(new_array(&[
     |                         ^
...
4508 |                         ]))),
     |                            ^
     |
help: remove these parentheses
     |
4501 ~                         concat(new_array(&[
4502 |                             string("file_system.find_parent / No parent for "),
 ...
4507 |                             },
4508 ~                         ])),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4545:21
     |
4545 |                     (concat(new_array(&[
     |                     ^
...
4548 |                     ]))),
     |                        ^
     |
help: remove these parentheses
     |
4545 ~                     concat(new_array(&[
4546 |                         string("file_system.find_parent / No parent for "),
4547 |                         if v2 { string("file") } else { string("dir") },
4548 ~                     ])),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4632:13
     |
4632 |             (append(
     |             ^
...
4644 |             )),
     |              ^
     |
help: remove these parentheses
     |
4632 ~             append(
4633 |                 (append(
 ...
4643 |                 string(" / "),
4644 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4645:13
     |
4645 |             (v10),
     |             ^   ^
     |
help: remove these parentheses
     |
4645 -             (v10),
4645 +             v10,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4633:17
     |
4633 |                 (append(
     |                 ^
...
4642 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
4633 ~                 append(
4634 |                     (append(
 ...
4641 |                     string("file_system.get_workspace_root"),
4642 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4634:21
     |
4634 |                     (append(
     |                     ^
...
4640 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
4634 ~                     append(
4635 |                         (append(
 ...
4639 |                         string(" "),
4640 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4635:25
     |
4635 |                         (append(
     |                         ^
...
4638 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
4635 ~                         append(
4636 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
4637 |                             (toString(v0.l0.get().clone())),
4638 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4636:29
     |
4636 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
4636 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
4636 +                             append((append((append((v6), string(" "))), (v7))), string(" #")),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4637:29
     |
4637 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
4637 -                             (toString(v0.l0.get().clone())),
4637 +                             toString(v0.l0.get().clone()),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4636:37
     |
4636 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
4636 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
4636 +                             (append(append((append((v6), string(" "))), (v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4636:45
     |
4636 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
4636 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
4636 +                             (append((append(append((v6), string(" ")), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4636:74
     |
4636 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
4636 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
4636 +                             (append((append((append((v6), string(" "))), v7)), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4636:53
     |
4636 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
4636 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
4636 +                             (append((append((append(v6, string(" "))), (v7))), string(" #"))),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
  --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./sm.rs:94:70
   |
94 |             (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1)))
   |                                                                      ^    ^
   |
help: remove these parentheses
   |
94 -             (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1)))
94 +             (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append(v3_1, (v1_1)))
   |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
  --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./sm.rs:94:78
   |
94 |             (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1)))
   |                                                                              ^    ^
   |
help: remove these parentheses
   |
94 -             (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1)))
94 +             (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), v1_1))
   |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./sm.rs:108:13
    |
108 |             ((Sm::method0((v0_1) - (length(v2_1.clone())), v5_1, 0_i32))(string(""))),
    |             ^                                                                       ^
    |
help: remove these parentheses
    |
108 -             ((Sm::method0((v0_1) - (length(v2_1.clone())), v5_1, 0_i32))(string(""))),
108 +             (Sm::method0((v0_1) - (length(v2_1.clone())), v5_1, 0_i32))(string("")),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./sm.rs:109:13
    |
109 |             (v2_1),
    |             ^    ^
    |
help: remove these parentheses
    |
109 -             (v2_1),
109 +             v2_1,
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./sm.rs:128:13
    |
128 |             (v2_1.clone()),
    |             ^            ^
    |
help: remove these parentheses
    |
128 -             (v2_1.clone()),
128 +             v2_1.clone(),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./sm.rs:129:13
    |
129 |             ((Sm::method0((v0_1) - (length(v2_1)), v5_1, 0_i32))(string(""))),
    |             ^                                                               ^
    |
help: remove these parentheses
    |
129 -             ((Sm::method0((v0_1) - (length(v2_1)), v5_1, 0_i32))(string(""))),
129 +             (Sm::method0((v0_1) - (length(v2_1)), v5_1, 0_i32))(string("")),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./sm.rs:345:17
    |
345 |                 (getSlice(v1_1, Some(0_i32), Some((v0_1) - 1_i32))),
    |                 ^                                                 ^
    |
help: remove these parentheses
    |
345 -                 (getSlice(v1_1, Some(0_i32), Some((v0_1) - 1_i32))),
345 +                 getSlice(v1_1, Some(0_i32), Some((v0_1) - 1_i32)),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./sm.rs:410:24
    |
410 |                 append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue));
    |                        ^                                            ^
    |
help: remove these parentheses
    |
410 -                 append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue));
410 +                 append(append((v1_1[v9_1].clone()), (matchValue_1)), (matchValue));
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./sm.rs:410:72
    |
410 |                 append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue));
    |                                                                        ^          ^
    |
help: remove these parentheses
    |
410 -                 append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue));
410 +                 append((append((v1_1[v9_1].clone()), (matchValue_1))), matchValue);
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./sm.rs:410:32
    |
410 |                 append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue));
    |                                ^                  ^
    |
help: remove these parentheses
    |
410 -                 append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue));
410 +                 append((append(v1_1[v9_1].clone(), (matchValue_1))), (matchValue));
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./sm.rs:410:54
    |
410 |                 append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue));
    |                                                      ^            ^
    |
help: remove these parentheses
    |
410 -                 append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue));
410 +                 append((append((v1_1[v9_1].clone()), matchValue_1)), (matchValue));
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:739:33
    |
739 |         let v4: string = append((v0_1.l0.get().clone()), (v1_1));
    |                                 ^                     ^
    |
help: remove these parentheses
    |
739 -         let v4: string = append((v0_1.l0.get().clone()), (v1_1));
739 +         let v4: string = append(v0_1.l0.get().clone(), (v1_1));
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:739:58
    |
739 |         let v4: string = append((v0_1.l0.get().clone()), (v1_1));
    |                                                          ^    ^
    |
help: remove these parentheses
    |
739 -         let v4: string = append((v0_1.l0.get().clone()), (v1_1));
739 +         let v4: string = append((v0_1.l0.get().clone()), v1_1);
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:843:13
    |
843 |             (append(
    |             ^
...
855 |             )),
    |              ^
    |
help: remove these parentheses
    |
843 ~             append(
844 |                 (append(
...
854 |                 string(" / "),
855 ~             ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:856:13
    |
856 |             (v11),
    |             ^   ^
    |
help: remove these parentheses
    |
856 -             (v11),
856 +             v11,
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:844:17
    |
844 |                 (append(
    |                 ^
...
853 |                 )),
    |                  ^
    |
help: remove these parentheses
    |
844 ~                 append(
845 |                     (append(
...
852 |                     string("crypto.hash_to_port"),
853 ~                 ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:845:21
    |
845 |                     (append(
    |                     ^
...
851 |                     )),
    |                      ^
    |
help: remove these parentheses
    |
845 ~                     append(
846 |                         (append(
...
850 |                         string(" "),
851 ~                     ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:846:25
    |
846 |                         (append(
    |                         ^
...
849 |                         )),
    |                          ^
    |
help: remove these parentheses
    |
846 ~                         append(
847 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
848 |                             (toString(v0_1.l0.get().clone())),
849 ~                         ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:847:29
    |
847 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                       ^                                                                 ^
    |
help: remove these parentheses
    |
847 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
847 +                             append((append((append((v6), string(" "))), (v7))), string(" #")),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:848:29
    |
848 | ...                   (toString(v0_1.l0.get().clone())),
    |                       ^                               ^
    |
help: remove these parentheses
    |
848 -                             (toString(v0_1.l0.get().clone())),
848 +                             toString(v0_1.l0.get().clone()),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:847:37
    |
847 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                               ^                                         ^
    |
help: remove these parentheses
    |
847 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
847 +                             (append(append((append((v6), string(" "))), (v7)), string(" #"))),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:847:45
    |
847 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                       ^                         ^
    |
help: remove these parentheses
    |
847 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
847 +                             (append((append(append((v6), string(" ")), (v7))), string(" #"))),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:847:74
    |
847 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                                                    ^  ^
    |
help: remove these parentheses
    |
847 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
847 +                             (append((append((append((v6), string(" "))), v7)), string(" #"))),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:847:53
    |
847 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                               ^  ^
    |
help: remove these parentheses
    |
847 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
847 +                             (append((append((append(v6, string(" "))), (v7))), string(" #"))),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:670:33
    |
670 |         let v4: string = append((v0.l0.get().clone()), (v1));
    |                                 ^                   ^
    |
help: remove these parentheses
    |
670 -         let v4: string = append((v0.l0.get().clone()), (v1));
670 +         let v4: string = append(v0.l0.get().clone(), (v1));
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:670:56
    |
670 |         let v4: string = append((v0.l0.get().clone()), (v1));
    |                                                        ^  ^
    |
help: remove these parentheses
    |
670 -         let v4: string = append((v0.l0.get().clone()), (v1));
670 +         let v4: string = append((v0.l0.get().clone()), v1);
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:762:13
    |
762 |             (append(
    |             ^
...
774 |             )),
    |              ^
    |
help: remove these parentheses
    |
762 ~             append(
763 |                 (append(
...
773 |                 string(" / "),
774 ~             ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:775:13
    |
775 |             (v10),
    |             ^   ^
    |
help: remove these parentheses
    |
775 -             (v10),
775 +             v10,
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:763:17
    |
763 |                 (append(
    |                 ^
...
772 |                 )),
    |                  ^
    |
help: remove these parentheses
    |
763 ~                 append(
764 |                     (append(
...
771 |                     string("common.retry_fn"),
772 ~                 ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:764:21
    |
764 |                     (append(
    |                     ^
...
770 |                     )),
    |                      ^
    |
help: remove these parentheses
    |
764 ~                     append(
765 |                         (append(
...
769 |                         string(" "),
770 ~                     ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:765:25
    |
765 |                         (append(
    |                         ^
...
768 |                         )),
    |                          ^
    |
help: remove these parentheses
    |
765 ~                         append(
766 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
767 |                             (toString(v0.l0.get().clone())),
768 ~                         ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:766:29
    |
766 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                       ^                                                                 ^
    |
help: remove these parentheses
    |
766 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
766 +                             append((append((append((v6), string(" "))), (v7))), string(" #")),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:767:29
    |
767 | ...                   (toString(v0.l0.get().clone())),
    |                       ^                             ^
    |
help: remove these parentheses
    |
767 -                             (toString(v0.l0.get().clone())),
767 +                             toString(v0.l0.get().clone()),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:766:37
    |
766 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                               ^                                         ^
    |
help: remove these parentheses
    |
766 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
766 +                             (append(append((append((v6), string(" "))), (v7)), string(" #"))),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:766:45
    |
766 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                       ^                         ^
    |
help: remove these parentheses
    |
766 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
766 +                             (append((append(append((v6), string(" ")), (v7))), string(" #"))),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:766:74
    |
766 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                                                    ^  ^
    |
help: remove these parentheses
    |
766 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
766 +                             (append((append((append((v6), string(" "))), v7)), string(" #"))),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:766:53
    |
766 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                               ^  ^
    |
help: remove these parentheses
    |
766 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
766 +                             (append((append((append(v6, string(" "))), (v7))), string(" #"))),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around `break` value
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:901:29
    |
901 |             break '_method8 ({
    |                             ^
...
938 |             });
    |              ^
    |
help: remove these parentheses
    |
901 ~             break '_method8 {
902 |                 let result: LrcPtr<MutCell<Common::US7>> = refCell(Common::US7::US7_1);
...
937 |                 }
938 ~             };
    |
System.Management.Automation.RemoteException
warning: `plot` (lib) generated 479 warnings (run `cargo fix --lib -p plot` to apply 479 suggestions)
    Finished `release` profile [optimized] target(s) in 20.70s
In [ ]:
{ pwsh ../apps/perf/build.ps1 } | Invoke-Block
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Perf.dib", "--retries", "3"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None; stderr = true } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ # Perf (Polyglot)
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> 
> open testing
> open benchmark
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #if !INTERACTIVE
> open Lib
> #endif
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## TestCaseResult
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type TestCaseResult =
>     {
>         Input: string
>         Expected: string
>         Result: string
>         TimeList: int64 list
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## run
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let run count (solutions: (string * ('TInput -> 'TExpected)) list) (input, 
> expected) =
>     let inputStr =
>         match box input with
>         | :? System.Collections.ICollection as input ->
>             System.Linq.Enumerable.Cast<obj> input
>             |> Seq.map string
>             |> SpiralSm.concat ","
>         | _ -> input.ToString ()
> 
>     printfn ""
>     printfn $"Solution: {inputStr}  "
> 
>     let performanceInvoke (fn: unit -> 'T) =
>         GC.Collect ()
>         let stopwatch = System.Diagnostics.Stopwatch ()
>         stopwatch.Start ()
>         let time1 = stopwatch.ElapsedMilliseconds
> 
>         let result =
>             [[| 0 .. count |]]
>             |> Array.Parallel.map (fun _ ->
>                 fn ()
>             )
>             |> Array.last
> 
>         let time2 = stopwatch.ElapsedMilliseconds - time1
> 
>         result, time2
> 
>     let resultsWithTime =
>         solutions
>         |> List.mapi (fun i (testName, solution) ->
>             let result, time = performanceInvoke (fun () -> solution input)
>             printfn $"Test case %d{i + 1}. %s{testName}. Time: %A{time}  "
>             result, time
>         )
> 
> 
>     match resultsWithTime |> List.map fst with
>     | ([[]] | [[ _ ]]) -> ()
>     | (head :: tail) when tail |> List.forall ((=) head) -> ()
>     | results -> failwithf $"Challenge error: %A{results}"
> 
>     {
>         Input = inputStr
>         Expected = expected.ToString ()
>         Result = resultsWithTime |> Seq.map fst |> Seq.head |> _.ToString()
>         TimeList = resultsWithTime |> List.map snd
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## runAll
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let runAll testName count (solutions: (string * ('TInput -> 'TExpected)) list) 
> testCases =
>     printfn ""
>     printfn ""
>     printfn $"Test: {testName}"
>     testCases
>     |> Seq.map (run count solutions)
>     |> Seq.toList
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## sortResultList
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let sortResultList resultList =
>     let table =
>         let rows =
>             resultList
>             |> List.map (fun result ->
>                 let best =
>                     result.TimeList
>                     |> List.mapi (fun i time ->
>                         i + 1, time
>                     )
>                     |> List.sortBy snd
>                     |> List.head
>                     |> _.ToString()
>                 let row =
>                     [[
>                         result.Input
>                         result.Expected
>                         result.Result
>                         best
>                     ]]
>                 let color =
>                     match result.Expected = result.Result with
>                     | true -> Some ConsoleColor.DarkGreen
>                     | false -> Some ConsoleColor.DarkRed
>                 row, color
>             )
>         let header =
>             [[
>                 [[
>                     "Input"
>                     "Expected"
>                     "Result"
>                     "Best"
>                 ]]
>                 [[
>                     "---"
>                     "---"
>                     "---"
>                     "---"
>                 ]]
>             ]]
>             |> List.map (fun row -> row, None)
>         header @ rows
> 
>     let formattedTable =
>         let lengthMap =
>             table
>             |> List.map fst
>             |> List.transpose
>             |> List.map (fun column ->
>                 column
>                 |> List.map String.length
>                 |> List.sortDescending
>                 |> List.tryHead
>                 |> Option.defaultValue 0
>             )
>             |> List.indexed
>             |> Map.ofList
>         table
>         |> List.map (fun (row, color) ->
>             let newRow =
>                 row
>                 |> List.mapi (fun i cell ->
>                     cell.PadRight lengthMap.[[i]]
>                 )
>             newRow, color
>         )
> 
>     printfn ""
>     formattedTable
>     |> List.iter (fun (row, color) ->
>         match color with
>         | Some color -> Console.ForegroundColor <- color
>         | None -> Console.ResetColor ()
> 
>         printfn "%s" (String.Join ("\t| ", row))
> 
>         Console.ResetColor ()
>     )
> 
>     let averages =
>         resultList
>         |> List.map (fun result -> result.TimeList |> List.map float)
>         |> List.transpose
>         |> List.map List.average
>         |> List.map int64
>         |> List.indexed
> 
>     printfn ""
>     printfn "Average Ranking  "
>     averages
>     |> List.sortBy snd
>     |> List.iter (fun (i, avg) ->
>         printfn $"Test case %d{i + 1}. Average Time: %A{avg}  "
>     )
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let mutable _count =
>     if ("CI" |> System.Environment.GetEnvironmentVariable |> fun x -> $"%A{x}") 
> <> "<null>"
>     then 2000000
>     else 2000
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl is_fast () =
>     false
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## empty3Tests
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ Test: Empty3
> │ 
> │ Solution: (a, a)
> │ Test case 1. A. Time: 91L
> │ 
> │ Solution: (a, a)
> │ Test case 1. A. Time: 56L
> │ 
> │ Input  | Expected      | Result | Best
> │ ---    | ---           | ---    | ---
> │ (a, a) | a             | a      | (1, 91)
> │ (a, a) | a             | a      | (1, 56)
> │ 
> │ Averages
> │ Test case 1. Average Time: 73L
> │ 
> │ Ranking
> │ Test case 1. Average Time: 73L
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let solutions = [[
>     "A",
>     fun (a, _b) ->
>         a
> ]]
> let testCases = seq {
>     ("a", "a"), "a"
>     ("a", "a"), "a"
> }
> let rec empty3Tests = runAll (nameof empty3Tests) _count solutions testCases
> empty3Tests
> |> sortResultList
> 
> ── [ 409.42ms - stdout ] ───────────────────────────────────────────────────────
> │ 
> │ 
> │ Test: empty3Tests
> │ 
> │ Solution: (a, a)  
> │ Test case 1. A. Time: 37L  
> │ 
> │ Solution: (a, a)  
> │ Test case 1. A. Time: 27L  
> │ 
> │ Input 	| Expected	| Result	| Best   
> │ ---   	| ---     	| ---   	| ---    
> │ (a, a)	| a       	| a     	| (1, 37)
> │ (a, a)	| a       	| a     	| (1, 27)
> │ 
> │ Average Ranking  
> │ Test case 1. Average Time: 32L  
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## empty2Tests
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ Test: Empty2
> │ 
> │ Solution: (a, a)
> │ Test case 1. A. Time: 59L
> │ 
> │ Solution: (a, a)
> │ Test case 1. A. Time: 53L
> │ 
> │ Input   | Expected        | Result  | Best
> │ ---     | ---             | ---     | ---
> │ (a, a)  | a               | a       | (1, 59)
> │ (a, a)  | a               | a       | (1, 53)
> │ 
> │ Averages
> │ Test case 1. Average Time: 56L
> │ 
> │ Ranking
> │ Test case 1. Average Time: 56L
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let solutions = [[
>     "A",
>     fun (a, _b) ->
>         a
> ]]
> let testCases = seq {
>     ("a", "a"), "a"
>     ("a", "a"), "a"
> }
> let rec empty2Tests = runAll (nameof empty2Tests) _count solutions testCases
> empty2Tests
> |> sortResultList
> 
> ── [ 261.46ms - stdout ] ───────────────────────────────────────────────────────
> │ 
> │ 
> │ Test: empty2Tests
> │ 
> │ Solution: (a, a)  
> │ Test case 1. A. Time: 28L  
> │ 
> │ Solution: (a, a)  
> │ Test case 1. A. Time: 26L  
> │ 
> │ Input 	| Expected	| Result	| Best   
> │ ---   	| ---     	| ---   	| ---    
> │ (a, a)	| a       	| a     	| (1, 28)
> │ (a, a)	| a       	| a     	| (1, 26)
> │ 
> │ Average Ranking  
> │ Test case 1. Average Time: 27L  
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## emptyTests
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ Test: Empty
> │ 
> │ Solution: 0
> │ Test case 1. A. Time: 61L
> │ 
> │ Solution: 2
> │ Test case 1. A. Time: 62L
> │ 
> │ Solution: 5
> │ Test case 1. A. Time: 70L
> │ 
> │ Input   | Expected        | Result  | Best
> │ ---     | ---             | ---     | ---
> │ 0       | 0               | 0       | (1, 61)
> │ 2       | 2               | 2       | (1, 62)
> │ 5       | 5               | 5       | (1, 70)
> │ 
> │ Averages
> │ Test case 1. Average Time: 64L
> │ 
> │ Ranking
> │ Test case 1. Average Time: 64L
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let solutions = [[
>     "A",
>     fun n ->
>         n + 0
> ]]
> let testCases = seq {
>     0, 0
>     2, 2
>     5, 5
> }
> let rec emptyTests = runAll (nameof emptyTests) _count solutions testCases
> emptyTests
> |> sortResultList
> 
> ── [ 416.09ms - stdout ] ───────────────────────────────────────────────────────
> │ 
> │ 
> │ Test: emptyTests
> │ 
> │ Solution: 0  
> │ Test case 1. A. Time: 25L  
> │ 
> │ Solution: 2  
> │ Test case 1. A. Time: 24L  
> │ 
> │ Solution: 5  
> │ Test case 1. A. Time: 32L  
> │ 
> │ Input	| Expected	| Result	| Best   
> │ ---  	| ---     	| ---   	| ---    
> │ 0    	| 0       	| 0     	| (1, 25)
> │ 2    	| 2       	| 2     	| (1, 24)
> │ 5    	| 5       	| 5     	| (1, 32)
> │ 
> │ Average Ranking  
> │ Test case 1. Average Time: 27L  
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## uniqueLettersTests
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ Test: UniqueLetters
> │ 
> │ Solution: abc
> │ Test case 1. A. Time: 1512L
> │ Test case 2. B. Time: 1947L
> │ Test case 3. C. Time: 2023L
> │ Test case 4. D. Time: 1358L
> │ Test case 5. E. Time: 1321L
> │ Test case 6. F. Time: 1346L
> │ Test case 7. G. Time: 1304L
> │ Test case 8. H. Time: 1383L
> │ Test case 9. I. Time: 1495L
> │ Test case 10. J. Time: 1245L
> │ Test case 11. K. Time: 1219L
> │ 
> │ Solution: accabb
> │ Test case 1. A. Time: 1648L
> │ Test case 2. B. Time: 2061L
> │ Test case 3. C. Time: 2413L
> │ Test case 4. D. Time: 1561L
> │ Test case 5. E. Time: 1593L
> │ Test case 6. F. Time: 1518L
> │ Test case 7. G. Time: 1415L
> │ Test case 8. H. Time: 1510L
> │ Test case 9. I. Time: 1445L
> │ Test case 10. J. Time: 1636L
> │ Test case 11. K. Time: 1317L
> │ 
> │ Solution: pprrqqpp
> │ Test case 1. A. Time: 2255L
> │ Test case 2. B. Time: 2408L
> │ Test case 3. C. Time: 2393L
> │ Test case 4. D. Time: 1675L
> │ Test case 5. E. Time: 1911L
> │ Test case 6. F. Time: 2126L
> │ Test case 7. G. Time: 1504L
> │ Test case 8. H. Time: 1715L
> │ Test case 9. I. Time: 1537L
> │ Test case 10. J. Time: 1522L
> │ Test case 11. K. Time: 1322L
> │ 
> │ Solution: 
> aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb
> │ Test case 1. A. Time: 13073L
> │ Test case 2. B. Time: 11519L
> │ Test case 3. C. Time: 8373L
> │ Test case 4. D. Time: 5860L
> │ Test case 5. E. Time: 6490L
> │ Test case 6. F. Time: 6325L
> │ Test case 7. G. Time: 5799L
> │ Test case 8. H. Time: 7099L
> │ Test case 9. I. Time: 6133L
> │ Test case 10. J. Time: 5993L
> │ Test case 11. K. Time: 2040L
> │ 
> │ Input
> | Expected        | Result  | Best
> │ ---
> | ---             | ---     | ---
> │ abc
> | abc             | abc     | (11, 1219)
> │ accabb
> | acb             | acb     | (11, 1317)
> │ pprrqqpp
> | prq             | prq     | (11, 1322)
> │ 
> aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb 
> | acb             | acb     | (11, 2040)
> │ 
> │ Averages
> │ Test case 1. Average Time: 4622L
> │ Test case 2. Average Time: 4483L
> │ Test case 3. Average Time: 3800L
> │ Test case 4. Average Time: 2613L
> │ Test case 5. Average Time: 2828L
> │ Test case 6. Average Time: 2828L
> │ Test case 7. Average Time: 2505L
> │ Test case 8. Average Time: 2926L
> │ Test case 9. Average Time: 2652L
> │ Test case 10. Average Time: 2599L
> │ Test case 11. Average Time: 1474L
> │ 
> │ Ranking
> │ Test case 1. Average Time: 4622L
> │ Test case 2. Average Time: 4483L
> │ Test case 3. Average Time: 3800L
> │ Test case 8. Average Time: 2926L
> │ Test case 5. Average Time: 2828L
> │ Test case 6. Average Time: 2828L
> │ Test case 9. Average Time: 2652L
> │ Test case 4. Average Time: 2613L
> │ Test case 10. Average Time: 2599L
> │ Test case 7. Average Time: 2505L
> │ Test case 11. Average Time: 1474L
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let solutions = [[
>     "A",
>     fun input ->
>         input
>         |> Seq.toList
>         |> List.fold (fun acc x -> if List.contains x acc then acc else acc @ [[
> x ]]) [[]]
>         |> Seq.toArray
>         |> String
> 
>     "B",
>     fun input ->
>         input
>         |> Seq.rev
>         |> fun list -> Seq.foldBack (fun x acc -> if List.contains x acc then 
> acc else x :: acc) list [[]]
>         |> Seq.rev
>         |> Seq.toArray
>         |> String
> 
>     "C",
>     fun input ->
>         input
>         |> Seq.rev
>         |> fun list -> Seq.foldBack (fun x (set, acc) -> if Set.contains x set 
> then set, acc else set.Add x, x :: acc) list (Set.empty, [[]])
>         |> snd
>         |> Seq.rev
>         |> Seq.toArray
>         |> String
> 
>     "D",
>     fun input ->
>         input
>         |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc 
> else set.Add x, Array.append acc [[| x |]]) (Set.empty, [[||]])
>         |> snd
>         |> String
> 
>     "E",
>     fun input ->
>         input
>         |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc 
> else set.Add x, x :: acc) (Set.empty, [[]])
>         |> snd
>         |> List.rev
>         |> List.toArray
>         |> String
> 
>     "F",
>     fun input ->
>         input
>         |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc 
> else set.Add x, acc @ [[ x ]]) (Set.empty, [[]])
>         |> snd
>         |> List.toArray
>         |> String
> 
>     "G",
>     fun input ->
>         input
>         |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc 
> else set.Add x, x :: acc) (Set.empty, [[]])
>         |> snd
>         |> List.toArray
>         |> Array.rev
>         |> String
> 
>     "H",
>     fun input ->
>         input
>         |> Seq.toList
>         |> fun list ->
>             let rec 루프 set = function
>                 | head :: tail when Set.contains head set -> 루프 set tail
>                 | head :: tail -> (루프 (set.Add head) tail) @ [[ head ]]
>                 | [[]] -> [[]]
>             루프 Set.empty list
>             |> List.rev
>         |> List.toArray
>         |> String
> 
>     "I",
>     fun input ->
>         input
>         |> Seq.toList
>         |> fun list ->
>             let rec 루프 set = function
>                 | head :: tail when Set.contains head set -> 루프 set tail
>                 | head :: tail -> 루프 (set.Add head) tail |> Array.append [[| 
> head |]]
>                 | [[]] -> [[||]]
>             루프 Set.empty list
>         |> String
> 
>     "J",
>     fun input ->
>         input
>         |> Seq.toList
>         |> fun list ->
>             let rec 루프 set = function
>                 | head :: tail when Set.contains head set -> 루프 set tail
>                 | head :: tail -> head :: 루프 (set.Add head) tail
>                 | [[]] -> [[]]
>             루프 Set.empty list
>         |> List.toArray
>         |> String
> 
>     "K",
>     fun input ->
>         input
>         |> Seq.distinct
>         |> Seq.toArray
>         |> String
> ]]
> let testCases = seq {
>     "abc", "abc"
>     "accabb", "acb"
>     "pprrqqpp", "prq"
>     
> "aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb
> ", "acb"
> }
> let rec uniqueLettersTests = runAll (nameof uniqueLettersTests) _count solutions
> testCases
> uniqueLettersTests
> |> sortResultList
> 
> ── [ 51.29s - stdout ] ─────────────────────────────────────────────────────────
> │ 
> │ 
> │ Test: uniqueLettersTests
> │ 
> │ Solution: abc  
> │ Test case 1. A. Time: 700L  
> │ Test case 2. B. Time: 1142L  
> │ Test case 3. C. Time: 1396L  
> │ Test case 4. D. Time: 814L  
> │ Test case 5. E. Time: 848L  
> │ Test case 6. F. Time: 815L  
> │ Test case 7. G. Time: 833L  
> │ Test case 8. H. Time: 912L  
> │ Test case 9. I. Time: 678L  
> │ Test case 10. J. Time: 920L  
> │ Test case 11. K. Time: 722L  
> │ 
> │ Solution: accabb  
> │ Test case 1. A. Time: 991L  
> │ Test case 2. B. Time: 1535L  
> │ Test case 3. C. Time: 1966L  
> │ Test case 4. D. Time: 523L  
> │ Test case 5. E. Time: 462L  
> │ Test case 6. F. Time: 441L  
> │ Test case 7. G. Time: 463L  
> │ Test case 8. H. Time: 487L  
> │ Test case 9. I. Time: 440L  
> │ Test case 10. J. Time: 345L  
> │ Test case 11. K. Time: 428L  
> │ 
> │ Solution: pprrqqpp  
> │ Test case 1. A. Time: 420L  
> │ Test case 2. B. Time: 611L  
> │ Test case 3. C. Time: 830L  
> │ Test case 4. D. Time: 515L  
> │ Test case 5. E. Time: 490L  
> │ Test case 6. F. Time: 504L  
> │ Test case 7. G. Time: 453L  
> │ Test case 8. H. Time: 517L  
> │ Test case 9. I. Time: 467L  
> │ Test case 10. J. Time: 427L  
> │ Test case 11. K. Time: 373L  
> │ 
> │ Solution: 
> aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb│ Test case 1. A. Time: 1521L  
> │ Test case 2. B. Time: 2363L  
> │ Test case 3. C. Time: 3761L  
> │ Test case 4. D. Time: 1858L  
> │ Test case 5. E. Time: 1839L  
> │ Test case 6. F. Time: 1957L  
> │ Test case 7. G. Time: 1887L  
> │ Test case 8. H. Time: 1816L  
> │ Test case 9. I. Time: 1810L  
> │ Test case 10. J. Time: 1491L  
> │ Test case 11. K. Time: 825L  
> │ 
> │ Input
> | Expected	| Result	| Best     
> │ ---
> | ---     	| ---   	| ---      
> │ abc
> | abc     	| abc   	| (9, 678) 
> │ accabb
> | acb     	| acb   	| (10, 345)
> │ pprrqqpp
> | prq     	| prq   	| (11, 373)
> │ 
> aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb	| 
> acb     	| acb   	| (11, 825)
> │ 
> │ Average Ranking  
> │ Test case 11. Average Time: 587L  
> │ Test case 10. Average Time: 795L  
> │ Test case 9. Average Time: 848L  
> │ Test case 1. Average Time: 908L  
> │ Test case 5. Average Time: 909L  
> │ Test case 7. Average Time: 909L  
> │ Test case 4. Average Time: 927L  
> │ Test case 6. Average Time: 929L  
> │ Test case 8. Average Time: 933L  
> │ Test case 2. Average Time: 1412L  
> │ Test case 3. Average Time: 1988L  
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## rotateStringsTests
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ https://www.hackerrank.com/challenges/rotate-string/forum
> │ 
> │ Test: RotateStrings
> │ 
> │ Solution: abc
> │ Test case 1. A. Time: 1842L
> │ Test case 2. B. Time: 1846L
> │ Test case 3. C. Time: 1936L
> │ Test case 4. CA. Time: 2224L
> │ Test case 5. CB. Time: 2329L
> │ Test case 6. D. Time: 2474L
> │ Test case 7. E. Time: 1664L
> │ Test case 8. F. Time: 1517L
> │ Test case 9. FA. Time: 1651L
> │ Test case 10. FB. Time: 3764L
> │ Test case 11. FC. Time: 5415L
> │ 
> │ Solution: abcde
> │ Test case 1. A. Time: 3356L
> │ Test case 2. B. Time: 2592L
> │ Test case 3. C. Time: 2346L
> │ Test case 4. CA. Time: 2997L
> │ Test case 5. CB. Time: 3061L
> │ Test case 6. D. Time: 4051L
> │ Test case 7. E. Time: 1905L
> │ Test case 8. F. Time: 1771L
> │ Test case 9. FA. Time: 2175L
> │ Test case 10. FB. Time: 3275L
> │ Test case 11. FC. Time: 5266L
> │ 
> │ Solution: abcdefghi
> │ Test case 1. A. Time: 4492L
> │ Test case 2. B. Time: 3526L
> │ Test case 3. C. Time: 3583L
> │ Test case 4. CA. Time: 3711L
> │ Test case 5. CB. Time: 4783L
> │ Test case 6. D. Time: 7557L
> │ Test case 7. E. Time: 3452L
> │ Test case 8. F. Time: 3050L
> │ Test case 9. FA. Time: 3275L
> │ Test case 10. FB. Time: 4635L
> │ Test case 11. FC. Time: 5616L
> │ 
> │ Solution: abab
> │ Test case 1. A. Time: 2093L
> │ Test case 2. B. Time: 1843L
> │ Test case 3. C. Time: 1746L
> │ Test case 4. CA. Time: 2085L
> │ Test case 5. CB. Time: 2139L
> │ Test case 6. D. Time: 2095L
> │ Test case 7. E. Time: 1723L
> │ Test case 8. F. Time: 1558L
> │ Test case 9. FA. Time: 1620L
> │ Test case 10. FB. Time: 2319L
> │ Test case 11. FC. Time: 3918L
> │ 
> │ Solution: aa
> │ Test case 1. A. Time: 1107L
> │ Test case 2. B. Time: 1241L
> │ Test case 3. C. Time: 1183L
> │ Test case 4. CA. Time: 1563L
> │ Test case 5. CB. Time: 1525L
> │ Test case 6. D. Time: 1591L
> │ Test case 7. E. Time: 1327L
> │ Test case 8. F. Time: 1151L
> │ Test case 9. FA. Time: 1180L
> │ Test case 10. FB. Time: 1733L
> │ Test case 11. FC. Time: 2817L
> │ 
> │ Solution: z
> │ Test case 1. A. Time: 816L
> │ Test case 2. B. Time: 745L
> │ Test case 3. C. Time: 928L
> │ Test case 4. CA. Time: 1375L
> │ Test case 5. CB. Time: 1029L
> │ Test case 6. D. Time: 852L
> │ Test case 7. E. Time: 712L
> │ Test case 8. F. Time: 263L
> │ Test case 9. FA. Time: 232L
> │ Test case 10. FB. Time: 773L
> │ Test case 11. FC. Time: 1789L
> │ 
> │ Input           | Expected
>                                                                                 
> | Result
>                                                                                 
> | Best
> │ ---             | ---
>                                                                                 
> | ---
>                                                                                 
> | ---
> │ abc             | bca cab abc
>                                                                                 
> | bca cab abc
>                                                                                 
> | (8, 1517)
> │ abcde           | bcdea cdeab deabc eabcd abcde
> | bcdea cdeab deabc eabcd abcde
> | (8, 1771)
> │ abcdefghi       | bcdefghia cdefghiab defghiabc efghiabcd 
> fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi       | bcdefghia cdefghiab 
> defghiabc efghiabcd fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi       | 
> (8, 3050)
> │ abab            | baba abab baba abab
> | baba abab baba abab
> | (8, 1558)
> │ aa              | aa aa
>                                                                                 
> | aa aa
>                                                                                 
> | (1, 1107)
> │ z               | z
>                                                                                 
> | z
>                                                                                 
> | (9, 232)
> │ 
> │ Averages
> │ Test case 1. Average Time: 2284L
> │ Test case 2. Average Time: 1965L
> │ Test case 3. Average Time: 1953L
> │ Test case 4. Average Time: 2325L
> │ Test case 5. Average Time: 2477L
> │ Test case 6. Average Time: 3103L
> │ Test case 7. Average Time: 1797L
> │ Test case 8. Average Time: 1551L
> │ Test case 9. Average Time: 1688L
> │ Test case 10. Average Time: 2749L
> │ Test case 11. Average Time: 4136L
> │ 
> │ Ranking
> │ Test case 11. Average Time: 4136L
> │ Test case 6. Average Time: 3103L
> │ Test case 10. Average Time: 2749L
> │ Test case 5. Average Time: 2477L
> │ Test case 4. Average Time: 2325L
> │ Test case 1. Average Time: 2284L
> │ Test case 2. Average Time: 1965L
> │ Test case 3. Average Time: 1953L
> │ Test case 7. Average Time: 1797L
> │ Test case 9. Average Time: 1688L
> │ Test case 8. Average Time: 1551L
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let solutions = [[
>     "A",
>     fun (input: string) ->
>         let resultList =
>             List.fold (fun acc x ->
>                 let rotate (text: string) (letter: string) = (text |> 
> SpiralSm.slice 1 (input.Length - 1)) + letter
>                 [[ rotate (if acc.IsEmpty then input else acc.Head) (string x) 
> ]] @ acc
>             ) [[]] (Seq.toList input)
> 
>         (resultList, "")
>         ||> List.foldBack (fun acc x -> x + acc + " ")
>         |> _.TrimEnd()
> 
>     "B",
>     fun input ->
>         input
>         |> Seq.toList
>         |> List.fold (fun (acc: string list) letter ->
>             let last =
>                 if acc.IsEmpty
>                 then input
>                 else acc.Head
> 
>             let item = last.[[1 .. input.Length - 1]] + string letter
> 
>             item :: acc
>         ) [[]]
>         |> List.rev
>         |> SpiralSm.concat " "
> 
>     "C",
>     fun input ->
>         input
>         |> Seq.toList
>         |> List.fold (fun (acc: string list) letter -> acc.Head.[[ 1 .. 
> input.Length - 1 ]] + string letter :: acc) [[ input ]]
>         |> List.rev
>         |> List.skip 1
>         |> SpiralSm.concat " "
> 
>     "CA",
>     fun input ->
>         input
>         |> Seq.fold (fun (acc: string list) letter -> acc.Head.[[ 1 .. 
> input.Length - 1 ]] + string letter :: acc) [[ input ]]
>         |> Seq.rev
>         |> Seq.skip 1
>         |> SpiralSm.concat " "
> 
>     "CB",
>     fun input ->
>         input
>         |> Seq.toArray
>         |> Array.fold (fun (acc: string[[]]) letter -> acc |> Array.append [[| 
> acc.[[0]].[[ 1 .. input.Length - 1 ]] + string letter |]]) [[| input |]]
>         |> Array.rev
>         |> Array.skip 1
>         |> SpiralSm.concat " "
> 
>     "D",
>     fun input ->
>         input
>         |> Seq.toList
>         |> fun list ->
>             let rec 루프 (acc: char list list) = function
>                 | _ when acc.Length = list.Length -> acc
>                 | head :: tail ->
>                     let item = tail @ [[ head ]]
>                     루프 (item :: acc) item
>                 | [[]] -> [[]]
>             루프 [[]] list
>         |> List.rev
>         |> List.map (List.toArray >> String)
>         |> SpiralSm.concat " "
> 
>     "E",
>     fun input ->
>         input
>         |> Seq.toList
>         |> fun list ->
>             let rec 루프 (last: string) = function
>                 | head :: tail ->
>                     let item = last.[[1 .. input.Length - 1]] + string head
>                     item :: 루프 item tail
>                 | [[]] -> [[]]
>             루프 input list
>         |> SpiralSm.concat " "
> 
>     "F",
>     fun input ->
>         Array.singleton 0
>         |> Array.append [[| 1 .. input.Length - 1 |]]
>         |> Array.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
>         |> SpiralSm.concat " "
> 
>     "FA",
>     fun input ->
>         List.singleton 0
>         |> List.append [[ 1 .. input.Length - 1 ]]
>         |> List.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
>         |> SpiralSm.concat " "
> 
>     "FB",
>     fun input ->
>         Seq.singleton 0
>         |> Seq.append (seq { 1 .. input.Length - 1 })
>         |> Seq.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
>         |> SpiralSm.concat " "
> 
>     "FC",
>     fun input ->
>         Array.singleton 0
>         |> Array.append [[| 1 .. input.Length - 1 |]]
>         |> Array.Parallel.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
>         |> SpiralSm.concat " "
> ]]
> let testCases = seq {
>     "abc", "bca cab abc"
>     "abcde", "bcdea cdeab deabc eabcd abcde"
>     "abcdefghi", "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde ghiabcdef 
> hiabcdefg iabcdefgh abcdefghi"
>     "abab", "baba abab baba abab"
>     "aa", "aa aa"
>     "z", "z"
> }
> let rec rotateStringsTests = runAll (nameof rotateStringsTests) _count solutions
> testCases
> rotateStringsTests
> |> sortResultList
> 
> ── [ 57.87s - stdout ] ─────────────────────────────────────────────────────────
> │ 
> │ 
> │ Test: rotateStringsTests
> │ 
> │ Solution: abc  
> │ Test case 1. A. Time: 630L  
> │ Test case 2. B. Time: 537L  
> │ Test case 3. C. Time: 535L  
> │ Test case 4. CA. Time: 723L  
> │ Test case 5. CB. Time: 733L  
> │ Test case 6. D. Time: 636L  
> │ Test case 7. E. Time: 473L  
> │ Test case 8. F. Time: 309L  
> │ Test case 9. FA. Time: 431L  
> │ Test case 10. FB. Time: 875L  
> │ Test case 11. FC. Time: 1191L  
> │ 
> │ Solution: abcde  
> │ Test case 1. A. Time: 808L  
> │ Test case 2. B. Time: 656L  
> │ Test case 3. C. Time: 678L  
> │ Test case 4. CA. Time: 756L  
> │ Test case 5. CB. Time: 851L  
> │ Test case 6. D. Time: 935L  
> │ Test case 7. E. Time: 630L  
> │ Test case 8. F. Time: 457L  
> │ Test case 9. FA. Time: 614L  
> │ Test case 10. FB. Time: 1008L  
> │ Test case 11. FC. Time: 1279L  
> │ 
> │ Solution: abcdefghi  
> │ Test case 1. A. Time: 1429L  
> │ Test case 2. B. Time: 1037L  
> │ Test case 3. C. Time: 1070L  
> │ Test case 4. CA. Time: 1104L  
> │ Test case 5. CB. Time: 1341L  
> │ Test case 6. D. Time: 1906L  
> │ Test case 7. E. Time: 977L  
> │ Test case 8. F. Time: 771L  
> │ Test case 9. FA. Time: 1010L  
> │ Test case 10. FB. Time: 1449L  
> │ Test case 11. FC. Time: 1683L  
> │ 
> │ Solution: abab  
> │ Test case 1. A. Time: 659L  
> │ Test case 2. B. Time: 583L  
> │ Test case 3. C. Time: 589L  
> │ Test case 4. CA. Time: 710L  
> │ Test case 5. CB. Time: 714L  
> │ Test case 6. D. Time: 766L  
> │ Test case 7. E. Time: 572L  
> │ Test case 8. F. Time: 403L  
> │ Test case 9. FA. Time: 548L  
> │ Test case 10. FB. Time: 874L  
> │ Test case 11. FC. Time: 1193L  
> │ 
> │ Solution: aa  
> │ Test case 1. A. Time: 409L  
> │ Test case 2. B. Time: 415L  
> │ Test case 3. C. Time: 381L  
> │ Test case 4. CA. Time: 536L  
> │ Test case 5. CB. Time: 491L  
> │ Test case 6. D. Time: 430L  
> │ Test case 7. E. Time: 330L  
> │ Test case 8. F. Time: 265L  
> │ Test case 9. FA. Time: 282L  
> │ Test case 10. FB. Time: 675L  
> │ Test case 11. FC. Time: 1180L  
> │ 
> │ Solution: z  
> │ Test case 1. A. Time: 238L  
> │ Test case 2. B. Time: 236L  
> │ Test case 3. C. Time: 271L  
> │ Test case 4. CA. Time: 413L  
> │ Test case 5. CB. Time: 310L  
> │ Test case 6. D. Time: 246L  
> │ Test case 7. E. Time: 177L  
> │ Test case 8. F. Time: 72L  
> │ Test case 9. FA. Time: 93L  
> │ Test case 10. FB. Time: 352L  
> │ Test case 11. FC. Time: 943L  
> │ 
> │ Input    	| Expected
> | Result
>                                                                                 
> | Best    
> │ ---      	| ---
>                                                                                 
> | ---
>                                                                                 
> | ---     
> │ abc      	| bca cab abc
> | bca cab abc
> | (8, 309)
> │ abcde    	| bcdea cdeab deabc eabcd abcde
> | bcdea cdeab deabc eabcd abcde
> | (8, 457)
> │ abcdefghi	| bcdefghia cdefghiab defghiabc efghiabcd fghiabcde 
> ghiabcdef hiabcdefg iabcdefgh abcdefghi	| bcdefghia cdefghiab defghiabc efghiabcd 
> fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi	| (8, 771)
> │ abab     	| baba abab baba abab
> | baba abab baba abab
> | (8, 403)
> │ aa       	| aa aa
>                                                                                 
> | aa aa
>                                                                                 
> | (8, 265)
> │ z        	| z
>                                                                                 
> | z
>                                                                                 
> | (8, 72) 
> │ 
> │ Average Ranking  
> │ Test case 8. Average Time: 379L  
> │ Test case 9. Average Time: 496L  
> │ Test case 7. Average Time: 526L  
> │ Test case 2. Average Time: 577L  
> │ Test case 3. Average Time: 587L  
> │ Test case 1. Average Time: 695L  
> │ Test case 4. Average Time: 707L  
> │ Test case 5. Average Time: 740L  
> │ Test case 6. Average Time: 819L  
> │ Test case 10. Average Time: 872L  
> │ Test case 11. Average Time: 1244L  
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## rotate_strings_tests
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ```
> │ 02:21:12 verbose #1 benchmark.run_all / {count = 
> 2000000; test_name = rotate_strings_tests}
> │ 
> │ 02:21:12 verbose #2 benchmark.run / {input_str = 
> "abc"}
> │ 02:21:13 verbose #3 benchmark.run / solutions.map / {i
> = 1; test_name = F; time = 638}
> │ 02:21:14 verbose #4 benchmark.run / solutions.map / {i
> = 2; test_name = FA; time = 779}
> │ 
> │ 02:21:14 verbose #5 benchmark.run / {input_str = 
> "abcde"}
> │ 02:21:15 verbose #6 benchmark.run / solutions.map / {i
> = 1; test_name = F; time = 745}
> │ 02:21:16 verbose #7 benchmark.run / solutions.map / {i
> = 2; test_name = FA; time = 809}
> │ 
> │ 02:21:16 verbose #8 benchmark.run / {input_str = 
> "abcdefghi"}
> │ 02:21:17 verbose #9 benchmark.run / solutions.map / {i
> = 1; test_name = F; time = 1092}
> │ 02:21:18 verbose #10 benchmark.run / solutions.map / 
> {i = 2; test_name = FA; time = 1304}
> │ 
> │ 02:21:18 verbose #11 benchmark.run / {input_str = 
> "abab"}
> │ 02:21:19 verbose #12 benchmark.run / solutions.map / 
> {i = 1; test_name = F; time = 536}
> │ 02:21:20 verbose #13 benchmark.run / solutions.map / 
> {i = 2; test_name = FA; time = 620}
> │ 
> │ 02:21:20 verbose #14 benchmark.run / {input_str = 
> "aa"}
> │ 02:21:21 verbose #15 benchmark.run / solutions.map / 
> {i = 1; test_name = F; time = 365}
> │ 02:21:21 verbose #16 benchmark.run / solutions.map / 
> {i = 2; test_name = FA; time = 396}
> │ 
> │ 02:21:21 verbose #17 benchmark.run / {input_str = "z"}
> │ 02:21:22 verbose #18 benchmark.run / solutions.map / 
> {i = 1; test_name = F; time = 158}
> │ 02:21:22 verbose #19 benchmark.run / solutions.map / 
> {i = 2; test_name = FA; time = 143}
> │ ```
> │ input      	| expected
>                                                                                 
> | result
>                                                                                 
> | best   
> │ ---        	| ---
>                                                                                 
> | ---
>                                                                                 
> | ---    
> │ "abc"      	| "bca cab abc"
> | "bca cab abc"
> | 1, 638 
> │ "abcde"    	| "bcdea cdeab deabc eabcd abcde"
> | "bcdea cdeab deabc eabcd abcde"
> | 1, 745 
> │ "abcdefghi"	| "bcdefghia cdefghiab defghiabc efghiabcd 
> fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi"	| "bcdefghia cdefghiab 
> defghiabc efghiabcd fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi"	| 1, 1092
> │ "abab"     	| "baba abab baba abab"
> | "baba abab baba abab"
> | 1, 536 
> │ "aa"       	| "aa aa"
>                                                                                 
> | "aa aa"
>                                                                                 
> | 1, 365 
> │ "z"        	| "z"
>                                                                                 
> | "z"
>                                                                                 
> | 2, 143 
> │ ```
> │ 02:21:22 verbose #20 benchmark.sort_result_list / 
> averages.iter / {avg = 589; i = 1}
> │ 02:21:22 verbose #21 benchmark.sort_result_list / 
> averages.iter / {avg = 675; i = 2}
> │ ```
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> //// timeout=60000
> 
> inl get_solutions () =
>     [[
>         // "A",
>         // fun (input : string) =>
>         //     let resultList =
>         //         List.fold (fun acc x =>
>         //             let rotate (text : string) (letter : string) = 
> text.Substring (1, input.Length - 1) + letter
>         //             [[ rotate (if acc.IsEmpty then input else acc.Head) 
> (string x) ]] ++ acc
>         //         ) [[]] (Seq.toList input)
> 
>         //     List.foldBack (fun acc x => x + acc + " ") resultList ""
>         //     |> fun x => x.TrimEnd ()
> 
>         // "B",
>         // fun input =>
>         //     input
>         //     |> Seq.toList
>         //     |> List.fold (fun (acc : string list) letter =>
>         //         let last =
>         //             if acc.IsEmpty
>         //             then input
>         //             else acc.Head
> 
>         //         let item = last.[[1 .. input.Length - 1]] + string letter
> 
>         //         item :: acc
>         //     ) [[]]
>         //     |> List.rev
>         //     |> SpiralSm.concat " "
> 
>         // "C",
>         // fun input =>
>         //     input
>         //     |> Seq.toList
>         //     |> List.fold (fun (acc : list string) letter => acc.Head.[[ 1 .. 
> input.Length - 1 ]] + string letter :: acc) [[ input ]]
>         //     |> List.rev
>         //     |> List.skip 1
>         //     |> SpiralSm.concat " "
> 
>         // "CA",
>         // fun input =>
>         //     input
>         //     |> Seq.fold (fun (acc : list string) letter => acc.Head.[[ 1 .. 
> input.Length - 1 ]] + string letter :: acc) [[ input ]]
>         //     |> Seq.rev
>         //     |> Seq.skip 1
>         //     |> SpiralSm.concat " "
> 
>         // "CB",
>         // fun input =>
>         //     input
>         //     |> Seq.toArray
>         //     |> Array.fold (fun (acc : a _ string) letter => acc |> 
> Array.append (a ;[[ acc.[[0]].[[ 1 .. input.Length - 1 ]] + string letter ]])) 
> (a ;[[ input ]])
>         //     |> Array.rev
>         //     |> Array.skip 1
>         //     |> SpiralSm.concat " "
> 
>         // "D",
>         // fun input =>
>         //     input
>         //     |> Seq.toList
>         //     |> fun list =>
>         //         let rec 루프 (acc : list (list char)) = function
>         //             | _ when acc.Length = list.Length => acc
>         //             | head :: tail =>
>         //                 let item = tail ++ [[ head ]]
>         //                 루프 (item :: acc) item
>         //             | [[]] => [[]]
>         //         루프 [[]] list
>         //     |> List.rev
>         //     |> List.map (List.toArray >> String)
>         //     |> SpiralSm.concat " "
> 
>         // "E",
>         // fun input =>
>         //     input
>         //     |> Seq.toList
>         //     |> fun list =>
>         //         let rec 루프 (last : string) = function
>         //             | head :: tail =>
>         //                 let item = last.[[1 .. input.Length - 1]] + string 
> head
>         //                 item :: 루프 item tail
>         //             | [[]] => [[]]
>         //         루프 input list
>         //     |> SpiralSm.concat " "
> 
>         "F",
>         fun input =>
>         // Array.singleton 0
>         // |> Array.append [[| 1 .. input.Length - 1 |]]
>         // |> Array.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
>         // |> SpiralSm.concat " "
>             inl input_length = input |> sm.length
>             am.singleton 0i32
>             |> am.append (am'.init_series 1 (input_length - 1) 1 |> fun x => a x
> : _ int _)
>             |> fun (a x) => x
>             |> am'.map_base fun i =>
>                 inl a = input |> sm'.slice i (input_length - 1)
>                 inl b = input |> sm'.slice 0 (i - 1)
>                 a +. b
>             |> fun x => a x : _ int _
>             |> seq.of_array
>             |> sm'.concat " "
> 
>         "FA",
>         fun input =>
>         //     List.singleton 0
>         //     |> List.append [[ 1 .. input.Length - 1 ]]
>         //   //  |> List.map (fun i => input.[[ i .. ]] + input.[[ .. i - 1 ]])
>         //     |> SpiralSm.concat " "
>             inl input_length = input |> sm.length
>             listm.singleton 0i32
>             |> listm.append (listm'.init_series 1 (input_length - 1) 1)
>             |> listm.map (fun i =>
>                 inl a = input |> sm'.slice i (input_length - 1)
>                 inl b = if i = 0 then "" else input |> sm'.slice 0 (i - 1)
>                 a +. b
>             )
>             |> listm'.box
>             |> listm'.to_array'
>             |> fun x => a x : _ int _
>             |> seq.of_array
>             |> sm'.concat " "
> 
>         // "FB",
>         // fun input =>
>         //     Seq.singleton 0
>         //   //  |> Seq.append (seq { 1 .. input.Length - 1 })
>         //   //  |> Seq.map (fun i => input.[[ i .. ]] + input.[[ .. i - 1 ]])
>         //     |> SpiralSm.concat " "
> 
>         // "FC",
>         // fun input =>
>         //     Array.singleton 0
>         //     |> Array.append (a ;[[ 1 .. input.Length - 1 ]])
>         ////    |> Array.Parallel.map (fun i => input.[[ i .. ]] + input.[[ .. i
> - 1 ]])
>         //     |> SpiralSm.concat " "
>     ]]
> 
> inl rec rotate_strings_tests () =
>     inl test_cases = [[
>         "abc", "bca cab abc"
>         "abcde", "bcdea cdeab deabc eabcd abcde"
>         "abcdefghi", "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde 
> ghiabcdef hiabcdefg iabcdefgh abcdefghi"
>         "abab", "baba abab baba abab"
>         "aa", "aa aa"
>         "z", "z"
>     ]]
> 
>     inl solutions = get_solutions ()
> 
>     // inl is_fast () = true
> 
>     inl count =
>         if is_fast ()
>         then 1000i32
>         else 2000000i32
> 
>     run_all (reflection.nameof { rotate_strings_tests }) count solutions 
> test_cases
>     |> sort_result_list
> 
> rotate_strings_tests ()
> 
> ── [ 10.47s - stdout ] ─────────────────────────────────────────────────────────
> │ 
> │ ```
> │ 00:00:00 v #1 benchmark.run_all / { test_name = 
> rotate_strings_tests; count = 2000000 }
> │ 
> │ 00:00:00 v #2 benchmark.run / { input_str = abc }
> │ 00:00:00 v #3 benchmark.run / solutions.map / { i = 1; 
> test_name = F; time = 540 }
> │ 00:00:01 v #4 benchmark.run / solutions.map / { i = 2; 
> test_name = FA; time = 735 }
> │ 
> │ 00:00:01 v #5 benchmark.run / { input_str = abcde }
> │ 00:00:02 v #6 benchmark.run / solutions.map / { i = 1; 
> test_name = F; time = 649 }
> │ 00:00:03 v #7 benchmark.run / solutions.map / { i = 2; 
> test_name = FA; time = 689 }
> │ 
> │ 00:00:03 v #8 benchmark.run / { input_str = abcdefghi }
> │ 00:00:04 v #9 benchmark.run / solutions.map / { i = 1; 
> test_name = F; time = 891 }
> │ 00:00:05 v #10 benchmark.run / solutions.map / { i = 2; 
> test_name = FA; time = 1102 }
> │ 
> │ 00:00:05 v #11 benchmark.run / { input_str = abab }
> │ 00:00:06 v #12 benchmark.run / solutions.map / { i = 1; 
> test_name = F; time = 469 }
> │ 00:00:07 v #13 benchmark.run / solutions.map / { i = 2; 
> test_name = FA; time = 608 }
> │ 
> │ 00:00:07 v #14 benchmark.run / { input_str = aa }
> │ 00:00:07 v #15 benchmark.run / solutions.map / { i = 1; 
> test_name = F; time = 292 }
> │ 00:00:08 v #16 benchmark.run / solutions.map / { i = 2; 
> test_name = FA; time = 358 }
> │ 
> │ 00:00:08 v #17 benchmark.run / { input_str = z }
> │ 00:00:08 v #18 benchmark.run / solutions.map / { i = 1; 
> test_name = F; time = 107 }
> │ 00:00:08 v #19 benchmark.run / solutions.map / { i = 2; 
> test_name = FA; time = 116 }
> │ ```
> │ input    	| expected
> | result
>                                                                                 
> | best  
> │ ---      	| ---
>                                                                                 
> | ---
>                                                                                 
> | ---   
> │ abc      	| bca cab abc
> | bca cab abc
> | 1, 540
> │ abcde    	| bcdea cdeab deabc eabcd abcde
> | bcdea cdeab deabc eabcd abcde
> | 1, 649
> │ abcdefghi	| bcdefghia cdefghiab defghiabc efghiabcd fghiabcde 
> ghiabcdef hiabcdefg iabcdefgh abcdefghi	| bcdefghia cdefghiab defghiabc efghiabcd 
> fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi	| 1, 891
> │ abab     	| baba abab baba abab
> | baba abab baba abab
> | 1, 469
> │ aa       	| aa aa
>                                                                                 
> | aa aa
>                                                                                 
> | 1, 292
> │ z        	| z
>                                                                                 
> | z
>                                                                                 
> | 1, 107
> │ ```
> │ 00:00:08 v #20 benchmark.sort_result_list / 
> averages.iter / { i = 1; avg = 491 }
> │ 00:00:08 v #21 benchmark.sort_result_list / 
> averages.iter / { i = 2; avg = 601 }
> │ ```
> │ 
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> 
> // rotate_strings_tests ()
> ()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## binary_search_tests
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ```
> │ 02:19:29 verbose #1 benchmark.run_all / {count = 
> 10000000; test_name = binary_search_tests}
> │ 
> │ 02:19:29 verbose #2 benchmark.run / {input_str = 
> struct ([|1; 3; 4; 6; 8; 9; 11|], 6, 7)}
> │ 02:19:30 verbose #3 benchmark.run / solutions.map / {i
> = 1; test_name = semi_open_1; time = 662}
> │ 02:19:30 verbose #4 benchmark.run / solutions.map / {i
> = 2; test_name = closed_1; time = 619}
> │ 02:19:31 verbose #5 benchmark.run / solutions.map / {i
> = 3; test_name = semi_open_2; time = 644}
> │ 02:19:32 verbose #6 benchmark.run / solutions.map / {i
> = 4; test_name = closed_2; time = 610}
> │ 
> │ 02:19:32 verbose #7 benchmark.run / {input_str = 
> struct ([|1; 3; 4; 6; 8; 9; 11|], 1, 7)}
> │ 02:19:33 verbose #8 benchmark.run / solutions.map / {i
> = 1; test_name = semi_open_1; time = 607}
> │ 02:19:33 verbose #9 benchmark.run / solutions.map / {i
> = 2; test_name = closed_1; time = 559}
> │ 02:19:34 verbose #10 benchmark.run / solutions.map / 
> {i = 3; test_name = semi_open_2; time = 612}
> │ 02:19:35 verbose #11 benchmark.run / solutions.map / 
> {i = 4; test_name = closed_2; time = 577}
> │ 
> │ 02:19:35 verbose #12 benchmark.run / {input_str = 
> struct ([|1; 3; 4; 6; 8; 9; 11|], 11, 7)}
> │ 02:19:35 verbose #13 benchmark.run / solutions.map / 
> {i = 1; test_name = semi_open_1; time = 550}
> │ 02:19:36 verbose #14 benchmark.run / solutions.map / 
> {i = 2; test_name = closed_1; time = 580}
> │ 02:19:37 verbose #15 benchmark.run / solutions.map / 
> {i = 3; test_name = semi_open_2; time = 624}
> │ 02:19:37 verbose #16 benchmark.run / solutions.map / 
> {i = 4; test_name = closed_2; time = 590}
> │ 
> │ 02:19:37 verbose #17 benchmark.run / {input_str = 
> struct ([|1; 3; 4; 6; 8; 9; 11|], 12, 7)}
> │ 02:19:38 verbose #18 benchmark.run / solutions.map / 
> {i = 1; test_name = semi_open_1; time = 574}
> │ 02:19:39 verbose #19 benchmark.run / solutions.map / 
> {i = 2; test_name = closed_1; time = 577}
> │ 02:19:39 verbose #20 benchmark.run / solutions.map / 
> {i = 3; test_name = semi_open_2; time = 582}
> │ 02:19:40 verbose #21 benchmark.run / solutions.map / 
> {i = 4; test_name = closed_2; time = 585}
> │ 
> │ 02:19:40 verbose #22 benchmark.run / {input_str = 
> struct ([|1; 2; 3; 4...00; ...|], 60, 1000)}
> │ 02:19:41 verbose #23 benchmark.run / solutions.map / 
> {i = 1; test_name = semi_open_1; time = 610}
> │ 02:19:42 verbose #24 benchmark.run / solutions.map / 
> {i = 2; test_name = closed_1; time = 672}
> │ 02:19:42 verbose #25 benchmark.run / solutions.map / 
> {i = 3; test_name = semi_open_2; time = 636}
> │ 02:19:43 verbose #26 benchmark.run / solutions.map / 
> {i = 4; test_name = closed_2; time = 629}
> │ 
> │ 02:19:43 verbose #27 benchmark.run / {input_str = 
> struct ([|1; 3; 4; 6; 8; 9; 11|], 6, 7)}
> │ 02:19:44 verbose #28 benchmark.run / solutions.map / 
> {i = 1; test_name = semi_open_1; time = 599}
> │ 02:19:44 verbose #29 benchmark.run / solutions.map / 
> {i = 2; test_name = closed_1; time = 561}
> │ 02:19:45 verbose #30 benchmark.run / solutions.map / 
> {i = 3; test_name = semi_open_2; time = 604}
> │ 02:19:46 verbose #31 benchmark.run / solutions.map / 
> {i = 4; test_name = closed_2; time = 573}
> │ 
> │ 02:19:46 verbose #32 benchmark.run / {input_str = 
> struct ([|1; 3; 4; 6; 8; 9; 11|], 1, 7)}
> │ 02:19:47 verbose #33 benchmark.run / solutions.map / 
> {i = 1; test_name = semi_open_1; time = 635}
> │ 02:19:47 verbose #34 benchmark.run / solutions.map / 
> {i = 2; test_name = closed_1; time = 603}
> │ 02:19:48 verbose #35 benchmark.run / solutions.map / 
> {i = 3; test_name = semi_open_2; time = 644}
> │ 02:19:49 verbose #36 benchmark.run / solutions.map / 
> {i = 4; test_name = closed_2; time = 628}
> │ 
> │ 02:19:49 verbose #37 benchmark.run / {input_str = 
> struct ([|1; 3; 4; 6; 8; 9; 11|], 11, 7)}
> │ 02:19:49 verbose #38 benchmark.run / solutions.map / 
> {i = 1; test_name = semi_open_1; time = 643}
> │ 02:19:50 verbose #39 benchmark.run / solutions.map / 
> {i = 2; test_name = closed_1; time = 606}
> │ 02:19:51 verbose #40 benchmark.run / solutions.map / 
> {i = 3; test_name = semi_open_2; time = 636}
> │ 02:19:52 verbose #41 benchmark.run / solutions.map / 
> {i = 4; test_name = closed_2; time = 624}
> │ 
> │ 02:19:52 verbose #42 benchmark.run / {input_str = 
> struct ([|1; 3; 4; 6; 8; 9; 11|], 12, 7)}
> │ 02:19:52 verbose #43 benchmark.run / solutions.map / 
> {i = 1; test_name = semi_open_1; time = 689}
> │ 02:19:53 verbose #44 benchmark.run / solutions.map / 
> {i = 2; test_name = closed_1; time = 613}
> │ 02:19:54 verbose #45 benchmark.run / solutions.map / 
> {i = 3; test_name = semi_open_2; time = 623}
> │ 02:19:55 verbose #46 benchmark.run / solutions.map / 
> {i = 4; test_name = closed_2; time = 613}
> │ 
> │ 02:19:55 verbose #47 benchmark.run / {input_str = 
> struct ([|1; 2; 3; 4...100; ...|], 60, 100)}
> │ 02:19:55 verbose #48 benchmark.run / solutions.map / 
> {i = 1; test_name = semi_open_1; time = 630}
> │ 02:19:56 verbose #49 benchmark.run / solutions.map / 
> {i = 2; test_name = closed_1; time = 633}
> │ 02:19:57 verbose #50 benchmark.run / solutions.map / 
> {i = 3; test_name = semi_open_2; time = 653}
> │ 02:19:58 verbose #51 benchmark.run / solutions.map / 
> {i = 4; test_name = closed_2; time = 646}
> │ ```
> │ input                                    	| expected	| result  	|
> best  
> │ ---                                      	| ---     	| ---     	|
> ---   
> │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7)    	| US4_0 3 	| US4_0 3 	|
> 4, 610
> │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7)    	| US4_0 0 	| US4_0 0 	|
> 2, 559
> │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7)   	| US4_0 6 	| US4_0 6 	|
> 1, 550
> │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7)   	| US4_1   	| US4_1   	|
> 1, 574
> │ struct ([1; 2; 3; 4...00; ...], 60, 1000)	| US4_0 59	| US4_0 59	|
> 1, 610
> │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7)    	| US4_0 3 	| US4_0 3 	|
> 2, 561
> │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7)    	| US4_0 0 	| US4_0 0 	|
> 2, 603
> │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7)   	| US4_0 6 	| US4_0 6 	|
> 2, 606
> │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7)   	| US4_1   	| US4_1   	|
> 2, 613
> │ struct ([1; 2; 3; 4...100; ...], 60, 100)	| US4_0 59	| US4_0 59	|
> 1, 630
> │ ```
> │ 02:19:58 verbose #52 benchmark.sort_result_list / 
> averages.iter / {avg = 602; i = 2}
> │ 02:19:58 verbose #53 benchmark.sort_result_list / 
> averages.iter / {avg = 607; i = 4}
> │ 02:19:58 verbose #54 benchmark.sort_result_list / 
> averages.iter / {avg = 619; i = 1}
> │ 02:19:58 verbose #55 benchmark.sort_result_list / 
> averages.iter / {avg = 625; i = 3}
> │ ```
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> //// timeout=90000
> 
> inl binary_search_semi_open_1 arr target left right =
>     inl rec body left right =
>         if left >= right
>         then None
>         else
>             inl mid = (left + right) / 2
>             inl item = index arr mid
>             if item = target
>             then Some mid
>             elif item < target
>             then 루프 (mid + 1) right
>             else 루프 left mid
>     and inl 루프 left right =
>         if var_is right |> not
>         then body left right
>         else
>             inl left = dyn left
>             join body left right
>     루프 left right
> 
> inl binary_search_closed_1 arr target left right =
>     inl rec body left right =
>         if left > right
>         then None
>         else
>             inl mid = (left + right) / 2
>             inl item = index arr mid
>             if item = target
>             then Some mid
>             elif item < target
>             then 루프 (mid + 1) right
>             else 루프 left (mid - 1)
>     and inl 루프 left right =
>         if var_is right |> not
>         then body left right
>         else
>             inl left = dyn left
>             join body left right
>     루프 left right
> 
> inl binary_search_semi_open_2 arr target left right =
>     let rec body left right =
>         if left >= right
>         then None
>         else
>             inl mid = (left + right) / 2
>             inl item = index arr mid
>             if item = target
>             then Some mid
>             elif item < target
>             then 루프 (mid + 1) right
>             else 루프 left mid
>     and inl 루프 left right = body left right
>     루프 left right
> 
> inl binary_search_closed_2 arr target left right =
>     let rec body left right =
>         if left > right
>         then None
>         else
>             inl mid = (left + right) / 2
>             inl item = index arr mid
>             if item = target
>             then Some mid
>             elif item < target
>             then 루프 (mid + 1) right
>             else 루프 left (mid - 1)
>     and inl 루프 left right = body left right
>     루프 left right
> 
> inl get_solutions () =
>     [[
>         "semi_open_1",
>         fun (arr, (target, len)) =>
>             binary_search_semi_open_1 arr target 0 len
> 
>         "closed_1",
>         fun (arr, (target, len)) =>
>             binary_search_closed_1 arr target 0 (len - 1)
> 
>         "semi_open_2",
>         fun (arr, (target, len)) =>
>             binary_search_semi_open_2 arr target 0 len
> 
>         "closed_2",
>         fun (arr, (target, len)) =>
>             binary_search_closed_2 arr target 0 (len - 1)
>     ]]
> 
> inl rec binary_search_tests () =
>     inl arr_with_len target len arr =
>         arr, (target, (len |> optionm'.default_with fun () => length arr))
> 
>     inl test_cases = [[
>         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 6 None), (Some 3i32)
>         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 1 None), (Some 0i32)
>         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 11 None), (Some 6i32)
>         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 12 None), None
>         ((am'.init_series 1i32 1000 1 |> fun x => a x : _ int _) |> arr_with_len
> 60 None), (Some 59)
> 
>         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 6 (Some 7)), (Some 
> 3i32)
>         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 1 (Some 7)), (Some 
> 0i32)
>         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 11 (Some 7)), (Some 
> 6i32)
>         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 12 (Some 7)), None
>         ((am'.init_series 1i32 1000 1 |> fun x => a x : _ int _) |> arr_with_len
> 60 (Some 100)), (Some 59)
>     ]]
> 
>     inl solutions = get_solutions ()
> 
>     // inl is_fast () = true
> 
>     inl count =
>         if is_fast ()
>         then 1000i32
>         else 10000000i32
> 
>     run_all (reflection.nameof { binary_search_tests }) count solutions 
> test_cases
>     |> sort_result_list
> 
> 
> let main () =
>     binary_search_tests ()
> 
> ── [ 9.79s - stdout ] ──────────────────────────────────────────────────────────
> │ 
> │ ```
> │ 00:00:00 v #1 benchmark.run_all / { test_name = 
> binary_search_tests; count = 10000000 }
> │ 
> │ 00:00:00 v #2 benchmark.run / { input_str = struct ([|1;
> 3; 4; 6; 8; 9; 11|], 6, 7) }
> │ 00:00:00 v #3 benchmark.run / solutions.map / { i = 1; 
> test_name = semi_open_1; time = 253 }
> │ 00:00:00 v #4 benchmark.run / solutions.map / { i = 2; 
> test_name = closed_1; time = 139 }
> │ 00:00:00 v #5 benchmark.run / solutions.map / { i = 3; 
> test_name = semi_open_2; time = 134 }
> │ 00:00:01 v #6 benchmark.run / solutions.map / { i = 4; 
> test_name = closed_2; time = 142 }
> │ 
> │ 00:00:01 v #7 benchmark.run / { input_str = struct ([|1;
> 3; 4; 6; 8; 9; 11|], 1, 7) }
> │ 00:00:01 v #8 benchmark.run / solutions.map / { i = 1; 
> test_name = semi_open_1; time = 84 }
> │ 00:00:01 v #9 benchmark.run / solutions.map / { i = 2; 
> test_name = closed_1; time = 89 }
> │ 00:00:01 v #10 benchmark.run / solutions.map / { i = 3; 
> test_name = semi_open_2; time = 90 }
> │ 00:00:02 v #11 benchmark.run / solutions.map / { i = 4; 
> test_name = closed_2; time = 85 }
> │ 
> │ 00:00:02 v #12 benchmark.run / { input_str = struct 
> ([|1; 3; 4; 6; 8; 9; 11|], 11, 7) }
> │ 00:00:02 v #13 benchmark.run / solutions.map / { i = 1; 
> test_name = semi_open_1; time = 88 }
> │ 00:00:02 v #14 benchmark.run / solutions.map / { i = 2; 
> test_name = closed_1; time = 87 }
> │ 00:00:02 v #15 benchmark.run / solutions.map / { i = 3; 
> test_name = semi_open_2; time = 84 }
> │ 00:00:02 v #16 benchmark.run / solutions.map / { i = 4; 
> test_name = closed_2; time = 92 }
> │ 
> │ 00:00:02 v #17 benchmark.run / { input_str = struct 
> ([|1; 3; 4; 6; 8; 9; 11|], 12, 7) }
> │ 00:00:02 v #18 benchmark.run / solutions.map / { i = 1; 
> test_name = semi_open_1; time = 88 }
> │ 00:00:03 v #19 benchmark.run / solutions.map / { i = 2; 
> test_name = closed_1; time = 90 }
> │ 00:00:03 v #20 benchmark.run / solutions.map / { i = 3; 
> test_name = semi_open_2; time = 86 }
> │ 00:00:03 v #21 benchmark.run / solutions.map / { i = 4; 
> test_name = closed_2; time = 88 }
> │ 
> │ 00:00:03 v #22 benchmark.run / { input_str = struct 
> ([|1; 2; 3; 4...00; ...|], 60, 1000) }
> │ 00:00:03 v #23 benchmark.run / solutions.map / { i = 1; 
> test_name = semi_open_1; time = 110 }
> │ 00:00:03 v #24 benchmark.run / solutions.map / { i = 2; 
> test_name = closed_1; time = 123 }
> │ 00:00:04 v #25 benchmark.run / solutions.map / { i = 3; 
> test_name = semi_open_2; time = 114 }
> │ 00:00:04 v #26 benchmark.run / solutions.map / { i = 4; 
> test_name = closed_2; time = 117 }
> │ 
> │ 00:00:04 v #27 benchmark.run / { input_str = struct 
> ([|1; 3; 4; 6; 8; 9; 11|], 6, 7) }
> │ 00:00:04 v #28 benchmark.run / solutions.map / { i = 1; 
> test_name = semi_open_1; time = 72 }
> │ 00:00:04 v #29 benchmark.run / solutions.map / { i = 2; 
> test_name = closed_1; time = 75 }
> │ 00:00:04 v #30 benchmark.run / solutions.map / { i = 3; 
> test_name = semi_open_2; time = 74 }
> │ 00:00:05 v #31 benchmark.run / solutions.map / { i = 4; 
> test_name = closed_2; time = 75 }
> │ 
> │ 00:00:05 v #32 benchmark.run / { input_str = struct 
> ([|1; 3; 4; 6; 8; 9; 11|], 1, 7) }
> │ 00:00:05 v #33 benchmark.run / solutions.map / { i = 1; 
> test_name = semi_open_1; time = 83 }
> │ 00:00:05 v #34 benchmark.run / solutions.map / { i = 2; 
> test_name = closed_1; time = 85 }
> │ 00:00:05 v #35 benchmark.run / solutions.map / { i = 3; 
> test_name = semi_open_2; time = 85 }
> │ 00:00:05 v #36 benchmark.run / solutions.map / { i = 4; 
> test_name = closed_2; time = 90 }
> │ 
> │ 00:00:05 v #37 benchmark.run / { input_str = struct 
> ([|1; 3; 4; 6; 8; 9; 11|], 11, 7) }
> │ 00:00:05 v #38 benchmark.run / solutions.map / { i = 1; 
> test_name = semi_open_1; time = 84 }
> │ 00:00:06 v #39 benchmark.run / solutions.map / { i = 2; 
> test_name = closed_1; time = 84 }
> │ 00:00:06 v #40 benchmark.run / solutions.map / { i = 3; 
> test_name = semi_open_2; time = 83 }
> │ 00:00:06 v #41 benchmark.run / solutions.map / { i = 4; 
> test_name = closed_2; time = 89 }
> │ 
> │ 00:00:06 v #42 benchmark.run / { input_str = struct 
> ([|1; 3; 4; 6; 8; 9; 11|], 12, 7) }
> │ 00:00:06 v #43 benchmark.run / solutions.map / { i = 1; 
> test_name = semi_open_1; time = 89 }
> │ 00:00:06 v #44 benchmark.run / solutions.map / { i = 2; 
> test_name = closed_1; time = 86 }
> │ 00:00:07 v #45 benchmark.run / solutions.map / { i = 3; 
> test_name = semi_open_2; time = 85 }
> │ 00:00:07 v #46 benchmark.run / solutions.map / { i = 4; 
> test_name = closed_2; time = 88 }
> │ 
> │ 00:00:07 v #47 benchmark.run / { input_str = struct 
> ([|1; 2; 3; 4...100; ...|], 60, 100) }
> │ 00:00:07 v #48 benchmark.run / solutions.map / { i = 1; 
> test_name = semi_open_1; time = 100 }
> │ 00:00:07 v #49 benchmark.run / solutions.map / { i = 2; 
> test_name = closed_1; time = 108 }
> │ 00:00:07 v #50 benchmark.run / solutions.map / { i = 3; 
> test_name = semi_open_2; time = 102 }
> │ 00:00:08 v #51 benchmark.run / solutions.map / { i = 4; 
> test_name = closed_2; time = 275 }
> │ ```
> │ input                                    	| expected	| result  	| 
> best  
> │ ---                                      	| ---     	| ---     	| 
> ---   
> │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7)    	| US7_0 3 	| US7_0 3 	| 
> 3, 134
> │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7)    	| US7_0 0 	| US7_0 0 	| 
> 1, 84 
> │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7)   	| US7_0 6 	| US7_0 6 	| 
> 3, 84 
> │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7)   	| US7_1   	| US7_1   	| 
> 3, 86 
> │ struct ([1; 2; 3; 4...00; ...], 60, 1000)	| US7_0 59	| US7_0 59	| 
> 1, 110
> │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7)    	| US7_0 3 	| US7_0 3 	| 
> 1, 72 
> │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7)    	| US7_0 0 	| US7_0 0 	| 
> 1, 83 
> │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7)   	| US7_0 6 	| US7_0 6 	| 
> 3, 83 
> │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7)   	| US7_1   	| US7_1   	| 
> 3, 85 
> │ struct ([1; 2; 3; 4...100; ...], 60, 100)	| US7_0 59	| US7_0 59	| 
> 1, 100
> │ ```
> │ 00:00:08 v #52 benchmark.sort_result_list / 
> averages.iter / { i = 3; avg = 93 }
> │ 00:00:08 v #53 benchmark.sort_result_list / 
> averages.iter / { i = 2; avg = 96 }
> │ 00:00:08 v #54 benchmark.sort_result_list / 
> averages.iter / { i = 1; avg = 105 }
> │ 00:00:08 v #55 benchmark.sort_result_list / 
> averages.iter / { i = 4; avg = 114 }
> │ ```
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## returnLettersWithOddCountTests
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ Test: ReturnLettersWithOddCount
> │ 
> │ Solution: 1
> │ Test case 1. A. Time: 645L
> │ 
> │ Solution: 2
> │ Test case 1. A. Time: 663L
> │ 
> │ Solution: 3
> │ Test case 1. A. Time: 680L
> │ 
> │ Solution: 9
> │ Test case 1. A. Time: 730L
> │ 
> │ Solution: 10
> │ Test case 1. A. Time: 815L
> │ 
> │ Input   | Expected        | Result          | Best
> │ ---     | ---             | ---             | ---
> │ 1       | a               | a               | (1, 645)
> │ 2       | ba              | ba              | (1, 663)
> │ 3       | aaa             | aaa             | (1, 680)
> │ 9       | aaaaaaaaa       | aaaaaaaaa       | (1, 730)
> │ 10      | baaaaaaaaa      | baaaaaaaaa      | (1, 815)
> │ 
> │ Averages
> │ Test case 1. Average Time: 706L
> │ 
> │ Ranking
> │ Test case 1. Average Time: 706L
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let solutions = [[
>     "A",
>     fun n ->
>         let mutable _builder = StringBuilder (new string('a', n))
>         if n % 2 = 0 then
>             _builder.[[0]] <- 'b'
> 
>         _builder.ToString ()
> ]]
> let testCases = seq {
>     1, "a"
>     2, "ba"
>     3, "aaa"
>     9, "aaaaaaaaa"
>     10, "baaaaaaaaa"
> }
> let rec returnLettersWithOddCountTests =
>     runAll (nameof returnLettersWithOddCountTests) _count solutions testCases
> returnLettersWithOddCountTests
> |> sortResultList
> 
> ── [ 1.52s - stdout ] ──────────────────────────────────────────────────────────
> │ 
> │ 
> │ Test: returnLettersWithOddCountTests
> │ 
> │ Solution: 1  
> │ Test case 1. A. Time: 140L  
> │ 
> │ Solution: 2  
> │ Test case 1. A. Time: 164L  
> │ 
> │ Solution: 3  
> │ Test case 1. A. Time: 137L  
> │ 
> │ Solution: 9  
> │ Test case 1. A. Time: 139L  
> │ 
> │ Solution: 10  
> │ Test case 1. A. Time: 144L  
> │ 
> │ Input	| Expected  	| Result    	| Best    
> │ ---  	| ---       	| ---       	| ---     
> │ 1    	| a         	| a         	| (1, 140)
> │ 2    	| ba        	| ba        	| (1, 164)
> │ 3    	| aaa       	| aaa       	| (1, 137)
> │ 9    	| aaaaaaaaa 	| aaaaaaaaa 	| (1, 139)
> │ 10   	| baaaaaaaaa	| baaaaaaaaa	| (1, 144)
> │ 
> │ Average Ranking  
> │ Test case 1. Average Time: 144L  
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## hasAnyPairCloseToEachotherTests
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ Test: HasAnyPairCloseToEachother
> │ 
> │ Solution: 0
> │ Test case 1. A. Time: 137L
> │ 
> │ Solution: 1,2
> │ Test case 1. A. Time: 186L
> │ 
> │ Solution: 3,5
> │ Test case 1. A. Time: 206L
> │ 
> │ Solution: 3,4,6
> │ Test case 1. A. Time: 149L
> │ 
> │ Solution: 2,4,6
> │ Test case 1. A. Time: 150L
> │ 
> │ Input   | Expected        | Result  | Best
> │ ---     | ---             | ---     | ---
> │ 0       | False           | False   | (1, 137)
> │ 1,2     | True            | True    | (1, 186)
> │ 3,5     | False           | False   | (1, 206)
> │ 3,4,6   | True            | True    | (1, 149)
> │ 2,4,6   | False           | False   | (1, 150)
> │ 
> │ Averages
> │ Test case 1. Average Time: 165L
> │ 
> │ Ranking
> │ Test case 1. Average Time: 165L
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let solutions = [[
>     "A",
>     fun (a: int[[]]) ->
>         let indices = System.Linq.Enumerable.Range(0, a.Length) |> 
> System.Linq.Enumerable.ToArray
>         System.Array.Sort (a, indices)
> 
>         indices
>         |> Array.take (a.Length - 1)
>         |> Array.exists (fun i -> a.[[i + 1]] - a.[[i]] = 1)
> ]]
> let testCases = seq {
>     [[| 0 |]], false
>     [[| 1; 2 |]], true
>     [[| 3; 5 |]], false
>     [[| 3; 4; 6 |]], true
>     [[| 2; 4; 6 |]], false
> }
> let rec hasAnyPairCloseToEachotherTests =
>     runAll (nameof hasAnyPairCloseToEachotherTests) _count solutions testCases
> hasAnyPairCloseToEachotherTests
> |> sortResultList
> 
> ── [ 1.22s - stdout ] ──────────────────────────────────────────────────────────
> │ 
> │ 
> │ Test: hasAnyPairCloseToEachotherTests
> │ 
> │ Solution: 0  
> │ Test case 1. A. Time: 146L  
> │ 
> │ Solution: 1,2  
> │ Test case 1. A. Time: 92L  
> │ 
> │ Solution: 3,5  
> │ Test case 1. A. Time: 55L  
> │ 
> │ Solution: 3,4,6  
> │ Test case 1. A. Time: 64L  
> │ 
> │ Solution: 2,4,6  
> │ Test case 1. A. Time: 67L  
> │ 
> │ Input	| Expected	| Result	| Best    
> │ ---  	| ---     	| ---   	| ---     
> │ 0    	| False   	| False 	| (1, 146)
> │ 1,2  	| True    	| True  	| (1, 92) 
> │ 3,5  	| False   	| False 	| (1, 55) 
> │ 3,4,6	| True    	| True  	| (1, 64) 
> │ 2,4,6	| False   	| False 	| (1, 67) 
> │ 
> │ Average Ranking  
> │ Test case 1. Average Time: 84L  
> │ 
00:02:32 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 85547 }
00:02:32 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:02:32 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb to html
00:02:32 v #6 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:02:32 v #7 !   validate(nb)
00:02:33 v #8 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:02:33 v #9 !   return _pygments_highlight(
00:02:33 v #10 ! [NbConvertApp] Writing 457908 bytes to /home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.html
00:02:33 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 }
00:02:33 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 }
00:02:33 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:02:34 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:02:34 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:02:34 d #16 spiral.run / dib / { exit_code = 0; result_length = 86498 }
00:00:00 d #1 writeDibCode / output: Fs / path: Perf.dib
00:00:00 d #2 parseDibCode / output: Fs / file: Perf.dib
In [ ]:
{ pwsh ../apps/dir-tree-html/build.ps1 } | Invoke-Block
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "DirTreeHtml.dib"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None; stderr = true } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ # DirTreeHtml (Polyglot)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
> dard2.1/FSharp.Control.AsyncSeq.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
> 0/System.Reactive.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
> netstandard2.0/System.Reactive.Linq.dll"
> #r 
> @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
> #r 
> @"../../../../../../../.nuget/packages/falco.markup/1.1.1/lib/netstandard2.0/Fal
> co.Markup.dll"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #if !INTERACTIVE
> open Lib
> #endif
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open SpiralFileSystem.Operators
> open Falco.Markup
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type FileSystemNode =
>     | File of string * string * int64
>     | Folder of string * string * FileSystemNode list
>     | Root of FileSystemNode list
> 
> let rec scanDirectory isRoot (basePath : string) (path : string) =
>     let relativePath =
>         path
>         |> SpiralSm.replace basePath ""
>         |> SpiralSm.replace "\\" "/"
>         |> SpiralSm.replace "//" "/"
>         |> SpiralSm.trim_start [[| '/' |]]
> 
>     let directories =
>         path
>         |> System.IO.Directory.GetDirectories
>         |> Array.toList
>         |> List.sort
>         |> List.map (scanDirectory false basePath)
>     let files =
>         path
>         |> System.IO.Directory.GetFiles
>         |> Array.toList
>         |> List.sort
>         |> List.map (fun f -> File (System.IO.Path.GetFileName f, relativePath, 
> System.IO.FileInfo(f).Length))
> 
>     let children = directories @ files
>     if isRoot
>     then Root children
>     else Folder (path |> System.IO.Path.GetFileName, relativePath, children)
> 
> let rec generateHtml fsNode =
>     let sizeLabel size =
>         match float size with
>         | size when size > 1024.0 * 1024.0 -> $"%.2f{size / 1024.0 / 1024.0} MB"
>         | size when size > 1024.0 -> $"%.2f{size / 1024.0} KB"
>         | size -> $"%.2f{size} B"
>     match fsNode with
>     | File (fileName, relativePath, size) ->
>         Elem.div [[]] [[
>             Text.raw "&#128196; "
>             Elem.a [[
>                 Attr.href $"""{relativePath}{if relativePath = "" then "" else 
> "/"}{fileName}"""
>             ]] [[
>                 Text.raw fileName
>             ]]
>             Elem.span [[]] [[
>                 Text.raw $" ({size |> sizeLabel})"
>             ]]
>         ]]
>     | Folder (folderName, relativePath, children) ->
>         let size =
>             let rec 루프 children =
>                 children
>                 |> List.sumBy (function
>                     | File (_, _, size) -> size
>                     | Folder (_, _, children)
>                     | Root children -> 루프 children
>                 )
>             루프 children
>         Elem.details [[
>             Attr.open' "true"
>         ]] [[
>             Elem.summary [[]] [[
>                 Text.raw "&#128194; "
>                 Elem.a [[
>                     Attr.href relativePath
>                 ]] [[
>                     Text.raw folderName
>                 ]]
>                 Elem.span [[]] [[
>                     Text.raw $" ({size |> sizeLabel})"
>                 ]]
>             ]]
>             Elem.div [[]] [[
>                 yield! children |> List.map generateHtml
>             ]]
>         ]]
>     | Root children ->
>         Elem.div [[]] [[
>             yield! children |> List.map generateHtml
>         ]]
> 
> let generateHtmlForFileSystem root =
>     $"""<!DOCTYPE html>
> <html lang="en">
> <head>
>   <meta charset="UTF-8">
>   <style>
> body {{
>     background-color: #222;
>     color: #ccc;
> }}
> a {{
>   color: #777;
>   font-size: 15px;
> }}
> span {{
>   font-size: 11px;
> }}
> div > div {{
>   padding-left: 10px;
> }}
> details > div {{
>   padding-left: 19px;
> }}
>   </style>
> </head>
> <body>
>   {root |> generateHtml |> renderNode}
> </body>
> </html>
> """
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let expected = """<!DOCTYPE html>
> <html lang="en">
> <head>
>   <meta charset="UTF-8">
>   <style>
> body {
>     background-color: #222;
>     color: #ccc;
> }
> a {
>   color: #777;
>   font-size: 15px;
> }
> span {
>   font-size: 11px;
> }
> div > div {
>   padding-left: 10px;
> }
> details > div {
>   padding-left: 19px;
> }
>   </style>
> </head>
> <body>
>   <div><details open="true"><summary>&#128194; <a href="_.root">_.root</a><span>
> (10.00 B)</span></summary><div><details open="true"><summary>&#128194; <a 
> href="_.root/3">3</a><span> (6.00 B)</span></summary><div><details 
> open="true"><summary>&#128194; <a href="_.root/3/2">2</a><span> (3.00 
> B)</span></summary><div><details open="true"><summary>&#128194; <a 
> href="_.root/3/2/1">1</a><span> (1.00 B)</span></summary><div><div>&#128196; <a 
> href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00 
> B)</span></div></div></details><div>&#128196; <a 
> href="_.root/3/2/file.txt">file.txt</a><span> (2.00 
> B)</span></div></div></details><div>&#128196; <a 
> href="_.root/3/file.txt">file.txt</a><span> (3.00 
> B)</span></div></div></details><div>&#128196; <a 
> href="_.root/file.txt">file.txt</a><span> (4.00 
> B)</span></div></div></details></div>
> </body>
> </html>
> """
> 
> let struct (tempFolder, disposable) = expected |> SpiralCrypto.hash_text |> 
> SpiralFileSystem.create_temp_dir'
> let rec 루프 d n = async {
>     if n >= 0 then
>         tempFolder </> d |> System.IO.Directory.CreateDirectory |> ignore
>         do!
>             n
>             |> string
>             |> String.replicate (n + 1)
>             |> SpiralFileSystem.write_all_text_async (tempFolder </> d </> 
> $"file.txt")
>         do! 루프 $"{d}/{n}" (n - 1)
> }
> 루프 "_.root" 3
> |> Async.RunSynchronously
> 
> let html =
>     scanDirectory true tempFolder tempFolder
>     |> generateHtmlForFileSystem
> 
> html
> |> _assertEqual expected
> 
> disposable.Dispose ()
> 
> html |> Microsoft.DotNet.Interactive.Formatting.Html.ToHtmlContent
> 
> ── [ 114.66ms - return value ] ─────────────────────────────────────────────────
> │ <!DOCTYPE html>
> │ <html lang="en">
> │ <head>
> │   <meta charset="UTF-8">
> │   <style>
> │ body {
> │     background-color: #222;
> │     color: #ccc;
> │ }
> │ a {
> │   color: #777;
> │   font-size: 15px;
> │ }
> │ span {
> │   font-size: 11px;
> │ }
> │ div > div {
> │   padding-left: 10px;
> │ }
> │ details > div {
> │   padding-left: 19px;
> │ }
> │   </style>
> │ </head>
> │ <body>
> │   <div><details open="true"><summary>&#128194; <a 
> href="_.root">_.root</a><span> (10.00 B)</span></summary><div><details 
> open="true"><summary>&#128194; <a href="_.root/3">3</a><span> (6.00 
> B)</span></summary><div><details open="true"><summary>&#128194; <a 
> href="_.root/3/2">2</a><span> (3.00 B)</span></summary><div><details 
> open="true"><summary>&#128194; <a href="_.root/3/2/1">1</a><span> (1.00 
> B)</span></summary><div><div>&#128196; <a 
> href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00 
> B)</span></div></div></details><div>&#128196; <a 
> href="_.root/3/2/file.txt">file.txt</a><span> (2.00 
> B)</span></div></div></details><div>&#128196; <a 
> href="_.root/3/file.txt">file.txt</a><span> (3.00 
> B)</span></div></div></details><div>&#128196; <a 
> href="_.root/file.txt">file.txt</a><span> (4.00 
> B)</span></div></div></details></div>
> │ </body>
> │ </html>
> │ 
> 
> ── [ 118.03ms - stdout ] ───────────────────────────────────────────────────────
> │ "<!DOCTYPE html>
> │ <html lang="en">
> │ <head>
> │   <meta charset="UTF-8">
> │   <style>
> │ body {
> │     background-color: #222;
> │     color: #ccc;
> │ }
> │ a {
> │   color: #777;
> │   font-size: 15px;
> │ }
> │ span {
> │   font-size: 11px;
> │ }
> │ div > div {
> │   padding-left: 10px;
> │ }
> │ details > div {
> │   padding-left: 19px;
> │ }
> │   </style>
> │ </head>
> │ <body>
> │   <div><details open="true"><summary>&#128194; <a 
> href="_.root">_.root</a><span> (10.00 B)</span></summary><div><details 
> open="true"><summary>&#128194; <a href="_.root/3">3</a><span> (6.00 
> B)</span></summary><div><details open="true"><summary>&#128194; <a 
> href="_.root/3/2">2</a><span> (3.00 B)</span></summary><div><details 
> open="true"><summary>&#128194; <a href="_.root/3/2/1">1</a><span> (1.00 
> B)</span></summary><div><div>&#128196; <a 
> href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00 
> B)</span></div></div></details><div>&#128196; <a 
> href="_.root/3/2/file.txt">file.txt</a><span> (2.00 
> B)</span></div></div></details><div>&#128196; <a 
> href="_.root/3/file.txt">file.txt</a><span> (3.00 
> B)</span></div></div></details><div>&#128196; <a 
> href="_.root/file.txt">file.txt</a><span> (4.00 
> B)</span></div></div></details></div>
> │ </body>
> │ </html>
> │ "
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## Arguments
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> [[<RequireQualifiedAccess>]]
> type Arguments =
>     | [[<Argu.ArguAttributes.ExactlyOnce>]] Dir of string
>     | [[<Argu.ArguAttributes.ExactlyOnce>]] Html of string
> 
>     interface Argu.IArgParserTemplate with
>         member s.Usage =
>             match s with
>             | Dir _ -> nameof Dir
>             | Html _ -> nameof Html
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> Argu.ArgumentParser.Create<Arguments>().PrintUsage ()
> 
> ── [ 80.33ms - return value ] ──────────────────────────────────────────────────
> │ "USAGE: dotnet-repl [--help] --dir <string> --html <string>
> │ 
> │ OPTIONS:
> │ 
> │     --dir <string>        Dir
> │     --html <string>       Html
> │     --help                display this list of options.
> │ "
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## main
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let main args =
>     let argsMap = args |> Runtime.parseArgsMap<Arguments>
> 
>     let dir =
>         match argsMap.[[nameof Arguments.Dir]] with
>         | [[ Arguments.Dir dir ]] -> Some dir
>         | _ -> None
>         |> Option.get
> 
>     let htmlPath =
>         match argsMap.[[nameof Arguments.Html]] with
>         | [[ Arguments.Html html ]] -> Some html
>         | _ -> None
>         |> Option.get
> 
>     let fileSystem = scanDirectory true dir dir
>     let html = generateHtmlForFileSystem fileSystem
> 
>     html |> SpiralFileSystem.write_all_text_async htmlPath
>     |> Async.runWithTimeout 30000
>     |> function
>         | Some () -> 0
>         | None -> 1
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let args =
>     System.Environment.GetEnvironmentVariable "ARGS"
>     |> SpiralRuntime.split_args
>     |> Result.toArray
>     |> Array.collect id
> 
> match args with
> | [[||]] -> 0
> | args -> if main args = 0 then 0 else failwith "main failed"
> 
> ── [ 59.90ms - return value ] ──────────────────────────────────────────────────
> │ <div class="dni-plaintext"><pre>0
> │ </pre></div><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
00:00:16 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 13908 }
00:00:16 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:00:17 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb to html
00:00:17 v #6 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:17 v #7 !   validate(nb)
00:00:17 v #8 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:17 v #9 !   return _pygments_highlight(
00:00:17 v #10 ! [NbConvertApp] Writing 310043 bytes to /home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.html
00:00:17 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 924 }
00:00:17 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 924 }
00:00:17 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:00:18 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:18 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:18 d #16 spiral.run / dib / { exit_code = 0; result_length = 14891 }
00:00:00 d #1 writeDibCode / output: Fs / path: DirTreeHtml.dib
00:00:00 d #2 parseDibCode / output: Fs / file: DirTreeHtml.dib
00:00:00 d #1 persistCodeProject / packages: [Argu; Falco.Markup; FSharp.Control.AsyncSeq; ... ] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: DirTreeHtml / hash:  / code.Length: 4632
00:00:00 d #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "/home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/dist" --runtime linux-x64"; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml"; stderr = true } }
00:00:00 v #2 >   Determining projects to restore...
00:00:01 v #3 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:01 v #4 >   The last full restore is still up to date. Nothing left to do.
00:00:01 v #5 >   Total time taken: 0 milliseconds
00:00:01 v #6 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:01 v #7 >   Restoring /home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj
00:00:01 v #8 >   Starting restore process.
00:00:01 v #9 >   Total time taken: 0 milliseconds
00:00:02 v #10 >   Restored /home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj (in 258 ms).
00:00:13 v #11 >   DirTreeHtml -> /home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/bin/Release/net9.0/linux-x64/DirTreeHtml.dll
00:00:13 v #12 >   DirTreeHtml -> /home/runner/work/polyglot/polyglot/apps/dir-tree-html/dist
00:00:13 d #13 runtime.execute_with_options_async / { exit_code = 0; output_length = 728; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml"; stderr = true } }
polyglot/apps/dir-tree-html/build.ps1 / $env:CI:'true'
In [ ]:
{ pwsh ../apps/scheduler/build.ps1 } | Invoke-Block
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Tasks.dib", "--retries", "3"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None; stderr = true } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## Tasks (Polyglot)
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> 
> open testing
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## task_name
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> nominal task_name = string
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## manual_scheduling
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> union manual_scheduling =
>     | WithSuggestion
>     | WithoutSuggestion
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## recurrency_offset
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> union recurrency_offset =
>     | Days : int
>     | Weeks : int
>     | Months : int
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## fixed_recurrency
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> union fixed_recurrency =
>     | Weekly : date_time.day_of_week
>     | Monthly : date_time.day
>     | Yearly : date_time.day * date_time.month
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## recurrency
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> union recurrency =
>     | Offset : recurrency_offset
>     | Fixed : list fixed_recurrency
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## scheduling
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> union scheduling =
>     | Manual : manual_scheduling
>     | Recurrent : recurrency
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## task
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> type task =
>     {
>         name : task_name
>         scheduling : scheduling
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## date
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> type date =
>     {
>         year : date_time.year
>         month : date_time.month
>         day : date_time.day
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## status
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> union status =
>     | Postponed : option ()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## event
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> type event =
>     {
>         date : date
>         status : status
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## task_template
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> type task_template =
>     {
>         task : task
>         events : list event
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## get_tasks (test)
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> 
> inl get_tasks () : list task_template =
>     [[
>         {
>             task =
>                 {
>                     name = task_name "01"
>                     scheduling = Manual WithSuggestion
>                 }
>             events = [[]]
>         }
>         {
>             task =
>                 {
>                     name = task_name "02"
>                     scheduling = Manual WithSuggestion
>                 }
>             events = [[]]
>         }
>         {
>             task =
>                 {
>                     name = task_name "03"
>                     scheduling = Manual WithSuggestion
>                 }
>             events = [[]]
>         }
>     ]]
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! fsharp
> ///! cuda
> ///! rust
> ///! typescript
> ///! python
> 
> get_tasks ()
> |> sm'.format_debug
> |> _assert sm'.contains "01"
> 
> ── [ 13.36s - return value ] ───────────────────────────────────────────────────
> │ .py output (Python):
> │ { name = __assert; actual = 01; expected = UH2_1(v0='01', 
> v1=US1_0(v0=US0_0()), v2=UH1_0(), v3=UH2_1(v0='02', v1=US1_0(v0=US0_0()), 
> v2=UH1_0(), v3=UH2_1(v0='03', v1=US1_0(v0=US0_0()), v2=UH1_0(), v3=UH2_0()))) }
> │ 
> │ .rs output:
> │ { name = __assert; actual = 01; expected = UH2_1("01", 
> US1_0(US0_0), UH1_0, UH2_1("02", US1_0(US0_0), UH1_0, UH2_1("03", US1_0(US0_0), 
> UH1_0, UH2_0))) }
> │ 
> │ .ts output:
> │ { name = __assert; actual = 01; expected = UH2_1 (01, US1_0 
> US0_0, UH1_0, UH2_1 (02, US1_0 US0_0, UH1_0, UH2_1 (03, US1_0 US0_0, UH1_0, 
> UH2_0))) }
> │ 
> │ .py output:
> │ { name = __assert; actual = 01; expected = UH2_1 ("01", US1_0
> US0_0, UH1_0, UH2_1 ("02", US1_0 US0_0, UH1_0, UH2_1 ("03", US1_0 US0_0, UH1_0, 
> UH2_0))) }
> │ 
> │ 
> 
> ── [ 13.36s - stdout ] ─────────────────────────────────────────────────────────
> │ .fsx output:
> │ { name = __assert; actual = 01; expected = UH2_1
> │   ("01", US1_0 US0_0, UH1_0,
> │    UH2_1 ("02", US1_0 US0_0, UH1_0, UH2_1 ("03", US1_0 US0_0,
> UH1_0, UH2_0))) }
> │ 
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! fsharp
> ///! cuda
> ///! rust
> ///! typescript
> ///! python
> 
> get_tasks ()
> |> listm'.try_item 0i32
> |> fun (Some task) => task.task.name
> |> _assert_eq (task_name "01")
> 
> ── [ 7.96s - return value ] ────────────────────────────────────────────────────
> │ .py output (Python):
> │ { name = __assert_eq; actual = 01; expected = 01 }
> │ 
> │ .rs output:
> │ { name = __assert_eq; actual = "01"; expected = "01" }
> │ 
> │ .ts output:
> │ { name = __assert_eq; actual = 01; expected = 01 }
> │ 
> │ .py output:
> │ { name = __assert_eq; actual = 01; expected = 01 }
> │ 
> │ 
> 
> ── [ 7.96s - stdout ] ──────────────────────────────────────────────────────────
> │ .fsx output:
> │ { name = __assert_eq; actual = "01"; expected = "01" }
> │ 
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! fsharp
> ////! cuda
> ////! typescript
> ////! python
> ///// print_code
> 
> inl print padding cols =
>     ({ lines = [[]]; last_lines = [[]]; max_acc = 0i32 }, cols)
>     ||> listm.fold fun { last_lines max_acc } lines =>
>         inl { count max } =
>             (lines, { count = 0i32; max = 0i32 })
>             ||> listm.foldBack fun line { count max } => {
>                 count = count + 1
>                 max =
>                     inl len = line |> sm'.length
>                     if len > max
>                     then len
>                     else max
>             }
>         inl { lines } =
>             (lines, { lines = [[]]; i = 0i32 })
>             ||> listm.foldBack fun line { lines i } => {
>                 lines =
>                     inl last_line =
>                         last_lines
>                         |> listm'.try_item (count - i - 1)
>                         |> optionm'.default_with fun () =>
>                             " " |> sm'.replicate max_acc
>                     inl line =
>                         if padding = 0
>                         then line
>                         else
>                             inl padding = " " |> sm'.replicate padding
>                             $'$"{!line}{!padding}"'
>                     inl line = line |> sm'.pad_right (max + padding) ' '
>                     $'$"{!last_line}{!line}"' :: lines
>                 i = i + 1
>             }
>         {
>             lines
>             last_lines = lines
>             max_acc = max_acc + max + padding
>         }
>     |> fun x => x.lines
>     |> listm'.box
>     |> seq.of_list'
>     |> sm'.concat "\n"
> 
> inl col () =
>     [[ "Task" ]]
>     ++ (
>         get_tasks ()
>         |> listm.map fun task =>
>             inl (task_name name) = task.task.name
>             name
>     )
> 
> inl cols () =
>     [[
>         col ()
>         col ()
>         [[ "a"; "b"; "c"; "d"; "e" ]]
>     ]]
> 
> inl main () =
>     cols ()
>     |> print 1i32
>     |> console.write_line
> 
> ── [ 324.98ms - stdout ] ───────────────────────────────────────────────────────
> │ Task Task a 
> │ 01   01   b 
> │ 02   02   c 
> │ 03   03   d 
> │           e 
> │ 
00:00:31 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 9834 }
00:00:31 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:00:32 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb to html
00:00:32 v #6 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:32 v #7 !   validate(nb)
00:00:32 v #8 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:32 v #9 !   return _pygments_highlight(
00:00:32 v #10 ! [NbConvertApp] Writing 304760 bytes to /home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.html
00:00:32 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 904 }
00:00:32 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 904 }
00:00:32 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:00:33 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:33 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:33 d #16 spiral.run / dib / { exit_code = 0; result_length = 10797 }
00:00:00 d #1 writeDibCode / output: Spi / path: Tasks.dib
00:00:00 d #2 parseDibCode / output: Spi / file: Tasks.dib
In [ ]:
{ pwsh ../apps/chat/build.ps1 } | Invoke-Block
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "chat_contract.dib", "--retries", "5"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None; stderr = true } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ # chat_contract
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> open rust
> open rust.rust_operators
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> 
> open testing
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## chat_contract
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### state
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> type state =
>     {
>         version : u32
>         account_set : near.iterable_set near.account_id
>         alias_set : near.iterable_set sm'.std_string
>         account_map : near.lookup_map near.account_id sm'.std_string
>         alias_map : near.lookup_map sm'.std_string (mapm.hash_map 
> near.account_id (u64 * u32))
>     }
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -c
> 
> ()
> 
> ── [ 57.61s - return value ] ───────────────────────────────────────────────────
> │ Installed near-sandbox into 
> /home/runner/work/polyglot/spiral/workspace/target/release/build/near-sandbox-ut
> ils-cdf556a7364ec456/out/.near/near-sandbox-1.40.0_7dd0b5993577f592be15eb102e5a3
> da37be66271/near-sandbox
> │  
> │ 00:00:04 i #2 near_workspaces.print_usd / { retry = 1; 
> total_gas_burnt_usd = +0.000808; total_gas_burnt = 1209293011611 }
> │ 00:00:04 i #3 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:04 i #4 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602; 
> gas_burnt = 901211152271; tokens_burnt = 90121115227100000000 }
> │ 00:00:04 w #5 spiral_wasm.run / Error error / { retry =
> 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" }
> │ 
> │ 
> │  
> │ 00:00:06 i #8 near_workspaces.print_usd / { retry = 2; 
> total_gas_burnt_usd = +0.000808; total_gas_burnt = 1209293011611 }
> │ 00:00:06 i #9 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:06 i #10 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602; 
> gas_burnt = 901211152271; tokens_burnt = 90121115227100000000 }
> │ 00:00:06 w #11 spiral_wasm.run / Error error ...n / 
> Error error / { retry = 13; error = "{ receipt_outcomes_len = 1; retry = 13; 
> receipt_failures = [] }" }
> │ 
> │ 
> │  
> │ 00:00:36 i #80 near_workspaces.print_usd / { retry = 
> 14; total_gas_burnt_usd = +0.000808; total_gas_burnt = 1209293011611 }
> │ 00:00:36 i #81 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:36 i #82 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602; 
> gas_burnt = 901211152271; tokens_burnt = 90121115227100000000 }
> │ 00:00:36 w #83 spiral_wasm.run / Error error / { retry 
> = 14; error = "{ receipt_outcomes_len = 1; retry = 14; receipt_failures = [] }" 
> }
> │ 
> │ 
> │  
> │ 00:00:39 i #86 near_workspaces.print_usd / { retry = 
> 15; total_gas_burnt_usd = +0.000808; total_gas_burnt = 1209293011611 }
> │ 00:00:39 i #87 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:39 i #88 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602; 
> gas_burnt = 901211152271; tokens_burnt = 90121115227100000000 }
> │ 00:00:39 w #89 spiral_wasm.run / Error error / { retry 
> = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }" 
> }
> │ 
> │ 
> │ 
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -c
> 
> trace Verbose (fun () => "") id
> 
> ── [ 47.65s - return value ] ───────────────────────────────────────────────────
> │  
> │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; 
> total_gas_burnt_usd = +0.000870; total_gas_burnt = 1302031825155 }
> │ 00:00:02 i #3 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:02 i #4 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000664; tokens_burnt_usd = +0.000664; 
> gas_burnt = 993949965815; tokens_burnt = 99394996581500000000 }
> │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry =
> 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" }
> │ 
> │ 
> │  
> │ 00:00:05 i #8 near_workspaces.print_usd / { retry = 2; 
> total_gas_burnt_usd = +0.000870; total_gas_burnt = 1302031825155 }
> │ 00:00:05 i #9 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:05 i #10 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000664; tokens_burnt_usd = +0.000664; 
> gas_burnt = 993949965815; tokens_burnt = 99394996581500000000 }
> │ 00:00:05 w #11 spiral_wasm.run / Error error / { retry 
> = 2; error = "{ receipt_outcomes_len = 1; retry = 2; receipt_failures = [] }" }
> │ 
> │ 
> │  
> │ 00:00:07 i #14 near_workspaces.print_usd / { retry = 3;
> total_gas_burnt_usd = +0.000870; total_gas_burnt = 13...n / Error error / { 
> retry = 13; error = "{ receipt_outcomes_len = 1; retry = 13; receipt_failures = 
> [] }" }
> │ 
> │ 
> │  
> │ 00:00:35 i #80 near_workspaces.print_usd / { retry = 
> 14; total_gas_burnt_usd = +0.000870; total_gas_burnt = 1302031825155 }
> │ 00:00:35 i #81 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:35 i #82 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000664; tokens_burnt_usd = +0.000664; 
> gas_burnt = 993949965815; tokens_burnt = 99394996581500000000 }
> │ 00:00:35 w #83 spiral_wasm.run / Error error / { retry 
> = 14; error = "{ receipt_outcomes_len = 1; retry = 14; receipt_failures = [] }" 
> }
> │ 
> │ 
> │  
> │ 00:00:38 i #86 near_workspaces.print_usd / { retry = 
> 15; total_gas_burnt_usd = +0.000870; total_gas_burnt = 1302031825155 }
> │ 00:00:38 i #87 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:38 i #88 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000664; tokens_burnt_usd = +0.000664; 
> gas_burnt = 993949965815; tokens_burnt = 99394996581500000000 }
> │ 00:00:38 w #89 spiral_wasm.run / Error error / { retry 
> = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }" 
> }
> │ 
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### new
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl new () : state =
>     {
>         version = 2
>         account_set = "account_set" |> sm'.byte_slice |> near.new_iterable_set
>         alias_set = "alias_set" |> sm'.byte_slice |> near.new_iterable_set
>         account_map = "account_map" |> sm'.byte_slice |> near.new_lookup_map
>         alias_map = "alias_map" |> sm'.byte_slice |> near.new_lookup_map
>     }
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -c
> 
> inl state = new ()
> trace Verbose (fun () => "chat_contract") fun () => { state = state |> 
> sm'.format_debug }
> trace Verbose (fun () => "") id
> 
> ── [ 33.21s - return value ] ───────────────────────────────────────────────────
> │ 00:00:00 v #1 chat_contract / { state = (2, IterableSet
> { elements: Vector { len: 0, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, 
> 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, 
> 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector { len: 0, prefix: 
> [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: 
> [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, LookupMap { prefix: [97, 
> 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap { prefix: [97, 108, 
> 105, 97, 115, 95, 109, 97, 112] }) }
> │  
> │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; 
> total_gas_burnt_usd = +0.001381; total_gas_burnt = 2067559520448 }
> │ 00:00:02 i #3 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:02 i #4 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.001175; tokens_burnt_usd = +0.001175; 
> gas_burnt = 1759477661108; tokens_burnt = 175947766110800000000 }
> │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry =
> 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" }
> │ 
> │ 
> │ 00:00:00 v #1 chat_contract / { state = (2, IterableSet
> { elements: Vector { len: 0, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, 
> 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, 
> 95, 115, 101,...661108; tokens_burnt = 175947766110800000000 }
> │ 00:00:20 w #47 spiral_wasm.run / Error error / { retry 
> = 8; error = "{ receipt_outcomes_len = 1; retry = 8; receipt_failures = [] }" }
> │ 
> │ 
> │ 00:00:00 v #1 chat_contract / { state = (2, IterableSet
> { elements: Vector { len: 0, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, 
> 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, 
> 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector { len: 0, prefix: 
> [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: 
> [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, LookupMap { prefix: [97, 
> 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap { prefix: [97, 108, 
> 105, 97, 115, 95, 109, 97, 112] }) }
> │  
> │ 00:00:22 i #50 near_workspaces.print_usd / { retry = 9;
> total_gas_burnt_usd = +0.001530; total_gas_burnt = 2290742082948 }
> │ 00:00:22 i #51 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:22 i #52 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.001175; tokens_burnt_usd = +0.001175; 
> gas_burnt = 1759477661108; tokens_burnt = 175947766110800000000 }
> │ 00:00:22 i #53 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; 
> gas_burnt = 223182562500; tokens_burnt = 0 }
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### is_valid_alias
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl is_valid_alias (alias : sm'.std_string) : bool =
>     inl alias' = alias |> sm'.from_std_string
>     inl alias_len = alias' |> sm'.length
> 
>     alias_len > 0i32
>         && alias_len < 64
>         && (alias' |> sm'.starts_with "-" |> not)
>         && (alias' |> sm'.ends_with "-" |> not)
>         && (alias' |> sm'.as_str |> sm'.chars |> iter.all (fun c => (c |> 
> sm'.char_is_alphanumeric) || c = '-'))
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -c
> 
> ""
> |> sm'.to_std_string
> |> is_valid_alias
> |> _assert_eq false
> 
> ── [ 46.07s - return value ] ───────────────────────────────────────────────────
> │  
> │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; 
> total_gas_burnt_usd = +0.000863; total_gas_burnt = 1291825584087 }
> │ 00:00:02 i #3 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:02 i #4 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000657; tokens_burnt_usd = +0.000657; 
> gas_burnt = 983743724747; tokens_burnt = 98374372474700000000 }
> │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry =
> 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" }
> │ 
> │ 
> │  
> │ 00:00:05 i #8 near_workspaces.print_usd / { retry = 2; 
> total_gas_burnt_usd = +0.000863; total_gas_burnt = 1291825584087 }
> │ 00:00:05 i #9 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:05 i #10 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000657; tokens_burnt_usd = +0.000657; 
> gas_burnt = 983743724747; tokens_burnt = 98374372474700000000 }
> │ 00:00:05 w #11 spiral_wasm.run / Error error / { retry 
> = 2; error = "{ receipt_outcomes_len = 1; retry = 2; receipt_failures = [] }" }
> │ 
> │ 
> │  
> │ 00:00:07 i #14 near_workspaces.print_usd / { retry = 3;
> total_gas_burnt_usd = +0.000863; total_gas_burnt = 12...n / Error error / { 
> retry = 13; error = "{ receipt_outcomes_len = 1; retry = 13; receipt_failures = 
> [] }" }
> │ 
> │ 
> │  
> │ 00:00:35 i #80 near_workspaces.print_usd / { retry = 
> 14; total_gas_burnt_usd = +0.000863; total_gas_burnt = 1291825584087 }
> │ 00:00:35 i #81 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:35 i #82 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000657; tokens_burnt_usd = +0.000657; 
> gas_burnt = 983743724747; tokens_burnt = 98374372474700000000 }
> │ 00:00:35 w #83 spiral_wasm.run / Error error / { retry 
> = 14; error = "{ receipt_outcomes_len = 1; retry = 14; receipt_failures = [] }" 
> }
> │ 
> │ 
> │  
> │ 00:00:38 i #86 near_workspaces.print_usd / { retry = 
> 15; total_gas_burnt_usd = +0.000863; total_gas_burnt = 1291825584087 }
> │ 00:00:38 i #87 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:38 i #88 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000657; tokens_burnt_usd = +0.000657; 
> gas_burnt = 983743724747; tokens_burnt = 98374372474700000000 }
> │ 00:00:38 w #89 spiral_wasm.run / Error error / { retry 
> = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }" 
> }
> │ 
> │ 
> │ 
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -c
> 
> "a-"
> |> sm'.to_std_string
> |> is_valid_alias
> |> _assert_eq false
> 
> ── [ 46.01s - return value ] ───────────────────────────────────────────────────
> │  
> │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; 
> total_gas_burnt_usd = +0.000864; total_gas_burnt = 1293875822622 }
> │ 00:00:02 i #3 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:02 i #4 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000659; tokens_burnt_usd = +0.000659; 
> gas_burnt = 985793963282; tokens_burnt = 98579396328200000000 }
> │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry =
> 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" }
> │ 
> │ 
> │  
> │ 00:00:05 i #8 near_workspaces.print_usd / { retry = 2; 
> total_gas_burnt_usd = +0.000864; total_gas_burnt = 1293875822622 }
> │ 00:00:05 i #9 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:05 i #10 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000659; tokens_burnt_usd = +0.000659; 
> gas_burnt = 985793963282; tokens_burnt = 98579396328200000000 }
> │ 00:00:05 w #11 spiral_wasm.run / Error error / { retry 
> = 2; error = "{ receipt_outcomes_len = 1; retry = 2; receipt_failures = [] }" }
> │ 
> │ 
> │  
> │ 00:00:07 i #14 near_workspaces.print_usd / { retry = 3;
> total_gas_burnt_usd = +0.000864; total_gas_burnt = 12...n / Error error / { 
> retry = 13; error = "{ receipt_outcomes_len = 1; retry = 13; receipt_failures = 
> [] }" }
> │ 
> │ 
> │  
> │ 00:00:35 i #80 near_workspaces.print_usd / { retry = 
> 14; total_gas_burnt_usd = +0.000864; total_gas_burnt = 1293875822622 }
> │ 00:00:35 i #81 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:35 i #82 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000659; tokens_burnt_usd = +0.000659; 
> gas_burnt = 985793963282; tokens_burnt = 98579396328200000000 }
> │ 00:00:35 w #83 spiral_wasm.run / Error error / { retry 
> = 14; error = "{ receipt_outcomes_len = 1; retry = 14; receipt_failures = [] }" 
> }
> │ 
> │ 
> │  
> │ 00:00:37 i #86 near_workspaces.print_usd / { retry = 
> 15; total_gas_burnt_usd = +0.000864; total_gas_burnt = 1293875822622 }
> │ 00:00:37 i #87 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:37 i #88 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000659; tokens_burnt_usd = +0.000659; 
> gas_burnt = 985793963282; tokens_burnt = 98579396328200000000 }
> │ 00:00:37 w #89 spiral_wasm.run / Error error / { retry 
> = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }" 
> }
> │ 
> │ 
> │ 
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -c
> 
> "a-a"
> |> sm'.to_std_string
> |> is_valid_alias
> |> _assert_eq true
> 
> ── [ 46.00s - return value ] ───────────────────────────────────────────────────
> │  
> │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; 
> total_gas_burnt_usd = +0.000865; total_gas_burnt = 1295272816032 }
> │ 00:00:02 i #3 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:02 i #4 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000659; tokens_burnt_usd = +0.000659; 
> gas_burnt = 987190956692; tokens_burnt = 98719095669200000000 }
> │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry =
> 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" }
> │ 
> │ 
> │  
> │ 00:00:05 i #8 near_workspaces.print_usd / { retry = 2; 
> total_gas_burnt_usd = +0.000865; total_gas_burnt = 1295272816032 }
> │ 00:00:05 i #9 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:05 i #10 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000659; tokens_burnt_usd = +0.000659; 
> gas_burnt = 987190956692; tokens_burnt = 98719095669200000000 }
> │ 00:00:05 w #11 spiral_wasm.run / Error error / { retry 
> = 2; error = "{ receipt_outcomes_len = 1; retry = 2; receipt_failures = [] }" }
> │ 
> │ 
> │  
> │ 00:00:07 i #14 near_workspaces.print_usd / { retry = 3;
> total_gas_burnt_usd = +0.000865; total_gas_burnt = 12...n / Error error / { 
> retry = 13; error = "{ receipt_outcomes_len = 1; retry = 13; receipt_failures = 
> [] }" }
> │ 
> │ 
> │  
> │ 00:00:35 i #80 near_workspaces.print_usd / { retry = 
> 14; total_gas_burnt_usd = +0.000865; total_gas_burnt = 1295272816032 }
> │ 00:00:35 i #81 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:35 i #82 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000659; tokens_burnt_usd = +0.000659; 
> gas_burnt = 987190956692; tokens_burnt = 98719095669200000000 }
> │ 00:00:35 w #83 spiral_wasm.run / Error error / { retry 
> = 14; error = "{ receipt_outcomes_len = 1; retry = 14; receipt_failures = [] }" 
> }
> │ 
> │ 
> │  
> │ 00:00:38 i #86 near_workspaces.print_usd / { retry = 
> 15; total_gas_burnt_usd = +0.000865; total_gas_burnt = 1295272816032 }
> │ 00:00:38 i #87 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:38 i #88 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000659; tokens_burnt_usd = +0.000659; 
> gas_burnt = 987190956692; tokens_burnt = 98719095669200000000 }
> │ 00:00:38 w #89 spiral_wasm.run / Error error / { retry 
> = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }" 
> }
> │ 
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### generate_cid
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl generate_cid (content : am'.vec u8) : sm'.std_string =
>     !\($'"  fn encode_u64(value: u64) -> Vec<u8> { //"') : ()
>     !\($'"    let mut buffer = unsigned_varint::encode::u64_buffer(); //"') : ()
>     !\($'"    unsigned_varint::encode::u64(value, &mut buffer).to_vec() //"') : 
> ()
>     !\($'"  } //"') : ()
> 
>     !\($'"  fn sha256_hash(content: &[[u8]]) -> Vec<u8> { //"') : ()
>     !\($'"    let mut hasher: sha2::Sha256 = sha2::Digest::new(); //"') : ()
>     !\($'"    sha2::Digest::update(&mut hasher, content); //"') : ()
>     !\($'"    sha2::Digest::finalize(hasher).to_vec() //"') : ()
>     !\($'"  } //"') : ()
> 
>     !\($'"  let version: u8 = 1; //"') : ()
>     !\($'"  let codec_raw: u64 = 0x55; //"') : ()
> 
>     !\($'"  let codec_bytes = encode_u64(codec_raw); //"') : ()
>     !\($'"  let hash_result = sha256_hash(&!content); //"') : ()
>     !\($'"  let multihash = std::iter::once(0x12) //"') : ()
>     !\($'"    .chain(std::iter::once(32)) //"') : ()
>     !\($'"    .chain(hash_result.into_iter()) //"') : ()
>     !\($'"    .collect(); //"') : ()
>     !\($'"  let cid_bytes = [[vec\![[version]], codec_bytes, 
> multihash]].concat(); //"') : ()
>     !\($'"  let result = multibase::encode(multibase::Base::Base32Lower, 
> &cid_bytes); //"') : ()
>     !\($'"result"')
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -c -d multibase sha2 unsigned-varint
> 
> ;[[]]
> |> am'.to_vec
> |> generate_cid
> |> sm'.from_std_string
> |> _assert_eq "bafkreihdwdcefgh4dqkjv67uzcmw7ojee6xedzdetojuzjevtenxquvyku"
> 
> ── [ 42.62s - return value ] ───────────────────────────────────────────────────
> │  
> │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; 
> total_gas_burnt_usd = +0.000928; total_gas_burnt = 1389831531795 }
> │ 00:00:02 i #3 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:02 i #4 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000723; tokens_burnt_usd = +0.000723; 
> gas_burnt = 1081749672455; tokens_burnt = 108174967245500000000 }
> │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry =
> 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" }
> │ 
> │ 
> │  
> │ 00:00:05 i #8 near_workspaces.print_usd / { retry = 2; 
> total_gas_burnt_usd = +0.000928; total_gas_burnt = 1389831531795 }
> │ 00:00:05 i #9 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:05 i #10 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000723; tokens_burnt_usd = +0.000723; 
> gas_burnt = 1081749672455; tokens_burnt = 108174967245500000000 }
> │ 00:00:05 w #11 spiral_wasm.run / Error error / { retry 
> = 2; error = "{ receipt_outcomes_len = 1; retry = 2; receipt_failures = [] }" }
> │ 
> │ 
> │  
> │ 00:00:07 i #14 near_workspaces.print_usd / { retry = 3;
> total_gas_burnt_usd = +0.000928; total_gas_burnt ...{ receipt_outcomes_len = 1; 
> retry = 11; receipt_failures = [] }" }
> │ 
> │ 
> │  
> │ 00:00:30 i #68 near_workspaces.print_usd / { retry = 
> 12; total_gas_burnt_usd = +0.000928; total_gas_burnt = 1389831531795 }
> │ 00:00:30 i #69 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:30 i #70 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000723; tokens_burnt_usd = +0.000723; 
> gas_burnt = 1081749672455; tokens_burnt = 108174967245500000000 }
> │ 00:00:30 w #71 spiral_wasm.run / Error error / { retry 
> = 12; error = "{ receipt_outcomes_len = 1; retry = 12; receipt_failures = [] }" 
> }
> │ 
> │ 
> │  
> │ 00:00:32 i #74 near_workspaces.print_usd / { retry = 
> 13; total_gas_burnt_usd = +0.001077; total_gas_burnt = 1613014094295 }
> │ 00:00:32 i #75 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:32 i #76 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000723; tokens_burnt_usd = +0.000723; 
> gas_burnt = 1081749672455; tokens_burnt = 108174967245500000000 }
> │ 00:00:32 i #77 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; 
> gas_burnt = 223182562500; tokens_burnt = 0 }
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### claim_alias
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl claim_alias (state : rust.ref (rust.mut' state)) (alias : sm'.std_string) : 
> () =
>     inl account_set : rust.ref (rust.mut' (near.iterable_set near.account_id)) =
>         !\($'$"&mut !state.1"')
> 
>     inl alias_set : rust.ref (rust.mut' (near.iterable_set sm'.std_string)) =
>         !\($'$"&mut !state.2"')
> 
>     inl account_map : rust.ref (rust.mut' (near.lookup_map near.account_id 
> sm'.std_string)) =
>         !\($'$"&mut !state.3"')
> 
>     inl alias_map : rust.ref (rust.mut' (near.lookup_map sm'.std_string 
> (mapm.hash_map near.account_id (u64 * u32)))) =
>         !\($'$"&mut !state.4"')
> 
>     inl signer_account_id = near.signer_account_id ()
>     inl predecessor_account_id = near.predecessor_account_id ()
>     inl block_timestamp = near.block_timestamp ()
> 
>     trace Debug
>         fun () => "chat_contract.claim_alias"
>         fun () => {
>             alias
>             block_timestamp
>             signer_account_id = signer_account_id |> sm'.to_string'
>             predecessor_account_id = predecessor_account_id |> sm'.to_string'
>         }
> 
>     if alias |> is_valid_alias |> not
>     then near.panic_str "chat_contract.claim_alias / invalid alias" . true
>     else false
>     |> ignore
> 
>     inl account_alias =
>         account_map
>         |> near.lookup_get signer_account_id
>         |> optionm'.cloned
> 
>     match account_alias |> optionm'.unbox with
>     | Some account_alias when account_alias =. alias =>
>         trace Warning
>             fun () => "chat_contract.claim_alias / alias already claimed"
>             fun () => { account_alias = account_alias |> sm'.format_debug }
>     | account_alias' =>
>         trace Debug
>             fun () => "chat_contract.claim_alias"
>             fun () => { account_alias = account_alias |> sm'.format_debug }
> 
>         match account_alias' with
>         | Some account_alias =>
>             !\($'"    !alias_map //"') : ()
>             !\($'"      .get_mut(&!account_alias) //"') : ()
>             !\($'"      .unwrap() //"') : ()
>             !\\(signer_account_id, $'"      .remove(&$0); //"') : ()
>         | None => ()
> 
>         !\\((signer_account_id, alias), $'"  !account_map.insert($0.clone(), 
> $1.clone()); //"') : ()
> 
>         account_set |> near.iterable_set_insert signer_account_id |> ignore
>         alias_set |> near.iterable_set_insert alias |> ignore
> 
>         !\\(alias, $'"  let new_alias_account_map = match !alias_map.get(&$0) { 
> //"') : ()
>         !\($'"    None => { //"') : ()
>         !\($'"      let mut new_map = std::collections::HashMap::new(); //"') : 
> ()
>         !\\((signer_account_id, block_timestamp), $'"      new_map.insert($0, 
> ($1, 0u32)); //"') : ()
>         !\($'"      new_map //"') : ()
>         !\($'"    } //"') : ()
>         !\($'"    Some(accounts) => { //"') : ()
>         !\($'"      let mut accounts_vec = accounts.iter().collect::<Vec<_>>(); 
> //"') : ()
>         !\($'"      accounts_vec.sort_unstable_by_key(|(_, (_, index))| index); 
> //"') : ()
>         !\($'"      let mut new_map = accounts_vec //"') : ()
>         !\($'"        .iter() //"') : ()
>         !\($'"        .enumerate() //"') : ()
>         !\($'"        .map(|(i, (signer_account_id, (timestamp, _)))| { //"') : 
> ()
>         !\($'"          ((*signer_account_id).clone(), (*timestamp, i as u32)) 
> //"') : ()
>         !\($'"        }) //"') : ()
>         !\($'"        .collect::<std::collections::HashMap<_, _>>(); //"') : ()
>         !\\(signer_account_id, $'"      new_map.insert($0, (!block_timestamp, 
> accounts_vec.len() as u32)); //"') : ()
>         !\($'"      new_map //"') : ()
>         !\($'"    } //"') : ()
>         !\($'"  }; //"') : ()
> 
>         !\\(alias, $'"  !alias_map.insert($0, new_alias_account_map); //"') : ()
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -c
> 
> inl state = new ()
> inl version = state.version
> inl account_set = state.account_set
> inl alias_set = state.alias_set
> inl account_map = state.account_map
> inl alias_map = state.alias_map
> inl version = join version
> inl account_set = join account_set
> inl alias_set = join alias_set
> inl account_map = join account_map
> inl alias_map = join alias_map
> inl state : rust.ref (rust.mut' state) =
>     !\\(
>         version,
>         $'$"&mut ($0, !account_set, !alias_set, !account_map, !alias_map)"'
>     )
> 
> "alias1"
> |> sm'.to_std_string
> |> claim_alias state
> 
> trace Verbose
>     fun () => "chat_contract"
>     fun () => { state = state |> sm'.format_debug }
> 
> trace Debug (fun () => "") id
> 
> ── [ 50.51s - return value ] ───────────────────────────────────────────────────
> │ 00:00:00 d #1 chat_contract.claim_alias / { alias = 
> "alias1"; block_timestamp = 1750365078473494130; signer_account_id = 
> "dev-20250619203117-52682565976824"; predecessor_account_id = 
> "dev-20250619203117-52682565976824" }
> │ 00:00:00 d #2 chat_contract.claim_alias / { 
> account_alias = None }
> │ 00:00:00 v #3 chat_contract / { state = (2, IterableSet
> { elements: Vector { len: 1, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, 
> 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, 
> 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector { len: 1, prefix: 
> [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: 
> [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, LookupMap { prefix: [97, 
> 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap { prefix: [97, 108, 
> 105, 97, 115, 95, 109, 97, 112] }) }
> │  
> │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; 
> total_gas_burnt_usd = +0.002669; total_gas_burnt = 3995009726635 }
> │ 00:00:02 i #3 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:02 i #4 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.002463; tokens_burnt_usd = +0.002463; 
> gas_burnt = 3686927867295; tokens_burnt = 368692786729500000000 }
> │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry =
> 1; error...timestamp = 1750365113967574975; signer_account_id = 
> "dev-20250619203152-70018466158213"; predecessor_account_id = 
> "dev-20250619203152-70018466158213" }
> │ 00:00:00 d #2 chat_contract.claim_alias / { 
> account_alias = None }
> │ 00:00:00 v #3 chat_contract / { state = (2, IterableSet
> { elements: Vector { len: 1, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, 
> 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, 
> 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector { len: 1, prefix: 
> [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: 
> [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, LookupMap { prefix: [97, 
> 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap { prefix: [97, 108, 
> 105, 97, 115, 95, 109, 97, 112] }) }
> │  
> │ 00:00:38 i #86 near_workspaces.print_usd / { retry = 
> 15; total_gas_burnt_usd = +0.002669; total_gas_burnt = 3995009726635 }
> │ 00:00:38 i #87 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:38 i #88 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.002463; tokens_burnt_usd = +0.002463; 
> gas_burnt = 3686927867295; tokens_burnt = 368692786729500000000 }
> │ 00:00:38 w #89 spiral_wasm.run / Error error / { retry 
> = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }" 
> }
> │ 
> │ 
> │ 
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust \"-c=-e=\\\"chat_contract.claim_alias / invalid alias\\\"\"
> 
> ""
> |> sm'.to_std_string
> |> claim_alias (
>     inl state = new ()
>     inl version = state.version
>     inl account_set = state.account_set
>     inl alias_set = state.alias_set
>     inl account_map = state.account_map
>     inl alias_map = state.alias_map
>     !\\(version, $'$"&mut ($0, !account_set, !alias_set, !account_map, 
> !alias_map)"')
> )
> trace Debug (fun () => "") id
> 
> ── [ 14.48s - return value ] ───────────────────────────────────────────────────
> │  
> │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; 
> total_gas_burnt_usd = +0.001193; total_gas_burnt = 1786269212979 }
> │ 00:00:02 i #3 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:02 i #4 near_workspaces.print_usd / outcome / { 
> is_success = false; gas_burnt_usd = +0.000987; tokens_burnt_usd = +0.000987; 
> gas_burnt = 1478187353639; tokens_burnt = 147818735363900000000 }
> │ 00:00:02 c #5 spiral_wasm.run / Ok (Some error) / { 
> retry = 1; error = { receipt_outcomes_len = 1; retry = 1; receipt_failures = [
> │     ExecutionOutcome {
> │         transaction_hash: 
> BJ7Eg2FQvvqBAqNnoCpgsEdjfWWCZiHc4H6heaMpjs8J,
> │         block_hash: 
> AJnKt8VwJACsvXPpFtbV1B9atKM831zhMVYu5TGJyFHv,
> │         logs: [],
> │         receipt_ids: [
> │             4E81rMsyj33aDiBdyCPEGWctzr3HxvLThW9XcQeSrAjY,
> │         ],
> │         gas_burnt: NearGas {
> │             inner: 1478187353639,
> │         },
> │         tokens_burnt: NearToken {
> │             inner: 147818735363900000000,
> │         },
> │         executor_id: AccountId(
> │             "dev-20250619203207-50587811266357",
> │         ),
> │         status: Failure(ActionError(ActionError { index: 
> Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked: 
> chat_contract.claim_alias / invalid alias")) })),
> │     },
> │ ] } }
> │ 
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -cd borsh
> 
> inl state' = new ()
> inl state = state'
> inl version = state.version
> inl account_set = state.account_set
> inl alias_set = state.alias_set
> inl account_map = state.account_map
> inl alias_map = state.alias_map
> inl version = join version
> inl account_set = join account_set
> inl alias_set = join alias_set
> inl account_map = join account_map
> inl alias_map = join alias_map
> 
> inl state =
>     !\\(
>         (version, account_set, alias_set),
>         $'$"&mut ($0, $1, $2, !account_map, !alias_map)"'
>     )
> 
> "alias1"
> |> sm'.to_std_string
> |> claim_alias state
> 
> "alias1"
> |> sm'.to_std_string
> |> claim_alias state
> 
> "alias1"
> |> sm'.to_std_string
> |> claim_alias state
> 
> inl account_set' : rust.ref (near.iterable_set near.account_id) =
>     !\($'$"&!state.1"')
> 
> inl alias_set' : rust.ref (near.iterable_set sm'.std_string) =
>     !\($'$"&!state.2"')
> 
> inl account_set' =
>     account_set'
>     |> iter.iter_ref''
>     |> iter.cloned
>     |> iter_collect
> 
> inl alias_set' =
>     alias_set'
>     |> iter.iter_ref''
>     |> iter.cloned
>     |> iter_collect
>     |> am'.vec_map sm'.from_std_string
> 
> trace Verbose
>     fun () => "chat_contract"
>     fun () => {
>         account_set' = account_set' |> sm'.format_debug
>         alias_set' = alias_set' |> sm'.format_debug
>         state = state |> sm'.format_debug
>     }
> 
> trace Debug (fun () => "") id
> 
> account_set'
> |> am'.vec_len
> |> convert
> |> _assert_eq 1u32
> 
> alias_set'
> |> am'.from_vec_base
> |> _assert_eq' ;[[ "alias1" ]]
> 
> ── [ 18.38s - return value ] ───────────────────────────────────────────────────
> │ 00:00:00 d #1 chat_contract.claim_alias / { alias = 
> "alias1"; block_timestamp = 1750365144284009514; signer_account_id = 
> "dev-20250619203222-27212081776491"; predecessor_account_id = 
> "dev-20250619203222-27212081776491" }
> │ 00:00:00 d #2 chat_contract.claim_alias / { 
> account_alias = None }
> │ 00:00:00 d #3 chat_contract.claim_alias / { alias = 
> "alias1"; block_timestamp = 1750365144284009514; signer_account_id = 
> "dev-20250619203222-27212081776491"; predecessor_account_id = 
> "dev-20250619203222-27212081776491" }
> │ 00:00:00 d #4 chat_contract.claim_alias / { 
> account_alias = Some("alias1") }
> │ 00:00:00 d #5 chat_contract.claim_alias / { alias = 
> "alias1"; block_timestamp = 1750365144284009514; signer_account_id = 
> "dev-20250619203222-27212081776491"; predecessor_account_id = 
> "dev-20250619203222-27212081776491" }
> │ 00:00:00 d #6 chat_contract.claim_alias / { 
> account_alias = Some("alias1") }
> │ 00:00:00 v #7 chat_contract / { account_set' = 
> [AccountId("dev-20250619203222-27212081776491")]; alias_set' = ["alias1"]; state
> = (2, IterableSet { elements: Vector { len: 1, prefix: [97, 99, 99, 111, 117, 
> 110, 116, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, 
> 111, 117, 110, 116, 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector 
> { len: 1, prefix: [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: 
> LookupMap { prefix: [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, 
> LookupMap { prefix: [97, 99, 99, ...-14085873176862" }
> │ 00:00:00 d #6 chat_contract.claim_alias / { 
> account_alias = Some("alias1") }
> │ 00:00:00 v #7 chat_contract / { account_set' = 
> [AccountId("dev-20250619203225-14085873176862")]; alias_set' = ["alias1"]; state
> = (2, IterableSet { elements: Vector { len: 1, prefix: [97, 99, 99, 111, 117, 
> 110, 116, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, 
> 111, 117, 110, 116, 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector 
> { len: 1, prefix: [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: 
> LookupMap { prefix: [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, 
> LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, 
> LookupMap { prefix: [97, 108, 105, 97, 115, 95, 109, 97, 112] }) }
> │  
> │ 00:00:05 i #8 near_workspaces.print_usd / { retry = 2; 
> total_gas_burnt_usd = +0.005010; total_gas_burnt = 7500671826102 }
> │ 00:00:05 i #9 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:05 i #10 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.004656; tokens_burnt_usd = +0.004656; 
> gas_burnt = 6969407404262; tokens_burnt = 696940740426200000000 }
> │ 00:00:05 i #11 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; 
> gas_burnt = 223182562500; tokens_burnt = 0 }
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### get_account_info
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl get_account_info
>     (state : rust.ref state)
>     (account_id : near.account_id)
>     : optionm'.option' (sm'.std_string * (u64 * u32))
>     =
>     inl account_map : rust.ref (near.lookup_map near.account_id sm'.std_string) 
> =
>         !\($'$"&!state.3"')
> 
>     inl alias_map : rust.ref (near.lookup_map sm'.std_string (mapm.hash_map 
> near.account_id (u64 * u32))) =
>         !\($'$"&!state.4"')
> 
>     (!\\(account_id, $'"true; let result = 
> !account_map.get(&$0).and_then(|alias| { //"') : bool) |> ignore
>     (!\($'"true;    !alias_map.get(alias).map(|accounts| { //"') : bool) |> 
> ignore
>     (!\($'"true;        let result = (alias.clone(), 
> *accounts.get(&!account_id).unwrap()); //"') : bool) |> ignore
>     (!\($'"true;        (result.0, result.1.0, result.1.1)  }) }); //"') : bool)
> |> ignore
> 
>     inl result = !\($'"result"')
> 
>     trace Debug
>         fun () => "chat_contract.get_account_info"
>         fun () => { account_id result }
> 
>     trace Debug (fun () => "") id
> 
>     result
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -cd borsh
> 
> inl state' = new ()
> inl state = state'
> inl version = state.version
> inl account_set = state.account_set
> inl alias_set = state.alias_set
> inl account_map = state.account_map
> inl alias_map = state.alias_map
> inl version = join version
> inl account_set = join account_set
> inl alias_set = join alias_set
> inl account_map = join account_map
> inl alias_map = join alias_map
> 
> inl state_ref_mut =
>     !\\(
>         version,
>         $'$"&mut ($0, !account_set, !alias_set, !account_map, !alias_map)"'
>     )
> 
> inl state_ref = !\($'$"!state_ref_mut"')
> near.predecessor_account_id ()
> |> get_account_info state_ref
> |> _assert_eq' (optionm'.none' ())
> 
> inl state_ref = !\($'$"!state_ref_mut"')
> near.signer_account_id ()
> |> get_account_info state_ref
> |> _assert_eq' (optionm'.none' ())
> 
> "alias1"
> |> sm'.to_std_string
> |> claim_alias state_ref_mut
> 
> inl state_ref = !\($'$"!state_ref_mut"')
> near.predecessor_account_id ()
> |> get_account_info state_ref
> |> optionm'.get'
> |> fun alias, (timestamp, i) =>
>     alias
>     |> sm'.from_std_string
>     |> _assert_eq "alias1"
> 
>     timestamp
>     |> _assert_gt 0
> 
>     i
>     |> _assert_eq 0
> 
> inl state_ref = !\($'$"!state_ref_mut"')
> near.signer_account_id ()
> |> get_account_info state_ref
> |> optionm'.get'
> |> fun alias, (timestamp, i) =>
>     alias
>     |> sm'.from_std_string
>     |> _assert_eq "alias1"
> 
>     timestamp
>     |> _assert_gt 0
> 
>     i
>     |> _assert_eq 0
> 
> ── [ 50.95s - return value ] ───────────────────────────────────────────────────
> │ 00:00:00 d #1 chat_contract.get_account_info / { 
> account_id = AccountId(
> │     "dev-20250619203240-61335929953470",
> │ ); result = None }
> │ 00:00:00 d #3 chat_contract.get_account_info / { 
> account_id = AccountId(
> │     "dev-20250619203240-61335929953470",
> │ ); result = None }
> │ 00:00:00 d #5 chat_contract.claim_alias / { alias = 
> "alias1"; block_timestamp = 1750365162391943751; signer_account_id = 
> "dev-20250619203240-61335929953470"; predecessor_account_id = 
> "dev-20250619203240-61335929953470" }
> │ 00:00:00 d #6 chat_contract.claim_alias / { 
> account_alias = None }
> │ 00:00:00 d #7 chat_contract.get_account_info / { 
> account_id = AccountId(
> │     "dev-20250619203240-61335929953470",
> │ ); result = Some(
> │     (
> │         "alias1",
> │         1750365162391943751,
> │         0,
> │     ),
> │ ) }
> │ 00:00:00 d #9 chat_contract.get_account_info / { 
> account_id = AccountId(
> │     "dev-20250619203240-61335929953470",
> │ ); result = Some(
> │     (
> │         "alias1",
> │         1750365162391943751,
> │         0,
> │     ),
> │ ) }
> │  
> │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; 
> total_gas_burnt_usd = +0.003795; total_gas_burnt = 5681139726822 }
> │ 00:00:02 i #3 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:02 i #4 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.003589; tokens_burnt_usd = +0.0...
> │     "dev-20250619203316-41702887370556",
> │ ); result = None }
> │ 00:00:00 d #5 chat_contract.claim_alias / { alias = 
> "alias1"; block_timestamp = 1750365197877900033; signer_account_id = 
> "dev-20250619203316-41702887370556"; predecessor_account_id = 
> "dev-20250619203316-41702887370556" }
> │ 00:00:00 d #6 chat_contract.claim_alias / { 
> account_alias = None }
> │ 00:00:00 d #7 chat_contract.get_account_info / { 
> account_id = AccountId(
> │     "dev-20250619203316-41702887370556",
> │ ); result = Some(
> │     (
> │         "alias1",
> │         1750365197877900033,
> │         0,
> │     ),
> │ ) }
> │ 00:00:00 d #9 chat_contract.get_account_info / { 
> account_id = AccountId(
> │     "dev-20250619203316-41702887370556",
> │ ); result = Some(
> │     (
> │         "alias1",
> │         1750365197877900033,
> │         0,
> │     ),
> │ ) }
> │  
> │ 00:00:38 i #86 near_workspaces.print_usd / { retry = 
> 15; total_gas_burnt_usd = +0.003795; total_gas_burnt = 5681139726822 }
> │ 00:00:38 i #87 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 
> gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
> │ 00:00:38 i #88 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.003589; tokens_burnt_usd = +0.003589; 
> gas_burnt = 5373057867482; tokens_burnt = 537305786748200000000 }
> │ 00:00:38 w #89 spiral_wasm.run / Error error / { retry 
> = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }" 
> }
> │ 
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### main
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> ///! _
> 
> inl main () =
>     !\($'"} //"') : ()
> 
>     !\($'"\#[[near_sdk::near_bindgen]] //"') : ()
> 
>     !\($'"\#[[derive( //"') : ()
>     !\($'"  near_sdk::PanicOnDefault, //"') : ()
>     !\($'"  borsh::BorshDeserialize, //"') : ()
>     !\($'"  borsh::BorshSerialize, //"') : ()
>     !\($'")]] //"') : ()
> 
>     !\($'"pub struct State ( //"') : ()
> 
>     !\($'"/*"') : ()
>     (null () : rust.type_emit state) |> ignore
>     !\($'"*/ )"') : ()
> 
>     inl new_ () =
>         !\($'"\#[[init]] //"') : ()
>         !\($'"pub fn new() -> Self { // 1"') : ()
> 
>         (!\($'"true; /*"') : bool) |> ignore
> 
>         (null () : rust.type_emit ()) |> ignore
> 
>         (!\($'"true; */"') : bool) |> ignore
> 
>         inl result = new ()
> 
>         $'let _result = !result in _result |> (fun x -> 
> Fable.Core.RustInterop.emitRustExpr x $"Self($0) // x") // 2' : ()
> 
>         !\($'"} // 2."') : ()
> 
>         !\($'"} // 1."') : ()
> 
>         2
> 
>     inl is_valid_alias () =
>         !\($'"fn is_valid_alias(alias: String) -> bool { //"') : ()
>         inl alias = !\($'$"alias"')
>         inl result = alias |> is_valid_alias
>         $'let _result = !result in _result |> (fun x -> 
> Fable.Core.RustInterop.emitRustExpr x "$0 }") // 2' : ()
>         !\($'"} //"') : ()
>         1
> 
>     inl generate_cid () =
>         !\($'"pub fn generate_cid( //"') : ()
>         !\($'"  &self, //"') : ()
>         !\($'"  content: Vec<u8>, //"') : ()
>         !\($'") -> String { //"') : ()
>         inl content = !\($'$"content"')
>         inl result = generate_cid content
>         $'let _result = !result in _result |> (fun x -> 
> Fable.Core.RustInterop.emitRustExpr x "$0 }") // 2' : ()
>         !\($'"} //"') : ()
>         2
> 
>     inl generate_cid_borsh () =
>         !\($'"\#[[result_serializer(borsh)]] //"') : ()
>         !\($'"pub fn generate_cid_borsh( //"') : ()
>         !\($'"  &self, //"') : ()
>         !\($'"  \#[[serializer(borsh)]] content: Vec<u8>, //"') : ()
>         !\($'") -> String { //"') : ()
>         !\($'"  self.generate_cid(content) //"') : ()
>         !\($'"} //"') : ()
>         1
> 
>     inl claim_alias () =
>         !\($'"pub fn claim_alias( //"') : ()
>         !\($'"  &mut self, //"') : ()
>         !\($'"  alias: String, //"') : ()
>         !\($'") { //"') : ()
> 
>         inl state = !\($'$"&mut self.0"')
>         inl alias = !\($'$"alias"')
> 
>         inl result = claim_alias state alias
>         trace Debug (fun () => "") (join id)
> 
>         !\($'"} //"') : ()
> 
>         !\($'"} //"') : ()
> 
>         !\($'"} //"') : ()
> 
>         3
> 
>     inl get_account_info () =
>         !\($'"pub fn get_account_info( //"') : ()
>         !\($'"  &self, //"') : ()
>         !\($'"  account_id: near_sdk::AccountId, //"') : ()
>         !\($'") -> Option<(String, u64, u32)> { //"') : ()
> 
>         inl state = !\($'$"&self.0"')
>         inl account_id : near.account_id = !\($'$"account_id"')
> 
>         inl result = account_id |> get_account_info state
>         $'let _result = !result in _result |> (fun x -> 
> Fable.Core.RustInterop.emitRustExpr x "$0 } // 4") // 3' : ()
> 
>         !\($'"} // 1"') : ()
> 
>         1
> 
>     inl get_alias_map () =
>         !\($'"pub fn get_alias_map( //"') : ()
>         !\($'"  &self, //"') : ()
>         !\($'"  alias: String, //"') : ()
>         !\($'") -> Option<std::collections::HashMap<near_sdk::AccountId, (u64, 
> u32)>> { //"') : ()
> 
>         inl alias_map : rust.ref (near.lookup_map sm'.std_string (mapm.hash_map 
> near.account_id (u64 * u32))) =
>             !\($'$"&self.0.4"')
> 
>         inl alias : sm'.std_string = !\($'$"alias"')
> 
>         trace Debug
>             fun () => "chat_contract.get_alias_map"
>             fun () => { alias }
> 
>         trace Debug (fun () => "") (join id)
> 
>         !\\(alias, $'"  !alias_map.get(&$0).cloned() //"') : ()
>         !\($'"} //"') : ()
> 
>         !\($'"} //"') : ()
> 
>         2
> 
>     inl get_alias_map_borsh () =
>         !\($'"\#[[result_serializer(borsh)]] //"') : ()
>         !\($'"pub fn get_alias_map_borsh( //"') : ()
>         !\($'"  &self, //"') : ()
>         !\($'"  \#[[serializer(borsh)]] alias: String, //"') : ()
>         !\($'") -> Option<std::collections::HashMap<near_sdk::AccountId, (u64, 
> u32)>> { //"') : ()
>         !\($'"  self.get_alias_map(alias) //"') : ()
>         !\($'"} //"') : ()
>         1
> 
>     inl fns =
>         [[
>             new_
>             is_valid_alias
>             generate_cid
>             generate_cid_borsh
>             claim_alias
>             get_account_info
>             get_alias_map
>             get_alias_map_borsh
>         ]]
> 
>     // inl rec 루프 acc fns i =
>     inl rec 루프 forall i {number} j {number}. (acc : i) (fns : list (() -> i)) 
> (i : j) : i =
>         match fns with
>         | [[]] => acc
>         | x :: xs =>
>             !\($'"\#[[near_sdk::near_bindgen]] //"') : ()
>             !\($'"impl State { //"') : ()
>             inl n = x ()
>             !\($'"} /* c"') : ()
>             // inl rec 루프' i' =
>             inl rec 루프' forall t {number}. (i' : t) : () =
>                 if i' <> 1 // <= n
>                 then (!\($'"true; */ // ???? / i: !i / i\': !i' / acc: !acc / n:
> !n"') : bool) |> ignore
>                 else
>                     (!\($'"true; // ??? / i: !i / i\': !i' / acc: !acc / n: 
> !n"') : bool) |> ignore
>                     루프' (i' + 1)
>             루프' 1u8
>             루프 (acc + n) xs (i + 1)
>     inl n = 루프 0u8 fns 1u8
> 
> 
>     // !\($'"/* a"') : ()
> 
>     // !\($'"} // b"') : ()
> 
>     !\($'"fn _main() //"') : ()
>     !\($'"{ { //"') : ()
> 
>     inl rec 루프' i' =
>         if i' <= n
>         then
>             (!\($'"true; { (); // ?? / i\': !i' / n: !n"') : bool) |> ignore
>             루프' (i' + 1)
>         else
>             (!\($'"true; { { (); // ? / i\': !i' / n: !n"') : bool) |> ignore
>             // (!\($'"true; */ // ?? / i\': !i' / n: !n"') : bool) |> ignore
>     루프' 1u8
> 
> inl main () =
>     $'!main |> ignore' : ()
00:07:43 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 61046 }
00:07:43 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:07:44 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.ipynb to html
00:07:44 v #6 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:07:44 v #7 !   validate(nb)
00:07:44 v #8 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:07:44 v #9 !   return _pygments_highlight(
00:07:44 v #10 ! [NbConvertApp] Writing 516770 bytes to /home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.html
00:07:44 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 928 }
00:07:44 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 928 }
00:07:44 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:07:45 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:07:45 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:07:45 d #16 spiral.run / dib / { exit_code = 0; result_length = 62033 }
00:00:00 d #1 writeDibCode / output: Spi / path: chat_contract.dib
00:00:00 d #2 parseDibCode / output: Spi / file: chat_contract.dib
00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: chat_contract / hash:  / code.Length: 194027
00:00:00 d #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "/home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/chat/contract/dist" --runtime linux-x64"; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/chat/contract/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/chat_contract"; stderr = true } }
00:00:00 v #2 >   Determining projects to restore...
00:00:01 v #3 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:01 v #4 >   The last full restore is still up to date. Nothing left to do.
00:00:01 v #5 >   Total time taken: 0 milliseconds
00:00:01 v #6 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:01 v #7 >   Restoring /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj
00:00:01 v #8 >   Starting restore process.
00:00:01 v #9 >   Total time taken: 0 milliseconds
00:00:02 v #10 >   Restored /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj (in 274 ms).
00:00:09 v #11 > /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fs(4363,15): warning FS0025: Incomplete pattern matches on this expression. For example, the value 'US7_0 (_)' may indicate a case not covered by the pattern(s). [/home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj]
00:00:13 v #12 >   chat_contract -> /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/bin/Release/net9.0/linux-x64/chat_contract.dll
00:00:14 v #13 >   chat_contract -> /home/runner/work/polyglot/polyglot/apps/chat/contract/dist
00:00:14 d #14 runtime.execute_with_options_async / { exit_code = 0; output_length = 1073; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/chat/contract/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/chat_contract"; stderr = true } }
spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: /home/runner/work/polyglot/polyglot/target/Builder/chat_contract
polyglot/scripts/core.ps1/ResolveLink #4 / Path: /home/runner/work/polyglot/polyglot/deps/spiral/lib/spiral/../../deps/polyglot / parent_target:  / path_target: /home/runner/work/polyglot/polyglot / parent: /home/runner/work/polyglot/polyglot/deps/spiral/lib/spiral/../../deps / End: polyglot
spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: /home/runner/work/polyglot/polyglot/target/Builder/chat_contract / ProjectName: chat_contract / Language: rs / Runtime: CONTRACT / root: /home/runner/work/polyglot/polyglot
Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha)

Thanks to the contributor! @tpetricek
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target/Builder/chat_contract/chat_contract.fsproj...
Project and references (14 source files) parsed in 2986ms

Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)

Started Fable compilation...

Fable compilation finished in 9244ms

./target/Builder/chat_contract/chat_contract.fs(4363,15): (4363,19) warning FSHARP: Incomplete pattern matches on this expression. For example, the value 'US7_0 (_)' may indicate a case not covered by the pattern(s). (code 25)
./deps/spiral/lib/spiral/common.fsx(2206,0): (2206,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/sm.fsx(561,0): (561,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/async_.fsx(250,0): (250,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/crypto.fsx(2436,0): (2436,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/date_time.fsx(2553,0): (2553,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/platform.fsx(122,0): (122,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/networking.fsx(5525,0): (5525,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/trace.fsx(2244,0): (2244,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/runtime.fsx(9174,0): (9174,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/file_system.fsx(20847,0): (20847,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./target/Builder/chat_contract/chat_contract.fs(4569,6): (4569,12) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
    Updating crates.io index
 Downloading crates ...
  Downloaded once_cell v1.20.2
  Downloaded tinyvec v1.8.0
  Downloaded rand_core v0.6.4
  Downloaded cfg-if v1.0.0
  Downloaded serde v1.0.216
  Downloaded data-encoding-macro v0.1.15
  Downloaded darling_macro v0.20.10
  Downloaded itoa v1.0.14
  Downloaded near-account-id v1.0.0
  Downloaded const-oid v0.10.0-rc.3
  Downloaded borsh-derive v1.5.3
  Downloaded memchr v2.7.4
  Downloaded block-buffer v0.11.0-rc.3
  Downloaded darling_core v0.20.10
  Downloaded crypto-common v0.2.0-rc.1
  Downloaded near-sys v0.2.2
  Downloaded equivalent v1.0.1
  Downloaded data-encoding-macro-internal v0.1.13
  Downloaded rustversion v1.0.18
  Downloaded toml_datetime v0.6.8
  Downloaded quote v1.0.37
  Downloaded unicode-ident v1.0.14
  Downloaded serde_derive v1.0.216
  Downloaded toml_edit v0.22.22
  Downloaded indexmap v2.7.0
  Downloaded winnow v0.6.20
  Downloaded hashbrown v0.15.2
  Downloaded serde_json v1.0.133
  Downloaded syn v1.0.109
  Downloaded syn v2.0.90
  Downloaded hybrid-array v0.2.3
  Downloaded sha2 v0.11.0-pre.4
  Downloaded libc v0.2.168
  Downloaded borsh v1.5.3
  Downloaded typenum v1.17.0
  Downloaded ryu v1.0.18
  Downloaded proc-macro2 v1.0.92
  Downloaded getrandom v0.2.15
  Downloaded proc-macro-crate v3.2.0
  Downloaded near-sdk-macros v5.6.0
  Downloaded digest v0.11.0-pre.9
  Downloaded data-encoding v2.6.0
  Downloaded darling v0.20.10
  Downloaded cpufeatures v0.2.16
  Downloaded near-sdk v5.6.0
   Compiling proc-macro2 v1.0.92
   Compiling unicode-ident v1.0.14
   Compiling equivalent v1.0.1
   Compiling hashbrown v0.15.2
   Compiling winnow v0.6.20
   Compiling toml_datetime v0.6.8
   Compiling serde v1.0.216
   Compiling typenum v1.17.0
   Compiling indexmap v2.7.0
   Compiling quote v1.0.37
   Compiling cfg_aliases v0.2.1
   Compiling borsh v1.5.3
   Compiling syn v2.0.90
   Compiling serde_json v1.0.133
   Compiling once_cell v1.20.2
   Compiling rustversion v1.0.18
   Compiling toml_edit v0.22.22
   Compiling ident_case v1.0.1
   Compiling fnv v1.0.7
   Compiling syn v1.0.109
   Compiling hybrid-array v0.2.3
   Compiling itoa v1.0.14
   Compiling memchr v2.7.4
   Compiling proc-macro-crate v3.2.0
   Compiling ryu v1.0.18
   Compiling wee_alloc v0.4.5
   Compiling data-encoding v2.6.0
   Compiling near-sdk-macros v5.6.0
   Compiling heck v0.5.0
   Compiling darling_core v0.20.10
   Compiling data-encoding-macro-internal v0.1.13
   Compiling block-buffer v0.11.0-rc.3
   Compiling crypto-common v0.2.0-rc.1
   Compiling Inflector v0.11.4
   Compiling serde_derive v1.0.216
   Compiling borsh-derive v1.5.3
   Compiling strum_macros v0.26.4
   Compiling darling_macro v0.20.10
   Compiling darling v0.20.10
   Compiling strum v0.26.3
   Compiling const-oid v0.10.0-rc.3
   Compiling memory_units v0.4.0
   Compiling cfg-if v0.1.10
   Compiling digest v0.11.0-pre.9
   Compiling data-encoding-macro v0.1.15
   Compiling base-x v0.2.11
   Compiling bs58 v0.5.1
   Compiling cfg-if v1.0.0
   Compiling base64 v0.22.1
   Compiling near-sys v0.2.2
   Compiling sha2 v0.11.0-pre.4
   Compiling multibase v0.9.1
   Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust)
   Compiling unsigned-varint v0.8.0
   Compiling inline_colorization v0.1.6
   Compiling near-token v0.3.0
   Compiling near-gas v0.3.0
   Compiling near-account-id v1.0.0
   Compiling near-sdk v5.6.0
   Compiling chat_contract v0.0.1 (/home/runner/work/polyglot/polyglot/apps/chat/contract)
    Finished `release` profile [optimized] target(s) in 21.17s
polyglot/apps/chat/contract/build.ps1 / $targetDir = /home/runner/work/polyglot/polyglot/target/Builder/chat_contract / $projectName: chat_contract / $env:CI:'true'
warning: /home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
warning: /home/runner/work/polyglot/polyglot/apps/chat/contract/tests/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
warning: /home/runner/work/polyglot/polyglot/apps/plot/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
warning: /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
warning: /home/runner/work/polyglot/polyglot/apps/chat/contract/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
warning: /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
warning: /home/runner/work/polyglot/polyglot/examples/rust/exercism/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
warning: /home/runner/work/polyglot/polyglot/lib/math/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
 Downloading crates ...
  Downloaded borsh-derive v1.5.3
  Downloaded tokio-rustls v0.26.1
  Downloaded tempfile v3.14.0
  Downloaded anyhow v1.0.94
  Downloaded time-macros v0.2.19
  Downloaded pin-project v1.1.7
  Downloaded indexmap v2.7.0
  Downloaded rustix v0.37.27
  Downloaded zerofrom v0.1.5
  Downloaded httparse v1.9.5
  Downloaded time v0.3.37
  Downloaded tokio-macros v2.4.0
  Downloaded borsh v1.5.3
  Downloaded serde_with_macros v3.11.0
  Downloaded webpki-roots v0.26.7
  Downloaded pin-project-internal v1.1.7
  Downloaded schemars v0.8.21
  Downloaded zerofrom-derive v0.1.5
  Downloaded xml-rs v0.8.24
  Downloaded rustls v0.23.20
  Downloaded textwrap v0.16.1
  Downloaded tar v0.4.43
  Downloaded rustls-pki-types v1.10.1
  Downloaded portable-atomic v1.10.0
  Downloaded cc v1.2.4
  Downloaded tokio-util v0.7.13
  Downloaded serde_with v3.11.0
  Downloaded h2 v0.4.7
  Downloaded reqwest v0.12.9
  Downloaded clap_builder v4.5.23
  Downloaded hyper v1.5.1
  Downloaded bytes v1.9.0
  Downloaded openssl-sys v0.9.104
  Downloaded event-listener v5.3.1
  Downloaded ipnet v2.10.1
  Downloaded async-trait v0.1.83
  Downloaded rustix v0.38.42
  Downloaded serde_derive v1.0.216
  Downloaded phf_shared v0.10.0
  Downloaded near-sdk-macros v5.6.0
  Downloaded native-tls v0.2.12
  Downloaded http-body-util v0.1.2
  Downloaded futures-lite v2.5.0
  Downloaded derive_more v0.99.18
  Downloaded csv-core v0.1.11
  Downloaded rustversion v1.0.18
  Downloaded near-sandbox-utils v0.12.0
  Downloaded dyn-clone v1.0.17
  Downloaded is-terminal v0.4.13
  Downloaded hyper-rustls v0.27.3
  Downloaded hyper v0.14.31
  Downloaded http v1.2.0
  Downloaded tokio v1.42.0
  Downloaded tracing-indicatif v0.3.8
  Downloaded schemars_derive v0.8.21
  Downloaded open v5.3.1
  Downloaded semver v1.0.24
  Downloaded enumflags2 v0.7.10
  Downloaded crunchy v0.2.2
  Downloaded clap v4.5.23
  Downloaded near-sdk v5.6.0
  Downloaded flate2 v1.0.35
  Downloaded string_cache v0.8.7
  Downloaded serde_repr v0.1.19
  Downloaded proc-macro-crate v3.2.0
  Downloaded ordered-float v4.5.0
  Downloaded openssl v0.10.68
  Downloaded litemap v0.7.4
  Downloaded indicatif v0.17.9
  Downloaded enumflags2_derive v0.7.10
  Downloaded openssl-src v300.4.1+3.4.0
   Compiling libc v0.2.168
   Compiling serde v1.0.216
   Compiling syn v2.0.90
   Compiling version_check v0.9.5
   Compiling shlex v1.3.0
   Compiling once_cell v1.20.2
   Compiling jobserver v0.1.32
   Compiling typenum v1.17.0
   Compiling cc v1.2.4
   Compiling generic-array v0.14.7
   Compiling smallvec v1.13.2
   Compiling futures-core v0.3.31
   Compiling pkg-config v0.3.31
   Compiling lock_api v0.4.12
   Compiling parking_lot_core v0.9.10
   Compiling scopeguard v1.2.0
   Compiling byteorder v1.5.0
   Compiling log v0.4.22
   Compiling bytes v1.9.0
   Compiling parking_lot v0.12.3
   Compiling signal-hook-registry v1.4.2
   Compiling getrandom v0.2.15
   Compiling hashbrown v0.15.2
   Compiling equivalent v1.0.1
   Compiling toml_datetime v0.6.8
   Compiling tracing-core v0.1.33
   Compiling futures-io v0.3.31
   Compiling socket2 v0.5.8
   Compiling synstructure v0.13.1
   Compiling indexmap v2.7.0
   Compiling mio v1.0.3
   Compiling subtle v2.6.1
   Compiling futures-sink v0.3.31
   Compiling rand_core v0.6.4
   Compiling crypto-common v0.1.6
   Compiling futures-channel v0.3.31
   Compiling anyhow v1.0.94
   Compiling block-buffer v0.10.4
   Compiling num-traits v0.2.19
   Compiling cfg_aliases v0.2.1
   Compiling fnv v1.0.7
   Compiling syn v1.0.109
   Compiling digest v0.10.7
   Compiling winnow v0.6.20
   Compiling serde_derive v1.0.216
   Compiling zerofrom-derive v0.1.5
   Compiling yoke-derive v0.7.5
   Compiling tracing-attributes v0.1.28
   Compiling tokio-macros v2.4.0
   Compiling zerovec-derive v0.10.3
   Compiling tracing v0.1.41
   Compiling tokio v1.42.0
   Compiling displaydoc v0.2.5
   Compiling futures-macro v0.3.31
   Compiling futures-util v0.3.31
   Compiling zerocopy-derive v0.7.35
   Compiling zerocopy v0.7.35
   Compiling toml_edit v0.22.22
   Compiling zstd-sys v2.0.13+zstd.1.5.6
   Compiling rustversion v1.0.18
   Compiling crossbeam-utils v0.8.21
   Compiling icu_provider_macros v1.5.0
   Compiling bitflags v2.6.0
   Compiling lazy_static v1.5.0
   Compiling proc-macro-crate v3.2.0
   Compiling thiserror v1.0.69
   Compiling ppv-lite86 v0.2.20
   Compiling thiserror-impl v1.0.69
   Compiling borsh-derive v1.5.3
   Compiling rand_chacha v0.3.1
   Compiling serde_json v1.0.133
   Compiling rand v0.8.5
   Compiling borsh v1.5.3
   Compiling stable_deref_trait v1.2.0
   Compiling tokio-util v0.7.13
   Compiling sha2 v0.10.8
   Compiling percent-encoding v2.3.1
   Compiling semver v1.0.24
   Compiling zerofrom v0.1.5
   Compiling bitflags v1.3.2
   Compiling yoke v0.7.5
   Compiling num-integer v0.1.46
   Compiling httparse v1.9.5
   Compiling memchr v2.7.4
   Compiling zerovec v0.10.4
   Compiling hex v0.4.3
   Compiling ring v0.17.8
   Compiling try-lock v0.2.5
   Compiling tower-service v0.3.3
   Compiling cfg-if v1.0.0
   Compiling want v0.3.1
   Compiling async-trait v0.1.83
   Compiling static_assertions v1.1.0
   Compiling tinystr v0.7.6
   Compiling http v0.2.12
   Compiling thread_local v1.1.8
   Compiling regex-syntax v0.6.29
   Compiling writeable v0.5.5
   Compiling powerfmt v0.2.0
   Compiling litemap v0.7.4
   Compiling utf8parse v0.2.2
   Compiling icu_locid v1.5.0
   Compiling deranged v0.3.11
   Compiling regex-automata v0.1.10
   Compiling openssl-src v300.4.1+3.4.0
   Compiling overload v0.1.1
   Compiling num-conv v0.1.0
   Compiling time-core v0.1.2
   Compiling vcpkg v0.2.15
   Compiling time v0.3.37
   Compiling nu-ansi-term v0.46.0
   Compiling openssl-sys v0.9.104
   Compiling matchers v0.1.0
   Compiling icu_provider v1.5.0
   Compiling http-body v0.4.6
   Compiling aho-corasick v1.1.3
   Compiling rustc_version v0.4.1
   Compiling crossbeam-channel v0.5.14
   Compiling sharded-slab v0.1.7
   Compiling pin-project-internal v1.1.7
   Compiling serde_repr v0.1.19
   Compiling tracing-log v0.2.0
   Compiling bzip2-sys v0.1.11+1.0.8
   Compiling num-bigint v0.3.3
   Compiling indexmap v1.9.3
   Compiling base64 v0.21.7
   Compiling regex-syntax v0.8.5
   Compiling atomic-waker v1.1.2
   Compiling zstd-safe v5.0.2+zstd.1.5.2
   Compiling icu_locid_transform_data v1.5.0
   Compiling icu_locid_transform v1.5.0
   Compiling pin-project v1.1.7
   Compiling tracing-subscriber v0.3.19
   Compiling curve25519-dalek v4.1.3
   Compiling regex-automata v0.4.9
   Compiling h2 v0.3.26
   Compiling icu_collections v1.5.0
   Compiling near-account-id v1.0.0
   Compiling axum-core v0.3.4
   Compiling futures-executor v0.3.31
   Compiling num-rational v0.3.2
   Compiling hashbrown v0.12.3
   Compiling icu_properties_data v1.5.0
   Compiling ident_case v1.0.1
   Compiling crunchy v0.2.2
   Compiling strsim v0.11.1
   Compiling either v1.13.0
   Compiling tower-layer v0.3.3
   Compiling mime v0.3.17
   Compiling base64 v0.22.1
   Compiling convert_case v0.4.0
   Compiling httpdate v1.0.3
   Compiling derive_more v0.99.18
   Compiling hyper v0.14.31
   Compiling itertools v0.12.1
   Compiling darling_core v0.20.10
   Compiling icu_properties v1.5.1
   Compiling regex v1.11.1
   Compiling axum v0.6.20
   Compiling tokio-stream v0.1.17
   Compiling enum-map-derive v0.17.0
   Compiling derive_arbitrary v1.4.1
   Compiling curve25519-dalek-derive v0.1.1
   Compiling secp256k1-sys v0.8.1
   Compiling schemars v0.8.21
   Compiling utf8_iter v1.0.4
   Compiling urlencoding v2.1.3
   Compiling heck v0.4.1
   Compiling utf16_iter v1.0.5
   Compiling rustls-pki-types v1.10.1
   Compiling icu_normalizer_data v1.5.0
   Compiling rustls v0.23.20
   Compiling write16 v1.0.0
   Compiling bs58 v0.4.0
   Compiling signature v2.2.0
   Compiling icu_normalizer v1.5.0
   Compiling ed25519 v2.2.3
   Compiling strum_macros v0.24.3
   Compiling opentelemetry v0.22.0
   Compiling arbitrary v1.4.1
   Compiling enum-map v2.7.3
   Compiling darling_macro v0.20.10
   Compiling tower v0.4.13
   Compiling prost-derive v0.12.6
   Compiling anstyle-parse v0.2.6
   Compiling concurrent-queue v2.5.0
   Compiling tokio-io-timeout v1.2.0
   Compiling ordered-float v4.5.0
   Compiling async-stream-impl v0.3.6
   Compiling serde_derive_internals v0.29.1
   Compiling block-padding v0.3.3
   Compiling sync_wrapper v0.1.2
   Compiling foreign-types-shared v0.1.1
   Compiling parking v2.2.1
   Compiling is_terminal_polyfill v1.70.1
   Compiling openssl v0.10.68
   Compiling colorchoice v1.0.3
   Compiling glob v0.3.1
   Compiling anstyle-query v1.1.2
   Compiling anstyle v1.0.10
   Compiling matchit v0.7.3
   Compiling schemars_derive v0.8.21
   Compiling anstream v0.6.18
   Compiling opentelemetry_sdk v0.22.1
   Compiling prost v0.12.6
   Compiling foreign-types v0.3.2
   Compiling inout v0.1.3
   Compiling async-stream v0.3.6
   Compiling hyper-timeout v0.4.1
   Compiling uint v0.9.5
   Compiling darling v0.20.10
   Compiling near-primitives-core v0.23.0
   Compiling ed25519-dalek v2.1.1
   Compiling strum v0.24.1
   Compiling idna_adapter v1.2.0
   Compiling fixed-hash v0.7.0
   Compiling form_urlencoded v1.2.1
   Compiling openssl-macros v0.1.1
   Compiling http v1.2.0
   Compiling json_comments v0.2.2
   Compiling rustix v0.38.42
   Compiling fastrand v2.3.0
   Compiling protobuf v2.28.0
   Compiling winnow v0.5.40
   Compiling near-config-utils v0.23.0
   Compiling tonic v0.11.0
   Compiling primitive-types v0.10.1
   Compiling toml_edit v0.19.15
   Compiling idna v1.0.3
   Compiling secp256k1 v0.27.0
   Compiling cipher v0.4.4
   Compiling actix-rt v2.10.0
   Compiling actix_derive v0.6.2
   Compiling actix-macros v0.2.4
   Compiling blake2 v0.10.6
   Compiling hmac v0.12.1
   Compiling proc-macro-error-attr v1.0.4
   Compiling arrayvec v0.7.6
   Compiling linux-raw-sys v0.4.14
   Compiling itoa v1.0.14
   Compiling zstd-safe v7.2.1
   Compiling prometheus v0.13.4
   Compiling ryu v1.0.18
   Compiling adler2 v2.0.0
   Compiling near-stdx v0.23.0
   Compiling clap_lex v0.7.4
   Compiling near-crypto v0.23.0
   Compiling clap_builder v4.5.23
   Compiling miniz_oxide v0.8.0
   Compiling actix v0.13.5
   Compiling proc-macro-crate v1.3.1
   Compiling url v2.5.4
   Compiling opentelemetry-proto v0.5.0
   Compiling http-body v1.0.1
   Compiling event-listener v5.3.1
   Compiling clap_derive v4.5.18
   Compiling sha1 v0.10.6
   Compiling zvariant_utils v1.0.1
   Compiling proc-macro-error v1.0.4
   Compiling crc32fast v1.4.2
   Compiling native-tls v0.2.12
   Compiling unicode-width v0.1.14
   Compiling io-lifetimes v1.0.11
   Compiling opentelemetry-semantic-conventions v0.14.0
   Compiling unsafe-libyaml v0.2.11
   Compiling reed-solomon-erasure v4.0.2
   Compiling event-listener v2.5.3
   Compiling cpufeatures v0.2.16
   Compiling serde_yaml v0.9.34+deprecated
   Compiling opentelemetry-otlp v0.15.0
   Compiling flate2 v1.0.35
   Compiling clap v4.5.23
   Compiling event-listener-strategy v0.5.3
   Compiling aes v0.8.4
   Compiling h2 v0.4.7
   Compiling serde_with_macros v3.11.0
   Compiling tracing-opentelemetry v0.23.0
   Compiling futures v0.3.31
   Compiling tracing-appender v0.2.3
   Compiling near-time v0.23.0
   Compiling near-rpc-error-core v0.23.0
   Compiling enumflags2_derive v0.7.10
   Compiling dirs-sys-next v0.1.2
   Compiling futures-lite v2.5.0
   Compiling polling v2.8.0
   Compiling memoffset v0.7.1
   Compiling dyn-clone v1.0.17
   Compiling untrusted v0.9.0
   Compiling openssl-probe v0.1.5
   Compiling waker-fn v1.2.0
   Compiling keccak v0.1.5
   Compiling rustix v0.37.27
   Compiling fastrand v1.9.0
   Compiling spin v0.9.8
   Compiling async-task v4.7.1
   Compiling siphasher v0.3.11
   Compiling chrono v0.4.39
   Compiling futures-lite v1.13.0
   Compiling sha3 v0.10.8
   Compiling itertools v0.10.5
   Compiling dirs-next v2.0.0
   Compiling enumflags2 v0.7.10
   Compiling near-rpc-error-macro v0.23.0
   Compiling near-o11y v0.23.0
   Compiling near-performance-metrics v0.23.0
   Compiling hyper v1.5.1
   Compiling serde_with v3.11.0
   Compiling zstd v0.13.2
   Compiling async-channel v2.3.1
   Compiling near-parameters v0.23.0
   Compiling async-lock v2.8.0
   Compiling zvariant_derive v3.15.2
   Compiling piper v0.2.4
   Compiling near-fmt v0.23.0
   Compiling bytesize v1.3.0
   Compiling smart-default v0.6.0
   Compiling near-async-derive v0.23.0
   Compiling filetime v0.2.25
   Compiling async-io v1.13.0
   Compiling async-fs v1.6.0
   Compiling proc-macro2 v1.0.92
   Compiling base64ct v1.6.0
   Compiling linux-raw-sys v0.3.8
   Compiling unicode-ident v1.0.14
   Compiling easy-ext v0.2.9
   Compiling signal-hook v0.3.17
   Compiling password-hash v0.4.2
   Compiling near-primitives v0.23.0
   Compiling near-async v0.23.0
   Compiling zvariant v3.15.2
   Compiling blocking v1.6.1
   Compiling interactive-clap-derive v0.2.10
   Compiling hyper-util v0.1.10
   Compiling rustls-webpki v0.102.8
   Compiling Inflector v0.11.4
   Compiling http-body-util v0.1.2
   Compiling num-bigint v0.4.6
   Compiling backtrace v0.3.71
   Compiling socket2 v0.4.10
   Compiling ahash v0.8.11
   Compiling vte_generate_state_changes v0.1.2
   Compiling portable-atomic v1.10.0
   Compiling bitcoin-internals v0.2.0
   Compiling zeroize v1.8.1
   Compiling eyre v0.6.12
   Compiling gimli v0.28.1
   Compiling adler v1.0.2
   Compiling miniz_oxide v0.7.4
   Compiling vte v0.11.1
   Compiling addr2line v0.21.0
   Compiling num-rational v0.4.2
   Compiling near-chain-configs v0.23.0
   Compiling pbkdf2 v0.11.0
   Compiling zstd v0.11.2+zstd.1.5.2
   Compiling nix v0.26.4
   Compiling interactive-clap v0.2.10
   Compiling zbus_names v2.6.1
   Compiling bzip2 v0.4.4
   Compiling xattr v1.3.1
   Compiling quote v1.0.37
   Compiling async-executor v1.13.1
   Compiling webpki-roots v0.26.7
   Compiling async-broadcast v0.5.1
   Compiling zbus_macros v3.15.2
   Compiling serde_urlencoded v0.7.1
   Compiling rustls-pemfile v2.2.0
   Compiling tracing-error v0.2.1
   Compiling num-iter v0.1.45
   Compiling derivative v2.2.0
   Compiling num-complex v0.4.6
   Compiling async-recursion v1.1.1
   Compiling digest v0.9.0
   Compiling mio v0.8.11
   Compiling xdg-home v1.3.0
   Compiling ordered-stream v0.2.0
   Compiling sync_wrapper v1.0.2
   Compiling object v0.32.2
   Compiling encoding_rs v0.8.35
   Compiling option-ext v0.2.0
   Compiling radium v0.7.0
   Compiling tinyvec_macros v0.1.1
   Compiling rustc-demangle v0.1.24
   Compiling owo-colors v3.5.0
   Compiling constant_time_eq v0.1.5
   Compiling uuid v0.8.2
   Compiling ipnet v2.10.1
   Compiling indenter v0.3.3
   Compiling zip v0.6.6
   Compiling color-spantrace v0.2.1
   Compiling tinyvec v1.8.0
   Compiling ureq v2.12.1
   Compiling dirs-sys v0.4.1
   Compiling zbus v3.15.2
   Compiling signal-hook-mio v0.2.4
   Compiling num v0.4.3
   Compiling tar v0.4.43
   Compiling near-jsonrpc-primitives v0.23.0
   Compiling vt100 v0.15.2
   Compiling near-abi v0.4.3
   Compiling phf_shared v0.10.0
   Compiling uriparse v0.6.4
   Compiling console v0.15.8
   Compiling near_schemafy_core v0.7.0
   Compiling hkdf v0.12.4
   Compiling cbc v0.1.2
   Compiling serde_spanned v0.6.8
   Compiling scroll_derive v0.11.1
   Compiling crypto-mac v0.9.1
   Compiling block-buffer v0.9.0
   Compiling is-docker v0.2.0
   Compiling fs2 v0.4.3
   Compiling csv-core v0.1.11
   Compiling fallible-iterator v0.2.0
   Compiling precomputed-hash v0.1.1
   Compiling number_prefix v0.4.0
   Compiling new_debug_unreachable v1.0.6
   Compiling opaque-debug v0.3.1
   Compiling hex-conservative v0.1.2
   Compiling near-sandbox-utils v0.8.0
   Compiling rust_decimal v1.36.0
   Compiling hex v0.3.2
   Compiling pin-project-lite v0.2.15
   Compiling camino v1.1.9
   Compiling tap v1.0.1
   Compiling same-file v1.0.6
   Compiling is_executable v0.1.2
   Compiling minimal-lexical v0.2.1
   Compiling unicode-segmentation v1.12.0
   Compiling unicode-width v0.2.0
   Compiling iana-time-zone v0.1.61
   Compiling newline-converter v0.3.0
   Compiling indicatif v0.17.9
   Compiling binary-install v0.2.0
   Compiling nom v7.1.3
   Compiling walkdir v2.5.0
   Compiling wyz v0.5.1
   Compiling bitcoin_hashes v0.13.0
   Compiling sha2 v0.9.9
   Compiling string_cache v0.8.7
   Compiling csv v1.3.1
   Compiling scroll v0.11.0
   Compiling is-wsl v0.4.0
   Compiling hmac v0.9.0
   Compiling secret-service v3.1.0
   Compiling near_schemafy_lib v0.7.0
   Compiling hashbrown v0.14.5
   Compiling crossterm v0.25.0
   Compiling dirs v5.0.1
   Compiling unicode-normalization v0.1.22
   Compiling color-eyre v0.6.3
   Compiling debugid v0.7.3
   Compiling near-token v0.2.1
   Compiling term v0.7.0
   Compiling tempfile v3.14.0
   Compiling brownstone v1.1.0
   Compiling fuzzy-matcher v0.3.7
   Compiling linux-keyutils v0.2.4
   Compiling fxhash v0.2.1
   Compiling memmap2 v0.5.10
   Compiling is-terminal v0.4.13
   Compiling funty v2.0.0
   Compiling joinery v2.1.0
   Compiling home v0.5.9
   Compiling bs58 v0.5.1
   Compiling indent_write v2.2.0
   Compiling names v0.14.0
   Compiling smawk v0.3.2
   Compiling scroll v0.10.2
   Compiling plain v0.2.3
   Compiling encode_unicode v1.0.0
   Compiling shell-escape v0.1.5
   Compiling xml-rs v0.8.24
   Compiling pathdiff v0.2.3
   Compiling prettyplease v0.1.25
   Compiling unicode-linebreak v0.1.5
   Compiling prettytable v0.10.0
   Compiling textwrap v0.16.1
   Compiling elementtree v0.7.0
   Compiling open v5.3.1
   Compiling pdb v0.7.0
   Compiling goblin v0.5.4
   Compiling nom-supreme v0.6.0
   Compiling bitvec v1.0.1
   Compiling symbolic-common v8.8.0
   Compiling keyring v2.3.3
   Compiling inquire v0.7.5
   Compiling bip39 v2.1.0
   Compiling shellexpand v3.1.0
   Compiling near-abi-client-impl v0.1.1
   Compiling wasmparser v0.211.1
   Compiling slipped10 v0.4.6
   Compiling toml v0.8.19
   Compiling tracing-indicatif v0.3.8
   Compiling gimli v0.26.2
   Compiling near-gas v0.2.5
   Compiling zip v0.5.13
   Compiling env_filter v0.1.2
   Compiling cargo-platform v0.1.9
   Compiling linked-hash-map v0.5.6
   Compiling smart-default v0.7.1
   Compiling dmsort v1.0.2
   Compiling humantime v2.1.0
   Compiling wasmparser v0.83.0
   Compiling near-sandbox-utils v0.9.0
   Compiling near-sdk-macros v5.6.0
   Compiling shell-words v1.1.0
   Compiling lazycell v1.3.0
   Compiling easy-ext v1.0.2
   Compiling env_logger v0.11.5
   Compiling symbolic-debuginfo v8.8.0
   Compiling cargo_metadata v0.18.1
   Compiling near-abi-client-macros v0.1.1
   Compiling near-workspaces v0.11.1
   Compiling strum_macros v0.26.4
   Compiling jsonptr v0.4.7
   Compiling colored v2.2.0
   Compiling atty v0.2.14
   Compiling libloading v0.8.6
   Compiling near-sandbox-utils v0.12.0
   Compiling dunce v1.0.5
   Compiling strum v0.26.3
   Compiling convert_case v0.5.0
   Compiling json-patch v2.0.0
   Compiling near-abi-client v0.1.1
   Compiling tokio-retry v0.3.0
   Compiling near-gas v0.3.0
   Compiling near-token v0.3.0
   Compiling near-sys v0.2.2
   Compiling near-sdk v5.6.0
   Compiling crypto-hash v0.3.4
   Compiling cargo-util v0.1.2
   Compiling tokio-native-tls v0.3.1
   Compiling hyper-tls v0.6.0
   Compiling reqwest v0.12.9
   Compiling near-jsonrpc-client v0.10.1
   Compiling near-socialdb-client v0.3.2
   Compiling near-cli-rs v0.11.1
   Compiling cargo-near v0.6.4
   Compiling chat_contract_tests v0.0.1 (/home/runner/work/polyglot/polyglot/apps/chat/contract/tests)
    Finished `release` profile [optimized] target(s) in 4m 21s
     Running `/home/runner/work/polyglot/polyglot/workspace/target/release/chat_contract_tests`
Installed near-sandbox into /home/runner/work/polyglot/polyglot/workspace/target/release/build/near-sandbox-utils-cdf556a7364ec456/out/.near/near-sandbox-1.40.0_7dd0b5993577f592be15eb102e5a3da37be66271/near-sandbox


new: ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 1658608726972,
    },
    transaction: ExecutionOutcome {
        transaction_hash: FYqnFoUFbHcNBzc5hkRvVGez3gt61PAz9EV57vNi42FU,
        block_hash: 6XKjRfSbfy1SNU8LLyQcfVXuW63dPyuSJ17ht1dkNkyM,
        logs: [],
        receipt_ids: [
            B1eVoapbHwo3VjawYiA3tXN8YP7rYaFppyyGGHqut132,
        ],
        gas_burnt: NearGas {
            inner: 308066207802,
        },
        tokens_burnt: NearToken {
            inner: 30806620780200000000,
        },
        executor_id: AccountId(
            "dev-20250619203842-71804539509992",
        ),
        status: SuccessReceiptId(B1eVoapbHwo3VjawYiA3tXN8YP7rYaFppyyGGHqut132),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: B1eVoapbHwo3VjawYiA3tXN8YP7rYaFppyyGGHqut132,
            block_hash: 6XKjRfSbfy1SNU8LLyQcfVXuW63dPyuSJ17ht1dkNkyM,
            logs: [],
            receipt_ids: [
                2vvGcLWTpQAqZER3pLqJut9TvU7xY9UtvRByGh6PTKne,
            ],
            gas_burnt: NearGas {
                inner: 1350542519170,
            },
            tokens_burnt: NearToken {
                inner: 135054251917000000000,
            },
            executor_id: AccountId(
                "dev-20250619203842-71804539509992",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.001107950629617296
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205788226811736
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.0009021624028055599
  outcome_tokens_burnt_usd: 0.0


claim_alias(contract, ''): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 2226060977009,
    },
    transaction: ExecutionOutcome {
        transaction_hash: ECVuuwcke1BuXtVdW8qUVmUcRK7jYP29Lzod8kTFi1GW,
        block_hash: 8svM9Fc6FsXY3JhucTXdKB3VkmiGsbxNE9LopNhXwwSd,
        logs: [],
        receipt_ids: [
            CnK6ht5EyV4Qfa4s9nJ9YQ3Ae23fBiZjQheRQ5zRbd2h,
        ],
        gas_burnt: NearGas {
            inner: 308110926482,
        },
        tokens_burnt: NearToken {
            inner: 30811092648200000000,
        },
        executor_id: AccountId(
            "dev-20250619203842-71804539509992",
        ),
        status: SuccessReceiptId(CnK6ht5EyV4Qfa4s9nJ9YQ3Ae23fBiZjQheRQ5zRbd2h),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: CnK6ht5EyV4Qfa4s9nJ9YQ3Ae23fBiZjQheRQ5zRbd2h,
            block_hash: 8svM9Fc6FsXY3JhucTXdKB3VkmiGsbxNE9LopNhXwwSd,
            logs: [],
            receipt_ids: [
                4DRnnwoVsJcEwn34d5MJba2xfMa3VqRcaujK8QQUz5kQ,
            ],
            gas_burnt: NearGas {
                inner: 1694767488027,
            },
            tokens_burnt: NearToken {
                inner: 169476748802700000000,
            },
            executor_id: AccountId(
                "dev-20250619203842-71804539509992",
            ),
            status: Failure(ActionError(ActionError { index: Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked: chat_contract.claim_alias / invalid alias")) })),
        },
        ExecutionOutcome {
            transaction_hash: 4DRnnwoVsJcEwn34d5MJba2xfMa3VqRcaujK8QQUz5kQ,
            block_hash: 3JgJ8xYccKCHXd4tsXbbKVrEGkgySczcr5hsYQY5zrjK,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20250619203842-71804539509992",
            ),
            status: SuccessValue(''),
        },
    ],
    status: Failure(ActionError(ActionError { index: Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked: chat_contract.claim_alias / invalid alias")) })),
}
total_gas_burnt_usd: 0.001487008732642012
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205818098889976
  outcome_tokens_burnt_usd: 0.0
outcome (success: false):
  outcome_gas_burnt_usd: 0.0011321046820020359
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


dev_create_account(account1): Account {
    id: AccountId(
        "dev-20250619203844-93811223543872",
    ),
}


generate_cid_borsh(account1): ViewResultDetails { result: [59, 0, 0, 0, 98, 97, 102, 107, 114, 101, 105, 104, 100, 119, 100, 99, 101, 102, 103, 104, 52, 100, 113, 107, 106, 118, 54, 55, 117, 122, 99, 109, 119, 55, 111, 106, 101, 101, 54, 120, 101, 100, 122, 100, 101, 116, 111, 106, 117, 122, 106, 101, 118, 116, 101, 110, 120, 113, 117, 118, 121, 107, 117], logs: [] }


claim_alias(account1, alias1): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 3622989453113,
    },
    transaction: ExecutionOutcome {
        transaction_hash: 37jdQ83imoG8sZ5eMnGGXVcDCBxfQC3JF8UaNrXhkiDG,
        block_hash: EHTBYfCrbphM9oZKGrgizLMdCySeMafLQ735UhpcTpET,
        logs: [],
        receipt_ids: [
            GAdHz3sQ9c9HPZWMMhRVeaxhMsXBZZw6tutLsR7hMVby,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20250619203844-93811223543872",
        ),
        status: SuccessReceiptId(GAdHz3sQ9c9HPZWMMhRVeaxhMsXBZZw6tutLsR7hMVby),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: GAdHz3sQ9c9HPZWMMhRVeaxhMsXBZZw6tutLsR7hMVby,
            block_hash: Fvq2Gqxb6FLLDbfjaTWoY5YdidXQsaGt6rv7gm84QpdK,
            logs: [
                "20:38:46 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 1750365526483084804; signer_account_id = \"dev-20250619203844-93811223543872\"; predecessor_account_id = \"dev-20250619203844-93811223543872\" }\n20:38:46 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = None }",
            ],
            receipt_ids: [
                23GoWKzSwgkczpPPPsLHFg8PKs5sAuNK5agne8SHxbGM,
            ],
            gas_burnt: NearGas {
                inner: 3091682548527,
            },
            tokens_burnt: NearToken {
                inner: 309168254852700000000,
            },
            executor_id: AccountId(
                "dev-20250619203842-71804539509992",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: 23GoWKzSwgkczpPPPsLHFg8PKs5sAuNK5agne8SHxbGM,
            block_hash: 3UjcgYtFjvcDq6E7aF7Z7q56SxZGvSnFAgyQLuA9q1w2,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20250619203844-93811223543872",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.002420156954679484
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.002065243942416036
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


claim_alias(account1, alias1): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 3756674328443,
    },
    transaction: ExecutionOutcome {
        transaction_hash: 4u3WWxds1MDyGCHnUaAKetLyf1xouRA1Y4ad5BBVMGCi,
        block_hash: EpyT24hGaGFo7Ss6PD6jUHgni211fMfPa2BvNnqXCSQR,
        logs: [],
        receipt_ids: [
            8Q7hafH7mFDMbHBoERr8XUULPhbBaB21TDFNwQDom7nZ,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20250619203844-93811223543872",
        ),
        status: SuccessReceiptId(8Q7hafH7mFDMbHBoERr8XUULPhbBaB21TDFNwQDom7nZ),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: 8Q7hafH7mFDMbHBoERr8XUULPhbBaB21TDFNwQDom7nZ,
            block_hash: Y43ZaBYJ5BrKJ6qqpFHMVZwJrqpbnyQ3urYwk3XRqkZ,
            logs: [
                "20:38:47 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 1750365527493178494; signer_account_id = \"dev-20250619203844-93811223543872\"; predecessor_account_id = \"dev-20250619203844-93811223543872\" }\n20:38:47 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = Some(\"alias1\") }",
            ],
            receipt_ids: [
                AzFCo9SGdmMNLvT9Y9F6MUP2Yc3phcpeKWa1BLNiYzUM,
            ],
            gas_burnt: NearGas {
                inner: 3225367423857,
            },
            tokens_burnt: NearToken {
                inner: 322536742385700000000,
            },
            executor_id: AccountId(
                "dev-20250619203842-71804539509992",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: AzFCo9SGdmMNLvT9Y9F6MUP2Yc3phcpeKWa1BLNiYzUM,
            block_hash: 83hh1kRCQis2pZLfkBFswBT3zy53kRndS5tNueCT6ioZ,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20250619203844-93811223543872",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.002509458451399924
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.0021545454391364758
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


get_account_info(account1): Some(
    (
        "alias1",
        1750365527493178494,
        0,
    ),
)


get_alias_map(account1, alias1): Some(
    {
        AccountId(
            "dev-20250619203844-93811223543872",
        ): (
            1750365527493178494,
            0,
        ),
    },
)


dev_create_account(account2): Account {
    id: AccountId(
        "dev-20250619203847-98819301223722",
    ),
}


claim_alias(alias2): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 3854972924225,
    },
    transaction: ExecutionOutcome {
        transaction_hash: AY9z6Q19omMRSsizJuEAeVdGhZ9Cysq9aaap81nhDeeX,
        block_hash: FDWsEKaRTHC5B7jvFu7jBretw1LGx2z71Uo4mR83CEkg,
        logs: [],
        receipt_ids: [
            GJtQqgwsbLQBWzvQ4MgMMhhjjMqWBJEs5wxahf3U6CWT,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20250619203847-98819301223722",
        ),
        status: SuccessReceiptId(GJtQqgwsbLQBWzvQ4MgMMhhjjMqWBJEs5wxahf3U6CWT),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: GJtQqgwsbLQBWzvQ4MgMMhhjjMqWBJEs5wxahf3U6CWT,
            block_hash: 4SMnz5jDp6Xe5YW3d9vsv6VdmKzwCP4w8wNJxDVzD9bV,
            logs: [
                "20:38:49 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias2\"; block_timestamp = 1750365529514927537; signer_account_id = \"dev-20250619203847-98819301223722\"; predecessor_account_id = \"dev-20250619203847-98819301223722\" }\n20:38:49 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = None }",
            ],
            receipt_ids: [
                6nabRs1iRLkxBRvrq7FKLQpu183VvJHbHJCS31RA1nZ2,
            ],
            gas_burnt: NearGas {
                inner: 3323666019639,
            },
            tokens_burnt: NearToken {
                inner: 332366601963900000000,
            },
            executor_id: AccountId(
                "dev-20250619203842-71804539509992",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: 6nabRs1iRLkxBRvrq7FKLQpu183VvJHbHJCS31RA1nZ2,
            block_hash: 7R4dybCgufe2F9gzgFPKNGfo1ecUeqShHsSZUXAiKbD7,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20250619203847-98819301223722",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.0025751219133823
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.002220208901118852
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


get_account_info(account2): Some(
    (
        "alias2",
        1750365529514927537,
        0,
    ),
)


get_alias_map_borsh(alias2): Some(
    {
        AccountId(
            "dev-20250619203847-98819301223722",
        ): (
            1750365529514927537,
            0,
        ),
    },
)


claim_alias(account2, alias1): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 4046715822260,
    },
    transaction: ExecutionOutcome {
        transaction_hash: HbvWdgujuAjKcgsB1v6DuDEzNJQYomQmCSG94J1LDftX,
        block_hash: DXXv5kQSYmzJpnSTvs33JqiQBAfEE4wGXfrYqTFtenTV,
        logs: [],
        receipt_ids: [
            8bEVvXhkS2zBH8UetKxTyQwiGGTQ5JFNYkrAoNd6bic9,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20250619203847-98819301223722",
        ),
        status: SuccessReceiptId(8bEVvXhkS2zBH8UetKxTyQwiGGTQ5JFNYkrAoNd6bic9),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: 8bEVvXhkS2zBH8UetKxTyQwiGGTQ5JFNYkrAoNd6bic9,
            block_hash: 7ECNctgM9n9WKe4ubWcwX7vmtiLQSqJMzgTb2Uv8F53p,
            logs: [
                "20:38:50 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 1750365530524108753; signer_account_id = \"dev-20250619203847-98819301223722\"; predecessor_account_id = \"dev-20250619203847-98819301223722\" }\n20:38:50 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = Some(\"alias2\") }",
            ],
            receipt_ids: [
                38VcQePWKAP6RjkRoABWKjWLPkbMqnHbLd7uaZGLq5pm,
            ],
            gas_burnt: NearGas {
                inner: 3515408917674,
            },
            tokens_burnt: NearToken {
                inner: 351540891767400000000,
            },
            executor_id: AccountId(
                "dev-20250619203842-71804539509992",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: 38VcQePWKAP6RjkRoABWKjWLPkbMqnHbLd7uaZGLq5pm,
            block_hash: 6AG1HefsuCCrwfcJZ9WhBhS2iHQiVBmThbc25e58jYoC,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20250619203847-98819301223722",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.00270320616926968
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.002348293157006232
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


get_account_info(account2): Some(
    (
        "alias1",
        1750365530524108753,
        1,
    ),
)


get_alias_map(account2, alias1): Some(
    {
        AccountId(
            "dev-20250619203844-93811223543872",
        ): (
            1750365527493178494,
            0,
        ),
        AccountId(
            "dev-20250619203847-98819301223722",
        ): (
            1750365530524108753,
            1,
        ),
    },
)


get_alias_map(account2, alias2): Some(
    {},
)


claim_alias(account1, alias2): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 4043954796248,
    },
    transaction: ExecutionOutcome {
        transaction_hash: 86jkBmcr2Qw7Nw1w9iuUoMQT7PHx9V8r9Sw72hoh4mvm,
        block_hash: JAr6EBWHKiozEkfDb26mYX4s9G1E1emoxtH2uQYHb93y,
        logs: [],
        receipt_ids: [
            GN1DjjUttAwP7HxbnnqFGu77VqL8KVyUjb2AVo4m6WjJ,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20250619203844-93811223543872",
        ),
        status: SuccessReceiptId(GN1DjjUttAwP7HxbnnqFGu77VqL8KVyUjb2AVo4m6WjJ),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: GN1DjjUttAwP7HxbnnqFGu77VqL8KVyUjb2AVo4m6WjJ,
            block_hash: FqTwbyfnWbPv1jGwUWLkCyFu7psyyzB74qKF4qq9M79r,
            logs: [
                "20:38:51 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias2\"; block_timestamp = 1750365531535373511; signer_account_id = \"dev-20250619203844-93811223543872\"; predecessor_account_id = \"dev-20250619203844-93811223543872\" }\n20:38:51 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = Some(\"alias1\") }",
            ],
            receipt_ids: [
                Gn71DYGiU1d7Jpa3pfmBsirGhScAwXfpMfrFdwY6weXf,
            ],
            gas_burnt: NearGas {
                inner: 3512647891662,
            },
            tokens_burnt: NearToken {
                inner: 351264789166200000000,
            },
            executor_id: AccountId(
                "dev-20250619203842-71804539509992",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: Gn71DYGiU1d7Jpa3pfmBsirGhScAwXfpMfrFdwY6weXf,
            block_hash: 8EFdMV6SRj7tnMzzbpyz3qvtBGuxvSMUUHXRHKQotpgR,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20250619203844-93811223543872",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.0027013618038936637
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.002346448791630216
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


get_account_info(account1): Some(
    (
        "alias2",
        1750365531535373511,
        0,
    ),
)


get_alias_map(account1, alias2): Some(
    {
        AccountId(
            "dev-20250619203844-93811223543872",
        ): (
            1750365531535373511,
            0,
        ),
    },
)


get_alias_map(account1, alias1): Some(
    {
        AccountId(
            "dev-20250619203847-98819301223722",
        ): (
            1750365530524108753,
            1,
        ),
    },
)


claim_alias(account1, alias1): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 4046645065244,
    },
    transaction: ExecutionOutcome {
        transaction_hash: 9SBJ6CCEeT3fvdhsFZgArq2KwQ9YymRMLj7ZDLsMkG48,
        block_hash: DQzTQ7zG3Pm2zcvYTkAc7QCKr3ksoFFnPpvRDjtJAN1Z,
        logs: [],
        receipt_ids: [
            CNNGKTkktfQZyyJq27Sp54Wk9XQTkjgDkgFd5o2iYkPy,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20250619203844-93811223543872",
        ),
        status: SuccessReceiptId(CNNGKTkktfQZyyJq27Sp54Wk9XQTkjgDkgFd5o2iYkPy),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: CNNGKTkktfQZyyJq27Sp54Wk9XQTkjgDkgFd5o2iYkPy,
            block_hash: GxBs4PcEebFSsTJvkpr1h6xm9V7o5s9x3wTaFQxGwtHy,
            logs: [
                "20:38:52 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 1750365532546272449; signer_account_id = \"dev-20250619203844-93811223543872\"; predecessor_account_id = \"dev-20250619203844-93811223543872\" }\n20:38:52 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = Some(\"alias2\") }",
            ],
            receipt_ids: [
                FdTKbqNZV6Pe46kWSxWSoXthXBHJqoW1J1B88NvdXX12,
            ],
            gas_burnt: NearGas {
                inner: 3515338160658,
            },
            tokens_burnt: NearToken {
                inner: 351533816065800000000,
            },
            executor_id: AccountId(
                "dev-20250619203842-71804539509992",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: FdTKbqNZV6Pe46kWSxWSoXthXBHJqoW1J1B88NvdXX12,
            block_hash: EudWDYnN5WCvz8VvYwrJ22qiuxWFswku4yrYbrEqC3Pz,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20250619203844-93811223543872",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.002703158903582992
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.002348245891319544
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


get_account_info(account1): Some(
    (
        "alias1",
        1750365532546272449,
        1,
    ),
)


get_alias_map(account1, alias1): Some(
    {
        AccountId(
            "dev-20250619203844-93811223543872",
        ): (
            1750365532546272449,
            1,
        ),
        AccountId(
            "dev-20250619203847-98819301223722",
        ): (
            1750365530524108753,
            0,
        ),
    },
)


get_alias_map(account1, alias2): Some(
    {},
)
In [ ]:
{ pwsh ../apps/spiral/temp/build.ps1 } | Invoke-Block
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "cube.dib"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None; stderr = true } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ # cube
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## cube
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open System
> open System.Threading.Tasks
> open System.Text
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let width = 160
> let height = 44
> let backgroundChar = '.'
> let distanceFromCam = 100.0
> let k1 = 40.0
> let incrementSpeed = 0.6
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### get_width
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl get_width () =
>     160i32
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### get_height
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl get_height () =
>     44i32
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### get_background_char
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl get_background_char () =
>     '.'
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### get_distance_from_cam
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl get_distance_from_cam () =
>     100f64
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### get_k1
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl get_k1 () =
>     40f64
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### get_increment_speed
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl get_increment_speed () =
>     0.6f64
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### rotation
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Rotation = { a: float; b: float; c: float }
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> type rotation =
>     {
>         a : f64
>         b : f64
>         c : f64
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### cube
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Cube = { cubeWidth: float; horizontalOffset: float }
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> type cube =
>     {
>         cube_width : f64
>         horizontal_offset : f64
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### get_cubes
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let cubes = [[
>     { cubeWidth = 20.0; horizontalOffset = -40.0 }
>     { cubeWidth = 10.0; horizontalOffset = 10.0 }
>     { cubeWidth = 5.0; horizontalOffset = 40.0 }
> ]]
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl get_cubes () : list cube =
>     [[
>         { cube_width = 20; horizontal_offset = -40 }
>         { cube_width = 10; horizontal_offset = 10 }
>         { cube_width = 5; horizontal_offset = 40 }
>     ]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### calculate_x
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let calculateX i j k (rot: Rotation) =
>     let a, b, c = rot.a, rot.b, rot.c
>     j * sin a * sin b * cos c - k * cos a * sin b * cos c +
>     j * cos a * sin c + k * sin a * sin c + i * cos b * cos c
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl calculate_x i j k (rot : rotation) =
>     inl a, b, c = rot.a, rot.b, rot.c
>     j * sin a * sin b * cos c - k * cos a * sin b * cos c +
>     j * cos a * sin c + k * sin a * sin c + i * cos b * cos c
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### calculate_y
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let calculateY i j k (rot: Rotation) =
>     let a, b, c = rot.a, rot.b, rot.c
>     j * cos a * cos c + k * sin a * cos c -
>     j * sin a * sin b * sin c + k * cos a * sin b * sin c -
>     i * cos b * sin c
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl calculate_y i j k (rot : rotation) =
>     inl a, b, c = rot.a, rot.b, rot.c
>     j * cos a * cos c + k * sin a * cos c -
>     j * sin a * sin b * sin c + k * cos a * sin b * sin c -
>     i * cos b * sin c
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### calculate_z
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let calculateZ i j k (rot: Rotation) =
>     let a, b, c = rot.a, rot.b, rot.c
>     k * cos a * cos b - j * sin a * cos b + i * sin b
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl calculate_z i j k (rot : rotation) =
>     inl a, b, c = rot.a, rot.b, rot.c
>     k * cos a * cos b - j * sin a * cos b + i * sin b
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### calculate_for_surface
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let calculateForSurface cubeX cubeY cubeZ ch rot horizontalOffset =
>     let x = calculateX cubeX cubeY cubeZ rot
>     let y = calculateY cubeX cubeY cubeZ rot
>     let z = calculateZ cubeX cubeY cubeZ rot + distanceFromCam
>     let ooz = 1.0 / z
>     let xp = int (float width / 2.0 + horizontalOffset + k1 * ooz * x * 2.0)
>     let yp = int (float height / 2.0 + k1 * ooz * y)
>     let idx = xp + yp * width
>     if idx >= 0 && idx < width * height
>     then Some (idx, (ooz, ch))
>     else None
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> let calculate_for_surface cube_x cube_y cube_z ch rot horizontal_offset =
>     inl x = calculate_x cube_x cube_y cube_z rot
>     inl y = calculate_y cube_x cube_y cube_z rot
>     inl z = calculate_z cube_x cube_y cube_z rot + get_distance_from_cam ()
>     inl ooz = 1.0 / z
>     inl xp = i32 (f64 (get_width ()) / 2.0 + horizontal_offset + get_k1 () * ooz
> * x * 2.0)
>     inl yp = i32 (f64 (get_height ()) / 2.0 + get_k1 () * ooz * y)
>     inl idx = xp + yp * get_width ()
>     if idx >= 0 && idx < get_width () * get_height ()
>     then Some (idx, (ooz, ch))
>     else None
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### frange
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let frange start stop step =
>     seq {
>         let mutable current = start
>         while (step > 0.0 && current < stop) || (step < 0.0 && current > stop) 
> do
>             yield current
>             current <- current + step
>     }
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl frange start stop step : _ f64 =
>     fun () =>
>         inl current = mut start
>         loopw.while
>             fun () => (step > 0f64 && *current < stop) || (step < 0 && *current 
> > stop)
>             fun () =>
>                 *current |> yield
>                 current <- *current + step
>     |> seq.new_seq
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### get_cube_points
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let getCubePoints (cube: Cube) rot =
>     let cw = cube.cubeWidth
>     let ho = cube.horizontalOffset
>     let cubeRange = frange (-cw) cw incrementSpeed
>     seq {
>         for cubeX in cubeRange do
>             for cubeY in cubeRange do
>                 let x =
>                     [[
>                         calculateForSurface cubeX cubeY (-cw) '@' rot ho
>                         calculateForSurface cw cubeY cubeX '$' rot ho
>                         calculateForSurface (-cw) cubeY (-cubeX) '~' rot ho
>                         calculateForSurface (-cubeX) cubeY cw '#' rot ho
>                         calculateForSurface cubeX (-cw) (-cubeY) ';' rot ho
>                         calculateForSurface cubeX cw cubeY '+' rot ho
>                     ]]
>                     |> Seq.choose id
>                 yield! x
>     }
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl get_cube_points (cube : cube) rot =
>     inl cw = cube.cube_width
>     inl ho = cube.horizontal_offset
>     inl cube_range = frange -cw cw (get_increment_speed ())
>     inl cube_range = join cube_range
>     inl get cube_x cube_y =
>         [[
>             calculate_for_surface cube_x cube_y -cw ';' rot ho
>             calculate_for_surface cw cube_y cube_x '\\' rot ho
>             calculate_for_surface -cw cube_y -cube_x '/' rot ho
>             calculate_for_surface -cube_x cube_y cw '=' rot ho
>             calculate_for_surface cube_x -cw -cube_y '>' rot ho
>             calculate_for_surface cube_x cw cube_y '<' rot ho
>         ]]
>         |> listm'.box
>     inl get = join get
>     inl box x : _ (i32 * f64 * char) =
>         optionm'.box x
>     inl box = join box
>     fun () =>
>         backend_switch {
>             Fsharp = fun () =>
>                 $'for cube_x in !cube_range do'
>                 $'for cube_y in !cube_range do'
>                 $'let x = !get cube_x cube_y |> Seq.choose !box '
>                 $'yield\! x' : ()
>             Python = fun () =>
>                 $'cube_range = !cube_range '
>                 $'get = !get '
>                 $'box = !box '
>                 $'for cube_x in cube_range:'
>                 $'    for cube_y in cube_range:'
>                 $'        x = get(cube_x)(cube_y)'
>                 $'        for i in x:'
>                 $'            i_ = box(i)'
>                 $'            if i_ is not None: yield i' : ()
>         }
>     |> seq.new_seq
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### generate_frame
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let generateFrame rot =
>     let updates =
>         cubes
>         |> Seq.collect (fun cube -> getCubePoints cube rot)
>     let buffer = Array.create (width * height) None
>     updates
>     |> Seq.iter (fun (idx, (ooz, ch)) ->
>         match buffer.[[idx]] with
>         | Some (prevOoz, _) when prevOoz >= ooz -> ()
>         | _ -> buffer.[[idx]] <- Some (ooz, ch)
>     )
>     let sb = StringBuilder()
>     for row in 0 .. (height - 1) do
>         for col in 0 .. (width - 1) do
>             let idx = col + row * width
>             let ch =
>                 match buffer.[[idx]] with
>                 | Some (_, ch) -> ch
>                 | None -> backgroundChar
>             sb.Append(ch) |> ignore
>         sb.AppendLine() |> ignore
>     sb.ToString()
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let rot = { a = 0.0; b = 0.0; c = 0.0 }
> let frame = generateFrame rot
> Console.Write frame
> 
> ── [ 37.95ms - stdout ] ────────────────────────────────────────────────────────
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> ................................................................................
> │ 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> ................................................................................
> │ 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> ................................................................................
> │ 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> ................................................................................
> │ 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> ................................................................................
> │ 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> .@@@@@@@@@@@@@@@@@$.............................................................
> │ 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> .@@@@@@@@@@@@@@@@@$.............................................................
> │ 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$...................................
> │ 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$...................................
> │ 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$...................................
> │ 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$...................................
> │ 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$...................................
> │ 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> .@@@@@@@@@@@@@@@@@$................+++++++++....................................
> │ 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> .@@@@@@@@@@@@@@@@@$.............................................................
> │ 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> .+++++++++++++++++$.............................................................
> │ 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> ................................................................................
> │ 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> ................................................................................
> │ 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> ................................................................................
> │ 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> ................................................................................
> │ 
> ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
> ................................................................................
> │ 
> ....................++++++++++++++++++++++++++++++++++++++++....................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl generate_frame rot =
>     inl updates : seq.seq' (int * (f64 * char)) =
>         inl get_cube_points' cube : seq.seq' (int * (f64 * char)) =
>             get_cube_points cube rot
>         inl cubes = get_cubes () |> listm'.box
>         backend_switch {
>             Fsharp = fun () =>
>                 inl get_cube_points' = join get_cube_points'
>                 (cubes |> $'Seq.collect !get_cube_points' ') : seq.seq' (int * 
> (f64 * char))
>             Python = fun () =>
>                 $'cubes = !cubes '
>                 $'get_cube_points = !get_cube_points' '
>                 $'[[x for cube in cubes for x in get_cube_points(*cube)]]' : 
> seq.seq' (int * (f64 * char))
>         }
>     inl none : _ (f64 * char) = None
>     inl width = get_width ()
>     inl height = get_height ()
>     inl buffer =
>         backend_switch {
>             Fsharp = fun () =>
>                 $'Array.create (!width * !height) !none ' : a int (option (f64 *
> char))
>             Python = fun () =>
>                 $'[[!none for _ in range(!width * !height)]]' : a int (option 
> (f64 * char))
>         }
> 
>     inl fn idx ((ooz : f64), (ch : char)) =
>         match buffer |> am'.index idx with
>         | Some (prev_ooz, _) when prev_ooz >= ooz => ()
>         | _ =>
>             inl x = (ooz, ch) |> Some
>             backend_switch {
>                 Fsharp = fun () =>
>                     $'!buffer.[[!idx]] <- !x ' : ()
>                 Python = fun () =>
>                     $'!buffer[[!idx]] = !x ' : ()
>             }
>     backend_switch {
>         Fsharp = fun () =>
>             updates
>             |> $'Seq.iter (fun (struct (idx, ooz, ch)) -> !fn idx (ooz, ch))' : 
> ()
>         Python = fun () =>
>             $'for (idx, ooz, ch) in !updates: !fn(idx)(ooz, ch)' : ()
>     }
> 
>     inl sb = "" |> sm'.string_builder
>     inl fn1 row =
>         inl fn2 col =
>             inl idx = col + row * width
>             inl ch =
>                 match buffer |> am'.index idx with
>                 | Some (_, ch) => ch
>                 | None => get_background_char ()
>             sb |> sm'.builder_append (ch |> sm'.obj_to_string) |> ignore
> 
>         backend_switch {
>             Fsharp = fun () =>
>                 $'for col in 0 .. (!width - 1) do !fn2 col' : ()
>             Python = fun () =>
>                 $'for col in range(!width): !fn2(col)' : ()
>         }
>         sb |> sm'.builder_append_line |> ignore
> 
>     backend_switch {
>         Fsharp = fun () =>
>             $'for row in 0 .. (!height - 1) do !fn1 row' : ()
>         Python = fun () =>
>             $'for row in range(!height): !fn1(row)' : ()
>     }
>     sb |> sm'.obj_to_string
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! fsharp
> ///! cuda
> ///! rust
> ///! typescript
> ///! python
> 
> { a = 0.0; b = 0.0; c = 0.0 }
> |> generate_frame
> |> console.write_line
> 
> ── [ 11.40s - return value ] ───────────────────────────────────────────────────
> │ "
> │ .py output (Python):
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ...........................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> │ 
> │ "
> │ 
> 
> ── [ 11.40s - stdout ] ─────────────────────────────────────────────────────────
> │ .fsx output:
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\.............................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\.............................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\................<<<<<<<<<....................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\.............................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .<<<<<<<<<<<<<<<<<\.............................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<....................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### main_loop
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec mainLoop rot = async {
>     let frame = generateFrame rot
>     // Console.SetCursorPosition(0, 0)
>     Console.Write(frame)
>     let rot' = { a = rot.a + 0.05; b = rot.b + 0.05; c = rot.c + 0.01 }
>     do! Async.Sleep 16
>     return! mainLoop rot'
> }
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> let rec main_loop max i rot =
>     fun () =>
>         inl rot = join rot
>         inl frame = rot |> generate_frame
>         if max < 0 then
>             run_target function
>                 | Fsharp (Native) => fun () => 
> $'System.Console.SetCursorPosition (0, 0)'
>                 | Rust _ => fun () =>
>                     open rust.rust_operators
>                     !\($'$"print\!(\\\"\\\\x1B[[1;1H\\\")"')
>                 | TypeScript _ => fun () =>
>                     open typescript_operators
>                     !\($'$"process.stdout.write(\'\\\\u001B[[1;1H\')"')
>                 | Python _ => fun () =>
>                     open python_operators
>                     // global "import sys"
>                     !\($'$"sys.stdout.write(\\\"\\\\033[[1;1H\\\")"')
>                 | Cuda _ => fun () =>
>                     global "import sys"
>                     $'sys.stdout.write("\\033[[1;1H")'
>                 | _ => fun () => ()
>         frame |> console.write_line
>         async.sleep 1 |> async.do
>         if max > 0 && i >= max
>         then ()
>         else
>             { a = rot.a + 0.05; b = rot.b + 0.05; c = rot.c + 0.01 }
>             |> main_loop max (i + 1)
>             |> async.return_await'
>     |> async.new_async_unit
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### main
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // [[<EntryPoint>]]
> let main argv =
>     // Console.CursorVisible <- false
>     Async.StartImmediate (mainLoop { a = 0.0; b = 0.0; c = 0.0 })
>     System.Threading.Thread.Sleep(1000)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> // main [[||]]
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> inl main (_args : array_base string) =
>     inl console =
>         run_target function
>         | Fsharp (Wasm) => fun () => false
>         | _ => fun () =>
>             ((join "VSCODE_PID") |> env.get_environment_variable |> sm'.length 
> |> (=) 0i32)
>                 && ("AUTOMATION" |> env.get_environment_variable |> sm'.length 
> |> (=) 0i32)
>     if console then
>         run_target function
>             | Fsharp (Native) => fun () => $'System.Console.CursorVisible <- 
> false'
>             | Rust _ => fun () =>
>                 open rust.rust_operators
>                 !\($'$"print\!(\\\"\\\\x1B[[?25l\\\")"')
>             | TypeScript _ => fun () =>
>                 open typescript_operators
>                 !\($'$"process.stdout.write(\'\\\\u001B[[?25l\')"')
>             | Python _ => fun () =>
>                 open python_operators
>                 python.import_all "sys"
>                 !\($'$"sys.stdout.write(\\\"\\\\033[[?25l\\\")"')
>             | _ => fun () => ()
>     main_loop (if console then -1i32 else 50) 1i32 { a = 0.0; b = 0.0; c = 0.0 }
>     |> fun x =>
>         run_target_args' x function
>         | Fsharp (Wasm)
>         | TypeScript _ => fun x =>
>             x
>             |> async.start_child
>             |> ignore
>         | Python _ => fun x =>
>             x
>             |> async.start_immediate
>             threading.sleep' 2000
>         | _ => fun x =>
>             x
>             |> async.run_synchronously
> 
> inl main () =
>     backend_switch {
>         Fsharp = fun () =>
>             $'let main_ = !main '
>             $'\#if \!FABLE_COMPILER_RUST'
>             $'main_ [[||]]' : ()
>             $'\#else'
>             $'let main args = main_ [[||]]; 0' : ()
>             $'\#endif' : ()
>         Python = fun () =>
>             main ;[[]]
>     }
>     : ()
> 
> ── [ 4.72s - stdout ] ──────────────────────────────────────────────────────────
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\.............................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\.............................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\................<<<<<<<<<....................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\.............................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .<<<<<<<<<<<<<<<<<\.............................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<....................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> .;;;;;;;;;;;;;;;;;;\............................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> .;;;;;;;;;;;;;;;;;;\............................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> .;;;;;;;;;;;;;;;;;;;................;;;;;<<<<...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> .;;;;;;;;;;;;;;;;;;;................<<<<<.......................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> .;;;;;;;;;;;;;;;;;;;............................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> .<<<<<<<<<<<<<<<<<<<............................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> ................................................................................
> │ 
> ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\..................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> .;;;;;;;;;;;;;;;;;;;............................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> .;;;;;;;;;;;;;;;;;;;............................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> .;;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;...................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> .;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;...................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> .;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;...................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> .;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;...................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> .;;;;;;;;;;;;;;;;;;;.............../<<<<<<<<<...................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> ..;;;;;;;;;;;;;;;;;;...............<<<<<<<<<....................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> ..;;;;;;;;;;<<<<<<<<............................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> ..<<<<<<<<<<....................................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> ................................................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> ................................................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> ................................................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<\.................
> ................................................................................
> │ 
> .....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<...............................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;...............................................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> ..............;;;;;;............................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> .>;;;;;;;;;;;;;;;;;;............................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> ./;;;;;;;;;;;;;;;;;;............................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> ./;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;...................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> ./;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;...................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> ./;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;...................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> ./;;;;;;;;;;;;;;;;;;\............../;;;;;;;;;...................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> ./;;;;;;;;;;;;;;;;;;;............../<<<<<<<<<...................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> ./;;;;;;;;;;;;;;;;;;;............../<<<<<<<<....................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> ./<<<<<<<<<<<<<<<<<<<...........................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> ./<<<<<<<<<<<<<<<...............................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> ................................................................................
> │ 
> ......................;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<................
> ................................................................................
> │ 
> ......................<<<<<<<<<<................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> ..;;;;;;;;;;;;;;;;;;............................................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> .>;;;;;;;;;;;;;;;;;;............................................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> ./;;;;;;;;;;;;;;;;;;............................................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> >/;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;...................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> ./;;;;;;;;;;;;;;;;;;\............../;;;;;;;;;...................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> ./;;;;;;;;;;;;;;;;;;;............../;;;;;;;;;...................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> ./;;;;;;;;;;;;;;;;;;;............../;;;;;;;;;\..................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................
> .//;;;;;;;;;;;;;;;;;;............../<<<<<<<<<\..................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> .//;;;;;;;;;;;;;;;;;;............../<<<<<<<<....................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> .//<<<<<<<<<<<<<<<<<<...........................................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> ./<<<<<<<<<<<<<<<<..............................................................
> │ 
> ........................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...............
> ................................................................................
> │ 
> ........................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............
> ................................................................................
> │ 
> ........................;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<...............
> ................................................................................
> │ 
> ........................<<<<<<<<<<<<<<<<<<<<<<..................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................
> ................................................................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> ................................................................................
> │ 
> ......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> ................................................................................
> │ 
> ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> ..;;;;;;;;;;;;;;;;;;............................................................
> │ 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> .>;;;;;;;;;;;;;;;;;;............................................................
> │ 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> >/;;;;;;;;;;;;;;;;;;............................................................
> │ 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> //;;;;;;;;;;;;;;;;;;\..............>;;;;;;;;;...................................
> │ 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> ///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;...................................
> │ 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................
> ///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;\..................................
> │ 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> ///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;;..................................
> │ 
> ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> .//;;;;;;;;;;;;;;;;;;;.............//<<<<<<<<<..................................
> │ 
> .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...............
> .//;;;;;;;;;;;;;;;;<<<............./<<<<<<<<....................................
> │ 
> .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............
> .///<<<<<<<<<<<<<<<<<...........................................................
> │ 
> .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..............
> ./<<<<<<<<<<<<<<<<..............................................................
> │ 
> .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............
> ................................................................................
> │ 
> .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<..............
> ................................................................................
> │ 
> .......................//;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<...................
> ................................................................................
> │ 
> .......................//<<<<<<<<<<<<<<<<<<<<<<<<<..............................
> ................................................................................
> │ 
> ........................<<<<<<<.................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
> ................................................................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
> ................................................................................
> │ 
> ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> ................................................................................
> │ 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> ................................................................................
> │ 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> .....................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> ..;;;;;;;;;;;;;;;;;.............................................................
> │ 
> .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> .>;;;;;;;;;;;;;;;;;;............................................................
> │ 
> .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> >//;;;;;;;;;;;;;;;;;............................................................
> │ 
> .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> ///;;;;;;;;;;;;;;;;;\..............>;;;;;;;;;...................................
> │ 
> .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................
> ///;;;;;;;;;;;;;;;;;;.............>/;;;;;;;;;...................................
> │ 
> ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> ///;;;;;;;;;;;;;;;;;;.............//;;;;;;;;;\..................................
> │ 
> ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...............
> ////;;;;;;;;;;;;;;;;;;.............//;;;;;;;;;..................................
> │ 
> ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............
> ////;;;;;;;;;;;;;;;;;;.............//<<<<<<<<<..................................
> │ 
> ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..............
> ////;;;;;;;<<<<<<<<<<<............./<<<<<<<<....................................
> │ 
> ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............
> .///<<<<<<<<<<<<<<<<<...........................................................
> │ 
> ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............
> .//<<<<<<<<<<<<<<<..............................................................
> │ 
> .......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<.............
> .<<<............................................................................
> │ 
> .......................////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<...............
> ................................................................................
> │ 
> .......................////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<......................
> ................................................................................
> │ 
> .......................////<<<<<<<<<<<<<<<<<<<<<<<<<............................
> ................................................................................
> │ 
> .......................//<<<<<<<<<<<<<..........................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................
> ................................................................................
> │ 
> ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
> ................................................................................
> │ 
> ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................
> ................................................................................
> │ 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> ................................................................................
> │ 
> ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> .....................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> ..;;;;;;;;;;;;;;;;;.............................................................
> │ 
> ....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> .>/;;;;;;;;;;;;;;;;;............................................................
> │ 
> ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> >//;;;;;;;;;;;;;;;;;............................................................
> │ 
> ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...............>
> ///;;;;;;;;;;;;;;;;;;..............>;;;;;;;;;...................................
> │ 
> ...................../////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............../
> ////;;;;;;;;;;;;;;;;;.............//;;;;;;;;;...................................
> │ 
> .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............../
> ////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;..................................
> │ 
> .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............
> ////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;..................................
> │ 
> .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............
> ////;;;;;;;;;;;;;;;;;;;............//;<<<<<<<<..................................
> │ 
> .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............
> /////<<<<<<<<<<<<<<<<<<............/<<<<<<<<....................................
> │ 
> ......................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............
> .///<<<<<<<<<<<<<<<<............................................................
> │ 
> ......................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<............
> .//<<<<<<<<<<<<<<<..............................................................
> │ 
> ......................//////;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<.............
> .<<<<<<.........................................................................
> │ 
> ......................///////;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<..................
> ................................................................................
> │ 
> .......................//////<<<<<<<<<<<<<<<<<<<<<<<<<<<<.......................
> ................................................................................
> │ 
> .......................////<<<<<<<<<<<<<<<<<<<<<<<<<<...........................
> ................................................................................
> │ 
> .......................///<<<<<<<<<<<<<<<<......................................
> ................................................................................
> │ 
> ......................./<<<<<...................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ........................;;;;;;..................................................
> ................................................................................
> │ 
> .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................
> ................................................................................
> │ 
> ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................
> ................................................................................
> │ 
> ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
> ................................................................................
> │ 
> ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................
> ................................................................................
> │ 
> .....................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> ................................................................................
> │ 
> ...................../////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> ....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> ..;;;;;;;;;;;;;;;;;.............................................................
> │ 
> ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> .>/;;;;;;;;;;;;;;;;\............................................................
> │ 
> ...................>///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> >//;;;;;;;;;;;;;;;;;............................................................
> │ 
> ...................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............../
> ///;;;;;;;;;;;;;;;;;;..............>;;;;;;;;;...................................
> │ 
> ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............../
> ////;;;;;;;;;;;;;;;;;\............>/;;;;;;;;;\..................................
> │ 
> ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............./
> ////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;..................................
> │ 
> ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............./
> /////;;;;;;;;;;;;;;;;;;...........///;;;;;;;<<\.................................
> │ 
> .....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............
> /////;;;;;;;;;;;;;;<<<<............///<<<<<<<<..................................
> │ 
> .....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............
> //////<<<<<<<<<<<<<<<<<............//<<<<<<<....................................
> │ 
> ...................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............
> /////<<<<<<<<<<<<<<<............................................................
> │ 
> ...................../////////;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<............
> .//<<<<<<<<<<<<<<<..............................................................
> │ 
> ......................////////;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<................
> ./<<<<<<<<......................................................................
> │ 
> ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<...................
> ................................................................................
> │ 
> ......................////////<<<<<<<<<<<<<<<<<<<<<<<<<<<.......................
> ................................................................................
> │ 
> ......................./////<<<<<<<<<<<<<<<<<<<<<<<<<...........................
> ................................................................................
> │ 
> .......................///<<<<<<<<<<<<<<<<<<<<..................................
> ................................................................................
> │ 
> .......................//<<<<<<<<<..............................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ........................;;;;;;;;;...............................................
> ................................................................................
> │ 
> .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................
> ................................................................................
> │ 
> ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................
> ................................................................................
> │ 
> ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................
> ................................................................................
> │ 
> ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
> ................................................................................
> │ 
> .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> ................................................................................
> │ 
> ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> ..;;;;;;;;;;;;;;;;;.............................................................
> │ 
> ...................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> .>/;;;;;;;;;;;;;;;;\............................................................
> │ 
> .................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................
> >///;;;;;;;;;;;;;;;;............................................................
> │ 
> ..................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............>
> ////;;;;;;;;;;;;;;;;;..............>;;;;;;;;;...................................
> │ 
> ...................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............>/
> ////;;;;;;;;;;;;;;;;;;............>//;;;;;;;;\..................................
> │ 
> ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............//
> /////;;;;;;;;;;;;;;;;;\...........///;;;;;;;;;..................................
> │ 
> ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............/
> //////;;;;;;;;;;;;;;;;;...........////;;;<<<<<<.................................
> │ 
> ....................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........../
> ///////;;;;;;;<<<<<<<<<<...........///<<<<<<<<..................................
> │ 
> ....................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...........
> ///////<<<<<<<<<<<<<<<.............//<<<<<<<....................................
> │ 
> .....................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<...........
> /////<<<<<<<<<<<<<<<............................................................
> │ 
> .....................///////////;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<..............
> .///<<<<<<<<<<<<<<..............................................................
> │ 
> .....................////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<.................
> .//<<<<<<<<<....................................................................
> │ 
> ......................//////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<....................
> ................................................................................
> │ 
> ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<<.......................
> ................................................................................
> │ 
> ......................///////<<<<<<<<<<<<<<<<<<<<<<<<<..........................
> ................................................................................
> │ 
> ......................./////<<<<<<<<<<<<<<<<<<<<................................
> ................................................................................
> │ 
> .......................///<<<<<<<<<<<<..........................................
> ................................................................................
> │ 
> ........................<<<<<...................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ........................;;;;;;;;;;..............................................
> ................................................................................
> │ 
> .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........................
> ................................................................................
> │ 
> .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................
> ................................................................................
> │ 
> ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................
> ................................................................................
> │ 
> .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................
> ................................................................................
> │ 
> .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
> ................................................................................
> │ 
> ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> ../;;;;;;;;;;;;;;;..............................................................
> │ 
> ...................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> .>/;;;;;;;;;;;;;;;;.............................................................
> │ 
> ..................>//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> >///;;;;;;;;;;;;;;;;............................................................
> │ 
> ..................////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............>
> ////;;;;;;;;;;;;;;;;;..............>;;;;;;;;;...................................
> │ 
> ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............>/
> /////;;;;;;;;;;;;;;;;;............>//;;;;;;;;\..................................
> │ 
> ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...........//
> //////;;;;;;;;;;;;;;;;;..........////;;;;;;;;;\.................................
> │ 
> .................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........//
> //////;;;;;;;;;;;;;;;;;;..........////;<<<<<<<<.................................
> │ 
> .................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........../
> ///////;;<<<<<<<<<<<<<<<...........///<<<<<<<<..................................
> │ 
> ..................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<...........
> ////////<<<<<<<<<<<<<<.............//<<<<<<<....................................
> │ 
> ....................//////////////;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<.............
> //////<<<<<<<<<<<<<<............................................................
> │ 
> ....................//////////////;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<...............
> .////<<<<<<<<<<<<<..............................................................
> │ 
> ...................../////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<..................
> ..<<<<<<<<<<<...................................................................
> │ 
> .....................////////////<<<<<<<<<<<<<<<<<<<<<<<<<<.....................
> ................................................................................
> │ 
> ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<........................
> ................................................................................
> │ 
> ......................///////<<<<<<<<<<<<<<<<<<<<<<<<<..........................
> ................................................................................
> │ 
> ......................./////<<<<<<<<<<<<<<<<<<<<<<..............................
> ................................................................................
> │ 
> .......................////<<<<<<<<<<<<<<.......................................
> ................................................................................
> │ 
> ......................../<<<<<<<<...............................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ........................;;;;;;;;;...............................................
> ................................................................................
> │ 
> .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........................
> ................................................................................
> │ 
> ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........................
> ................................................................................
> │ 
> ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................
> ................................................................................
> │ 
> .....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................
> ................................................................................
> │ 
> ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
> ................................................................................
> │ 
> ....................>///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> ................................................................................
> │ 
> ...................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> ..;;;;;;;;;;;;;;;;..............................................................
> │ 
> ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> .>//;;;;;;;;;;;;;;;.............................................................
> │ 
> ..................>////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> >///;;;;;;;;;;;;;;;;............................................................
> │ 
> ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............>
> /////;;;;;;;;;;;;;;;;..............>;;;;;;;;\...................................
> │ 
> .................>//////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...........>/
> //////;;;;;;;;;;;;;;;;............>//;;;;;;;;\..................................
> │ 
> .................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........///
> //////;;;;;;;;;;;;;;;;;..........>////;;;;;;;;;.................................
> │ 
> ..................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........//
> ///////;;;;;;;;;;;;<<<<<........../////<<<<<<<<.................................
> │ 
> ................../////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<........./
> ////////;<<<<<<<<<<<<<<...........////<<<<<<<<..................................
> │ 
> ...................////////////////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<.........../
> ////////<<<<<<<<<<<<<<.............//<<<<<<<....................................
> │ 
> .................../////////////////;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<..............
> //////<<<<<<<<<<<<<<............................................................
> │ 
> ....................////////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<.................
> .///<<<<<<<<<<<<<<..............................................................
> │ 
> .....................//////////////<<<<<<<<<<<<<<<<<<<<<<<<<<...................
> ..//<<<<<<<<<<..................................................................
> │ 
> ...................../////////////<<<<<<<<<<<<<<<<<<<<<<<<<.....................
> ..<.............................................................................
> │ 
> ......................//////////<<<<<<<<<<<<<<<<<<<<<<<<........................
> ................................................................................
> │ 
> ....................../////////<<<<<<<<<<<<<<<<<<<<<<<..........................
> ................................................................................
> │ 
> .......................//////<<<<<<<<<<<<<<<<<<<<<<.............................
> ................................................................................
> │ 
> ........................////<<<<<<<<<<<<<<<.....................................
> ................................................................................
> │ 
> ........................//<<<<<<<<<<............................................
> ................................................................................
> │ 
> .........................<<<....................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .......................>;;;;;;;;................................................
> ................................................................................
> │ 
> .......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;\...........................
> ................................................................................
> │ 
> ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........................
> ................................................................................
> │ 
> ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........................
> ................................................................................
> │ 
> .....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................
> ................................................................................
> │ 
> ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.....................
> ................................................................................
> │ 
> ..................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> ................................................................................
> │ 
> ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> ..;;;;;;;;;;;;;;;\..............................................................
> │ 
> ..................>/////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> .>/;;;;;;;;;;;;;;;;.............................................................
> │ 
> ..................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> >///;;;;;;;;;;;;;;;;............................................................
> │ 
> .................>////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............>
> /////;;;;;;;;;;;;;;;;..............>/;;;;;;;\...................................
> │ 
> ................>//////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..........>/
> //////;;;;;;;;;;;;;;;;\...........>///;;;;;;;\..................................
> │ 
> ................>///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........>//
> ///////;;;;;;;;;;;;;;;;;.........>////;;;;;;;;;.................................
> │ 
> .................///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<.......///
> ////////;;;;;;<<<<<<<<<<.........//////<<<<<<<<.................................
> │ 
> ................./////////////////////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<.........//
> /////////<<<<<<<<<<<<<<...........////<<<<<<<<..................................
> │ 
> ..................////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<<<<............/
> ////////<<<<<<<<<<<<<..............//<<<<<<<....................................
> │ 
> ...................////////////////////<<<<<<<<<<<<<<<<<<<<<<<<<<...............
> ///////<<<<<<<<<<<<<............................................................
> │ 
> ...................//////////////////<<<<<<<<<<<<<<<<<<<<<<<<<..................
> .////<<<<<<<<<<<<<..............................................................
> │ 
> ....................////////////////<<<<<<<<<<<<<<<<<<<<<<<<....................
> ..//<<<<<<<<<<<.................................................................
> │ 
> .....................//////////////<<<<<<<<<<<<<<<<<<<<<<<......................
> ...<<...........................................................................
> │ 
> ......................////////////<<<<<<<<<<<<<<<<<<<<<<........................
> ................................................................................
> │ 
> ......................//////////<<<<<<<<<<<<<<<<<<<<<<..........................
> ................................................................................
> │ 
> .......................///////<<<<<<<<<<<<<<<<<<<<<<............................
> ................................................................................
> │ 
> ......................../////<<<<<<<<<<<<<<<<...................................
> ................................................................................
> │ 
> ........................////<<<<<<<<<<..........................................
> ................................................................................
> │ 
> ........................./<<<<<<................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .......................;;;;;;;..................................................
> ................................................................................
> │ 
> ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;.............................
> ................................................................................
> │ 
> ......................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;...........................
> ................................................................................
> │ 
> .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........................
> ................................................................................
> │ 
> .....................///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................
> ................................................................................
> │ 
> ....................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................
> ................................................................................
> │ 
> ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> ................................................................................
> │ 
> ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> ../;;;;;;;;;;;;;;...............................................................
> │ 
> ..................>/////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> .>/;;;;;;;;;;;;;;;;.............................................................
> │ 
> ..................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............
> >///;;;;;;;;;;;;;;;;............................................................
> │ 
> .................>//////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............>
> ///////;;;;;;;;;;;;;;..............>/;;;;;;;....................................
> │ 
> ................>////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........>/
> ////////;;;;;;;;;;;;;;;...........>///;;;;;;;;..................................
> │ 
> ................/////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<.......>//
> /////////;;;;;;;;;;;;;;<.........>////;;;;;;;;<.................................
> │ 
> ...............////////////////////////;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<........///
> /////////;<<<<<<<<<<<<<<.........//////;<<<<<<<.................................
> │ 
> ................////////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<<...........//
> //////////<<<<<<<<<<<<<.........../////<<<<<<<..................................
> │ 
> .................////////////////////////<<<<<<<<<<<<<<<<<<<<<<<<<............./
> /////////<<<<<<<<<<<<..............//<<<<<<<....................................
> │ 
> ..................//////////////////////<<<<<<<<<<<<<<<<<<<<<<<<................
> ////////<<<<<<<<<<<<............................................................
> │ 
> ...................///////////////////<<<<<<<<<<<<<<<<<<<<<<<<..................
> ./////<<<<<<<<<<<<..............................................................
> │ 
> ..................../////////////////<<<<<<<<<<<<<<<<<<<<<<<....................
> ..///<<<<<<<<<<.................................................................
> │ 
> .....................///////////////<<<<<<<<<<<<<<<<<<<<<<......................
> .../<<<.........................................................................
> │ 
> .....................//////////////<<<<<<<<<<<<<<<<<<<<<........................
> ................................................................................
> │ 
> ......................///////////<<<<<<<<<<<<<<<<<<<<<..........................
> ................................................................................
> │ 
> ......................./////////<<<<<<<<<<<<<<<<<<<<............................
> ................................................................................
> │ 
> ........................///////<<<<<<<<<<<<<<<..................................
> ................................................................................
> │ 
> .........................////<<<<<<<<<<<........................................
> ................................................................................
> │ 
> ..........................//<<<<<<<.............................................
> ................................................................................
> │ 
> ...........................<<...................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .......................;;;;.....................................................
> ................................................................................
> │ 
> ......................>/;;;;;;;;;;;;;;;;;;;;;;;;................................
> ................................................................................
> │ 
> ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;.............................
> ................................................................................
> │ 
> .....................>////;/;;;;;;;;;;;;;;;;;;;;;;;;;...........................
> ................................................................................
> │ 
> ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;.........................
> ................................................................................
> │ 
> ....................>////////;/;;;;;;;;;;;;;;;;;;;;;;;;;;.......................
> ................................................................................
> │ 
> ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................
> ................................................................................
> │ 
> ...................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ..;;;;;;;;;;;;;;\...............................................................
> │ 
> ..................>////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................
> .>/;;;;;;;;;;;;;;;..............................................................
> │ 
> .................>///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..............
> >///;/;;;;;;;;;;;;;;............................................................
> │ 
> ................./////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...........>
> //////;;;;;;;;;;;;;;;;.............>/;;;;;;;....................................
> │ 
> ................>//////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........>/
> ///////;/;;;;;;;;;;;;;;...........>///;;;;;;;;..................................
> │ 
> ...............>////////////////////////;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<.......>//
> /////////;;;;;;;;;<<<<<<.........>////;;;;;;<<<.................................
> │ 
> ...............>//////////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<.........///
> //////////;<<<<<<<<<<<<<.........///////<<<<<<<.................................
> │ 
> ...............///////////////////////////<<<<<<<<<<<<<<<<<<<<<<<<...........///
> //////////<<<<<<<<<<<<............/////<<<<<<...................................
> │ 
> ................//////////////////////////<<<<<<<<<<<<<<<<<<<<<<.............../
> /////////<<<<<<<<<<<<..............///<<<<<<....................................
> │ 
> .................///////////////////////<<<<<<<<<<<<<<<<<<<<<<<.................
> ///////<<<<<<<<<<<<..................<..........................................
> │ 
> ..................//////////////////////<<<<<<<<<<<<<<<<<<<<<...................
> .//////<<<<<<<<<<<..............................................................
> │ 
> ...................//////////////////<<<<<<<<<<<<<<<<<<<<<<.....................
> ...//<<<<<<<<<<.................................................................
> │ 
> ....................////////////////<<<<<<<<<<<<<<<<<<<<<<......................
> ..../<<<........................................................................
> │ 
> .....................///////////////<<<<<<<<<<<<<<<<<<<<........................
> ................................................................................
> │ 
> ....................../////////////<<<<<<<<<<<<<<<<<<<..........................
> ................................................................................
> │ 
> .......................//////////<<<<<<<<<<<<<<<<<<<<...........................
> ................................................................................
> │ 
> ........................////////<<<<<<<<<<<<<<<.................................
> ................................................................................
> │ 
> ..........................////<<<<<<<<<<<<......................................
> ................................................................................
> │ 
> ..........................////<<<<<<<...........................................
> ................................................................................
> │ 
> ............................<<<<................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .......................;;.......................................................
> ................................................................................
> │ 
> ......................>;;;;;;;;;;;;;;;;;;;;.....................................
> ................................................................................
> │ 
> ......................///;;;;;;;;;;;;;;;;;;;;;;;;;..............................
> ................................................................................
> │ 
> .....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;............................
> ................................................................................
> │ 
> ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;\.........................
> ................................................................................
> │ 
> ....................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................
> ................................................................................
> │ 
> ...................>////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
> ................................................................................
> │ 
> ..................>///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> .>/;;;;;;;;;;;;;................................................................
> │ 
> ..................///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> >//;;;;;;;;;;;;;;;..............................................................
> │ 
> .................>////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............
> >////;;;;;;;;;;;;;;;............................................................
> │ 
> .................///////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........>
> ///////;;;;;;;;;;;;;;;.............>/;;;;;;;....................................
> │ 
> ................>/////////////////////////;;;;;;;;;;;;;;;;;;<<<<<<<<<.........>/
> ////////;;;;;;;;;;;;;;;;..........>//;;;;;;;;;..................................
> │ 
> ...............>/////////////////////////////;;;<<<<<<<<<<<<<<<<<<<<.........>//
> //////////;;;<<<<<<<<<<<.........>/////;;;<<<<<.................................
> │ 
> ...............//////////////////////////////<<<<<<<<<<<<<<<<<<<<<<.........////
> ////////////<<<<<<<<<<<..........///////<<<<<<<.................................
> │ 
> ..............>////////////////////////////<<<<<<<<<<<<<<<<<<<<<<............///
> ///////////<<<<<<<<<<<............/////<<<<<<...................................
> │ 
> ...............////////////////////////////<<<<<<<<<<<<<<<<<<<<...............//
> //////////<<<<<<<<<<<..............///<<<<<<....................................
> │ 
> ................/////////////////////////<<<<<<<<<<<<<<<<<<<<<..................
> ////////<<<<<<<<<<<..................<..........................................
> │ 
> .................///////////////////////<<<<<<<<<<<<<<<<<<<<<...................
> .//////<<<<<<<<<<<..............................................................
> │ 
> ...................////////////////////<<<<<<<<<<<<<<<<<<<<.....................
> ...///<<<<<<<<<<................................................................
> │ 
> ....................//////////////////<<<<<<<<<<<<<<<<<<<<......................
> ..../<<<<.......................................................................
> │ 
> .....................////////////////<<<<<<<<<<<<<<<<<<<........................
> ................................................................................
> │ 
> ......................//////////////<<<<<<<<<<<<<<<<<<..........................
> ................................................................................
> │ 
> ........................///////////<<<<<<<<<<<<<<<<<<...........................
> ................................................................................
> │ 
> .........................////////<<<<<<<<<<<<<<<................................
> ................................................................................
> │ 
> ..........................//////<<<<<<<<<<<.....................................
> ................................................................................
> │ 
> ...........................////<<<<<<<<.........................................
> ................................................................................
> │ 
> ............................//<<<<..............................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ....................../;;;;;;;;;;;;;;;;.........................................
> ................................................................................
> │ 
> .....................>///;;;;;;;;;;;;;;;;;;;;;;;................................
> ................................................................................
> │ 
> .....................//////;;;;;;;;;;;;;;;;;;;;;;;;.............................
> ................................................................................
> │ 
> ..................../////////;;;;;;;;;;;;;;;;;;;;;;;;...........................
> ................................................................................
> │ 
> ...................>///////////;/;;;;;;;;;;;;;;;;;;;;;;;........................
> ................................................................................
> │ 
> ...................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;.....................
> ................................................................................
> │ 
> ..................>/////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> .>;;;;;;;;;;;;;.................................................................
> │ 
> ..................////////////////////;/;;;;;;;;;;;;;;;;;;;;;;;;................
> >//;/;;;;;;;;;;;;...............................................................
> │ 
> .................>//////////////////////;/;;;;;;;;;;;;;;;;;;;;;;;;;\............
> //////;;;;;;;;;;;;;;............................................................
> │ 
> ................>//////////////////////////;;;;;;;;;;;;;;;;;;;<<<<<<<..........>
> ///////;;;;;;;;;;;;;;;.............>/;;;;;;;....................................
> │ 
> ................/////////////////////////////;;;;<<<<<<<<<<<<<<<<<<<..........>/
> ///////////;;;;;;;;;;;<<..........>//;;;;;;;;;..................................
> │ 
> ...............>//////////////////////////////<<<<<<<<<<<<<<<<<<<<<..........>//
> ///////////;<<<<<<<<<<<<.........>/////;;<<<<<<.................................
> │ 
> ...............///////////////////////////////<<<<<<<<<<<<<<<<<<<............///
> ////////////<<<<<<<<<<<..........///////<<<<<<..................................
> │ 
> ..............>//////////////////////////////<<<<<<<<<<<<<<<<<<<............////
> ///////////<<<<<<<<<<<............/////<<<<<<...................................
> │ 
> ..............//////////////////////////////<<<<<<<<<<<<<<<<<<<...............//
> //////////<<<<<<<<<<<...............///<<<<<....................................
> │ 
> ...............///////////////////////////<<<<<<<<<<<<<<<<<<<...................
> /////////<<<<<<<<<<................../..........................................
> │ 
> ................//////////////////////////<<<<<<<<<<<<<<<<<<....................
> .///////<<<<<<<<<<..............................................................
> │ 
> ..................//////////////////////<<<<<<<<<<<<<<<<<<<.....................
> ...////<<<<<<<<<................................................................
> │ 
> ....................///////////////////<<<<<<<<<<<<<<<<<<.......................
> ...../<<<.......................................................................
> │ 
> ...................../////////////////<<<<<<<<<<<<<<<<<<........................
> ................................................................................
> │ 
> ......................///////////////<<<<<<<<<<<<<<<<<<.........................
> ................................................................................
> │ 
> ........................////////////<<<<<<<<<<<<<<<<<...........................
> ................................................................................
> │ 
> .........................//////////<<<<<<<<<<<<<<...............................
> ................................................................................
> │ 
> ...........................///////<<<<<<<<<<<...................................
> ................................................................................
> │ 
> ............................/////<<<<<<<........................................
> ................................................................................
> │ 
> ..............................//<<<<............................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .....................>;;;;;;;;;;;;..............................................
> ................................................................................
> │ 
> .....................///;;;;;;;;;;;;;;;;;;;;;;..................................
> ................................................................................
> │ 
> ....................>//////;;;;;;;;;;;;;;;;;;;;;;...............................
> ................................................................................
> │ 
> ..................../////////;/;;;;;;;;;;;;;;;;;;;;;\...........................
> ................................................................................
> │ 
> ...................>/////////////;;;;;;;;;;;;;;;;;;;;;;\........................
> ................................................................................
> │ 
> ...................////////////////;/;;;;;;;;;;;;;;;;;;;;;;.....................
> ................................................................................
> │ 
> ..................>///////////////////;/;;;;;;;;;;;;;;;;;;;;;;..................
> .;;;;;;;;;;;;;..................................................................
> │ 
> .................>///////////////////////;;;;;;;;;;;;;;;;;;;;;;;;\..............
> >///;;;;;;;;;;;;;...............................................................
> │ 
> .................//////////////////////////;;;;;;;;;;;;;;;;;;;;;;<<<............
> /////;;;;;;;;;;;;;;;............................................................
> │ 
> ................>/////////////////////////////;;;;<<<<<<<<<<<<<<<<<<...........>
> ////////;/;;;;;;;;;;;;;............>/;;;;;;;....................................
> │ 
> ................////////////////////////////////<<<<<<<<<<<<<<<<<<<...........>/
> //////////;;;;;;;<<<<<<<..........>//;;;;;;;;;..................................
> │ 
> ...............>///////////////////////////////<<<<<<<<<<<<<<<<<<<...........>//
> /////////////<<<<<<<<<<..........>///////<<<<<<.................................
> │ 
> ...............///////////////////////////////<<<<<<<<<<<<<<<<<<.............///
> ////////////<<<<<<<<<<...........////////<<<<<..................................
> │ 
> ..............>///////////////////////////////<<<<<<<<<<<<<<<<<.............>///
> ///////////<<<<<<<<<<............///////<<<<<...................................
> │ 
> ..............//////////////////////////////<<<<<<<<<<<<<<<<<<...............///
> ///////////<<<<<<<<<................///<<<<<....................................
> │ 
> ..............//////////////////////////////<<<<<<<<<<<<<<<<<................../
> //////////<<<<<<<<<.................../.........................................
> │ 
> ...............////////////////////////////<<<<<<<<<<<<<<<<<....................
> ..///////<<<<<<<<<..............................................................
> │ 
> ................./////////////////////////<<<<<<<<<<<<<<<<......................
> ....////<<<<<<<<................................................................
> │ 
> ...................//////////////////////<<<<<<<<<<<<<<<<.......................
> ....../<<<......................................................................
> │ 
> .....................//////////////////<<<<<<<<<<<<<<<<<........................
> ................................................................................
> │ 
> ....................../////////////////<<<<<<<<<<<<<<<<.........................
> ................................................................................
> │ 
> ........................//////////////<<<<<<<<<<<<<<<...........................
> ................................................................................
> │ 
> ..........................///////////<<<<<<<<<<<<...............................
> ................................................................................
> │ 
> ............................////////<<<<<<<<<<..................................
> ................................................................................
> │ 
> .............................//////<<<<<<<......................................
> ................................................................................
> │ 
> ...............................///<<<<..........................................
> ................................................................................
> │ 
> .................................<..............................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ...................../;;;;;;;;..................................................
> ................................................................................
> │ 
> ....................>//;;;;;;;;;;;;;;;;;;;;;....................................
> ................................................................................
> │ 
> ....................//////;;;;;;;;;;;;;;;;;;;;;.................................
> ................................................................................
> │ 
> ...................>//////////;/;;;;;;;;;;;;;;;;;;;.............................
> ................................................................................
> │ 
> ...................//////////////;/;;;;;;;;;;;;;;;;;;;;.........................
> ................................................................................
> │ 
> ..................>////////////////////;;;;;;;;;;;;;;;;;;;;.....................
> ................................................................................
> │ 
> ..................//////////////////////;;;;;;;;;;;;;;;;;;;;;;;.................
> .;;;;;;;;;;;;\..................................................................
> │ 
> .................>/////////////////////////;;;;;;;;;;;;;;;;;;;;;;;..............
> >/;;/;;;;;;;;;;;;...............................................................
> │ 
> .................////////////////////////////////;;;<<<<<<<<<<<<<<<<............
> /////;;/;;;;;;;;;;;;............................................................
> │ 
> ................>/////////////////////////////////<<<<<<<<<<<<<<<<<............>
> ////////;;;;;;;;;;;;;;;............;;;;;;;;;....................................
> │ 
> ................/////////////////////////////////<<<<<<<<<<<<<<<<.............>/
> ////////////;;<<<<<<<<<<..........>////;;;;;;;;.................................
> │ 
> ...............>////////////////////////////////<<<<<<<<<<<<<<<<..............//
> //////////////<<<<<<<<<...........//////;<<<<<<.................................
> │ 
> ...............////////////////////////////////<<<<<<<<<<<<<<<<..............>//
> /////////////<<<<<<<<<...........>///////<<<<<..................................
> │ 
> ..............>///////////////////////////////<<<<<<<<<<<<<<<<..............>///
> ////////////<<<<<<<<<............///////<<<<<...................................
> │ 
> ..............///////////////////////////////<<<<<<<<<<<<<<<<................///
> ///////////<<<<<<<<<................///<<<<<....................................
> │ 
> .............>///////////////////////////////<<<<<<<<<<<<<<<.................../
> //////////<<<<<<<<<.............................................................
> │ 
> ..............//////////////////////////////<<<<<<<<<<<<<<<.....................
> ..///////<<<<<<<<<..............................................................
> │ 
> ................///////////////////////////<<<<<<<<<<<<<<<......................
> ..../////<<<<<<<................................................................
> │ 
> ..................////////////////////////<<<<<<<<<<<<<<<.......................
> ......./<<......................................................................
> │ 
> ..................../////////////////////<<<<<<<<<<<<<<<........................
> ................................................................................
> │ 
> ......................//////////////////<<<<<<<<<<<<<<<.........................
> ................................................................................
> │ 
> ........................///////////////<<<<<<<<<<<<<<...........................
> ................................................................................
> │ 
> ...........................///////////<<<<<<<<<<<<..............................
> ................................................................................
> │ 
> ............................//////////<<<<<<<<<.................................
> ................................................................................
> │ 
> ..............................///////<<<<<<.....................................
> ................................................................................
> │ 
> ................................////<<<<........................................
> ................................................................................
> │ 
> ...................................<............................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .....................;;;;;......................................................
> ................................................................................
> │ 
> ....................>/;/;;;;;;;;;;;;;;..........................................
> ................................................................................
> │ 
> ....................//////;/;;;;;;;;;;;;;;;;;...................................
> ................................................................................
> │ 
> ...................>//////////;;/;;;;;;;;;;;;;;;;;..............................
> ................................................................................
> │ 
> ...................////////////////;;;;;;;;;;;;;;;;;;;;.........................
> ................................................................................
> │ 
> ..................>///////////////////////;;;;;;;;;;;;;;;;;.....................
> ................................................................................
> │ 
> ................../////////////////////////;;;;;;;;;;;;;;;;;;;;;................
> .;;;;;;;;;;;....................................................................
> │ 
> .................>///////////////////////////////;;;;;<<<<<<<<<<<<<.............
> >//;/;;;;;;;;;;;................................................................
> │ 
> .................//////////////////////////////////<<<<<<<<<<<<<<<.............>
> //////;//;;;;;;;;;;;............................................................
> │ 
> ................>/////////////////////////////////<<<<<<<<<<<<<<<..............>
> /////////;/;;;;;;;;;<<<<...........;;;;;;;;.....................................
> │ 
> ................//////////////////////////////////<<<<<<<<<<<<<<..............>/
> //////////////<<<<<<<<<...........>///;;;;;;;<<.................................
> │ 
> ...............>/////////////////////////////////<<<<<<<<<<<<<<<..............//
> //////////////<<<<<<<<<...........///////;<<<<<.................................
> │ 
> .............../////////////////////////////////<<<<<<<<<<<<<<<..............>//
> /////////////<<<<<<<<<...........>///////<<<<<..................................
> │ 
> ..............>////////////////////////////////<<<<<<<<<<<<<<<..............>///
> ////////////<<<<<<<<<............///////<<<<<...................................
> │ 
> ..............>///////////////////////////////<<<<<<<<<<<<<<<...............////
> ////////////<<<<<<<<................////<<<<<...................................
> │ 
> ..............////////////////////////////////<<<<<<<<<<<<<<.................../
> ///////////<<<<<<<<.............................................................
> │ 
> .............>///////////////////////////////<<<<<<<<<<<<<<.....................
> ..////////<<<<<<<<..............................................................
> │ 
> .............../////////////////////////////<<<<<<<<<<<<<<......................
> .....////<<<<<<<................................................................
> │ 
> .................//////////////////////////<<<<<<<<<<<<<<.......................
> .......//<<.....................................................................
> │ 
> ....................///////////////////////<<<<<<<<<<<<<........................
> ................................................................................
> │ 
> ......................////////////////////<<<<<<<<<<<<<.........................
> ................................................................................
> │ 
> ......................../////////////////<<<<<<<<<<<<...........................
> ................................................................................
> │ 
> .........................../////////////<<<<<<<<<<..............................
> ................................................................................
> │ 
> .............................//////////<<<<<<<<.................................
> ................................................................................
> │ 
> ................................///////<<<<<....................................
> ................................................................................
> │ 
> ..................................////<<<.......................................
> ................................................................................
> │ 
> .....................................<..........................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ....................;;..........................................................
> ................................................................................
> │ 
> ....................//;/;;;;;;;;;...............................................
> ................................................................................
> │ 
> ...................>//////;;;/;;;;;;;;;;;;;.....................................
> ................................................................................
> │ 
> ...................////////////;;;;;;;;;;;;;;;;;................................
> ................................................................................
> │ 
> ..................>/////////////////////;;;;;;;;;;;;;;..........................
> ................................................................................
> │ 
> ..................>///////////////////////;;;/;;;;;;;;;;;;;;....................
> ................................................................................
> │ 
> ................../////////////////////////////;;/;;;;;;;;;;;;;;;...............
> ;;;;;;;;;;;.....................................................................
> │ 
> .................>//////////////////////////////////<<<<<<<<<<<<<<..............
> >/;/;;;;;;;;;;;;................................................................
> │ 
> .................//////////////////////////////////<<<<<<<<<<<<<<..............>
> ///////;;/;;;;;;;;;;;...........................................................
> │ 
> ................>//////////////////////////////////<<<<<<<<<<<<<...............>
> //////////;;/;;;<<<<<<<............/;;;;;;;\....................................
> │ 
> ................//////////////////////////////////<<<<<<<<<<<<<...............>/
> ///////////////<<<<<<<<...........>//;;/;;;;<<<.................................
> │ 
> ...............>//////////////////////////////////<<<<<<<<<<<<................//
> //////////////<<<<<<<<............>///////<<<<..................................
> │ 
> ...............>/////////////////////////////////<<<<<<<<<<<<<...............>//
> /////////////<<<<<<<<............>///////<<<<<..................................
> │ 
> .............../////////////////////////////////<<<<<<<<<<<<<................>//
> /////////////<<<<<<<<............////////<<<<...................................
> │ 
> ..............>////////////////////////////////<<<<<<<<<<<<<.................///
> ////////////<<<<<<<<................////<<<<<...................................
> │ 
> ............../////////////////////////////////<<<<<<<<<<<<...................//
> ///////////<<<<<<<<.............................................................
> │ 
> .............>////////////////////////////////<<<<<<<<<<<<<.....................
> ../////////<<<<<<<<.............................................................
> │ 
> .............////////////////////////////////<<<<<<<<<<<<<......................
> ...../////<<<<<<................................................................
> │ 
> ................/////////////////////////////<<<<<<<<<<<<.......................
> ........./<.....................................................................
> │ 
> .................../////////////////////////<<<<<<<<<<<<........................
> ................................................................................
> │ 
> ....................../////////////////////<<<<<<<<<<<<.........................
> ................................................................................
> │ 
> ........................///////////////////<<<<<<<<<<...........................
> ................................................................................
> │ 
> ............................//////////////<<<<<<<<<.............................
> ................................................................................
> │ 
> ...............................//////////<<<<<<<................................
> ................................................................................
> │ 
> ..................................///////<<<<<..................................
> ................................................................................
> │ 
> ....................................////<<<.....................................
> ................................................................................
> │ 
> ......................................./........................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ...................;/;;;;;;;;...................................................
> ................................................................................
> │ 
> ...................//////;///;;;;;;;;;;.........................................
> ................................................................................
> │ 
> ..................>/////////////;;;;;;;;;;;;;;;.................................
> ................................................................................
> │ 
> ..................>////////////////////;//;;;;;;;;;;;;..........................
> ................................................................................
> │ 
> ................../////////////////////////////;/;;;;;;;;;;;;...................
> ................................................................................
> │ 
> .................>///////////////////////////////////<<<<<<<<<<<<...............
> ................................................................................
> │ 
> .................>//////////////////////////////////<<<<<<<<<<<<................
> /;;/;;;;;;;;;;;.................................................................
> │ 
> .................///////////////////////////////////<<<<<<<<<<<<...............>
> ///////;;;;;;;;;;;;;;...........................................................
> │ 
> ................>//////////////////////////////////<<<<<<<<<<<<................>
> /////////////;;<<<<<<<<............;;;;;;;;.....................................
> │ 
> ................>//////////////////////////////////<<<<<<<<<<<................>/
> ///////////////<<<<<<<............>//;;/;;<<<<<.................................
> │ 
> ................//////////////////////////////////<<<<<<<<<<<<................>/
> ///////////////<<<<<<<............>///////<<<<..................................
> │ 
> ...............>//////////////////////////////////<<<<<<<<<<<.................//
> //////////////<<<<<<<............>///////<<<<<..................................
> │ 
> ...............//////////////////////////////////<<<<<<<<<<<.................>//
> /////////////<<<<<<<.............>///////<<<<...................................
> │ 
> ...............//////////////////////////////////<<<<<<<<<<<.................///
> /////////////<<<<<<<................////<<<<<...................................
> │ 
> ..............>/////////////////////////////////<<<<<<<<<<<..................///
> ////////////<<<<<<<.............................................................
> │ 
> ............../////////////////////////////////<<<<<<<<<<<......................
> ..//////////<<<<<<<.............................................................
> │ 
> .............//////////////////////////////////<<<<<<<<<<<......................
> ....../////<<<<<................................................................
> │ 
> ..............////////////////////////////////<<<<<<<<<<<.......................
> ........../<....................................................................
> │ 
> ................./////////////////////////////<<<<<<<<<<........................
> ................................................................................
> │ 
> .....................////////////////////////<<<<<<<<<<<........................
> ................................................................................
> │ 
> ........................////////////////////<<<<<<<<<<..........................
> ................................................................................
> │ 
> ............................////////////////<<<<<<<.............................
> ................................................................................
> │ 
> ................................///////////<<<<<<...............................
> ................................................................................
> │ 
> ...................................////////<<<<.................................
> ................................................................................
> │ 
> .......................................///<<....................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ...................;;;;;........................................................
> ................................................................................
> │ 
> ..................>//////;;;;;;;;;;.............................................
> ................................................................................
> │ 
> ..................>//////////////;;;;/;;;;;;....................................
> ................................................................................
> │ 
> ..................//////////////////////////;;;;;;;;;;..........................
> ................................................................................
> │ 
> ..................//////////////////////////////////;/<<<<<<<<<.................
> ................................................................................
> │ 
> .................>///////////////////////////////////<<<<<<<<<<.................
> ................................................................................
> │ 
> .................////////////////////////////////////<<<<<<<<<<.................
> ;/;;;;;;;;;;;;;.................................................................
> │ 
> .................///////////////////////////////////<<<<<<<<<<.................>
> ///////;;;;;;;;;;;;;;<..........................................................
> │ 
> ................>///////////////////////////////////<<<<<<<<<<................./
> //////////////;<<<<<<<.............;;;;;;;;.....................................
> │ 
> ................>///////////////////////////////////<<<<<<<<<................../
> ///////////////<<<<<<<............>//;;//;<<<<..................................
> │ 
> ................///////////////////////////////////<<<<<<<<<<.................>/
> ///////////////<<<<<<.............>///////<<<<..................................
> │ 
> ...............>//////////////////////////////////<<<<<<<<<<..................//
> //////////////<<<<<<<.............////////<<<<..................................
> │ 
> ...............>//////////////////////////////////<<<<<<<<<<..................//
> ///////////////<<<<<.............>///////<<<<...................................
> │ 
> ...............///////////////////////////////////<<<<<<<<<..................>//
> /////////////<<<<<<<................/////<<<<...................................
> │ 
> ...............//////////////////////////////////<<<<<<<<<<..................///
> /////////////<<<<<<.............................................................
> │ 
> ..............>//////////////////////////////////<<<<<<<<<......................
> .///////////<<<<<<<.............................................................
> │ 
> ..............>/////////////////////////////////<<<<<<<<<<......................
> ......./////<<<<................................................................
> │ 
> ..............//////////////////////////////////<<<<<<<<<.......................
> ................................................................................
> │ 
> ...............////////////////////////////////<<<<<<<<<<.......................
> ................................................................................
> │ 
> ....................///////////////////////////<<<<<<<<<........................
> ................................................................................
> │ 
> ........................//////////////////////<<<<<<<<..........................
> ................................................................................
> │ 
> ............................./////////////////<<<<<<............................
> ................................................................................
> │ 
> .................................////////////<<<<<..............................
> ................................................................................
> │ 
> ......................................///////<<<................................
> ................................................................................
> │ 
> ..........................................//<<..................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ..................;;;...........................................................
> ................................................................................
> │ 
> ..................//;;;;;;/;;;;;;;;.............................................
> ................................................................................
> │ 
> ..................////////////////;;//;;;;;;;;;;;...............................
> ................................................................................
> │ 
> .................>///////////////////////////////;;;/;<<<<<.....................
> ................................................................................
> │ 
> .................>////////////////////////////////////<<<<<<<<..................
> ................................................................................
> │ 
> ................./////////////////////////////////////<<<<<<<<..................
> ................................................................................
> │ 
> .................////////////////////////////////////<<<<<<<<<.................>
> /;;;;;;;;;;;;;..................................................................
> │ 
> .................////////////////////////////////////<<<<<<<<..................>
> ///////;;;;;;;;/<<<<<<..........................................................
> │ 
> ................>///////////////////////////////////<<<<<<<<<................../
> ////////////////<<<<<<.............;;;;;;;;.....................................
> │ 
> ................>///////////////////////////////////<<<<<<<<.................../
> ///////////////<<<<<<.............>//;;;//<<<<..................................
> │ 
> ................////////////////////////////////////<<<<<<<<..................>/
> ///////////////<<<<<<.............>///////<<<<..................................
> │ 
> ................///////////////////////////////////<<<<<<<<<..................>/
> //////////////<<<<<<..............////////<<<...................................
> │ 
> ................///////////////////////////////////<<<<<<<<...................//
> //////////////<<<<<<..............///////<<<<...................................
> │ 
> ...............>///////////////////////////////////<<<<<<<<...................//
> //////////////<<<<<<................/////<<<<...................................
> │ 
> ...............>//////////////////////////////////<<<<<<<<...................>//
> /////////////<<<<<<.............................................................
> │ 
> ...............///////////////////////////////////<<<<<<<<......................
> .////////////<<<<<<.............................................................
> │ 
> ...............///////////////////////////////////<<<<<<<<......................
> ......../////<<<................................................................
> │ 
> ..............>//////////////////////////////////<<<<<<<<.......................
> ................................................................................
> │ 
> ..............>//////////////////////////////////<<<<<<<<.......................
> ................................................................................
> │ 
> ..................//////////////////////////////<<<<<<<<........................
> ................................................................................
> │ 
> ......................./////////////////////////<<<<<<..........................
> ................................................................................
> │ 
> .............................///////////////////<<<<............................
> ................................................................................
> │ 
> ...................................////////////<<<<.............................
> ................................................................................
> │ 
> .........................................//////<<...............................
> ................................................................................
> │ 
> ............................................../.................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .................>;;;;;;;;;;;;/;;;;;;;;.........................................
> ................................................................................
> │ 
> .................>////////////////////;;/;;/;;/;;;;;;;;<<.......................
> ................................................................................
> │ 
> .................>////////////////////////////////////<<<<<<....................
> ................................................................................
> │ 
> ................./////////////////////////////////////<<<<<<<...................
> ................................................................................
> │ 
> ................./////////////////////////////////////<<<<<<<...................
> ................................................................................
> │ 
> ................./////////////////////////////////////<<<<<<...................;
> ;;;;;/;;;;;;;...................................................................
> │ 
> .................////////////////////////////////////<<<<<<<...................>
> ////////;;;///;;<<<<<...........................................................
> │ 
> ................>////////////////////////////////////<<<<<<<.................../
> ////////////////<<<<<..............;;;;;;;;.....................................
> │ 
> ................>////////////////////////////////////<<<<<<..................../
> ///////////////<<<<<<.............>//;;;;;<<<<..................................
> │ 
> ................>////////////////////////////////////<<<<<<..................../
> ///////////////<<<<<..............>///////<<<<..................................
> │ 
> ................>///////////////////////////////////<<<<<<<...................>/
> ///////////////<<<<<..............>///////<<<...................................
> │ 
> ................////////////////////////////////////<<<<<<<...................>/
> ///////////////<<<<<..............////////<<<...................................
> │ 
> ................////////////////////////////////////<<<<<<....................>/
> ///////////////<<<<<...............///////<<=...................................
> │ 
> ................////////////////////////////////////<<<<<<....................//
> //////////////<<<<<.............................................................
> │ 
> ...............>///////////////////////////////////<<<<<<<...................../
> //////////////<<<<<.............................................................
> │ 
> ...............>///////////////////////////////////<<<<<<.......................
> ........./////<<................................................................
> │ 
> ...............>///////////////////////////////////<<<<<<.......................
> ................................................................................
> │ 
> ...............>///////////////////////////////////<<<<<<.......................
> ................................................................................
> │ 
> ...............///////////////////////////////////<<<<<<........................
> ................................................................................
> │ 
> ......................////////////////////////////<<<<<.........................
> ................................................................................
> │ 
> ..............................////////////////////<<<...........................
> ................................................................................
> │ 
> ...................................../////////////<<............................
> ................................................................................
> │ 
> .............................................////<<.............................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<........................
> ................................................................................
> │ 
> .................//////////////////////////////////////<<<......................
> ................................................................................
> │ 
> .................//////////////////////////////////////<<<<.....................
> ................................................................................
> │ 
> ................./////////////////////////////////////<<<<<.....................
> ................................................................................
> │ 
> ................./////////////////////////////////////<<<<<.....................
> ................................................................................
> │ 
> ................./////////////////////////////////////<<<<<....................;
> ;/;;;;;;;;;;....................................................................
> │ 
> ................./////////////////////////////////////<<<<<..................../
> ////////////;;;;<<<<............................................................
> │ 
> ................./////////////////////////////////////<<<<<..................../
> ////////////////<<<<...............;;;;;;;;.....................................
> │ 
> ................>/////////////////////////////////////<<<<<..................../
> ////////////////<<<<..............>//;;;;;<<<<..................................
> │ 
> ................>/////////////////////////////////////<<<<...................../
> ////////////////<<<<..............>///////<<<...................................
> │ 
> ................>////////////////////////////////////<<<<<...................../
> ///////////////<<<<<..............>///////<<<...................................
> │ 
> ................>////////////////////////////////////<<<<<...................../
> ///////////////<<<<<..............>///////<<<...................................
> │ 
> ................>////////////////////////////////////<<<<<...................../
> ///////////////<<<<<..............////////<<....................................
> │ 
> ................>////////////////////////////////////<<<<<....................>/
> ///////////////<<<<.............................................................
> │ 
> ................>////////////////////////////////////<<<<<....................//
> ///////////////<<<<.............................................................
> │ 
> ................>////////////////////////////////////<<<<.......................
> ............///<................................................................
> │ 
> ................>////////////////////////////////////<<<<.......................
> ................................................................................
> │ 
> ................////////////////////////////////////<<<<<.......................
> ................................................................................
> │ 
> ................////////////////////////////////////<<<<........................
> ................................................................................
> │ 
> .................///////////////////////////////////<<<.........................
> ................................................................................
> │ 
> .............................///////////////////////<<..........................
> ................................................................................
> │ 
> .........................................///////////<...........................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<........................
> ................................................................................
> │ 
> ................;//////////////////////////////////////<<.......................
> ................................................................................
> │ 
> ................>//////////////////////////////////////<<<......................
> ................................................................................
> │ 
> ................>//////////////////////////////////////<<<......................
> ................................................................................
> │ 
> ................>//////////////////////////////////////<<<......................
> ................................................................................
> │ 
> ................>//////////////////////////////////////<<<.....................;
> ;;;;;;;;;;;;;;;;<<<.............................................................
> │ 
> .................//////////////////////////////////////<<<...................../
> ////////////////<<<<............................................................
> │ 
> .................//////////////////////////////////////<<<...................../
> ////////////////<<<<...............;;;;;;;;;<...................................
> │ 
> .................//////////////////////////////////////<<<...................../
> ////////////////<<<<..............;;;;;;;;;<<...................................
> │ 
> .................//////////////////////////////////////<<<...................../
> ////////////////<<<<..............>////////<<...................................
> │ 
> ................./////////////////////////////////////<<<<...................../
> ////////////////<<<<..............>////////<<...................................
> │ 
> ................./////////////////////////////////////<<<<...................../
> ////////////////<<<<..............>////////<<...................................
> │ 
> ................./////////////////////////////////////<<<<...................../
> ////////////////<<<<..............////////<<....................................
> │ 
> ................./////////////////////////////////////<<<<...................../
> ////////////////<<<<............................................................
> │ 
> ................./////////////////////////////////////<<<<.....................>
> ////////////////<<..............................................................
> │ 
> ................./////////////////////////////////////<<<.......................
> ................................................................................
> │ 
> ................./////////////////////////////////////<<<.......................
> ................................................................................
> │ 
> ................./////////////////////////////////////<<<.......................
> ................................................................................
> │ 
> ................./////////////////////////////////////<<<.......................
> ................................................................................
> │ 
> .................>////////////////////////////////////<<........................
> ................................................................................
> │ 
> ..........................////////////////////////////<<........................
> ................................................................................
> │ 
> ................................................//////<.........................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ..............................................;;;;;;;;;<........................
> ................................................................................
> │ 
> .........................;;;;;;;;;;;;;;;;;;;;;/////////<........................
> ................................................................................
> │ 
> ................;;;;;;;;;//////////////////////////////<........................
> ................................................................................
> │ 
> ................///////////////////////////////////////<........................
> ................................................................................
> │ 
> ................>//////////////////////////////////////<<.......................
> ................................................................................
> │ 
> ................>//////////////////////////////////////<<.......................
> ................................................................................
> │ 
> ................>//////////////////////////////////////<<.......................
> ..;;;;;;;;;;;;;;<<<.............................................................
> │ 
> ................>//////////////////////////////////////<<......................;
> ;;//////////////<<<.............................................................
> │ 
> .................//////////////////////////////////////<<....................../
> ////////////////<<<....................;;;;<<...................................
> │ 
> .................//////////////////////////////////////<<....................../
> ////////////////<<<...............;;;;;////<<...................................
> │ 
> .................//////////////////////////////////////<<......................>
> ////////////////<<<...............>////////<<...................................
> │ 
> .................>//////////////////////////////////////<......................>
> ////////////////<<<................////////<<...................................
> │ 
> .................>//////////////////////////////////////<......................>
> /////////////////<<<...............////////<<...................................
> │ 
> .................>//////////////////////////////////////<......................>
> /////////////////<<<.............../////////....................................
> │ 
> .................>//////////////////////////////////////<.......................
> /////////////////<<<............................................................
> │ 
> ..................//////////////////////////////////////<.......................
> /////////////////<<.............................................................
> │ 
> ..................//////////////////////////////////////<<......................
> ................................................................................
> │ 
> ..................//////////////////////////////////////<<......................
> ................................................................................
> │ 
> ..................//////////////////////////////////////<<......................
> ................................................................................
> │ 
> ..................>/////////////////////////////////////<<......................
> ................................................................................
> │ 
> ..................>/////////////////////////////////////<.......................
> ................................................................................
> │ 
> ..................//////////////////////////////////////<.......................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ......................................................<.........................
> ................................................................................
> │ 
> .........................................;;;;;;;;;;;;;<.........................
> ................................................................................
> │ 
> ...........................;;;;;;;;;;;;;;//////////////<........................
> ................................................................................
> │ 
> ...............;;;;;;;;;;;;;///////////////////////////<........................
> ................................................................................
> │ 
> ...............>///////////////////////////////////////<........................
> ................................................................................
> │ 
> ................///////////////////////////////////////<........................
> ................................................................................
> │ 
> ................///////////////////////////////////////<<.......................
> ................................................................................
> │ 
> ................>///////////////////////////////////////<.......................
> ....;;;;;;;;;;;;<<..............................................................
> │ 
> ................>///////////////////////////////////////<......................;
> ;;;;////////////<<..............................................................
> │ 
> .................///////////////////////////////////////<....................../
> ////////////////<<<....................;;;<<....................................
> │ 
> .................///////////////////////////////////////<....................../
> /////////////////<<...............;;;;;////<<...................................
> │ 
> .................>//////////////////////////////////////<<.....................>
> /////////////////<<...............>////////<<...................................
> │ 
> .................>///////////////////////////////////////<.....................>
> /////////////////<<................////////<<...................................
> │ 
> ..................///////////////////////////////////////<......................
> /////////////////<<................////////<<...................................
> │ 
> ..................///////////////////////////////////////<......................
> /////////////////<<<...............>////////....................................
> │ 
> ..................>//////////////////////////////////////<......................
> >/////////////////<<............................................................
> │ 
> ..................>///////////////////////////////////////<.....................
> >/////////////////<.............................................................
> │ 
> ...................///////////////////////////////////////<.....................
> ................................................................................
> │ 
> ...................///////////////////////////////////////<.....................
> ................................................................................
> │ 
> ...................>//////////////////////////////////////<.....................
> ................................................................................
> │ 
> ...................>//////////////////////////////////////<.....................
> ................................................................................
> │ 
> ...................>///////////////////////////////////////<....................
> ................................................................................
> │ 
> ....................////////////////////////////................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .................................................;;;;;<.........................
> ................................................................................
> │ 
> .......................................;;;;;;;;;;/////<.........................
> ................................................................................
> │ 
> .............................;;;;;;;;;;///////////////<<........................
> ................................................................................
> │ 
> ...................;;;;;;;;;;//////////////////////////<........................
> ................................................................................
> │ 
> ...............;;;;////////////////////////////////////<........................
> ................................................................................
> │ 
> ...............>///////////////////////////////////////<<.......................
> ................................................................................
> │ 
> ...............>////////////////////////////////////////<.......................
> ................<...............................................................
> │ 
> ................////////////////////////////////////////<.......................
> .....;;;;;;;;;;;<...............................................................
> │ 
> ................>///////////////////////////////////////<<....................;;
> ;;;;;///////////<<..............................................................
> │ 
> .................////////////////////////////////////////<...................../
> ////////////////<<.....................;;;<<....................................
> │ 
> .................>///////////////////////////////////////<...................../
> /////////////////<................;;;;;////<....................................
> │ 
> .................>///////////////////////////////////////<<....................>
> /////////////////<<...............>////////<<...................................
> │ 
> ..................////////////////////////////////////////<.....................
> /////////////////<<................////////<<...................................
> │ 
> ..................>///////////////////////////////////////<.....................
> //////////////////<................>////////<...................................
> │ 
> ..................>///////////////////////////////////////<<....................
> >/////////////////<<................//////......................................
> │ 
> ...................////////////////////////////////////////<....................
> .//////////////////<............................................................
> │ 
> ...................>///////////////////////////////////////<....................
> .>///////////////...............................................................
> │ 
> ...................>///////////////////////////////////////<<...................
> .///............................................................................
> │ 
> ....................////////////////////////////////////////<...................
> ................................................................................
> │ 
> ....................>///////////////////////////////////////<...................
> ................................................................................
> │ 
> ....................>///////////////////////////////////////<<..................
> ................................................................................
> │ 
> ...................../////////////////////////////////////......................
> ................................................................................
> │ 
> .....................>/////////////////////.....................................
> ................................................................................
> │ 
> ......................///////...................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .....................................................<..........................
> ................................................................................
> │ 
> ..............................................;;;;;;;<<.........................
> ................................................................................
> │ 
> .....................................;;;;;;;;;////////<.........................
> ................................................................................
> │ 
> .............................;;;;;;;;;////////////////<<........................
> ................................................................................
> │ 
> ......................;;;;;;;//////////////////////////<........................
> ................................................................................
> │ 
> ...............;;;;;;;/////////////////////////////////<........................
> ................................................................................
> │ 
> .............../////////////////////////////////////////<.......................
> ................................................................................
> │ 
> ...............>////////////////////////////////////////<.......................
> .............;;;<...............................................................
> │ 
> ................/////////////////////////////////////////<......................
> .....;;;;;;;;///<...............................................................
> │ 
> ................>////////////////////////////////////////<....................;;
> ;;;;;///////////<<..............................................................
> │ 
> ................./////////////////////////////////////////<...................>/
> /////////////////<.....................;;;<<....................................
> │ 
> .................>////////////////////////////////////////<..................../
> /////////////////<<...............;;;;;////<....................................
> │ 
> ................../////////////////////////////////////////<...................>
> //////////////////<...............>////////<<...................................
> │ 
> ..................>////////////////////////////////////////<....................
> //////////////////<................/////////<...................................
> │ 
> ..................>////////////////////////////////////////<<...................
> >//////////////////<...............>////////<...................................
> │ 
> ...................>////////////////////////////////////////<...................
> .//////////////////<................/////=......................................
> │ 
> ...................>////////////////////////////////////////<<..................
> .>/////////////////<<...........................................................
> │ 
> ....................>////////////////////////////////////////<..................
> ../////////////.................................................................
> │ 
> ....................>////////////////////////////////////////<<.................
> ..>///..........................................................................
> │ 
> ...................../////////////////////////////////////////<.................
> ................................................................................
> │ 
> .....................>////////////////////////////////////////<.................
> ................................................................................
> │ 
> ......................///////////////////////////////////////...................
> ................................................................................
> │ 
> ......................>/////////////////////////////............................
> ................................................................................
> │ 
> .......................////////////////////.....................................
> ................................................................................
> │ 
> .......................>//////////..............................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ..................................................;;;<..........................
> ................................................................................
> │ 
> ............................................;;;;;;///<..........................
> ................................................................................
> │ 
> .....................................;;;;;;;/////////<<.........................
> ................................................................................
> │ 
> ..............................;;;;;;;/////////////////<<........................
> ................................................................................
> │ 
> .......................;;;;;;;/////////////////////////<........................
> ................................................................................
> │ 
> .................;;;;;;;///////////////////////////////<<.......................
> ................................................................................
> │ 
> ..............;;;///////////////////////////////////////<.......................
> ................................................................................
> │ 
> ...............//////////////////////////////////////////<......................
> ............;;;<................................................................
> │ 
> ...............>/////////////////////////////////////////<<.....................
> .....;;;;;;;////<...............................................................
> │ 
> ................>/////////////////////////////////////////<....................;
> ;;;;;///////////<<..............................................................
> │ 
> ................./////////////////////////////////////////<<..................;/
> /////////////////<.....................;;;<<....................................
> │ 
> .................>/////////////////////////////////////////<.................../
> /////////////////<<...............;;;;;////<....................................
> │ 
> ..................//////////////////////////////////////////<...................
> //////////////////<<..............>////////<<...................................
> │ 
> ..................>/////////////////////////////////////////<<..................
> >//////////////////<...............>////////<...................................
> │ 
> ...................>/////////////////////////////////////////<..................
> .//////////////////<<...............////////<<..................................
> │ 
> ..................../////////////////////////////////////////<<.................
> .>//////////////////<...............>////.......................................
> │ 
> ....................>/////////////////////////////////////////<.................
> ..///////////////////...........................................................
> │ 
> ...................../////////////////////////////////////////<<................
> ..>////////////.................................................................
> │ 
> .....................>/////////////////////////////////////////<................
> ...>////........................................................................
> │ 
> ......................>/////////////////////////////////////////<...............
> ................................................................................
> │ 
> ......................./////////////////////////////////////////................
> ................................................................................
> │ 
> .......................>/////////////////////////////////.......................
> ................................................................................
> │ 
> ........................//////////////////////////..............................
> ................................................................................
> │ 
> ........................>//////////////////.....................................
> ................................................................................
> │ 
> .........................>//////////............................................
> ................................................................................
> │ 
> ..........................////..................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................;;;/;...........................
> ................................................................................
> │ 
> ..........................................;;;;/;//////..........................
> ................................................................................
> │ 
> ....................................;;;;///////////////.........................
> ................................................................................
> │ 
> ...............................;;/;;///////////////////<........................
> ................................................................................
> │ 
> .........................;;;;/;/////////////////////////........................
> ................................................................................
> │ 
> ...................;;;;//;///////////////////////////////.......................
> ................................................................................
> │ 
> ..............;;/;;//////////////////////////////////////<......................
> ................................................................................
> │ 
> ..............>>//////////////////////////////////////////......................
> ...........;;;//................................................................
> │ 
> ...............>>//////////////////////////////////////////.....................
> ......;;/////////...............................................................
> │ 
> ................>///////////////////////////////////////////....................
> ;;;///////////////..............................................................
> │ 
> .................>//////////////////////////////////////////<.................;>
> //////////////////<...................;;///<....................................
> │ 
> .................>>//////////////////////////////////////////..................>
> ///////////////////...............;;;;//////....................................
> │ 
> ..................>>//////////////////////////////////////////..................
> >///////////////////...............>/////////...................................
> │ 
> ...................>//////////////////////////////////////////<.................
> >>///////////////////..............>>////////<..................................
> │ 
> ....................>//////////////////////////////////////////.................
> .>>//////////////////...............>>////////..................................
> │ 
> ....................>>//////////////////////////////////////////................
> ..>///////////////////...............>///.......................................
> │ 
> .....................>///////////////////////////////////////////...............
> ...>////////////////............................................................
> │ 
> ......................>//////////////////////////////////////////<..............
> ...>>/////////..................................................................
> │ 
> ......................>>//////////////////////////////////////////..............
> ....>////.......................................................................
> │ 
> .......................>>/////////////////////////////////////////..............
> ................................................................................
> │ 
> ........................>>//////////////////////////////////....................
> ................................................................................
> │ 
> .........................>////////////////////////////..........................
> ................................................................................
> │ 
> .........................>>//////////////////////...............................
> ................................................................................
> │ 
> ..........................>>////////////////....................................
> ................................................................................
> │ 
> ...........................>///////////.........................................
> ................................................................................
> │ 
> ............................>////...............................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ...................................................;............................
> ................................................................................
> │ 
> ..............................................;/;;///...........................
> ................................................................................
> │ 
> .........................................;;;//////////..........................
> ................................................................................
> │ 
> ....................................;;;///////////////<.........................
> ................................................................................
> │ 
> ...............................;;;/;///////////////////<........................
> ................................................................................
> │ 
> ..........................;;;/;/////////////////////////<.......................
> ................................................................................
> │ 
> ......................;;/////////////////////////////////.......................
> ................................................................................
> │ 
> .................;;;//////////////////////////////////////......................
> ................................................................................
> │ 
> ..............;>///////////////////////////////////////////.....................
> ...........;;;;/................................................................
> │ 
> ...............>///////////////////////////////////////////<....................
> ......;;/////////...............................................................
> │ 
> ................>///////////////////////////////////////////<...................
> .;;;//////////////..............................................................
> │ 
> .................>///////////////////////////////////////////<................;>
> ///////////////////...................;;///<....................................
> │ 
> .................>>///////////////////////////////////////////.................>
> >///////////////////..............;;;;//////....................................
> │ 
> ..................>>///////////////////////////////////////////.................
> >///////////////////<.............>>/////////...................................
> │ 
> ...................>>///////////////////////////////////////////................
> .>///////////////////<.............>>/////////..................................
> │ 
> ....................>>///////////////////////////////////////////...............
> .>>///////////////////..............>>////////..................................
> │ 
> .....................>///////////////////////////////////////////<..............
> ..>>///////////////////..............>////......................................
> │ 
> ......................>///////////////////////////////////////////<.............
> ...>>//////////////.............................................................
> │ 
> .......................>///////////////////////////////////////////.............
> ....>>////////..................................................................
> │ 
> ........................>//////////////////////////////////////////.............
> .....>////......................................................................
> │ 
> ........................>>/////////////////////////////////////.................
> ................................................................................
> │ 
> .........................>>///////////////////////////////......................
> ................................................................................
> │ 
> ..........................>>//////////////////////////..........................
> ................................................................................
> │ 
> ...........................>>////////////////////...............................
> ................................................................................
> │ 
> ............................>>///////////////...................................
> ................................................................................
> │ 
> .............................>>/////////........................................
> ................................................................................
> │ 
> ..............................>/////............................................
> ................................................................................
> │ 
> .............................../................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................;;/<............................
> ................................................................................
> │ 
> ............................................;;//////<...........................
> ................................................................................
> │ 
> ........................................;;;//////////<..........................
> ................................................................................
> │ 
> ....................................;/;;//////////////<.........................
> ................................................................................
> │ 
> ................................;;/////////////////////<........................
> ................................................................................
> │ 
> ...........................;;//;////////////////////////........................
> ................................................................................
> │ 
> .......................;;;///////////////////////////////<......................
> ................................................................................
> │ 
> ...................;/;////////////////////////////////////<.....................
> ..............;.................................................................
> │ 
> ..............;;;;/////////////////////////////////////////<....................
> ..........;/////................................................................
> │ 
> ..............;>////////////////////////////////////////////<...................
> ......;;;;///////...............................................................
> │ 
> ................>////////////////////////////////////////////<..................
> ..;///////////////..............................................................
> │ 
> .................>////////////////////////////////////////////.................;
> ;//////////////////...................;;;//<....................................
> │ 
> ..................>////////////////////////////////////////////................>
> >///////////////////..............;;;///////<...................................
> │ 
> ...................>////////////////////////////////////////////<..............>
> >>///////////////////.............>>/////////<..................................
> │ 
> ....................>////////////////////////////////////////////<..............
> >>>///////////////////.............>>/////////..................................
> │ 
> .....................>////////////////////////////////////////////<.............
> .>>>///////////////////.............>>////////..................................
> │ 
> ......................>////////////////////////////////////////////<............
> ..>>>/////////////////...............>>///......................................
> │ 
> .......................>////////////////////////////////////////////............
> ...>>>////////////..............................................................
> │ 
> ........................>///////////////////////////////////////////............
> ....>>>///////..................................................................
> │ 
> .........................>>/////////////////////////////////////................
> .....>>////.....................................................................
> │ 
> ..........................>/////////////////////////////////....................
> ................................................................................
> │ 
> ...........................>>////////////////////////////.......................
> ................................................................................
> │ 
> ............................>>///////////////////////...........................
> ................................................................................
> │ 
> .............................>////////////////////..............................
> ................................................................................
> │ 
> ..............................>>//////////////..................................
> ................................................................................
> │ 
> ...............................>>/////////......................................
> ................................................................................
> │ 
> ................................>>////..........................................
> ................................................................................
> │ 
> .................................>/.............................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ...............................................;;;/.............................
> ................................................................................
> │ 
> ...........................................;;;//////............................
> ................................................................................
> │ 
> .......................................;;;///////////...........................
> ................................................................................
> │ 
> ....................................;;////////////////..........................
> ................................................................................
> │ 
> ................................;;;////////////////////<........................
> ................................................................................
> │ 
> ............................;;/;////////////////////////<.......................
> ................................................................................
> │ 
> .........................;;//////////////////////////////<......................
> ................................................................................
> │ 
> .....................;/////////////////////////////////////.....................
> .............;;.................................................................
> │ 
> .................;/;////////////////////////////////////////....................
> ..........;;////................................................................
> │ 
> ...............;/////////////////////////////////////////////...................
> ......;;;////////...............................................................
> │ 
> ...............>>/////////////////////////////////////////////..................
> ...;//////////////<.............................................................
> │ 
> ................>>/////////////////////////////////////////////................;
> ;///////////////////..................;;;//<....................................
> │ 
> ..................>>////////////////////////////////////////////<.............;;
> >////////////////////..............;/////////...................................
> │ 
> ...................>>////////////////////////////////////////////<............\>
> >>////////////////////............;>//////////..................................
> │ 
> ....................>>////////////////////////////////////////////<.............
> >>>////////////////////...........\>>//////////.................................
> │ 
> .....................>>/////////////////////////////////////////////............
> .>>>////////////////////............>>>//////...................................
> │ 
> .......................>/////////////////////////////////////////////...........
> ..>>>////////////////................>>///......................................
> │ 
> ........................>////////////////////////////////////////////...........
> ...>>>////////////..............................................................
> │ 
> .........................>>///////////////////////////////////////..............
> ....>>>>///////.................................................................
> │ 
> ..........................>>///////////////////////////////////.................
> .....\>>>///....................................................................
> │ 
> ...........................>>//////////////////////////////.....................
> ................................................................................
> │ 
> ............................>>//////////////////////////........................
> ................................................................................
> │ 
> .............................>>//////////////////////...........................
> ................................................................................
> │ 
> ...............................>//////////////////..............................
> ................................................................................
> │ 
> ................................>>/////////////.................................
> ................................................................................
> │ 
> .................................>>/////////....................................
> ................................................................................
> │ 
> ..................................>>/////.......................................
> ................................................................................
> │ 
> ...................................>//..........................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .............................................;;///..............................
> ................................................................................
> │ 
> ..........................................;;;//////<............................
> ................................................................................
> │ 
> .......................................;////////////<...........................
> ................................................................................
> │ 
> ....................................;/////////////////..........................
> ................................................................................
> │ 
> ................................;;;////////////////////<........................
> ................................................................................
> │ 
> .............................;;;////////////////////////<.......................
> ................................................................................
> │ 
> ..........................;///////////////////////////////......................
> ................................................................................
> │ 
> ......................;;///////////////////////////////////.....................
> .............;/.................................................................
> │ 
> ...................;;;//////////////////////////////////////<...................
> ..........;;////................................................................
> │ 
> ................;;////////////////////////////////////////////..................
> ......;;;////////...............................................................
> │ 
> ...............;>//////////////////////////////////////////////.................
> ...;;//////////////......................<......................................
> │ 
> ................>>//////////////////////////////////////////////................
> ;///////////////////..................;;;//<....................................
> │ 
> .................>>>//////////////////////////////////////////////............;;
> >////////////////////..............;;;///////...................................
> │ 
> ..................>>>//////////////////////////////////////////////...........>>
> >>////////////////////<..........;;;>/////////..................................
> │ 
> ...................>>>//////////////////////////////////////////////...........>
> >>>/////////////////////..........>>>>/////////.................................
> │ 
> .....................>>>/////////////////////////////////////////////<..........
> >>>>>//////////////////............>>>>//////...................................
> │ 
> ......................>>>////////////////////////////////////////////...........
> .\>>>>///////////////................>>>//......................................
> │ 
> ........................>>>////////////////////////////////////////.............
> ...>>>>///////////..............................................................
> │ 
> .........................>>>////////////////////////////////////................
> ....>>>>>//////.................................................................
> │ 
> ..........................>>>////////////////////////////////...................
> ......>>>>//....................................................................
> │ 
> ............................>>>////////////////////////////.....................
> ................................................................................
> │ 
> .............................>>>////////////////////////........................
> ................................................................................
> │ 
> ..............................>>>////////////////////...........................
> ................................................................................
> │ 
> ................................>>>////////////////.............................
> ................................................................................
> │ 
> .................................>>>////////////................................
> ................................................................................
> │ 
> ...................................>>>////////..................................
> ................................................................................
> │ 
> ....................................>>>////.....................................
> ................................................................................
> │ 
> ......................................>//.......................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ...............................................;<...............................
> ................................................................................
> │ 
> ............................................;;;//<..............................
> ................................................................................
> │ 
> ..........................................;;///////<............................
> ................................................................................
> │ 
> .......................................;////////////<...........................
> ................................................................................
> │ 
> ....................................;/////////////////..........................
> ................................................................................
> │ 
> .................................;/////////////////////<........................
> ................................................................................
> │ 
> ..............................;;/////////////////////////.......................
> ................................................................................
> │ 
> ...........................;;/////////////////////////////......................
> ................................................................................
> │ 
> ........................;;//////////////////////////////////....................
> ............;;<.................................................................
> │ 
> .....................;;//////////////////////////////////////...................
> .........;//////................................................................
> │ 
> ..................;///////////////////////////////////////////<.................
> .......;//////////..............................................................
> │ 
> ................;///////////////////////////////////////////////................
> ....;;/////////////......................;......................................
> │ 
> ................>>>//////////////////////////////////////////////<..............
> .;;/////////////////<.................;;///<....................................
> │ 
> ................>>>>///////////////////////////////////////////////............;
> >/////////////////////.............;;////////...................................
> │ 
> ................;>>>>>//////////////////////////////////////////////<........;;>
> >>/////////////////////<.........;;;>/////////<.................................
> │ 
> ..................>>>>>//////////////////////////////////////////////<........>>
> >>>>////////////////////..........>>>>/////////.................................
> │ 
> ...................>>>>>//////////////////////////////////////////////..........
> >>>>>//////////////////............>>>>>/////...................................
> │ 
> .....................>>>>>//////////////////////////////////////////............
> .>>>>>>/////////////.................>>>>/......................................
> │ 
> ......................>>>>>>/////////////////////////////////////...............
> ...>>>>>//////////..............................................................
> │ 
> ........................>>>>>//////////////////////////////////.................
> ....>>>>>>/////.................................................................
> │ 
> ..........................>>>>>//////////////////////////////...................
> ......>>>>>//...................................................................
> │ 
> ...........................>>>>>///////////////////////////.....................
> ................................................................................
> │ 
> .............................>>>>>///////////////////////.......................
> ................................................................................
> │ 
> ..............................>>>>>///////////////////..........................
> ................................................................................
> │ 
> ................................>>>>>///////////////............................
> ................................................................................
> │ 
> .................................>>>>>>///////////..............................
> ................................................................................
> │ 
> ...................................=>>>>///////.................................
> ................................................................................
> │ 
> ......................................>>>>///...................................
> ................................................................................
> │ 
> ........................................=>/.....................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ..............................................;/................................
> ................................................................................
> │ 
> ............................................;////...............................
> ................................................................................
> │ 
> .........................................;;///////<.............................
> ................................................................................
> │ 
> ......................................;;////////////............................
> ................................................................................
> │ 
> ....................................;;///////////////<..........................
> ................................................................................
> │ 
> .................................;/////////////////////<........................
> ................................................................................
> │ 
> ..............................;;;////////////////////////.......................
> ................................................................................
> │ 
> ............................;/////////////////////////////<.....................
> ................................................................................
> │ 
> .........................;;/////////////////////////////////....................
> ...........;;/..................................................................
> │ 
> .......................;;/////////////////////////////////////..................
> .........;;/////................................................................
> │ 
> ....................;;/////////////////////////////////////////.................
> .......;//////////..............................................................
> │ 
> ..................;;/////////////////////////////////////////////...............
> ....;;/////////////......................;......................................
> │ 
> ................;;>///////////////////////////////////////////////<.............
> ..;;/////////////////.................;;///<....................................
> │ 
> ................;>>>////////////////////////////////////////////////...........;
> ;/////////////////////.............\;////////<..................................
> │ 
> ................>>>>>>///////////////////////////////////////////////<.......;;;
> >>>/////////////////////.........;;;>//////////.................................
> │ 
> ................>>>>>>>>//////////////////////////////////////////////.......>>>
> >>>>////////////////////.........>>>>>>////////.................................
> │ 
> ..................>>>>>>>>//////////////////////////////////////////...........>
> >>>>>>////////////////.............>>>>>/////...................................
> │ 
> ...................\>>>>>>>///////////////////////////////////////..............
> .>>>>>>>////////////.................>>>>//.....................................
> │ 
> .....................>>>>>>>>///////////////////////////////////................
> ..>>>>>>>/////////..............................................................
> │ 
> .......................>>>>>>>>///////////////////////////////..................
> ....>>>>>>>/////................................................................
> │ 
> .........................>>>>>>>/////////////////////////////...................
> ......>>>>>>//..................................................................
> │ 
> ..........................>>>>>>>>/////////////////////////.....................
> ................................................................................
> │ 
> ............................>>>>>>>>/////////////////////.......................
> ................................................................................
> │ 
> ..............................>>>>>>>>/////////////////.........................
> ................................................................................
> │ 
> ................................>>>>>>>//////////////...........................
> ................................................................................
> │ 
> .................................>>>>>>>>//////////.............................
> ................................................................................
> │ 
> ....................................>>>>>>>//////...............................
> ................................................................................
> │ 
> ........................................>>>>///.................................
> ................................................................................
> │ 
> ...........................................>>/..................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .............................................;/.................................
> ................................................................................
> │ 
> ...........................................;;////...............................
> ................................................................................
> │ 
> ........................................;;////////<.............................
> ................................................................................
> │ 
> ......................................;/////////////............................
> ................................................................................
> │ 
> ....................................;/////////////////..........................
> ................................................................................
> │ 
> .................................;;////////////////////<........................
> ................................................................................
> │ 
> ...............................;/////////////////////////.......................
> ................................................................................
> │ 
> .............................;/////////////////////////////.....................
> ................................................................................
> │ 
> ..........................;;////////////////////////////////<...................
> ...........;;/..................................................................
> │ 
> ........................;;////////////////////////////////////..................
> ........;;//////................................................................
> │ 
> ......................;/////////////////////////////////////////................
> ......;;//////////..............................................................
> │ 
> ...................;;////////////////////////////////////////////<..............
> ....;;;////////////<....................;;......................................
> │ 
> .................;;////////////////////////////////////////////////<............
> ..;;/////////////////................;;;////....................................
> │ 
> ................;;>>>////////////////////////////////////////////////...........
> ;;/////////////////////............\;;///////<..................................
> │ 
> ................;>>>>>>///////////////////////////////////////////////.......;;;
> ;>>/////////////////////.........;;;>//////////.................................
> │ 
> ...............;>>>>>>>>/////////////////////////////////////////////........;>>
> >>>>>///////////////////.........;>>>>>////////.................................
> │ 
> ................>>>>>>>>>>/////////////////////////////////////////...........>>
> >>>>>>>///////////////.............>>>>>>////...................................
> │ 
> ..................>>>>>>>>>>>////////////////////////////////////...............
> >>>>>>>>>///////////................\>>>>>/.....................................
> │ 
> ....................>>>>>>>>>>//////////////////////////////////................
> ..>>>>>>>>////////..............................................................
> │ 
> ......................>>>>>>>>>>//////////////////////////////..................
> ....>>>>>>>>////................................................................
> │ 
> ........................>>>>>>>>>>///////////////////////////...................
> ......>>>>>>>//.................................................................
> │ 
> ..........................>>>>>>>>>>///////////////////////.....................
> ................................................................................
> │ 
> ............................>>>>>>>>>>///////////////////.......................
> ................................................................................
> │ 
> ..............................>>>>>>>>>>////////////////........................
> ................................................................................
> │ 
> ................................>>>>>>>>>>////////////..........................
> ................................................................................
> │ 
> ..................................>>>>>>>>>>////////............................
> ................................................................................
> │ 
> ....................................=>>>>>>>>>/////.............................
> ................................................................................
> │ 
> ..........................................>>>>>//...............................
> ................................................................................
> │ 
> .............................................../................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ............................................;;..................................
> ................................................................................
> │ 
> ..........................................;;////................................
> ................................................................................
> │ 
> ........................................;;////////..............................
> ................................................................................
> │ 
> ......................................;////////////<............................
> ................................................................................
> │ 
> ....................................;////////////////<..........................
> ................................................................................
> │ 
> ..................................;////////////////////<........................
> ................................................................................
> │ 
> ................................;////////////////////////<......................
> ................................................................................
> │ 
> ..............................;////////////////////////////.....................
> ................................................................................
> │ 
> ............................;////////////////////////////////...................
> ..........;;//..................................................................
> │ 
> ..........................;////////////////////////////////////.................
> ........;;//////................................................................
> │ 
> ........................;///////////////////////////////////////<...............
> .....;;;//////////..............................................................
> │ 
> ......................;///////////////////////////////////////////<.............
> ...\;;//////////////....................;<......................................
> │ 
> ....................;;//////////////////////////////////////////////<...........
> ..;;;/////////////////...............;;;///<....................................
> │ 
> ..................;;>////////////////////////////////////////////////...........
> ;;;/////////////////////...........;;;///////<..................................
> │ 
> ................;;>>>>>//////////////////////////////////////////////.........;;
> ;;>/////////////////////..........;;;//////////.................................
> │ 
> ...............;;>>>>>>>>//////////////////////////////////////////.........\;;>
> >>>>>//////////////////..........;;>>>>////////.................................
> │ 
> ..............;>>>>>>>>>>>>///////////////////////////////////////...........>>>
> >>>>>>>///////////////.............>>>>>>////...................................
> │ 
> ................>>>>>>>>>>>>>////////////////////////////////////...............
> >>>>>>>>>>//////////.................>>>>>/.....................................
> │ 
> ..................>>>>>>>>>>>>>>///////////////////////////////.................
> .\>>>>>>>>>////////...................=.........................................
> │ 
> ....................\>>>>>>>>>>>>>////////////////////////////..................
> ....>>>>>>>>>////...............................................................
> │ 
> .......................>>>>>>>>>>>>>/////////////////////////...................
> ......>>>>>>>>>/................................................................
> │ 
> .........................>>>>>>>>>>>>>/////////////////////.....................
> ................................................................................
> │ 
> ...........................>>>>>>>>>>>>>//////////////////......................
> ................................................................................
> │ 
> .............................>>>>>>>>>>>>>///////////////.......................
> ................................................................................
> │ 
> ...............................>>>>>>>>>>>>>>//////////.........................
> ................................................................................
> │ 
> ..................................>>>>>>>>>>>>>///////..........................
> ................................................................................
> │ 
> ....................................=>>>>>>>>>>>>////...........................
> ................................................................................
> │ 
> ............................................=>>>>>/.............................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ...........................................;/<..................................
> ................................................................................
> │ 
> .........................................;;////<................................
> ................................................................................
> │ 
> .......................................;;////////<..............................
> ................................................................................
> │ 
> .....................................;;////////////<............................
> ................................................................................
> │ 
> ...................................;;;///////////////<..........................
> ................................................................................
> │ 
> .................................;;////////////////////<........................
> ................................................................................
> │ 
> ................................;;///////////////////////<......................
> ................................................................................
> │ 
> ..............................;;///////////////////////////<....................
> ................................................................................
> │ 
> ............................;;///////////////////////////////<..................
> ..........;;//..................................................................
> │ 
> ..........................;;;//////////////////////////////////.................
> .......;;;//////................................................................
> │ 
> .........................;;//////////////////////////////////////...............
> .....;;;//////////..............................................................
> │ 
> .......................;;//////////////////////////////////////////<............
> ...;;;;/////////////....................;/......................................
> │ 
> .....................;;//////////////////////////////////////////////...........
> .;;;;/////////////////...............;;;////....................................
> │ 
> ...................;;;///////////////////////////////////////////////...........
> ;;;;////////////////////...........;;;////////..................................
> │ 
> ..................;;>>>>////////////////////////////////////////////..........;;
> ;;;>////////////////////..........;;;//////////.................................
> │ 
> ................;;>>>>>>>>////////////////////////////////////////...........;;;
> >>>>>>/////////////////..........;;>>>>///////..................................
> │ 
> ..............;;>>>>>>>>>>>>/////////////////////////////////////...........;>>>
> >>>>>>>>/////////////.............>>>>>>>>///...................................
> │ 
> ..............>>>>>>>>>>>>>>>>>/////////////////////////////////...............>
> >>>>>>>>>>//////////................\>>>>>>/....................................
> │ 
> ................\>>>>>>>>>>>>>>>>//////////////////////////////.................
> .>>>>>>>>>>>///////....................=........................................
> │ 
> ...................>>>>>>>>>>>>>>>>///////////////////////////..................
> ...>>>>>>>>>>>>///..............................................................
> │ 
> .....................\>>>>>>>>>>>>>>>>///////////////////////...................
> ......>>>>>>>>>>................................................................
> │ 
> ........................>>>>>>>>>>>>>>>>////////////////////....................
> ................................................................................
> │ 
> ..........................>>>>>>>>>>>>>>>>/////////////////.....................
> ................................................................................
> │ 
> .............................>>>>>>>>>>>>>>>>/////////////......................
> ................................................................................
> │ 
> ...............................>>>>>>>>>>>>>>>>/////////........................
> ................................................................................
> │ 
> ..................................>>>>>>>>>>>>>>>>/////.........................
> ................................................................................
> │ 
> ....................................=>>>>>>>>>>>>>>>//..........................
> ................................................................................
> │ 
> .................................................>>>>...........................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ..........................................;//...................................
> ................................................................................
> │ 
> ........................................;;/////.................................
> ................................................................................
> │ 
> ......................................;;/////////...............................
> ................................................................................
> │ 
> ....................................;;;////////////.............................
> ................................................................................
> │ 
> ..................................;;;////////////////...........................
> ................................................................................
> │ 
> ................................;;;;///////////////////<........................
> ................................................................................
> │ 
> ..............................;;;;///////////////////////<......................
> ................................................................................
> │ 
> .............................;;;;//////////////////////////<....................
> ................................................................................
> │ 
> ...........................;;;;///////////////////////////////..................
> .........;;;//..................................................................
> │ 
> ..........................;;;;//////////////////////////////////................
> ......;;;;//////................................................................
> │ 
> ........................;;;;//////////////////////////////////////..............
> ....;;;;;/////////..............................................................
> │ 
> ......................;;;;;/////////////////////////////////////////............
> ...;;;;/////////////<..................<;<......................................
> │ 
> .....................;;;;///////////////////////////////////////////............
> .;;;;;/////////////////..............;;;////....................................
> │ 
> ...................;;;;;////////////////////////////////////////////............
> ;;;;////////////////////...........;;;;///////..................................
> │ 
> ..................;;;;;>///////////////////////////////////////////...........;;
> ;;;>////////////////////..........;;;//////////.................................
> │ 
> ................;;;;;>>>>>////////////////////////////////////////...........;;;
> ;;>>>>/////////////////..........;;;>>>>//////..................................
> │ 
> ...............;;;>>>>>>>>>>>////////////////////////////////////...........;;>>
> >>>>>>>>>/////////////............>>>>>>>>///...................................
> │ 
> .............;;;>>>>>>>>>>>>>>>>////////////////////////////////..............>>
> >>>>>>>>>>>/////////................>>>>>>>/....................................
> │ 
> ..............\>>>>>>>>>>>>>>>>>>>/////////////////////////////.................
> .>>>>>>>>>>>>>/////....................>........................................
> │ 
> .................>>>>>>>>>>>>>>>>>>>>/////////////////////////..................
> ...>>>>>>>>>>>>>//..............................................................
> │ 
> ....................>>>>>>>>>>>>>>>>>>>>/////////////////////...................
> ......>>>>>>>>>>>...............................................................
> │ 
> .......................>>>>>>>>>>>>>>>>>>>//////////////////....................
> ................................................................................
> │ 
> ..........................>>>>>>>>>>>>>>>>>>>//////////////.....................
> ................................................................................
> │ 
> ............................>>>>>>>>>>>>>>>>>>>>///////////.....................
> ................................................................................
> │ 
> ...............................>>>>>>>>>>>>>>>>>>>////////......................
> ................................................................................
> │ 
> ..................................>>>>>>>>>>>>>>>>>>>////.......................
> ................................................................................
> │ 
> .....................................>>>>>>>>>>>>>>>>>>/........................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .........................................;;/....................................
> ................................................................................
> │ 
> .......................................;;/////<.................................
> ................................................................................
> │ 
> .....................................;;;/////////...............................
> ................................................................................
> │ 
> ...................................;;;;////////////.............................
> ................................................................................
> │ 
> .................................;;;;;///////////////...........................
> ................................................................................
> │ 
> ...............................;;;;;///////////////////<........................
> ................................................................................
> │ 
> .............................;;;;;;//////////////////////<......................
> ................................................................................
> │ 
> ...........................;;;;;;;//////////////////////////....................
> ................................................................................
> │ 
> ..........................;;;;;;//////////////////////////////..................
> .........;;//<..................................................................
> │ 
> .........................;;;;;;/////////////////////////////////................
> ......;;;;//////................................................................
> │ 
> .......................;;;;;;;////////////////////////////////////<.............
> ...;;;;;;/////////<.............................................................
> │ 
> ......................;;;;;;;///////////////////////////////////////............
> ..;;;;;//////////////..................;;.......................................
> │ 
> .....................;;;;;;////////////////////////////////////////.............
> .;;;;;;////////////////.............;;;;////....................................
> │ 
> ...................;;;;;;;////////////////////////////////////////..............
> ;;;;;;//////////////////...........;;;;///////<.................................
> │ 
> ..................;;;;;;;/////////////////////////////////////////............\;
> ;;;;///////////////////...........;;;;/////////.................................
> │ 
> .................;;;;;;;>>>//////////////////////////////////////............;;;
> ;;;>>>>///////////////...........;;;;>>>//////..................................
> │ 
> ...............;;;;;;>>>>>>>>>>/////////////////////////////////............;;;>
> >>>>>>>>>////////////............\>>>>>>>>>//...................................
> │ 
> ..............;;;;>>>>>>>>>>>>>>>///////////////////////////////.............>>>
> >>>>>>>>>>>>/////////...............>>>>>>>>....................................
> │ 
> .............;;>>>>>>>>>>>>>>>>>>>>>///////////////////////////.................
> >>>>>>>>>>>>>>>/////...................>........................................
> │ 
> ...............>>>>>>>>>>>>>>>>>>>>>>>>///////////////////////..................
> ...>>>>>>>>>>>>>>>/.............................................................
> │ 
> ..................>>>>>>>>>>>>>>>>>>>>>>>>////////////////////..................
> ......>>>>>>>>>>>/..............................................................
> │ 
> .....................>>>>>>>>>>>>>>>>>>>>>>>>////////////////...................
> ................................................................................
> │ 
> ........................>>>>>>>>>>>>>>>>>>>>>>>>////////////....................
> ................................................................................
> │ 
> ............................>>>>>>>>>>>>>>>>>>>>>>>/////////....................
> ................................................................................
> │ 
> ...............................>>>>>>>>>>>>>>>>>>>>>>>/////.....................
> ................................................................................
> │ 
> ..................................>>>>>>>>>>>>>>>>>>>>>>//......................
> ................................................................................
> │ 
> .....................................>>>>>>>>>>>>>>>>>>>>/......................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ........................................;;/<....................................
> ................................................................................
> │ 
> ......................................;;;/////..................................
> ................................................................................
> │ 
> ....................................;;;;////////................................
> ................................................................................
> │ 
> ..................................;;;;;////////////.............................
> ................................................................................
> │ 
> ................................;;;;;;///////////////...........................
> ................................................................................
> │ 
> ..............................;;;;;;;//////////////////.........................
> ................................................................................
> │ 
> ............................;;;;;;;;//////////////////////......................
> ................................................................................
> │ 
> ..........................;;;;;;;;//////////////////////////....................
> ................................................................................
> │ 
> .........................;;;;;;;;/////////////////////////////<.................
> ........;;;//...................................................................
> │ 
> ........................;;;;;;;;////////////////////////////////<...............
> .....;;;;;//////................................................................
> │ 
> .......................;;;;;;;;////////////////////////////////////.............
> ..<;;;;;;/////////<.............................................................
> │ 
> .....................\;;;;;;;;/////////////////////////////////////.............
> ..;;;;;;/////////////..................;;<......................................
> │ 
> ....................;;;;;;;;;/////////////////////////////////////..............
> \;;;;;;/////////////////............;;;;////....................................
> │ 
> ...................;;;;;;;;;//////////////////////////////////////..............
> ;;;;;;/////////////////............;;;;////////.................................
> │ 
> ..................;;;;;;;;;//////////////////////////////////////.............\;
> ;;;;;//////////////////...........;;;;/////////.................................
> │ 
> .................;;;;;;;;;;>/////////////////////////////////////............\;;
> ;;;;;>>///////////////...........;;;;;>>>/////..................................
> │ 
> ................;;;;;;;;>>>>>>>>////////////////////////////////............\;;;
> ;>>>>>>>>>////////////...........;>>>>>>>>>//...................................
> │ 
> ...............;;;;;;>>>>>>>>>>>>>>/////////////////////////////............;>>>
> >>>>>>>>>>>>>////////...............>>>>>>>>/...................................
> │ 
> ..............;;;;>>>>>>>>>>>>>>>>>>>>/////////////////////////................>
> >>>>>>>>>>>>>>>>////...................=>.......................................
> │ 
> .............;>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////////.................
> ..\>>>>>>>>>>>>>>>>.............................................................
> │ 
> ................>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////..................
> ......>>>>>>>>>=>...............................................................
> │ 
> ....................>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////..................
> ................................................................................
> │ 
> .......................>>>>>>>>>>>>>>>>>>>>>>>>>>>///////////...................
> ................................................................................
> │ 
> ...........................>>>>>>>>>>>>>>>>>>>>>>>>>>>///////...................
> ................................................................................
> │ 
> ..............................>>>>>>>>>>>>>>>>>>>>>>>>>>>///....................
> ................................................................................
> │ 
> ..................................>>>>>>>>>>>>>>>>>>>>>>>>>/....................
> ................................................................................
> │ 
> ......................................>>>>>=>=>>................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .......................................;;//.....................................
> ................................................................................
> │ 
> .....................................;;;/////<..................................
> ................................................................................
> │ 
> ...................................;;;;/////////................................
> ................................................................................
> │ 
> .................................;;;;;;///////////<.............................
> ................................................................................
> │ 
> ...............................;;;;;;;///////////////...........................
> ................................................................................
> │ 
> .............................;;;;;;;;//////////////////.........................
> ................................................................................
> │ 
> ...........................;;;;;;;;;//////////////////////......................
> ................................................................................
> │ 
> .........................;;;;;;;;;;/////////////////////////....................
> ................................................................................
> │ 
> ........................;;;;;;;;;;;///////////////////////////<.................
> ........;;;//...................................................................
> │ 
> .......................;;;;;;;;;;;///////////////////////////////...............
> .....;;;;;//////................................................................
> │ 
> ......................;;;;;;;;;;;/////////////////////////////////..............
> ..;;;;;;;/////////<.............................................................
> │ 
> .....................;;;;;;;;;;;//////////////////////////////////..............
> .;;;;;;;/////////////..................;;<......................................
> │ 
> ....................;;;;;;;;;;;//////////////////////////////////...............
> ;;;;;;;;///////////////.............;;;;////<...................................
> │ 
> ...................;;;;;;;;;;;;//////////////////////////////////..............;
> ;;;;;;;////////////////............;;;;////////.................................
> │ 
> ..................;;;;;;;;;;;;///////////////////////////////////..............;
> ;;;;;;/////////////////...........;;;;;////////.................................
> │ 
> .................;;;;;;;;;;;;///////////////////////////////////..............;;
> ;;;;;;>>//////////////...........;;;;;>>>/////..................................
> │ 
> ................;;;;;;;;;;;;>>>>>///////////////////////////////.............;;;
> ;;>>>>>>>>>///////////...........;>>>>>>>>>>//..................................
> │ 
> ...............;;;;;;;;;>>>>>>>>>>>>////////////////////////////............\;;>
> >>>>>>>>>>>>>>///////...............>>>>>>>>>...................................
> │ 
> ..............;;;;;;;>>>>>>>>>>>>>>>>>>>///////////////////////...............\>
> >>>>>>>>>>>>>>>>>>///..................>=.......................................
> │ 
> .............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>////////////////////.................
> ..>>>>>>>>>>>>>>>>>>............................................................
> │ 
> .............>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////////////////.................
> ......>>>>>>>>>>=...............................................................
> │ 
> .................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////////..................
> ................................................................................
> │ 
> ......................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////..................
> ................................................................................
> │ 
> ..........................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////..................
> ................................................................................
> │ 
> ..............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//..................
> ................................................................................
> │ 
> ..................................>>>>>>>>>>>>>>>>>>>>>>>>>>>...................
> ................................................................................
> │ 
> ......................................>>>==.....................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .......................................;;/<.....................................
> ................................................................................
> │ 
> ....................................<;;;/////...................................
> ................................................................................
> │ 
> ..................................;;;;;////////<................................
> ................................................................................
> │ 
> ................................;;;;;;;///////////..............................
> ................................................................................
> │ 
> ..............................;;;;;;;;//////////////<...........................
> ................................................................................
> │ 
> ............................;;;;;;;;;;/////////////////.........................
> ................................................................................
> │ 
> ..........................;;;;;;;;;;;////////////////////<......................
> ................................................................................
> │ 
> ........................;;;;;;;;;;;;////////////////////////....................
> ................................................................................
> │ 
> .......................;;;;;;;;;;;;;///////////////////////////.................
> ........;;///...................................................................
> │ 
> ......................;;;;;;;;;;;;;//////////////////////////////...............
> .....;;;;;//////................................................................
> │ 
> .....................;;;;;;;;;;;;;;//////////////////////////////...............
> ..;;;;;;;//////////.............................................................
> │ 
> ....................;;;;;;;;;;;;;;///////////////////////////////...............
> \;;;;;;;;////////////<.................;;.......................................
> │ 
> ...................\;;;;;;;;;;;;;///////////////////////////////................
> ;;;;;;;;///////////////............<;;;;////<...................................
> │ 
> ...................;;;;;;;;;;;;;;///////////////////////////////...............;
> ;;;;;;;;///////////////...........\;;;;////////.................................
> │ 
> ..................;;;;;;;;;;;;;;////////////////////////////////..............\;
> ;;;;;;;///////////////............;;;;;////////.................................
> │ 
> .................;;;;;;;;;;;;;;;////////////////////////////////..............;;
> ;;;;;;;>//////////////...........\;;;;;>>>////..................................
> │ 
> ................;;;;;;;;;;;;;;;>>>//////////////////////////////.............;;;
> ;;;;>>>>>>>>//////////...........;;>>>>>>>>>>/..................................
> │ 
> ................;;;;;;;;;;;;>>>>>>>>>>//////////////////////////.............;;;
> >>>>>>>>>>>>>>>>/////..............\>>>>>>>>/...................................
> │ 
> ...............;;;;;;;;;>>>>>>>>>>>>>>>>>>//////////////////////.............\>>
> >>>>>>>>>>>>>>>>>>>//..................\=.......................................
> │ 
> ..............;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////................
> .\>>>>>>>>>>>>>>>>>>/...........................................................
> │ 
> .............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////////////.................
> ......>>>>>>>>>>................................................................
> │ 
> ...............>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////.................
> ................................................................................
> │ 
> ...................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////.................
> ................................................................................
> │ 
> ........................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//.................
> ................................................................................
> │ 
> .............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/.................
> ................................................................................
> │ 
> ..................................>>>>>>>>>>>>>>>>>>>>==........................
> ................................................................................
> │ 
> .......................................>==......................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ......................................;;//......................................
> ................................................................................
> │ 
> ....................................;;;;////....................................
> ................................................................................
> │ 
> ..................................;;;;;////////.................................
> ................................................................................
> │ 
> ...............................<;;;;;;;///////////..............................
> ................................................................................
> │ 
> .............................;;;;;;;;;//////////////............................
> ................................................................................
> │ 
> ...........................;;;;;;;;;;;/////////////////.........................
> ................................................................................
> │ 
> .........................;;;;;;;;;;;;;///////////////////<......................
> ................................................................................
> │ 
> .......................;;;;;;;;;;;;;;///////////////////////....................
> ................................................................................
> │ 
> .....................\;;;;;;;;;;;;;;;//////////////////////////.................
> .......<;;//<...................................................................
> │ 
> .....................;;;;;;;;;;;;;;;;///////////////////////////................
> ....<;;;;;//////................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;////////////////////////////................
> ..;;;;;;;;/////////.............................................................
> │ 
> ....................;;;;;;;;;;;;;;;;////////////////////////////................
> ;;;;;;;;;/////////////.................;/.......................................
> │ 
> ...................;;;;;;;;;;;;;;;;/////////////////////////////...............;
> ;;;;;;;;;/////////////.............<;;;;////<...................................
> │ 
> ..................;;;;;;;;;;;;;;;;;/////////////////////////////...............;
> ;;;;;;;;//////////////............\;;;;;//////..................................
> │ 
> ..................;;;;;;;;;;;;;;;;;/////////////////////////////..............\;
> ;;;;;;;;//////////////............;;;;;///////..................................
> │ 
> .................;;;;;;;;;;;;;;;;;//////////////////////////////..............;;
> ;;;;;;;;>/////////////............;;;;;>>>////..................................
> │ 
> .................;;;;;;;;;;;;;;;;;>/////////////////////////////..............;;
> ;;;;;;>>>>>>>/////////...........;;;>>>>>>>>>/..................................
> │ 
> ................;;;;;;;;;;;;;;;;>>>>>>>/////////////////////////.............;;;
> ;;>>>>>>>>>>>>>>>/////.............\>>>>>>>>>=..................................
> │ 
> ...............;;;;;;;;;;;;;>>>>>>>>>>>>>>>/////////////////////.............;>>
> >>>>>>>>>>>>>>>>>>>>>/..................>.......................................
> │ 
> ...............;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>////////////////................
> .>>>>>>>>>>>>>>>>>>>/...........................................................
> │ 
> ..............;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////////................
> ......>>>>>>>>>>................................................................
> │ 
> ..............;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////................
> ................................................................................
> │ 
> .................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////................
> ................................................................................
> │ 
> ......................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>................
> ................................................................................
> │ 
> ............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>..................
> ................................................................................
> │ 
> ..................................>>>>>>>>>>>>>>>>>>............................
> ................................................................................
> │ 
> .......................................>=.......................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .....................................<;;/<......................................
> ................................................................................
> │ 
> ...................................;;;;;///<....................................
> ................................................................................
> │ 
> .................................;;;;;;///////<.................................
> ................................................................................
> │ 
> ...............................;;;;;;;;//////////<..............................
> ................................................................................
> │ 
> ............................<;;;;;;;;;;/////////////............................
> ................................................................................
> │ 
> ..........................<;;;;;;;;;;;;///////////////<.........................
> ................................................................................
> │ 
> ........................;;;;;;;;;;;;;;;//////////////////<......................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;;;;;;//////////////////////....................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;////////////////////////..................
> .......;;;//....................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;/////////////////////////.................
> ....;;;;;;//////................................................................
> │ 
> ...................;;;;;;;;;;;;;;;;;;;/////////////////////////.................
> .<;;;;;;;;////////<.............................................................
> │ 
> ...................;;;;;;;;;;;;;;;;;;;/////////////////////////................;
> ;;;;;;;;;;////////////.................;/.......................................
> │ 
> ..................\;;;;;;;;;;;;;;;;;;//////////////////////////................;
> ;;;;;;;;;/////////////.............<;;;;////<...................................
> │ 
> ..................;;;;;;;;;;;;;;;;;;;//////////////////////////................;
> ;;;;;;;;;/////////////............;;;;;;//////..................................
> │ 
> ..................;;;;;;;;;;;;;;;;;;;///////////////////////////..............;;
> ;;;;;;;;;/////////////............;;;;;;//////..................................
> │ 
> .................;;;;;;;;;;;;;;;;;;;;///////////////////////////..............;;
> ;;;;;;;;;>////////////............;;;;;;>>////..................................
> │ 
> .................;;;;;;;;;;;;;;;;;;;;///////////////////////////..............;;
> ;;;;;;;;>>>>/>////////............;;;>>>>>>>>>..................................
> │ 
> ................;;;;;;;;;;;;;;;;;;;;>>>>>///////////////////////.............\;;
> ;;;>>>>>>>>>>>>>/>////.............>>>>>>>>>=...................................
> │ 
> ................;;;;;;;;;;;;;;;;>>>>>>>>>>>>>>//////////////////.............;;;
> >>>>>>>>>>>>>>>>>>>>>>..................=.......................................
> │ 
> ...............;;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>//////////////................
> >>>>>>>>>>>>>>>>>>>>>...........................................................
> │ 
> ...............;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////...............
> .....\>>>>>>>>=.................................................................
> │ 
> ..............;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////...............
> ................................................................................
> │ 
> ..............;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/...............
> ................................................................................
> │ 
> ....................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>...............
> ................................................................................
> │ 
> ..........................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>......................
> ................................................................................
> │ 
> .................................>>>>>>>>>>>>>>>>...............................
> ................................................................................
> │ 
> ........................................=.......................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .....................................;;//.......................................
> ................................................................................
> │ 
> ...................................;;;;////<....................................
> ................................................................................
> │ 
> ................................<;;;;;;///////..................................
> ................................................................................
> │ 
> ..............................<;;;;;;;;/////////<...............................
> ................................................................................
> │ 
> ............................;;;;;;;;;;;////////////<............................
> ................................................................................
> │ 
> ..........................;;;;;;;;;;;;;///////////////<.........................
> ................................................................................
> │ 
> .......................<;;;;;;;;;;;;;;;//////////////////.......................
> ................................................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;/////////////////////....................
> ................................................................................
> │ 
> ...................;;;;;;;;;;;;;;;;;;;;//////////////////////...................
> .......;;;//....................................................................
> │ 
> ...................;;;;;;;;;;;;;;;;;;;;///////////////////////..................
> ....;;;;;;//////................................................................
> │ 
> ..................\;;;;;;;;;;;;;;;;;;;;///////////////////////..................
> .;;;;;;;;;/////////.............................................................
> │ 
> ..................;;;;;;;;;;;;;;;;;;;;;///////////////////////.................;
> ;;;;;;;;;;///////////..................;/.......................................
> │ 
> ..................;;;;;;;;;;;;;;;;;;;;;////////////////////////................;
> ;;;;;;;;;;////////////.............<;;;;////<...................................
> │ 
> ..................;;;;;;;;;;;;;;;;;;;;;////////////////////////...............\;
> ;;;;;;;;;;////////////............;;;;;;//////..................................
> │ 
> .................;;;;;;;;;;;;;;;;;;;;;;////////////////////////...............;;
> ;;;;;;;;;;////////////............;;;;;;//////..................................
> │ 
> .................;;;;;;;;;;;;;;;;;;;;;;/////////////////////////..............;;
> ;;;;;;;;;;>///////////............;;;;;;>>>///..................................
> │ 
> .................;;;;;;;;;;;;;;;;;;;;;;/////////////////////////..............;;
> ;;;;;;;;;>>>>>>///////............;;;;>>>>>>>>..................................
> │ 
> ................;;;;;;;;;;;;;;;;;;;;;;;>>>>/////////////////////..............;;
> ;;;;;;>>>>>>>>>>>>>>//.............>>>>>>>>>=...................................
> │ 
> ................;;;;;;;;;;;;;;;;;;;>>>>>>>>>>>>>/////////////////.............;;
> ;;>>>>>>>>>>>>>>>>>>>>..................=.......................................
> │ 
> ................;;;;;;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>////////////..............\
> >>>>>>>>>>>>>>>>>>>>............................................................
> │ 
> ...............\;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>///////...............
> .....>>>>>>>>>=.................................................................
> │ 
> ...............;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>///..............
> ................................................................................
> │ 
> ...............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>..............
> ................................................................................
> │ 
> ................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=..................
> ................................................................................
> │ 
> ........................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=.........................
> ................................................................................
> │ 
> .................................\>>>>>>>>>>>>>=................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
00:00:29 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 450039 }
00:00:29 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:00:29 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.ipynb to html
00:00:29 v #6 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:29 v #7 !   validate(nb)
00:00:30 v #8 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:30 v #9 !   return _pygments_highlight(
00:00:30 v #10 ! [NbConvertApp] Writing 798005 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.html
00:00:30 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 916 }
00:00:30 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 916 }
00:00:30 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:00:31 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:31 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:31 d #16 spiral.run / dib / { exit_code = 0; result_length = 451014 }
00:00:00 d #1 writeDibCode / output: Spi / path: cube.dib
00:00:00 d #2 parseDibCode / output: Spi / file: cube.dib
00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: cube / hash:  / code.Length: 48903
spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: /home/runner/work/polyglot/polyglot/target/Builder/cube
polyglot/scripts/core.ps1/ResolveLink #4 / Path: /home/runner/work/polyglot/polyglot/deps/spiral/lib/spiral/../../deps/polyglot / parent_target:  / path_target: /home/runner/work/polyglot/polyglot / parent: /home/runner/work/polyglot/polyglot/deps/spiral/lib/spiral/../../deps / End: polyglot
spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: /home/runner/work/polyglot/polyglot/target/Builder/cube / ProjectName: cube / Language: rs / Runtime:  / root: /home/runner/work/polyglot/polyglot
Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha)

Thanks to the contributor! @xdaDaveShaw
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target/Builder/cube/cube.fsproj...
Project and references (14 source files) parsed in 2961ms

Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)

Started Fable compilation...

Fable compilation finished in 8434ms

./deps/spiral/lib/spiral/common.fsx(2206,0): (2206,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/sm.fsx(561,0): (561,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/async_.fsx(250,0): (250,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/crypto.fsx(2436,0): (2436,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/date_time.fsx(2553,0): (2553,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/platform.fsx(122,0): (122,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/networking.fsx(5525,0): (5525,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/trace.fsx(2244,0): (2244,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/runtime.fsx(9174,0): (9174,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./deps/spiral/lib/spiral/file_system.fsx(20847,0): (20847,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
polyglot/scripts/core.ps1/ResolveLink #4 / Path: /home/runner/work/polyglot/polyglot/deps/spiral/lib/spiral/../../deps/polyglot / parent_target:  / path_target: /home/runner/work/polyglot/polyglot / parent: /home/runner/work/polyglot/polyglot/deps/spiral/lib/spiral/../../deps / End: polyglot
spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: /home/runner/work/polyglot/polyglot/target/Builder/cube / ProjectName: cube / Language: ts / Runtime:  / root: /home/runner/work/polyglot/polyglot
Fable 5.0.0-alpha.9: F# to TypeScript compiler
Minimum @fable-org/fable-library-ts version (when installed from npm): 1.10.0

Thanks to the contributor! @ritcoder
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target/Builder/cube/cube.fsproj...
Project and references (14 source files) parsed in 1933ms

Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)

Started Fable compilation...

Fable compilation finished in 8028ms

./deps/spiral/lib/spiral/sm.fsx(38,20): (38,49) warning FABLE: CultureInfo argument is ignored
./deps/spiral/lib/spiral/sm.fsx(307,20): (307,51) warning FABLE: CultureInfo argument is ignored
polyglot/scripts/core.ps1/ResolveLink #4 / Path: /home/runner/work/polyglot/polyglot/deps/spiral/lib/spiral/../../deps/polyglot / parent_target:  / path_target: /home/runner/work/polyglot/polyglot / parent: /home/runner/work/polyglot/polyglot/deps/spiral/lib/spiral/../../deps / End: polyglot
spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: /home/runner/work/polyglot/polyglot/target/Builder/cube / ProjectName: cube / Language: py / Runtime:  / root: /home/runner/work/polyglot/polyglot
Fable 5.0.0-alpha.9: F# to Python compiler (status: beta)

Thanks to the contributor! @IanManske
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target/Builder/cube/cube.fsproj...
Project and references (14 source files) parsed in 2057ms

Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)
Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.)

Started Fable compilation...

Fable compilation finished in 7912ms

./deps/spiral/lib/spiral/sm.fsx(38,20): (38,49) warning FABLE: CultureInfo argument is ignored
./deps/spiral/lib/spiral/sm.fsx(307,20): (307,51) warning FABLE: CultureInfo argument is ignored
polyglot/apps/spiral/temp/cube/build.ps1 / $targetDir: /home/runner/work/polyglot/polyglot/target/Builder/cube / $projectName: cube / $env:CI:'true'
bun install v1.2.16 (631e6748)

+ @playwright/test@1.44.0
+ @types/chrome@0.0.268
+ npm-check-updates@17.1.14
+ buffer@6.0.3

11 packages installed [80.00ms]
[INFO]: 🎯  Checking for the Wasm target...
[INFO]: 🌀  Compiling to Wasm...
warning: /home/runner/work/polyglot/polyglot/examples/rust/exercism/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
warning: /home/runner/work/polyglot/polyglot/apps/chat/contract/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
warning: /home/runner/work/polyglot/polyglot/apps/plot/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
warning: /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
warning: /home/runner/work/polyglot/polyglot/apps/chat/contract/tests/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
warning: /home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
warning: /home/runner/work/polyglot/polyglot/lib/math/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
warning: /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
  See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
   Compiling proc-macro2 v1.0.92
   Compiling unicode-ident v1.0.14
   Compiling autocfg v1.4.0
   Compiling serde v1.0.216
   Compiling cfg-if v1.0.0
   Compiling wasm-bindgen-shared v0.2.99
   Compiling bumpalo v3.16.0
   Compiling once_cell v1.20.2
   Compiling log v0.4.22
   Compiling wasm-bindgen v0.2.99
   Compiling version_check v0.9.5
   Compiling thiserror v1.0.69
   Compiling memchr v2.7.4
   Compiling quote v1.0.37
   Compiling stable_deref_trait v1.2.0
   Compiling smallvec v1.13.2
   Compiling syn v2.0.90
   Compiling pin-project-lite v0.2.15
   Compiling futures-core v0.3.31
   Compiling writeable v0.5.5
   Compiling litemap v0.7.4
   Compiling slab v0.4.9
   Compiling lock_api v0.4.12
   Compiling itoa v1.0.14
   Compiling futures-sink v0.3.31
   Compiling parking_lot_core v0.9.10
   Compiling futures-channel v0.3.31
   Compiling icu_locid_transform_data v1.5.0
   Compiling pin-utils v0.1.0
   Compiling unicode-xid v0.2.6
   Compiling icu_properties_data v1.5.0
   Compiling futures-io v0.3.31
   Compiling serde_json v1.0.133
   Compiling futures-task v0.3.31
   Compiling ryu v1.0.18
   Compiling libc v0.2.168
   Compiling percent-encoding v2.3.1
   Compiling const_format_proc_macros v0.2.34
   Compiling proc-macro-error-attr v1.0.4
   Compiling equivalent v1.0.1
   Compiling icu_normalizer_data v1.5.0
   Compiling write16 v1.0.0
   Compiling hashbrown v0.15.2
   Compiling utf8_iter v1.0.4
   Compiling utf16_iter v1.0.5
   Compiling indexmap v2.7.0
   Compiling proc-macro-error v1.0.4
   Compiling bytes v1.9.0
   Compiling fnv v1.0.7
   Compiling unicode-segmentation v1.12.0
   Compiling const_format v0.2.34
   Compiling convert_case v0.6.0
   Compiling form_urlencoded v1.2.1
   Compiling proc-macro-utils v0.8.0
   Compiling proc-macro-utils v0.10.0
   Compiling proc-macro2-diagnostics v0.10.1
   Compiling xxhash-rust v0.8.12
   Compiling manyhow-macros v0.10.4
   Compiling slotmap v1.0.7
   Compiling half v2.4.1
   Compiling yansi v1.0.1
   Compiling ciborium-io v0.2.2
   Compiling wasm-bindgen-backend v0.2.99
   Compiling synstructure v0.13.1
   Compiling server_fn_macro v0.6.15
   Compiling paste v1.0.15
   Compiling anyhow v1.0.94
   Compiling wasm-bindgen-macro-support v0.2.99
   Compiling scopeguard v1.2.0
   Compiling camino v1.1.9
   Compiling manyhow v0.10.4
   Compiling ciborium-ll v0.2.2
   Compiling http v1.2.0
   Compiling tracing-core v0.1.33
   Compiling winnow v0.6.20
   Compiling serde_derive v1.0.216
   Compiling wasm-bindgen-macro v0.2.99
   Compiling zerofrom-derive v0.1.5
   Compiling yoke-derive v0.7.5
   Compiling thiserror-impl v1.0.69
   Compiling zerofrom v0.1.5
   Compiling js-sys v0.3.76
   Compiling yoke v0.7.5
   Compiling zerovec-derive v0.10.3
   Compiling displaydoc v0.2.5
   Compiling icu_provider_macros v1.5.0
   Compiling zerovec v0.10.4
   Compiling futures-macro v0.3.31
   Compiling tinystr v0.7.6
   Compiling icu_locid v1.5.0
   Compiling icu_collections v1.5.0
   Compiling icu_provider v1.5.0
   Compiling icu_locid_transform v1.5.0
   Compiling futures-util v0.3.31
   Compiling icu_properties v1.5.1
   Compiling web-sys v0.3.76
   Compiling wasm-bindgen-futures v0.4.49
   Compiling pin-project-internal v1.1.7
   Compiling futures-executor v0.3.31
   Compiling tracing-attributes v0.1.28
   Compiling icu_normalizer v1.5.0
   Compiling pin-project v1.1.7
   Compiling futures v0.3.31
   Compiling quote-use-macros v0.8.4
   Compiling idna_adapter v1.2.0
   Compiling idna v1.0.3
   Compiling quote-use v0.8.4
   Compiling serde_spanned v0.6.8
   Compiling url v2.5.4
   Compiling toml_datetime v0.6.8
   Compiling syn_derive v0.1.8
   Compiling same-file v1.0.6
   Compiling interpolator v0.5.0
   Compiling prettyplease v0.2.25
   Compiling hashbrown v0.14.5
   Compiling collection_literals v1.0.1
   Compiling attribute-derive-macro v0.9.2
   Compiling dashmap v5.5.3
   Compiling rstml v0.11.2
   Compiling walkdir v2.5.0
   Compiling toml_edit v0.22.22
   Compiling tracing v0.1.41
   Compiling serde-wasm-bindgen v0.6.5
   Compiling ciborium v0.2.2
   Compiling serde_qs v0.12.0
   Compiling oco_ref v0.1.1
   Compiling derive-where v1.2.7
   Compiling server_fn_macro_default v0.6.15
   Compiling parking_lot v0.12.3
   Compiling getrandom v0.2.15
   Compiling proc-macro-error-attr2 v2.0.0
   Compiling send_wrapper v0.6.0
   Compiling aho-corasick v1.1.3
   Compiling utf8-width v0.1.7
   Compiling minimal-lexical v0.2.1
   Compiling self_cell v1.1.0
   Compiling rustc-hash v1.1.0
   Compiling base64 v0.22.1
   Compiling regex-syntax v0.8.5
   Compiling either v1.13.0
   Compiling itertools v0.12.1
   Compiling regex-automata v0.4.9
   Compiling nom v7.1.3
   Compiling html-escape v0.2.13
   Compiling proc-macro-error2 v2.0.1
   Compiling leptos_hot_reload v0.6.15
   Compiling uuid v1.11.0
   Compiling attribute-derive v0.9.2
   Compiling toml v0.8.19
   Compiling typed-builder-macro v0.18.2
   Compiling pathdiff v0.2.3
   Compiling leptos_macro v0.6.15
   Compiling typed-builder v0.18.2
   Compiling config v0.14.1
   Compiling regex v1.11.1
   Compiling async-recursion v1.1.1
   Compiling num-traits v0.2.19
   Compiling drain_filter_polyfill v0.1.3
   Compiling lazy_static v1.5.0
   Compiling pad-adapter v0.1.1
   Compiling inventory v0.3.15
   Compiling leptos_config v0.6.15
   Compiling cfg_aliases v0.2.1
   Compiling borsh v1.5.3
   Compiling serde_test v1.0.177
   Compiling tokio v1.42.0
   Compiling linear-map v1.2.0
   Compiling serde_urlencoded v0.7.1
   Compiling serde_qs v0.13.0
   Compiling http v0.2.12
   Compiling tower-service v0.3.3
   Compiling base64 v0.13.1
   Compiling console_error_panic_hook v0.1.7
   Compiling gloo-utils v0.2.0
   Compiling leptos_reactive v0.6.15
   Compiling idb v0.6.4
   Compiling gloo-net v0.6.0
   Compiling console_log v1.0.0
   Compiling reqwest-wasm v0.11.16
   Compiling wasm-streams v0.4.2
   Compiling rexie v0.6.2
   Compiling server_fn v0.6.15
   Compiling leptos_server v0.6.15
   Compiling leptos_dom v0.6.15
   Compiling leptos v0.6.15
   Compiling leptos_meta v0.6.15
   Compiling leptos_router v0.6.15
   Compiling spiral_temp_extension v0.0.1 (/home/runner/work/polyglot/polyglot/apps/spiral/temp/extension)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 51.27s
[INFO]: ⬇️  Installing wasm-bindgen...
[INFO]: Optional field missing from Cargo.toml: 'description'. This is not necessary, but recommended
[INFO]: ✨   Done in 52.61s
[INFO]: 📦   Your wasm pkg is ready to publish at /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/pkg.
Resolving dependencies
Resolved, downloaded and extracted [56]
Saved lockfile
▲ [WARNING] "import.meta" is not available with the "iife" output format and will be empty [empty-import-meta]
System.Management.Automation.RemoteException
    pkg/spiral_temp_extension.js:1455:66:
      1455 │ ...ath = new URL('spiral_temp_extension_bg.wasm', import.meta.url);
           ╵                                                   ~~~~~~~~~~~
System.Management.Automation.RemoteException
  You need to set the output format to "esm" for "import.meta" to work correctly.
System.Management.Automation.RemoteException
1 warning
System.Management.Automation.RemoteException
  dist/spiral_temp_extension_bg-GWESY6VZ.wasm   4.4mb ⚠️
  dist/devtools.js                             29.0kb
  dist/content_script.js                       26.7kb
  dist/service_worker.js                        2.2kb
System.Management.Automation.RemoteException
⚡ Done in 42ms
$ playwright test
[WebServer] =: The term '=' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

Error: Timed out waiting 60000ms from config.webServer.


error: script "test:e2e" exited with code 1

# Invoke-Block / $retry: 1/1 / $Location:  / Get-Location: /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock:
'. $(Search-Command bun) test:e2e'

00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "build.dib"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None; stderr = true } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ # test
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## include scripts
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### include notebook core
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> . ../../../../scripts/nbs_header.ps1
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Include core functions script
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> . ../../../../scripts/core.ps1
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Include spiral library
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> . ../../../../deps/spiral/lib/spiral/lib.ps1
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## execute project commands
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### run notebook with retries using spiral supervisor
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> { . ../../../../deps/spiral/workspace/target/release/spiral$(_exe) dib --path 
> test.dib --retries 3 } | Invoke-Block
> 
> ── [ 13.50s - stdout ] ─────────────────────────────────────────────────────────
> │ 00:00:00 d #1 spiral.main / { args = 
> Array(MutCell(["dib", "--path", "test.dib", "--retries", "3"])) }
> │ 00:00:00 d #2 runtime.execute_with_options / { 
> file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", 
> "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib", 
> "--output-path", 
> "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb"]; 
> options = { command = dotnet repl --exit-after-run --run 
> "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib" 
> --output-path 
> "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb"; 
> cancellation_token = None; environment_variables = 
> Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = 
> None; stdin = None; trace = false; working_directory = None; stderr = true } }
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ # test (Polyglot)
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > 
> │ > open testing
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > //// print_code
> │ > 
> │ > inl jp = [[ "J"; "P" ]]
> │ > inl tf = [[ "T"; "F" ]]
> │ > inl sn = [[ "S"; "N" ]]
> │ > inl ie = [[ "I"; "E" ]]
> │ > 
> │ > (ie, ([[]] : _ string))
> │ > ||> listm.foldBack fun ie' acc =>
> │ >     inl ssnn acc' jp' =
> │ >         (sn, acc')
> │ >         ||> listm.foldBack fun sn' acc' =>
> │ >             inl c' ie' sn' tf' jp' =
> │ >                 $'$"{!ie'}{!sn'}{!tf'}{!jp'}"'
> │ > 
> │ >             if listm.length acc' % 4i32 = 2 then
> │ >                 (tf, acc')
> │ >                 ||> listm.foldBack fun tf' acc'' =>
> │ >                     c' ie' sn' tf' jp' :: acc''
> │ >             else
> │ >                 (acc', tf)
> │ >                 ||> listm.fold fun acc'' tf' =>
> │ >                     c' ie' sn' tf' jp' :: acc''
> │ >     if acc = [[]] then
> │ >         (acc, jp)
> │ >         ||> listm.fold fun acc' jp' =>
> │ >             ssnn acc' jp'
> │ >     else
> │ >         (jp, acc)
> │ >         ||> listm.foldBack fun jp' acc' =>
> │ >             ssnn acc' jp'
> │ > |> listm'.box
> │ > |> listm'.to_array'
> │ > |> _assert_eq' ;[[
> │ >     "ISTJ"; "ISFJ"; "INFJ"; "INTJ"
> │ >     "ISTP"; "ISFP"; "INFP"; "INTP"
> │ >     "ESTP"; "ESFP"; "ENFP"; "ENTP"
> │ >     "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ"
> │ > ]]
> │ > 
> │ > ── [ 1.16s - stdout ] 
> ──────────────────────────────────────────────────────────
> │ > │ type Mut0 = {mutable l0 : string}
> │ > │ let rec method1 (v0 : bool) : bool =
> │ > │     v0
> │ > │ and method3 () : string =
> │ > │     let v0 : string = ""
> │ > │     v0
> │ > │ and closure0 (v0 : Mut0, v1 : string) ()
> : unit =
> │ > │     let v2 : string = v0.l0
> │ > │     let v4 : string = v2 + v1 
> │ > │     v0.l0 <- v4
> │ > │     ()
> │ > │ and method2 (v0 : string, v1 : (string 
> []), v2 : (string []))
> │ > : string =
> │ > │     let v3 : string = method3()
> │ > │     let v4 : Mut0 = {l0 = v3} : Mut0
> │ > │     let v7 : string = "{ "
> │ > │     let v8 : string = $"{v7}"
> │ > │     let v16 : unit = ()
> │ > │     let v17 : (unit -> unit) = 
> closure0(v4, v8)
> │ > │     let v18 : unit = (fun () -> v17 (); 
> v16) ()
> │ > │     let v26 : string = "name"
> │ > │     let v27 : string = $"{v26}"
> │ > │     let v35 : unit = ()
> │ > │     let v36 : (unit -> unit) = 
> closure0(v4, v27)
> │ > │     let v37 : unit = (fun () -> v36 (); 
> v35) ()
> │ > │     let v45 : string = " = "
> │ > │     let v46 : string = $"{v45}"
> │ > │     let v54 : unit = ()
> │ > │     let v55 : (unit -> unit) = 
> closure0(v4, v46)
> │ > │     let v56 : unit = (fun () -> v55 (); 
> v54) ()
> │ > │     let v63 : string = $"{v0}"
> │ > │     let v71 : unit = ()
> │ > │     let v72 : (unit -> unit) = 
> closure0(v4, v63)
> │ > │     let v73 : unit = (fun () -> v72 (); 
> v71) ()
> │ > │     let v81 : string = "; "
> │ > │     let v82 : string = $"{v81}"
> │ > │     let v90 : unit = ()
> │ > │     let v91 : (unit -> unit) = 
> closure0(v4, v82)
> │ > │     let v92 : unit = (fun () -> v91 (); 
> v90) ()
> │ > │     let v100 : string = "actual"
> │ > │     let v101 : string = $"{v100}"
> │ > │     let v109 : unit = ()
> │ > │     let v110 : (unit -> unit) = 
> closure0(v4, v101)
> │ > │     let v111 : unit = (fun () -> v110 
> (); v109) ()
> │ > │     let v118 : string = $"{v45}"
> │ > │     let v126 : unit = ()
> │ > │     let v127 : (unit -> unit) = 
> closure0(v4, v118)
> │ > │     let v128 : unit = (fun () -> v127 
> (); v126) ()
> │ > │     let v136 : string = $"%A{v1}"
> │ > │     let v140 : string = $"{v136}"
> │ > │     let v148 : unit = ()
> │ > │     let v149 : (unit -> unit) = 
> closure0(v4, v140)
> │ > │     let v150 : unit = (fun () -> v149 
> (); v148) ()
> │ > │     let v157 : string = $"{v81}"
> │ > │     let v165 : unit = ()
> │ > │     let v166 : (unit -> unit) = 
> closure0(v4, v157)
> │ > │     let v167 : unit = (fun () -> v166 
> (); v165) ()
> │ > │     let v175 : string = "expected"
> │ > │     let v176 : string = $"{v175}"
> │ > │     let v184 : unit = ()
> │ > │     let v185 : (unit -> unit) = 
> closure0(v4, v176)
> │ > │     let v186 : unit = (fun () -> v185 
> (); v184) ()
> │ > │     let v193 : string = $"{v45}"
> │ > │     let v201 : unit = ()
> │ > │     let v202 : (unit -> unit) = 
> closure0(v4, v193)
> │ > │     let v203 : unit = (fun () -> v202 
> (); v201) ()
> │ > │     let v211 : string = $"%A{v2}"
> │ > │     let v215 : string = $"{v211}"
> │ > │     let v223 : unit = ()
> │ > │     let v224 : (unit -> unit) = 
> closure0(v4, v215)
> │ > │     let v225 : unit = (fun () -> v224 
> (); v223) ()
> │ > │     let v233 : string = " }"
> │ > │     let v234 : string = $"{v233}"
> │ > │     let v242 : unit = ()
> │ > │     let v243 : (unit -> unit) = 
> closure0(v4, v234)
> │ > │     let v244 : unit = (fun () -> v243 
> (); v242) ()
> │ > │     let v250 : string = v4.l0
> │ > │     v250
> │ > │ and closure1 (v0 : string) () : unit =
> │ > │     let v1 : (string -> unit) = 
> System.Console.WriteLine
> │ > │     v1 v0
> │ > │ and method0 () : unit =
> │ > │     let v0 : string = "E"
> │ > │     let v1 : string = "N"
> │ > │     let v2 : string = "T"
> │ > │     let v3 : string = "J"
> │ > │     let v4 : string = 
> $"{v0}{v1}{v2}{v3}"
> │ > │     let v5 : string = "F"
> │ > │     let v6 : string = 
> $"{v0}{v1}{v5}{v3}"
> │ > │     let v7 : string = "S"
> │ > │     let v8 : string = 
> $"{v0}{v7}{v5}{v3}"
> │ > │     let v9 : string = 
> $"{v0}{v7}{v2}{v3}"
> │ > │     let v10 : string = "P"
> │ > │     let v11 : string = 
> $"{v0}{v1}{v2}{v10}"
> │ > │     let v12 : string = 
> $"{v0}{v1}{v5}{v10}"
> │ > │     let v13 : string = 
> $"{v0}{v7}{v5}{v10}"
> │ > │     let v14 : string = 
> $"{v0}{v7}{v2}{v10}"
> │ > │     let v15 : string = "I"
> │ > │     let v16 : string = 
> $"{v15}{v1}{v2}{v10}"
> │ > │     let v17 : string = 
> $"{v15}{v1}{v5}{v10}"
> │ > │     let v18 : string = 
> $"{v15}{v7}{v5}{v10}"
> │ > │     let v19 : string = 
> $"{v15}{v7}{v2}{v10}"
> │ > │     let v20 : string = 
> $"{v15}{v1}{v2}{v3}"
> │ > │     let v21 : string = 
> $"{v15}{v1}{v5}{v3}"
> │ > │     let v22 : string = 
> $"{v15}{v7}{v5}{v3}"
> │ > │     let v23 : string = 
> $"{v15}{v7}{v2}{v3}"
> │ > │     let v24 : string list = []
> │ > │     let v26 : string list = v4 :: v24 
> │ > │     let v30 : string list = v6 :: v26 
> │ > │     let v34 : string list = v8 :: v30 
> │ > │     let v38 : string list = v9 :: v34 
> │ > │     let v42 : string list = v11 :: v38 
> │ > │     let v46 : string list = v12 :: v42 
> │ > │     let v50 : string list = v13 :: v46 
> │ > │     let v54 : string list = v14 :: v50 
> │ > │     let v58 : string list = v16 :: v54 
> │ > │     let v62 : string list = v17 :: v58 
> │ > │     let v66 : string list = v18 :: v62 
> │ > │     let v70 : string list = v19 :: v66 
> │ > │     let v74 : string list = v20 :: v70 
> │ > │     let v78 : string list = v21 :: v74 
> │ > │     let v82 : string list = v22 :: v78 
> │ > │     let v86 : string list = v23 :: v82 
> │ > │     let v93 : (string list -> (string 
> [])) = List.toArray
> │ > │     let v94 : (string []) = v93 v86
> │ > │     let v97 : string = "ISTJ"
> │ > │     let v98 : string = "ISFJ"
> │ > │     let v99 : string = "INFJ"
> │ > │     let v100 : string = "INTJ"
> │ > │     let v101 : string = "ISTP"
> │ > │     let v102 : string = "ISFP"
> │ > │     let v103 : string = "INFP"
> │ > │     let v104 : string = "INTP"
> │ > │     let v105 : string = "ESTP"
> │ > │     let v106 : string = "ESFP"
> │ > │     let v107 : string = "ENFP"
> │ > │     let v108 : string = "ENTP"
> │ > │     let v109 : string = "ESTJ"
> │ > │     let v110 : string = "ESFJ"
> │ > │     let v111 : string = "ENFJ"
> │ > │     let v112 : string = "ENTJ"
> │ > │     let v113 : (string []) = [|v97; v98;
> v99; v100; v101; 
> │ > v102; v103; v104; v105; v106; v107; v108; v109; v110; v111;
> v112|]
> │ > │     let v115 : bool = v94 = v113 
> │ > │     let v119 : bool =
> │ > │         if v115 then
> │ > │             true
> │ > │         else
> │ > │             method1(v115)
> │ > │     let v120 : string = "__assert_eq'"
> │ > │     let v121 : string = method2(v120, 
> v94, v113)
> │ > │     let v123 : unit = ()
> │ > │     let v124 : (unit -> unit) = 
> closure1(v121)
> │ > │     let v125 : unit = (fun () -> v124 
> (); v123) ()
> │ > │     let v127 : bool = v119 = false
> │ > │     if v127 then
> │ > │         failwith<unit> v121
> │ > │ method0()
> │ > │ 
> │ > │ { name = __assert_eq'; actual = 
> [|"ISTJ"; "ISFJ"; "INFJ"; 
> │ > "INTJ"; "ISTP"; "ISFP"; "INFP"; "INTP"; "ESTP"; "ESFP";
> │ > │   "ENFP"; "ENTP"; "ESTJ"; "ESFJ"; 
> "ENFJ"; "ENTJ"|]; expected 
> │ > = [|"ISTJ"; "ISFJ"; "INFJ"; "INTJ"; "ISTP"; "ISFP"; "INFP";
> "INTP"; "ESTP"; 
> │ > "ESFP";
> │ > │   "ENFP"; "ENTP"; "ESTJ"; "ESFJ"; 
> "ENFJ"; "ENTJ"|] }
> │ > │ 
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > //// print_code
> │ > 
> │ > inl i_e =
> │ >     listm'.replicate 8i32 "I" ++ listm'.replicate 8i32 "E"
> │ > inl s_n =
> │ >     [[ "S"; "S"; "N"; "N" ]]
> │ >     |> listm'.replicate 4i32
> │ >     |> listm'.collect id
> │ > inl t_f =
> │ >     [[ "T"; "F"; "F"; "T" ]]
> │ >     |> listm'.replicate 4i32
> │ >     |> listm'.collect id
> │ > inl j_p =
> │ >     [[ "J"; "J"; "J"; "J" ]]
> │ >     ++ [[ "P"; "P"; "P"; "P" ]]
> │ >     ++ [[ "P"; "P"; "P"; "P" ]]
> │ >     ++ [[ "J"; "J"; "J"; "J" ]]
> │ > inl mbti =
> │ >     listm'.map4 (fun a b c d => $'$"{!a}{!b}{!c}{!d}"') i_e
> s_n t_f j_p
> │ > 
> │ > mbti
> │ > |> listm'.box
> │ > |> listm'.to_array'
> │ > |> _assert_eq' ;[[
> │ >     "ISTJ"; "ISFJ"; "INFJ"; "INTJ"
> │ >     "ISTP"; "ISFP"; "INFP"; "INTP"
> │ >     "ESTP"; "ESFP"; "ENFP"; "ENTP"
> │ >     "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ"
> │ > ]]
> │ > 
> │ > ── [ 317.94ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ type Mut0 = {mutable l0 : string}
> │ > │ let rec method1 (v0 : bool) : bool =
> │ > │     v0
> │ > │ and method3 () : string =
> │ > │     let v0 : string = ""
> │ > │     v0
> │ > │ and closure0 (v0 : Mut0, v1 : string) ()
> : unit =
> │ > │     let v2 : string = v0.l0
> │ > │     let v4 : string = v2 + v1 
> │ > │     v0.l0 <- v4
> │ > │     ()
> │ > │ and method2 (v0 : string, v1 : (string 
> []), v2 : (string []))
> │ > : string =
> │ > │     let v3 : string = method3()
> │ > │     let v4 : Mut0 = {l0 = v3} : Mut0
> │ > │     let v7 : string = "{ "
> │ > │     let v8 : string = $"{v7}"
> │ > │     let v16 : unit = ()
> │ > │     let v17 : (unit -> unit) = 
> closure0(v4, v8)
> │ > │     let v18 : unit = (fun () -> v17 (); 
> v16) ()
> │ > │     let v26 : string = "name"
> │ > │     let v27 : string = $"{v26}"
> │ > │     let v35 : unit = ()
> │ > │     let v36 : (unit -> unit) = 
> closure0(v4, v27)
> │ > │     let v37 : unit = (fun () -> v36 (); 
> v35) ()
> │ > │     let v45 : string = " = "
> │ > │     let v46 : string = $"{v45}"
> │ > │     let v54 : unit = ()
> │ > │     let v55 : (unit -> unit) = 
> closure0(v4, v46)
> │ > │     let v56 : unit = (fun () -> v55 (); 
> v54) ()
> │ > │     let v63 : string = $"{v0}"
> │ > │     let v71 : unit = ()
> │ > │     let v72 : (unit -> unit) = 
> closure0(v4, v63)
> │ > │     let v73 : unit = (fun () -> v72 (); 
> v71) ()
> │ > │     let v81 : string = "; "
> │ > │     let v82 : string = $"{v81}"
> │ > │     let v90 : unit = ()
> │ > │     let v91 : (unit -> unit) = 
> closure0(v4, v82)
> │ > │     let v92 : unit = (fun () -> v91 (); 
> v90) ()
> │ > │     let v100 : string = "actual"
> │ > │     let v101 : string = $"{v100}"
> │ > │     let v109 : unit = ()
> │ > │     let v110 : (unit -> unit) = 
> closure0(v4, v101)
> │ > │     let v111 : unit = (fun () -> v110 
> (); v109) ()
> │ > │     let v118 : string = $"{v45}"
> │ > │     let v126 : unit = ()
> │ > │     let v127 : (unit -> unit) = 
> closure0(v4, v118)
> │ > │     let v128 : unit = (fun () -> v127 
> (); v126) ()
> │ > │     let v136 : string = $"%A{v1}"
> │ > │     let v140 : string = $"{v136}"
> │ > │     let v148 : unit = ()
> │ > │     let v149 : (unit -> unit) = 
> closure0(v4, v140)
> │ > │     let v150 : unit = (fun () -> v149 
> (); v148) ()
> │ > │     let v157 : string = $"{v81}"
> │ > │     let v165 : unit = ()
> │ > │     let v166 : (unit -> unit) = 
> closure0(v4, v157)
> │ > │     let v167 : unit = (fun () -> v166 
> (); v165) ()
> │ > │     let v175 : string = "expected"
> │ > │     let v176 : string = $"{v175}"
> │ > │     let v184 : unit = ()
> │ > │     let v185 : (unit -> unit) = 
> closure0(v4, v176)
> │ > │     let v186 : unit = (fun () -> v185 
> (); v184) ()
> │ > │     let v193 : string = $"{v45}"
> │ > │     let v201 : unit = ()
> │ > │     let v202 : (unit -> unit) = 
> closure0(v4, v193)
> │ > │     let v203 : unit = (fun () -> v202 
> (); v201) ()
> │ > │     let v211 : string = $"%A{v2}"
> │ > │     let v215 : string = $"{v211}"
> │ > │     let v223 : unit = ()
> │ > │     let v224 : (unit -> unit) = 
> closure0(v4, v215)
> │ > │     let v225 : unit = (fun () -> v224 
> (); v223) ()
> │ > │     let v233 : string = " }"
> │ > │     let v234 : string = $"{v233}"
> │ > │     let v242 : unit = ()
> │ > │     let v243 : (unit -> unit) = 
> closure0(v4, v234)
> │ > │     let v244 : unit = (fun () -> v243 
> (); v242) ()
> │ > │     let v250 : string = v4.l0
> │ > │     v250
> │ > │ and closure1 (v0 : string) () : unit =
> │ > │     let v1 : (string -> unit) = 
> System.Console.WriteLine
> │ > │     v1 v0
> │ > │ and method0 () : unit =
> │ > │     let v0 : string = "I"
> │ > │     let v1 : string = "S"
> │ > │     let v2 : string = "T"
> │ > │     let v3 : string = "J"
> │ > │     let v4 : string = 
> $"{v0}{v1}{v2}{v3}"
> │ > │     let v5 : string = "F"
> │ > │     let v6 : string = 
> $"{v0}{v1}{v5}{v3}"
> │ > │     let v7 : string = "N"
> │ > │     let v8 : string = 
> $"{v0}{v7}{v5}{v3}"
> │ > │     let v9 : string = 
> $"{v0}{v7}{v2}{v3}"
> │ > │     let v10 : string = "P"
> │ > │     let v11 : string = 
> $"{v0}{v1}{v2}{v10}"
> │ > │     let v12 : string = 
> $"{v0}{v1}{v5}{v10}"
> │ > │     let v13 : string = 
> $"{v0}{v7}{v5}{v10}"
> │ > │     let v14 : string = 
> $"{v0}{v7}{v2}{v10}"
> │ > │     let v15 : string = "E"
> │ > │     let v16 : string = 
> $"{v15}{v1}{v2}{v10}"
> │ > │     let v17 : string = 
> $"{v15}{v1}{v5}{v10}"
> │ > │     let v18 : string = 
> $"{v15}{v7}{v5}{v10}"
> │ > │     let v19 : string = 
> $"{v15}{v7}{v2}{v10}"
> │ > │     let v20 : string = 
> $"{v15}{v1}{v2}{v3}"
> │ > │     let v21 : string = 
> $"{v15}{v1}{v5}{v3}"
> │ > │     let v22 : string = 
> $"{v15}{v7}{v5}{v3}"
> │ > │     let v23 : string = 
> $"{v15}{v7}{v2}{v3}"
> │ > │     let v24 : string list = []
> │ > │     let v26 : string list = v23 :: v24 
> │ > │     let v30 : string list = v22 :: v26 
> │ > │     let v34 : string list = v21 :: v30 
> │ > │     let v38 : string list = v20 :: v34 
> │ > │     let v42 : string list = v19 :: v38 
> │ > │     let v46 : string list = v18 :: v42 
> │ > │     let v50 : string list = v17 :: v46 
> │ > │     let v54 : string list = v16 :: v50 
> │ > │     let v58 : string list = v14 :: v54 
> │ > │     let v62 : string list = v13 :: v58 
> │ > │     let v66 : string list = v12 :: v62 
> │ > │     let v70 : string list = v11 :: v66 
> │ > │     let v74 : string list = v9 :: v70 
> │ > │     let v78 : string list = v8 :: v74 
> │ > │     let v82 : string list = v6 :: v78 
> │ > │     let v86 : string list = v4 :: v82 
> │ > │     let v93 : (string list -> (string 
> [])) = List.toArray
> │ > │     let v94 : (string []) = v93 v86
> │ > │     let v97 : string = "ISTJ"
> │ > │     let v98 : string = "ISFJ"
> │ > │     let v99 : string = "INFJ"
> │ > │     let v100 : string = "INTJ"
> │ > │     let v101 : string = "ISTP"
> │ > │     let v102 : string = "ISFP"
> │ > │     let v103 : string = "INFP"
> │ > │     let v104 : string = "INTP"
> │ > │     let v105 : string = "ESTP"
> │ > │     let v106 : string = "ESFP"
> │ > │     let v107 : string = "ENFP"
> │ > │     let v108 : string = "ENTP"
> │ > │     let v109 : string = "ESTJ"
> │ > │     let v110 : string = "ESFJ"
> │ > │     let v111 : string = "ENFJ"
> │ > │     let v112 : string = "ENTJ"
> │ > │     let v113 : (string []) = [|v97; v98;
> v99; v100; v101; 
> │ > v102; v103; v104; v105; v106; v107; v108; v109; v110; v111;
> v112|]
> │ > │     let v115 : bool = v94 = v113 
> │ > │     let v119 : bool =
> │ > │         if v115 then
> │ > │             true
> │ > │         else
> │ > │             method1(v115)
> │ > │     let v120 : string = "__assert_eq'"
> │ > │     let v121 : string = method2(v120, 
> v94, v113)
> │ > │     let v123 : unit = ()
> │ > │     let v124 : (unit -> unit) = 
> closure1(v121)
> │ > │     let v125 : unit = (fun () -> v124 
> (); v123) ()
> │ > │     let v127 : bool = v119 = false
> │ > │     if v127 then
> │ > │         failwith<unit> v121
> │ > │ method0()
> │ > │ 
> │ > │ { name = __assert_eq'; actual = 
> [|"ISTJ"; "ISFJ"; "INFJ"; 
> │ > "INTJ"; "ISTP"; "ISFP"; "INFP"; "INTP"; "ESTP"; "ESFP";
> │ > │   "ENFP"; "ENTP"; "ESTJ"; "ESFJ"; 
> "ENFJ"; "ENTJ"|]; expected 
> │ > = [|"ISTJ"; "ISFJ"; "INFJ"; "INTJ"; "ISTP"; "ISFP"; "INFP";
> "INTP"; "ESTP"; 
> │ > "ESFP";
> │ > │   "ENFP"; "ENTP"; "ESTJ"; "ESFJ"; 
> "ENFJ"; "ENTJ"|] }
> │ > │ 
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > //// test
> │ > //// print_code
> │ > 
> │ > fun i =>
> │ >     inl i_e =
> │ >         if i < 8
> │ >         then "I"
> │ >         else "E"
> │ >     inl s_n = 
> │ >         inl group = (i / 2) % 2
> │ >         if group = 0
> │ >         then "S"
> │ >         else "N"
> │ >     inl t_f =
> │ >         match i % 4 with
> │ >         | 0 => "T"
> │ >         | 1 => "F"
> │ >         | 2 => "F"
> │ >         | _ => "T"
> │ >     inl j_p =
> │ >         if i < 4
> │ >         then "J"
> │ >         elif i < 12
> │ >         then "P"
> │ >         else "J"
> │ >     $'$"{!i_e}{!s_n}{!t_f}{!j_p}"'
> │ > |> listm.init 16i32
> │ > |> listm'.box
> │ > |> listm'.to_array'
> │ > |> _assert_eq' ;[[
> │ >     "ISTJ"; "ISFJ"; "INFJ"; "INTJ"
> │ >     "ISTP"; "ISFP"; "INFP"; "INTP"
> │ >     "ESTP"; "ESFP"; "ENFP"; "ENTP"
> │ >     "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ"
> │ > ]]
> │ > 
> │ > ── [ 312.77ms - stdout ] 
> ───────────────────────────────────────────────────────
> │ > │ type Mut0 = {mutable l0 : string}
> │ > │ let rec method1 (v0 : bool) : bool =
> │ > │     v0
> │ > │ and method3 () : string =
> │ > │     let v0 : string = ""
> │ > │     v0
> │ > │ and closure0 (v0 : Mut0, v1 : string) ()
> : unit =
> │ > │     let v2 : string = v0.l0
> │ > │     let v4 : string = v2 + v1 
> │ > │     v0.l0 <- v4
> │ > │     ()
> │ > │ and method2 (v0 : string, v1 : (string 
> []), v2 : (string []))
> │ > : string =
> │ > │     let v3 : string = method3()
> │ > │     let v4 : Mut0 = {l0 = v3} : Mut0
> │ > │     let v7 : string = "{ "
> │ > │     let v8 : string = $"{v7}"
> │ > │     let v16 : unit = ()
> │ > │     let v17 : (unit -> unit) = 
> closure0(v4, v8)
> │ > │     let v18 : unit = (fun () -> v17 (); 
> v16) ()
> │ > │     let v26 : string = "name"
> │ > │     let v27 : string = $"{v26}"
> │ > │     let v35 : unit = ()
> │ > │     let v36 : (unit -> unit) = 
> closure0(v4, v27)
> │ > │     let v37 : unit = (fun () -> v36 (); 
> v35) ()
> │ > │     let v45 : string = " = "
> │ > │     let v46 : string = $"{v45}"
> │ > │     let v54 : unit = ()
> │ > │     let v55 : (unit -> unit) = 
> closure0(v4, v46)
> │ > │     let v56 : unit = (fun () -> v55 (); 
> v54) ()
> │ > │     let v63 : string = $"{v0}"
> │ > │     let v71 : unit = ()
> │ > │     let v72 : (unit -> unit) = 
> closure0(v4, v63)
> │ > │     let v73 : unit = (fun () -> v72 (); 
> v71) ()
> │ > │     let v81 : string = "; "
> │ > │     let v82 : string = $"{v81}"
> │ > │     let v90 : unit = ()
> │ > │     let v91 : (unit -> unit) = 
> closure0(v4, v82)
> │ > │     let v92 : unit = (fun () -> v91 (); 
> v90) ()
> │ > │     let v100 : string = "actual"
> │ > │     let v101 : string = $"{v100}"
> │ > │     let v109 : unit = ()
> │ > │     let v110 : (unit -> unit) = 
> closure0(v4, v101)
> │ > │     let v111 : unit = (fun () -> v110 
> (); v109) ()
> │ > │     let v118 : string = $"{v45}"
> │ > │     let v126 : unit = ()
> │ > │     let v127 : (unit -> unit) = 
> closure0(v4, v118)
> │ > │     let v128 : unit = (fun () -> v127 
> (); v126) ()
> │ > │     let v136 : string = $"%A{v1}"
> │ > │     let v140 : string = $"{v136}"
> │ > │     let v148 : unit = ()
> │ > │     let v149 : (unit -> unit) = 
> closure0(v4, v140)
> │ > │     let v150 : unit = (fun () -> v149 
> (); v148) ()
> │ > │     let v157 : string = $"{v81}"
> │ > │     let v165 : unit = ()
> │ > │     let v166 : (unit -> unit) = 
> closure0(v4, v157)
> │ > │     let v167 : unit = (fun () -> v166 
> (); v165) ()
> │ > │     let v175 : string = "expected"
> │ > │     let v176 : string = $"{v175}"
> │ > │     let v184 : unit = ()
> │ > │     let v185 : (unit -> unit) = 
> closure0(v4, v176)
> │ > │     let v186 : unit = (fun () -> v185 
> (); v184) ()
> │ > │     let v193 : string = $"{v45}"
> │ > │     let v201 : unit = ()
> │ > │     let v202 : (unit -> unit) = 
> closure0(v4, v193)
> │ > │     let v203 : unit = (fun () -> v202 
> (); v201) ()
> │ > │     let v211 : string = $"%A{v2}"
> │ > │     let v215 : string = $"{v211}"
> │ > │     let v223 : unit = ()
> │ > │     let v224 : (unit -> unit) = 
> closure0(v4, v215)
> │ > │     let v225 : unit = (fun () -> v224 
> (); v223) ()
> │ > │     let v233 : string = " }"
> │ > │     let v234 : string = $"{v233}"
> │ > │     let v242 : unit = ()
> │ > │     let v243 : (unit -> unit) = 
> closure0(v4, v234)
> │ > │     let v244 : unit = (fun () -> v243 
> (); v242) ()
> │ > │     let v250 : string = v4.l0
> │ > │     v250
> │ > │ and closure1 (v0 : string) () : unit =
> │ > │     let v1 : (string -> unit) = 
> System.Console.WriteLine
> │ > │     v1 v0
> │ > │ and method0 () : unit =
> │ > │     let v0 : string = "I"
> │ > │     let v1 : string = "S"
> │ > │     let v2 : string = "T"
> │ > │     let v3 : string = "J"
> │ > │     let v4 : string = 
> $"{v0}{v1}{v2}{v3}"
> │ > │     let v5 : string = "F"
> │ > │     let v6 : string = 
> $"{v0}{v1}{v5}{v3}"
> │ > │     let v7 : string = "N"
> │ > │     let v8 : string = 
> $"{v0}{v7}{v5}{v3}"
> │ > │     let v9 : string = 
> $"{v0}{v7}{v2}{v3}"
> │ > │     let v10 : string = "P"
> │ > │     let v11 : string = 
> $"{v0}{v1}{v2}{v10}"
> │ > │     let v12 : string = 
> $"{v0}{v1}{v5}{v10}"
> │ > │     let v13 : string = 
> $"{v0}{v7}{v5}{v10}"
> │ > │     let v14 : string = 
> $"{v0}{v7}{v2}{v10}"
> │ > │     let v15 : string = "E"
> │ > │     let v16 : string = 
> $"{v15}{v1}{v2}{v10}"
> │ > │     let v17 : string = 
> $"{v15}{v1}{v5}{v10}"
> │ > │     let v18 : string = 
> $"{v15}{v7}{v5}{v10}"
> │ > │     let v19 : string = 
> $"{v15}{v7}{v2}{v10}"
> │ > │     let v20 : string = 
> $"{v15}{v1}{v2}{v3}"
> │ > │     let v21 : string = 
> $"{v15}{v1}{v5}{v3}"
> │ > │     let v22 : string = 
> $"{v15}{v7}{v5}{v3}"
> │ > │     let v23 : string = 
> $"{v15}{v7}{v2}{v3}"
> │ > │     let v24 : string list = []
> │ > │     let v26 : string list = v23 :: v24 
> │ > │     let v30 : string list = v22 :: v26 
> │ > │     let v34 : string list = v21 :: v30 
> │ > │     let v38 : string list = v20 :: v34 
> │ > │     let v42 : string list = v19 :: v38 
> │ > │     let v46 : string list = v18 :: v42 
> │ > │     let v50 : string list = v17 :: v46 
> │ > │     let v54 : string list = v16 :: v50 
> │ > │     let v58 : string list = v14 :: v54 
> │ > │     let v62 : string list = v13 :: v58 
> │ > │     let v66 : string list = v12 :: v62 
> │ > │     let v70 : string list = v11 :: v66 
> │ > │     let v74 : string list = v9 :: v70 
> │ > │     let v78 : string list = v8 :: v74 
> │ > │     let v82 : string list = v6 :: v78 
> │ > │     let v86 : string list = v4 :: v82 
> │ > │     let v93 : (string list -> (string 
> [])) = List.toArray
> │ > │     let v94 : (string []) = v93 v86
> │ > │     let v97 : string = "ISTJ"
> │ > │     let v98 : string = "ISFJ"
> │ > │     let v99 : string = "INFJ"
> │ > │     let v100 : string = "INTJ"
> │ > │     let v101 : string = "ISTP"
> │ > │     let v102 : string = "ISFP"
> │ > │     let v103 : string = "INFP"
> │ > │     let v104 : string = "INTP"
> │ > │     let v105 : string = "ESTP"
> │ > │     let v106 : string = "ESFP"
> │ > │     let v107 : string = "ENFP"
> │ > │     let v108 : string = "ENTP"
> │ > │     let v109 : string = "ESTJ"
> │ > │     let v110 : string = "ESFJ"
> │ > │     let v111 : string = "ENFJ"
> │ > │     let v112 : string = "ENTJ"
> │ > │     let v113 : (string []) = [|v97; v98;
> v99; v100; v101; 
> │ > v102; v103; v104; v105; v106; v107; v108; v109; v110; v111;
> v112|]
> │ > │     let v115 : bool = v94 = v113 
> │ > │     let v119 : bool =
> │ > │         if v115 then
> │ > │             true
> │ > │         else
> │ > │             method1(v115)
> │ > │     let v120 : string = "__assert_eq'"
> │ > │     let v121 : string = method2(v120, 
> v94, v113)
> │ > │     let v123 : unit = ()
> │ > │     let v124 : (unit -> unit) = 
> closure1(v121)
> │ > │     let v125 : unit = (fun () -> v124 
> (); v123) ()
> │ > │     let v127 : bool = v119 = false
> │ > │     if v127 then
> │ > │         failwith<unit> v121
> │ > │ method0()
> │ > │ 
> │ > │ { name = __assert_eq'; actual = 
> [|"ISTJ"; "ISFJ"; "INFJ"; 
> │ > "INTJ"; "ISTP"; "ISFP"; "INFP"; "INTP"; "ESTP"; "ESFP";
> │ > │   "ENFP"; "ENTP"; "ESTJ"; "ESFJ"; 
> "ENFJ"; "ENTJ"|]; expected 
> │ > = [|"ISTJ"; "ISFJ"; "INFJ"; "INTJ"; "ISTP"; "ISFP"; "INFP";
> "INTP"; "ESTP"; 
> │ > "ESFP";
> │ > │   "ENFP"; "ENTP"; "ESTJ"; "ESFJ"; 
> "ENFJ"; "ENTJ"|] }
> │ > │ 
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > type PhonologicalFeature =
> │ >     | VowelFeature of
> │ >         height: Height
> │ >         * backness: Backness
> │ >         * roundedness: Roundedness
> │ >         * tone: Option<Tone>
> │ >         * stress: Option<Stress>
> │ >         * length: Option<Length>
> │ >     | ConsonantFeature of
> │ >         place: PlaceOfArticulation
> │ >         * manner: MannerOfArticulation
> │ >         * voicing: Voicing
> │ >         * length: Option<Length>
> │ >     | VowelHarmonyFeature
> │ >     | PitchAccentFeature
> │ > 
> │ > and Stress = Primary | Secondary
> │ > and Length = Long | Short | HalfLong
> │ > 
> │ > and Height =
> │ >     | High | NearHigh | HighMid
> │ >     | Mid | LowMid | NearLow
> │ >     | Low
> │ > 
> │ > and Backness = Front | Central | Back
> │ > 
> │ > and Roundedness = Rounded | Unrounded
> │ > 
> │ > and PlaceOfArticulation =
> │ >     | Bilabial | Labiodental | Dental
> │ >     | Alveolar | Postalveolar | Retroflex
> │ >     | Palatal | Velar | Uvular
> │ >     | Pharyngeal | Epiglottal | Glottal
> │ > 
> │ > and MannerOfArticulation =
> │ >     | Plosive | Nasal | Trill
> │ >     | TapOrFlap | Fricative | LateralFricative
> │ >     | Approximant | LateralApproximant
> │ > 
> │ > and Voicing = Voiced | Voiceless
> │ > 
> │ > and SecondaryArticulation =
> │ >     | Labialization | Palatalization | Velarization
> │ >     | Pharyngealization | Aspiration
> │ > 
> │ > and Tone =
> │ >     | LevelTone of int
> │ >     | ContourTone of int list
> │ > 
> │ > and MorphologicalFeature =
> │ >     | RootFeature of string
> │ >     | AffixFeature of AffixType * string
> │ >     | IncorporationFeature of string * MorphologicalFeature
> │ >     | NonConcatenativePattern of string * string
> │ >     | AgglutinativeAffixFeature of AgglutinativeAffixType *
> string
> │ >     | HonorificFeature of HonorificType * string
> │ > 
> │ > and AgglutinativeAffixType = Suffix | Prefix
> │ > 
> │ > and HonorificType = VerbHonorific | NounHonorific
> │ > 
> │ > and AffixType =
> │ >     | Prefix | Suffix | Infix
> │ >     | Circumfix
> │ > 
> │ > type SyntacticFeature =
> │ >     | WordFeature of MorphologicalFeature list * 
> LexicalCategory
> │ >     | PhraseFeature of PhraseType * SyntacticFeature list
> │ >     | GrammaticalRelation of GrammaticalRelationType * 
> SyntacticFeature list
> │ >     | SOVOrderFeature
> │ >     | TopicCommentFeature
> │ > 
> │ > and GrammaticalRelationType =
> │ >     | Ergative | Absolutive | Nominative
> │ >     | Accusative
> │ > 
> │ > and LexicalCategory =
> │ >     | Noun | Verb | Adjective
> │ >     | Adverb | Pronoun | Preposition
> │ >     | Conjunction | Determiner | Interjection
> │ > 
> │ > and PhraseType =
> │ >     | NP | VP | AP
> │ >     | PP | CP
> │ > 
> │ > and SemanticFeature =
> │ >     | Meaning of string
> │ >     | SemanticRole of SemanticRoleType * SemanticFeature
> │ > 
> │ > and SemanticRoleType =
> │ >     | Agent | Patient | Instrument
> │ >     | Location | Time | Cause
> │ > 
> │ > and PragmaticFeature =
> │ >     | UseContext of string
> │ >     | PolitenessLevel of Politeness
> │ >     | SpeechAct of SpeechActType
> │ >     | SpeechLevel of SpeechLevelType
> │ > 
> │ > and Politeness = Formal | Informal | Neutral
> │ > 
> │ > and SpeechActType =
> │ >     | Assertive | Directive | Commissive
> │ >     | Expressive | Declarative
> │ > 
> │ > and SpeechLevelType =
> │ >     | FormalHigh | FormalLow | InformalHigh
> │ >     | InformalLow | Neutral
> │ > 
> │ > type LinguisticFeature =
> │ >     | Phonological of PhonologicalFeature
> │ >     | Morphological of MorphologicalFeature
> │ >     | Syntactic of SyntacticFeature
> │ >     | Semantic of SemanticFeature
> │ >     | Pragmatic of PragmaticFeature
> │ > 
> │ > type LanguageConstruct =
> │ >     | LanguageElement of LinguisticFeature
> │ >     | LanguageStructure of LanguageConstruct list
> │ >     | TranslationElement of TranslationFeature
> │ > 
> │ > and TranslationFeature =
> │ >     | LinkedPhonological of PhonologicalFeature * 
> PhonologicalFeature
> │ >     | LinkedMorphological of MorphologicalFeature * 
> MorphologicalFeature
> │ >     | LinkedSyntactic of SyntacticFeature * 
> SyntacticFeature
> │ >     | LinkedSemantic of SemanticFeature * SemanticFeature
> │ > 
> │ > type Discourse = DiscourseUnit of LanguageConstruct list
> │ > 
> │ > type LanguageModel =
> │ >     | Model of discourse: Discourse
> │ > 
> │ > ── fsharp 
> ──────────────────────────────────────────────────────────────────────
> │ > let testEnglish =
> │ >     Model(
> │ >         DiscourseUnit [[
> │ >             LanguageElement (Phonological (ConsonantFeature
> (Alveolar, Nasal, 
> │ > Voiced, Some(HalfLong))));
> │ >             LanguageElement (Phonological (VowelFeature 
> (High, Front, Unrounded,
> │ > Some(LevelTone 1), Some(Primary), Some(Short))));
> │ >             LanguageElement (Phonological (VowelFeature 
> (Low, Front, Unrounded, 
> │ > Some(LevelTone 2), Some(Secondary), Some(Long))));
> │ >             LanguageElement (Phonological (ConsonantFeature
> (Velar, Plosive, 
> │ > Voiceless, Some(HalfLong))));
> │ >             LanguageElement (Morphological (RootFeature 
> "I"));
> │ >             LanguageElement (Morphological (RootFeature 
> "see"));
> │ >             LanguageElement (Morphological (RootFeature 
> "a"));
> │ >             LanguageElement (Morphological (RootFeature 
> "cat"));
> │ >             LanguageElement (Syntactic (PhraseFeature (NP, 
> [[WordFeature 
> │ > ([[RootFeature "I"]], Pronoun)]])));
> │ >             LanguageElement (Syntactic (PhraseFeature (VP, 
> [[WordFeature 
> │ > ([[RootFeature "see"]], Verb)]])));
> │ >             LanguageElement (Syntactic (PhraseFeature (NP, 
> [[WordFeature 
> │ > ([[RootFeature "a"; RootFeature "cat"]], Noun)]])));
> │ >             LanguageElement (Semantic (Meaning "Perception 
> act of a feline by 
> │ > the speaker"));
> │ >             LanguageElement (Pragmatic (UseContext 
> "Statement of an action being
> │ > observed"))
> │ >         ]]
> │ >     )
> │ > 
> │ > let testPortuguese =
> │ >     Model(
> │ >         DiscourseUnit [[
> │ >             LanguageElement (Phonological (VowelFeature 
> (High, Front, Unrounded,
> │ > Some(LevelTone 1), Some(Primary), Some(Short))));
> │ >             LanguageElement (Phonological (VowelFeature 
> (Low, Front, Unrounded, 
> │ > Some(LevelTone 2), Some(Secondary), Some(Long))));
> │ >             LanguageElement (Phonological (VowelFeature 
> (Mid, Back, Rounded, 
> │ > Some(LevelTone 3), Some(Primary), Some(Short))));
> │ >             LanguageElement (Phonological (ConsonantFeature
> (Velar, Plosive, 
> │ > Voiceless, Some(HalfLong))));
> │ >             LanguageElement (Morphological (RootFeature 
> "Eu"));
> │ >             LanguageElement (Morphological (RootFeature 
> "ver" |> ignore; 
> │ > AffixFeature (Suffix, "o")));
> │ >             LanguageElement (Morphological (RootFeature 
> "um"));
> │ >             LanguageElement (Morphological (RootFeature 
> "gato"));
> │ >             LanguageElement (Syntactic (PhraseFeature (NP, 
> [[WordFeature 
> │ > ([[RootFeature "Eu"]], Pronoun)]])));
> │ >             LanguageElement (Syntactic (PhraseFeature (VP, 
> [[WordFeature 
> │ > ([[RootFeature "vejo"]], Verb)]])));
> │ >             LanguageElement (Syntactic (PhraseFeature (NP, 
> [[WordFeature 
> │ > ([[RootFeature "um"; RootFeature "gato"]], Noun)]])));
> │ >             LanguageElement (Semantic (Meaning "Ação de 
> percepção de um felino 
> │ > pelo falante"));
> │ >             LanguageElement (Pragmatic (UseContext 
> "Declaração de uma ação sendo
> │ > observada"))
> │ >         ]]
> │ >     )
> │ > 
> │ > let testKorean =
> │ >     Model(
> │ >         DiscourseUnit [[
> │ >             LanguageElement (Phonological (ConsonantFeature
> (Alveolar, Nasal, 
> │ > Voiced, Some(Short))));
> │ >             LanguageElement (Phonological (VowelFeature 
> (High, Back, Rounded, 
> │ > None, None, Some(Short))));
> │ >             LanguageElement (Phonological (VowelFeature 
> (Mid, Front, Unrounded, 
> │ > None, None, Some(Long))));
> │ >             LanguageElement (Phonological (ConsonantFeature
> (Bilabial, Plosive, 
> │ > Voiceless, Some(Short))));
> │ >             LanguageElement (Morphological (RootFeature 
> "나"));
> │ >             LanguageElement (Morphological (RootFeature 
> "보다"));
> │ >             LanguageElement (Morphological (AffixFeature 
> (Suffix, "아")));
> │ >             LanguageElement (Morphological (RootFeature 
> "고양이"));
> │ >             LanguageElement (Syntactic (PhraseFeature (NP, 
> [[WordFeature 
> │ > ([[RootFeature "나"]], Pronoun)]])));
> │ >             LanguageElement (Syntactic (PhraseFeature (VP, 
> [[WordFeature 
> │ > ([[RootFeature "보다"; AffixFeature (Suffix, "아")]], 
> Verb)]])));
> │ >             LanguageElement (Syntactic (PhraseFeature (NP, 
> [[WordFeature 
> │ > ([[RootFeature "고양이"]], Noun)]])));
> │ >             LanguageElement (Semantic (Meaning "화자에 의한
> 고양이의 관찰 
> │ > 행위"));
> │ >             LanguageElement (Pragmatic (UseContext 
> "관찰되고 있는 행동의 진술"))
> │ >         ]]
> │ >     )
> │ > 
> │ > ── markdown 
> ────────────────────────────────────────────────────────────────────
> │ > │ ## main
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl main (_args : array_base string) =
> │ >     0i32
> │ > 
> │ > inl main () =
> │ >     $'let main args = !main args' : ()
> │ > 
> │ > ── spiral 
> ──────────────────────────────────────────────────────────────────────
> │ > inl app () =
> │ >     "test" |> console.write_line
> │ >     0i32
> │ > 
> │ > inl main () =
> │ >     print_static "<test>"
> │ > 
> │ >     app
> │ >     |> dyn
> │ >     |> ignore
> │ > 
> │ >     print_static "</test>"
> │ 00:00:11 v #3 runtime.execute_with_options / result / {
> exit_code = 0; std_trace_length = 40633 }
> │ 00:00:11 d #4 runtime.execute_with_options / { 
> file_name = jupyter; arguments = ["nbconvert", 
> "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb", 
> "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter 
> nbconvert 
> "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb" --to 
> html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables
> = Array(MutCell([])); on_line = None; stdin = None; trace = true; 
> working_directory = None; stderr = true } }
> │ 00:00:12 v #5 ! [NbConvertApp] Converting notebook 
> /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb to html
> │ 00:00:12 v #6 ! 
> /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbformat/__
> init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will 
> become a hard error in future nbformat versions. You may want to use 
> `normalize()` on your notebooks before validations (available since nbformat 
> 5.1.4). Previous versions of nbformat are fixing this issue transparently, and 
> will stop doing so in the future.
> │ 00:00:12 v #7 !   validate(nb)
> │ 00:00:12 v #8 ! 
> /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbconvert/f
> ilters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on
> Python 3
> │ 00:00:12 v #9 !   return _pygments_highlight(
> │ 00:00:13 v #10 ! [NbConvertApp] Writing 341234 bytes to
> /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.html
> │ 00:00:13 v #11 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 916 }
> │ 00:00:13 d #12 spiral.run / dib / jupyter nbconvert / {
> exit_code = 0; jupyter_result_length = 916 }
> │ 00:00:13 d #13 runtime.execute_with_options / { 
> file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 
> '/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.html'; 
> (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { 
> $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = 
> pwsh -c "$counter = 1; $path = 
> '/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.html'; 
> (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { 
> $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = 
> None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; 
> trace = true; working_directory = None; stderr = true } }
> │ 00:00:13 v #14 runtime.execute_with_options / result / 
> { exit_code = 0; std_trace_length = 0 }
> │ 00:00:13 d #15 spiral.run / dib / html cell ids / { 
> exit_code = 0; pwsh_replace_html_result_length = 0 }
> │ 00:00:13 d #16 spiral.run / dib / { exit_code = 0; 
> result_length = 41608 }
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### parse the .dib file into .spi format with dibparser
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> { . ../../../../apps/parser/dist/DibParser$(_exe) test.dib spi } | Invoke-Block
> 
> ── [ 363.83ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:00:00 d #1 writeDibCode / output: Spi / path: 
> test.dib
> │ 00:00:00 d #2 parseDibCode / output: Spi / file: 
> test.dib
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### build .fsx file from .spi using supervisor
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> { . ../../../../apps/spiral/dist/Supervisor$(_exe) --build-file test.spi 
> test.fsx } | Invoke-Block
> 
> ── [ 3.21s - stdout ] ──────────────────────────────────────────────────────────
> │ <test>
> │ </test>
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## compile and format the project
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### compile project with fable targeting optimized rust
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> dotnet fable --optimize --lang rs --extension .rs
> 
> ── [ 4.38s - stdout ] ──────────────────────────────────────────────────────────
> │ Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha)
> │ 
> │ Thanks to the contributor! @njlr
> │ Stand with Ukraine! https://standwithukraine.com.ua/
> │ 
> │ Parsing test.fsproj...
> │ Project and references (1 source files) parsed in 2224ms
> │ 
> │ Started Fable compilation...
> │ 
> │ Fable compilation finished in 1103ms
> │ 
> │ ./test.fsx(11,0): (11,2) warning FABLE: For Rust, support 
> for F# static and module do bindings is disabled by default. It can be enabled 
> with the 'static_do_bindings' feature. Use at your own risk!
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### fix formatting issues in the .rs file using regex and 
> set-content
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> (Get-Content test.rs) `
>     -replace [[regex]]::Escape("),);"), "));" `
>     | FixRust `
> | Set-Content test.rs
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### format the rust code using cargo fmt
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> cargo fmt --
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## build and test the project
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### build the project in release mode using nightly rust 
> compiler
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> cargo build --release
> 
> ── [ 10.21s - stdout ] ─────────────────────────────────────────────────────────
> │ warning: 
> /home/runner/work/polyglot/polyglot/apps/plot/Cargo.toml: the cargo feature 
> `edition2024` has been stabilized in the 1.85 release and is no longer necessary
> to be listed in the manifest
> │   See 
> https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel
> d for more information about using this feature.
> │ warning: 
> /home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/Cargo.toml: the cargo 
> feature `edition2024` has been stabilized in the 1.85 release and is no longer 
> necessary to be listed in the manifest
> │   See 
> https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel
> d for more information about using this feature.
> │ warning: 
> /home/runner/work/polyglot/polyglot/examples/rust/exercism/Cargo.toml: the cargo
> feature `edition2024` has been stabilized in the 1.85 release and is no longer 
> necessary to be listed in the manifest
> │   See 
> https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel
> d for more information about using this feature.
> │ warning: 
> /home/runner/work/polyglot/polyglot/lib/math/Cargo.toml: the cargo feature 
> `edition2024` has been stabilized in the 1.85 release and is no longer necessary
> to be listed in the manifest
> │   See 
> https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel
> d for more information about using this feature.
> │ warning: 
> /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/Cargo.toml: the cargo 
> feature `edition2024` has been stabilized in the 1.85 release and is no longer 
> necessary to be listed in the manifest
> │   See 
> https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel
> d for more information about using this feature.
> │ warning: 
> /home/runner/work/polyglot/polyglot/apps/chat/contract/Cargo.toml: the cargo 
> feature `edition2024` has been stabilized in the 1.85 release and is no longer 
> necessary to be listed in the manifest
> │   See 
> https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel
> d for more information about using this feature.
> │ warning: 
> /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/Cargo.toml: the 
> cargo feature `edition2024` has been stabilized in the 1.85 release and is no 
> longer necessary to be listed in the manifest
> │   See 
> https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel
> d for more information about using this feature.
> │ warning: 
> /home/runner/work/polyglot/polyglot/apps/chat/contract/tests/Cargo.toml: the 
> cargo feature `edition2024` has been stabilized in the 1.85 release and is no 
> longer necessary to be listed in the manifest
> │   See 
> https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel
> d for more information about using this feature.
> │    Compiling syn v2.0.90
> │    Compiling byteorder v1.5.0
> │    Compiling getrandom v0.2.15
> │    Compiling linux-raw-sys v0.4.14
> │    Compiling rand_core v0.6.4
> │    Compiling num-traits v0.2.19
> │    Compiling once_cell v1.20.2
> │    Compiling rustix v0.38.42
> │    Compiling libm v0.2.11
> │    Compiling wait-timeout v0.2.0
> │    Compiling quick-error v1.2.3
> │    Compiling bit-vec v0.6.3
> │    Compiling bit-set v0.5.3
> │    Compiling rand_xorshift v0.3.0
> │    Compiling memchr v2.7.4
> │    Compiling unarray v0.1.4
> │    Compiling fable_library_rust v0.1.0 
> (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-
> rust)
> │    Compiling nom v7.1.3
> │    Compiling zerocopy-derive v0.7.35
> │    Compiling tempfile v3.14.0
> │    Compiling zerocopy v0.7.35
> │    Compiling rusty-fork v0.3.0
> │    Compiling thiserror-impl v1.0.69
> │    Compiling ppv-lite86 v0.2.20
> │    Compiling rand_chacha v0.3.1
> │    Compiling rand v0.8.5
> │    Compiling thiserror v1.0.69
> │    Compiling proptest v1.5.0
> │    Compiling spiral_temp_test v0.0.1 
> (/home/runner/work/polyglot/polyglot/apps/spiral/temp/test)
> │     Finished `release` profile [optimized] target(s) 
> in 10.15s
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### run release tests with output enabled
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> { cargo test --release -- --show-output } | Invoke-Block
> 
> ── [ 14.50s - stdout ] ─────────────────────────────────────────────────────────
> │ warning: 
> /home/runner/work/polyglot/polyglot/apps/chat/contract/tests/Cargo.toml: the 
> cargo feature `edition2024` has been stabilized in the 1.85 release and is no 
> longer necessary to be listed in the manifest
> │   See 
> https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel
> d for more information about using this feature.
> │ warning: 
> /home/runner/work/polyglot/polyglot/lib/math/Cargo.toml: the cargo feature 
> `edition2024` has been stabilized in the 1.85 release and is no longer necessary
> to be listed in the manifest
> │   See 
> https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel
> d for more information about using this feature.
> │ warning: 
> /home/runner/work/polyglot/polyglot/apps/plot/Cargo.toml: the cargo feature 
> `edition2024` has been stabilized in the 1.85 release and is no longer necessary
> to be listed in the manifest
> │   See 
> https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel
> d for more information about using this feature.
> │ warning: 
> /home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/Cargo.toml: the cargo 
> feature `edition2024` has been stabilized in the 1.85 release and is no longer 
> necessary to be listed in the manifest
> │   See 
> https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel
> d for more information about using this feature.
> │ warning: 
> /home/runner/work/polyglot/polyglot/examples/rust/exercism/Cargo.toml: the cargo
> feature `edition2024` has been stabilized in the 1.85 release and is no longer 
> necessary to be listed in the manifest
> │   See 
> https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel
> d for more information about using this feature.
> │ warning: 
> /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/Cargo.toml: the 
> cargo feature `edition2024` has been stabilized in the 1.85 release and is no 
> longer necessary to be listed in the manifest
> │   See 
> https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel
> d for more information about using this feature.
> │ warning: 
> /home/runner/work/polyglot/polyglot/apps/chat/contract/Cargo.toml: the cargo 
> feature `edition2024` has been stabilized in the 1.85 release and is no longer 
> necessary to be listed in the manifest
> │   See 
> https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel
> d for more information about using this feature.
> │ warning: 
> /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/Cargo.toml: the cargo 
> feature `edition2024` has been stabilized in the 1.85 release and is no longer 
> necessary to be listed in the manifest
> │   See 
> https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel
> d for more information about using this feature.
> │    Compiling zerocopy v0.7.35
> │    Compiling linux-raw-sys v0.4.14
> │    Compiling bitflags v2.6.0
> │    Compiling once_cell v1.20.2
> │    Compiling fastrand v2.3.0
> │    Compiling wait-timeout v0.2.0
> │    Compiling quick-error v1.2.3
> │    Compiling rustix v0.38.42
> │    Compiling fnv v1.0.7
> │    Compiling bit-vec v0.6.3
> │    Compiling num-traits v0.2.19
> │    Compiling ppv-lite86 v0.2.20
> │    Compiling bit-set v0.5.3
> │    Compiling rand_xorshift v0.3.0
> │    Compiling minimal-lexical v0.2.1
> │    Compiling rand_chacha v0.3.1
> │    Compiling unarray v0.1.4
> │    Compiling lazy_static v1.5.0
> │    Compiling memchr v2.7.4
> │    Compiling rand v0.8.5
> │    Compiling fable_library_rust v0.1.0 
> (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-
> rust)
> │    Compiling nom v7.1.3
> │    Compiling thiserror v1.0.69
> │    Compiling tempfile v3.14.0
> │    Compiling rusty-fork v0.3.0
> │    Compiling proptest v1.5.0
> │    Compiling spiral_temp_test v0.0.1 
> (/home/runner/work/polyglot/polyglot/apps/spiral/temp/test)
> │     Finished `release` profile [optimized] target(s) 
> in 14.37s
> │      Running unittests main.rs 
> (/home/runner/work/polyglot/polyglot/workspace/target/release/deps/spiral_temp_t
> est-be45c853cf37e114)
> │ 
> │ running 3 tests
> │ test test_parse_number ... ok
> │ test prop_parse_format_idempotent ... ok
> │ test 
> adding_and_then_removing_an_item_from_the_cart_leaves_the_cart_unchanged ... ok
> │ 
> │ successes:
> │ 
> │ ---- prop_parse_format_idempotent stdout ----
> │ input=Operator("/")
> │ input=Comment("[\\#{]{\"/")
> │ input=Identifier("nuru8IvvDPAOP")
> │ input=Integer(-3991240708967483999)
> │ input=StringLiteral("")
> │ input=StringLiteral("4~U%3=%<x-t_EYgHzkSA/zI~6:")
> │ input=Integer(-7871791948284259420)
> │ input=Identifier("nMVgikr0W04yjQ")
> │ input=Comment("]?5?*<<@*]$n[=$0+A:05 \"(")
> │ input=Operator("-")
> │ input=StringLiteral("2'QvK=H")
> │ input=Operator("(")
> │ input=Integer(2908128011873202454)
> │ input=Integer(4479360746082183080)
> │ input=Integer(1030717549947965666)
> │ input=Integer(-6362514526621132816)
> │ input=Identifier("JOfBSu6G")
> │ input=Comment("d$=468z`1T{*$4v\\")
> │ input=Comment("[6\\>?w`y#\"<vNYOfz*N{NS")
> │ input=Comment("dC``.w?.9%^:?")
> │ input=StringLiteral("M][-tGrE.:'&,c$M%'X")
> │ input=Operator("*")
> │ input=Comment("cKX]`<h7%U*$wQ")
> │ input=Comment("V`&VE\\g4")
> │ input=StringLiteral("Z%iPy=M+n{&")
> │ input=Comment("*``.[e]\\f.A@Nl\"'")
> │ input=Comment("")
> │ input=Integer(-5006936807271874032)
> │ input=StringLiteral("?h.&^G+|.%%`B?WaF")
> │ input=StringLiteral("")
> │ input=Integer(-7434336372641585262)
> │ input=StringLiteral("'|")
> │ input=Identifier("Ph0xs4L66Rn8ABk")
> │ input=Comment("\"g4MF:0Uk{#s`/9&g\"mWEpr(,")
> │ input=Operator("=")
> │ input=Operator("=")
> │ input=StringLiteral("9<0m%;i'X-/`[x{h</$U%nI")
> │ input=Integer(1378112013846986692)
> │ input=Integer(-3538243670007216229)
> │ input=Identifier("Li94BOTlow")
> │ input=Operator("+")
> │ input=Comment("1xmK%'hzpPY\"s|~E@`\"1][?Ci'>wFt")
> │ input=Operator("(")
> │ input=Operator("+")
> │ input=Identifier("T8aK9wAcKtA9to1P13w")
> │ input=Identifier("gV0T7phahBUxLLU")
> │ input=Comment("&=n$\"Y_iu")
> │ input=Operator("+")
> │ input=Identifier("VYDrC94JscS6s6nu5S")
> │ input=StringLiteral("!U/0t<Tm=C=;iU")
> │ input=StringLiteral("pWt")
> │ input=StringLiteral("&_Do/ww.qc:*gI*%")
> │ input=StringLiteral("c^V#%{")
> │ input=Integer(2940969731699842684)
> │ input=Operator("(")
> │ input=Operator("=")
> │ input=StringLiteral("%Q{tI-&r;[?G%b*_T`:<7uo(i")
> │ input=Identifier("gnA1YlX4PcllcGk70TI3KVcRVvzOV7")
> │ input=Integer(-9095919589650871977)
> │ input=Identifier("FidTQcDu4Oo2bHus1t")
> │ input=Identifier("QS7x0BzYaspgYfsEJl512oIia38u45")
> │ input=StringLiteral("2J!WID.@gS<aL")
> │ input=Operator("-")
> │ input=StringLiteral("W9>e.*'WtTZoGw")
> │ input=Identifier("b80j1C5EpU7B")
> │ input=StringLiteral("BGEyy|H`l0vOZ9)hG'H`/)/F")
> │ input=Identifier("JOiM65Wl6J")
> │ input=Identifier("eyIJha6XWO6Q0Gztqdc3n")
> │ input=Identifier("L3mohRqHIL4ipQw8lRcRgYLX")
> │ input=StringLiteral("6{<&8V&")
> │ input=StringLiteral("{gj*$&<*B/yGxo:]$|.>%b=[j*Jr9'0.")
> │ input=Comment("8<:1Ng^t%:u$Oi?OG")
> │ input=Integer(8588296583823383529)
> │ input=Operator("(")
> │ input=Identifier("Lg")
> │ input=Identifier("zYB5m3CTyzH3KQZAvMU06K2x4v87A135t")
> │ input=StringLiteral(":`mMe`/p=f9&lCvG")
> │ input=Integer(-8063871794532765867)
> │ input=Identifier("C1lb69UtL83KRJ59")
> │ input=StringLiteral("-T)q,`-*CW:$7{7pX5r")
> │ input=Identifier("b5j")
> │ input=Identifier("D7zh781eE5x9V6")
> │ input=Comment("Y:}A*(#.7{ ")
> │ input=Comment("h%YhzIvt<kG ?\"h'bJh_~kH&/q")
> │ input=Integer(-2424375238850091033)
> │ input=Comment("(:$MP.|=0$FbPN}/m<${i_HC<;|AI<")
> │ input=Operator("/")
> │ input=Comment("?G:\"U@u%")
> │ input=Operator("(")
> │ input=Identifier("l")
> │ input=StringLiteral("m|E<W?7Zn-Z(q_")
> │ input=Identifier("S8ilEN1Rmb3FL6J6NGYQaWdok")
> │ input=Integer(-7327895851957338174)
> │ input=Operator("*")
> │ input=Operator("=")
> │ input=Operator("-")
> │ input=Integer(6111339454893140159)
> │ input=Comment("FR(,$3$^.f`w?=.w;Mg$/{`x|,26 *{/")
> │ input=Identifier("M1224G1c")
> │ input=StringLiteral("Jg")
> │ input=Comment("^")
> │ input=Operator("=")
> │ input=Comment("*$A6zN&&&|%$P")
> │ input=Comment(",l,&T\\nU&`L4")
> │ input=Identifier("b8jEF8CVXU3H9K")
> │ input=Operator("=")
> │ input=Operator("=")
> │ input=Identifier("vlx2")
> │ input=Identifier("gH9")
> │ input=Operator("(")
> │ input=Identifier("io8")
> │ input=Comment("?Z(){")
> │ input=Integer(333121562901633079)
> │ input=Operator("=")
> │ input=StringLiteral("j<(*?*1~Q$")
> │ input=Integer(3261317894458149051)
> │ input=StringLiteral("W.PE&3:CUC%l2M/OK.f$l4L%w#;.=")
> │ input=Identifier("xG")
> │ input=Comment("i\".")
> │ input=Operator("-")
> │ input=Operator(")")
> │ input=Integer(-8124259148730699894)
> │ input=Operator("-")
> │ input=Comment("H{5`N/SX<i?=l9)yw/,&B@")
> │ input=Identifier("tfpCycL01oq158J0xXGZi8y")
> │ input=Identifier("t1G48wX6QGZgt5AjAlmmw5")
> │ input=Operator("/")
> │ input=Identifier("kZrR9A6X5p9H3AQpxEy3")
> │ input=Operator(")")
> │ input=Identifier("itC48fm4hOkI1dn1CRIvCdAn2g")
> │ input=Identifier("bDBb9N2XqLCuvqiQnD34JtUEMoJFTis")
> │ input=StringLiteral("<x.|")
> │ input=StringLiteral("$Pydbm`@:4")
> │ input=Comment("/7D$")
> │ input=Identifier("ybOfly3o0")
> │ input=Operator("/")
> │ input=Operator("=")
> │ input=Comment("=CU&8\"mH6h&./[UrT")
> │ input=Comment("rfcr+`~<j3eIA\\&vSDbG")
> │ input=Comment("Mzo!J*-{Qt+zCf?kx#}")
> │ input=StringLiteral("?^:IXM&dc``.%WVei5X")
> │ input=Comment("X'6/<`Jm\\\\?ak\\Tx\\y9$fss")
> │ input=StringLiteral("f[$?9]@5;&g+/),ew=.umQY")
> │ input=Operator("=")
> │ input=StringLiteral("_w:Os?`d")
> │ input=Identifier("a5R0D534167eK8HxfW4pJ6b8ij2M")
> │ input=StringLiteral("%aN&")
> │ input=StringLiteral("N~%n*^C%>W{$D_J8{R_|%gK*J ")
> │ input=Comment("',lL")
> │ input=Identifier("hkade58Kl15MYVp6XQ6Imq2aW7wE2x")
> │ input=Comment("a.GdKW\\:4,mLSqY!Vo$.7\"`.F%iB")
> │ input=Identifier("jO7xPNDDOau7ctpDqI717FCsz5e35n")
> │ input=Integer(6440578356213754231)
> │ input=Operator("(")
> │ input=Comment("%(vF{{2/H.+B<=-")
> │ input=Operator("-")
> │ input=Comment("")
> │ input=Comment("M-/=JN'.KpM+J!{;ps'2oukZ{yi")
> │ input=Integer(-1662112758604541672)
> │ input=StringLiteral("_jQq%'$u*`}|/^%|/X<K'")
> │ input=StringLiteral("}JetY$ ka(%G1bT")
> │ input=StringLiteral(">C")
> │ input=Integer(194688314762420651)
> │ input=Comment("RFodMrpZg+\"n^J\"!#kIH`$w?.a&0 ")
> │ input=Identifier("jLWWkDB2uAdg24Cy8Go")
> │ input=Operator("/")
> │ input=Identifier("OQLBqpM0X7Pcv316Io")
> │ input=Integer(7854897335239817984)
> │ input=StringLiteral("R}:Vl")
> │ input=Comment("j9:/:6[pbWQ$j&y::oQ$?@@J")
> │ input=Integer(-1904540592200367300)
> │ input=Operator(")")
> │ input=StringLiteral("tD`e/MS,gW$&6=-~$7k~P'uJ~")
> │ input=Comment("%EVo|%/$'}jM1^<j\"<(qc3&K5'VQQ%`u")
> │ input=StringLiteral("uqc-{g%IC$NUoM'(/=")
> │ input=Operator("*")
> │ input=Operator("-")
> │ input=Operator("=")
> │ input=Identifier("dQr0S8IDt7hrNoF")
> │ input=Comment("%3A/")
> │ input=Integer(-2219470851928519101)
> │ input=Integer(155255116527808607)
> │ input=Comment("nb`Xy*Ix6:\"{P*d!\\@\"")
> │ input=Identifier("xYeCvas43w6LTZw2oW17J39ME5WVui")
> │ input=Comment("*bG6:sJ.v%")
> │ input=Identifier("iT2xXgtV")
> │ input=StringLiteral("*{[**&{tFD&=.A`KaDdLe<F0o./z{")
> │ input=Integer(-7131186643700707744)
> │ input=Identifier("Q9CB4w3Z0rmBc2N7Fj60lE2xaXTMIEs")
> │ input=StringLiteral("~'!(FI`&fP;.Cgr/'qC|1=t")
> │ input=Operator(")")
> │ input=Integer(-6673225877083352381)
> │ input=Operator("*")
> │ input=Comment("JQ{K ymb%")
> │ input=Identifier("Y9r0SuK7V11LxrfPZ990ARm")
> │ input=Identifier("bOUS7eRZS578Gh60sQyPcBR7fDxB4S")
> │ input=Comment("'\\\\:|`IjV\"V<,)F\"")
> │ input=StringLiteral("ik2pN^/g=<")
> │ input=Comment("s'.-~$NV<\\c#zYs")
> │ input=Operator("=")
> │ input=Identifier("m2wb2twKp58")
> │ input=Integer(8147444456466482156)
> │ input=StringLiteral("/HpgBi{Hkn&$w")
> │ input=Comment("*d`,\"2e\"<c6$/?\\(Z*'=2$")
> │ input=Comment("%E@rU>\" a:`")
> │ input=Identifier("hiFinRVfbY3n7FS")
> │ input=StringLiteral("<^sf{mX=*t*uwA.{")
> │ input=StringLiteral("~wq@PJ`_A9[w|kfheW$;+?^Eu*Ms")
> │ input=Identifier("hgqi8ADutRSE85tjIP8g6JM3z")
> │ input=Comment("YNiGS*D@b6o^;")
> │ input=StringLiteral("Fnu&M'idY)hRF@%seF,yf^qhI")
> │ input=Operator("(")
> │ input=Identifier("b467DmI0km6086AYH")
> │ input=Identifier("q")
> │ input=Operator("/")
> │ input=StringLiteral("Pt{|Evu*{>,S~a|>)&G.*h.nsS=Y")
> │ input=StringLiteral("`%<ed;D@8 %{*oe={`")
> │ input=Operator("(")
> │ input=Identifier("qpc4Q0OhWZRnRW96phYait3ij")
> │ input=Operator("/")
> │ input=Identifier("AOvzklCO")
> │ input=Identifier("jRLijE")
> │ input=StringLiteral("WTBt/8#]hBHjYQ")
> │ input=StringLiteral(")D:zW%")
> │ input=Operator("+")
> │ input=StringLiteral("[<'<*{qx&*_i?7a/c'_:W*;{j'C2")
> │ input=StringLiteral("z7j")
> │ input=Operator("-")
> │ input=Identifier("aJPAi7f1k1J")
> │ input=Comment("%:\"& e6U*:_&Eb\\")
> │ input=Integer(-8932401817024897307)
> │ input=Identifier("A5AQ6wOTtWz6YRfU")
> │ input=Operator("=")
> │ input=Operator("/")
> │ input=Integer(7326208535821109641)
> │ input=Integer(-8573041863519611155)
> │ input=Comment("'D\"")
> │ input=Integer(9007843693564174520)
> │ input=Identifier("yxdqQFTOG3LmYKVnDoZ")
> │ input=StringLiteral("E]")
> │ input=Identifier("ClU5jro3B0")
> │ input=Integer(2866093496567051696)
> │ input=Identifier("EmN")
> │ input=Integer(-2938637709573004926)
> │ input=StringLiteral("%)Ww/03y?/K")
> │ input=StringLiteral("%[I*,UT ,E2[9?9=:X?<$zQJ=ogMP+")
> │ input=Operator("/")
> │ input=StringLiteral("Up[G=j")
> │ input=Operator("(")
> │ input=StringLiteral("^=2,6D?`%'X-")
> │ input=Comment("<'\"~['jwWra/.<:74{/g.T|%f\\Z/<v")
> │ input=Identifier("sKPn4I3Cz")
> │ input=Integer(-5868395199481692460)
> │ input=Identifier("O1qd8Fxv0cTz71owiVvVVhH03ROcjW0")
> │ input=Integer(-3208710685172579897)
> │ input=Comment("pcb$\"$")
> │ 
> │ 
> │ successes:
> │     
> adding_and_then_removing_an_item_from_the_cart_leaves_the_cart_unchanged
> │     prop_parse_format_idempotent
> │     test_parse_number
> │ 
> │ test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0
> filtered out; finished in 0.07s
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### execute the binary in release mode
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> { . $ScriptDir/../../../../workspace/target/release/spiral_temp_test$(_exe) } | 
> Invoke-Block
> 
> ── [ 7.80ms - stdout ] ─────────────────────────────────────────────────────────
> │ app=test
> │ 
00:00:48 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 99527 }
00:00:48 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:00:49 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb to html
00:00:49 v #6 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:49 v #7 !   validate(nb)
00:00:49 v #8 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:49 v #9 !   return _pygments_highlight(
00:00:49 v #10 ! [NbConvertApp] Writing 377521 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.html
00:00:49 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 918 }
00:00:49 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 918 }
00:00:49 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } }
00:00:49 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:49 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:49 d #16 spiral.run / dib / { exit_code = 0; result_length = 100504 }
In [ ]:
{ pwsh ../apps/spiral/vscode/build.ps1 } | Invoke-Block
bun install v1.2.16 (631e6748)

+ @types/node@22.10.10
+ @types/vscode@1.96.0
+ @vscode/vsce@3.2.1
+ npm-check-updates@17.1.14
+ typescript@5.5.0-dev.20240514
+ vscode@1.1.37

225 packages installed [601.00ms]

Blocked 1 postinstall. Run `bun pm untrusted` for details.
polyglot/scripts/core.ps1/GetFullPath / Path: ./LICENSE / Location: /home/runner/work/polyglot/polyglot/apps/spiral/vscode / ResolvedLocation: /home/runner/work/polyglot/polyglot/apps/spiral/vscode
polyglot/scripts/core.ps1/GetFullPath / FullPath: /home/runner/work/polyglot/polyglot/apps/spiral/vscode/LICENSE
polyglot/scripts/core.ps1/EnsureSymbolicLink / Parent: /home/runner/work/polyglot/polyglot/apps/spiral/vscode / Path: /home/runner/work/polyglot/polyglot/apps/spiral/vscode/LICENSE
polyglot/scripts/core.ps1/GetFullPath / Path: ../../../LICENSE / Location: /home/runner/work/polyglot/polyglot/apps/spiral/vscode / ResolvedLocation: /home/runner/work/polyglot/polyglot/apps/spiral/vscode
polyglot/scripts/core.ps1/GetFullPath / FullPath: /home/runner/work/polyglot/polyglot/LICENSE
polyglot/scripts/core.ps1/EnsureSymbolicLink / FullPath: /home/runner/work/polyglot/polyglot/apps/spiral/vscode/LICENSE / Target: /home/runner/work/polyglot/polyglot/LICENSE / ResolvedTarget: /home/runner/work/polyglot/polyglot/LICENSE
polyglot/scripts/core.ps1/EnsureSymbolicLink / Creating symlink: /home/runner/work/polyglot/polyglot/apps/spiral/vscode/LICENSE -> /home/runner/work/polyglot/polyglot/LICENSE
System.Management.Automation.RemoteException
  out/src/extension.js                  2.4kb
  out/media/cellOutputScrollButtons.js  1.9kb
System.Management.Automation.RemoteException
⚡ Done in 3ms
::warning::Neither a .vscodeignore file nor a "files" property in package.json was found. To ensure only necessary files are included in your extension, add a .vscodeignore file or specify the "files" property in package.json. More info: https://aka.ms/vscode-vscodeignore%0A
Files included in the VSIX:
spiral-vscode-0.0.1.vsix
├─ [Content_Types].xml 
├─ extension.vsixmanifest 
└─ extension/
   ├─ .gitignore [0.01 KB]
   ├─ LICENSE.txt [33.71 KB]
   ├─ build.ps1 [0.41 KB]
   ├─ bun.lockb [86.98 KB]
   ├─ compile.ps1 [0.48 KB]
   ├─ package.json [1.55 KB]
   ├─ media/
   │  └─ cellOutputScrollButtons.ts [1.8 KB]
   ├─ out/
   │  ├─ media/
   │  │  └─ cellOutputScrollButtons.js [1.86 KB]
   │  └─ src/
   │     └─ extension.js [2.44 KB]
   └─ src/
      └─ extension.ts [1.38 KB]

Packaged: out/spiral-vscode-0.0.1.vsix (12 files, 49.06 KB)
In [ ]:
{ pwsh ../apps/ipfs/build.ps1 } | Invoke-Block
bun install v1.2.16 (631e6748)

+ @types/node@22.10.10
+ npm-check-updates@17.1.14
+ typescript@5.5.0-dev.20240401
+ nft.storage@7.2.0

220 packages installed [348.00ms]

Blocked 1 postinstall. Run `bun pm untrusted` for details.
In [ ]:
{ pwsh ./outdated.ps1 } | Invoke-Block
Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
Resolving dependency graph...
Could not detect any platforms from 'net10.0' in Microsoft.AspNetCore.Connections.Abstractions 10.0.0-preview.5.25277.114, please tell the package authors
Could not detect any platforms from 'net10.0' in System.Management 10.0.0-preview.5.25277.114, please tell the package authors
Could not detect any platforms from 'net10.0' in Microsoft.AspNetCore.Http.Connections.Common 10.0.0-preview.5.25277.114, please tell the package authors
Could not detect any platforms from 'net10.0' in Microsoft.AspNetCore.Http.Connections.Client 10.0.0-preview.5.25277.114, please tell the package authors
Could not detect any platforms from 'net10.0' in Microsoft.AspNetCore.SignalR.Common 10.0.0-preview.5.25277.114, please tell the package authors
Could not detect any platforms from 'net10.0' in Microsoft.AspNetCore.SignalR.Client 10.0.0-preview.5.25277.114, please tell the package authors
Could not detect any platforms from 'net10.0' in Microsoft.AspNetCore.SignalR.Client.Core 10.0.0-preview.5.25277.114, please tell the package authors
Could not detect any platforms from 'net10.0' in Microsoft.AspNetCore.SignalR.Protocols.Json 10.0.0-preview.5.25277.114, please tell the package authors
Could not detect any platforms from 'net10.0' in Microsoft.Extensions.Features 10.0.0-preview.5.25277.114, please tell the package authors
Could not detect any platforms from 'net10.0' in System.IO.Pipelines 10.0.0-preview.5.25277.114, please tell the package authors
Could not detect any platforms from 'net10.0' in Microsoft.Extensions.Logging.Abstractions 10.0.0-preview.5.25277.114, please tell the package authors
Could not detect any platforms from 'net10.0' in Microsoft.Extensions.Options 10.0.0-preview.5.25277.114, please tell the package authors
Could not detect any platforms from 'net10.0' in System.Net.ServerSentEvents 10.0.0-preview.5.25277.114, please tell the package authors
Could not detect any platforms from 'net10.0' in System.Text.Json 10.0.0-preview.5.25277.114, please tell the package authors
Could not detect any platforms from 'net10.0' in Microsoft.Extensions.DependencyInjection 10.0.0-preview.5.25277.114, please tell the package authors
Could not detect any platforms from 'net10.0' in Microsoft.Extensions.Logging 10.0.0-preview.5.25277.114, please tell the package authors
Could not detect any platforms from 'net10.0' in System.Threading.Channels 10.0.0-preview.5.25277.114, please tell the package authors
Could not detect any platforms from 'net10.0' in System.CodeDom 10.0.0-preview.5.25277.114, please tell the package authors
Could not detect any platforms from 'net10.0' in Microsoft.Extensions.DependencyInjection.Abstractions 10.0.0-preview.5.25277.114, please tell the package authors
Could not detect any platforms from 'net10.0' in System.Diagnostics.DiagnosticSource 10.0.0-preview.5.25277.114, please tell the package authors
Could not detect any platforms from 'net10.0' in Microsoft.Extensions.Primitives 10.0.0-preview.5.25277.114, please tell the package authors
Could not detect any platforms from 'net10.0' in System.Text.Encodings.Web 10.0.0-preview.5.25277.114, please tell the package authors
Outdated packages found:
  Group: Main
    * Argu 6.2.4 -> 6.2.5
    * Expecto.FsCheck 11.0.0-alpha8 -> 11.0.0-alpha8-fscheck2
    * Fable.Core 4.3 -> 4.5.0
    * FsCheck 3.1 -> 2.16.6
    * FSharp.Core 9.0.300-beta.25124.4 -> 10.0.100-beta.25277.114
    * Microsoft.AspNetCore.App.Ref 9.0.3 -> 10.0.0-preview.5.25277.114
    * Microsoft.AspNetCore.Connections.Abstractions 7.0 -> 10.0.0-preview.5.25277.114
    * Microsoft.AspNetCore.Http.Connections.Client 7.0 -> 10.0.0-preview.5.25277.114
    * Microsoft.AspNetCore.Http.Connections.Common 7.0 -> 10.0.0-preview.5.25277.114
    * Microsoft.AspNetCore.SignalR.Client 7.0 -> 10.0.0-preview.5.25277.114
    * Microsoft.AspNetCore.SignalR.Client.Core 7.0 -> 10.0.0-preview.5.25277.114
    * Microsoft.AspNetCore.SignalR.Common 7.0 -> 10.0.0-preview.5.25277.114
    * Microsoft.AspNetCore.SignalR.Protocols.Json 7.0 -> 10.0.0-preview.5.25277.114
    * Microsoft.Bcl.AsyncInterfaces 9.0.3 -> 10.0.0-preview.5.25277.114
    * Microsoft.Extensions.DependencyInjection 9.0.3 -> 10.0.0-preview.5.25277.114
    * Microsoft.Extensions.DependencyInjection.Abstractions 9.0.3 -> 10.0.0-preview.5.25277.114
    * Microsoft.Extensions.Features 7.0 -> 10.0.0-preview.5.25277.114
    * Microsoft.Extensions.Logging 9.0.3 -> 10.0.0-preview.5.25277.114
    * Microsoft.Extensions.Logging.Abstractions 9.0.3 -> 10.0.0-preview.5.25277.114
    * Microsoft.Extensions.Options 9.0.3 -> 10.0.0-preview.5.25277.114
    * Microsoft.Extensions.Primitives 9.0.3 -> 10.0.0-preview.5.25277.114
    * System.CodeDom 9.0.3 -> 10.0.0-preview.5.25277.114
    * System.Configuration.ConfigurationManager 9.0.3 -> 9.0.6
    * System.Diagnostics.EventLog 9.0.3 -> 9.0.6
    * System.IO.Pipelines 9.0.3 -> 10.0.0-preview.5.25277.114
    * System.Management 7.0 -> 10.0.0-preview.5.25277.114
    * System.Security.Cryptography.ProtectedData 9.0.3 -> 9.0.6
    * System.Threading.Channels 9.0.3 -> 10.0.0-preview.5.25277.114
    * System.Threading.Tasks.Extensions 4.6.1 -> 4.6.3
Total time taken: 8 seconds
Paket omitted 22 warnings. You can see them in verbose mode.

CheckToml / toml: /home/runner/work/polyglot/polyglot/workspace/Cargo.toml
chat_contract_tests
================
Name                        Project                        Compat   Latest   Kind    Platform
----                        -------                        ------   ------   ----    --------
ahash                       0.7.8                          Removed  ---      Normal  ---
android-tzdata              0.1.1                          Removed  ---      Normal  cfg(target_os = "android")
android_system_properties   0.1.5                          Removed  ---      Normal  cfg(target_os = "android")
autocfg                     1.4.0                          Removed  ---      Build   ---
bumpalo                     3.16.0                         Removed  ---      Normal  ---
cc                          1.2.4                          Removed  ---      Build   ---
cfg-if                      1.0.0                          Removed  ---      Normal  ---
chrono                      0.4.39                         Removed  ---      Normal  ---
core-foundation-sys         0.8.7                          Removed  ---      Normal  cfg(any(target_os = "macos", target_os = "ios"))
equivalent                  1.0.1                          ---      Removed  Normal  ---
getrandom                   0.2.15                         Removed  ---      Normal  cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi"))
hashbrown                   0.12.3                         0.15.2   ---      Normal  ---
hashbrown                   0.15.2                         ---      0.12.3   Normal  ---
iana-time-zone              0.1.61                         Removed  ---      Normal  cfg(unix)
iana-time-zone-haiku        0.1.2                          Removed  ---      Normal  cfg(target_os = "haiku")
indexmap                    1.9.3                          2.7.0    ---      Normal  ---
indexmap                    2.7.0                          ---      1.9.3    Normal  ---
jobserver                   0.1.32                         Removed  ---      Normal  ---
js-sys                      0.3.76                         Removed  ---      Normal  cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
js-sys                      0.3.76                         Removed  ---      Normal  cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
js-sys                      0.3.76                         Removed  ---      Normal  cfg(all(target_arch = "wasm32", target_os = "unknown"))
libc                        0.2.168                        Removed  ---      Normal  ---
libc                        0.2.168                        Removed  ---      Normal  cfg(unix)
libm                        0.2.11                         Removed  ---      Normal  ---
log                         0.4.22                         Removed  ---      Normal  ---
near-sandbox-utils          0.8.0                          0.9.0    ---      Build   ---
near-sandbox-utils          0.9.0                          ---      0.8.0    Normal  ---
num-traits                  0.2.19                         Removed  ---      Normal  ---
once_cell                   1.20.2                         Removed  ---      Normal  ---
once_cell                   1.20.2                         Removed  ---      Normal  cfg(not(all(target_arch = "arm", target_os = "none")))
proc-macro2                 1.0.92                         Removed  ---      Normal  ---
quote                       1.0.37                         Removed  ---      Normal  ---
serde                       1.0.216                        Removed  ---      Normal  ---
serde_derive                1.0.216                        Removed  ---      Normal  ---
shlex                       1.3.0                          Removed  ---      Normal  ---
syn                         2.0.90                         Removed  ---      Normal  ---
unicode-ident               1.0.14                         Removed  ---      Normal  ---
version_check               0.9.5                          Removed  ---      Build   ---
wasi                        0.11.0+wasi-snapshot-preview1  Removed  ---      Normal  cfg(target_os = "wasi")
wasm-bindgen                0.2.99                         Removed  ---      Normal  ---
wasm-bindgen                0.2.99                         Removed  ---      Normal  cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
wasm-bindgen                0.2.99                         Removed  ---      Normal  cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
wasm-bindgen                0.2.99                         Removed  ---      Normal  cfg(all(target_arch = "wasm32", target_os = "unknown"))
wasm-bindgen-backend        0.2.99                         Removed  ---      Normal  ---
wasm-bindgen-macro          0.2.99                         Removed  ---      Normal  ---
wasm-bindgen-macro-support  0.2.99                         Removed  ---      Normal  ---
wasm-bindgen-shared         0.2.99                         Removed  ---      Normal  ---
windows-core                0.52.0                         Removed  ---      Normal  cfg(target_os = "windows")
windows-targets             0.52.6                         Removed  ---      Normal  ---
windows-targets             0.52.6                         Removed  ---      Normal  cfg(windows)
windows_aarch64_gnullvm     0.52.6                         Removed  ---      Normal  aarch64-pc-windows-gnullvm
windows_aarch64_msvc        0.52.6                         Removed  ---      Normal  cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib)))
windows_i686_gnu            0.52.6                         Removed  ---      Normal  cfg(all(target_arch = "x86", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows_i686_gnullvm        0.52.6                         Removed  ---      Normal  i686-pc-windows-gnullvm
windows_i686_msvc           0.52.6                         Removed  ---      Normal  cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib)))
windows_x86_64_gnu          0.52.6                         Removed  ---      Normal  cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows_x86_64_gnullvm      0.52.6                         Removed  ---      Normal  x86_64-pc-windows-gnullvm
windows_x86_64_msvc         0.52.6                         Removed  ---      Normal  cfg(all(any(target_arch = "x86_64", target_arch = "arm64ec"), target_env = "msvc", not(windows_raw_dylib)))

CheckToml / toml: /home/runner/work/polyglot/polyglot/apps/chat/contract/Cargo.toml
error: failed to parse manifest at `/home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hybrid-array-0.3.1/Cargo.toml`
System.Management.Automation.RemoteException
Caused by:
  feature `edition2024` is required
System.Management.Automation.RemoteException
  The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0).
  Consider trying a more recent nightly release.
  See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature.

# Invoke-Block / $retry: 1/1 / $Location:  / Get-Location: /home/runner/work/polyglot/polyglot/scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock:
'cargo outdated -m $toml @_args'


CheckToml / toml: /home/runner/work/polyglot/polyglot/apps/chat/contract/tests/Cargo.toml
error: failed to download `hybrid-array v0.3.1`
System.Management.Automation.RemoteException
Caused by:
  unable to get packages from source
System.Management.Automation.RemoteException
Caused by:
  failed to parse manifest at `/home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hybrid-array-0.3.1/Cargo.toml`
System.Management.Automation.RemoteException
Caused by:
  feature `edition2024` is required
System.Management.Automation.RemoteException
  The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0).
  Consider trying a more recent nightly release.
  See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature.

# Invoke-Block / $retry: 1/1 / $Location:  / Get-Location: /home/runner/work/polyglot/polyglot/scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock:
'cargo outdated -m $toml @_args'


CheckToml / toml: /home/runner/work/polyglot/polyglot/apps/plot/Cargo.toml
error: failed to download `hybrid-array v0.3.1`
System.Management.Automation.RemoteException
Caused by:
  unable to get packages from source
System.Management.Automation.RemoteException
Caused by:
  failed to parse manifest at `/home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hybrid-array-0.3.1/Cargo.toml`
System.Management.Automation.RemoteException
Caused by:
  feature `edition2024` is required
System.Management.Automation.RemoteException
  The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0).
  Consider trying a more recent nightly release.
  See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature.

# Invoke-Block / $retry: 1/1 / $Location:  / Get-Location: /home/runner/work/polyglot/polyglot/scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock:
'cargo outdated -m $toml @_args'


CheckJson / json: /home/runner/work/polyglot/polyglot
$ npm-check-updates --target greatest
Using bun
Checking /home/runner/work/polyglot/polyglot/package.json
System.Management.Automation.RemoteException

 @types/node          ~22.10  →    ~24.0
 npm-check-updates  ~17.1.14  →  ~18.0.1

Run ncu --target greatest -u to upgrade package.json

CheckJson / json: /home/runner/work/polyglot/polyglot/apps/ipfs
$ npm-check-updates --target greatest
Using bun
Checking /home/runner/work/polyglot/polyglot/apps/ipfs/package.json
System.Management.Automation.RemoteException

 @types/node          ~22.10  →    ~24.0
 npm-check-updates  ~17.1.14  →  ~18.0.1

Run ncu --target greatest -u to upgrade package.json

CheckJson / json: /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension
$ npm-check-updates --target greatest
Using bun
Checking /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/package.json
System.Management.Automation.RemoteException

 @playwright/test     1.44.0  →  1.54.0-alpha-2025-06-19
 @types/chrome      ~0.0.268  →                 ~0.0.326
 npm-check-updates  ~17.1.14  →                  ~18.0.1

Run ncu --target greatest -u to upgrade package.json

CheckJson / json: /home/runner/work/polyglot/polyglot/apps/spiral/vscode
$ npm-check-updates --target greatest
Using bun
Checking /home/runner/work/polyglot/polyglot/apps/spiral/vscode/package.json
System.Management.Automation.RemoteException

 @types/node          ~22.10  →    ~24.0
 @types/vscode         ~1.96  →   ~1.101
 npm-check-updates  ~17.1.14  →  ~18.0.1

Run ncu --target greatest -u to upgrade package.json

CheckJson / json: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/VS Code Plugin
$ npm-check-updates --target greatest
Checking /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/VS Code Plugin/package.json
System.Management.Automation.RemoteException

 @microsoft/signalr     8.0.0  →    8.0.7
 @types/node           ~22.10  →    ~24.0
 @types/vscode          ~1.95  →   ~1.101
 @vscode/vsce            ~3.2  →   ~3.5-2
 esbuild                ~0.24  →    ~0.25
 npm-check-updates   ~17.1.14  →  ~18.0.1
 portfinder           ^1.0.32  →  ^1.0.37

Run ncu --target greatest -u to upgrade package.json