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

── [ 183.89ms - 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}"
)

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

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

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

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

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

── [ 25.29ms - 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 ──────────────────────────────────────────────────────────────────────
── [ 58.09ms - 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".

── [ 58.54ms - 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.86ms - 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.43ms - 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.89ms - 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.51ms - 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.72ms - 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.87ms - 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.05ms - 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
"

── [ 38.52ms - 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.36ms - 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
"

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

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

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

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

── [ 75.01ms - 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
"

── [ 76.00ms - 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.71ms - 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"

── [ 116.80ms - 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>

── [ 117.50ms - 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 300000
> |> _assertEqual (Some 0)
> 
> ── [ 9.31s - 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 270 
> 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:08 v #13 >   test1 -> 
> /home/runner/work/polyglot/polyglot/target/Builder/test1/dist
> │ 00:00:08 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:08 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 238 
> ms).
> │ 00:00:11 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:12 v #23 >   test1 -> 
> /home/runner/work/polyglot/polyglot/target/Builder/test1/dist
> │ 00:00:12 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 300000
> |> _assertEqual (Some 2)
> 
> ── [ 6.97s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:10 d #3 persistCodeProject / packages: [] / 
> modules: [] / name: test2 / hash:  / code.Length: 15
> │ 00:00:10 d #4 buildProject / fullPath: 
> /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj
> │ 00:00:12 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:13 v #26 >   Determining projects to restore...
> │ 00:00:13 v #27 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:13 v #28 >   The last full restore is still up to 
> date. Nothing left to do.
> │ 00:00:13 v #29 >   Total time taken: 0 milliseconds
> │ 00:00:14 v #30 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:14 v #31 >   Restoring 
> /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj
> │ 00:00:14 v #32 >   Starting restore process.
> │ 00:00:14 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:16 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:16 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:16 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:17 v #39 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:17 v #40 >   The last full restore is still up to 
> date. Nothing left to do.
> │ 00:00:17 v #41 >   Total time taken: 0 milliseconds
> │ 00:00:18 v #42 >   Restored 
> /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj (in 241 
> ms).
> │ 00:00:19 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:19 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:17 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 ()
> 
> ── [ 75.86ms - 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.19s - 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.19s - 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:20 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:21 v #50 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:21 v #51 >   Restoring 
> /home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj
> │ 00:00:21 v #52 >   Starting restore process.
> │ 00:00:21 v #53 >   Total time taken: 0 milliseconds
> │ 00:00:22 v #54 >   Restored 
> /home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj (in 
> 260 ms).
> │ 00:00:33 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:48 v #10 ! [NbConvertApp] Writing 337247 bytes to /home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.html
00:00:48 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 904 }
00:00:48 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 904 }
00:00:48 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: 2047940
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! @justinjstark
Stand with Ukraine! https://standwithukraine.com.ua/

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

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 13837ms

./deps/spiral/lib/spiral/common.fsx(2339,0): (2339,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(252,0): (252,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(2569,0): (2569,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(5637,0): (5637,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(2897,0): (2897,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(9581,0): (9581,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(21240,0): (21240,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 18.04s
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
> 
> ── [ 179.00ms - 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}"
> )
> 
> ── [ 41.78ms - stdout ] ────────────────────────────────────────────────────────
> │ "a
> │ #!magic
> │ b
> │ "
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## magicMarker
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let magicMarker : Parser<string, unit> = pstring "#!"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "#!magic"
> |> run magicMarker
> |> _assertEqual (
>     Success ("#!", (), Position ("", 2, 1, 3))
> )
> 
> ── [ 25.77ms - 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.75ms - 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.20ms - 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.28ms - 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 ──────────────────────────────────────────────────────────────────────
> ── [ 13.82ms - 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.30ms - 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))
> )
> 
> ── [ 12.93ms - 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.90ms - 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.68ms - 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.26ms - 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.86ms - 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
>         }}
> """
> 
> ── [ 82.78ms - 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
> "
> 
> ── [ 75.73ms - stdout ] ────────────────────────────────────────────────────────
> │ "# TestModule (TestNamespace)
> │ 
> │ ## ParserLibrary
> │ 
> │ ### TextInput
> │ "
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> example1
> |> parse Spi
> |> Result.toOption
> |> Option.get
> |> (formatBlocks Spi)
> |> _assertEqual "/// # TestModule (TestNamespace)
> 
> /// ## ParserLibrary
> inl x = 3i32
> "
> 
> ── [ 112.36ms - 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
> "
> 
> ── [ 75.81ms - 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 ()
> 
> ── [ 63.92ms - 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"
> 
> ── [ 125.98ms - 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>
> 
> ── [ 126.65ms - 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: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 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 280 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.75ms - 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.90ms - stdout ] ───────────────────────────────────────────────────────
> │ JNull
> │ JNull
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNull "nulp"
> |> parserEqual (
>     Failure (
>         "null",
>         "Unexpected 'p'",
>         { currentLine = "nulp"; line = 0; column = 3 }
>     )
> )
> 
> ── [ 33.76ms - 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>
> 
> ── [ 35.08ms - 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.69ms - 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.37ms - stdout ] ────────────────────────────────────────────────────────
> │ JBool true
> │ JBool true
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jBool "false"
> |> parserEqual (Success (JBool false))
> 
> ── [ 21.41ms - 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.09ms - stdout ] ────────────────────────────────────────────────────────
> │ JBool false
> │ JBool false
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jBool "truX"
> |> parserEqual (
>     Failure (
>         "bool",
>         "Unexpected 't'",
>         { currentLine = "truX"; line = 0; column = 0 }
>     )
> )
> 
> ── [ 17.47ms - 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.67ms - 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')
> 
> ── [ 32.73ms - 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>
> 
> ── [ 34.35ms - stdout ] ────────────────────────────────────────────────────────
> │ 'a'
> │ 'a'
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jUnescapedChar "\\"
> |> parserEqual (
>     Failure (
>         "char",
>         "Unexpected '\\'",
>         { currentLine = "\\"; line = 0; column = 0 }
>     )
> )
> 
> ── [ 24.62ms - 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.82ms - 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.65ms - 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.78ms - stdout ] ────────────────────────────────────────────────────────
> │ '\\'
> │ '\\'
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jEscapedChar "\\t"
> |> parserEqual (Success '\t')
> 
> ── [ 18.50ms - 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.02ms - stdout ] ────────────────────────────────────────────────────────
> │ '\009'
> │ '\009'
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jEscapedChar @"\\"
> |> parserEqual (Success '\\')
> 
> ── [ 18.55ms - 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.72ms - 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.20ms - stdout ] ────────────────────────────────────────────────────────
> │ '\010'
> │ '\010'
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jEscapedChar "a"
> |> parserEqual (
>     Failure (
>         "escaped char",
>         "Unexpected 'a'",
>         { currentLine = "a"; line = 0; column = 0 }
>     )
> )
> 
> ── [ 18.19ms - 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>
> 
> ── [ 19.42ms - 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 '☺')
> 
> ── [ 27.45ms - 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.93ms - 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.97ms - 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.70ms - stdout ] ────────────────────────────────────────────────────────
> │ JString ""
> │ JString ""
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jString "\"a\""
> |> parserEqual (Success (JString "a"))
> 
> ── [ 20.64ms - 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.32ms - stdout ] ────────────────────────────────────────────────────────
> │ JString "a"
> │ JString "a"
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jString "\"ab\""
> |> parserEqual (Success (JString "ab"))
> 
> ── [ 20.21ms - 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.85ms - stdout ] ────────────────────────────────────────────────────────
> │ JString "ab"
> │ JString "ab"
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jString "\"ab\\tde\""
> |> parserEqual (Success (JString "ab\tde"))
> 
> ── [ 20.73ms - 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.51ms - stdout ] ────────────────────────────────────────────────────────
> │ JString "ab	de"
> │ JString "ab	de"
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jString "\"ab\\u263Ade\""
> |> parserEqual (Success (JString "ab☺de"))
> 
> ── [ 21.19ms - 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.87ms - 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))
> 
> ── [ 38.10ms - 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.75ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber 123.0
> │ JNumber 123.0
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber "-123"
> |> parserEqual (Success (JNumber -123.0))
> 
> ── [ 21.71ms - 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.29ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber -123.0
> │ JNumber -123.0
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber "123.4"
> |> parserEqual (Success (JNumber 123.4))
> 
> ── [ 22.76ms - 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>
> 
> ── [ 24.35ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber 123.4
> │ JNumber 123.4
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber "-123."
> |> parserEqual (Success (JNumber -123.0))
> 
> ── [ 20.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 = 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>
> 
> ── [ 22.10ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber -123.0
> │ JNumber -123.0
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber "00.1"
> |> parserEqual (Success (JNumber 0.0))
> 
> ── [ 20.70ms - 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>
> 
> ── [ 22.27ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber 0.0
> │ JNumber 0.0
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let jNumber_ = jNumber .>> spaces1
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "123"
> |> parserEqual (Success (JNumber 123.0))
> 
> ── [ 23.01ms - 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.55ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber 123.0
> │ JNumber 123.0
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "-123"
> |> parserEqual (Success (JNumber -123.0))
> 
> ── [ 21.32ms - 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>
> 
> ── [ 23.08ms - 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 }
>     )
> )
> 
> ── [ 18.76ms - 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>
> 
> ── [ 19.91ms - stdout ] ────────────────────────────────────────────────────────
> │ Line:0 Col:4 Error parsing number andThen many1 whitespace
> │ -123.
> │     ^Unexpected '.'
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "123.4"
> |> parserEqual (Success (JNumber 123.4))
> 
> ── [ 21.08ms - 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>
> 
> ── [ 22.64ms - 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 }
>     )
> )
> 
> ── [ 18.33ms - 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>
> 
> ── [ 19.58ms - 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))
> 
> ── [ 24.09ms - 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>
> 
> ── [ 25.65ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber 1230000.0
> │ JNumber 1230000.0
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "123.4e5"
> |> parserEqual (Success (JNumber 12340000.0))
> 
> ── [ 22.48ms - 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>
> 
> ── [ 24.04ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber 12340000.0
> │ JNumber 12340000.0
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "123.4e-5"
> |> parserEqual (Success (JNumber 0.001234))
> 
> ── [ 21.76ms - 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.29ms - 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.11ms - 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.15ms - 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.19ms - 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.34ms - 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.14ms - 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.07ms - 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 }
>     )
> )
> 
> ── [ 26.01ms - 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>
> 
> ── [ 27.19ms - 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
>             ]]
>         )
>     )
> )
> 
> ── [ 108.41ms - 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>
> 
> ── [ 110.20ms - 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;"
>                             ]]
>                         )
>                     ]]
>                 )
>             ]]
>         )
>     )
> )
> 
> ── [ 226.09ms - 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>
> 
> ── [ 227.92ms - 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 ]])
>                 ]]
>             ]]
>         )
>     )
> )
> 
> ── [ 333.54ms - 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>
> 
> ── [ 335.42ms - 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:20 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 908 }
00:00:20 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 908 }
00:00:20 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 }
> }
> 
> ── [ 35.89ms - stdout ] ────────────────────────────────────────────────────────
> │ { lines = [||]
> │   position = { line = 0
> │                column = 0 } }
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> fromStr "Hello \n World" |> _assertEqual {
>     lines = [[| "Hello "; " World" |]]
>     position = { line = 0; column = 0 }
> }
> 
> ── [ 12.74ms - 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')
> 
> ── [ 26.73ms - 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.16ms - 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 }
>         }
>     )
> )
> 
> ── [ 25.12ms - 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.70ms - 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 }
>         }
>     )
> )
> 
> ── [ 26.60ms - 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.80ms - 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.09ms - 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.03ms - 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.71ms - 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 }
>         }
>     )
> )
> 
> ── [ 30.78ms - 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 }
>         }
>     )
> )
> 
> ── [ 41.48ms - 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 }
>         }
>     )
> )
> 
> ── [ 25.37ms - 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.58ms - 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.53ms - 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.79ms - 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.51ms - 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.46ms - 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 }
>         }
>     )
> )
> 
> ── [ 52.66ms - 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 }
>         }
>     )
> )
> 
> ── [ 27.28ms - 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 }
>         }
>     )
> )
> 
> ── [ 36.16ms - 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 }
>         }
>     )
> )
> 
> ── [ 37.25ms - 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.87ms - 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
>         }
>     )
> )
> 
> ── [ 13.95ms - 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 }
>         }
>     )
> )
> 
> ── [ 18.02ms - 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 }
>         }
>     )
> )
> 
> ── [ 23.15ms - 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: JsonParser.dib
00:00:00 d #2 parseDibCode / output: Fs / file: Parser.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: 828726
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 294 ms).
00:00:31 v #11 >   spiral_compiler -> /home/runner/work/polyglot/polyglot/target/Builder/spiral_compiler/bin/Release/net9.0/linux-x64/spiral_compiler.dll
00:00:32 v #12 >   spiral_compiler -> /home/runner/work/polyglot/spiral/apps/compiler/dist
00:00:32 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.81ms - stdout ] ───────────────────────────────────────────────────────
> │ 2.1.1
> │ 6.0.0
> │ 8.0.1
> │ 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.69ms - stdout ] ────────────────────────────────────────────────────────
> │ 7.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.73s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:56 v #1 Supervisor.buildFile / fullPathUri: 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd043
> 17d5605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi"
> │ 00:00:56 v #2 Supervisor.buildFile / _fileOpenResult: 
> <null>
> │ 00:00:56 v #3 Supervisor.buildFile / before result: ()
> │ 00:00:56 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:56 v #5 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 #6 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 #330 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 #331 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:57 v #813 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:57 v #814 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:57 v #1132 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:57 v #1133 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:58 v #1302 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:58 v #1303 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:58 v #1317 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:58 v #1318 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:58 v #1319 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:58 v #1320 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:58 v #1321 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",
>         [[]]
>     )
> )
> 
> ── [ 353.28ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:00:58 v #1341 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:58 v #1342 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:58 v #1343 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:58 v #1344 Supervisor.buildFile / fullPathUri: 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414d
> e2a2a92d9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi"
> │ 00:00:58 v #1345 Supervisor.buildFile / _fileOpenResult:
> <null>
> │ 00:00:58 v #1346 Supervisor.buildFile / before result: 
> ()
> │ 00:00:58 v #1582 Supervisor.buildFile / buildFileResult:
> Some "0.3325000000000001
> │ "
> │ 00:00:58 v #1583 Supervisor.buildFile / 
> outputContentSeq2 unfoldAsync / msg: (Some "0.3325000000000001
> │ ", [], 0)
> │ 00:00:58 v #1584 Supervisor.buildFile / ofSeqAsync / x: 
> (Some "0.3325000000000001
> │ ", [], 0)
> │ 00:00:58 v #1585 Supervisor.buildFile / result: [] / 
> buildFileResult: Some "0.3325000000000001
> │ " / typeErrorCount: 0
> │ 00:00:58 v #1586 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)
> ",
>         [[]]
>     )
> )
> 
> ── [ 425.62ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:00:59 v #1607 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:59 v #1608 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:59 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:59 v #1610 Supervisor.buildFile / fullPathUri: 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a4224c9f
> 3d674d70fd56b6ecd3ae8c8ff3178a7124ae34f592336fef263568ea/main.spi"
> │ 00:00:59 v #1611 Supervisor.buildFile / _fileOpenResult:
> <null>
> │ 00:00:59 v #1612 Supervisor.buildFile / before result: 
> ()
> │ 00:00:59 v #1849 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:59 v #1850 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:59 v #1851 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:59 v #1852 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:59 v #1853 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;
> }
> ",
>         [[]]
>     )
> )
> 
> ── [ 394.27ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:00:59 v #1871 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:59 v #1872 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:59 v #1873 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:59 v #1874 Supervisor.buildFile / fullPathUri: 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a702c5b2
> 9a050eccfe7c911beeea63f353f61e71985bbebdb653ac32f3395c52/main.spi"
> │ 00:00:59 v #1875 Supervisor.buildFile / _fileOpenResult:
> <null>
> │ 00:00:59 v #1876 Supervisor.buildFile / before result: 
> ()
> │ 00:00:59 v #2116 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:59 v #2117 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:59 v #2118 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:59 v #2119 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:59 v #2120 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 }",
>         [[]]
>     )
> )
> 
> ── [ 345.59ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:00:59 v #2140 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:59 v #2141 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:59 v #2142 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:59 v #2143 Supervisor.buildFile / fullPathUri: 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/9fee147a
> 19a3a90ab5113d3c8fb7b0b2072de018aa3d73cd2d4eb0e7e7a32620/src/main.spi"
> │ 00:00:59 v #2144 Supervisor.buildFile / _fileOpenResult:
> <null>
> │ 00:00:59 v #2145 Supervisor.buildFile / before result: 
> ()
> │ 00:01:00 v #2382 Supervisor.buildFile / buildFileResult:
> Some "pub fn main () { 0.3325000000000001
> │  }"
> │ 00:01:00 v #2383 Supervisor.buildFile / 
> outputContentSeq2 unfoldAsync / msg: (Some "pub fn main () { 0.3325000000000001
> │  }", [], 0)
> │ 00:01:00 v #2384 Supervisor.buildFile / ofSeqAsync / x: 
> (Some "pub fn main () { 0.3325000000000001
> │  }", [], 0)
> │ 00:01:00 v #2385 Supervisor.buildFile / result: [] / 
> buildFileResult: Some "pub fn main () { 0.3325000000000001
> │  }" / typeErrorCount: 0
> │ 00:01:00 v #2386 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 ()}"
> 
> ── [ 398.16ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:01:00 v #2411 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce
> 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi
> │ 00:01:00 v #2412 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:01:00 v #2413 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce
> 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi
> │ 00:01:00 v #2414 Supervisor.buildFile / fullPathUri: 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d9
> 7e6b50ce3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi"
> │ 00:01:00 v #2415 Supervisor.buildFile / _fileOpenResult:
> <null>
> │ 00:01:00 v #2416 Supervisor.buildFile / before result: 
> ()
> │ 00:01:00 v #2653 Supervisor.buildFile / buildFileResult:
> Some "0.33332500000000004
> │ "
> │ 00:01:00 v #2654 Supervisor.buildFile / 
> outputContentSeq2 unfoldAsync / msg: (Some "0.33332500000000004
> │ ", [], 0)
> │ 00:01:00 v #2655 Supervisor.buildFile / ofSeqAsync / x: 
> (Some "0.33332500000000004
> │ ", [], 0)
> │ 00:01:00 v #2656 Supervisor.buildFile / result: [] / 
> buildFileResult: Some "0.33332500000000004
> │ " / typeErrorCount: 0
> │ 00:01:00 v #2657 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." ]]
>     )
> )
> 
> ── [ 464.56ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:01:00 v #2681 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9
> 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi
> │ 00:01:00 v #2682 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:01:00 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:01:00 v #2684 Supervisor.buildFile / fullPathUri: 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342cc
> c7da0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi"
> │ 00:01:00 v #2685 Supervisor.buildFile / _fileOpenResult:
> <null>
> │ 00:01:00 v #2686 Supervisor.buildFile / before result: 
> ()
> │ 00:01:00 v #2927 Supervisor.buildFile / buildFileResult:
> None
> │ 00:01:00 v #2928 Supervisor.buildFile / ofSeqAsync / x: 
> (None, [], 0)
> │ 00:01:00 v #2941 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:01:00 v #2942 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:01:00 v #2948 Supervisor.buildFile / outputChild / x:
> Some
> │   (Ok
> │      (Some
> │         (None,
> │          [("Cannot find `main` in file main.",
> │            FatalError "Cannot find `main` in file main.")], 
> 0)))
> │ 00:01:00 v #2950 Supervisor.buildFile / ofSeqAsync / x: 
> (None,
> │  [("Cannot find `main` in file main.",
> │    FatalError "Cannot find `main` in file main.")], 0)
> │ 00:01:00 v #2951 Supervisor.buildFile / result: 
> [("Cannot find `main` in file main.",
> │   FatalError "Cannot find `main` in file main.")] / 
> buildFileResult: None / typeErrorCount: 0
> │ 00:01:00 v #2952 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." ]]
>     )
> )
> 
> ── [ 329.37ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:01:01 v #2970 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi
> │ 00:01:01 v #2971 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:01:01 v #2972 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi
> │ 00:01:01 v #2973 Supervisor.buildFile / fullPathUri: 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d
> 9b06b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi"
> │ 00:01:01 v #2974 Supervisor.buildFile / _fileOpenResult:
> <null>
> │ 00:01:01 v #2975 Supervisor.buildFile / before result: 
> ()
> │ 00:01:01 v #3212 Supervisor.buildFile / buildFileResult:
> None
> │ 00:01:01 v #3213 Supervisor.buildFile / ofSeqAsync / x: 
> (None, [], 0)
> │ 00:01:01 v #3214 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:01:01 v #3215 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:01:01 v #3217 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:01:01 v #3218 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:01:01 v #3219 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:01:01 v #3220 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." ]]
>     )
> )
> 
> ── [ 361.76ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:01:01 v #3238 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:01 v #3239 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:01 v #3240 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:01 v #3241 Supervisor.buildFile / fullPathUri: 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/66752865
> 9dc2e5af51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi"
> │ 00:01:01 v #3242 Supervisor.buildFile / _fileOpenResult:
> <null>
> │ 00:01:01 v #3243 Supervisor.buildFile / before result: 
> ()
> │ 00:01:01 v #3480 Supervisor.buildFile / buildFileResult:
> None
> │ 00:01:01 v #3481 Supervisor.buildFile / ofSeqAsync / x: 
> (None, [], 0)
> │ 00:01:01 v #3482 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:01 v #3483 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:01 v #3485 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:01 v #3486 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:01 v #3487 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:01 v #3488 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." ]]
>     )
> )
> 
> ── [ 327.56ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:01:01 v #3507 Supervisor.buildFile / 
> takeWhileInclusive / outputContent:
> │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79
> 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi
> │ 00:01:01 v #3508 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:01:01 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:01:01 v #3510 Supervisor.buildFile / fullPathUri: 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42
> df309b790acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi"
> │ 00:01:01 v #3511 Supervisor.buildFile / _fileOpenResult:
> <null>
> │ 00:01:01 v #3512 Supervisor.buildFile / before result: 
> ()
> │ 00:01:02 v #3747 Supervisor.buildFile / buildFileResult:
> None
> │ 00:01:02 v #3748 Supervisor.buildFile / ofSeqAsync / x: 
> (None, [], 0)
> │ 00:01:02 v #3749 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:02 v #3750 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:02 v #3752 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:02 v #3753 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:02 v #3754 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:02 v #3755 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." ]]
>     )
> )
> 
> ── [ 368.12ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:01:02 v #3773 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:02 v #3774 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:02 v #3775 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:02 v #3776 Supervisor.buildFile / fullPathUri: 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/66752865
> 9dc2e5af51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi"
> │ 00:01:02 v #3777 Supervisor.buildFile / _fileOpenResult:
> <null>
> │ 00:01:02 v #3778 Supervisor.buildFile / before result: 
> ()
> │ 00:01:02 v #4015 Supervisor.buildFile / buildFileResult:
> None
> │ 00:01:02 v #4016 Supervisor.buildFile / ofSeqAsync / x: 
> (None, [], 0)
> │ 00:01:02 v #4017 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:02 v #4018 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:02 v #4020 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:02 v #4021 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:02 v #4022 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:02 v #4023 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"
>         ]]
>     )
> )
> 
> ── [ 218.38ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:01:02 v #4042 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:02 v #4043 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:02 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:02 v #4045 Supervisor.buildFile / fullPathUri: 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f
> 8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"
> │ 00:01:02 v #4046 Supervisor.buildFile / _fileOpenResult:
> <null>
> │ 00:01:02 v #4047 Supervisor.buildFile / before result: 
> ()
> │ 00:01:02 v #4101 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:02 v #4103 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:02 v #4128 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:02 v #4130 Supervisor.buildFile / 
> takeWhileInclusive / TypeErrors trigger
> │ 00:01:02 v #4134 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:02 v #4135 Supervisor.buildFile / outputChild |> 
> Async.map
> │ 00:01:02 v #4138 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:02 v #4141 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:02 v #4144 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:02 v #4145 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:02 v #4148 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."
>         ]]
>     )
> )
> 
> ── [ 215.03ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:01:02 v #4313 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:02 v #4314 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:02 v #4315 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:02 v #4316 Supervisor.buildFile / fullPathUri: 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec50
> 7f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi"
> │ 00:01:02 v #4317 Supervisor.buildFile / _fileOpenResult:
> <null>
> │ 00:01:02 v #4318 Supervisor.buildFile / before result: 
> ()
> │ 00:01:02 v #4357 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:02 v #4359 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:02 v #4363 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:02 v #4364 Supervisor.buildFile / 
> takeWhileInclusive / TypeErrors trigger
> │ 00:01:02 v #4368 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:02 v #4369 Supervisor.buildFile / outputChild |> 
> Async.map
> │ 00:01:02 v #4372 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:02 v #4375 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:02 v #4378 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:02 v #4379 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:02 v #4381 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 ()}"
> 
> ── [ 216.99ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:01:03 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:03 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:03 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:03 v #4587 Supervisor.buildFile / fullPathUri: 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123
> fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi"
> │ 00:01:03 v #4588 Supervisor.buildFile / _fileOpenResult:
> <null>
> │ 00:01:03 v #4589 Supervisor.buildFile / before result: 
> ()
> │ 00:01:03 v #4629 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:03 v #4631 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:03 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:03 v #4635 Supervisor.buildFile / 
> takeWhileInclusive / TypeErrors trigger
> │ 00:01:03 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:03 v #4639 Supervisor.buildFile / outputChild |> 
> Async.map
> │ 00:01:03 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:03 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:03 v #4646 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:03 v #4647 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:03 v #4649 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 codeDir = fullPath |> 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 ->
>         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
> 
>         if codeDir |> SpiralSm.starts_with (workspaceRoot </> "target") then
>             let fileDirUri = codeDir |> 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 = 
> [[||]] |}
>     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 |]])
> 
> ── [ 487.50ms - 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 |]])
> 
> ── [ 2.59s - 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 "() -> ()")
> 
> ── [ 200.85ms - stdout ] ───────────────────────────────────────────────────────
> │ Some "() -> ()"
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> getCodeHoverAt None """inl main () = ()""" {| line = 0; character = 0 |}
> |> Async.runWithTimeout 10000
> |> Option.flatten
> |> _assertEqual (Some null)
> 
> ── [ 183.32ms - 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")
> 
> ── [ 185.18ms - 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")
> 
> ── [ 188.32ms - 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 ()
> 
> ── [ 81.43ms - 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"
> 
> ── [ 69.84ms - 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:23 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 312906 }
00:01:23 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:24 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb to html
00:01:24 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:24 v #7 !   validate(nb)
00:01:24 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:24 v #9 !   return _pygments_highlight(
00:01:26 v #10 ! [NbConvertApp] Writing 750381 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.html
00:01:26 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 908 }
00:01:26 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 908 }
00:01:26 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:26 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:01:26 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:01:26 d #16 spiral.run / dib / { exit_code = 0; result_length = 313873 }
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: 40697
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 288 ms).
00:00:30 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
> 
> ── [ 182.43ms - stdout ] ───────────────────────────────────────────────────────
> │ 2.1.1
> │ 6.0.0
> │ 8.0.1
> │ 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 = 54769 }
00:01:17 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: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:01:18 v #9 !   return _pygments_highlight(
00:01:18 v #10 ! [NbConvertApp] Writing 466872 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:19 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:01:19 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:01:19 d #16 spiral.run / dib / { exit_code = 0; result_length = 55724 }
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:46 d #10 runtime.execute_with_options_async / { exit_code = 0; output_length = 96224; 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:46 d #5 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path FileSystem.dib --retries 3
00:01:46 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:04 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:04 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: Async.dib
00:00:00 d #1 writeDibCode / output: Fs / path: AsyncSeq.dib
00:00:00 d #1 writeDibCode / output: Fs / path: CommonFSharp.dib
00:00:00 d #2 parseDibCode / output: Fs / file: CommonFSharp.dib
00:00:00 d #3 parseDibCode / output: Fs / file: Common.dib
00:00:00 d #4 parseDibCode / output: Fs / file: Async.dib
00:00:00 d #4 parseDibCode / output: Fs / file: AsyncSeq.dib
00:00:00 d #6 writeDibCode / output: Fs / path: FileSystem.dib
00:00:00 d #8 parseDibCode / output: Fs / file: FileSystem.dib
00:00:00 d #6 writeDibCode / output: Fs / path: Runtime.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: 375569
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! @theimowski
Stand with Ukraine! https://standwithukraine.com.ua/

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

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 9970ms

./deps/spiral/lib/spiral/common.fsx(2339,0): (2339,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(252,0): (252,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(2569,0): (2569,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(5637,0): (5637,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(2897,0): (2897,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(9581,0): (9581,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(21240,0): (21240,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 actix-rt v2.10.0
  Downloaded base64ct v1.7.3
  Downloaded arbitrary v1.4.1
  Downloaded actix v0.13.5
  Downloaded async-stream v0.3.6
  Downloaded strum_macros v0.24.3
  Downloaded smallvec v1.14.0
  Downloaded prost v0.12.6
  Downloaded reed-solomon-erasure v4.0.2
  Downloaded sync_wrapper v0.1.2
  Downloaded tokio-retry v0.3.0
  Downloaded idna_adapter v1.2.0
  Downloaded icu_locid v1.5.0
  Downloaded near-config-utils v0.23.0
  Downloaded zvariant_derive v3.15.2
  Downloaded newline-converter v0.3.0
  Downloaded near-stdx v0.23.0
  Downloaded num v0.4.3
  Downloaded once_cell v1.21.1
  Downloaded ordered-float v4.6.0
  Downloaded openssl-sys v0.9.106
  Downloaded opentelemetry_sdk v0.22.1
  Downloaded near-abi-client-macros v0.1.1
  Downloaded openssl v0.10.71
  Downloaded nix v0.26.4
  Downloaded near-crypto v0.23.0
  Downloaded near-sdk-macros v5.11.0
  Downloaded near_schemafy_lib v0.7.0
  Downloaded near-socialdb-client v0.3.2
  Downloaded near-chain-configs v0.23.0
  Downloaded near-o11y v0.23.0
  Downloaded near-token v0.2.1
  Downloaded near-time v0.23.0
  Downloaded near-sandbox-utils v0.9.0
  Downloaded near-jsonrpc-primitives v0.23.0
  Downloaded near-parameters v0.23.0
  Downloaded sha3 v0.10.8
  Downloaded tokio v1.44.1
  Downloaded near-rpc-error-macro v0.23.0
  Downloaded near-performance-metrics v0.23.0
  Downloaded near-async v0.23.0
  Downloaded interactive-clap v0.2.10
  Downloaded near-rpc-error-core v0.23.0
  Downloaded linux-raw-sys v0.9.3
  Downloaded jiff v0.2.5
  Downloaded interactive-clap-derive v0.2.10
  Downloaded near-jsonrpc-client v0.10.1
  Downloaded near-sandbox-utils v0.14.0
  Downloaded unicode-width v0.2.0
  Downloaded webpki-roots v0.26.8
  Downloaded mio v0.8.11
  Downloaded linux-raw-sys v0.3.8
  Downloaded near-workspaces v0.11.1
  Downloaded near-primitives-core v0.23.0
  Downloaded near-fmt v0.23.0
  Downloaded secp256k1-sys v0.8.1
  Downloaded near-token v0.3.0
  Downloaded near-sys v0.2.2
  Downloaded winnow v0.7.4
  Downloaded tracing-opentelemetry v0.23.0
  Downloaded rustls-webpki v0.103.0
  Downloaded wasmparser v0.211.1
  Downloaded opentelemetry-semantic-conventions v0.14.0
  Downloaded opentelemetry v0.22.0
  Downloaded opaque-debug v0.3.1
  Downloaded num-rational v0.4.2
  Downloaded near-abi v0.4.3
  Downloaded mio v1.0.3
  Downloaded litemap v0.7.5
  Downloaded zvariant v3.15.2
  Downloaded zbus v3.15.2
  Downloaded ureq v2.12.1
  Downloaded unicode-normalization v0.1.22
  Downloaded toml_edit v0.22.24
  Downloaded serde_with v3.12.0
  Downloaded num-rational v0.3.2
  Downloaded num-complex v0.4.6
  Downloaded num-bigint v0.3.3
  Downloaded near-account-id v1.0.0
  Downloaded near-abi-client-impl v0.1.1
  Downloaded near-abi-client v0.1.1
  Downloaded near-sandbox-utils v0.8.0
  Downloaded near-async-derive v0.23.0
  Downloaded linux-keyutils v0.2.4
  Downloaded inquire v0.7.5
  Downloaded indexmap v2.8.0
  Downloaded wasmparser v0.83.0
  Downloaded tokio-util v0.7.14
  Downloaded nom-supreme v0.6.0
  Downloaded names v0.14.0
  Downloaded keyring v2.3.3
  Downloaded indexmap v1.9.3
  Downloaded icu_properties_data v1.5.0
  Downloaded miniz_oxide v0.8.5
  Downloaded tonic v0.11.0
  Downloaded textwrap v0.16.2
  Downloaded symbolic-debuginfo v8.8.0
  Downloaded libloading v0.8.6
  Downloaded json_comments v0.2.2
  Downloaded icu_provider_macros v1.5.0
  Downloaded icu_normalizer_data v1.5.0
  Downloaded icu_normalizer v1.5.0
  Downloaded icu_locid_transform v1.5.0
  Downloaded zerovec-derive v0.10.3
  Downloaded new_debug_unreachable v1.0.6
  Downloaded miniz_oxide v0.7.4
  Downloaded matchit v0.7.3
  Downloaded xml-rs v0.8.25
  Downloaded vte v0.11.1
  Downloaded scroll v0.11.0
  Downloaded gimli v0.26.2
  Downloaded cargo-near v0.6.4
  Downloaded keccak v0.1.5
  Downloaded openssl-src v300.4.2+3.4.1
  Downloaded jsonptr v0.4.7
  Downloaded indent_write v2.2.0
  Downloaded ident_case v1.0.1
  Downloaded icu_provider v1.5.0
  Downloaded icu_properties v1.5.1
  Downloaded icu_locid_transform_data v1.5.0
  Downloaded near-cli-rs v0.11.1
  Downloaded zvariant_utils v1.0.1
  Downloaded near-gas v0.3.0
  Downloaded near-sdk v5.11.0
  Downloaded near-gas v0.2.5
  Downloaded memmap2 v0.5.10
  Downloaded json-patch v2.0.0
  Downloaded near-primitives v0.23.0
  Downloaded zbus_macros v3.15.2
  Downloaded yoke v0.7.5
  Downloaded uuid v0.8.2
  Downloaded unicode-linebreak v0.1.5
  Downloaded uint v0.9.5
  Downloaded tracing-attributes v0.1.28
  Downloaded tracing-appender v0.2.3
  Downloaded socket2 v0.4.10
  Downloaded secret-service v3.1.0
  Downloaded secp256k1 v0.27.0
  Downloaded polling v2.8.0
  Downloaded hyper v0.14.32
  Downloaded h2 v0.3.26
  Downloaded gimli v0.28.1
  Downloaded color-eyre v0.6.3
  Downloaded zstd-safe v5.0.2+zstd.1.5.2
  Downloaded zstd v0.11.2+zstd.1.5.2
  Downloaded zip v0.5.13
  Downloaded ordered-stream v0.2.0
  Downloaded near_schemafy_core v0.7.0
  Downloaded memoffset v0.7.1
  Downloaded joinery v2.1.0
  Downloaded io-lifetimes v1.0.11
  Downloaded indicatif v0.17.11
  Downloaded icu_collections v1.5.0
  Downloaded hyper-util v0.1.10
  Downloaded hyper-timeout v0.4.1
  Downloaded zerovec v0.10.4
  Downloaded opentelemetry-proto v0.5.0
  Downloaded opentelemetry-otlp v0.15.0
  Downloaded zbus_names v2.6.1
  Downloaded yoke-derive v0.7.5
  Downloaded xdg-home v1.3.0
  Downloaded xattr v1.5.0
  Downloaded writeable v0.5.5
  Downloaded vt100 v0.15.2
  Downloaded utf16_iter v1.0.5
  Downloaded tracing-indicatif v0.3.9
  Downloaded tracing-error v0.2.1
  Downloaded tracing-core v0.1.33
  Downloaded toml v0.8.20
  Downloaded tinystr v0.7.6
  Downloaded synstructure v0.13.1
  Downloaded symbolic-common v8.8.0
  Downloaded socket2 v0.5.8
  Downloaded smawk v0.3.2
  Downloaded smart-default v0.7.1
  Downloaded smart-default v0.6.0
  Downloaded signal-hook-registry v1.4.2
  Downloaded serde_repr v0.1.20
  Downloaded scroll_derive v0.11.1
  Downloaded hashbrown v0.15.2
  Downloaded h2 v0.4.8
  Downloaded goblin v0.5.4
  Downloaded futures-lite v1.13.0
  Downloaded fastrand v1.9.0
  Downloaded elementtree v0.7.0
  Downloaded derive_more v0.99.19
  Downloaded color-spantrace v0.2.1
  Downloaded password-hash v0.4.2
  Downloaded write16 v1.0.0
  Downloaded tokio-io-timeout v1.2.0
  Downloaded strum v0.24.1
  Downloaded signal-hook-mio v0.2.4
  Downloaded signal-hook v0.3.17
  Downloaded fallible-iterator v0.2.0
  Downloaded env_logger v0.11.7
  Downloaded ed25519 v2.2.3
  Downloaded http v0.2.12
  Downloaded flate2 v1.1.0
  Downloaded owo-colors v3.5.0
  Downloaded waker-fn v1.2.0
  Downloaded vte_generate_state_changes v0.1.2
  Downloaded urlencoding v2.1.3
  Downloaded uriparse v0.6.4
  Downloaded shellexpand v3.1.0
  Downloaded rustversion v1.0.20
  Downloaded hmac v0.9.0
  Downloaded heck v0.4.1
  Downloaded fuzzy-matcher v0.3.7
  Downloaded enum-map-derive v0.17.0
  Downloaded ed25519-dalek v2.1.1
  Downloaded easy-ext v1.0.2
  Downloaded easy-ext v0.2.9
  Downloaded deranged v0.4.1
  Downloaded debugid v0.7.3
  Downloaded cargo_metadata v0.18.1
  Downloaded bytesize v1.3.2
  Downloaded blake2 v0.10.6
  Downloaded binary-install v0.2.0
  Downloaded axum v0.6.20
  Downloaded async-lock v2.8.0
  Downloaded async-executor v1.13.1
  Downloaded term v0.7.0
  Downloaded tempfile v3.19.1
  Downloaded string_cache v0.8.8
  Downloaded slipped10 v0.4.6
  Downloaded serde_yaml v0.9.34+deprecated
  Downloaded scroll v0.10.2
  Downloaded rustls-pki-types v1.11.0
  Downloaded http-body v0.4.6
  Downloaded hex-conservative v0.1.2
  Downloaded hex v0.3.2
  Downloaded glob v0.3.2
  Downloaded fs2 v0.4.3
  Downloaded fluent-uri v0.1.4
  Downloaded fixed-hash v0.7.0
  Downloaded event-listener v2.5.3
  Downloaded errno v0.3.10
  Downloaded enumflags2_derive v0.7.11
  Downloaded enumflags2 v0.7.11
  Downloaded enum-map v2.7.3
  Downloaded encode_unicode v1.0.0
  Downloaded dmsort v1.0.2
  Downloaded digest v0.9.0
  Downloaded derive_arbitrary v1.4.1
  Downloaded curve25519-dalek-derive v0.1.1
  Downloaded curve25519-dalek v4.1.3
  Downloaded crypto-mac v0.9.1
  Downloaded crypto-hash v0.3.4
  Downloaded crossterm v0.25.0
  Downloaded colored v2.2.0
  Downloaded bs58 v0.5.1
  Downloaded brownstone v1.1.0
  Downloaded borsh-derive v1.5.6
  Downloaded bitcoin_hashes v0.13.0
  Downloaded bitcoin-internals v0.2.0
  Downloaded async-io v1.13.0
  Downloaded async-broadcast v0.5.1
  Downloaded sha2 v0.9.9
  Downloaded serde_with_macros v3.12.0
  Downloaded rustls v0.23.25
  Downloaded rustix v1.0.3
  Downloaded rustix v0.37.28
  Downloaded rust_decimal v1.37.1
  Downloaded reqwest v0.12.15
  Downloaded protobuf v2.28.0
  Downloaded prometheus v0.13.4
  Downloaded portable-atomic v1.11.0
  Downloaded dirs v5.0.1
  Downloaded derivative v2.2.0
  Downloaded darling_core v0.20.10
  Downloaded darling v0.20.10
  Downloaded csv-core v0.1.12
  Downloaded csv v1.3.1
  Downloaded crunchy v0.2.3
  Downloaded convert_case v0.5.0
  Downloaded constant_time_eq v0.1.5
  Downloaded cc v1.2.17
  Downloaded cargo-util v0.1.2
  Downloaded bs58 v0.4.0
  Downloaded borsh v1.5.6
  Downloaded axum-core v0.3.4
  Downloaded atty v0.2.14
  Downloaded async-stream-impl v0.3.6
  Downloaded async-fs v1.6.0
  Downloaded prettytable v0.10.0
  Downloaded prettyplease v0.1.25
  Downloaded pdb v0.7.0
  Downloaded darling_macro v0.20.10
  Downloaded bitflags v2.9.0
  Downloaded bip39 v2.1.0
  Downloaded async-recursion v1.1.1
  Downloaded proc-macro-error v1.0.4
  Downloaded proc-macro-crate v3.3.0
  Downloaded primitive-types v0.10.1
  Downloaded crossbeam-channel v0.5.14
  Downloaded clap_derive v4.5.32
  Downloaded backtrace v0.3.71
  Downloaded prost-derive v0.12.6
  Downloaded proc-macro-error-attr v1.0.4
  Downloaded proc-macro-crate v1.3.1
  Downloaded hyper-rustls v0.27.5
  Downloaded plain v0.2.3
  Downloaded pbkdf2 v0.11.0
  Downloaded block-buffer v0.9.0
  Downloaded anyhow v1.0.97
  Downloaded actix_derive v0.6.2
  Downloaded actix-macros v0.2.4
  Downloaded adler v1.0.2
  Downloaded addr2line v0.21.0
  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 once_cell v1.21.1
   Compiling jobserver v0.1.32
   Compiling generic-array v0.14.7
   Compiling smallvec v1.14.0
   Compiling cc v1.2.17
   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 hashbrown v0.15.2
   Compiling equivalent v1.0.2
   Compiling toml_datetime v0.6.8
   Compiling mio v1.0.3
   Compiling socket2 v0.5.8
   Compiling indexmap v2.8.0
   Compiling tracing-core v0.1.33
   Compiling synstructure v0.13.1
   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 cfg_aliases v0.2.1
   Compiling syn v1.0.109
   Compiling fnv v1.0.7
   Compiling digest v0.10.7
   Compiling winnow v0.7.4
   Compiling zstd-sys v2.0.15+zstd.1.5.7
   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 zerovec-derive v0.10.3
   Compiling tracing-attributes v0.1.28
   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 crossbeam-utils v0.8.21
   Compiling rustversion v1.0.20
   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 serde_json v1.0.140
   Compiling byteorder v1.5.0
   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 percent-encoding v2.3.1
   Compiling semver v1.0.26
   Compiling zerofrom v0.1.6
   Compiling bitflags v1.3.2
   Compiling yoke v0.7.5
   Compiling num-integer v0.1.46
   Compiling tower-service v0.3.3
   Compiling memchr v2.7.4
   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 static_assertions v1.1.0
   Compiling typenum v1.18.0
   Compiling tinystr v0.7.6
   Compiling http v0.2.12
   Compiling thread_local v1.1.8
   Compiling writeable v0.5.5
   Compiling powerfmt v0.2.0
   Compiling regex-syntax v0.6.29
   Compiling litemap v0.7.5
   Compiling icu_locid v1.5.0
   Compiling deranged v0.4.1
   Compiling regex-automata v0.1.10
   Compiling openssl-src v300.4.2+3.4.1
   Compiling num_cpus v1.16.0
   Compiling time-core v0.1.4
   Compiling vcpkg v0.2.15
   Compiling tower-layer v0.3.3
   Compiling overload v0.1.1
   Compiling num-conv v0.1.0
   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 pin-project-internal v1.1.10
   Compiling serde_repr v0.1.20
   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 base64 v0.21.7
   Compiling regex-syntax v0.8.5
   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.10
   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 icu_properties_data v1.5.0
   Compiling mime v0.3.17
   Compiling either v1.15.0
   Compiling hashbrown v0.12.3
   Compiling base64 v0.22.1
   Compiling strsim v0.11.1
   Compiling ident_case v1.0.1
   Compiling convert_case v0.4.0
   Compiling httpdate v1.0.3
   Compiling derive_more v0.99.19
   Compiling hyper v0.14.32
   Compiling darling_core v0.20.10
   Compiling itertools v0.12.1
   Compiling icu_properties v1.5.1
   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 signature v2.2.0
   Compiling heck v0.4.1
   Compiling rustls-pki-types v1.11.0
   Compiling rustls v0.23.25
   Compiling utf8_iter v1.0.4
   Compiling icu_normalizer_data v1.5.0
   Compiling heck v0.5.0
   Compiling urlencoding v2.1.3
   Compiling write16 v1.0.0
   Compiling bs58 v0.4.0
   Compiling schemars v0.8.22
   Compiling utf16_iter v1.0.5
   Compiling icu_normalizer v1.5.0
   Compiling opentelemetry v0.22.0
   Compiling strum_macros v0.24.3
   Compiling ed25519 v2.2.3
   Compiling enum-map v2.7.3
   Compiling arbitrary v1.4.1
   Compiling prost-derive v0.12.6
   Compiling darling_macro v0.20.10
   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 openssl v0.10.71
   Compiling sync_wrapper v0.1.2
   Compiling matchit v0.7.3
   Compiling foreign-types-shared v0.1.1
   Compiling glob v0.3.2
   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 protobuf v2.28.0
   Compiling rustix v1.0.3
   Compiling winnow v0.5.40
   Compiling fastrand v2.3.0
   Compiling json_comments v0.2.2
   Compiling near-config-utils v0.23.0
   Compiling idna v1.0.3
   Compiling primitive-types v0.10.1
   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_derive v0.6.2
   Compiling actix-macros v0.2.4
   Compiling hmac v0.12.1
   Compiling blake2 v0.10.6
   Compiling proc-macro-error-attr v1.0.4
   Compiling near-stdx v0.23.0
   Compiling linux-raw-sys v0.9.3
   Compiling adler2 v2.0.0
   Compiling itoa v1.0.15
   Compiling prometheus v0.13.4
   Compiling zstd-safe v7.2.4
   Compiling ryu v1.0.20
   Compiling arrayvec v0.7.6
   Compiling clap_builder v4.5.32
   Compiling miniz_oxide v0.8.5
   Compiling near-crypto v0.23.0
   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 io-lifetimes v1.0.11
   Compiling event-listener v2.5.3
   Compiling reed-solomon-erasure v4.0.2
   Compiling cpufeatures v0.2.17
   Compiling opentelemetry-semantic-conventions v0.14.0
   Compiling unsafe-libyaml v0.2.11
   Compiling native-tls v0.2.14
   Compiling serde_yaml v0.9.34+deprecated
   Compiling opentelemetry-otlp v0.15.0
   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 untrusted v0.9.0
   Compiling dyn-clone v1.0.19
   Compiling waker-fn v1.2.0
   Compiling keccak v0.1.5
   Compiling openssl-probe v0.1.6
   Compiling rustix v0.37.28
   Compiling fastrand v1.9.0
   Compiling getrandom v0.3.2
   Compiling itertools v0.10.5
   Compiling futures-lite v1.13.0
   Compiling sha3 v0.10.8
   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-io v1.13.0
   Compiling async-fs v1.6.0
   Compiling proc-macro2 v1.0.94
   Compiling linux-raw-sys v0.3.8
   Compiling base64ct v1.7.3
   Compiling unicode-width v0.1.14
   Compiling easy-ext v0.2.9
   Compiling unicode-ident v1.0.18
   Compiling signal-hook v0.3.17
   Compiling near-primitives v0.23.0
   Compiling password-hash v0.4.2
   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 portable-atomic v1.11.0
   Compiling gimli v0.28.1
   Compiling adler v1.0.2
   Compiling bitcoin-internals v0.2.0
   Compiling zeroize v1.8.1
   Compiling unicode-width v0.2.0
   Compiling eyre v0.6.12
   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 pbkdf2 v0.11.0
   Compiling near-chain-configs v0.23.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 quote v1.0.40
   Compiling xattr v1.5.0
   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 digest v0.9.0
   Compiling mio v0.8.11
   Compiling xdg-home v1.3.0
   Compiling ordered-stream v0.2.0
   Compiling object v0.32.2
   Compiling radium v0.7.0
   Compiling ipnet v2.11.0
   Compiling tinyvec_macros v0.1.1
   Compiling uuid v0.8.2
   Compiling constant_time_eq v0.1.5
   Compiling zerocopy v0.7.35
   Compiling option-ext v0.2.0
   Compiling rustc-demangle v0.1.24
   Compiling owo-colors v3.5.0
   Compiling siphasher v1.0.1
   Compiling indenter v0.3.3
   Compiling color-spantrace v0.2.1
   Compiling phf_shared v0.11.3
   Compiling zip v0.6.6
   Compiling dirs-sys v0.4.1
   Compiling ureq v2.12.1
   Compiling tinyvec v1.9.0
   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 fs2 v0.4.3
   Compiling is-docker v0.2.0
   Compiling csv-core v0.1.12
   Compiling precomputed-hash v0.1.1
   Compiling tap v1.0.1
   Compiling opaque-debug v0.3.1
   Compiling pin-project-lite v0.2.16
   Compiling new_debug_unreachable v1.0.6
   Compiling camino v1.1.9
   Compiling is_executable v0.1.2
   Compiling unicode-segmentation v1.12.0
   Compiling hex-conservative v0.1.2
   Compiling number_prefix v0.4.0
   Compiling same-file v1.0.6
   Compiling near-sandbox-utils v0.8.0
   Compiling hex v0.3.2
   Compiling fallible-iterator v0.2.0
   Compiling rust_decimal v1.37.1
   Compiling siphasher v0.3.11
   Compiling iana-time-zone v0.1.62
   Compiling minimal-lexical v0.2.1
   Compiling binary-install v0.2.0
   Compiling nom v7.1.3
   Compiling walkdir v2.5.0
   Compiling indicatif v0.17.11
   Compiling bitcoin_hashes v0.13.0
   Compiling newline-converter v0.3.0
   Compiling string_cache v0.8.8
   Compiling sha2 v0.9.9
   Compiling wyz v0.5.1
   Compiling csv v1.3.1
   Compiling is-wsl v0.4.0
   Compiling scroll v0.11.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 dirs v5.0.1
   Compiling hashbrown v0.14.5
   Compiling color-eyre v0.6.3
   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 prettyplease v0.1.25
   Compiling scroll v0.10.2
   Compiling shell-escape v0.1.5
   Compiling names v0.14.0
   Compiling smawk v0.3.2
   Compiling indent_write v2.2.0
   Compiling pathdiff v0.2.3
   Compiling xml-rs v0.8.25
   Compiling unicode-linebreak v0.1.5
   Compiling bs58 v0.5.1
   Compiling joinery v2.1.0
   Compiling home v0.5.11
   Compiling encode_unicode v1.0.0
   Compiling funty v2.0.0
   Compiling plain v0.2.3
   Compiling goblin v0.5.4
   Compiling bitvec v1.0.1
   Compiling prettytable v0.10.0
   Compiling elementtree v0.7.0
   Compiling nom-supreme v0.6.0
   Compiling textwrap v0.16.2
   Compiling open v5.3.2
   Compiling pdb v0.7.0
   Compiling symbolic-common v8.8.0
   Compiling keyring v2.3.3
   Compiling inquire v0.7.5
   Compiling wasmparser v0.211.1
   Compiling bip39 v2.1.0
   Compiling shellexpand v3.1.0
   Compiling near-abi-client-impl v0.1.1
   Compiling slipped10 v0.4.6
   Compiling toml v0.8.20
   Compiling tracing-indicatif v0.3.9
   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 jiff v0.2.5
   Compiling wasmparser v0.83.0
   Compiling near-sdk-macros v5.11.0
   Compiling lazycell v1.3.0
   Compiling shell-words v1.1.0
   Compiling easy-ext v1.0.2
   Compiling near-sandbox-utils v0.9.0
   Compiling dmsort v1.0.2
   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 near-sandbox-utils v0.14.0
   Compiling strum v0.26.3
   Compiling convert_case v0.5.0
   Compiling dunce v1.0.5
   Compiling near-abi-client v0.1.1
   Compiling json-patch v2.0.0
   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 30s
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.77s - 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.89s - 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
> 
> ── [ 7.02s - 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.54s - 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.28s - 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.15s - 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
> 
> ── [ 7.10s - 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
> 
> ── [ 7.07s - 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.01s - 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.41s - 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.15s - 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.38s - 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.20s - 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:01 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 79006 }
00:02:01 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:02 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb to html
00:02:02 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:02 v #7 !   validate(nb)
00:02:02 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:02 v #9 !   return _pygments_highlight(
00:02:03 v #10 ! [NbConvertApp] Writing 7174417 bytes to /home/runner/work/polyglot/polyglot/lib/math/math.dib.html
00:02:03 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 891 }
00:02:03 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 891 }
00:02:03 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:04 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:02:04 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:02:04 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 280 ms).
00:00:12 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! @theimowski
Stand with Ukraine! https://standwithukraine.com.ua/

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

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 9376ms

./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/common.fsx(2339,0): (2339,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(252,0): (252,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(2569,0): (2569,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(5637,0): (5637,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(2897,0): (2897,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(9581,0): (9581,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(21240,0): (21240,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/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/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/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/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/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/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/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.
    Updating crates.io index
 Downloading crates ...
  Downloaded rawpointer v0.2.1
  Downloaded unindent v0.2.3
  Downloaded pyo3-macros v0.23.3
  Downloaded bytemuck v1.20.0
  Downloaded nalgebra v0.33.2
  Downloaded unicode-ident v1.0.14
  Downloaded indoc v2.0.5
  Downloaded target-lexicon v0.12.16
  Downloaded simba v0.9.0
  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-ffi v0.23.3
  Downloaded matrixmultiply v0.3.9
  Downloaded pyo3-macros-backend v0.23.3
  Downloaded proc-macro2 v1.0.92
  Downloaded sha2 v0.11.0-pre.4
  Downloaded pyo3-build-config v0.23.3
  Downloaded crypto-common v0.2.0-rc.1
  Downloaded cpufeatures v0.2.16
  Downloaded block-buffer v0.11.0-rc.3
  Downloaded syn v2.0.90
  Downloaded hybrid-array v0.2.3
  Downloaded float-cmp v0.10.0
  Downloaded digest v0.11.0-pre.9
  Downloaded pin-project-lite v0.2.15
  Downloaded const-oid v0.10.0-rc.3
  Downloaded approx v0.5.1
  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 libm v0.2.11
   Compiling unicode-ident v1.0.14
   Compiling num-traits v0.2.19
   Compiling pyo3-build-config v0.23.3
   Compiling quote v1.0.37
   Compiling syn v2.0.90
   Compiling once_cell v1.20.2
   Compiling cfg-if v1.0.0
   Compiling typenum v1.17.0
   Compiling getrandom v0.2.15
   Compiling memchr v2.7.4
   Compiling byteorder v1.5.0
   Compiling slab v0.4.9
   Compiling rand_core v0.6.4
   Compiling futures-sink v0.3.31
   Compiling paste v1.0.15
   Compiling bytemuck v1.20.0
   Compiling futures-core v0.3.31
   Compiling hybrid-array v0.2.3
   Compiling safe_arch v0.7.2
   Compiling futures-channel v0.3.31
   Compiling pyo3-macros-backend v0.23.3
   Compiling pyo3-ffi v0.23.3
   Compiling matrixmultiply v0.3.9
   Compiling futures-io v0.3.31
   Compiling pin-project-lite v0.2.15
   Compiling pin-utils v0.1.0
   Compiling futures-task v0.3.31
   Compiling wide v0.7.30
   Compiling futures-util v0.3.31
   Compiling num-complex v0.4.6
   Compiling approx v0.5.1
   Compiling num-integer v0.1.46
   Compiling num_cpus v1.16.0
   Compiling memoffset v0.9.1
   Compiling rawpointer v0.2.1
   Compiling heck v0.5.0
   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 block-buffer v0.11.0-rc.3
   Compiling rand_chacha v0.3.1
   Compiling crypto-common v0.2.0-rc.1
   Compiling rand v0.8.5
   Compiling rand_distr v0.4.3
   Compiling aho-corasick v1.1.3
   Compiling pyo3 v0.23.3
   Compiling regex-syntax v0.8.5
   Compiling const-oid v0.10.0-rc.3
   Compiling iana-time-zone v0.1.61
   Compiling chrono v0.4.39
   Compiling nalgebra v0.33.2
   Compiling regex-automata v0.4.9
   Compiling digest v0.11.0-pre.9
   Compiling pyo3-macros v0.23.3
   Compiling futures v0.3.31
   Compiling uuid v1.11.0
   Compiling unindent v0.2.3
   Compiling indoc v2.0.5
   Compiling startup v0.1.1 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust/vendored/startup)
   Compiling futures-timer v3.0.3
   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 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.59s
     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_euler_product_formula ... ok
test module_b7a9935b::Math::test_real_part_greater_than_one___ ... ok
test module_b7a9935b::Math::test_non_trivial_zero___ ... ok
test module_b7a9935b::Math::test_critical_strip ... 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_imaginary_axis ... ok
test module_b7a9935b::Math::test_zeta_at_known_values_ ... 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/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/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/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/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.
 Downloading crates ...
  Downloaded plotters-svg v0.3.7
  Downloaded itoa v1.0.14
  Downloaded plotters-backend v0.3.7
  Downloaded plotters v0.3.7
  Downloaded serde_json v1.0.133
  Downloaded serde v1.0.216
   Compiling memchr v2.7.4
   Compiling libc v0.2.168
   Compiling typenum v1.17.0
   Compiling num-traits v0.2.19
   Compiling futures-core v0.3.31
   Compiling futures-sink v0.3.31
   Compiling futures-channel v0.3.31
   Compiling slab v0.4.9
   Compiling futures-task v0.3.31
   Compiling futures-io v0.3.31
   Compiling cfg-if v1.0.0
   Compiling pin-project-lite v0.2.15
   Compiling pin-utils v0.1.0
   Compiling hybrid-array v0.2.3
   Compiling num_cpus v1.16.0
   Compiling futures-util v0.3.31
   Compiling serde v1.0.216
   Compiling block-buffer v0.11.0-rc.3
   Compiling crypto-common v0.2.0-rc.1
   Compiling getrandom v0.2.15
   Compiling aho-corasick v1.1.3
   Compiling serde_json v1.0.133
   Compiling plotters-backend v0.3.7
   Compiling const-oid v0.10.0-rc.3
   Compiling iana-time-zone v0.1.61
   Compiling regex-syntax v0.8.5
   Compiling digest v0.11.0-pre.9
   Compiling chrono v0.4.39
   Compiling futures-executor v0.3.31
   Compiling futures v0.3.31
   Compiling plotters-svg v0.3.7
   Compiling regex-automata v0.4.9
   Compiling uuid v1.11.0
   Compiling startup v0.1.1 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust/vendored/startup)
   Compiling cpufeatures v0.2.16
   Compiling futures-timer v3.0.3
   Compiling itoa v1.0.14
   Compiling ryu v1.0.18
   Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust)
   Compiling sha2 v0.11.0-pre.4
   Compiling regex v1.11.1
   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:649:33
    |
649 |         let v4: string = append((v0.l0.get().clone()), (v1));
    |                                 ^                   ^
    |
    = note: `#[warn(unused_parens)]` on by default
help: remove these parentheses
    |
649 -         let v4: string = append((v0.l0.get().clone()), (v1));
649 +         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:649:56
    |
649 |         let v4: string = append((v0.l0.get().clone()), (v1));
    |                                                        ^  ^
    |
help: remove these parentheses
    |
649 -         let v4: string = append((v0.l0.get().clone()), (v1));
649 +         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:667:13
    |
667 |             (fable_library_rust::String_::fromString(v10)),
    |             ^                                            ^
    |
help: remove these parentheses
    |
667 -             (fable_library_rust::String_::fromString(v10)),
667 +             fable_library_rust::String_::fromString(v10),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:668:13
    |
668 |             (Networking::method13(getCharAt(toLower(string("Verbose")), 0_i32))),
    |             ^                                                                  ^
    |
help: remove these parentheses
    |
668 -             (Networking::method13(getCharAt(toLower(string("Verbose")), 0_i32))),
668 +             Networking::method13(getCharAt(toLower(string("Verbose")), 0_i32)),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:672:16
    |
672 |         append((v139), (fable_library_rust::String_::fromString(v152)))
    |                ^    ^
    |
help: remove these parentheses
    |
672 -         append((v139), (fable_library_rust::String_::fromString(v152)))
672 +         append(v139, (fable_library_rust::String_::fromString(v152)))
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:672:24
    |
672 |         append((v139), (fable_library_rust::String_::fromString(v152)))
    |                        ^                                             ^
    |
help: remove these parentheses
    |
672 -         append((v139), (fable_library_rust::String_::fromString(v152)))
672 +         append((v139), fable_library_rust::String_::fromString(v152))
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:736:13
    |
736 |             (append(
    |             ^
...
748 |             )),
    |              ^
    |
help: remove these parentheses
    |
736 ~             append(
737 |                 (append(
...
747 |                 string(" / "),
748 ~             ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:749:13
    |
749 |             (v10),
    |             ^   ^
    |
help: remove these parentheses
    |
749 -             (v10),
749 +             v10,
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:737:17
    |
737 |                 (append(
    |                 ^
...
746 |                 )),
    |                  ^
    |
help: remove these parentheses
    |
737 ~                 append(
738 |                     (append(
...
745 |                     string("networking.test_port_open"),
746 ~                 ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:738:21
    |
738 |                     (append(
    |                     ^
...
744 |                     )),
    |                      ^
    |
help: remove these parentheses
    |
738 ~                     append(
739 |                         (append(
...
743 |                         string(" "),
744 ~                     ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:739:25
    |
739 |                         (append(
    |                         ^
...
742 |                         )),
    |                          ^
    |
help: remove these parentheses
    |
739 ~                         append(
740 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
741 |                             (toString(v0.l0.get().clone())),
742 ~                         ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:740:29
    |
740 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                       ^                                                                 ^
    |
help: remove these parentheses
    |
740 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
740 +                             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:741:29
    |
741 | ...                   (toString(v0.l0.get().clone())),
    |                       ^                             ^
    |
help: remove these parentheses
    |
741 -                             (toString(v0.l0.get().clone())),
741 +                             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:740:37
    |
740 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                               ^                                         ^
    |
help: remove these parentheses
    |
740 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
740 +                             (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:740:45
    |
740 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                       ^                         ^
    |
help: remove these parentheses
    |
740 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
740 +                             (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:740:74
    |
740 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                                                    ^  ^
    |
help: remove these parentheses
    |
740 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
740 +                             (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:740:53
    |
740 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                               ^  ^
    |
help: remove these parentheses
    |
740 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
740 +                             (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:965:13
    |
965 |             (append(
    |             ^
...
977 |             )),
    |              ^
    |
help: remove these parentheses
    |
965 ~             append(
966 |                 (append(
...
976 |                 string(" / "),
977 ~             ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:978:13
    |
978 |             (v9),
    |             ^  ^
    |
help: remove these parentheses
    |
978 -             (v9),
978 +             v9,
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:966:17
    |
966 |                 (append(
    |                 ^
...
975 |                 )),
    |                  ^
    |
help: remove these parentheses
    |
966 ~                 append(
967 |                     (append(
...
974 |                     string("async.run_with_timeout_async"),
975 ~                 ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:967:21
    |
967 |                     (append(
    |                     ^
...
973 |                     )),
    |                      ^
    |
help: remove these parentheses
    |
967 ~                     append(
968 |                         (append(
...
972 |                         string(" "),
973 ~                     ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:968:25
    |
968 |                         (append(
    |                         ^
...
971 |                         )),
    |                          ^
    |
help: remove these parentheses
    |
968 ~                         append(
969 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
970 |                             (toString(v0.l0.get().clone())),
971 ~                         ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:969:29
    |
969 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                       ^                                                                 ^
    |
help: remove these parentheses
    |
969 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
969 +                             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:970:29
    |
970 | ...                   (toString(v0.l0.get().clone())),
    |                       ^                             ^
    |
help: remove these parentheses
    |
970 -                             (toString(v0.l0.get().clone())),
970 +                             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:969:37
    |
969 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                               ^                                         ^
    |
help: remove these parentheses
    |
969 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
969 +                             (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:969:45
    |
969 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                       ^                         ^
    |
help: remove these parentheses
    |
969 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
969 +                             (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:969:74
    |
969 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                                                    ^  ^
    |
help: remove these parentheses
    |
969 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
969 +                             (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:969:53
    |
969 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                               ^  ^
    |
help: remove these parentheses
    |
969 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
969 +                             (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:1080:13
     |
1080 |             (fable_library_rust::String_::fromString(v10)),
     |             ^                                            ^
     |
help: remove these parentheses
     |
1080 -             (fable_library_rust::String_::fromString(v10)),
1080 +             fable_library_rust::String_::fromString(v10),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1081:13
     |
1081 |             (Networking::method13(getCharAt(toLower(string("Critical")), 0_i32))),
     |             ^                                                                   ^
     |
help: remove these parentheses
     |
1081 -             (Networking::method13(getCharAt(toLower(string("Critical")), 0_i32))),
1081 +             Networking::method13(getCharAt(toLower(string("Critical")), 0_i32)),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1085:16
     |
1085 |         append((v139), (fable_library_rust::String_::fromString(v152)))
     |                ^    ^
     |
help: remove these parentheses
     |
1085 -         append((v139), (fable_library_rust::String_::fromString(v152)))
1085 +         append(v139, (fable_library_rust::String_::fromString(v152)))
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1085:24
     |
1085 |         append((v139), (fable_library_rust::String_::fromString(v152)))
     |                        ^                                             ^
     |
help: remove these parentheses
     |
1085 -         append((v139), (fable_library_rust::String_::fromString(v152)))
1085 +         append((v139), fable_library_rust::String_::fromString(v152))
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1143:13
     |
1143 |             (append(
     |             ^
...
1155 |             )),
     |              ^
     |
help: remove these parentheses
     |
1143 ~             append(
1144 |                 (append(
 ...
1154 |                 string(" / "),
1155 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1156:13
     |
1156 |             (v10),
     |             ^   ^
     |
help: remove these parentheses
     |
1156 -             (v10),
1156 +             v10,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1144:17
     |
1144 |                 (append(
     |                 ^
...
1153 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
1144 ~                 append(
1145 |                     (append(
 ...
1152 |                     string("async.run_with_timeout_async**"),
1153 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1145:21
     |
1145 |                     (append(
     |                     ^
...
1151 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
1145 ~                     append(
1146 |                         (append(
 ...
1150 |                         string(" "),
1151 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1146:25
     |
1146 |                         (append(
     |                         ^
...
1149 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
1146 ~                         append(
1147 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1148 |                             (toString(v0.l0.get().clone())),
1149 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1147:29
     |
1147 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
1147 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1147 +                             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:1148:29
     |
1148 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
1148 -                             (toString(v0.l0.get().clone())),
1148 +                             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:1147:37
     |
1147 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
1147 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1147 +                             (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:1147:45
     |
1147 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
1147 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1147 +                             (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:1147:74
     |
1147 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
1147 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1147 +                             (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:1147:53
     |
1147 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
1147 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1147 +                             (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:1424:13
     |
1424 |             (append(
     |             ^
...
1436 |             )),
     |              ^
     |
help: remove these parentheses
     |
1424 ~             append(
1425 |                 (append(
 ...
1435 |                 string(" / "),
1436 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1437:13
     |
1437 |             (v12),
     |             ^   ^
     |
help: remove these parentheses
     |
1437 -             (v12),
1437 +             v12,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1425:17
     |
1425 |                 (append(
     |                 ^
...
1434 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
1425 ~                 append(
1426 |                     (append(
 ...
1433 |                     string("networking.wait_for_port_access"),
1434 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1426:21
     |
1426 |                     (append(
     |                     ^
...
1432 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
1426 ~                     append(
1427 |                         (append(
 ...
1431 |                         string(" "),
1432 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1427:25
     |
1427 |                         (append(
     |                         ^
...
1430 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
1427 ~                         append(
1428 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1429 |                             (toString(v0.l0.get().clone())),
1430 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1428:29
     |
1428 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
1428 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1428 +                             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:1429:29
     |
1429 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
1429 -                             (toString(v0.l0.get().clone())),
1429 +                             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:1428:37
     |
1428 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
1428 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1428 +                             (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:1428:45
     |
1428 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
1428 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1428 +                             (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:1428:74
     |
1428 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
1428 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1428 +                             (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:1428:53
     |
1428 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
1428 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1428 +                             (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:835:13
    |
835 |             (fable_library_rust::String_::fromString(v10)),
    |             ^                                            ^
    |
help: remove these parentheses
    |
835 -             (fable_library_rust::String_::fromString(v10)),
835 +             fable_library_rust::String_::fromString(v10),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:836:13
    |
836 |             (Runtime::method12(getCharAt(toLower(string("Warning")), 0_i32))),
    |             ^                                                               ^
    |
help: remove these parentheses
    |
836 -             (Runtime::method12(getCharAt(toLower(string("Warning")), 0_i32))),
836 +             Runtime::method12(getCharAt(toLower(string("Warning")), 0_i32)),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:840:16
    |
840 |         append((v139), (fable_library_rust::String_::fromString(v152)))
    |                ^    ^
    |
help: remove these parentheses
    |
840 -         append((v139), (fable_library_rust::String_::fromString(v152)))
840 +         append(v139, (fable_library_rust::String_::fromString(v152)))
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:840:24
    |
840 |         append((v139), (fable_library_rust::String_::fromString(v152)))
    |                        ^                                             ^
    |
help: remove these parentheses
    |
840 -         append((v139), (fable_library_rust::String_::fromString(v152)))
840 +         append((v139), fable_library_rust::String_::fromString(v152))
    |
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 '_method26 (match v0.get().clone().as_ref() {
     |                              ^
...
1353 |             });
     |              ^
     |
help: remove these parentheses
     |
1315 ~             break '_method26 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::method28(v0, (v1) + 1_i32))(append((v2), string(" ")))
     |                                                          ^  ^
     |
help: remove these parentheses
     |
1418 -             (Runtime::method28(v0, (v1) + 1_i32))(append((v2), string(" ")))
1418 +             (Runtime::method28(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::method24('\"', v1.clone(), v2, v3)),
     |                 ^                                           ^
     |
help: remove these parentheses
     |
1436 -                 (Runtime::method24('\"', v1.clone(), v2, v3)),
1436 +                 Runtime::method24('\"', 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::method28((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::method27('\"', 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::method27('\"', v2, v3)),
     |                       ^                               ^
     |
help: remove these parentheses
     |
1478 -                                             (Runtime::method27('\"', v2, v3)),
1478 +                                             Runtime::method27('\"', 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::method28((v3) - 1_i32, 0_i32))(string(""))),
     |                       ^                                                    ^
     |
help: remove these parentheses
     |
1489 -                             ((Runtime::method28((v3) - 1_i32, 0_i32))(string(""))),
1489 +                             (Runtime::method28((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::method24('\'', v1.clone(), v2, v3)),
     |                 ^                                           ^
     |
help: remove these parentheses
     |
1506 -                 (Runtime::method24('\'', v1.clone(), v2, v3)),
1506 +                 Runtime::method24('\'', 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::method28((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::method27('\'', 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::method27('\'', v2, v3)),
     |                       ^                               ^
     |
help: remove these parentheses
     |
1548 -                                             (Runtime::method27('\'', v2, v3)),
1548 +                                             Runtime::method27('\'', 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::method28((v3) - 1_i32, 0_i32))(string(""))),
     |                       ^                                                    ^
     |
help: remove these parentheses
     |
1559 -                             ((Runtime::method28((v3) - 1_i32, 0_i32))(string(""))),
1559 +                             (Runtime::method28((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 '_method29 (match v2.get().clone().as_ref() {
     |                              ^
...
1608 |             });
     |              ^
     |
help: remove these parentheses
     |
1577 ~             break '_method29 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 '_method32 (if (v1.get().clone()) >= 2_i64 {
     |                              ^
...
1703 |             });
     |              ^
     |
help: remove these parentheses
     |
1672 ~             break '_method32 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 '_method34 ({
     |                              ^
...
1864 |             });
     |              ^
     |
help: remove these parentheses
     |
1782 ~             break '_method34 {
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::method31(
     |                         ^
...
1791 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
1786 ~                         Runtime::method31(
1787 |                             Runtime::method30(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::method33(
     |                       ^
...
1824 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
1818 ~                             Runtime::method33(
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 '_method35 (match v4.get().clone().as_ref() {
     |                              ^
...
1915 |             });
     |              ^
     |
help: remove these parentheses
     |
1880 ~             break '_method35 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 '_method37 (if (v1.get().clone()) >= 3_i64 {
     |                              ^
...
2085 |             });
     |              ^
     |
help: remove these parentheses
     |
2049 ~             break '_method37 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 '_method38 ({
     |                              ^
...
2183 |             });
     |              ^
     |
help: remove these parentheses
     |
2101 ~             break '_method38 {
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::method31(
     |                         ^
...
2110 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
2105 ~                         Runtime::method31(
2106 |                             Runtime::method30(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::method33(
     |                       ^
...
2143 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
2137 ~                             Runtime::method33(
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 '_method40 (if (v1.get().clone()) >= (length(v0.get().clone())) {
     |                              ^
...
2228 |             });
     |              ^
     |
help: remove these parentheses
     |
2216 ~             break '_method40 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 '_method42 ({
     |                              ^
...
2321 |             });
     |              ^
     |
help: remove these parentheses
     |
2271 ~             break '_method42 {
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::method41(v2.get().clone(), v3.get().clone(), v4.get().clone())),
     |                         ^                                                                       ^
     |
help: remove these parentheses
     |
2275 -                         (Runtime::method41(v2.get().clone(), v3.get().clone(), v4.get().clone())),
2275 +                         Runtime::method41(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::method31(
     |                       ^
...
2367 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
2362 ~                             Runtime::method31(
2363 |                                 Runtime::method30(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::method33(
     |                       ^
...
2400 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
2394 ~                                 Runtime::method33(
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::method36(
     |                       ^
...
2498 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
2484 ~                                     Runtime::method36(
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::method31(
     |                       ^
...
2520 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
2515 ~                             Runtime::method31(
2516 |                                 Runtime::method30(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::method33(
     |                       ^
...
2556 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
2548 ~                                 Runtime::method33(
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::method39(v10.clone())),
     |                       ^                              ^
     |
help: remove these parentheses
     |
2603 -                                     (Runtime::method39(v10.clone())),
2603 +                                     Runtime::method39(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::method24(' ', v605.clone(), v606, v607)),
     |                       ^                                                ^
     |
help: remove these parentheses
     |
2658 -                             (Runtime::method24(' ', v605.clone(), v606, v607)),
2658 +                             Runtime::method24(' ', 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::method28((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::method27(' ', 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::method27(' ', v606, v607)),
     |                       ^                                  ^
     |
help: remove these parentheses
     |
2704 -                                                         (Runtime::method27(' ', v606, v607)),
2704 +                                                         Runtime::method27(' ', 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::method28((v607) - 1_i32, 0_i32))(string(""))),
     |                       ^                                                      ^
     |
help: remove these parentheses
     |
2715 -                                         ((Runtime::method28((v607) - 1_i32, 0_i32))(string(""))),
2715 +                                         (Runtime::method28((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::method41(v786.clone(), v787, v788)),
     |                       ^                                           ^
     |
help: remove these parentheses
     |
2750 -                                     (Runtime::method41(v786.clone(), v787, v788)),
2750 +                                     Runtime::method41(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:2862:13
     |
2862 |             (fable_library_rust::String_::fromString(v10)),
     |             ^                                            ^
     |
help: remove these parentheses
     |
2862 -             (fable_library_rust::String_::fromString(v10)),
2862 +             fable_library_rust::String_::fromString(v10),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2863:13
     |
2863 |             (Runtime::method12(getCharAt(toLower(string("Debug")), 0_i32))),
     |             ^                                                             ^
     |
help: remove these parentheses
     |
2863 -             (Runtime::method12(getCharAt(toLower(string("Debug")), 0_i32))),
2863 +             Runtime::method12(getCharAt(toLower(string("Debug")), 0_i32)),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2867:16
     |
2867 |         append((v139), (fable_library_rust::String_::fromString(v152)))
     |                ^    ^
     |
help: remove these parentheses
     |
2867 -         append((v139), (fable_library_rust::String_::fromString(v152)))
2867 +         append(v139, (fable_library_rust::String_::fromString(v152)))
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2867:24
     |
2867 |         append((v139), (fable_library_rust::String_::fromString(v152)))
     |                        ^                                             ^
     |
help: remove these parentheses
     |
2867 -         append((v139), (fable_library_rust::String_::fromString(v152)))
2867 +         append((v139), fable_library_rust::String_::fromString(v152))
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3116:13
     |
3116 |             (append(
     |             ^
...
3128 |             )),
     |              ^
     |
help: remove these parentheses
     |
3116 ~             append(
3117 |                 (append(
 ...
3127 |                 string(" / "),
3128 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3129:13
     |
3129 |             (v18),
     |             ^   ^
     |
help: remove these parentheses
     |
3129 -             (v18),
3129 +             v18,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3117:17
     |
3117 |                 (append(
     |                 ^
...
3126 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
3117 ~                 append(
3118 |                     (append(
 ...
3125 |                     string("runtime.execute_with_options_async"),
3126 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3118:21
     |
3118 |                     (append(
     |                     ^
...
3124 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
3118 ~                     append(
3119 |                         (append(
 ...
3123 |                         string(" "),
3124 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3119:25
     |
3119 |                         (append(
     |                         ^
...
3122 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
3119 ~                         append(
3120 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3121 |                             (toString(v0.l0.get().clone())),
3122 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3120:29
     |
3120 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
3120 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3120 +                             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:3121:29
     |
3121 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
3121 -                             (toString(v0.l0.get().clone())),
3121 +                             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:3120:37
     |
3120 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
3120 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3120 +                             (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:3120:45
     |
3120 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
3120 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3120 +                             (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:3120:74
     |
3120 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
3120 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3120 +                             (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:3120:53
     |
3120 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
3120 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3120 +                             (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:3279:13
     |
3279 |             (fable_library_rust::String_::fromString(v10)),
     |             ^                                            ^
     |
help: remove these parentheses
     |
3279 -             (fable_library_rust::String_::fromString(v10)),
3279 +             fable_library_rust::String_::fromString(v10),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3280:13
     |
3280 |             (Runtime::method12(getCharAt(toLower(string("Verbose")), 0_i32))),
     |             ^                                                               ^
     |
help: remove these parentheses
     |
3280 -             (Runtime::method12(getCharAt(toLower(string("Verbose")), 0_i32))),
3280 +             Runtime::method12(getCharAt(toLower(string("Verbose")), 0_i32)),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3284:16
     |
3284 |         append((v139), (fable_library_rust::String_::fromString(v152)))
     |                ^    ^
     |
help: remove these parentheses
     |
3284 -         append((v139), (fable_library_rust::String_::fromString(v152)))
3284 +         append(v139, (fable_library_rust::String_::fromString(v152)))
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3284:24
     |
3284 |         append((v139), (fable_library_rust::String_::fromString(v152)))
     |                        ^                                             ^
     |
help: remove these parentheses
     |
3284 -         append((v139), (fable_library_rust::String_::fromString(v152)))
3284 +         append((v139), fable_library_rust::String_::fromString(v152))
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3299:13
     |
3299 |             (append(
     |             ^
...
3311 |             )),
     |              ^
     |
help: remove these parentheses
     |
3299 ~             append(
3300 |                 (append(
 ...
3310 |                 string(" / "),
3311 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3312:13
     |
3312 |             (v9),
     |             ^  ^
     |
help: remove these parentheses
     |
3312 -             (v9),
3312 +             v9,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3300:17
     |
3300 |                 (append(
     |                 ^
...
3309 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
3300 ~                 append(
3301 |                     (append(
 ...
3308 |                     (v8),
3309 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3301:21
     |
3301 |                     (append(
     |                     ^
...
3307 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
3301 ~                     append(
3302 |                         (append(
 ...
3306 |                         string(" "),
3307 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3308:21
     |
3308 |                     (v8),
     |                     ^  ^
     |
help: remove these parentheses
     |
3308 -                     (v8),
3308 +                     v8,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3302:25
     |
3302 |                         (append(
     |                         ^
...
3305 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
3302 ~                         append(
3303 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3304 |                             (toString(v0.l0.get().clone())),
3305 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3303:29
     |
3303 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
3303 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3303 +                             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:3304:29
     |
3304 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
3304 -                             (toString(v0.l0.get().clone())),
3304 +                             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:3303:37
     |
3303 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
3303 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3303 +                             (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:3303:45
     |
3303 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
3303 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3303 +                             (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:3303:74
     |
3303 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
3303 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3303 +                             (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:3303:53
     |
3303 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
3303 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3303 +                             (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:3528:13
     |
3528 |             (append(
     |             ^
...
3540 |             )),
     |              ^
     |
help: remove these parentheses
     |
3528 ~             append(
3529 |                 (append(
 ...
3539 |                 string(" / "),
3540 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3541:13
     |
3541 |             (v9),
     |             ^  ^
     |
help: remove these parentheses
     |
3541 -             (v9),
3541 +             v9,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3529:17
     |
3529 |                 (append(
     |                 ^
...
3538 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
3529 ~                 append(
3530 |                     (append(
 ...
3537 |                     string("runtime.execute_with_options_async / WaitForExitAsync"),
3538 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3530:21
     |
3530 |                     (append(
     |                     ^
...
3536 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
3530 ~                     append(
3531 |                         (append(
 ...
3535 |                         string(" "),
3536 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3531:25
     |
3531 |                         (append(
     |                         ^
...
3534 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
3531 ~                         append(
3532 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3533 |                             (toString(v0.l0.get().clone())),
3534 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3532:29
     |
3532 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
3532 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3532 +                             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:3533:29
     |
3533 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
3533 -                             (toString(v0.l0.get().clone())),
3533 +                             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:3532:37
     |
3532 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
3532 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3532 +                             (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:3532:45
     |
3532 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
3532 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3532 +                             (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:3532:74
     |
3532 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
3532 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3532 +                             (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:3532:53
     |
3532 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
3532 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3532 +                             (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:3896:13
     |
3896 |             (append(
     |             ^
...
3908 |             )),
     |              ^
     |
help: remove these parentheses
     |
3896 ~             append(
3897 |                 (append(
 ...
3907 |                 string(" / "),
3908 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3909:13
     |
3909 |             (v18),
     |             ^   ^
     |
help: remove these parentheses
     |
3909 -             (v18),
3909 +             v18,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3897:17
     |
3897 |                 (append(
     |                 ^
...
3906 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
3897 ~                 append(
3898 |                     (append(
 ...
3905 |                     string("runtime.execute_with_options_async"),
3906 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3898:21
     |
3898 |                     (append(
     |                     ^
...
3904 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
3898 ~                     append(
3899 |                         (append(
 ...
3903 |                         string(" "),
3904 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3899:25
     |
3899 |                         (append(
     |                         ^
...
3902 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
3899 ~                         append(
3900 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3901 |                             (toString(v0.l0.get().clone())),
3902 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3900:29
     |
3900 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
3900 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3900 +                             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:3901:29
     |
3901 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
3901 -                             (toString(v0.l0.get().clone())),
3901 +                             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:3900:37
     |
3900 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
3900 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3900 +                             (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:3900:45
     |
3900 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
3900 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3900 +                             (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:3900:74
     |
3900 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
3900 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3900 +                             (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:3900:53
     |
3900 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
3900 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3900 +                             (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:4129:30
     |
4129 |             break '_method68 (if (v1.get().clone()) >= 4_i64 {
     |                              ^
...
4170 |             });
     |              ^
     |
help: remove these parentheses
     |
4129 ~             break '_method68 if (v1.get().clone()) >= 4_i64 {
4130 |                 false
 ...
4169 |                 }
4170 ~             };
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around `break` value
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4186:30
     |
4186 |             break '_method69 ({
     |                              ^
...
4257 |             });
     |              ^
     |
help: remove these parentheses
     |
4186 ~             break '_method69 {
4187 |                 let v224: Runtime::US8 = if string("") == (v1.get().clone()) {
 ...
4256 |                 }
4257 ~             };
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4190:25
     |
4190 |                         (Runtime::method31(
     |                         ^
...
4195 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
4190 ~                         Runtime::method31(
4191 |                             Runtime::method30(toArray(ofArray(new_array(&['\\', '`', '\"', ' '])))),
 ...
4194 |                             v4.get().clone(),
4195 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4222:29
     |
4222 | ...                   (Runtime::method33(
     |                       ^
...
4230 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4222 ~                             Runtime::method33(
4223 |                                 v87,
 ...
4229 |                                 v4.get().clone(),
4230 ~                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4237:36
     |
4237 | ...                   append((v0.get().clone()), (ofChar(v224_0_0.clone())));
     |                              ^                ^
     |
help: remove these parentheses
     |
4237 -                             append((v0.get().clone()), (ofChar(v224_0_0.clone())));
4237 +                             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:4237:56
     |
4237 | ...                   append((v0.get().clone()), (ofChar(v224_0_0.clone())));
     |                                                  ^                        ^
     |
help: remove these parentheses
     |
4237 -                             append((v0.get().clone()), (ofChar(v224_0_0.clone())));
4237 +                             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:4264:30
     |
4264 |             break '_method71 (if (v1.get().clone()) >= 3_i64 {
     |                              ^
...
4300 |             });
     |              ^
     |
help: remove these parentheses
     |
4264 ~             break '_method71 if (v1.get().clone()) >= 3_i64 {
4265 |                 false
 ...
4299 |                 }
4300 ~             };
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4311:17
     |
4311 |                 (Runtime::method24('\\', v1.clone(), v2, v3)),
     |                 ^                                           ^
     |
help: remove these parentheses
     |
4311 -                 (Runtime::method24('\\', v1.clone(), v2, v3)),
4311 +                 Runtime::method24('\\', 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:4346:21
     |
4346 |                     (append(
     |                     ^
...
4367 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
4346 ~                     append(
4347 |                         (append(
 ...
4366 |                         )),
4367 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4347:25
     |
4347 |                         (append(
     |                         ^
...
4362 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
4347 ~                         append(
4348 |                             (append(
 ...
4361 |                             string("\n"),
4362 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4363:25
     |
4363 |                         (append(
     |                         ^
...
4366 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
4363 ~                         append(
4364 |                             ((Runtime::method28((v3) - 1_i32, 0_i32))(string(""))),
4365 |                             string("^"),
4366 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4348:29
     |
4348 | ...                   (append(
     |                       ^
...
4360 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4348 ~                             append(
4349 |                                 (append(
 ...
4359 |                                 (v114),
4360 ~                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4349:33
     |
4349 | ...                   (append(
     |                       ^
...
4358 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4349 ~                                 append(
4350 |                                     (append(
 ...
4357 |                                     (toString(v1)),
4358 ~                                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4359:33
     |
4359 | ...                   (v114),
     |                       ^    ^
     |
help: remove these parentheses
     |
4359 -                                 (v114),
4359 +                                 v114,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4350:37
     |
4350 | ...                   (append(
     |                       ^
...
4356 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4350 ~                                     append(
4351 |                                         (append(
 ...
4355 |                                         string("\n"),
4356 ~                                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4357:37
     |
4357 | ...                   (toString(v1)),
     |                       ^            ^
     |
help: remove these parentheses
     |
4357 -                                     (toString(v1)),
4357 +                                     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:4351:41
     |
4351 | ...                   (append(
     |                       ^
...
4354 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4351 ~                                         append(
4352 |                                             string("parsing.p_char / "),
4353 |                                             (Runtime::method27('\\', v2, v3)),
4354 ~                                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4353:45
     |
4353 | ...                   (Runtime::method27('\\', v2, v3)),
     |                       ^                               ^
     |
help: remove these parentheses
     |
4353 -                                             (Runtime::method27('\\', v2, v3)),
4353 +                                             Runtime::method27('\\', 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:4364:29
     |
4364 | ...                   ((Runtime::method28((v3) - 1_i32, 0_i32))(string(""))),
     |                       ^                                                    ^
     |
help: remove these parentheses
     |
4364 -                             ((Runtime::method28((v3) - 1_i32, 0_i32))(string(""))),
4364 +                             (Runtime::method28((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:4381:25
     |
4381 |                         (Runtime::method41(v171.clone(), v172, v173)),
     |                         ^                                           ^
     |
help: remove these parentheses
     |
4381 -                         (Runtime::method41(v171.clone(), v172, v173)),
4381 +                         Runtime::method41(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:4408:28
     |
4408 |                     append((ofChar('\\')), (ofChar(v239_0_0.clone()))),
     |                            ^            ^
     |
help: remove these parentheses
     |
4408 -                     append((ofChar('\\')), (ofChar(v239_0_0.clone()))),
4408 +                     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:4408:44
     |
4408 |                     append((ofChar('\\')), (ofChar(v239_0_0.clone()))),
     |                                            ^                        ^
     |
help: remove these parentheses
     |
4408 -                     append((ofChar('\\')), (ofChar(v239_0_0.clone()))),
4408 +                     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:4426:17
     |
4426 |                 (Runtime::method24('`', v1.clone(), v2, v3)),
     |                 ^                                          ^
     |
help: remove these parentheses
     |
4426 -                 (Runtime::method24('`', v1.clone(), v2, v3)),
4426 +                 Runtime::method24('`', 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:4461:21
     |
4461 |                     (append(
     |                     ^
...
4482 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
4461 ~                     append(
4462 |                         (append(
 ...
4481 |                         )),
4482 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4462:25
     |
4462 |                         (append(
     |                         ^
...
4477 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
4462 ~                         append(
4463 |                             (append(
 ...
4476 |                             string("\n"),
4477 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4478:25
     |
4478 |                         (append(
     |                         ^
...
4481 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
4478 ~                         append(
4479 |                             ((Runtime::method28((v3) - 1_i32, 0_i32))(string(""))),
4480 |                             string("^"),
4481 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4463:29
     |
4463 | ...                   (append(
     |                       ^
...
4475 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4463 ~                             append(
4464 |                                 (append(
 ...
4474 |                                 (v114),
4475 ~                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4464:33
     |
4464 | ...                   (append(
     |                       ^
...
4473 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4464 ~                                 append(
4465 |                                     (append(
 ...
4472 |                                     (toString(v1)),
4473 ~                                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4474:33
     |
4474 | ...                   (v114),
     |                       ^    ^
     |
help: remove these parentheses
     |
4474 -                                 (v114),
4474 +                                 v114,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4465:37
     |
4465 | ...                   (append(
     |                       ^
...
4471 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4465 ~                                     append(
4466 |                                         (append(
 ...
4470 |                                         string("\n"),
4471 ~                                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4472:37
     |
4472 | ...                   (toString(v1)),
     |                       ^            ^
     |
help: remove these parentheses
     |
4472 -                                     (toString(v1)),
4472 +                                     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:4466:41
     |
4466 | ...                   (append(
     |                       ^
...
4469 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4466 ~                                         append(
4467 |                                             string("parsing.p_char / "),
4468 |                                             (Runtime::method27('`', v2, v3)),
4469 ~                                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4468:45
     |
4468 | ...                   (Runtime::method27('`', v2, v3)),
     |                       ^                              ^
     |
help: remove these parentheses
     |
4468 -                                             (Runtime::method27('`', v2, v3)),
4468 +                                             Runtime::method27('`', 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:4479:29
     |
4479 | ...                   ((Runtime::method28((v3) - 1_i32, 0_i32))(string(""))),
     |                       ^                                                    ^
     |
help: remove these parentheses
     |
4479 -                             ((Runtime::method28((v3) - 1_i32, 0_i32))(string(""))),
4479 +                             (Runtime::method28((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:4496:25
     |
4496 |                         (Runtime::method41(v171.clone(), v172, v173)),
     |                         ^                                           ^
     |
help: remove these parentheses
     |
4496 -                         (Runtime::method41(v171.clone(), v172, v173)),
4496 +                         Runtime::method41(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:4523:28
     |
4523 |                     append((ofChar('`')), (ofChar(v239_0_0.clone()))),
     |                            ^           ^
     |
help: remove these parentheses
     |
4523 -                     append((ofChar('`')), (ofChar(v239_0_0.clone()))),
4523 +                     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:4523:43
     |
4523 |                     append((ofChar('`')), (ofChar(v239_0_0.clone()))),
     |                                           ^                        ^
     |
help: remove these parentheses
     |
4523 -                     append((ofChar('`')), (ofChar(v239_0_0.clone()))),
4523 +                     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:4546:30
     |
4546 |             break '_method72 (match v4.get().clone().as_ref() {
     |                              ^
...
4581 |             });
     |              ^
     |
help: remove these parentheses
     |
4546 ~             break '_method72 match v4.get().clone().as_ref() {
4547 |                 Runtime::UH3::UH3_0 => {
 ...
4580 |                 }
4581 ~             };
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around `break` value
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4588:30
     |
4588 |             break '_method73 (match v0.get().clone().as_ref() {
     |                              ^
...
4608 |             });
     |              ^
     |
help: remove these parentheses
     |
4588 ~             break '_method73 match v0.get().clone().as_ref() {
4589 |                 Runtime::UH2::UH2_0 => v1.get().clone(),
 ...
4607 |                 }
4608 ~             };
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around `break` value
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4624:30
     |
4624 |             break '_method70 ({
     |                              ^
...
4736 |             });
     |              ^
     |
help: remove these parentheses
     |
4624 ~             break '_method70 {
4625 |                 let v200: Runtime::US8 = if string("") == (v1.get().clone()) {
 ...
4735 |                 }
4736 ~             };
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4628:25
     |
4628 |                         (Runtime::method31(
     |                         ^
...
4633 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
4628 ~                         Runtime::method31(
4629 |                             Runtime::method30(toArray(ofArray(new_array(&['\\', '`', '\"'])))),
 ...
4632 |                             v4.get().clone(),
4633 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4660:29
     |
4660 | ...                   (Runtime::method33(
     |                       ^
...
4666 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4660 ~                             Runtime::method33(
4661 |                                 v75,
 ...
4665 |                                 v4.get().clone(),
4666 ~                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around `break` value
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4772:30
     |
4772 |             break '_method75 ({
     |                              ^
...
4853 |             });
     |              ^
     |
help: remove these parentheses
     |
4772 ~             break '_method75 {
4773 |                 let v200: Runtime::US8 = if string("") == (v1.get().clone()) {
 ...
4852 |                 }
4853 ~             };
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4776:25
     |
4776 |                         (Runtime::method31(
     |                         ^
...
4781 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
4776 ~                         Runtime::method31(
4777 |                             Runtime::method30(toArray(ofArray(new_array(&['\\', '`', '\"'])))),
 ...
4780 |                             v4.get().clone(),
4781 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4808:29
     |
4808 | ...                   (Runtime::method33(
     |                       ^
...
4814 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4808 ~                             Runtime::method33(
4809 |                                 v75,
 ...
4813 |                                 v4.get().clone(),
4814 ~                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around `break` value
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4869:30
     |
4869 |             break '_method67 ({
     |                              ^
...
5387 |             });
     |              ^
     |
help: remove these parentheses
     |
4869 ~             break '_method67 {
4870 |                 let v5: bool = string("") == (v1.get().clone());
 ...
5386 |                 }
5387 ~             };
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4874:25
     |
4874 |                         (Runtime::method31(
     |                         ^
...
4879 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
4874 ~                         Runtime::method31(
4875 |                             Runtime::method30(toArray(ofArray(new_array(&['\\', '`', '\"', ' '])))),
 ...
4878 |                             v4.get().clone(),
4879 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4906:29
     |
4906 | ...                   (Runtime::method33(
     |                       ^
...
4914 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4906 ~                             Runtime::method33(
4907 |                                 v87,
 ...
4913 |                                 v4.get().clone(),
4914 ~                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4946:33
     |
4946 | ...                   (Runtime::method24(
     |                       ^
...
4951 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4946 ~                                 Runtime::method24(
4947 |                                     '\"',
 ...
4950 |                                     v4.get().clone(),
4951 ~                                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4990:37
     |
4990 | ...                   (append(
     |                       ^
...
5020 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4990 ~                                     append(
4991 |                                         (append(
 ...
5019 |                                         )),
5020 ~                                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4991:41
     |
4991 | ...                   (append(
     |                       ^
...
5010 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4991 ~                                         append(
4992 |                                             (append(
 ...
5009 |                                             string("\n"),
5010 ~                                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5011:41
     |
5011 | ...                   (append(
     |                       ^
...
5019 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
5011 ~                                         append(
5012 |                                             ((Runtime::method28(
 ...
5018 |                                             string("^"),
5019 ~                                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4992:45
     |
4992 | ...                   (append(
     |                       ^
...
5008 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4992 ~                                             append(
4993 |                                                 (append(
 ...
5007 |                                                 (v360),
5008 ~                                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4993:49
     |
4993 | ...                   (append(
     |                       ^
...
5006 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4993 ~                                                 append(
4994 |                                                     (append(
 ...
5005 |                                                     (toString(v2.get().clone())),
5006 ~                                                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5007:49
     |
5007 | ...                   (v360),
     |                       ^    ^
     |
help: remove these parentheses
     |
5007 -                                                 (v360),
5007 +                                                 v360,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4994:53
     |
4994 | ...                   (append(
     |                       ^
...
5004 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4994 ~                                                     append(
4995 |                                                         (append(
 ...
5003 |                                                         string("\n"),
5004 ~                                                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5005:53
     |
5005 | ...                   (toString(v2.get().clone())),
     |                       ^                          ^
     |
help: remove these parentheses
     |
5005 -                                                     (toString(v2.get().clone())),
5005 +                                                     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:4995:57
     |
4995 | ...                   (append(
     |                       ^
...
5002 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4995 ~                                                         append(
4996 |                                                             string("parsing.p_char / "),
 ...
5001 |                                                             )),
5002 ~                                                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4997:61
     |
4997 | ...                   (Runtime::method27(
     |                       ^
...
5001 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
4997 ~                                                             Runtime::method27(
4998 |                                                                 '\"',
4999 |                                                                 v3.get().clone(),
5000 |                                                                 v4.get().clone(),
5001 ~                                                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5012:45
     |
5012 | ...                   ((Runtime::method28(
     |                       ^
...
5017 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
5012 ~                                             (Runtime::method28(
5013 |                                                 (v4.get().clone()) - 1_i32,
 ...
5016 |                                                 string("")
5017 ~                                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5089:49
     |
5089 | ...                   (Runtime::method24('\"', v457.clone(), v458, v459)),
     |                       ^                                                 ^
     |
help: remove these parentheses
     |
5089 -                                                 (Runtime::method24('\"', v457.clone(), v458, v459)),
5089 +                                                 Runtime::method24('\"', 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:5136:53
     |
5136 | ...                   (append(
     |                       ^
...
5166 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
5136 ~                                                     append(
5137 |                                                         (append(
 ...
5165 |                                                         )),
5166 ~                                                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5137:57
     |
5137 | ...                   (append(
     |                       ^
...
5156 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
5137 ~                                                         append(
5138 |                                                             (append(
 ...
5155 |                                                             string("\n"),
5156 ~                                                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5157:57
     |
5157 | ...                   (append(
     |                       ^
...
5165 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
5157 ~                                                         append(
5158 |                                                             ((Runtime::method28(
 ...
5164 |                                                             string("^"),
5165 ~                                                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5138:61
     |
5138 | ...                   (append(
     |                       ^
...
5154 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
5138 ~                                                             append(
5139 |                                                                 (append(
 ...
5153 |                                                                 (v570),
5154 ~                                                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5139:65
     |
5139 | ...                   (append(
     |                       ^
...
5152 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
5139 ~                                                                 append(
5140 |                                                                     (append(
 ...
5151 |                                                                     (toString(v457.clone())),
5152 ~                                                                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5153:65
     |
5153 | ...                   (v570),
     |                       ^    ^
     |
help: remove these parentheses
     |
5153 -                                                                 (v570),
5153 +                                                                 v570,
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5140:69
     |
5140 | ...                   (append(
     |                       ^
...
5150 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
5140 ~                                                                     append(
5141 |                                                                         (append(
 ...
5149 |                                                                         string("\n"),
5150 ~                                                                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5151:69
     |
5151 | ...                   (toString(v457.clone())),
     |                       ^                      ^
     |
help: remove these parentheses
     |
5151 -                                                                     (toString(v457.clone())),
5151 +                                                                     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:5141:73
     |
5141 | ...                   (append(
     |                       ^
...
5148 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
5141 ~                                                                         append(
5142 |                                                                             string(
 ...
5147 |                                                                             )),
5148 ~                                                                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5145:77
     |
5145 | ...                   (Runtime::method27(
     |                       ^
5146 | ...                       '\"', v458, v459,
5147 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
5145 ~                                                                             Runtime::method27(
5146 |                                                                                 '\"', v458, v459,
5147 ~                                                                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5158:61
     |
5158 | ...                   ((Runtime::method28(
     |                       ^
...
5163 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
5158 ~                                                             (Runtime::method28(
5159 |                                                                 (v459) - 1_i32,
 ...
5162 |                                                                 string("")
5163 ~                                                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5190:53
     |
5190 | ...                   (Runtime::method36(
     |                       ^
...
5204 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
5190 ~                                                     Runtime::method36(
5191 |                                                         v624_1_0.clone(),
 ...
5203 |                                                         v459,
5204 ~                                                     ),
     |
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:733:13
    |
733 |             (v650),
    |             ^    ^
    |
help: remove these parentheses
    |
733 -             (v650),
733 +             v650,
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:734:13
    |
734 |             (Trace::method11(getCharAt(
    |             ^
...
744 |             ))),
    |               ^
    |
help: remove these parentheses
    |
734 ~             Trace::method11(getCharAt(
735 |                 toLower(match &v696 {
...
743 |                 0_i32,
744 ~             )),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:748:16
    |
748 |         append((v709), (fable_library_rust::String_::fromString(v722)))
    |                ^    ^
    |
help: remove these parentheses
    |
748 -         append((v709), (fable_library_rust::String_::fromString(v722)))
748 +         append(v709, (fable_library_rust::String_::fromString(v722)))
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:748:24
    |
748 |         append((v709), (fable_library_rust::String_::fromString(v722)))
    |                        ^                                             ^
    |
help: remove these parentheses
    |
748 -         append((v709), (fable_library_rust::String_::fromString(v722)))
748 +         append((v709), fable_library_rust::String_::fromString(v722))
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:780:13
    |
780 |             (append(
    |             ^
...
792 |             )),
    |              ^
    |
help: remove these parentheses
    |
780 ~             append(
781 |                 (append(
...
791 |                 string(" / "),
792 ~             ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:793:13
    |
793 |             (v10),
    |             ^   ^
    |
help: remove these parentheses
    |
793 -             (v10),
793 +             v10,
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:781:17
    |
781 |                 (append(
    |                 ^
...
790 |                 )),
    |                  ^
    |
help: remove these parentheses
    |
781 ~                 append(
782 |                     (append(
...
789 |                     (v8),
790 ~                 ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:782:21
    |
782 |                     (append(
    |                     ^
...
788 |                     )),
    |                      ^
    |
help: remove these parentheses
    |
782 ~                     append(
783 |                         (append(
...
787 |                         string(" "),
788 ~                     ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:789:21
    |
789 |                     (v8),
    |                     ^  ^
    |
help: remove these parentheses
    |
789 -                     (v8),
789 +                     v8,
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:783:25
    |
783 |                         (append(
    |                         ^
...
786 |                         )),
    |                          ^
    |
help: remove these parentheses
    |
783 ~                         append(
784 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
785 |                             (toString(v0.l0.get().clone())),
786 ~                         ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:784:29
    |
784 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                       ^                                                                 ^
    |
help: remove these parentheses
    |
784 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
784 +                             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:785:29
    |
785 | ...                   (toString(v0.l0.get().clone())),
    |                       ^                             ^
    |
help: remove these parentheses
    |
785 -                             (toString(v0.l0.get().clone())),
785 +                             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:784:37
    |
784 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                               ^                                         ^
    |
help: remove these parentheses
    |
784 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
784 +                             (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:784:45
    |
784 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                       ^                         ^
    |
help: remove these parentheses
    |
784 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
784 +                             (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:784:74
    |
784 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                                                    ^  ^
    |
help: remove these parentheses
    |
784 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
784 +                             (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:784:53
    |
784 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                               ^  ^
    |
help: remove these parentheses
    |
784 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
784 +                             (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:868:33
    |
868 |         let v4: string = append((v0.l0.get().clone()), (v1));
    |                                 ^                   ^
    |
help: remove these parentheses
    |
868 -         let v4: string = append((v0.l0.get().clone()), (v1));
868 +         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:868:56
    |
868 |         let v4: string = append((v0.l0.get().clone()), (v1));
    |                                                        ^  ^
    |
help: remove these parentheses
    |
868 -         let v4: string = append((v0.l0.get().clone()), (v1));
868 +         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:886:13
    |
886 |             (fable_library_rust::String_::fromString(v10)),
    |             ^                                            ^
    |
help: remove these parentheses
    |
886 -             (fable_library_rust::String_::fromString(v10)),
886 +             fable_library_rust::String_::fromString(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:887:13
    |
887 |             (File_system::method16(getCharAt(toLower(string("Debug")), 0_i32))),
    |             ^                                                                 ^
    |
help: remove these parentheses
    |
887 -             (File_system::method16(getCharAt(toLower(string("Debug")), 0_i32))),
887 +             File_system::method16(getCharAt(toLower(string("Debug")), 0_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:891:16
    |
891 |         append((v139), (fable_library_rust::String_::fromString(v152)))
    |                ^    ^
    |
help: remove these parentheses
    |
891 -         append((v139), (fable_library_rust::String_::fromString(v152)))
891 +         append(v139, (fable_library_rust::String_::fromString(v152)))
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:891:24
    |
891 |         append((v139), (fable_library_rust::String_::fromString(v152)))
    |                        ^                                             ^
    |
help: remove these parentheses
    |
891 -         append((v139), (fable_library_rust::String_::fromString(v152)))
891 +         append((v139), fable_library_rust::String_::fromString(v152))
    |
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:13
    |
984 |             (append(
    |             ^
...
996 |             )),
    |              ^
    |
help: remove these parentheses
    |
984 ~             append(
985 |                 (append(
...
995 |                 string(" / "),
996 ~             ),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:997:13
    |
997 |             (v10),
    |             ^   ^
    |
help: remove these parentheses
    |
997 -             (v10),
997 +             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:985:17
    |
985 |                 (append(
    |                 ^
...
994 |                 )),
    |                  ^
    |
help: remove these parentheses
    |
985 ~                 append(
986 |                     (append(
...
993 |                     string("file_system.delete_directory_async"),
994 ~                 ),
    |
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:21
    |
986 |                     (append(
    |                     ^
...
992 |                     )),
    |                      ^
    |
help: remove these parentheses
    |
986 ~                     append(
987 |                         (append(
...
991 |                         string(" "),
992 ~                     ),
    |
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:25
    |
987 |                         (append(
    |                         ^
...
990 |                         )),
    |                          ^
    |
help: remove these parentheses
    |
987 ~                         append(
988 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
989 |                             (toString(v0.l0.get().clone())),
990 ~                         ),
    |
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 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                       ^                                                                 ^
    |
help: remove these parentheses
    |
988 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
988 +                             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:989:29
    |
989 | ...                   (toString(v0.l0.get().clone())),
    |                       ^                             ^
    |
help: remove these parentheses
    |
989 -                             (toString(v0.l0.get().clone())),
989 +                             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:988:37
    |
988 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                               ^                                         ^
    |
help: remove these parentheses
    |
988 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
988 +                             (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:45
    |
988 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                       ^                         ^
    |
help: remove these parentheses
    |
988 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
988 +                             (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:74
    |
988 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                                                    ^  ^
    |
help: remove these parentheses
    |
988 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
988 +                             (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:53
    |
988 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
    |                                               ^  ^
    |
help: remove these parentheses
    |
988 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
988 +                             (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:1205:13
     |
1205 |             (append(
     |             ^
...
1217 |             )),
     |              ^
     |
help: remove these parentheses
     |
1205 ~             append(
1206 |                 (append(
 ...
1216 |                 string(" / "),
1217 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1218:13
     |
1218 |             (v11),
     |             ^   ^
     |
help: remove these parentheses
     |
1218 -             (v11),
1218 +             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:1206:17
     |
1206 |                 (append(
     |                 ^
...
1215 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
1206 ~                 append(
1207 |                     (append(
 ...
1214 |                     string("file_system.wait_for_file_access"),
1215 ~                 ),
     |
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:21
     |
1207 |                     (append(
     |                     ^
...
1213 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
1207 ~                     append(
1208 |                         (append(
 ...
1212 |                         string(" "),
1213 ~                     ),
     |
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:25
     |
1208 |                         (append(
     |                         ^
...
1211 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
1208 ~                         append(
1209 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1210 |                             (toString(v0.l0.get().clone())),
1211 ~                         ),
     |
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 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
1209 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1209 +                             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:1210:29
     |
1210 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
1210 -                             (toString(v0.l0.get().clone())),
1210 +                             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:1209:37
     |
1209 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
1209 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1209 +                             (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:45
     |
1209 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
1209 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1209 +                             (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:74
     |
1209 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
1209 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1209 +                             (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:53
     |
1209 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
1209 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1209 +                             (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:1364:13
     |
1364 |             (fable_library_rust::String_::fromString(v10)),
     |             ^                                            ^
     |
help: remove these parentheses
     |
1364 -             (fable_library_rust::String_::fromString(v10)),
1364 +             fable_library_rust::String_::fromString(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:1365:13
     |
1365 |             (File_system::method16(getCharAt(toLower(string("Verbose")), 0_i32))),
     |             ^                                                                   ^
     |
help: remove these parentheses
     |
1365 -             (File_system::method16(getCharAt(toLower(string("Verbose")), 0_i32))),
1365 +             File_system::method16(getCharAt(toLower(string("Verbose")), 0_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:1369:16
     |
1369 |         append((v139), (fable_library_rust::String_::fromString(v152)))
     |                ^    ^
     |
help: remove these parentheses
     |
1369 -         append((v139), (fable_library_rust::String_::fromString(v152)))
1369 +         append(v139, (fable_library_rust::String_::fromString(v152)))
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1369:24
     |
1369 |         append((v139), (fable_library_rust::String_::fromString(v152)))
     |                        ^                                             ^
     |
help: remove these parentheses
     |
1369 -         append((v139), (fable_library_rust::String_::fromString(v152)))
1369 +         append((v139), fable_library_rust::String_::fromString(v152))
     |
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:13
     |
1449 |             (append(
     |             ^
...
1461 |             )),
     |              ^
     |
help: remove these parentheses
     |
1449 ~             append(
1450 |                 (append(
 ...
1460 |                 string(" / "),
1461 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1462:13
     |
1462 |             (v11),
     |             ^   ^
     |
help: remove these parentheses
     |
1462 -             (v11),
1462 +             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:1450:17
     |
1450 |                 (append(
     |                 ^
...
1459 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
1450 ~                 append(
1451 |                     (append(
 ...
1458 |                     string("file_system.read_all_text_async"),
1459 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1451:21
     |
1451 |                     (append(
     |                     ^
...
1457 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
1451 ~                     append(
1452 |                         (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:1452:25
     |
1452 |                         (append(
     |                         ^
...
1455 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
1452 ~                         append(
1453 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1454 |                             (toString(v0.l0.get().clone())),
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:1453:29
     |
1453 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
1453 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1453 +                             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:1454:29
     |
1454 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
1454 -                             (toString(v0.l0.get().clone())),
1454 +                             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:1453:37
     |
1453 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
1453 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1453 +                             (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:1453:45
     |
1453 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
1453 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1453 +                             (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:1453:74
     |
1453 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
1453 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1453 +                             (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:1453:53
     |
1453 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
1453 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1453 +                             (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:1683:13
     |
1683 |             (fable_library_rust::String_::fromString(v10)),
     |             ^                                            ^
     |
help: remove these parentheses
     |
1683 -             (fable_library_rust::String_::fromString(v10)),
1683 +             fable_library_rust::String_::fromString(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:1684:13
     |
1684 |             (File_system::method16(getCharAt(toLower(string("Critical")), 0_i32))),
     |             ^                                                                    ^
     |
help: remove these parentheses
     |
1684 -             (File_system::method16(getCharAt(toLower(string("Critical")), 0_i32))),
1684 +             File_system::method16(getCharAt(toLower(string("Critical")), 0_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:1688:16
     |
1688 |         append((v139), (fable_library_rust::String_::fromString(v152)))
     |                ^    ^
     |
help: remove these parentheses
     |
1688 -         append((v139), (fable_library_rust::String_::fromString(v152)))
1688 +         append(v139, (fable_library_rust::String_::fromString(v152)))
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1688:24
     |
1688 |         append((v139), (fable_library_rust::String_::fromString(v152)))
     |                        ^                                             ^
     |
help: remove these parentheses
     |
1688 -         append((v139), (fable_library_rust::String_::fromString(v152)))
1688 +         append((v139), fable_library_rust::String_::fromString(v152))
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1729:13
     |
1729 |             (append(
     |             ^
...
1741 |             )),
     |              ^
     |
help: remove these parentheses
     |
1729 ~             append(
1730 |                 (append(
 ...
1740 |                 string(" / "),
1741 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1742:13
     |
1742 |             (v9),
     |             ^  ^
     |
help: remove these parentheses
     |
1742 -             (v9),
1742 +             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:1730:17
     |
1730 |                 (append(
     |                 ^
...
1739 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
1730 ~                 append(
1731 |                     (append(
 ...
1738 |                     string("file_system.file_delete"),
1739 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1731:21
     |
1731 |                     (append(
     |                     ^
...
1737 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
1731 ~                     append(
1732 |                         (append(
 ...
1736 |                         string(" "),
1737 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1732:25
     |
1732 |                         (append(
     |                         ^
...
1735 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
1732 ~                         append(
1733 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1734 |                             (toString(v0.l0.get().clone())),
1735 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1733:29
     |
1733 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
1733 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1733 +                             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:1734:29
     |
1734 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
1734 -                             (toString(v0.l0.get().clone())),
1734 +                             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:1733:37
     |
1733 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
1733 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1733 +                             (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:1733:45
     |
1733 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
1733 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1733 +                             (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:1733:74
     |
1733 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
1733 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1733 +                             (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:1733:53
     |
1733 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
1733 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1733 +                             (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:1853:13
     |
1853 |             (fable_library_rust::String_::fromString(v10)),
     |             ^                                            ^
     |
help: remove these parentheses
     |
1853 -             (fable_library_rust::String_::fromString(v10)),
1853 +             fable_library_rust::String_::fromString(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:1854:13
     |
1854 |             (File_system::method16(getCharAt(toLower(string("Warning")), 0_i32))),
     |             ^                                                                   ^
     |
help: remove these parentheses
     |
1854 -             (File_system::method16(getCharAt(toLower(string("Warning")), 0_i32))),
1854 +             File_system::method16(getCharAt(toLower(string("Warning")), 0_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:1858:16
     |
1858 |         append((v139), (fable_library_rust::String_::fromString(v152)))
     |                ^    ^
     |
help: remove these parentheses
     |
1858 -         append((v139), (fable_library_rust::String_::fromString(v152)))
1858 +         append(v139, (fable_library_rust::String_::fromString(v152)))
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1858:24
     |
1858 |         append((v139), (fable_library_rust::String_::fromString(v152)))
     |                        ^                                             ^
     |
help: remove these parentheses
     |
1858 -         append((v139), (fable_library_rust::String_::fromString(v152)))
1858 +         append((v139), fable_library_rust::String_::fromString(v152))
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1916:13
     |
1916 |             (append(
     |             ^
...
1928 |             )),
     |              ^
     |
help: remove these parentheses
     |
1916 ~             append(
1917 |                 (append(
 ...
1927 |                 string(" / "),
1928 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1929:13
     |
1929 |             (v10),
     |             ^   ^
     |
help: remove these parentheses
     |
1929 -             (v10),
1929 +             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:1917:17
     |
1917 |                 (append(
     |                 ^
...
1926 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
1917 ~                 append(
1918 |                     (append(
 ...
1925 |                     string("delete_file_async"),
1926 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1918:21
     |
1918 |                     (append(
     |                     ^
...
1924 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
1918 ~                     append(
1919 |                         (append(
 ...
1923 |                         string(" "),
1924 ~                     ),
     |
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:25
     |
1919 |                         (append(
     |                         ^
...
1922 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
1919 ~                         append(
1920 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1921 |                             (toString(v0.l0.get().clone())),
1922 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1920:29
     |
1920 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
1920 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1920 +                             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:1921:29
     |
1921 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
1921 -                             (toString(v0.l0.get().clone())),
1921 +                             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:1920:37
     |
1920 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
1920 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1920 +                             (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:1920:45
     |
1920 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
1920 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1920 +                             (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:1920:74
     |
1920 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
1920 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1920 +                             (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:1920:53
     |
1920 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
1920 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
1920 +                             (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:2125:13
     |
2125 |             (append(
     |             ^
...
2137 |             )),
     |              ^
     |
help: remove these parentheses
     |
2125 ~             append(
2126 |                 (append(
 ...
2136 |                 string(" / "),
2137 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2138:13
     |
2138 |             (v11),
     |             ^   ^
     |
help: remove these parentheses
     |
2138 -             (v11),
2138 +             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:2126:17
     |
2126 |                 (append(
     |                 ^
...
2135 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
2126 ~                 append(
2127 |                     (append(
 ...
2134 |                     string("move_file_async"),
2135 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2127:21
     |
2127 |                     (append(
     |                     ^
...
2133 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
2127 ~                     append(
2128 |                         (append(
 ...
2132 |                         string(" "),
2133 ~                     ),
     |
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:25
     |
2128 |                         (append(
     |                         ^
...
2131 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
2128 ~                         append(
2129 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2130 |                             (toString(v0.l0.get().clone())),
2131 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2129:29
     |
2129 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
2129 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2129 +                             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:2130:29
     |
2130 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
2130 -                             (toString(v0.l0.get().clone())),
2130 +                             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:2129:37
     |
2129 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
2129 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2129 +                             (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:2129:45
     |
2129 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
2129 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2129 +                             (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:2129:74
     |
2129 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
2129 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2129 +                             (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:2129:53
     |
2129 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
2129 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2129 +                             (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:2352:13
     |
2352 |             (append(
     |             ^
...
2364 |             )),
     |              ^
     |
help: remove these parentheses
     |
2352 ~             append(
2353 |                 (append(
 ...
2363 |                 string(" / "),
2364 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2365:13
     |
2365 |             (v9),
     |             ^  ^
     |
help: remove these parentheses
     |
2365 -             (v9),
2365 +             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:2353:17
     |
2353 |                 (append(
     |                 ^
...
2362 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
2353 ~                 append(
2354 |                     (append(
 ...
2361 |                     string("async.run_with_timeout_async"),
2362 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2354:21
     |
2354 |                     (append(
     |                     ^
...
2360 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
2354 ~                     append(
2355 |                         (append(
 ...
2359 |                         string(" "),
2360 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2355:25
     |
2355 |                         (append(
     |                         ^
...
2358 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
2355 ~                         append(
2356 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2357 |                             (toString(v0.l0.get().clone())),
2358 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2356:29
     |
2356 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
2356 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2356 +                             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:2357:29
     |
2357 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
2357 -                             (toString(v0.l0.get().clone())),
2357 +                             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:2356:37
     |
2356 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
2356 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2356 +                             (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:2356:45
     |
2356 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
2356 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2356 +                             (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:2356:74
     |
2356 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
2356 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2356 +                             (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:2356:53
     |
2356 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
2356 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2356 +                             (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:2528:13
     |
2528 |             (append(
     |             ^
...
2540 |             )),
     |              ^
     |
help: remove these parentheses
     |
2528 ~             append(
2529 |                 (append(
 ...
2539 |                 string(" / "),
2540 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2541:13
     |
2541 |             (v10),
     |             ^   ^
     |
help: remove these parentheses
     |
2541 -             (v10),
2541 +             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:2529:17
     |
2529 |                 (append(
     |                 ^
...
2538 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
2529 ~                 append(
2530 |                     (append(
 ...
2537 |                     string("async.run_with_timeout_async**"),
2538 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2530:21
     |
2530 |                     (append(
     |                     ^
...
2536 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
2530 ~                     append(
2531 |                         (append(
 ...
2535 |                         string(" "),
2536 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2531:25
     |
2531 |                         (append(
     |                         ^
...
2534 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
2531 ~                         append(
2532 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2533 |                             (toString(v0.l0.get().clone())),
2534 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2532:29
     |
2532 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
2532 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2532 +                             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:2533:29
     |
2533 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
2533 -                             (toString(v0.l0.get().clone())),
2533 +                             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:2532:37
     |
2532 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
2532 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2532 +                             (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:2532:45
     |
2532 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
2532 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2532 +                             (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:2532:74
     |
2532 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
2532 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2532 +                             (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:2532:53
     |
2532 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
2532 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2532 +                             (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:2762:13
     |
2762 |             (append(
     |             ^
...
2774 |             )),
     |              ^
     |
help: remove these parentheses
     |
2762 ~             append(
2763 |                 (append(
 ...
2773 |                 string(" / "),
2774 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2775:13
     |
2775 |             (v10),
     |             ^   ^
     |
help: remove these parentheses
     |
2775 -             (v10),
2775 +             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:2763:17
     |
2763 |                 (append(
     |                 ^
...
2772 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
2763 ~                 append(
2764 |                     (append(
 ...
2771 |                     string("file_system.read_all_text_retry_async"),
2772 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2764:21
     |
2764 |                     (append(
     |                     ^
...
2770 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
2764 ~                     append(
2765 |                         (append(
 ...
2769 |                         string(" "),
2770 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2765:25
     |
2765 |                         (append(
     |                         ^
...
2768 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
2765 ~                         append(
2766 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2767 |                             (toString(v0.l0.get().clone())),
2768 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2766:29
     |
2766 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
2766 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2766 +                             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:2767:29
     |
2767 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
2767 -                             (toString(v0.l0.get().clone())),
2767 +                             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:2766:37
     |
2766 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
2766 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2766 +                             (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:2766:45
     |
2766 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
2766 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2766 +                             (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:2766:74
     |
2766 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
2766 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2766 +                             (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:2766:53
     |
2766 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
2766 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
2766 +                             (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:3110:13
     |
3110 |             (append(
     |             ^
...
3122 |             )),
     |              ^
     |
help: remove these parentheses
     |
3110 ~             append(
3111 |                 (append(
 ...
3121 |                 string(" / "),
3122 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3123:13
     |
3123 |             (v10),
     |             ^   ^
     |
help: remove these parentheses
     |
3123 -             (v10),
3123 +             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:3111:17
     |
3111 |                 (append(
     |                 ^
...
3120 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
3111 ~                 append(
3112 |                     (append(
 ...
3119 |                     string("file_system.create_dir"),
3120 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3112:21
     |
3112 |                     (append(
     |                     ^
...
3118 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
3112 ~                     append(
3113 |                         (append(
 ...
3117 |                         string(" "),
3118 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3113:25
     |
3113 |                         (append(
     |                         ^
...
3116 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
3113 ~                         append(
3114 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3115 |                             (toString(v0.l0.get().clone())),
3116 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3114:29
     |
3114 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
3114 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3114 +                             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:3115:29
     |
3115 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
3115 -                             (toString(v0.l0.get().clone())),
3115 +                             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:3114:37
     |
3114 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
3114 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3114 +                             (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:3114:45
     |
3114 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
3114 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3114 +                             (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:3114:74
     |
3114 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
3114 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3114 +                             (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:3114:53
     |
3114 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
3114 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3114 +                             (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:3270:13
     |
3270 |             (append(
     |             ^
...
3282 |             )),
     |              ^
     |
help: remove these parentheses
     |
3270 ~             append(
3271 |                 (append(
 ...
3281 |                 string(" / "),
3282 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3283:13
     |
3283 |             (v9),
     |             ^  ^
     |
help: remove these parentheses
     |
3283 -             (v9),
3283 +             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:3271:17
     |
3271 |                 (append(
     |                 ^
...
3280 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
3271 ~                 append(
3272 |                     (append(
 ...
3279 |                     string("file_system.create_dir"),
3280 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3272:21
     |
3272 |                     (append(
     |                     ^
...
3278 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
3272 ~                     append(
3273 |                         (append(
 ...
3277 |                         string(" "),
3278 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3273:25
     |
3273 |                         (append(
     |                         ^
...
3276 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
3273 ~                         append(
3274 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3275 |                             (toString(v0.l0.get().clone())),
3276 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3274:29
     |
3274 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
3274 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3274 +                             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:3275:29
     |
3275 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
3275 -                             (toString(v0.l0.get().clone())),
3275 +                             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:3274:37
     |
3274 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
3274 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3274 +                             (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:3274:45
     |
3274 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
3274 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3274 +                             (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:3274:74
     |
3274 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
3274 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3274 +                             (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:3274:53
     |
3274 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
3274 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3274 +                             (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:3464:13
     |
3464 |             (append(
     |             ^
...
3476 |             )),
     |              ^
     |
help: remove these parentheses
     |
3464 ~             append(
3465 |                 (append(
 ...
3475 |                 string(" / "),
3476 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3477:13
     |
3477 |             (v10),
     |             ^   ^
     |
help: remove these parentheses
     |
3477 -             (v10),
3477 +             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:3465:17
     |
3465 |                 (append(
     |                 ^
...
3474 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
3465 ~                 append(
3466 |                     (append(
 ...
3473 |                     string("file_system.create_dir"),
3474 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3466:21
     |
3466 |                     (append(
     |                     ^
...
3472 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
3466 ~                     append(
3467 |                         (append(
 ...
3471 |                         string(" "),
3472 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3467:25
     |
3467 |                         (append(
     |                         ^
...
3470 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
3467 ~                         append(
3468 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3469 |                             (toString(v0.l0.get().clone())),
3470 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3468:29
     |
3468 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
3468 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3468 +                             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:3469:29
     |
3469 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
3469 -                             (toString(v0.l0.get().clone())),
3469 +                             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:3468:37
     |
3468 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
3468 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3468 +                             (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:3468:45
     |
3468 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
3468 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3468 +                             (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:3468:74
     |
3468 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
3468 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3468 +                             (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:3468:53
     |
3468 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
3468 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
3468 +                             (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:3656:75
     |
3656 |             (File_system::method110(v0, v1.clone(), (v2) + 1_i32))(append((v3), (v1)))
     |                                                                           ^  ^
     |
help: remove these parentheses
     |
3656 -             (File_system::method110(v0, v1.clone(), (v2) + 1_i32))(append((v3), (v1)))
3656 +             (File_system::method110(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:3656:81
     |
3656 |             (File_system::method110(v0, v1.clone(), (v2) + 1_i32))(append((v3), (v1)))
     |                                                                                 ^  ^
     |
help: remove these parentheses
     |
3656 -             (File_system::method110(v0, v1.clone(), (v2) + 1_i32))(append((v3), (v1)))
3656 +             (File_system::method110(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:3670:13
     |
3670 |             ((File_system::method110(32_i32 - (length(v0.clone())), v3, 0_i32))(string(""))),
     |             ^                                                                              ^
     |
help: remove these parentheses
     |
3670 -             ((File_system::method110(32_i32 - (length(v0.clone())), v3, 0_i32))(string(""))),
3670 +             (File_system::method110(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:3671:13
     |
3671 |             (v0),
     |             ^  ^
     |
help: remove these parentheses
     |
3671 -             (v0),
3671 +             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:3674:13
     |
3674 |             (append(
     |             ^
...
3695 |             )),
     |              ^
     |
help: remove these parentheses
     |
3674 ~             append(
3675 |                 (append(
 ...
3694 |                 string("-"),
3695 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3696:13
     |
3696 |             (getSlice(v13, Some(20_i32), Some((32_i32) - 1_i32))),
     |             ^                                                   ^
     |
help: remove these parentheses
     |
3696 -             (getSlice(v13, Some(20_i32), Some((32_i32) - 1_i32))),
3696 +             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:3675:17
     |
3675 |                 (append(
     |                 ^
...
3693 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
3675 ~                 append(
3676 |                     (append(
 ...
3692 |                     (getSlice(v13.clone(), Some(16_i32), Some((20_i32) - 1_i32))),
3693 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3676:21
     |
3676 |                     (append(
     |                     ^
...
3691 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
3676 ~                     append(
3677 |                         (append(
 ...
3690 |                         string("-"),
3691 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3692:21
     |
3692 |                     (getSlice(v13.clone(), Some(16_i32), Some((20_i32) - 1_i32))),
     |                     ^                                                           ^
     |
help: remove these parentheses
     |
3692 -                     (getSlice(v13.clone(), Some(16_i32), Some((20_i32) - 1_i32))),
3692 +                     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:3677:25
     |
3677 |                         (append(
     |                         ^
...
3689 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
3677 ~                         append(
3678 |                             (append(
 ...
3688 |                             (getSlice(v13.clone(), Some(12_i32), Some((16_i32) - 1_i32))),
3689 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3678:29
     |
3678 | ...                   (append(
     |                       ^
...
3687 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
3678 ~                             append(
3679 |                                 (append(
 ...
3686 |                                 string("-"),
3687 ~                             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3688:29
     |
3688 | ...                   (getSlice(v13.clone(), Some(12_i32), Some((16_i32) - 1_i32))),
     |                       ^                                                           ^
     |
help: remove these parentheses
     |
3688 -                             (getSlice(v13.clone(), Some(12_i32), Some((16_i32) - 1_i32))),
3688 +                             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:3679:33
     |
3679 | ...                   (append(
     |                       ^
...
3685 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
3679 ~                                 append(
3680 |                                     (append(
 ...
3684 |                                     (getSlice(v13.clone(), Some(8_i32), Some((12_i32) - 1_i32))),
3685 ~                                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3680:37
     |
3680 | ...                   (append(
     |                       ^
...
3683 | ...                   )),
     |                        ^
     |
help: remove these parentheses
     |
3680 ~                                     append(
3681 |                                         (getSlice(v13.clone(), Some(0_i32), Some((8_i32) - 1_i32))),
3682 |                                         string("-"),
3683 ~                                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3684:37
     |
3684 | ...                   (getSlice(v13.clone(), Some(8_i32), Some((12_i32) - 1_i32))),
     |                       ^                                                          ^
     |
help: remove these parentheses
     |
3684 -                                     (getSlice(v13.clone(), Some(8_i32), Some((12_i32) - 1_i32))),
3684 +                                     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:3681:41
     |
3681 | ...                   (getSlice(v13.clone(), Some(0_i32), Some((8_i32) - 1_i32))),
     |                       ^                                                         ^
     |
help: remove these parentheses
     |
3681 -                                         (getSlice(v13.clone(), Some(0_i32), Some((8_i32) - 1_i32))),
3681 +                                         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:4559:31
     |
4559 |             break '_method142 (if v3(File_system::method91(v4.get().clone(), v0.get().clone())) {
     |                               ^
...
4600 |             });
     |              ^
     |
help: remove these parentheses
     |
4559 ~             break '_method142 if v3(File_system::method91(v4.get().clone(), v0.get().clone())) {
4560 |                 File_system::US18::US18_0(v4.get().clone())
 ...
4599 |                 }
4600 ~             };
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4584:25
     |
4584 |                         (concat(new_array(&[
     |                         ^
...
4591 |                         ]))),
     |                            ^
     |
help: remove these parentheses
     |
4584 ~                         concat(new_array(&[
4585 |                             string("file_system.find_parent / No parent for "),
 ...
4590 |                             },
4591 ~                         ])),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4628:21
     |
4628 |                     (concat(new_array(&[
     |                     ^
...
4631 |                     ]))),
     |                        ^
     |
help: remove these parentheses
     |
4628 ~                     concat(new_array(&[
4629 |                         string("file_system.find_parent / No parent for "),
4630 |                         if v2 { string("file") } else { string("dir") },
4631 ~                     ])),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4715:13
     |
4715 |             (append(
     |             ^
...
4727 |             )),
     |              ^
     |
help: remove these parentheses
     |
4715 ~             append(
4716 |                 (append(
 ...
4726 |                 string(" / "),
4727 ~             ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4728:13
     |
4728 |             (v10),
     |             ^   ^
     |
help: remove these parentheses
     |
4728 -             (v10),
4728 +             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:4716:17
     |
4716 |                 (append(
     |                 ^
...
4725 |                 )),
     |                  ^
     |
help: remove these parentheses
     |
4716 ~                 append(
4717 |                     (append(
 ...
4724 |                     string("file_system.get_workspace_root"),
4725 ~                 ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4717:21
     |
4717 |                     (append(
     |                     ^
...
4723 |                     )),
     |                      ^
     |
help: remove these parentheses
     |
4717 ~                     append(
4718 |                         (append(
 ...
4722 |                         string(" "),
4723 ~                     ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4718:25
     |
4718 |                         (append(
     |                         ^
...
4721 |                         )),
     |                          ^
     |
help: remove these parentheses
     |
4718 ~                         append(
4719 |                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
4720 |                             (toString(v0.l0.get().clone())),
4721 ~                         ),
     |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4719:29
     |
4719 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                       ^                                                                 ^
     |
help: remove these parentheses
     |
4719 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
4719 +                             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:4720:29
     |
4720 | ...                   (toString(v0.l0.get().clone())),
     |                       ^                             ^
     |
help: remove these parentheses
     |
4720 -                             (toString(v0.l0.get().clone())),
4720 +                             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:4719:37
     |
4719 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                               ^                                         ^
     |
help: remove these parentheses
     |
4719 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
4719 +                             (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:4719:45
     |
4719 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                       ^                         ^
     |
help: remove these parentheses
     |
4719 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
4719 +                             (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:4719:74
     |
4719 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                                                    ^  ^
     |
help: remove these parentheses
     |
4719 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
4719 +                             (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:4719:53
     |
4719 | ...                   (append((append((append((v6), string(" "))), (v7))), string(" #"))),
     |                                               ^  ^
     |
help: remove these parentheses
     |
4719 -                             (append((append((append((v6), string(" "))), (v7))), string(" #"))),
4719 +                             (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:757:13
    |
757 |             (fable_library_rust::String_::fromString(v10)),
    |             ^                                            ^
    |
help: remove these parentheses
    |
757 -             (fable_library_rust::String_::fromString(v10)),
757 +             fable_library_rust::String_::fromString(v10),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:758:13
    |
758 |             (Crypto::method16(getCharAt(toLower(string("Verbose")), 0_i32))),
    |             ^                                                              ^
    |
help: remove these parentheses
    |
758 -             (Crypto::method16(getCharAt(toLower(string("Verbose")), 0_i32))),
758 +             Crypto::method16(getCharAt(toLower(string("Verbose")), 0_i32)),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:762:16
    |
762 |         append((v139), (fable_library_rust::String_::fromString(v152)))
    |                ^    ^
    |
help: remove these parentheses
    |
762 -         append((v139), (fable_library_rust::String_::fromString(v152)))
762 +         append(v139, (fable_library_rust::String_::fromString(v152)))
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:762:24
    |
762 |         append((v139), (fable_library_rust::String_::fromString(v152)))
    |                        ^                                             ^
    |
help: remove these parentheses
    |
762 -         append((v139), (fable_library_rust::String_::fromString(v152)))
762 +         append((v139), fable_library_rust::String_::fromString(v152))
    |
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:688:13
    |
688 |             (fable_library_rust::String_::fromString(v10)),
    |             ^                                            ^
    |
help: remove these parentheses
    |
688 -             (fable_library_rust::String_::fromString(v10)),
688 +             fable_library_rust::String_::fromString(v10),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:689:13
    |
689 |             (Common::method14(getCharAt(toLower(string("Warning")), 0_i32))),
    |             ^                                                              ^
    |
help: remove these parentheses
    |
689 -             (Common::method14(getCharAt(toLower(string("Warning")), 0_i32))),
689 +             Common::method14(getCharAt(toLower(string("Warning")), 0_i32)),
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:693:16
    |
693 |         append((v139), (fable_library_rust::String_::fromString(v152)))
    |                ^    ^
    |
help: remove these parentheses
    |
693 -         append((v139), (fable_library_rust::String_::fromString(v152)))
693 +         append(v139, (fable_library_rust::String_::fromString(v152)))
    |
System.Management.Automation.RemoteException
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:693:24
    |
693 |         append((v139), (fable_library_rust::String_::fromString(v152)))
    |                        ^                                             ^
    |
help: remove these parentheses
    |
693 -         append((v139), (fable_library_rust::String_::fromString(v152)))
693 +         append((v139), fable_library_rust::String_::fromString(v152))
    |
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 527 warnings (run `cargo fix --lib -p plot` to apply 527 suggestions)
    Finished `release` profile [optimized] target(s) in 20.71s
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
> 
> ── [ 296.48ms - stdout ] ───────────────────────────────────────────────────────
> │ 
> │ 
> │ Test: empty3Tests
> │ 
> │ Solution: (a, a)  
> │ Test case 1. A. Time: 30L  
> │ 
> │ Solution: (a, a)  
> │ Test case 1. A. Time: 25L  
> │ 
> │ Input 	| Expected	| Result	| Best   
> │ ---   	| ---     	| ---   	| ---    
> │ (a, a)	| a       	| a     	| (1, 30)
> │ (a, a)	| a       	| a     	| (1, 25)
> │ 
> │ Average Ranking  
> │ Test case 1. Average Time: 27L  
> │ 
> 
> ── 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
> 
> ── [ 289.26ms - stdout ] ───────────────────────────────────────────────────────
> │ 
> │ 
> │ Test: empty2Tests
> │ 
> │ Solution: (a, a)  
> │ Test case 1. A. Time: 26L  
> │ 
> │ Solution: (a, a)  
> │ Test case 1. A. Time: 26L  
> │ 
> │ Input 	| Expected	| Result	| Best   
> │ ---   	| ---     	| ---   	| ---    
> │ (a, a)	| a       	| a     	| (1, 26)
> │ (a, a)	| a       	| a     	| (1, 26)
> │ 
> │ Average Ranking  
> │ Test case 1. Average Time: 26L  
> │ 
> 
> ── 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
> 
> ── [ 476.97ms - stdout ] ───────────────────────────────────────────────────────
> │ 
> │ 
> │ Test: emptyTests
> │ 
> │ Solution: 0  
> │ Test case 1. A. Time: 29L  
> │ 
> │ Solution: 2  
> │ Test case 1. A. Time: 26L  
> │ 
> │ Solution: 5  
> │ Test case 1. A. Time: 57L  
> │ 
> │ Input	| Expected	| Result	| Best   
> │ ---  	| ---     	| ---   	| ---    
> │ 0    	| 0       	| 0     	| (1, 29)
> │ 2    	| 2       	| 2     	| (1, 26)
> │ 5    	| 5       	| 5     	| (1, 57)
> │ 
> │ Average Ranking  
> │ Test case 1. Average Time: 37L  
> │ 
> 
> ── 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
> 
> ── [ 48.14s - stdout ] ─────────────────────────────────────────────────────────
> │ 
> │ 
> │ Test: uniqueLettersTests
> │ 
> │ Solution: abc  
> │ Test case 1. A. Time: 710L  
> │ Test case 2. B. Time: 1235L  
> │ Test case 3. C. Time: 1428L  
> │ Test case 4. D. Time: 732L  
> │ Test case 5. E. Time: 811L  
> │ Test case 6. F. Time: 890L  
> │ Test case 7. G. Time: 810L  
> │ Test case 8. H. Time: 862L  
> │ Test case 9. I. Time: 708L  
> │ Test case 10. J. Time: 989L  
> │ Test case 11. K. Time: 689L  
> │ 
> │ Solution: accabb  
> │ Test case 1. A. Time: 950L  
> │ Test case 2. B. Time: 1279L  
> │ Test case 3. C. Time: 687L  
> │ Test case 4. D. Time: 449L  
> │ Test case 5. E. Time: 459L  
> │ Test case 6. F. Time: 447L  
> │ Test case 7. G. Time: 465L  
> │ Test case 8. H. Time: 478L  
> │ Test case 9. I. Time: 448L  
> │ Test case 10. J. Time: 356L  
> │ Test case 11. K. Time: 459L  
> │ 
> │ Solution: pprrqqpp  
> │ Test case 1. A. Time: 409L  
> │ Test case 2. B. Time: 534L  
> │ Test case 3. C. Time: 738L  
> │ Test case 4. D. Time: 493L  
> │ Test case 5. E. Time: 499L  
> │ Test case 6. F. Time: 513L  
> │ Test case 7. G. Time: 469L  
> │ Test case 8. H. Time: 503L  
> │ Test case 9. I. Time: 468L  
> │ Test case 10. J. Time: 422L  
> │ Test case 11. K. Time: 377L  
> │ 
> │ Solution: 
> aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb│ Test case 1. A. Time: 1547L  
> │ Test case 2. B. Time: 1787L  
> │ Test case 3. C. Time: 3131L  
> │ Test case 4. D. Time: 1666L  
> │ Test case 5. E. Time: 1962L  
> │ Test case 6. F. Time: 1815L  
> │ Test case 7. G. Time: 1936L  
> │ Test case 8. H. Time: 1720L  
> │ Test case 9. I. Time: 1799L  
> │ Test case 10. J. Time: 1523L  
> │ Test case 11. K. Time: 838L  
> │ 
> │ Input
> | Expected	| Result	| Best     
> │ ---
> | ---     	| ---   	| ---      
> │ abc
> | abc     	| abc   	| (11, 689)
> │ accabb
> | acb     	| acb   	| (10, 356)
> │ pprrqqpp
> | prq     	| prq   	| (11, 377)
> │ 
> aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb	| 
> acb     	| acb   	| (11, 838)
> │ 
> │ Average Ranking  
> │ Test case 11. Average Time: 590L  
> │ Test case 10. Average Time: 822L  
> │ Test case 4. Average Time: 835L  
> │ Test case 9. Average Time: 855L  
> │ Test case 8. Average Time: 890L  
> │ Test case 1. Average Time: 904L  
> │ Test case 6. Average Time: 916L  
> │ Test case 7. Average Time: 920L  
> │ Test case 5. Average Time: 932L  
> │ Test case 2. Average Time: 1208L  
> │ Test case 3. Average Time: 1496L  
> │ 
> 
> ── 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.11s - stdout ] ─────────────────────────────────────────────────────────
> │ 
> │ 
> │ Test: rotateStringsTests
> │ 
> │ Solution: abc  
> │ Test case 1. A. Time: 621L  
> │ Test case 2. B. Time: 516L  
> │ Test case 3. C. Time: 536L  
> │ Test case 4. CA. Time: 740L  
> │ Test case 5. CB. Time: 728L  
> │ Test case 6. D. Time: 623L  
> │ Test case 7. E. Time: 485L  
> │ Test case 8. F. Time: 288L  
> │ Test case 9. FA. Time: 444L  
> │ Test case 10. FB. Time: 900L  
> │ Test case 11. FC. Time: 1199L  
> │ 
> │ Solution: abcde  
> │ Test case 1. A. Time: 870L  
> │ Test case 2. B. Time: 633L  
> │ Test case 3. C. Time: 693L  
> │ Test case 4. CA. Time: 772L  
> │ Test case 5. CB. Time: 834L  
> │ Test case 6. D. Time: 889L  
> │ Test case 7. E. Time: 605L  
> │ Test case 8. F. Time: 439L  
> │ Test case 9. FA. Time: 618L  
> │ Test case 10. FB. Time: 985L  
> │ Test case 11. FC. Time: 1269L  
> │ 
> │ Solution: abcdefghi  
> │ Test case 1. A. Time: 1450L  
> │ Test case 2. B. Time: 1016L  
> │ Test case 3. C. Time: 1122L  
> │ Test case 4. CA. Time: 1149L  
> │ Test case 5. CB. Time: 1294L  
> │ Test case 6. D. Time: 1921L  
> │ Test case 7. E. Time: 958L  
> │ Test case 8. F. Time: 774L  
> │ Test case 9. FA. Time: 1008L  
> │ Test case 10. FB. Time: 1442L  
> │ Test case 11. FC. Time: 1727L  
> │ 
> │ Solution: abab  
> │ Test case 1. A. Time: 675L  
> │ Test case 2. B. Time: 562L  
> │ Test case 3. C. Time: 577L  
> │ Test case 4. CA. Time: 687L  
> │ Test case 5. CB. Time: 658L  
> │ Test case 6. D. Time: 764L  
> │ Test case 7. E. Time: 513L  
> │ Test case 8. F. Time: 369L  
> │ Test case 9. FA. Time: 520L  
> │ Test case 10. FB. Time: 880L  
> │ Test case 11. FC. Time: 1211L  
> │ 
> │ Solution: aa  
> │ Test case 1. A. Time: 403L  
> │ Test case 2. B. Time: 375L  
> │ Test case 3. C. Time: 376L  
> │ Test case 4. CA. Time: 531L  
> │ Test case 5. CB. Time: 450L  
> │ Test case 6. D. Time: 450L  
> │ Test case 7. E. Time: 329L  
> │ Test case 8. F. Time: 255L  
> │ Test case 9. FA. Time: 263L  
> │ Test case 10. FB. Time: 676L  
> │ Test case 11. FC. Time: 1154L  
> │ 
> │ Solution: z  
> │ Test case 1. A. Time: 233L  
> │ Test case 2. B. Time: 181L  
> │ Test case 3. C. Time: 256L  
> │ Test case 4. CA. Time: 436L  
> │ Test case 5. CB. Time: 296L  
> │ Test case 6. D. Time: 263L  
> │ Test case 7. E. Time: 171L  
> │ Test case 8. F. Time: 69L  
> │ Test case 9. FA. Time: 90L  
> │ Test case 10. FB. Time: 365L  
> │ Test case 11. FC. Time: 939L  
> │ 
> │ Input    	| Expected
> | Result
>                                                                                 
> | Best    
> │ ---      	| ---
>                                                                                 
> | ---
>                                                                                 
> | ---     
> │ abc      	| bca cab abc
> | bca cab abc
> | (8, 288)
> │ abcde    	| bcdea cdeab deabc eabcd abcde
> | bcdea cdeab deabc eabcd abcde
> | (8, 439)
> │ abcdefghi	| bcdefghia cdefghiab defghiabc efghiabcd fghiabcde 
> ghiabcdef hiabcdefg iabcdefgh abcdefghi	| bcdefghia cdefghiab defghiabc efghiabcd 
> fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi	| (8, 774)
> │ abab     	| baba abab baba abab
> | baba abab baba abab
> | (8, 369)
> │ aa       	| aa aa
>                                                                                 
> | aa aa
>                                                                                 
> | (8, 255)
> │ z        	| z
>                                                                                 
> | z
>                                                                                 
> | (8, 69) 
> │ 
> │ Average Ranking  
> │ Test case 8. Average Time: 365L  
> │ Test case 9. Average Time: 490L  
> │ Test case 7. Average Time: 510L  
> │ Test case 2. Average Time: 547L  
> │ Test case 3. Average Time: 593L  
> │ Test case 1. Average Time: 708L  
> │ Test case 5. Average Time: 710L  
> │ Test case 4. Average Time: 719L  
> │ Test case 6. Average Time: 818L  
> │ Test case 10. Average Time: 874L  
> │ Test case 11. Average Time: 1249L  
> │ 
> 
> ── 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.11s - 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 = 534 }
> │ 00:00:01 v #4 benchmark.run / solutions.map / { i = 2; 
> test_name = FA; time = 547 }
> │ 
> │ 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 = 545 }
> │ 00:00:02 v #7 benchmark.run / solutions.map / { i = 2; 
> test_name = FA; time = 714 }
> │ 
> │ 00:00:02 v #8 benchmark.run / { input_str = abcdefghi }
> │ 00:00:04 v #9 benchmark.run / solutions.map / { i = 1; 
> test_name = F; time = 886 }
> │ 00:00:05 v #10 benchmark.run / solutions.map / { i = 2; 
> test_name = FA; time = 1147 }
> │ 
> │ 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 = 452 }
> │ 00:00:06 v #13 benchmark.run / solutions.map / { i = 2; 
> test_name = FA; time = 615 }
> │ 
> │ 00:00:06 v #14 benchmark.run / { input_str = aa }
> │ 00:00:07 v #15 benchmark.run / solutions.map / { i = 1; 
> test_name = F; time = 287 }
> │ 00:00:07 v #16 benchmark.run / solutions.map / { i = 2; 
> test_name = FA; time = 366 }
> │ 
> │ 00:00:07 v #17 benchmark.run / { input_str = z }
> │ 00:00:08 v #18 benchmark.run / solutions.map / { i = 1; 
> test_name = F; time = 104 }
> │ 00:00:08 v #19 benchmark.run / solutions.map / { i = 2; 
> test_name = FA; time = 119 }
> │ ```
> │ input    	| expected
> | result
>                                                                                 
> | best  
> │ ---      	| ---
>                                                                                 
> | ---
>                                                                                 
> | ---   
> │ abc      	| bca cab abc
> | bca cab abc
> | 1, 534
> │ abcde    	| bcdea cdeab deabc eabcd abcde
> | bcdea cdeab deabc eabcd abcde
> | 1, 545
> │ abcdefghi	| bcdefghia cdefghiab defghiabc efghiabcd fghiabcde 
> ghiabcdef hiabcdefg iabcdefgh abcdefghi	| bcdefghia cdefghiab defghiabc efghiabcd 
> fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi	| 1, 886
> │ abab     	| baba abab baba abab
> | baba abab baba abab
> | 1, 452
> │ aa       	| aa aa
>                                                                                 
> | aa aa
>                                                                                 
> | 1, 287
> │ z        	| z
>                                                                                 
> | z
>                                                                                 
> | 1, 104
> │ ```
> │ 00:00:08 v #20 benchmark.sort_result_list / 
> averages.iter / { i = 1; avg = 468 }
> │ 00:00:08 v #21 benchmark.sort_result_list / 
> averages.iter / { i = 2; avg = 584 }
> │ ```
> │ 
> 
> ── 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.52s - 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 = 172 }
> │ 00:00:00 v #4 benchmark.run / solutions.map / { i = 2; 
> test_name = closed_1; time = 159 }
> │ 00:00:00 v #5 benchmark.run / solutions.map / { i = 3; 
> test_name = semi_open_2; time = 231 }
> │ 00:00:01 v #6 benchmark.run / solutions.map / { i = 4; 
> test_name = closed_2; time = 143 }
> │ 
> │ 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 = 143 }
> │ 00:00:01 v #9 benchmark.run / solutions.map / { i = 2; 
> test_name = closed_1; time = 87 }
> │ 00:00:01 v #10 benchmark.run / solutions.map / { i = 3; 
> test_name = semi_open_2; time = 78 }
> │ 00:00:01 v #11 benchmark.run / solutions.map / { i = 4; 
> test_name = closed_2; time = 81 }
> │ 
> │ 00:00:01 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 = 82 }
> │ 00:00:02 v #14 benchmark.run / solutions.map / { i = 2; 
> test_name = closed_1; time = 82 }
> │ 00:00:02 v #15 benchmark.run / solutions.map / { i = 3; 
> test_name = semi_open_2; time = 79 }
> │ 00:00:02 v #16 benchmark.run / solutions.map / { i = 4; 
> test_name = closed_2; time = 82 }
> │ 
> │ 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 = 86 }
> │ 00:00:03 v #19 benchmark.run / solutions.map / { i = 2; 
> test_name = closed_1; time = 88 }
> │ 00:00:03 v #20 benchmark.run / solutions.map / { i = 3; 
> test_name = semi_open_2; time = 87 }
> │ 00:00:03 v #21 benchmark.run / solutions.map / { i = 4; 
> test_name = closed_2; time = 90 }
> │ 
> │ 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 = 113 }
> │ 00:00:03 v #24 benchmark.run / solutions.map / { i = 2; 
> test_name = closed_1; time = 117 }
> │ 00:00:04 v #25 benchmark.run / solutions.map / { i = 3; 
> test_name = semi_open_2; time = 110 }
> │ 00:00:04 v #26 benchmark.run / solutions.map / { i = 4; 
> test_name = closed_2; time = 118 }
> │ 
> │ 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 = 74 }
> │ 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 = 77 }
> │ 00:00:04 v #31 benchmark.run / solutions.map / { i = 4; 
> test_name = closed_2; time = 75 }
> │ 
> │ 00:00:04 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 = 78 }
> │ 00:00:05 v #34 benchmark.run / solutions.map / { i = 2; 
> test_name = closed_1; time = 80 }
> │ 00:00:05 v #35 benchmark.run / solutions.map / { i = 3; 
> test_name = semi_open_2; time = 77 }
> │ 00:00:05 v #36 benchmark.run / solutions.map / { i = 4; 
> test_name = closed_2; time = 79 }
> │ 
> │ 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 = 80 }
> │ 00:00:05 v #39 benchmark.run / solutions.map / { i = 2; 
> test_name = closed_1; time = 87 }
> │ 00:00:06 v #40 benchmark.run / solutions.map / { i = 3; 
> test_name = semi_open_2; time = 81 }
> │ 00:00:06 v #41 benchmark.run / solutions.map / { i = 4; 
> test_name = closed_2; time = 86 }
> │ 
> │ 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 = 91 }
> │ 00:00:06 v #44 benchmark.run / solutions.map / { i = 2; 
> test_name = closed_1; time = 86 }
> │ 00:00:06 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 = 90 }
> │ 
> │ 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 = 104 }
> │ 00:00:07 v #50 benchmark.run / solutions.map / { i = 3; 
> test_name = semi_open_2; time = 101 }
> │ 00:00:07 v #51 benchmark.run / solutions.map / { i = 4; 
> test_name = closed_2; time = 104 }
> │ ```
> │ input                                    	| expected	| result  	| 
> best  
> │ ---                                      	| ---     	| ---     	| 
> ---   
> │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7)    	| US7_0 3 	| US7_0 3 	| 
> 4, 143
> │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7)    	| US7_0 0 	| US7_0 0 	| 
> 3, 78 
> │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7)   	| US7_0 6 	| US7_0 6 	| 
> 3, 79 
> │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7)   	| US7_1   	| US7_1   	| 
> 1, 86 
> │ struct ([1; 2; 3; 4...00; ...], 60, 1000)	| US7_0 59	| US7_0 59	| 
> 3, 110
> │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7)    	| US7_0 3 	| US7_0 3 	| 
> 1, 74 
> │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7)    	| US7_0 0 	| US7_0 0 	| 
> 3, 77 
> │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7)   	| US7_0 6 	| US7_0 6 	| 
> 1, 80 
> │ 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:07 v #52 benchmark.sort_result_list / 
> averages.iter / { i = 4; avg = 94 }
> │ 00:00:07 v #53 benchmark.sort_result_list / 
> averages.iter / { i = 2; avg = 96 }
> │ 00:00:07 v #54 benchmark.sort_result_list / 
> averages.iter / { i = 3; avg = 100 }
> │ 00:00:07 v #55 benchmark.sort_result_list / 
> averages.iter / { i = 1; avg = 101 }
> │ ```
> │ 
> 
> ── 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: 143L  
> │ 
> │ Solution: 2  
> │ Test case 1. A. Time: 151L  
> │ 
> │ Solution: 3  
> │ Test case 1. A. Time: 136L  
> │ 
> │ Solution: 9  
> │ Test case 1. A. Time: 137L  
> │ 
> │ Solution: 10  
> │ Test case 1. A. Time: 140L  
> │ 
> │ Input	| Expected  	| Result    	| Best    
> │ ---  	| ---       	| ---       	| ---     
> │ 1    	| a         	| a         	| (1, 143)
> │ 2    	| ba        	| ba        	| (1, 151)
> │ 3    	| aaa       	| aaa       	| (1, 136)
> │ 9    	| aaaaaaaaa 	| aaaaaaaaa 	| (1, 137)
> │ 10   	| baaaaaaaaa	| baaaaaaaaa	| (1, 140)
> │ 
> │ Average Ranking  
> │ Test case 1. Average Time: 141L  
> │ 
> 
> ── 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.32s - stdout ] ──────────────────────────────────────────────────────────
> │ 
> │ 
> │ Test: hasAnyPairCloseToEachotherTests
> │ 
> │ Solution: 0  
> │ Test case 1. A. Time: 140L  
> │ 
> │ Solution: 1,2  
> │ Test case 1. A. Time: 151L  
> │ 
> │ Solution: 3,5  
> │ Test case 1. A. Time: 78L  
> │ 
> │ Solution: 3,4,6  
> │ Test case 1. A. Time: 62L  
> │ 
> │ Solution: 2,4,6  
> │ Test case 1. A. Time: 64L  
> │ 
> │ Input	| Expected	| Result	| Best    
> │ ---  	| ---     	| ---   	| ---     
> │ 0    	| False   	| False 	| (1, 140)
> │ 1,2  	| True    	| True  	| (1, 151)
> │ 3,5  	| False   	| False 	| (1, 78) 
> │ 3,4,6	| True    	| True  	| (1, 62) 
> │ 2,4,6	| False   	| False 	| (1, 64) 
> │ 
> │ Average Ranking  
> │ Test case 1. Average Time: 99L  
> │ 
00:02:28 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 85547 }
00:02:28 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:28 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb to html
00:02:28 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:28 v #7 !   validate(nb)
00:02:29 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:29 v #9 !   return _pygments_highlight(
00:02:29 v #10 ! [NbConvertApp] Writing 457908 bytes to /home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.html
00:02:29 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 }
00:02:29 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 }
00:02:29 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:30 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:02:30 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:02:30 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
> 
> ── [ 115.11ms - 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.44ms - 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 ()
> 
> ── [ 63.53ms - 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"
> 
> ── [ 60.15ms - 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 265 ms).
00:00:14 v #11 >   DirTreeHtml -> /home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/bin/Release/net9.0/linux-x64/DirTreeHtml.dll
00:00:14 v #12 >   DirTreeHtml -> /home/runner/work/polyglot/polyglot/apps/dir-tree-html/dist
00:00:14 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
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> open sm'_operators
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## task_id
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> nominal task_id = string
> 
> ── 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 =
>     {
>         id : task_id
>         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 ────────────────────────────────────────────────────────────────────
> │ ### action
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> union action =
>     | SetDate : date
>     | AddTask : task
>     | SetScheduling : task * scheduling
>     | AddStatus : task * date * status
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## get_actions (test)
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> 
> inl get_actions () : list action =
>     open date_time
>     [[
>         SetDate {
>             year = year 2000
>             month = February
>             day = day 29
>         }
>         AddTask {
>             id = task_id "1"
>             name = task_name "1"
>             scheduling = Manual WithSuggestion
>         }
>         AddTask {
>             id = task_id "02"
>             name = task_name "02"
>             scheduling = Manual WithSuggestion
>         }
>         AddTask {
>             id = task_id "003"
>             name = task_name "003"
>             scheduling = Manual WithSuggestion
>         }
>     ]]
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! gleam
> ///! fsharp
> ///! cuda
> ///! rust
> ///! typescript
> ///! python
> 
> get_actions ()
> |> sm'.format_debug
> |> _assert sm'.contains "003"
> 
> ── [ 17.69s - return value ] ───────────────────────────────────────────────────
> │ .py output (Python):
> │ { name = __assert; actual = 003; expected = 
> UH1_1(v0=US1_0(v0=2000, v1=US0_1(), v2=29), v1=UH1_1(v0=US1_1(v0='1', v1='1', 
> v2=US2_0(v0=US3_0())), v1=UH1_1(v0=US1_1(v0='02', v1='02', 
> v2=US2_0(v0=US3_0())), v1=UH1_1(v0=US1_1(v0='003', v1='003', 
> v2=US2_0(v0=US3_0())), v1=UH1_0())))) }
> │ 
> │ .rs output:
> │ { name = __assert; actual = 003; expected = UH1_1(US1_0(2000,
> US0_1, 29), UH1_1(US1_1("1", "1", US2_0(US3_0)), UH1_1(US1_1("02", "02", 
> US2_0(US3_0)), UH1_1(US1_1("003", "003", US2_0(US3_0)), UH1_0)))) }
> │ 
> │ .ts output:
> │ { name = __assert; actual = 003; expected = UH1_1 (US1_0 
> (2000, US0_1, 29), UH1_1 (US1_1 (1, 1, US2_0 US3_0), UH1_1 (US1_1 (02, 02, US2_0
> US3_0), UH1_1 (US1_1 (003, 003, US2_0 US3_0), UH1_0)))) }
> │ 
> │ .py output:
> │ { name = __assert; actual = 003; expected = UH1_1 (US1_0 
> (2000, US0_1, 29), UH1_1 (US1_1 ("1", "1", US2_0 US3_0), UH1_1 (US1_1 ("02", 
> "02", US2_0 US3_0), UH1_1 (US1_1 ("003", "003", US2_0 US3_0), UH1_0)))) }
> │ 
> │ .gleam output (Gleam):
> │ { name = __assert; actual = 003; expected = Uh1i1(Us1i0(2000,
> Us0i1, 29), Uh1i1(Us1i1("1", "1", Us2i0(Us3i0)), Uh1i1(Us1i1("02", "02", 
> Us2i0(Us3i0)), Uh1i1(Us1i1("003", "003", Us2i0(Us3i0)), Uh1i0)))) }
> │ 
> │ 
> 
> ── [ 17.69s - stdout ] ─────────────────────────────────────────────────────────
> │ .fsx output:
> │ { name = __assert; actual = 003; expected = UH1_1
> │   (US1_0 (2000, US0_1, 29),
> │    UH1_1
> │      (US1_1 ("1", "1", US2_0 US3_0),
> │       UH1_1
> │         (US1_1 ("02", "02", US2_0 US3_0),
> │          UH1_1 (US1_1 ("003", "003", US2_0 US3_0), UH1_0)))) 
> }
> │ 
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! gleam
> ///! fsharp
> ///! cuda
> ///! rust
> ///! typescript
> ///! python
> 
> get_actions ()
> |> listm'.try_item 3i32
> |> fun (Some action) =>
>     match action with
>     | AddTask { name } => name
> |> _assert_eq (task_name "003")
> 
> ── [ 10.38s - return value ] ───────────────────────────────────────────────────
> │ .py output (Python):
> │ { name = __assert_eq; actual = 003; expected = 003 }
> │ 
> │ .rs output:
> │ { name = __assert_eq; actual = "003"; expected = "003" }
> │ 
> │ .ts output:
> │ { name = __assert_eq; actual = 003; expected = 003 }
> │ 
> │ .py output:
> │ { name = __assert_eq; actual = 003; expected = 003 }
> │ 
> │ .gleam output (Gleam):
> │ { name = __assert_eq; actual = "003"; expected = "003" }
> │ 
> │ 
> 
> ── [ 10.38s - stdout ] ─────────────────────────────────────────────────────────
> │ .fsx output:
> │ { name = __assert_eq; actual = "003"; expected = "003" }
> │ 
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> 
> 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_actions ()
>         |> listm.map fun action =>
>             match action with
>             | AddTask { name } =>
>                 inl (task_name name) = name
>                 name
>             | _ => ""
>     )
> 
> inl cols () =
>     [[
>         col ()
>         col ()
>         [[ "a"; "b"; "c"; "d"; "e" ]]
>     ]]
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! gleam
> ///! fsharp
> ///! cuda
> ///! rust
> ///! typescript
> ///! python
> ///// print_code
> 
> cols ()
> |> print 1i32
> |> console.write_line
> 
> ── [ 10.79s - return value ] ───────────────────────────────────────────────────
> │ 
> │ .py output (Python):
> │ Task Task a 
> │           b 
> │ 1    1    c 
> │ 02   02   d 
> │ 003  003  e 
> │ 
> │ 
> │ .rs output:
> │ Task Task a 
> │           b 
> │ 1    1    c 
> │ 02   02   d 
> │ 003  003  e 
> │ 
> │ 
> │ .ts output:
> │ Task Task a 
> │           b 
> │ 1    1    c 
> │ 02   02   d 
> │ 003  003  e 
> │ 
> │ 
> │ .py output:
> │ Task Task a 
> │           b 
> │ 1    1    c 
> │ 02   02   d 
> │ 003  003  e 
> │ 
> │ 
> │ .gleam output (Gleam):
> │ Task Task a 
> │           b 
> │ 1    1    c 
> │ 02   02   d 
> │ 003  003  e 
> │ 
> │ 
> │ 
> 
> ── [ 10.79s - stdout ] ─────────────────────────────────────────────────────────
> │ .fsx output:
> │ Task Task a 
> │           b 
> │ 1    1    c 
> │ 02   02   d 
> │ 003  003  e 
> │ 
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> 
> inl task_name_width =
>     (0, get_actions ())
>     ||> listm.fold fun acc action =>
>         match action with
>         | AddTask { name } =>
>             inl (task_name name) = name
>             inl l = name |> sm'.length
>             if l > acc
>             then l
>             else acc
>         | _ => acc
>     |> (+) 1
> 
> 
> ("" |> sm'.pad_right task_name_width ' ')
> ++# "|" ++# " 2000               "
> ++# "|"
> |> console.write_line
> 
> ("" |> sm'.pad_right task_name_width ' ')
> ++# "|" ++# " february  "
> ++# "|" ++# " march  "
> ++# "|"
> |> console.write_line
> 
> ("" |> sm'.pad_right task_name_width ' ')
> ++# "|" ++# "sa"
> ++# "|" ++# "su"
> ++# "|" ++# "mo"
> ++# "|" ++# "tu"
> ++# "|" ++# "we"
> ++# "|" ++# "th"
> ++# "|" ++# "fr"
> ++# "|"
> |> console.write_line
> 
> ("" |> sm'.pad_right task_name_width ' ')
> ++# "|" ++# "26"
> ++# "|" ++# "27"
> ++# "|" ++# "28"
> ++# "|" ++# "29"
> ++# "|" ++# "01"
> ++# "|" ++# "02"
> ++# "|" ++# "03"
> ++# "|"
> |> console.write_line
> 
> inl lines =
>     ("", get_actions ())
>     ||> listm.fold fun acc action =>
>         match action with
>         | AddTask { name } =>
>             inl (task_name name) = name
>             if acc = ""
>             then acc
>             else acc ++# "\n"
>             ++# (name |> sm'.pad_right task_name_width ' ')
>             ++# "|" ++# console.color_bright_white () ++# "??" ++# 
> console.color_reset ()
>             ++# "|" ++# console.color_bright_white () ++# "??" ++# 
> console.color_reset ()
>             ++# "|" ++# console.color_bright_green () ++# "??" ++# 
> console.color_reset ()
>             ++# "|" ++# console.color_yellow () ++# "??" ++# console.color_reset
> ()
>             ++# "|" ++# console.color_bright_red () ++# "??" ++# 
> console.color_reset ()
>             ++# "|" ++# console.color_bright_magenta () ++# "??" ++# 
> console.color_reset ()
>             ++# "|" ++# console.color_bright_cyan () ++# "??" ++# 
> console.color_reset ()
>             ++# "|"
>         | _ => ""
> lines |> console.write_line
> 
> ── [ 626.69ms - stdout ] ───────────────────────────────────────────────────────
> │     | 2000               |
> │     | february  | march  |
> │     |sa|su|mo|tu|we|th|fr|
> │     |26|27|28|29|01|02|03|
> │ 1   |??|??|??|??|??|??|??|
> │ 02  |??|??|??|??|??|??|??|
> │ 003 |??|??|??|??|??|??|??|
> │ 
00:00:49 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 15236 }
00:00:49 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:50 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb to html
00:00:50 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:50 v #7 !   validate(nb)
00:00:50 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:50 v #9 !   return _pygments_highlight(
00:00:51 v #10 ! [NbConvertApp] Writing 317175 bytes to /home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.html
00:00:51 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 904 }
00:00:51 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 904 }
00:00:51 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:51 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:51 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:51 d #16 spiral.run / dib / { exit_code = 0; result_length = 16199 }
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
> 
> ()
> 
> ── [ 49.31s - 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:02 i #2 near_workspaces.print_usd / { retry = 1; 
> total_gas_burnt_usd = +0.000808; total_gas_burnt = 1209318065396 }
> │ 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.000602; tokens_burnt_usd = +0.000602; 
> gas_burnt = 901236206056; tokens_burnt = 90123620605600000000 }
> │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry =
> 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" }
> │ 
> │ 
> │  
> │ 00:00:04 i #8 near_workspaces.print_usd / { retry = 2; 
> total_gas_burnt_usd = +0.000808; total_gas_burnt = 1209318065396 }
> │ 00:00:04 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:04 i #10 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602; 
> gas_burnt = 901236206056; tokens_burnt = 90123620605600000000 }
> │ 00:00:04 w #11 spiral_wasm.run / Error error ...n / 
> Error error / { retry = 13; error = "{ receipt_outcomes_len = 1; retry = 13; 
> receipt_failures = [] }" }
> │ 
> │ 
> │  
> │ 00:00:29 i #80 near_workspaces.print_usd / { retry = 
> 14; total_gas_burnt_usd = +0.000808; total_gas_burnt = 1209318065396 }
> │ 00:00:29 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:29 i #82 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602; 
> gas_burnt = 901236206056; tokens_burnt = 90123620605600000000 }
> │ 00:00:29 w #83 spiral_wasm.run / Error error / { retry 
> = 14; error = "{ receipt_outcomes_len = 1; retry = 14; receipt_failures = [] }" 
> }
> │ 
> │ 
> │  
> │ 00:00:31 i #86 near_workspaces.print_usd / { retry = 
> 15; total_gas_burnt_usd = +0.000808; total_gas_burnt = 1209318065396 }
> │ 00:00:31 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:31 i #88 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602; 
> gas_burnt = 901236206056; tokens_burnt = 90123620605600000000 }
> │ 00:00:31 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
> 
> ── [ 40.14s - return value ] ───────────────────────────────────────────────────
> │  
> │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; 
> total_gas_burnt_usd = +0.000873; total_gas_burnt = 1306519448315 }
> │ 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.000667; tokens_burnt_usd = +0.000667; 
> gas_burnt = 998437588975; tokens_burnt = 99843758897500000000 }
> │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry =
> 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" }
> │ 
> │ 
> │  
> │ 00:00:04 i #8 near_workspaces.print_usd / { retry = 2; 
> total_gas_burnt_usd = +0.000873; total_gas_burnt = 1306519448315 }
> │ 00:00:04 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:04 i #10 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000667; tokens_burnt_usd = +0.000667; 
> gas_burnt = 998437588975; tokens_burnt = 99843758897500000000 }
> │ 00:00:04 w #11 spiral_wasm.run / Error error / { retry 
> = 2; error = "{ receipt_outcomes_len = 1; retry = 2; receipt_failures = [] }" }
> │ 
> │ 
> │  
> │ 00:00:06 i #14 near_workspaces.print_usd / { retry = 3;
> total_gas_burnt_usd = +0.000873; total_gas_burnt = 13...n / Error error / { 
> retry = 13; error = "{ receipt_outcomes_len = 1; retry = 13; receipt_failures = 
> [] }" }
> │ 
> │ 
> │  
> │ 00:00:28 i #80 near_workspaces.print_usd / { retry = 
> 14; total_gas_burnt_usd = +0.000873; total_gas_burnt = 1306519448315 }
> │ 00:00:28 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:28 i #82 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000667; tokens_burnt_usd = +0.000667; 
> gas_burnt = 998437588975; tokens_burnt = 99843758897500000000 }
> │ 00:00:28 w #83 spiral_wasm.run / Error error / { retry 
> = 14; error = "{ receipt_outcomes_len = 1; retry = 14; receipt_failures = [] }" 
> }
> │ 
> │ 
> │  
> │ 00:00:30 i #86 near_workspaces.print_usd / { retry = 
> 15; total_gas_burnt_usd = +0.000873; total_gas_burnt = 1306519448315 }
> │ 00:00:30 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:30 i #88 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000667; tokens_burnt_usd = +0.000667; 
> gas_burnt = 998437588975; tokens_burnt = 99843758897500000000 }
> │ 00:00:30 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
> 
> ── [ 42.55s - 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.001389; total_gas_burnt = 2078662496092 }
> │ 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.001183; tokens_burnt_usd = +0.001183; 
> gas_burnt = 1770580636752; tokens_burnt = 177058063675200000000 }
> │ 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,...d = +0.001183; gas_burnt = 1770580636752; tokens_burnt = 
> 177058063675200000000 }
> │ 00:00:29 w #83 spiral_wasm.run / Error error / { retry 
> = 14; error = "{ receipt_outcomes_len = 1; retry = 14; 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:32 i #86 near_workspaces.print_usd / { retry = 
> 15; total_gas_burnt_usd = +0.001389; total_gas_burnt = 2078662496092 }
> │ 00:00:32 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:32 i #88 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.001183; tokens_burnt_usd = +0.001183; 
> gas_burnt = 1770580636752; tokens_burnt = 177058063675200000000 }
> │ 00:00:32 w #89 spiral_wasm.run / Error error / { retry 
> = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }" 
> }
> │ 
> │ 
> │ 
> 
> ── 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
> 
> ── [ 28.92s - return value ] ───────────────────────────────────────────────────
> │  
> │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; 
> total_gas_burnt_usd = +0.000863; total_gas_burnt = 1291850637872 }
> │ 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 = 983768778532; tokens_burnt = 98376877853200000000 }
> │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry =
> 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" }
> │ 
> │ 
> │  
> │ 00:00:04 i #8 near_workspaces.print_usd / { retry = 2; 
> total_gas_burnt_usd = +0.000863; total_gas_burnt = 1291850637872 }
> │ 00:00:04 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:04 i #10 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000657; tokens_burnt_usd = +0.000657; 
> gas_burnt = 983768778532; tokens_burnt = 98376877853200000000 }
> │ 00:00:04 w #11 spiral_wasm.run / Error error / { retry 
> = 2; error = "{ receipt_outcomes_len = 1; retry = 2; receipt_failures = [] }" }
> │ 
> │ 
> │  
> │ 00:00:06 i #14 near_workspaces.print_usd / { retry = 3;
> total_gas_burnt_usd = +0.000863; total_gas_burnt = 12...rror = "{ 
> receipt_outcomes_len = 1; retry = 8; receipt_failures = [] }" }
> │ 
> │ 
> │  
> │ 00:00:18 i #50 near_workspaces.print_usd / { retry = 9;
> total_gas_burnt_usd = +0.000863; total_gas_burnt = 1291850637872 }
> │ 00:00:18 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:18 i #52 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000657; tokens_burnt_usd = +0.000657; 
> gas_burnt = 983768778532; tokens_burnt = 98376877853200000000 }
> │ 00:00:18 w #53 spiral_wasm.run / Error error / { retry 
> = 9; error = "{ receipt_outcomes_len = 1; retry = 9; receipt_failures = [] }" }
> │ 
> │ 
> │  
> │ 00:00:20 i #56 near_workspaces.print_usd / { retry = 
> 10; total_gas_burnt_usd = +0.001012; total_gas_burnt = 1515033200372 }
> │ 00:00:20 i #57 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:20 i #58 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000657; tokens_burnt_usd = +0.000657; 
> gas_burnt = 983768778532; tokens_burnt = 98376877853200000000 }
> │ 00:00:20 i #59 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; 
> gas_burnt = 223182562500; tokens_burnt = 0 }
> │ 
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -c
> 
> "a-"
> |> sm'.to_std_string
> |> is_valid_alias
> |> _assert_eq false
> 
> ── [ 20.80s - return value ] ───────────────────────────────────────────────────
> │  
> │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; 
> total_gas_burnt_usd = +0.000864; total_gas_burnt = 1293900876407 }
> │ 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 = 985819017067; tokens_burnt = 98581901706700000000 }
> │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry =
> 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" }
> │ 
> │ 
> │  
> │ 00:00:04 i #8 near_workspaces.print_usd / { retry = 2; 
> total_gas_burnt_usd = +0.000864; total_gas_burnt = 1293900876407 }
> │ 00:00:04 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:04 i #10 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000659; tokens_burnt_usd = +0.000659; 
> gas_burnt = 985819017067; tokens_burnt = 98581901706700000000 }
> │ 00:00:04 w #11 spiral_wasm.run / Error error / { retry 
> = 2; error = "{ receipt_outcomes_len = 1; retry = 2; receipt_failures = [] }" }
> │ 
> │ 
> │  
> │ 00:00:06 i #14 near_workspaces.print_usd / { retry = 3;
> total_gas_burnt_usd = +0.000864; total_gas_burnt = 12...error = "{ 
> receipt_outcomes_len = 1; retry = 4; receipt_failures = [] }" }
> │ 
> │ 
> │  
> │ 00:00:10 i #26 near_workspaces.print_usd / { retry = 5;
> total_gas_burnt_usd = +0.000864; total_gas_burnt = 1293900876407 }
> │ 00:00:10 i #27 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:10 i #28 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000659; tokens_burnt_usd = +0.000659; 
> gas_burnt = 985819017067; tokens_burnt = 98581901706700000000 }
> │ 00:00:10 w #29 spiral_wasm.run / Error error / { retry 
> = 5; error = "{ receipt_outcomes_len = 1; retry = 5; receipt_failures = [] }" }
> │ 
> │ 
> │  
> │ 00:00:12 i #32 near_workspaces.print_usd / { retry = 6;
> total_gas_burnt_usd = +0.001013; total_gas_burnt = 1517083438907 }
> │ 00:00:12 i #33 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:12 i #34 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000659; tokens_burnt_usd = +0.000659; 
> gas_burnt = 985819017067; tokens_burnt = 98581901706700000000 }
> │ 00:00:12 i #35 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; 
> gas_burnt = 223182562500; tokens_burnt = 0 }
> │ 
> 
> ── spiral ──────────────────────────────────────────────────────────────────────
> //// test
> ///! rust -c
> 
> "a-a"
> |> sm'.to_std_string
> |> is_valid_alias
> |> _assert_eq true
> 
> ── [ 10.62s - return value ] ───────────────────────────────────────────────────
> │  
> │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; 
> total_gas_burnt_usd = +0.001014; total_gas_burnt = 1518480432317 }
> │ 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 = 987216010477; tokens_burnt = 98721601047700000000 }
> │ 00:00:02 i #5 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 ────────────────────────────────────────────────────────────────────
> │ ### 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"
> 
> ── [ 12.22s - return value ] ───────────────────────────────────────────────────
> │  
> │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; 
> total_gas_burnt_usd = +0.001078; total_gas_burnt = 1613051130325 }
> │ 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 = 1081786708485; tokens_burnt = 108178670848500000000 }
> │ 00:00:02 i #5 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
> 
> ── [ 17.59s - return value ] ───────────────────────────────────────────────────
> │ 00:00:00 d #1 chat_contract.claim_alias / { alias = 
> "alias1"; block_timestamp = 1751562454486095597; signer_account_id = 
> "dev-20250703170733-31282462385281"; predecessor_account_id = 
> "dev-20250703170733-31282462385281" }
> │ 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.002685; total_gas_burnt = 4019024038204 }
> │ 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.002479; tokens_burnt_usd = +0.002479; 
> gas_burnt = 3710942178864; tokens_burnt = 371094217886400000000 }
> │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry =
> 1; error...igner_account_id = "dev-20250703170735-93746382385208"; 
> predecessor_account_id = "dev-20250703170735-93746382385208" }
> │ 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:05 i #8 near_workspaces.print_usd / { retry = 2; 
> total_gas_burnt_usd = +0.002834; total_gas_burnt = 4242206600704 }
> │ 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.002479; tokens_burnt_usd = +0.002479; 
> gas_burnt = 3710942178864; tokens_burnt = 371094217886400000000 }
> │ 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 }
> │ 
> 
> ── 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.16s - return value ] ───────────────────────────────────────────────────
> │  
> │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; 
> total_gas_burnt_usd = +0.001198; total_gas_burnt = 1793210376839 }
> │ 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.000992; tokens_burnt_usd = +0.000992; 
> gas_burnt = 1485128517499; tokens_burnt = 148512851749900000000 }
> │ 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: 
> BmS2Cnw7DVBESfUNyyLvd1Bam26LkWPts1GvWvambcQs,
> │         block_hash: 
> 5paFijNaJjHH8kKS8v33Gcj7R6EB73VcF3uphEtdEwdo,
> │         logs: [],
> │         receipt_ids: [
> │             Eb9QQuoEhc86Txuqmf22vqYojeW4QtfyFC3MKSByG2BB,
> │         ],
> │         gas_burnt: NearGas {
> │             inner: 1485128517499,
> │         },
> │         tokens_burnt: NearToken {
> │             inner: 148512851749900000000,
> │         },
> │         executor_id: AccountId(
> │             "dev-20250703170750-81992773788696",
> │         ),
> │         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" ]]
> 
> ── [ 17.94s - return value ] ───────────────────────────────────────────────────
> │ 00:00:00 d #1 chat_contract.claim_alias / { alias = 
> "alias1"; block_timestamp = 1751562486501585491; signer_account_id = 
> "dev-20250703170805-40464889166497"; predecessor_account_id = 
> "dev-20250703170805-40464889166497" }
> │ 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 = 1751562486501585491; signer_account_id = 
> "dev-20250703170805-40464889166497"; predecessor_account_id = 
> "dev-20250703170805-40464889166497" }
> │ 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 = 1751562486501585491; signer_account_id = 
> "dev-20250703170805-40464889166497"; predecessor_account_id = 
> "dev-20250703170805-40464889166497" }
> │ 00:00:00 d #6 chat_contract.claim_alias / { 
> account_alias = Some("alias1") }
> │ 00:00:00 v #7 chat_contract / { account_set' = 
> [AccountId("dev-20250703170805-40464889166497")]; 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, ...-77841210359330" }
> │ 00:00:00 d #6 chat_contract.claim_alias / { 
> account_alias = Some("alias1") }
> │ 00:00:00 v #7 chat_contract / { account_set' = 
> [AccountId("dev-20250703170807-77841210359330")]; 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:04 i #8 near_workspaces.print_usd / { retry = 2; 
> total_gas_burnt_usd = +0.005043; total_gas_burnt = 7549380428811 }
> │ 00:00:04 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:04 i #10 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.004688; tokens_burnt_usd = +0.004688; 
> gas_burnt = 7018116006971; tokens_burnt = 701811600697100000000 }
> │ 00:00:04 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
> 
> ── [ 23.78s - return value ] ───────────────────────────────────────────────────
> │ 00:00:00 d #1 chat_contract.get_account_info / { 
> account_id = AccountId(
> │     "dev-20250703170823-52533777113249",
> │ ); result = None }
> │ 00:00:00 d #3 chat_contract.get_account_info / { 
> account_id = AccountId(
> │     "dev-20250703170823-52533777113249",
> │ ); result = None }
> │ 00:00:00 d #5 chat_contract.claim_alias / { alias = 
> "alias1"; block_timestamp = 1751562504312878655; signer_account_id = 
> "dev-20250703170823-52533777113249"; predecessor_account_id = 
> "dev-20250703170823-52533777113249" }
> │ 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-20250703170823-52533777113249",
> │ ); result = Some(
> │     (
> │         "alias1",
> │         1751562504312878655,
> │         0,
> │     ),
> │ ) }
> │ 00:00:00 d #9 chat_contract.get_account_info / { 
> account_id = AccountId(
> │     "dev-20250703170823-52533777113249",
> │ ); result = Some(
> │     (
> │         "alias1",
> │         1751562504312878655,
> │         0,
> │     ),
> │ ) }
> │  
> │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; 
> total_gas_burnt_usd = +0.003834; total_gas_burnt = 5739044865590 }
> │ 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.003628; tokens_burnt_usd = +0.0...806",
> │ ); result = None }
> │ 00:00:00 d #5 chat_contract.claim_alias / { alias = 
> "alias1"; block_timestamp = 1751562512841186215; signer_account_id = 
> "dev-20250703170831-39065816747806"; predecessor_account_id = 
> "dev-20250703170831-39065816747806" }
> │ 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-20250703170831-39065816747806",
> │ ); result = Some(
> │     (
> │         "alias1",
> │         1751562512841186215,
> │         0,
> │     ),
> │ ) }
> │ 00:00:00 d #9 chat_contract.get_account_info / { 
> account_id = AccountId(
> │     "dev-20250703170831-39065816747806",
> │ ); result = Some(
> │     (
> │         "alias1",
> │         1751562512841186215,
> │         0,
> │     ),
> │ ) }
> │  
> │ 00:00:10 i #26 near_workspaces.print_usd / { retry = 5;
> total_gas_burnt_usd = +0.003983; total_gas_burnt = 5962227428090 }
> │ 00:00:10 i #27 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:10 i #28 near_workspaces.print_usd / outcome / { 
> is_success = true; gas_burnt_usd = +0.003628; tokens_burnt_usd = +0.003628; 
> gas_burnt = 5430963006250; tokens_burnt = 543096300625000000000 }
> │ 00:00:10 i #29 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 ────────────────────────────────────────────────────────────────────
> │ ### 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:04:48 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 55096 }
00:04:48 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:04:48 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.ipynb to html
00:04: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:04:48 v #7 !   validate(nb)
00:04: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:04:49 v #9 !   return _pygments_highlight(
00:04:49 v #10 ! [NbConvertApp] Writing 448972 bytes to /home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.html
00:04:49 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 928 }
00:04:49 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 928 }
00:04:49 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:04:50 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:04:50 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:04:50 d #16 spiral.run / dib / { exit_code = 0; result_length = 56083 }
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: 204383
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 275 ms).
00:00:09 v #11 > /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fs(4632,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! @damonmcminn
Stand with Ukraine! https://standwithukraine.com.ua/

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

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 9660ms

./target/Builder/chat_contract/chat_contract.fs(4632,15): (4632,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/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/common.fsx(2339,0): (2339,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(252,0): (252,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(2569,0): (2569,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(5637,0): (5637,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(2897,0): (2897,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(9581,0): (9581,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(21240,0): (21240,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(4838,6): (4838,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 darling_macro v0.20.10
  Downloaded data-encoding v2.6.0
  Downloaded data-encoding-macro v0.1.15
  Downloaded crypto-common v0.2.0-rc.1
  Downloaded cpufeatures v0.2.16
  Downloaded equivalent v1.0.1
  Downloaded digest v0.11.0-pre.9
  Downloaded tinyvec v1.8.0
  Downloaded unicode-ident v1.0.14
  Downloaded winnow v0.6.20
  Downloaded toml_datetime v0.6.8
  Downloaded proc-macro-crate v3.2.0
  Downloaded sha2 v0.11.0-pre.4
  Downloaded hybrid-array v0.2.3
  Downloaded toml_edit v0.22.22
  Downloaded indexmap v2.7.0
  Downloaded hashbrown v0.15.2
  Downloaded syn v2.0.90
  Downloaded syn v1.0.109
  Downloaded getrandom v0.2.15
  Downloaded serde_json v1.0.133
  Downloaded proc-macro2 v1.0.92
  Downloaded memchr v2.7.4
  Downloaded itoa v1.0.14
  Downloaded near-account-id v1.0.0
  Downloaded serde v1.0.216
  Downloaded rustversion v1.0.18
  Downloaded rand_core v0.6.4
  Downloaded quote v1.0.37
  Downloaded once_cell v1.20.2
  Downloaded near-sdk-macros v5.6.0
  Downloaded libc v0.2.168
  Downloaded near-sys v0.2.2
  Downloaded cfg-if v1.0.0
  Downloaded block-buffer v0.11.0-rc.3
  Downloaded ryu v1.0.18
  Downloaded data-encoding-macro-internal v0.1.13
  Downloaded darling_core v0.20.10
  Downloaded typenum v1.17.0
  Downloaded serde_derive v1.0.216
  Downloaded near-sdk v5.6.0
  Downloaded const-oid v0.10.0-rc.3
  Downloaded borsh v1.5.3
  Downloaded borsh-derive v1.5.3
  Downloaded darling v0.20.10
   Compiling proc-macro2 v1.0.92
   Compiling unicode-ident v1.0.14
   Compiling hashbrown v0.15.2
   Compiling equivalent v1.0.1
   Compiling winnow v0.6.20
   Compiling toml_datetime v0.6.8
   Compiling cfg_aliases v0.2.1
   Compiling serde v1.0.216
   Compiling typenum v1.17.0
   Compiling indexmap v2.7.0
   Compiling quote v1.0.37
   Compiling syn v2.0.90
   Compiling borsh v1.5.3
   Compiling serde_json v1.0.133
   Compiling once_cell v1.20.2
   Compiling ident_case v1.0.1
   Compiling rustversion v1.0.18
   Compiling toml_edit v0.22.22
   Compiling syn v1.0.109
   Compiling fnv v1.0.7
   Compiling hybrid-array v0.2.3
   Compiling memchr v2.7.4
   Compiling proc-macro-crate v3.2.0
   Compiling near-sdk-macros v5.6.0
   Compiling itoa v1.0.14
   Compiling data-encoding v2.6.0
   Compiling ryu v1.0.18
   Compiling heck v0.5.0
   Compiling darling_core v0.20.10
   Compiling wee_alloc v0.4.5
   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 strum v0.26.3
   Compiling cfg-if v0.1.10
   Compiling memory_units v0.4.0
   Compiling const-oid v0.10.0-rc.3
   Compiling digest v0.11.0-pre.9
   Compiling serde_derive v1.0.216
   Compiling borsh-derive v1.5.3
   Compiling darling_macro v0.20.10
   Compiling darling v0.20.10
   Compiling strum_macros v0.26.4
   Compiling data-encoding-macro v0.1.15
   Compiling base-x v0.2.11
   Compiling bs58 v0.5.1
   Compiling base64 v0.22.1
   Compiling near-sys v0.2.2
   Compiling cfg-if v1.0.0
   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-account-id v1.0.0
   Compiling near-gas v0.3.0
   Compiling near-token v0.3.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 20.24s
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/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.
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.
 Downloading crates ...
  Downloaded enumflags2 v0.7.10
  Downloaded native-tls v0.2.12
  Downloaded tokio-macros v2.4.0
  Downloaded tracing-indicatif v0.3.8
  Downloaded hyper v0.14.31
  Downloaded reqwest v0.12.9
  Downloaded rustls v0.23.20
  Downloaded derive_more v0.99.18
  Downloaded is-terminal v0.4.13
  Downloaded zerofrom v0.1.5
  Downloaded enumflags2_derive v0.7.10
  Downloaded zerofrom-derive v0.1.5
  Downloaded open v5.3.1
  Downloaded string_cache v0.8.7
  Downloaded litemap v0.7.4
  Downloaded xml-rs v0.8.24
  Downloaded tar v0.4.43
  Downloaded serde_derive v1.0.216
  Downloaded indexmap v2.7.0
  Downloaded hyper v1.5.1
  Downloaded tokio-util v0.7.13
  Downloaded serde_with v3.11.0
  Downloaded h2 v0.4.7
  Downloaded near-sdk v5.6.0
  Downloaded clap_builder v4.5.23
  Downloaded time v0.3.37
  Downloaded cc v1.2.4
  Downloaded openssl v0.10.68
  Downloaded webpki-roots v0.26.7
  Downloaded schemars v0.8.21
  Downloaded rustls-pki-types v1.10.1
  Downloaded openssl-sys v0.9.104
  Downloaded indicatif v0.17.9
  Downloaded rustix v0.37.27
  Downloaded borsh v1.5.3
  Downloaded rustix v0.38.42
  Downloaded pin-project v1.1.7
  Downloaded bytes v1.9.0
  Downloaded tokio-rustls v0.26.1
  Downloaded time-macros v0.2.19
  Downloaded textwrap v0.16.1
  Downloaded tempfile v3.14.0
  Downloaded semver v1.0.24
  Downloaded schemars_derive v0.8.21
  Downloaded pin-project-internal v1.1.7
  Downloaded near-sandbox-utils v0.12.0
  Downloaded event-listener v5.3.1
  Downloaded clap v4.5.23
  Downloaded anyhow v1.0.94
  Downloaded serde_repr v0.1.19
  Downloaded rustversion v1.0.18
  Downloaded proc-macro-crate v3.2.0
  Downloaded csv-core v0.1.11
  Downloaded ordered-float v4.5.0
  Downloaded hyper-rustls v0.27.3
  Downloaded phf_shared v0.10.0
  Downloaded tokio v1.42.0
  Downloaded dyn-clone v1.0.17
  Downloaded ipnet v2.10.1
  Downloaded httparse v1.9.5
  Downloaded futures-lite v2.5.0
  Downloaded crunchy v0.2.2
  Downloaded portable-atomic v1.10.0
  Downloaded http-body-util v0.1.2
  Downloaded http v1.2.0
  Downloaded flate2 v1.0.35
  Downloaded serde_with_macros v3.11.0
  Downloaded near-sdk-macros v5.6.0
  Downloaded borsh-derive v1.5.3
  Downloaded async-trait v0.1.83
  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 pkg-config v0.3.31
   Compiling futures-core v0.3.31
   Compiling lock_api v0.4.12
   Compiling parking_lot_core v0.9.10
   Compiling scopeguard v1.2.0
   Compiling log v0.4.22
   Compiling byteorder v1.5.0
   Compiling bytes v1.9.0
   Compiling parking_lot v0.12.3
   Compiling getrandom v0.2.15
   Compiling signal-hook-registry v1.4.2
   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 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 anyhow v1.0.94
   Compiling block-buffer v0.10.4
   Compiling num-traits v0.2.19
   Compiling cfg_aliases v0.2.1
   Compiling syn v1.0.109
   Compiling fnv v1.0.7
   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 thiserror v1.0.69
   Compiling proc-macro-crate v3.2.0
   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 semver v1.0.24
   Compiling percent-encoding v2.3.1
   Compiling zerofrom v0.1.5
   Compiling bitflags v1.3.2
   Compiling yoke v0.7.5
   Compiling num-integer v0.1.46
   Compiling memchr v2.7.4
   Compiling httparse v1.9.5
   Compiling zerovec v0.10.4
   Compiling hex v0.4.3
   Compiling ring v0.17.8
   Compiling tower-service v0.3.3
   Compiling cfg-if v1.0.0
   Compiling try-lock v0.2.5
   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 powerfmt v0.2.0
   Compiling utf8parse v0.2.2
   Compiling regex-syntax v0.6.29
   Compiling writeable v0.5.5
   Compiling litemap v0.7.4
   Compiling deranged v0.3.11
   Compiling icu_locid v1.5.0
   Compiling regex-automata v0.1.10
   Compiling openssl-src v300.4.1+3.4.0
   Compiling overload v0.1.1
   Compiling vcpkg v0.2.15
   Compiling num-conv v0.1.0
   Compiling time-core v0.1.2
   Compiling openssl-sys v0.9.104
   Compiling time v0.3.37
   Compiling matchers v0.1.0
   Compiling nu-ansi-term v0.46.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 zstd-safe v5.0.2+zstd.1.5.2
   Compiling regex-syntax v0.8.5
   Compiling atomic-waker v1.1.2
   Compiling base64 v0.21.7
   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 ident_case v1.0.1
   Compiling hashbrown v0.12.3
   Compiling httpdate v1.0.3
   Compiling tower-layer v0.3.3
   Compiling either v1.13.0
   Compiling strsim v0.11.1
   Compiling icu_properties_data v1.5.0
   Compiling convert_case v0.4.0
   Compiling crunchy v0.2.2
   Compiling base64 v0.22.1
   Compiling mime v0.3.17
   Compiling derive_more v0.99.18
   Compiling icu_properties v1.5.1
   Compiling darling_core v0.20.10
   Compiling itertools v0.12.1
   Compiling hyper v0.14.31
   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 write16 v1.0.0
   Compiling rustls v0.23.20
   Compiling schemars v0.8.21
   Compiling urlencoding v2.1.3
   Compiling heck v0.4.1
   Compiling bs58 v0.4.0
   Compiling rustls-pki-types v1.10.1
   Compiling utf8_iter v1.0.4
   Compiling utf16_iter v1.0.5
   Compiling icu_normalizer_data v1.5.0
   Compiling signature v2.2.0
   Compiling ed25519 v2.2.3
   Compiling icu_normalizer v1.5.0
   Compiling strum_macros v0.24.3
   Compiling opentelemetry v0.22.0
   Compiling arbitrary v1.4.1
   Compiling enum-map v2.7.3
   Compiling tower v0.4.13
   Compiling darling_macro v0.20.10
   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 openssl v0.10.68
   Compiling anstyle v1.0.10
   Compiling is_terminal_polyfill v1.70.1
   Compiling colorchoice v1.0.3
   Compiling foreign-types-shared v0.1.1
   Compiling anstyle-query v1.1.2
   Compiling glob v0.3.1
   Compiling parking v2.2.1
   Compiling matchit v0.7.3
   Compiling sync_wrapper v0.1.2
   Compiling schemars_derive v0.8.21
   Compiling opentelemetry_sdk v0.22.1
   Compiling anstream v0.6.18
   Compiling foreign-types v0.3.2
   Compiling inout v0.1.3
   Compiling async-stream v0.3.6
   Compiling prost v0.12.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 fastrand v2.3.0
   Compiling winnow v0.5.40
   Compiling protobuf v2.28.0
   Compiling json_comments v0.2.2
   Compiling rustix v0.38.42
   Compiling near-config-utils v0.23.0
   Compiling primitive-types v0.10.1
   Compiling toml_edit v0.19.15
   Compiling idna v1.0.3
   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 hmac v0.12.1
   Compiling blake2 v0.10.6
   Compiling proc-macro-error-attr v1.0.4
   Compiling clap_lex v0.7.4
   Compiling prometheus v0.13.4
   Compiling ryu v1.0.18
   Compiling near-stdx v0.23.0
   Compiling zstd-safe v7.2.1
   Compiling itoa v1.0.14
   Compiling linux-raw-sys v0.4.14
   Compiling arrayvec v0.7.6
   Compiling adler2 v2.0.0
   Compiling miniz_oxide v0.8.0
   Compiling clap_builder v4.5.23
   Compiling near-crypto v0.23.0
   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.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 event-listener v2.5.3
   Compiling unicode-width v0.1.14
   Compiling reed-solomon-erasure v4.0.2
   Compiling native-tls v0.2.12
   Compiling cpufeatures v0.2.16
   Compiling opentelemetry-semantic-conventions v0.14.0
   Compiling unsafe-libyaml v0.2.11
   Compiling io-lifetimes v1.0.11
   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 futures-lite v2.5.0
   Compiling dirs-sys-next v0.1.2
   Compiling memoffset v0.7.1
   Compiling polling v2.8.0
   Compiling siphasher v0.3.11
   Compiling waker-fn v1.2.0
   Compiling spin v0.9.8
   Compiling rustix v0.37.27
   Compiling dyn-clone v1.0.17
   Compiling untrusted v0.9.0
   Compiling openssl-probe v0.1.5
   Compiling keccak v0.1.5
   Compiling async-task v4.7.1
   Compiling fastrand v1.9.0
   Compiling futures-lite v1.13.0
   Compiling sha3 v0.10.8
   Compiling itertools v0.10.5
   Compiling chrono v0.4.39
   Compiling dirs-next v2.0.0
   Compiling enumflags2 v0.7.10
   Compiling near-rpc-error-macro v0.23.0
   Compiling hyper v1.5.1
   Compiling near-o11y v0.23.0
   Compiling near-performance-metrics v0.23.0
   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-fs v1.6.0
   Compiling async-io v1.13.0
   Compiling proc-macro2 v1.0.92
   Compiling easy-ext v0.2.9
   Compiling unicode-ident v1.0.14
   Compiling base64ct v1.6.0
   Compiling linux-raw-sys v0.3.8
   Compiling signal-hook v0.3.17
   Compiling near-primitives v0.23.0
   Compiling password-hash v0.4.2
   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 eyre v0.6.12
   Compiling zeroize v1.8.1
   Compiling adler v1.0.2
   Compiling portable-atomic v1.10.0
   Compiling gimli v0.28.1
   Compiling bitcoin-internals v0.2.0
   Compiling addr2line v0.21.0
   Compiling near-chain-configs v0.23.0
   Compiling miniz_oxide v0.7.4
   Compiling vte v0.11.1
   Compiling num-rational v0.4.2
   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 quote v1.0.37
   Compiling xattr v1.3.1
   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 ordered-stream v0.2.0
   Compiling sync_wrapper v1.0.2
   Compiling xdg-home v1.3.0
   Compiling object v0.32.2
   Compiling encoding_rs v0.8.35
   Compiling ipnet v2.10.1
   Compiling rustc-demangle v0.1.24
   Compiling indenter v0.3.3
   Compiling constant_time_eq v0.1.5
   Compiling tinyvec_macros v0.1.1
   Compiling owo-colors v3.5.0
   Compiling radium v0.7.0
   Compiling option-ext v0.2.0
   Compiling uuid v0.8.2
   Compiling ureq v2.12.1
   Compiling dirs-sys v0.4.1
   Compiling color-spantrace v0.2.1
   Compiling zip v0.6.6
   Compiling tinyvec v1.8.0
   Compiling zbus v3.15.2
   Compiling signal-hook-mio v0.2.4
   Compiling num v0.4.3
   Compiling tar v0.4.43
   Compiling vt100 v0.15.2
   Compiling near-jsonrpc-primitives v0.23.0
   Compiling near-abi v0.4.3
   Compiling uriparse v0.6.4
   Compiling phf_shared v0.10.0
   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 fs2 v0.4.3
   Compiling is-docker v0.2.0
   Compiling csv-core v0.1.11
   Compiling new_debug_unreachable v1.0.6
   Compiling hex v0.3.2
   Compiling near-sandbox-utils v0.8.0
   Compiling unicode-segmentation v1.12.0
   Compiling same-file v1.0.6
   Compiling tap v1.0.1
   Compiling minimal-lexical v0.2.1
   Compiling camino v1.1.9
   Compiling fallible-iterator v0.2.0
   Compiling hex-conservative v0.1.2
   Compiling rust_decimal v1.36.0
   Compiling is_executable v0.1.2
   Compiling unicode-width v0.2.0
   Compiling opaque-debug v0.3.1
   Compiling pin-project-lite v0.2.15
   Compiling iana-time-zone v0.1.61
   Compiling number_prefix v0.4.0
   Compiling precomputed-hash v0.1.1
   Compiling string_cache v0.8.7
   Compiling indicatif v0.17.9
   Compiling sha2 v0.9.9
   Compiling binary-install v0.2.0
   Compiling bitcoin_hashes v0.13.0
   Compiling nom v7.1.3
   Compiling wyz v0.5.1
   Compiling newline-converter v0.3.0
   Compiling walkdir v2.5.0
   Compiling csv v1.3.1
   Compiling is-wsl v0.4.0
   Compiling scroll v0.11.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 unicode-normalization v0.1.22
   Compiling color-eyre v0.6.3
   Compiling dirs v5.0.1
   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 xml-rs v0.8.24
   Compiling funty v2.0.0
   Compiling smawk v0.3.2
   Compiling shell-escape v0.1.5
   Compiling unicode-linebreak v0.1.5
   Compiling scroll v0.10.2
   Compiling plain v0.2.3
   Compiling prettyplease v0.1.25
   Compiling indent_write v2.2.0
   Compiling bs58 v0.5.1
   Compiling home v0.5.9
   Compiling encode_unicode v1.0.0
   Compiling joinery v2.1.0
   Compiling names v0.14.0
   Compiling pathdiff v0.2.3
   Compiling open v5.3.1
   Compiling nom-supreme v0.6.0
   Compiling prettytable v0.10.0
   Compiling pdb v0.7.0
   Compiling goblin v0.5.4
   Compiling textwrap v0.16.1
   Compiling elementtree v0.7.0
   Compiling bitvec v1.0.1
   Compiling symbolic-common v8.8.0
   Compiling keyring v2.3.3
   Compiling inquire v0.7.5
   Compiling shellexpand v3.1.0
   Compiling bip39 v2.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 humantime v2.1.0
   Compiling near-sandbox-utils v0.9.0
   Compiling near-sdk-macros v5.6.0
   Compiling wasmparser v0.83.0
   Compiling shell-words v1.1.0
   Compiling lazycell v1.3.0
   Compiling dmsort v1.0.2
   Compiling easy-ext v1.0.2
   Compiling env_logger v0.11.5
   Compiling cargo_metadata v0.18.1
   Compiling symbolic-debuginfo v8.8.0
   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 convert_case v0.5.0
   Compiling strum v0.26.3
   Compiling near-sandbox-utils v0.12.0
   Compiling dunce v1.0.5
   Compiling near-abi-client v0.1.1
   Compiling json-patch v2.0.0
   Compiling tokio-retry v0.3.0
   Compiling near-token v0.3.0
   Compiling near-gas 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: 1658519404782,
    },
    transaction: ExecutionOutcome {
        transaction_hash: BamyxitoirisaCNzedZJedkdYjbcrRMiCSmkAmuZVPYt,
        block_hash: 4zoZMNy6FZiMypmBks7iCF6f3GK38XkQPyVMnWXJrZRv,
        logs: [],
        receipt_ids: [
            3Xbe97NHxvxQ9gdUBE1hQBsoPUQYKrXaJNP1qhofdHfX,
        ],
        gas_burnt: NearGas {
            inner: 308066207802,
        },
        tokens_burnt: NearToken {
            inner: 30806620780200000000,
        },
        executor_id: AccountId(
            "dev-20250703171356-98619842368822",
        ),
        status: SuccessReceiptId(3Xbe97NHxvxQ9gdUBE1hQBsoPUQYKrXaJNP1qhofdHfX),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: 3Xbe97NHxvxQ9gdUBE1hQBsoPUQYKrXaJNP1qhofdHfX,
            block_hash: 4zoZMNy6FZiMypmBks7iCF6f3GK38XkQPyVMnWXJrZRv,
            logs: [],
            receipt_ids: [
                DBPuNHBaUeHd9cdADF2tbyphrjqH5WJCH9ZUFkCrT6bf,
            ],
            gas_burnt: NearGas {
                inner: 1350453196980,
            },
            tokens_burnt: NearToken {
                inner: 135045319698000000000,
            },
            executor_id: AccountId(
                "dev-20250703171356-98619842368822",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.0011078909623943758
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205788226811736
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00090210273558264
  outcome_tokens_burnt_usd: 0.0


claim_alias(contract, ''): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 2009587525147,
    },
    transaction: ExecutionOutcome {
        transaction_hash: GUDPPBnvTDdsygB6ijHffwm99pMS8a4EsdX5oyMaVoKf,
        block_hash: C3mmwgXDXj7kznN4mAmZECRXUxQGK5KkUB53wF2KvfkK,
        logs: [],
        receipt_ids: [
            5ok9wGJGMNWfmUWBdW59SAeMu5fJyf5Jraj8dPYuyUHf,
        ],
        gas_burnt: NearGas {
            inner: 308110926482,
        },
        tokens_burnt: NearToken {
            inner: 30811092648200000000,
        },
        executor_id: AccountId(
            "dev-20250703171356-98619842368822",
        ),
        status: SuccessReceiptId(5ok9wGJGMNWfmUWBdW59SAeMu5fJyf5Jraj8dPYuyUHf),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: 5ok9wGJGMNWfmUWBdW59SAeMu5fJyf5Jraj8dPYuyUHf,
            block_hash: C3mmwgXDXj7kznN4mAmZECRXUxQGK5KkUB53wF2KvfkK,
            logs: [],
            receipt_ids: [
                GijbwXHCadvG6FTCsxqYxvbfcNajKxxqk5Ty4rxcSXiA,
            ],
            gas_burnt: NearGas {
                inner: 1701476598665,
            },
            tokens_burnt: NearToken {
                inner: 170147659866500000000,
            },
            executor_id: AccountId(
                "dev-20250703171356-98619842368822",
            ),
            status: Failure(ActionError(ActionError { index: Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked: chat_contract.claim_alias / invalid alias")) })),
        },
    ],
    status: Failure(ActionError(ActionError { index: Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked: chat_contract.claim_alias / invalid alias")) })),
}
total_gas_burnt_usd: 0.001342404466798196
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205818098889976
  outcome_tokens_burnt_usd: 0.0
outcome (success: false):
  outcome_gas_burnt_usd: 0.00113658636790822
  outcome_tokens_burnt_usd: 0.0


dev_create_account(account1): Account {
    id: AccountId(
        "dev-20250703171358-54971682898579",
    ),
}


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: 3640741594783,
    },
    transaction: ExecutionOutcome {
        transaction_hash: 98zNFBjG3kETsG9yCvFkhS5xrfNXPWgy9JCK4fJcMXUL,
        block_hash: 3Epg6JvsqSa8kUUB8xDuzQ3VJuHmJXvZh7HjwpKc6RbH,
        logs: [],
        receipt_ids: [
            2YPp69EwRUZTAhzDBsuNyrRWKvbiZJTGvgU1ia6BFiAM,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20250703171358-54971682898579",
        ),
        status: SuccessReceiptId(2YPp69EwRUZTAhzDBsuNyrRWKvbiZJTGvgU1ia6BFiAM),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: 2YPp69EwRUZTAhzDBsuNyrRWKvbiZJTGvgU1ia6BFiAM,
            block_hash: 4vCXBBqWJe5Pz2h4niNd6jJNaDRaV9ifuh5UafMfQ1Fa,
            logs: [
                "17:13:59 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 1751562839648774477; signer_account_id = \"dev-20250703171358-54971682898579\"; predecessor_account_id = \"dev-20250703171358-54971682898579\" }\n17:13:59 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = None }",
            ],
            receipt_ids: [
                EFJyCVyYDkAZF6GmyfPyKeRQbh3v8JKxiRTi4e1j6dTj,
            ],
            gas_burnt: NearGas {
                inner: 3109434690197,
            },
            tokens_burnt: NearToken {
                inner: 310943469019700000000,
            },
            executor_id: AccountId(
                "dev-20250703171356-98619842368822",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: EFJyCVyYDkAZF6GmyfPyKeRQbh3v8JKxiRTi4e1j6dTj,
            block_hash: 6u31WUQqcUA9u2gkHkUikT6LpG3BWjSaauu2Xkf5wd3q,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20250703171358-54971682898579",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.002432015385315044
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.002077102373051596
  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: 3774407546725,
    },
    transaction: ExecutionOutcome {
        transaction_hash: 6kw8sfW376z6ciPB6YUq6hGh5Ge93MVCn81tBtjNaggW,
        block_hash: 42TjxDEGsNAtLstqrNeZbxXg5KAmXVfLqv8jox6JNABH,
        logs: [],
        receipt_ids: [
            AMY3ufAGwTx2z3Hcz6LfuZMmacbmSVuFbydYvyHVvvwC,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20250703171358-54971682898579",
        ),
        status: SuccessReceiptId(AMY3ufAGwTx2z3Hcz6LfuZMmacbmSVuFbydYvyHVvvwC),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: AMY3ufAGwTx2z3Hcz6LfuZMmacbmSVuFbydYvyHVvvwC,
            block_hash: GUkoVvLRRQWSJc8C3mLgnsEa7Yegf4CLcjU8D13MqkXg,
            logs: [
                "17:14:00 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 1751562840659857188; signer_account_id = \"dev-20250703171358-54971682898579\"; predecessor_account_id = \"dev-20250703171358-54971682898579\" }\n17:14:00 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = Some(\"alias1\") }",
            ],
            receipt_ids: [
                7PZnfSf7avuavS8K8Xi3Hr8evGwQVeCq6kxzYnhLQWJp,
            ],
            gas_burnt: NearGas {
                inner: 3243100642139,
            },
            tokens_burnt: NearToken {
                inner: 324310064213900000000,
            },
            executor_id: AccountId(
                "dev-20250703171356-98619842368822",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: 7PZnfSf7avuavS8K8Xi3Hr8evGwQVeCq6kxzYnhLQWJp,
            block_hash: GSdYMv7VpLUveG34TcAvbFPYJ9mpwZ7UGtGeSLnT7Cni,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20250703171358-54971682898579",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.0025213042412123
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.0021663912289488518
  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",
        1751562840659857188,
        0,
    ),
)


get_alias_map(account1, alias1): Some(
    {
        AccountId(
            "dev-20250703171358-54971682898579",
        ): (
            1751562840659857188,
            0,
        ),
    },
)


dev_create_account(account2): Account {
    id: AccountId(
        "dev-20250703171401-70709746006332",
    ),
}


claim_alias(alias2): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 3872949678283,
    },
    transaction: ExecutionOutcome {
        transaction_hash: 513XCzEuv3GQ6hh8c4z1KY7f745uLDWbDiBTGR6oRyKu,
        block_hash: Gqjb8f4QnXUCA1AVwHyRL5Uxy5AcefgRzBEPoMfrz3Sn,
        logs: [],
        receipt_ids: [
            G5adazTfUreYwUAc6EE8LgQsWzGY3P6hEbKSuHFCyioW,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20250703171401-70709746006332",
        ),
        status: SuccessReceiptId(G5adazTfUreYwUAc6EE8LgQsWzGY3P6hEbKSuHFCyioW),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: G5adazTfUreYwUAc6EE8LgQsWzGY3P6hEbKSuHFCyioW,
            block_hash: BFhYN6hrNqX3BpoSxsxj4rPAo1xXMpPCYLwAFbqMwd4z,
            logs: [
                "17:14:02 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias2\"; block_timestamp = 1751562842685283416; signer_account_id = \"dev-20250703171401-70709746006332\"; predecessor_account_id = \"dev-20250703171401-70709746006332\" }\n17:14:02 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = None }",
            ],
            receipt_ids: [
                8RXeL4gbLP9b7eDpFSHQ6RBYR8GwvNH5qrdSPaDY8uVr,
            ],
            gas_burnt: NearGas {
                inner: 3341642773697,
            },
            tokens_burnt: NearToken {
                inner: 334164277369700000000,
            },
            executor_id: AccountId(
                "dev-20250703171356-98619842368822",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: 8RXeL4gbLP9b7eDpFSHQ6RBYR8GwvNH5qrdSPaDY8uVr,
            block_hash: 2gTFzZAmPVpxaG6XsGL7dcv1t85xyps5ft66A5TKi3rZ,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20250703171401-70709746006332",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.002587130385093044
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.0022322173728295956
  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",
        1751562842685283416,
        0,
    ),
)


get_alias_map_borsh(alias2): Some(
    {
        AccountId(
            "dev-20250703171401-70709746006332",
        ): (
            1751562842685283416,
            0,
        ),
    },
)


claim_alias(account2, alias1): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 4064318222338,
    },
    transaction: ExecutionOutcome {
        transaction_hash: CvpT2hToE6WpQ9pLvBit6Mvz98tBcwFfQmaEetzgWt5V,
        block_hash: AkZnkwF9pR2DAYt79LNPnfGobsWdhnZibv8uFxdB7ycm,
        logs: [],
        receipt_ids: [
            ATjwVirQuNJLh3a3Ms8An1B92GtKq6bXKwZqXrTUvZo8,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20250703171401-70709746006332",
        ),
        status: SuccessReceiptId(ATjwVirQuNJLh3a3Ms8An1B92GtKq6bXKwZqXrTUvZo8),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: ATjwVirQuNJLh3a3Ms8An1B92GtKq6bXKwZqXrTUvZo8,
            block_hash: EkXckQzFmP9hc7C3xiRKJyawcvjbwfw5BREMmwYuBjJm,
            logs: [
                "17:14:03 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 1751562843695302691; signer_account_id = \"dev-20250703171401-70709746006332\"; predecessor_account_id = \"dev-20250703171401-70709746006332\" }\n17:14:03 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = Some(\"alias2\") }",
            ],
            receipt_ids: [
                FbRgcQnXPZ1DG3JiRV4EehFA7zj79WyUajPTA3Jtd6ao,
            ],
            gas_burnt: NearGas {
                inner: 3533011317752,
            },
            tokens_burnt: NearToken {
                inner: 353301131775200000000,
            },
            executor_id: AccountId(
                "dev-20250703171356-98619842368822",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: FbRgcQnXPZ1DG3JiRV4EehFA7zj79WyUajPTA3Jtd6ao,
            block_hash: 2iZdTuR3disYkPf7DSmTYrEz14M4hR3W3nk3wf8tiYjf,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20250703171401-70709746006332",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.0027149645725217837
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.002360051560258336
  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",
        1751562843695302691,
        1,
    ),
)


get_alias_map(account2, alias1): Some(
    {
        AccountId(
            "dev-20250703171401-70709746006332",
        ): (
            1751562843695302691,
            1,
        ),
        AccountId(
            "dev-20250703171358-54971682898579",
        ): (
            1751562840659857188,
            0,
        ),
    },
)


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


claim_alias(account1, alias2): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 4061688014530,
    },
    transaction: ExecutionOutcome {
        transaction_hash: HiAJ7ALm6RwkH8VaGFjP93YzBp9dyw38SdGh1WPDcjd1,
        block_hash: 4Xq91gcPDaWtGoDeRJXZJg6qUoy1WCiRPgK5kPAGfB42,
        logs: [],
        receipt_ids: [
            2H5FKBdCABXtkyVC3HiD3i5TGYfLYa167csn21Fk9x4R,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20250703171358-54971682898579",
        ),
        status: SuccessReceiptId(2H5FKBdCABXtkyVC3HiD3i5TGYfLYa167csn21Fk9x4R),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: 2H5FKBdCABXtkyVC3HiD3i5TGYfLYa167csn21Fk9x4R,
            block_hash: 3DVNFjEAidLQ3xfXKeF93GHE2udqjLQK4v9B2Nwgm6k1,
            logs: [
                "17:14:04 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias2\"; block_timestamp = 1751562844705722741; signer_account_id = \"dev-20250703171358-54971682898579\"; predecessor_account_id = \"dev-20250703171358-54971682898579\" }\n17:14:04 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = Some(\"alias1\") }",
            ],
            receipt_ids: [
                2AzFDnye2Mtxii1ZUz7ahCYK7oUjc2jS1z7t1BBsqr9E,
            ],
            gas_burnt: NearGas {
                inner: 3530381109944,
            },
            tokens_burnt: NearToken {
                inner: 353038110994400000000,
            },
            executor_id: AccountId(
                "dev-20250703171356-98619842368822",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: 2AzFDnye2Mtxii1ZUz7ahCYK7oUjc2jS1z7t1BBsqr9E,
            block_hash: 52QuurUZmq1AuMUxY2rfBf97ZbxfMnXfXnEUd6uKghnq,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20250703171358-54971682898579",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.0027132075937060397
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.002358294581442592
  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",
        1751562844705722741,
        0,
    ),
)


get_alias_map(account1, alias2): Some(
    {
        AccountId(
            "dev-20250703171358-54971682898579",
        ): (
            1751562844705722741,
            0,
        ),
    },
)


get_alias_map(account1, alias1): Some(
    {
        AccountId(
            "dev-20250703171401-70709746006332",
        ): (
            1751562843695302691,
            1,
        ),
    },
)


claim_alias(account1, alias1): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 4064388979354,
    },
    transaction: ExecutionOutcome {
        transaction_hash: Ewj1EMZUcd8RRiTzumUwaLzGzcX3nHSd56LhN8wPrMyt,
        block_hash: FgHhoNDQbbN5vxSUN1B9PRbaDAHi3BHvG71ke1wdUqkb,
        logs: [],
        receipt_ids: [
            EtunQY5bbzTn9qrX5WokgFgiP2uLVYTpWczxLgBB2dFJ,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20250703171358-54971682898579",
        ),
        status: SuccessReceiptId(EtunQY5bbzTn9qrX5WokgFgiP2uLVYTpWczxLgBB2dFJ),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: EtunQY5bbzTn9qrX5WokgFgiP2uLVYTpWczxLgBB2dFJ,
            block_hash: GtYG2Svar3UHyQkTJgyF5ntAiNuW75vB7drgb2zKewAu,
            logs: [
                "17:14:05 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 1751562845717361031; signer_account_id = \"dev-20250703171358-54971682898579\"; predecessor_account_id = \"dev-20250703171358-54971682898579\" }\n17:14:05 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = Some(\"alias2\") }",
            ],
            receipt_ids: [
                8GHYLzmX6Wrm84uq6Zan22AQ7rt7LCw6pfbvbpq9aYzg,
            ],
            gas_burnt: NearGas {
                inner: 3533082074768,
            },
            tokens_burnt: NearToken {
                inner: 353308207476800000000,
            },
            executor_id: AccountId(
                "dev-20250703171356-98619842368822",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: 8GHYLzmX6Wrm84uq6Zan22AQ7rt7LCw6pfbvbpq9aYzg,
            block_hash: 9muspnbvSwvcYkvB7TyMficmXcQQ2N2Vbd4pG1wxABw8,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20250703171358-54971682898579",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.0027150118382084716
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.002360098825945024
  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",
        1751562845717361031,
        1,
    ),
)


get_alias_map(account1, alias1): Some(
    {
        AccountId(
            "dev-20250703171358-54971682898579",
        ): (
            1751562845717361031,
            1,
        ),
        AccountId(
            "dev-20250703171401-70709746006332",
        ): (
            1751562843695302691,
            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
> 
> ── [ 34.53ms - 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
> 
> ── [ 10.74s - return value ] ───────────────────────────────────────────────────
> │ "
> │ .py output (Python):
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ...........................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> │ 
> │ "
> │ 
> 
> ── [ 10.74s - stdout ] ─────────────────────────────────────────────────────────
> │ .fsx output:
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\.............................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\.............................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\................<<<<<<<<<....................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\.............................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .<<<<<<<<<<<<<<<<<\.............................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<....................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### main_루프
> 
> ── 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_루프 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_루프 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_루프 (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.52s - stdout ] ──────────────────────────────────────────────────────────
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\.............................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\.............................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\................<<<<<<<<<....................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .;;;;;;;;;;;;;;;;;\.............................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> .<<<<<<<<<<<<<<<<<\.............................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<....................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> .;;;;;;;;;;;;;;;;;;\............................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> .;;;;;;;;;;;;;;;;;;\............................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> .;;;;;;;;;;;;;;;;;;;................;;;;;<<<<...................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> .;;;;;;;;;;;;;;;;;;;................<<<<<.......................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> .;;;;;;;;;;;;;;;;;;;............................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> .<<<<<<<<<<<<<<<<<<<............................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> ................................................................................
> │ 
> ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\..................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> .;;;;;;;;;;;;;;;;;;;............................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> .;;;;;;;;;;;;;;;;;;;............................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> .;;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;...................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> .;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;...................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> .;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;...................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> .;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;...................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> .;;;;;;;;;;;;;;;;;;;.............../<<<<<<<<<...................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> ..;;;;;;;;;;;;;;;;;;...............<<<<<<<<<....................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> ..;;;;;;;;;;<<<<<<<<............................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> ..<<<<<<<<<<....................................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> ................................................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> ................................................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> ................................................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<\.................
> ................................................................................
> │ 
> .....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<...............................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;...............................................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> ..............;;;;;;............................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> .>;;;;;;;;;;;;;;;;;;............................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> ./;;;;;;;;;;;;;;;;;;............................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> ./;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;...................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> ./;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;...................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> ./;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;...................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> ./;;;;;;;;;;;;;;;;;;\............../;;;;;;;;;...................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> ./;;;;;;;;;;;;;;;;;;;............../<<<<<<<<<...................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> ./;;;;;;;;;;;;;;;;;;;............../<<<<<<<<....................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> ./<<<<<<<<<<<<<<<<<<<...........................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> ./<<<<<<<<<<<<<<<...............................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> ................................................................................
> │ 
> ......................;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<................
> ................................................................................
> │ 
> ......................<<<<<<<<<<................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> ..;;;;;;;;;;;;;;;;;;............................................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> .>;;;;;;;;;;;;;;;;;;............................................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> ./;;;;;;;;;;;;;;;;;;............................................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> >/;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;...................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> ./;;;;;;;;;;;;;;;;;;\............../;;;;;;;;;...................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> ./;;;;;;;;;;;;;;;;;;;............../;;;;;;;;;...................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> ./;;;;;;;;;;;;;;;;;;;............../;;;;;;;;;\..................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................
> .//;;;;;;;;;;;;;;;;;;............../<<<<<<<<<\..................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> .//;;;;;;;;;;;;;;;;;;............../<<<<<<<<....................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> .//<<<<<<<<<<<<<<<<<<...........................................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> ./<<<<<<<<<<<<<<<<..............................................................
> │ 
> ........................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...............
> ................................................................................
> │ 
> ........................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............
> ................................................................................
> │ 
> ........................;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<...............
> ................................................................................
> │ 
> ........................<<<<<<<<<<<<<<<<<<<<<<..................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................
> ................................................................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> ................................................................................
> │ 
> ......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> ................................................................................
> │ 
> ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> ..;;;;;;;;;;;;;;;;;;............................................................
> │ 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> .>;;;;;;;;;;;;;;;;;;............................................................
> │ 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> >/;;;;;;;;;;;;;;;;;;............................................................
> │ 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> //;;;;;;;;;;;;;;;;;;\..............>;;;;;;;;;...................................
> │ 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> ///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;...................................
> │ 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................
> ///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;\..................................
> │ 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> ///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;;..................................
> │ 
> ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> .//;;;;;;;;;;;;;;;;;;;.............//<<<<<<<<<..................................
> │ 
> .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...............
> .//;;;;;;;;;;;;;;;;<<<............./<<<<<<<<....................................
> │ 
> .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............
> .///<<<<<<<<<<<<<<<<<...........................................................
> │ 
> .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..............
> ./<<<<<<<<<<<<<<<<..............................................................
> │ 
> .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............
> ................................................................................
> │ 
> .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<..............
> ................................................................................
> │ 
> .......................//;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<...................
> ................................................................................
> │ 
> .......................//<<<<<<<<<<<<<<<<<<<<<<<<<..............................
> ................................................................................
> │ 
> ........................<<<<<<<.................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
> ................................................................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
> ................................................................................
> │ 
> ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> ................................................................................
> │ 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> ................................................................................
> │ 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> .....................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> ..;;;;;;;;;;;;;;;;;.............................................................
> │ 
> .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> .>;;;;;;;;;;;;;;;;;;............................................................
> │ 
> .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> >//;;;;;;;;;;;;;;;;;............................................................
> │ 
> .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> ///;;;;;;;;;;;;;;;;;\..............>;;;;;;;;;...................................
> │ 
> .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................
> ///;;;;;;;;;;;;;;;;;;.............>/;;;;;;;;;...................................
> │ 
> ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> ///;;;;;;;;;;;;;;;;;;.............//;;;;;;;;;\..................................
> │ 
> ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...............
> ////;;;;;;;;;;;;;;;;;;.............//;;;;;;;;;..................................
> │ 
> ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............
> ////;;;;;;;;;;;;;;;;;;.............//<<<<<<<<<..................................
> │ 
> ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..............
> ////;;;;;;;<<<<<<<<<<<............./<<<<<<<<....................................
> │ 
> ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............
> .///<<<<<<<<<<<<<<<<<...........................................................
> │ 
> ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............
> .//<<<<<<<<<<<<<<<..............................................................
> │ 
> .......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<.............
> .<<<............................................................................
> │ 
> .......................////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<...............
> ................................................................................
> │ 
> .......................////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<......................
> ................................................................................
> │ 
> .......................////<<<<<<<<<<<<<<<<<<<<<<<<<............................
> ................................................................................
> │ 
> .......................//<<<<<<<<<<<<<..........................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................
> ................................................................................
> │ 
> ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
> ................................................................................
> │ 
> ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................
> ................................................................................
> │ 
> ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> ................................................................................
> │ 
> ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> .....................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> ..;;;;;;;;;;;;;;;;;.............................................................
> │ 
> ....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> .>/;;;;;;;;;;;;;;;;;............................................................
> │ 
> ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> >//;;;;;;;;;;;;;;;;;............................................................
> │ 
> ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...............>
> ///;;;;;;;;;;;;;;;;;;..............>;;;;;;;;;...................................
> │ 
> ...................../////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............../
> ////;;;;;;;;;;;;;;;;;.............//;;;;;;;;;...................................
> │ 
> .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............../
> ////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;..................................
> │ 
> .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............
> ////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;..................................
> │ 
> .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............
> ////;;;;;;;;;;;;;;;;;;;............//;<<<<<<<<..................................
> │ 
> .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............
> /////<<<<<<<<<<<<<<<<<<............/<<<<<<<<....................................
> │ 
> ......................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............
> .///<<<<<<<<<<<<<<<<............................................................
> │ 
> ......................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<............
> .//<<<<<<<<<<<<<<<..............................................................
> │ 
> ......................//////;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<.............
> .<<<<<<.........................................................................
> │ 
> ......................///////;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<..................
> ................................................................................
> │ 
> .......................//////<<<<<<<<<<<<<<<<<<<<<<<<<<<<.......................
> ................................................................................
> │ 
> .......................////<<<<<<<<<<<<<<<<<<<<<<<<<<...........................
> ................................................................................
> │ 
> .......................///<<<<<<<<<<<<<<<<......................................
> ................................................................................
> │ 
> ......................./<<<<<...................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ........................;;;;;;..................................................
> ................................................................................
> │ 
> .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................
> ................................................................................
> │ 
> ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................
> ................................................................................
> │ 
> ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
> ................................................................................
> │ 
> ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................
> ................................................................................
> │ 
> .....................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> ................................................................................
> │ 
> ...................../////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> ....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> ..;;;;;;;;;;;;;;;;;.............................................................
> │ 
> ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> .>/;;;;;;;;;;;;;;;;\............................................................
> │ 
> ...................>///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> >//;;;;;;;;;;;;;;;;;............................................................
> │ 
> ...................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............../
> ///;;;;;;;;;;;;;;;;;;..............>;;;;;;;;;...................................
> │ 
> ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............../
> ////;;;;;;;;;;;;;;;;;\............>/;;;;;;;;;\..................................
> │ 
> ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............./
> ////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;..................................
> │ 
> ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............./
> /////;;;;;;;;;;;;;;;;;;...........///;;;;;;;<<\.................................
> │ 
> .....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............
> /////;;;;;;;;;;;;;;<<<<............///<<<<<<<<..................................
> │ 
> .....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............
> //////<<<<<<<<<<<<<<<<<............//<<<<<<<....................................
> │ 
> ...................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............
> /////<<<<<<<<<<<<<<<............................................................
> │ 
> ...................../////////;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<............
> .//<<<<<<<<<<<<<<<..............................................................
> │ 
> ......................////////;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<................
> ./<<<<<<<<......................................................................
> │ 
> ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<...................
> ................................................................................
> │ 
> ......................////////<<<<<<<<<<<<<<<<<<<<<<<<<<<.......................
> ................................................................................
> │ 
> ......................./////<<<<<<<<<<<<<<<<<<<<<<<<<...........................
> ................................................................................
> │ 
> .......................///<<<<<<<<<<<<<<<<<<<<..................................
> ................................................................................
> │ 
> .......................//<<<<<<<<<..............................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ........................;;;;;;;;;...............................................
> ................................................................................
> │ 
> .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................
> ................................................................................
> │ 
> ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................
> ................................................................................
> │ 
> ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................
> ................................................................................
> │ 
> ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
> ................................................................................
> │ 
> .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> ................................................................................
> │ 
> ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ................................................................................
> │ 
> ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> ..;;;;;;;;;;;;;;;;;.............................................................
> │ 
> ...................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> .>/;;;;;;;;;;;;;;;;\............................................................
> │ 
> .................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................
> >///;;;;;;;;;;;;;;;;............................................................
> │ 
> ..................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............>
> ////;;;;;;;;;;;;;;;;;..............>;;;;;;;;;...................................
> │ 
> ...................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............>/
> ////;;;;;;;;;;;;;;;;;;............>//;;;;;;;;\..................................
> │ 
> ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............//
> /////;;;;;;;;;;;;;;;;;\...........///;;;;;;;;;..................................
> │ 
> ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............/
> //////;;;;;;;;;;;;;;;;;...........////;;;<<<<<<.................................
> │ 
> ....................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........../
> ///////;;;;;;;<<<<<<<<<<...........///<<<<<<<<..................................
> │ 
> ....................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...........
> ///////<<<<<<<<<<<<<<<.............//<<<<<<<....................................
> │ 
> .....................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<...........
> /////<<<<<<<<<<<<<<<............................................................
> │ 
> .....................///////////;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<..............
> .///<<<<<<<<<<<<<<..............................................................
> │ 
> .....................////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<.................
> .//<<<<<<<<<....................................................................
> │ 
> ......................//////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<....................
> ................................................................................
> │ 
> ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<<.......................
> ................................................................................
> │ 
> ......................///////<<<<<<<<<<<<<<<<<<<<<<<<<..........................
> ................................................................................
> │ 
> ......................./////<<<<<<<<<<<<<<<<<<<<................................
> ................................................................................
> │ 
> .......................///<<<<<<<<<<<<..........................................
> ................................................................................
> │ 
> ........................<<<<<...................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ........................;;;;;;;;;;..............................................
> ................................................................................
> │ 
> .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........................
> ................................................................................
> │ 
> .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................
> ................................................................................
> │ 
> ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................
> ................................................................................
> │ 
> .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................
> ................................................................................
> │ 
> .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
> ................................................................................
> │ 
> ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
> ................................................................................
> │ 
> ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> ../;;;;;;;;;;;;;;;..............................................................
> │ 
> ...................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
> .>/;;;;;;;;;;;;;;;;.............................................................
> │ 
> ..................>//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> >///;;;;;;;;;;;;;;;;............................................................
> │ 
> ..................////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............>
> ////;;;;;;;;;;;;;;;;;..............>;;;;;;;;;...................................
> │ 
> ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............>/
> /////;;;;;;;;;;;;;;;;;............>//;;;;;;;;\..................................
> │ 
> ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...........//
> //////;;;;;;;;;;;;;;;;;..........////;;;;;;;;;\.................................
> │ 
> .................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........//
> //////;;;;;;;;;;;;;;;;;;..........////;<<<<<<<<.................................
> │ 
> .................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........../
> ///////;;<<<<<<<<<<<<<<<...........///<<<<<<<<..................................
> │ 
> ..................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<...........
> ////////<<<<<<<<<<<<<<.............//<<<<<<<....................................
> │ 
> ....................//////////////;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<.............
> //////<<<<<<<<<<<<<<............................................................
> │ 
> ....................//////////////;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<...............
> .////<<<<<<<<<<<<<..............................................................
> │ 
> ...................../////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<..................
> ..<<<<<<<<<<<...................................................................
> │ 
> .....................////////////<<<<<<<<<<<<<<<<<<<<<<<<<<.....................
> ................................................................................
> │ 
> ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<........................
> ................................................................................
> │ 
> ......................///////<<<<<<<<<<<<<<<<<<<<<<<<<..........................
> ................................................................................
> │ 
> ......................./////<<<<<<<<<<<<<<<<<<<<<<..............................
> ................................................................................
> │ 
> .......................////<<<<<<<<<<<<<<.......................................
> ................................................................................
> │ 
> ......................../<<<<<<<<...............................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ........................;;;;;;;;;...............................................
> ................................................................................
> │ 
> .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........................
> ................................................................................
> │ 
> ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........................
> ................................................................................
> │ 
> ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................
> ................................................................................
> │ 
> .....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................
> ................................................................................
> │ 
> ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
> ................................................................................
> │ 
> ....................>///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> ................................................................................
> │ 
> ...................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> ..;;;;;;;;;;;;;;;;..............................................................
> │ 
> ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> .>//;;;;;;;;;;;;;;;.............................................................
> │ 
> ..................>////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> >///;;;;;;;;;;;;;;;;............................................................
> │ 
> ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............>
> /////;;;;;;;;;;;;;;;;..............>;;;;;;;;\...................................
> │ 
> .................>//////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...........>/
> //////;;;;;;;;;;;;;;;;............>//;;;;;;;;\..................................
> │ 
> .................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........///
> //////;;;;;;;;;;;;;;;;;..........>////;;;;;;;;;.................................
> │ 
> ..................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........//
> ///////;;;;;;;;;;;;<<<<<........../////<<<<<<<<.................................
> │ 
> ................../////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<........./
> ////////;<<<<<<<<<<<<<<...........////<<<<<<<<..................................
> │ 
> ...................////////////////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<.........../
> ////////<<<<<<<<<<<<<<.............//<<<<<<<....................................
> │ 
> .................../////////////////;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<..............
> //////<<<<<<<<<<<<<<............................................................
> │ 
> ....................////////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<.................
> .///<<<<<<<<<<<<<<..............................................................
> │ 
> .....................//////////////<<<<<<<<<<<<<<<<<<<<<<<<<<...................
> ..//<<<<<<<<<<..................................................................
> │ 
> ...................../////////////<<<<<<<<<<<<<<<<<<<<<<<<<.....................
> ..<.............................................................................
> │ 
> ......................//////////<<<<<<<<<<<<<<<<<<<<<<<<........................
> ................................................................................
> │ 
> ....................../////////<<<<<<<<<<<<<<<<<<<<<<<..........................
> ................................................................................
> │ 
> .......................//////<<<<<<<<<<<<<<<<<<<<<<.............................
> ................................................................................
> │ 
> ........................////<<<<<<<<<<<<<<<.....................................
> ................................................................................
> │ 
> ........................//<<<<<<<<<<............................................
> ................................................................................
> │ 
> .........................<<<....................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .......................>;;;;;;;;................................................
> ................................................................................
> │ 
> .......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;\...........................
> ................................................................................
> │ 
> ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........................
> ................................................................................
> │ 
> ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........................
> ................................................................................
> │ 
> .....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................
> ................................................................................
> │ 
> ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.....................
> ................................................................................
> │ 
> ..................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> ................................................................................
> │ 
> ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> ..;;;;;;;;;;;;;;;\..............................................................
> │ 
> ..................>/////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> .>/;;;;;;;;;;;;;;;;.............................................................
> │ 
> ..................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> >///;;;;;;;;;;;;;;;;............................................................
> │ 
> .................>////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............>
> /////;;;;;;;;;;;;;;;;..............>/;;;;;;;\...................................
> │ 
> ................>//////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..........>/
> //////;;;;;;;;;;;;;;;;\...........>///;;;;;;;\..................................
> │ 
> ................>///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........>//
> ///////;;;;;;;;;;;;;;;;;.........>////;;;;;;;;;.................................
> │ 
> .................///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<.......///
> ////////;;;;;;<<<<<<<<<<.........//////<<<<<<<<.................................
> │ 
> ................./////////////////////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<.........//
> /////////<<<<<<<<<<<<<<...........////<<<<<<<<..................................
> │ 
> ..................////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<<<<............/
> ////////<<<<<<<<<<<<<..............//<<<<<<<....................................
> │ 
> ...................////////////////////<<<<<<<<<<<<<<<<<<<<<<<<<<...............
> ///////<<<<<<<<<<<<<............................................................
> │ 
> ...................//////////////////<<<<<<<<<<<<<<<<<<<<<<<<<..................
> .////<<<<<<<<<<<<<..............................................................
> │ 
> ....................////////////////<<<<<<<<<<<<<<<<<<<<<<<<....................
> ..//<<<<<<<<<<<.................................................................
> │ 
> .....................//////////////<<<<<<<<<<<<<<<<<<<<<<<......................
> ...<<...........................................................................
> │ 
> ......................////////////<<<<<<<<<<<<<<<<<<<<<<........................
> ................................................................................
> │ 
> ......................//////////<<<<<<<<<<<<<<<<<<<<<<..........................
> ................................................................................
> │ 
> .......................///////<<<<<<<<<<<<<<<<<<<<<<............................
> ................................................................................
> │ 
> ......................../////<<<<<<<<<<<<<<<<...................................
> ................................................................................
> │ 
> ........................////<<<<<<<<<<..........................................
> ................................................................................
> │ 
> ........................./<<<<<<................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .......................;;;;;;;..................................................
> ................................................................................
> │ 
> ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;.............................
> ................................................................................
> │ 
> ......................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;...........................
> ................................................................................
> │ 
> .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........................
> ................................................................................
> │ 
> .....................///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................
> ................................................................................
> │ 
> ....................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................
> ................................................................................
> │ 
> ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
> ................................................................................
> │ 
> ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> ../;;;;;;;;;;;;;;...............................................................
> │ 
> ..................>/////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
> .>/;;;;;;;;;;;;;;;;.............................................................
> │ 
> ..................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............
> >///;;;;;;;;;;;;;;;;............................................................
> │ 
> .................>//////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............>
> ///////;;;;;;;;;;;;;;..............>/;;;;;;;....................................
> │ 
> ................>////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........>/
> ////////;;;;;;;;;;;;;;;...........>///;;;;;;;;..................................
> │ 
> ................/////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<.......>//
> /////////;;;;;;;;;;;;;;<.........>////;;;;;;;;<.................................
> │ 
> ...............////////////////////////;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<........///
> /////////;<<<<<<<<<<<<<<.........//////;<<<<<<<.................................
> │ 
> ................////////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<<...........//
> //////////<<<<<<<<<<<<<.........../////<<<<<<<..................................
> │ 
> .................////////////////////////<<<<<<<<<<<<<<<<<<<<<<<<<............./
> /////////<<<<<<<<<<<<..............//<<<<<<<....................................
> │ 
> ..................//////////////////////<<<<<<<<<<<<<<<<<<<<<<<<................
> ////////<<<<<<<<<<<<............................................................
> │ 
> ...................///////////////////<<<<<<<<<<<<<<<<<<<<<<<<..................
> ./////<<<<<<<<<<<<..............................................................
> │ 
> ..................../////////////////<<<<<<<<<<<<<<<<<<<<<<<....................
> ..///<<<<<<<<<<.................................................................
> │ 
> .....................///////////////<<<<<<<<<<<<<<<<<<<<<<......................
> .../<<<.........................................................................
> │ 
> .....................//////////////<<<<<<<<<<<<<<<<<<<<<........................
> ................................................................................
> │ 
> ......................///////////<<<<<<<<<<<<<<<<<<<<<..........................
> ................................................................................
> │ 
> ......................./////////<<<<<<<<<<<<<<<<<<<<............................
> ................................................................................
> │ 
> ........................///////<<<<<<<<<<<<<<<..................................
> ................................................................................
> │ 
> .........................////<<<<<<<<<<<........................................
> ................................................................................
> │ 
> ..........................//<<<<<<<.............................................
> ................................................................................
> │ 
> ...........................<<...................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .......................;;;;.....................................................
> ................................................................................
> │ 
> ......................>/;;;;;;;;;;;;;;;;;;;;;;;;................................
> ................................................................................
> │ 
> ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;.............................
> ................................................................................
> │ 
> .....................>////;/;;;;;;;;;;;;;;;;;;;;;;;;;...........................
> ................................................................................
> │ 
> ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;.........................
> ................................................................................
> │ 
> ....................>////////;/;;;;;;;;;;;;;;;;;;;;;;;;;;.......................
> ................................................................................
> │ 
> ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................
> ................................................................................
> │ 
> ...................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
> ..;;;;;;;;;;;;;;\...............................................................
> │ 
> ..................>////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................
> .>/;;;;;;;;;;;;;;;..............................................................
> │ 
> .................>///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..............
> >///;/;;;;;;;;;;;;;;............................................................
> │ 
> ................./////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...........>
> //////;;;;;;;;;;;;;;;;.............>/;;;;;;;....................................
> │ 
> ................>//////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........>/
> ///////;/;;;;;;;;;;;;;;...........>///;;;;;;;;..................................
> │ 
> ...............>////////////////////////;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<.......>//
> /////////;;;;;;;;;<<<<<<.........>////;;;;;;<<<.................................
> │ 
> ...............>//////////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<.........///
> //////////;<<<<<<<<<<<<<.........///////<<<<<<<.................................
> │ 
> ...............///////////////////////////<<<<<<<<<<<<<<<<<<<<<<<<...........///
> //////////<<<<<<<<<<<<............/////<<<<<<...................................
> │ 
> ................//////////////////////////<<<<<<<<<<<<<<<<<<<<<<.............../
> /////////<<<<<<<<<<<<..............///<<<<<<....................................
> │ 
> .................///////////////////////<<<<<<<<<<<<<<<<<<<<<<<.................
> ///////<<<<<<<<<<<<..................<..........................................
> │ 
> ..................//////////////////////<<<<<<<<<<<<<<<<<<<<<...................
> .//////<<<<<<<<<<<..............................................................
> │ 
> ...................//////////////////<<<<<<<<<<<<<<<<<<<<<<.....................
> ...//<<<<<<<<<<.................................................................
> │ 
> ....................////////////////<<<<<<<<<<<<<<<<<<<<<<......................
> ..../<<<........................................................................
> │ 
> .....................///////////////<<<<<<<<<<<<<<<<<<<<........................
> ................................................................................
> │ 
> ....................../////////////<<<<<<<<<<<<<<<<<<<..........................
> ................................................................................
> │ 
> .......................//////////<<<<<<<<<<<<<<<<<<<<...........................
> ................................................................................
> │ 
> ........................////////<<<<<<<<<<<<<<<.................................
> ................................................................................
> │ 
> ..........................////<<<<<<<<<<<<......................................
> ................................................................................
> │ 
> ..........................////<<<<<<<...........................................
> ................................................................................
> │ 
> ............................<<<<................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .......................;;.......................................................
> ................................................................................
> │ 
> ......................>;;;;;;;;;;;;;;;;;;;;.....................................
> ................................................................................
> │ 
> ......................///;;;;;;;;;;;;;;;;;;;;;;;;;..............................
> ................................................................................
> │ 
> .....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;............................
> ................................................................................
> │ 
> ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;\.........................
> ................................................................................
> │ 
> ....................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................
> ................................................................................
> │ 
> ...................>////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
> ................................................................................
> │ 
> ..................>///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
> .>/;;;;;;;;;;;;;................................................................
> │ 
> ..................///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;................
> >//;;;;;;;;;;;;;;;..............................................................
> │ 
> .................>////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............
> >////;;;;;;;;;;;;;;;............................................................
> │ 
> .................///////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........>
> ///////;;;;;;;;;;;;;;;.............>/;;;;;;;....................................
> │ 
> ................>/////////////////////////;;;;;;;;;;;;;;;;;;<<<<<<<<<.........>/
> ////////;;;;;;;;;;;;;;;;..........>//;;;;;;;;;..................................
> │ 
> ...............>/////////////////////////////;;;<<<<<<<<<<<<<<<<<<<<.........>//
> //////////;;;<<<<<<<<<<<.........>/////;;;<<<<<.................................
> │ 
> ...............//////////////////////////////<<<<<<<<<<<<<<<<<<<<<<.........////
> ////////////<<<<<<<<<<<..........///////<<<<<<<.................................
> │ 
> ..............>////////////////////////////<<<<<<<<<<<<<<<<<<<<<<............///
> ///////////<<<<<<<<<<<............/////<<<<<<...................................
> │ 
> ...............////////////////////////////<<<<<<<<<<<<<<<<<<<<...............//
> //////////<<<<<<<<<<<..............///<<<<<<....................................
> │ 
> ................/////////////////////////<<<<<<<<<<<<<<<<<<<<<..................
> ////////<<<<<<<<<<<..................<..........................................
> │ 
> .................///////////////////////<<<<<<<<<<<<<<<<<<<<<...................
> .//////<<<<<<<<<<<..............................................................
> │ 
> ...................////////////////////<<<<<<<<<<<<<<<<<<<<.....................
> ...///<<<<<<<<<<................................................................
> │ 
> ....................//////////////////<<<<<<<<<<<<<<<<<<<<......................
> ..../<<<<.......................................................................
> │ 
> .....................////////////////<<<<<<<<<<<<<<<<<<<........................
> ................................................................................
> │ 
> ......................//////////////<<<<<<<<<<<<<<<<<<..........................
> ................................................................................
> │ 
> ........................///////////<<<<<<<<<<<<<<<<<<...........................
> ................................................................................
> │ 
> .........................////////<<<<<<<<<<<<<<<................................
> ................................................................................
> │ 
> ..........................//////<<<<<<<<<<<.....................................
> ................................................................................
> │ 
> ...........................////<<<<<<<<.........................................
> ................................................................................
> │ 
> ............................//<<<<..............................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ....................../;;;;;;;;;;;;;;;;.........................................
> ................................................................................
> │ 
> .....................>///;;;;;;;;;;;;;;;;;;;;;;;................................
> ................................................................................
> │ 
> .....................//////;;;;;;;;;;;;;;;;;;;;;;;;.............................
> ................................................................................
> │ 
> ..................../////////;;;;;;;;;;;;;;;;;;;;;;;;...........................
> ................................................................................
> │ 
> ...................>///////////;/;;;;;;;;;;;;;;;;;;;;;;;........................
> ................................................................................
> │ 
> ...................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;.....................
> ................................................................................
> │ 
> ..................>/////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;..................
> .>;;;;;;;;;;;;;.................................................................
> │ 
> ..................////////////////////;/;;;;;;;;;;;;;;;;;;;;;;;;................
> >//;/;;;;;;;;;;;;...............................................................
> │ 
> .................>//////////////////////;/;;;;;;;;;;;;;;;;;;;;;;;;;\............
> //////;;;;;;;;;;;;;;............................................................
> │ 
> ................>//////////////////////////;;;;;;;;;;;;;;;;;;;<<<<<<<..........>
> ///////;;;;;;;;;;;;;;;.............>/;;;;;;;....................................
> │ 
> ................/////////////////////////////;;;;<<<<<<<<<<<<<<<<<<<..........>/
> ///////////;;;;;;;;;;;<<..........>//;;;;;;;;;..................................
> │ 
> ...............>//////////////////////////////<<<<<<<<<<<<<<<<<<<<<..........>//
> ///////////;<<<<<<<<<<<<.........>/////;;<<<<<<.................................
> │ 
> ...............///////////////////////////////<<<<<<<<<<<<<<<<<<<............///
> ////////////<<<<<<<<<<<..........///////<<<<<<..................................
> │ 
> ..............>//////////////////////////////<<<<<<<<<<<<<<<<<<<............////
> ///////////<<<<<<<<<<<............/////<<<<<<...................................
> │ 
> ..............//////////////////////////////<<<<<<<<<<<<<<<<<<<...............//
> //////////<<<<<<<<<<<...............///<<<<<....................................
> │ 
> ...............///////////////////////////<<<<<<<<<<<<<<<<<<<...................
> /////////<<<<<<<<<<................../..........................................
> │ 
> ................//////////////////////////<<<<<<<<<<<<<<<<<<....................
> .///////<<<<<<<<<<..............................................................
> │ 
> ..................//////////////////////<<<<<<<<<<<<<<<<<<<.....................
> ...////<<<<<<<<<................................................................
> │ 
> ....................///////////////////<<<<<<<<<<<<<<<<<<.......................
> ...../<<<.......................................................................
> │ 
> ...................../////////////////<<<<<<<<<<<<<<<<<<........................
> ................................................................................
> │ 
> ......................///////////////<<<<<<<<<<<<<<<<<<.........................
> ................................................................................
> │ 
> ........................////////////<<<<<<<<<<<<<<<<<...........................
> ................................................................................
> │ 
> .........................//////////<<<<<<<<<<<<<<...............................
> ................................................................................
> │ 
> ...........................///////<<<<<<<<<<<...................................
> ................................................................................
> │ 
> ............................/////<<<<<<<........................................
> ................................................................................
> │ 
> ..............................//<<<<............................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .....................>;;;;;;;;;;;;..............................................
> ................................................................................
> │ 
> .....................///;;;;;;;;;;;;;;;;;;;;;;..................................
> ................................................................................
> │ 
> ....................>//////;;;;;;;;;;;;;;;;;;;;;;...............................
> ................................................................................
> │ 
> ..................../////////;/;;;;;;;;;;;;;;;;;;;;;\...........................
> ................................................................................
> │ 
> ...................>/////////////;;;;;;;;;;;;;;;;;;;;;;\........................
> ................................................................................
> │ 
> ...................////////////////;/;;;;;;;;;;;;;;;;;;;;;;.....................
> ................................................................................
> │ 
> ..................>///////////////////;/;;;;;;;;;;;;;;;;;;;;;;..................
> .;;;;;;;;;;;;;..................................................................
> │ 
> .................>///////////////////////;;;;;;;;;;;;;;;;;;;;;;;;\..............
> >///;;;;;;;;;;;;;...............................................................
> │ 
> .................//////////////////////////;;;;;;;;;;;;;;;;;;;;;;<<<............
> /////;;;;;;;;;;;;;;;............................................................
> │ 
> ................>/////////////////////////////;;;;<<<<<<<<<<<<<<<<<<...........>
> ////////;/;;;;;;;;;;;;;............>/;;;;;;;....................................
> │ 
> ................////////////////////////////////<<<<<<<<<<<<<<<<<<<...........>/
> //////////;;;;;;;<<<<<<<..........>//;;;;;;;;;..................................
> │ 
> ...............>///////////////////////////////<<<<<<<<<<<<<<<<<<<...........>//
> /////////////<<<<<<<<<<..........>///////<<<<<<.................................
> │ 
> ...............///////////////////////////////<<<<<<<<<<<<<<<<<<.............///
> ////////////<<<<<<<<<<...........////////<<<<<..................................
> │ 
> ..............>///////////////////////////////<<<<<<<<<<<<<<<<<.............>///
> ///////////<<<<<<<<<<............///////<<<<<...................................
> │ 
> ..............//////////////////////////////<<<<<<<<<<<<<<<<<<...............///
> ///////////<<<<<<<<<................///<<<<<....................................
> │ 
> ..............//////////////////////////////<<<<<<<<<<<<<<<<<................../
> //////////<<<<<<<<<.................../.........................................
> │ 
> ...............////////////////////////////<<<<<<<<<<<<<<<<<....................
> ..///////<<<<<<<<<..............................................................
> │ 
> ................./////////////////////////<<<<<<<<<<<<<<<<......................
> ....////<<<<<<<<................................................................
> │ 
> ...................//////////////////////<<<<<<<<<<<<<<<<.......................
> ....../<<<......................................................................
> │ 
> .....................//////////////////<<<<<<<<<<<<<<<<<........................
> ................................................................................
> │ 
> ....................../////////////////<<<<<<<<<<<<<<<<.........................
> ................................................................................
> │ 
> ........................//////////////<<<<<<<<<<<<<<<...........................
> ................................................................................
> │ 
> ..........................///////////<<<<<<<<<<<<...............................
> ................................................................................
> │ 
> ............................////////<<<<<<<<<<..................................
> ................................................................................
> │ 
> .............................//////<<<<<<<......................................
> ................................................................................
> │ 
> ...............................///<<<<..........................................
> ................................................................................
> │ 
> .................................<..............................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ...................../;;;;;;;;..................................................
> ................................................................................
> │ 
> ....................>//;;;;;;;;;;;;;;;;;;;;;....................................
> ................................................................................
> │ 
> ....................//////;;;;;;;;;;;;;;;;;;;;;.................................
> ................................................................................
> │ 
> ...................>//////////;/;;;;;;;;;;;;;;;;;;;.............................
> ................................................................................
> │ 
> ...................//////////////;/;;;;;;;;;;;;;;;;;;;;.........................
> ................................................................................
> │ 
> ..................>////////////////////;;;;;;;;;;;;;;;;;;;;.....................
> ................................................................................
> │ 
> ..................//////////////////////;;;;;;;;;;;;;;;;;;;;;;;.................
> .;;;;;;;;;;;;\..................................................................
> │ 
> .................>/////////////////////////;;;;;;;;;;;;;;;;;;;;;;;..............
> >/;;/;;;;;;;;;;;;...............................................................
> │ 
> .................////////////////////////////////;;;<<<<<<<<<<<<<<<<............
> /////;;/;;;;;;;;;;;;............................................................
> │ 
> ................>/////////////////////////////////<<<<<<<<<<<<<<<<<............>
> ////////;;;;;;;;;;;;;;;............;;;;;;;;;....................................
> │ 
> ................/////////////////////////////////<<<<<<<<<<<<<<<<.............>/
> ////////////;;<<<<<<<<<<..........>////;;;;;;;;.................................
> │ 
> ...............>////////////////////////////////<<<<<<<<<<<<<<<<..............//
> //////////////<<<<<<<<<...........//////;<<<<<<.................................
> │ 
> ...............////////////////////////////////<<<<<<<<<<<<<<<<..............>//
> /////////////<<<<<<<<<...........>///////<<<<<..................................
> │ 
> ..............>///////////////////////////////<<<<<<<<<<<<<<<<..............>///
> ////////////<<<<<<<<<............///////<<<<<...................................
> │ 
> ..............///////////////////////////////<<<<<<<<<<<<<<<<................///
> ///////////<<<<<<<<<................///<<<<<....................................
> │ 
> .............>///////////////////////////////<<<<<<<<<<<<<<<.................../
> //////////<<<<<<<<<.............................................................
> │ 
> ..............//////////////////////////////<<<<<<<<<<<<<<<.....................
> ..///////<<<<<<<<<..............................................................
> │ 
> ................///////////////////////////<<<<<<<<<<<<<<<......................
> ..../////<<<<<<<................................................................
> │ 
> ..................////////////////////////<<<<<<<<<<<<<<<.......................
> ......./<<......................................................................
> │ 
> ..................../////////////////////<<<<<<<<<<<<<<<........................
> ................................................................................
> │ 
> ......................//////////////////<<<<<<<<<<<<<<<.........................
> ................................................................................
> │ 
> ........................///////////////<<<<<<<<<<<<<<...........................
> ................................................................................
> │ 
> ...........................///////////<<<<<<<<<<<<..............................
> ................................................................................
> │ 
> ............................//////////<<<<<<<<<.................................
> ................................................................................
> │ 
> ..............................///////<<<<<<.....................................
> ................................................................................
> │ 
> ................................////<<<<........................................
> ................................................................................
> │ 
> ...................................<............................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .....................;;;;;......................................................
> ................................................................................
> │ 
> ....................>/;/;;;;;;;;;;;;;;..........................................
> ................................................................................
> │ 
> ....................//////;/;;;;;;;;;;;;;;;;;...................................
> ................................................................................
> │ 
> ...................>//////////;;/;;;;;;;;;;;;;;;;;..............................
> ................................................................................
> │ 
> ...................////////////////;;;;;;;;;;;;;;;;;;;;.........................
> ................................................................................
> │ 
> ..................>///////////////////////;;;;;;;;;;;;;;;;;.....................
> ................................................................................
> │ 
> ................../////////////////////////;;;;;;;;;;;;;;;;;;;;;................
> .;;;;;;;;;;;....................................................................
> │ 
> .................>///////////////////////////////;;;;;<<<<<<<<<<<<<.............
> >//;/;;;;;;;;;;;................................................................
> │ 
> .................//////////////////////////////////<<<<<<<<<<<<<<<.............>
> //////;//;;;;;;;;;;;............................................................
> │ 
> ................>/////////////////////////////////<<<<<<<<<<<<<<<..............>
> /////////;/;;;;;;;;;<<<<...........;;;;;;;;.....................................
> │ 
> ................//////////////////////////////////<<<<<<<<<<<<<<..............>/
> //////////////<<<<<<<<<...........>///;;;;;;;<<.................................
> │ 
> ...............>/////////////////////////////////<<<<<<<<<<<<<<<..............//
> //////////////<<<<<<<<<...........///////;<<<<<.................................
> │ 
> .............../////////////////////////////////<<<<<<<<<<<<<<<..............>//
> /////////////<<<<<<<<<...........>///////<<<<<..................................
> │ 
> ..............>////////////////////////////////<<<<<<<<<<<<<<<..............>///
> ////////////<<<<<<<<<............///////<<<<<...................................
> │ 
> ..............>///////////////////////////////<<<<<<<<<<<<<<<...............////
> ////////////<<<<<<<<................////<<<<<...................................
> │ 
> ..............////////////////////////////////<<<<<<<<<<<<<<.................../
> ///////////<<<<<<<<.............................................................
> │ 
> .............>///////////////////////////////<<<<<<<<<<<<<<.....................
> ..////////<<<<<<<<..............................................................
> │ 
> .............../////////////////////////////<<<<<<<<<<<<<<......................
> .....////<<<<<<<................................................................
> │ 
> .................//////////////////////////<<<<<<<<<<<<<<.......................
> .......//<<.....................................................................
> │ 
> ....................///////////////////////<<<<<<<<<<<<<........................
> ................................................................................
> │ 
> ......................////////////////////<<<<<<<<<<<<<.........................
> ................................................................................
> │ 
> ......................../////////////////<<<<<<<<<<<<...........................
> ................................................................................
> │ 
> .........................../////////////<<<<<<<<<<..............................
> ................................................................................
> │ 
> .............................//////////<<<<<<<<.................................
> ................................................................................
> │ 
> ................................///////<<<<<....................................
> ................................................................................
> │ 
> ..................................////<<<.......................................
> ................................................................................
> │ 
> .....................................<..........................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ....................;;..........................................................
> ................................................................................
> │ 
> ....................//;/;;;;;;;;;...............................................
> ................................................................................
> │ 
> ...................>//////;;;/;;;;;;;;;;;;;.....................................
> ................................................................................
> │ 
> ...................////////////;;;;;;;;;;;;;;;;;................................
> ................................................................................
> │ 
> ..................>/////////////////////;;;;;;;;;;;;;;..........................
> ................................................................................
> │ 
> ..................>///////////////////////;;;/;;;;;;;;;;;;;;....................
> ................................................................................
> │ 
> ................../////////////////////////////;;/;;;;;;;;;;;;;;;...............
> ;;;;;;;;;;;.....................................................................
> │ 
> .................>//////////////////////////////////<<<<<<<<<<<<<<..............
> >/;/;;;;;;;;;;;;................................................................
> │ 
> .................//////////////////////////////////<<<<<<<<<<<<<<..............>
> ///////;;/;;;;;;;;;;;...........................................................
> │ 
> ................>//////////////////////////////////<<<<<<<<<<<<<...............>
> //////////;;/;;;<<<<<<<............/;;;;;;;\....................................
> │ 
> ................//////////////////////////////////<<<<<<<<<<<<<...............>/
> ///////////////<<<<<<<<...........>//;;/;;;;<<<.................................
> │ 
> ...............>//////////////////////////////////<<<<<<<<<<<<................//
> //////////////<<<<<<<<............>///////<<<<..................................
> │ 
> ...............>/////////////////////////////////<<<<<<<<<<<<<...............>//
> /////////////<<<<<<<<............>///////<<<<<..................................
> │ 
> .............../////////////////////////////////<<<<<<<<<<<<<................>//
> /////////////<<<<<<<<............////////<<<<...................................
> │ 
> ..............>////////////////////////////////<<<<<<<<<<<<<.................///
> ////////////<<<<<<<<................////<<<<<...................................
> │ 
> ............../////////////////////////////////<<<<<<<<<<<<...................//
> ///////////<<<<<<<<.............................................................
> │ 
> .............>////////////////////////////////<<<<<<<<<<<<<.....................
> ../////////<<<<<<<<.............................................................
> │ 
> .............////////////////////////////////<<<<<<<<<<<<<......................
> ...../////<<<<<<................................................................
> │ 
> ................/////////////////////////////<<<<<<<<<<<<.......................
> ........./<.....................................................................
> │ 
> .................../////////////////////////<<<<<<<<<<<<........................
> ................................................................................
> │ 
> ....................../////////////////////<<<<<<<<<<<<.........................
> ................................................................................
> │ 
> ........................///////////////////<<<<<<<<<<...........................
> ................................................................................
> │ 
> ............................//////////////<<<<<<<<<.............................
> ................................................................................
> │ 
> ...............................//////////<<<<<<<................................
> ................................................................................
> │ 
> ..................................///////<<<<<..................................
> ................................................................................
> │ 
> ....................................////<<<.....................................
> ................................................................................
> │ 
> ......................................./........................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ...................;/;;;;;;;;...................................................
> ................................................................................
> │ 
> ...................//////;///;;;;;;;;;;.........................................
> ................................................................................
> │ 
> ..................>/////////////;;;;;;;;;;;;;;;.................................
> ................................................................................
> │ 
> ..................>////////////////////;//;;;;;;;;;;;;..........................
> ................................................................................
> │ 
> ................../////////////////////////////;/;;;;;;;;;;;;...................
> ................................................................................
> │ 
> .................>///////////////////////////////////<<<<<<<<<<<<...............
> ................................................................................
> │ 
> .................>//////////////////////////////////<<<<<<<<<<<<................
> /;;/;;;;;;;;;;;.................................................................
> │ 
> .................///////////////////////////////////<<<<<<<<<<<<...............>
> ///////;;;;;;;;;;;;;;...........................................................
> │ 
> ................>//////////////////////////////////<<<<<<<<<<<<................>
> /////////////;;<<<<<<<<............;;;;;;;;.....................................
> │ 
> ................>//////////////////////////////////<<<<<<<<<<<................>/
> ///////////////<<<<<<<............>//;;/;;<<<<<.................................
> │ 
> ................//////////////////////////////////<<<<<<<<<<<<................>/
> ///////////////<<<<<<<............>///////<<<<..................................
> │ 
> ...............>//////////////////////////////////<<<<<<<<<<<.................//
> //////////////<<<<<<<............>///////<<<<<..................................
> │ 
> ...............//////////////////////////////////<<<<<<<<<<<.................>//
> /////////////<<<<<<<.............>///////<<<<...................................
> │ 
> ...............//////////////////////////////////<<<<<<<<<<<.................///
> /////////////<<<<<<<................////<<<<<...................................
> │ 
> ..............>/////////////////////////////////<<<<<<<<<<<..................///
> ////////////<<<<<<<.............................................................
> │ 
> ............../////////////////////////////////<<<<<<<<<<<......................
> ..//////////<<<<<<<.............................................................
> │ 
> .............//////////////////////////////////<<<<<<<<<<<......................
> ....../////<<<<<................................................................
> │ 
> ..............////////////////////////////////<<<<<<<<<<<.......................
> ........../<....................................................................
> │ 
> ................./////////////////////////////<<<<<<<<<<........................
> ................................................................................
> │ 
> .....................////////////////////////<<<<<<<<<<<........................
> ................................................................................
> │ 
> ........................////////////////////<<<<<<<<<<..........................
> ................................................................................
> │ 
> ............................////////////////<<<<<<<.............................
> ................................................................................
> │ 
> ................................///////////<<<<<<...............................
> ................................................................................
> │ 
> ...................................////////<<<<.................................
> ................................................................................
> │ 
> .......................................///<<....................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ...................;;;;;........................................................
> ................................................................................
> │ 
> ..................>//////;;;;;;;;;;.............................................
> ................................................................................
> │ 
> ..................>//////////////;;;;/;;;;;;....................................
> ................................................................................
> │ 
> ..................//////////////////////////;;;;;;;;;;..........................
> ................................................................................
> │ 
> ..................//////////////////////////////////;/<<<<<<<<<.................
> ................................................................................
> │ 
> .................>///////////////////////////////////<<<<<<<<<<.................
> ................................................................................
> │ 
> .................////////////////////////////////////<<<<<<<<<<.................
> ;/;;;;;;;;;;;;;.................................................................
> │ 
> .................///////////////////////////////////<<<<<<<<<<.................>
> ///////;;;;;;;;;;;;;;<..........................................................
> │ 
> ................>///////////////////////////////////<<<<<<<<<<................./
> //////////////;<<<<<<<.............;;;;;;;;.....................................
> │ 
> ................>///////////////////////////////////<<<<<<<<<................../
> ///////////////<<<<<<<............>//;;//;<<<<..................................
> │ 
> ................///////////////////////////////////<<<<<<<<<<.................>/
> ///////////////<<<<<<.............>///////<<<<..................................
> │ 
> ...............>//////////////////////////////////<<<<<<<<<<..................//
> //////////////<<<<<<<.............////////<<<<..................................
> │ 
> ...............>//////////////////////////////////<<<<<<<<<<..................//
> ///////////////<<<<<.............>///////<<<<...................................
> │ 
> ...............///////////////////////////////////<<<<<<<<<..................>//
> /////////////<<<<<<<................/////<<<<...................................
> │ 
> ...............//////////////////////////////////<<<<<<<<<<..................///
> /////////////<<<<<<.............................................................
> │ 
> ..............>//////////////////////////////////<<<<<<<<<......................
> .///////////<<<<<<<.............................................................
> │ 
> ..............>/////////////////////////////////<<<<<<<<<<......................
> ......./////<<<<................................................................
> │ 
> ..............//////////////////////////////////<<<<<<<<<.......................
> ................................................................................
> │ 
> ...............////////////////////////////////<<<<<<<<<<.......................
> ................................................................................
> │ 
> ....................///////////////////////////<<<<<<<<<........................
> ................................................................................
> │ 
> ........................//////////////////////<<<<<<<<..........................
> ................................................................................
> │ 
> ............................./////////////////<<<<<<............................
> ................................................................................
> │ 
> .................................////////////<<<<<..............................
> ................................................................................
> │ 
> ......................................///////<<<................................
> ................................................................................
> │ 
> ..........................................//<<..................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ..................;;;...........................................................
> ................................................................................
> │ 
> ..................//;;;;;;/;;;;;;;;.............................................
> ................................................................................
> │ 
> ..................////////////////;;//;;;;;;;;;;;...............................
> ................................................................................
> │ 
> .................>///////////////////////////////;;;/;<<<<<.....................
> ................................................................................
> │ 
> .................>////////////////////////////////////<<<<<<<<..................
> ................................................................................
> │ 
> ................./////////////////////////////////////<<<<<<<<..................
> ................................................................................
> │ 
> .................////////////////////////////////////<<<<<<<<<.................>
> /;;;;;;;;;;;;;..................................................................
> │ 
> .................////////////////////////////////////<<<<<<<<..................>
> ///////;;;;;;;;/<<<<<<..........................................................
> │ 
> ................>///////////////////////////////////<<<<<<<<<................../
> ////////////////<<<<<<.............;;;;;;;;.....................................
> │ 
> ................>///////////////////////////////////<<<<<<<<.................../
> ///////////////<<<<<<.............>//;;;//<<<<..................................
> │ 
> ................////////////////////////////////////<<<<<<<<..................>/
> ///////////////<<<<<<.............>///////<<<<..................................
> │ 
> ................///////////////////////////////////<<<<<<<<<..................>/
> //////////////<<<<<<..............////////<<<...................................
> │ 
> ................///////////////////////////////////<<<<<<<<...................//
> //////////////<<<<<<..............///////<<<<...................................
> │ 
> ...............>///////////////////////////////////<<<<<<<<...................//
> //////////////<<<<<<................/////<<<<...................................
> │ 
> ...............>//////////////////////////////////<<<<<<<<...................>//
> /////////////<<<<<<.............................................................
> │ 
> ...............///////////////////////////////////<<<<<<<<......................
> .////////////<<<<<<.............................................................
> │ 
> ...............///////////////////////////////////<<<<<<<<......................
> ......../////<<<................................................................
> │ 
> ..............>//////////////////////////////////<<<<<<<<.......................
> ................................................................................
> │ 
> ..............>//////////////////////////////////<<<<<<<<.......................
> ................................................................................
> │ 
> ..................//////////////////////////////<<<<<<<<........................
> ................................................................................
> │ 
> ......................./////////////////////////<<<<<<..........................
> ................................................................................
> │ 
> .............................///////////////////<<<<............................
> ................................................................................
> │ 
> ...................................////////////<<<<.............................
> ................................................................................
> │ 
> .........................................//////<<...............................
> ................................................................................
> │ 
> ............................................../.................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .................>;;;;;;;;;;;;/;;;;;;;;.........................................
> ................................................................................
> │ 
> .................>////////////////////;;/;;/;;/;;;;;;;;<<.......................
> ................................................................................
> │ 
> .................>////////////////////////////////////<<<<<<....................
> ................................................................................
> │ 
> ................./////////////////////////////////////<<<<<<<...................
> ................................................................................
> │ 
> ................./////////////////////////////////////<<<<<<<...................
> ................................................................................
> │ 
> ................./////////////////////////////////////<<<<<<...................;
> ;;;;;/;;;;;;;...................................................................
> │ 
> .................////////////////////////////////////<<<<<<<...................>
> ////////;;;///;;<<<<<...........................................................
> │ 
> ................>////////////////////////////////////<<<<<<<.................../
> ////////////////<<<<<..............;;;;;;;;.....................................
> │ 
> ................>////////////////////////////////////<<<<<<..................../
> ///////////////<<<<<<.............>//;;;;;<<<<..................................
> │ 
> ................>////////////////////////////////////<<<<<<..................../
> ///////////////<<<<<..............>///////<<<<..................................
> │ 
> ................>///////////////////////////////////<<<<<<<...................>/
> ///////////////<<<<<..............>///////<<<...................................
> │ 
> ................////////////////////////////////////<<<<<<<...................>/
> ///////////////<<<<<..............////////<<<...................................
> │ 
> ................////////////////////////////////////<<<<<<....................>/
> ///////////////<<<<<...............///////<<=...................................
> │ 
> ................////////////////////////////////////<<<<<<....................//
> //////////////<<<<<.............................................................
> │ 
> ...............>///////////////////////////////////<<<<<<<...................../
> //////////////<<<<<.............................................................
> │ 
> ...............>///////////////////////////////////<<<<<<.......................
> ........./////<<................................................................
> │ 
> ...............>///////////////////////////////////<<<<<<.......................
> ................................................................................
> │ 
> ...............>///////////////////////////////////<<<<<<.......................
> ................................................................................
> │ 
> ...............///////////////////////////////////<<<<<<........................
> ................................................................................
> │ 
> ......................////////////////////////////<<<<<.........................
> ................................................................................
> │ 
> ..............................////////////////////<<<...........................
> ................................................................................
> │ 
> ...................................../////////////<<............................
> ................................................................................
> │ 
> .............................................////<<.............................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<........................
> ................................................................................
> │ 
> .................//////////////////////////////////////<<<......................
> ................................................................................
> │ 
> .................//////////////////////////////////////<<<<.....................
> ................................................................................
> │ 
> ................./////////////////////////////////////<<<<<.....................
> ................................................................................
> │ 
> ................./////////////////////////////////////<<<<<.....................
> ................................................................................
> │ 
> ................./////////////////////////////////////<<<<<....................;
> ;/;;;;;;;;;;....................................................................
> │ 
> ................./////////////////////////////////////<<<<<..................../
> ////////////;;;;<<<<............................................................
> │ 
> ................./////////////////////////////////////<<<<<..................../
> ////////////////<<<<...............;;;;;;;;.....................................
> │ 
> ................>/////////////////////////////////////<<<<<..................../
> ////////////////<<<<..............>//;;;;;<<<<..................................
> │ 
> ................>/////////////////////////////////////<<<<...................../
> ////////////////<<<<..............>///////<<<...................................
> │ 
> ................>////////////////////////////////////<<<<<...................../
> ///////////////<<<<<..............>///////<<<...................................
> │ 
> ................>////////////////////////////////////<<<<<...................../
> ///////////////<<<<<..............>///////<<<...................................
> │ 
> ................>////////////////////////////////////<<<<<...................../
> ///////////////<<<<<..............////////<<....................................
> │ 
> ................>////////////////////////////////////<<<<<....................>/
> ///////////////<<<<.............................................................
> │ 
> ................>////////////////////////////////////<<<<<....................//
> ///////////////<<<<.............................................................
> │ 
> ................>////////////////////////////////////<<<<.......................
> ............///<................................................................
> │ 
> ................>////////////////////////////////////<<<<.......................
> ................................................................................
> │ 
> ................////////////////////////////////////<<<<<.......................
> ................................................................................
> │ 
> ................////////////////////////////////////<<<<........................
> ................................................................................
> │ 
> .................///////////////////////////////////<<<.........................
> ................................................................................
> │ 
> .............................///////////////////////<<..........................
> ................................................................................
> │ 
> .........................................///////////<...........................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<........................
> ................................................................................
> │ 
> ................;//////////////////////////////////////<<.......................
> ................................................................................
> │ 
> ................>//////////////////////////////////////<<<......................
> ................................................................................
> │ 
> ................>//////////////////////////////////////<<<......................
> ................................................................................
> │ 
> ................>//////////////////////////////////////<<<......................
> ................................................................................
> │ 
> ................>//////////////////////////////////////<<<.....................;
> ;;;;;;;;;;;;;;;;<<<.............................................................
> │ 
> .................//////////////////////////////////////<<<...................../
> ////////////////<<<<............................................................
> │ 
> .................//////////////////////////////////////<<<...................../
> ////////////////<<<<...............;;;;;;;;;<...................................
> │ 
> .................//////////////////////////////////////<<<...................../
> ////////////////<<<<..............;;;;;;;;;<<...................................
> │ 
> .................//////////////////////////////////////<<<...................../
> ////////////////<<<<..............>////////<<...................................
> │ 
> ................./////////////////////////////////////<<<<...................../
> ////////////////<<<<..............>////////<<...................................
> │ 
> ................./////////////////////////////////////<<<<...................../
> ////////////////<<<<..............>////////<<...................................
> │ 
> ................./////////////////////////////////////<<<<...................../
> ////////////////<<<<..............////////<<....................................
> │ 
> ................./////////////////////////////////////<<<<...................../
> ////////////////<<<<............................................................
> │ 
> ................./////////////////////////////////////<<<<.....................>
> ////////////////<<..............................................................
> │ 
> ................./////////////////////////////////////<<<.......................
> ................................................................................
> │ 
> ................./////////////////////////////////////<<<.......................
> ................................................................................
> │ 
> ................./////////////////////////////////////<<<.......................
> ................................................................................
> │ 
> ................./////////////////////////////////////<<<.......................
> ................................................................................
> │ 
> .................>////////////////////////////////////<<........................
> ................................................................................
> │ 
> ..........................////////////////////////////<<........................
> ................................................................................
> │ 
> ................................................//////<.........................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ..............................................;;;;;;;;;<........................
> ................................................................................
> │ 
> .........................;;;;;;;;;;;;;;;;;;;;;/////////<........................
> ................................................................................
> │ 
> ................;;;;;;;;;//////////////////////////////<........................
> ................................................................................
> │ 
> ................///////////////////////////////////////<........................
> ................................................................................
> │ 
> ................>//////////////////////////////////////<<.......................
> ................................................................................
> │ 
> ................>//////////////////////////////////////<<.......................
> ................................................................................
> │ 
> ................>//////////////////////////////////////<<.......................
> ..;;;;;;;;;;;;;;<<<.............................................................
> │ 
> ................>//////////////////////////////////////<<......................;
> ;;//////////////<<<.............................................................
> │ 
> .................//////////////////////////////////////<<....................../
> ////////////////<<<....................;;;;<<...................................
> │ 
> .................//////////////////////////////////////<<....................../
> ////////////////<<<...............;;;;;////<<...................................
> │ 
> .................//////////////////////////////////////<<......................>
> ////////////////<<<...............>////////<<...................................
> │ 
> .................>//////////////////////////////////////<......................>
> ////////////////<<<................////////<<...................................
> │ 
> .................>//////////////////////////////////////<......................>
> /////////////////<<<...............////////<<...................................
> │ 
> .................>//////////////////////////////////////<......................>
> /////////////////<<<.............../////////....................................
> │ 
> .................>//////////////////////////////////////<.......................
> /////////////////<<<............................................................
> │ 
> ..................//////////////////////////////////////<.......................
> /////////////////<<.............................................................
> │ 
> ..................//////////////////////////////////////<<......................
> ................................................................................
> │ 
> ..................//////////////////////////////////////<<......................
> ................................................................................
> │ 
> ..................//////////////////////////////////////<<......................
> ................................................................................
> │ 
> ..................>/////////////////////////////////////<<......................
> ................................................................................
> │ 
> ..................>/////////////////////////////////////<.......................
> ................................................................................
> │ 
> ..................//////////////////////////////////////<.......................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ......................................................<.........................
> ................................................................................
> │ 
> .........................................;;;;;;;;;;;;;<.........................
> ................................................................................
> │ 
> ...........................;;;;;;;;;;;;;;//////////////<........................
> ................................................................................
> │ 
> ...............;;;;;;;;;;;;;///////////////////////////<........................
> ................................................................................
> │ 
> ...............>///////////////////////////////////////<........................
> ................................................................................
> │ 
> ................///////////////////////////////////////<........................
> ................................................................................
> │ 
> ................///////////////////////////////////////<<.......................
> ................................................................................
> │ 
> ................>///////////////////////////////////////<.......................
> ....;;;;;;;;;;;;<<..............................................................
> │ 
> ................>///////////////////////////////////////<......................;
> ;;;;////////////<<..............................................................
> │ 
> .................///////////////////////////////////////<....................../
> ////////////////<<<....................;;;<<....................................
> │ 
> .................///////////////////////////////////////<....................../
> /////////////////<<...............;;;;;////<<...................................
> │ 
> .................>//////////////////////////////////////<<.....................>
> /////////////////<<...............>////////<<...................................
> │ 
> .................>///////////////////////////////////////<.....................>
> /////////////////<<................////////<<...................................
> │ 
> ..................///////////////////////////////////////<......................
> /////////////////<<................////////<<...................................
> │ 
> ..................///////////////////////////////////////<......................
> /////////////////<<<...............>////////....................................
> │ 
> ..................>//////////////////////////////////////<......................
> >/////////////////<<............................................................
> │ 
> ..................>///////////////////////////////////////<.....................
> >/////////////////<.............................................................
> │ 
> ...................///////////////////////////////////////<.....................
> ................................................................................
> │ 
> ...................///////////////////////////////////////<.....................
> ................................................................................
> │ 
> ...................>//////////////////////////////////////<.....................
> ................................................................................
> │ 
> ...................>//////////////////////////////////////<.....................
> ................................................................................
> │ 
> ...................>///////////////////////////////////////<....................
> ................................................................................
> │ 
> ....................////////////////////////////................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .................................................;;;;;<.........................
> ................................................................................
> │ 
> .......................................;;;;;;;;;;/////<.........................
> ................................................................................
> │ 
> .............................;;;;;;;;;;///////////////<<........................
> ................................................................................
> │ 
> ...................;;;;;;;;;;//////////////////////////<........................
> ................................................................................
> │ 
> ...............;;;;////////////////////////////////////<........................
> ................................................................................
> │ 
> ...............>///////////////////////////////////////<<.......................
> ................................................................................
> │ 
> ...............>////////////////////////////////////////<.......................
> ................<...............................................................
> │ 
> ................////////////////////////////////////////<.......................
> .....;;;;;;;;;;;<...............................................................
> │ 
> ................>///////////////////////////////////////<<....................;;
> ;;;;;///////////<<..............................................................
> │ 
> .................////////////////////////////////////////<...................../
> ////////////////<<.....................;;;<<....................................
> │ 
> .................>///////////////////////////////////////<...................../
> /////////////////<................;;;;;////<....................................
> │ 
> .................>///////////////////////////////////////<<....................>
> /////////////////<<...............>////////<<...................................
> │ 
> ..................////////////////////////////////////////<.....................
> /////////////////<<................////////<<...................................
> │ 
> ..................>///////////////////////////////////////<.....................
> //////////////////<................>////////<...................................
> │ 
> ..................>///////////////////////////////////////<<....................
> >/////////////////<<................//////......................................
> │ 
> ...................////////////////////////////////////////<....................
> .//////////////////<............................................................
> │ 
> ...................>///////////////////////////////////////<....................
> .>///////////////...............................................................
> │ 
> ...................>///////////////////////////////////////<<...................
> .///............................................................................
> │ 
> ....................////////////////////////////////////////<...................
> ................................................................................
> │ 
> ....................>///////////////////////////////////////<...................
> ................................................................................
> │ 
> ....................>///////////////////////////////////////<<..................
> ................................................................................
> │ 
> ...................../////////////////////////////////////......................
> ................................................................................
> │ 
> .....................>/////////////////////.....................................
> ................................................................................
> │ 
> ......................///////...................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .....................................................<..........................
> ................................................................................
> │ 
> ..............................................;;;;;;;<<.........................
> ................................................................................
> │ 
> .....................................;;;;;;;;;////////<.........................
> ................................................................................
> │ 
> .............................;;;;;;;;;////////////////<<........................
> ................................................................................
> │ 
> ......................;;;;;;;//////////////////////////<........................
> ................................................................................
> │ 
> ...............;;;;;;;/////////////////////////////////<........................
> ................................................................................
> │ 
> .............../////////////////////////////////////////<.......................
> ................................................................................
> │ 
> ...............>////////////////////////////////////////<.......................
> .............;;;<...............................................................
> │ 
> ................/////////////////////////////////////////<......................
> .....;;;;;;;;///<...............................................................
> │ 
> ................>////////////////////////////////////////<....................;;
> ;;;;;///////////<<..............................................................
> │ 
> ................./////////////////////////////////////////<...................>/
> /////////////////<.....................;;;<<....................................
> │ 
> .................>////////////////////////////////////////<..................../
> /////////////////<<...............;;;;;////<....................................
> │ 
> ................../////////////////////////////////////////<...................>
> //////////////////<...............>////////<<...................................
> │ 
> ..................>////////////////////////////////////////<....................
> //////////////////<................/////////<...................................
> │ 
> ..................>////////////////////////////////////////<<...................
> >//////////////////<...............>////////<...................................
> │ 
> ...................>////////////////////////////////////////<...................
> .//////////////////<................/////=......................................
> │ 
> ...................>////////////////////////////////////////<<..................
> .>/////////////////<<...........................................................
> │ 
> ....................>////////////////////////////////////////<..................
> ../////////////.................................................................
> │ 
> ....................>////////////////////////////////////////<<.................
> ..>///..........................................................................
> │ 
> ...................../////////////////////////////////////////<.................
> ................................................................................
> │ 
> .....................>////////////////////////////////////////<.................
> ................................................................................
> │ 
> ......................///////////////////////////////////////...................
> ................................................................................
> │ 
> ......................>/////////////////////////////............................
> ................................................................................
> │ 
> .......................////////////////////.....................................
> ................................................................................
> │ 
> .......................>//////////..............................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ..................................................;;;<..........................
> ................................................................................
> │ 
> ............................................;;;;;;///<..........................
> ................................................................................
> │ 
> .....................................;;;;;;;/////////<<.........................
> ................................................................................
> │ 
> ..............................;;;;;;;/////////////////<<........................
> ................................................................................
> │ 
> .......................;;;;;;;/////////////////////////<........................
> ................................................................................
> │ 
> .................;;;;;;;///////////////////////////////<<.......................
> ................................................................................
> │ 
> ..............;;;///////////////////////////////////////<.......................
> ................................................................................
> │ 
> ...............//////////////////////////////////////////<......................
> ............;;;<................................................................
> │ 
> ...............>/////////////////////////////////////////<<.....................
> .....;;;;;;;////<...............................................................
> │ 
> ................>/////////////////////////////////////////<....................;
> ;;;;;///////////<<..............................................................
> │ 
> ................./////////////////////////////////////////<<..................;/
> /////////////////<.....................;;;<<....................................
> │ 
> .................>/////////////////////////////////////////<.................../
> /////////////////<<...............;;;;;////<....................................
> │ 
> ..................//////////////////////////////////////////<...................
> //////////////////<<..............>////////<<...................................
> │ 
> ..................>/////////////////////////////////////////<<..................
> >//////////////////<...............>////////<...................................
> │ 
> ...................>/////////////////////////////////////////<..................
> .//////////////////<<...............////////<<..................................
> │ 
> ..................../////////////////////////////////////////<<.................
> .>//////////////////<...............>////.......................................
> │ 
> ....................>/////////////////////////////////////////<.................
> ..///////////////////...........................................................
> │ 
> ...................../////////////////////////////////////////<<................
> ..>////////////.................................................................
> │ 
> .....................>/////////////////////////////////////////<................
> ...>////........................................................................
> │ 
> ......................>/////////////////////////////////////////<...............
> ................................................................................
> │ 
> ......................./////////////////////////////////////////................
> ................................................................................
> │ 
> .......................>/////////////////////////////////.......................
> ................................................................................
> │ 
> ........................//////////////////////////..............................
> ................................................................................
> │ 
> ........................>//////////////////.....................................
> ................................................................................
> │ 
> .........................>//////////............................................
> ................................................................................
> │ 
> ..........................////..................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................;;;/;...........................
> ................................................................................
> │ 
> ..........................................;;;;/;//////..........................
> ................................................................................
> │ 
> ....................................;;;;///////////////.........................
> ................................................................................
> │ 
> ...............................;;/;;///////////////////<........................
> ................................................................................
> │ 
> .........................;;;;/;/////////////////////////........................
> ................................................................................
> │ 
> ...................;;;;//;///////////////////////////////.......................
> ................................................................................
> │ 
> ..............;;/;;//////////////////////////////////////<......................
> ................................................................................
> │ 
> ..............>>//////////////////////////////////////////......................
> ...........;;;//................................................................
> │ 
> ...............>>//////////////////////////////////////////.....................
> ......;;/////////...............................................................
> │ 
> ................>///////////////////////////////////////////....................
> ;;;///////////////..............................................................
> │ 
> .................>//////////////////////////////////////////<.................;>
> //////////////////<...................;;///<....................................
> │ 
> .................>>//////////////////////////////////////////..................>
> ///////////////////...............;;;;//////....................................
> │ 
> ..................>>//////////////////////////////////////////..................
> >///////////////////...............>/////////...................................
> │ 
> ...................>//////////////////////////////////////////<.................
> >>///////////////////..............>>////////<..................................
> │ 
> ....................>//////////////////////////////////////////.................
> .>>//////////////////...............>>////////..................................
> │ 
> ....................>>//////////////////////////////////////////................
> ..>///////////////////...............>///.......................................
> │ 
> .....................>///////////////////////////////////////////...............
> ...>////////////////............................................................
> │ 
> ......................>//////////////////////////////////////////<..............
> ...>>/////////..................................................................
> │ 
> ......................>>//////////////////////////////////////////..............
> ....>////.......................................................................
> │ 
> .......................>>/////////////////////////////////////////..............
> ................................................................................
> │ 
> ........................>>//////////////////////////////////....................
> ................................................................................
> │ 
> .........................>////////////////////////////..........................
> ................................................................................
> │ 
> .........................>>//////////////////////...............................
> ................................................................................
> │ 
> ..........................>>////////////////....................................
> ................................................................................
> │ 
> ...........................>///////////.........................................
> ................................................................................
> │ 
> ............................>////...............................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ...................................................;............................
> ................................................................................
> │ 
> ..............................................;/;;///...........................
> ................................................................................
> │ 
> .........................................;;;//////////..........................
> ................................................................................
> │ 
> ....................................;;;///////////////<.........................
> ................................................................................
> │ 
> ...............................;;;/;///////////////////<........................
> ................................................................................
> │ 
> ..........................;;;/;/////////////////////////<.......................
> ................................................................................
> │ 
> ......................;;/////////////////////////////////.......................
> ................................................................................
> │ 
> .................;;;//////////////////////////////////////......................
> ................................................................................
> │ 
> ..............;>///////////////////////////////////////////.....................
> ...........;;;;/................................................................
> │ 
> ...............>///////////////////////////////////////////<....................
> ......;;/////////...............................................................
> │ 
> ................>///////////////////////////////////////////<...................
> .;;;//////////////..............................................................
> │ 
> .................>///////////////////////////////////////////<................;>
> ///////////////////...................;;///<....................................
> │ 
> .................>>///////////////////////////////////////////.................>
> >///////////////////..............;;;;//////....................................
> │ 
> ..................>>///////////////////////////////////////////.................
> >///////////////////<.............>>/////////...................................
> │ 
> ...................>>///////////////////////////////////////////................
> .>///////////////////<.............>>/////////..................................
> │ 
> ....................>>///////////////////////////////////////////...............
> .>>///////////////////..............>>////////..................................
> │ 
> .....................>///////////////////////////////////////////<..............
> ..>>///////////////////..............>////......................................
> │ 
> ......................>///////////////////////////////////////////<.............
> ...>>//////////////.............................................................
> │ 
> .......................>///////////////////////////////////////////.............
> ....>>////////..................................................................
> │ 
> ........................>//////////////////////////////////////////.............
> .....>////......................................................................
> │ 
> ........................>>/////////////////////////////////////.................
> ................................................................................
> │ 
> .........................>>///////////////////////////////......................
> ................................................................................
> │ 
> ..........................>>//////////////////////////..........................
> ................................................................................
> │ 
> ...........................>>////////////////////...............................
> ................................................................................
> │ 
> ............................>>///////////////...................................
> ................................................................................
> │ 
> .............................>>/////////........................................
> ................................................................................
> │ 
> ..............................>/////............................................
> ................................................................................
> │ 
> .............................../................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................;;/<............................
> ................................................................................
> │ 
> ............................................;;//////<...........................
> ................................................................................
> │ 
> ........................................;;;//////////<..........................
> ................................................................................
> │ 
> ....................................;/;;//////////////<.........................
> ................................................................................
> │ 
> ................................;;/////////////////////<........................
> ................................................................................
> │ 
> ...........................;;//;////////////////////////........................
> ................................................................................
> │ 
> .......................;;;///////////////////////////////<......................
> ................................................................................
> │ 
> ...................;/;////////////////////////////////////<.....................
> ..............;.................................................................
> │ 
> ..............;;;;/////////////////////////////////////////<....................
> ..........;/////................................................................
> │ 
> ..............;>////////////////////////////////////////////<...................
> ......;;;;///////...............................................................
> │ 
> ................>////////////////////////////////////////////<..................
> ..;///////////////..............................................................
> │ 
> .................>////////////////////////////////////////////.................;
> ;//////////////////...................;;;//<....................................
> │ 
> ..................>////////////////////////////////////////////................>
> >///////////////////..............;;;///////<...................................
> │ 
> ...................>////////////////////////////////////////////<..............>
> >>///////////////////.............>>/////////<..................................
> │ 
> ....................>////////////////////////////////////////////<..............
> >>>///////////////////.............>>/////////..................................
> │ 
> .....................>////////////////////////////////////////////<.............
> .>>>///////////////////.............>>////////..................................
> │ 
> ......................>////////////////////////////////////////////<............
> ..>>>/////////////////...............>>///......................................
> │ 
> .......................>////////////////////////////////////////////............
> ...>>>////////////..............................................................
> │ 
> ........................>///////////////////////////////////////////............
> ....>>>///////..................................................................
> │ 
> .........................>>/////////////////////////////////////................
> .....>>////.....................................................................
> │ 
> ..........................>/////////////////////////////////....................
> ................................................................................
> │ 
> ...........................>>////////////////////////////.......................
> ................................................................................
> │ 
> ............................>>///////////////////////...........................
> ................................................................................
> │ 
> .............................>////////////////////..............................
> ................................................................................
> │ 
> ..............................>>//////////////..................................
> ................................................................................
> │ 
> ...............................>>/////////......................................
> ................................................................................
> │ 
> ................................>>////..........................................
> ................................................................................
> │ 
> .................................>/.............................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ...............................................;;;/.............................
> ................................................................................
> │ 
> ...........................................;;;//////............................
> ................................................................................
> │ 
> .......................................;;;///////////...........................
> ................................................................................
> │ 
> ....................................;;////////////////..........................
> ................................................................................
> │ 
> ................................;;;////////////////////<........................
> ................................................................................
> │ 
> ............................;;/;////////////////////////<.......................
> ................................................................................
> │ 
> .........................;;//////////////////////////////<......................
> ................................................................................
> │ 
> .....................;/////////////////////////////////////.....................
> .............;;.................................................................
> │ 
> .................;/;////////////////////////////////////////....................
> ..........;;////................................................................
> │ 
> ...............;/////////////////////////////////////////////...................
> ......;;;////////...............................................................
> │ 
> ...............>>/////////////////////////////////////////////..................
> ...;//////////////<.............................................................
> │ 
> ................>>/////////////////////////////////////////////................;
> ;///////////////////..................;;;//<....................................
> │ 
> ..................>>////////////////////////////////////////////<.............;;
> >////////////////////..............;/////////...................................
> │ 
> ...................>>////////////////////////////////////////////<............\>
> >>////////////////////............;>//////////..................................
> │ 
> ....................>>////////////////////////////////////////////<.............
> >>>////////////////////...........\>>//////////.................................
> │ 
> .....................>>/////////////////////////////////////////////............
> .>>>////////////////////............>>>//////...................................
> │ 
> .......................>/////////////////////////////////////////////...........
> ..>>>////////////////................>>///......................................
> │ 
> ........................>////////////////////////////////////////////...........
> ...>>>////////////..............................................................
> │ 
> .........................>>///////////////////////////////////////..............
> ....>>>>///////.................................................................
> │ 
> ..........................>>///////////////////////////////////.................
> .....\>>>///....................................................................
> │ 
> ...........................>>//////////////////////////////.....................
> ................................................................................
> │ 
> ............................>>//////////////////////////........................
> ................................................................................
> │ 
> .............................>>//////////////////////...........................
> ................................................................................
> │ 
> ...............................>//////////////////..............................
> ................................................................................
> │ 
> ................................>>/////////////.................................
> ................................................................................
> │ 
> .................................>>/////////....................................
> ................................................................................
> │ 
> ..................................>>/////.......................................
> ................................................................................
> │ 
> ...................................>//..........................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .............................................;;///..............................
> ................................................................................
> │ 
> ..........................................;;;//////<............................
> ................................................................................
> │ 
> .......................................;////////////<...........................
> ................................................................................
> │ 
> ....................................;/////////////////..........................
> ................................................................................
> │ 
> ................................;;;////////////////////<........................
> ................................................................................
> │ 
> .............................;;;////////////////////////<.......................
> ................................................................................
> │ 
> ..........................;///////////////////////////////......................
> ................................................................................
> │ 
> ......................;;///////////////////////////////////.....................
> .............;/.................................................................
> │ 
> ...................;;;//////////////////////////////////////<...................
> ..........;;////................................................................
> │ 
> ................;;////////////////////////////////////////////..................
> ......;;;////////...............................................................
> │ 
> ...............;>//////////////////////////////////////////////.................
> ...;;//////////////......................<......................................
> │ 
> ................>>//////////////////////////////////////////////................
> ;///////////////////..................;;;//<....................................
> │ 
> .................>>>//////////////////////////////////////////////............;;
> >////////////////////..............;;;///////...................................
> │ 
> ..................>>>//////////////////////////////////////////////...........>>
> >>////////////////////<..........;;;>/////////..................................
> │ 
> ...................>>>//////////////////////////////////////////////...........>
> >>>/////////////////////..........>>>>/////////.................................
> │ 
> .....................>>>/////////////////////////////////////////////<..........
> >>>>>//////////////////............>>>>//////...................................
> │ 
> ......................>>>////////////////////////////////////////////...........
> .\>>>>///////////////................>>>//......................................
> │ 
> ........................>>>////////////////////////////////////////.............
> ...>>>>///////////..............................................................
> │ 
> .........................>>>////////////////////////////////////................
> ....>>>>>//////.................................................................
> │ 
> ..........................>>>////////////////////////////////...................
> ......>>>>//....................................................................
> │ 
> ............................>>>////////////////////////////.....................
> ................................................................................
> │ 
> .............................>>>////////////////////////........................
> ................................................................................
> │ 
> ..............................>>>////////////////////...........................
> ................................................................................
> │ 
> ................................>>>////////////////.............................
> ................................................................................
> │ 
> .................................>>>////////////................................
> ................................................................................
> │ 
> ...................................>>>////////..................................
> ................................................................................
> │ 
> ....................................>>>////.....................................
> ................................................................................
> │ 
> ......................................>//.......................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ...............................................;<...............................
> ................................................................................
> │ 
> ............................................;;;//<..............................
> ................................................................................
> │ 
> ..........................................;;///////<............................
> ................................................................................
> │ 
> .......................................;////////////<...........................
> ................................................................................
> │ 
> ....................................;/////////////////..........................
> ................................................................................
> │ 
> .................................;/////////////////////<........................
> ................................................................................
> │ 
> ..............................;;/////////////////////////.......................
> ................................................................................
> │ 
> ...........................;;/////////////////////////////......................
> ................................................................................
> │ 
> ........................;;//////////////////////////////////....................
> ............;;<.................................................................
> │ 
> .....................;;//////////////////////////////////////...................
> .........;//////................................................................
> │ 
> ..................;///////////////////////////////////////////<.................
> .......;//////////..............................................................
> │ 
> ................;///////////////////////////////////////////////................
> ....;;/////////////......................;......................................
> │ 
> ................>>>//////////////////////////////////////////////<..............
> .;;/////////////////<.................;;///<....................................
> │ 
> ................>>>>///////////////////////////////////////////////............;
> >/////////////////////.............;;////////...................................
> │ 
> ................;>>>>>//////////////////////////////////////////////<........;;>
> >>/////////////////////<.........;;;>/////////<.................................
> │ 
> ..................>>>>>//////////////////////////////////////////////<........>>
> >>>>////////////////////..........>>>>/////////.................................
> │ 
> ...................>>>>>//////////////////////////////////////////////..........
> >>>>>//////////////////............>>>>>/////...................................
> │ 
> .....................>>>>>//////////////////////////////////////////............
> .>>>>>>/////////////.................>>>>/......................................
> │ 
> ......................>>>>>>/////////////////////////////////////...............
> ...>>>>>//////////..............................................................
> │ 
> ........................>>>>>//////////////////////////////////.................
> ....>>>>>>/////.................................................................
> │ 
> ..........................>>>>>//////////////////////////////...................
> ......>>>>>//...................................................................
> │ 
> ...........................>>>>>///////////////////////////.....................
> ................................................................................
> │ 
> .............................>>>>>///////////////////////.......................
> ................................................................................
> │ 
> ..............................>>>>>///////////////////..........................
> ................................................................................
> │ 
> ................................>>>>>///////////////............................
> ................................................................................
> │ 
> .................................>>>>>>///////////..............................
> ................................................................................
> │ 
> ...................................=>>>>///////.................................
> ................................................................................
> │ 
> ......................................>>>>///...................................
> ................................................................................
> │ 
> ........................................=>/.....................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ..............................................;/................................
> ................................................................................
> │ 
> ............................................;////...............................
> ................................................................................
> │ 
> .........................................;;///////<.............................
> ................................................................................
> │ 
> ......................................;;////////////............................
> ................................................................................
> │ 
> ....................................;;///////////////<..........................
> ................................................................................
> │ 
> .................................;/////////////////////<........................
> ................................................................................
> │ 
> ..............................;;;////////////////////////.......................
> ................................................................................
> │ 
> ............................;/////////////////////////////<.....................
> ................................................................................
> │ 
> .........................;;/////////////////////////////////....................
> ...........;;/..................................................................
> │ 
> .......................;;/////////////////////////////////////..................
> .........;;/////................................................................
> │ 
> ....................;;/////////////////////////////////////////.................
> .......;//////////..............................................................
> │ 
> ..................;;/////////////////////////////////////////////...............
> ....;;/////////////......................;......................................
> │ 
> ................;;>///////////////////////////////////////////////<.............
> ..;;/////////////////.................;;///<....................................
> │ 
> ................;>>>////////////////////////////////////////////////...........;
> ;/////////////////////.............\;////////<..................................
> │ 
> ................>>>>>>///////////////////////////////////////////////<.......;;;
> >>>/////////////////////.........;;;>//////////.................................
> │ 
> ................>>>>>>>>//////////////////////////////////////////////.......>>>
> >>>>////////////////////.........>>>>>>////////.................................
> │ 
> ..................>>>>>>>>//////////////////////////////////////////...........>
> >>>>>>////////////////.............>>>>>/////...................................
> │ 
> ...................\>>>>>>>///////////////////////////////////////..............
> .>>>>>>>////////////.................>>>>//.....................................
> │ 
> .....................>>>>>>>>///////////////////////////////////................
> ..>>>>>>>/////////..............................................................
> │ 
> .......................>>>>>>>>///////////////////////////////..................
> ....>>>>>>>/////................................................................
> │ 
> .........................>>>>>>>/////////////////////////////...................
> ......>>>>>>//..................................................................
> │ 
> ..........................>>>>>>>>/////////////////////////.....................
> ................................................................................
> │ 
> ............................>>>>>>>>/////////////////////.......................
> ................................................................................
> │ 
> ..............................>>>>>>>>/////////////////.........................
> ................................................................................
> │ 
> ................................>>>>>>>//////////////...........................
> ................................................................................
> │ 
> .................................>>>>>>>>//////////.............................
> ................................................................................
> │ 
> ....................................>>>>>>>//////...............................
> ................................................................................
> │ 
> ........................................>>>>///.................................
> ................................................................................
> │ 
> ...........................................>>/..................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .............................................;/.................................
> ................................................................................
> │ 
> ...........................................;;////...............................
> ................................................................................
> │ 
> ........................................;;////////<.............................
> ................................................................................
> │ 
> ......................................;/////////////............................
> ................................................................................
> │ 
> ....................................;/////////////////..........................
> ................................................................................
> │ 
> .................................;;////////////////////<........................
> ................................................................................
> │ 
> ...............................;/////////////////////////.......................
> ................................................................................
> │ 
> .............................;/////////////////////////////.....................
> ................................................................................
> │ 
> ..........................;;////////////////////////////////<...................
> ...........;;/..................................................................
> │ 
> ........................;;////////////////////////////////////..................
> ........;;//////................................................................
> │ 
> ......................;/////////////////////////////////////////................
> ......;;//////////..............................................................
> │ 
> ...................;;////////////////////////////////////////////<..............
> ....;;;////////////<....................;;......................................
> │ 
> .................;;////////////////////////////////////////////////<............
> ..;;/////////////////................;;;////....................................
> │ 
> ................;;>>>////////////////////////////////////////////////...........
> ;;/////////////////////............\;;///////<..................................
> │ 
> ................;>>>>>>///////////////////////////////////////////////.......;;;
> ;>>/////////////////////.........;;;>//////////.................................
> │ 
> ...............;>>>>>>>>/////////////////////////////////////////////........;>>
> >>>>>///////////////////.........;>>>>>////////.................................
> │ 
> ................>>>>>>>>>>/////////////////////////////////////////...........>>
> >>>>>>>///////////////.............>>>>>>////...................................
> │ 
> ..................>>>>>>>>>>>////////////////////////////////////...............
> >>>>>>>>>///////////................\>>>>>/.....................................
> │ 
> ....................>>>>>>>>>>//////////////////////////////////................
> ..>>>>>>>>////////..............................................................
> │ 
> ......................>>>>>>>>>>//////////////////////////////..................
> ....>>>>>>>>////................................................................
> │ 
> ........................>>>>>>>>>>///////////////////////////...................
> ......>>>>>>>//.................................................................
> │ 
> ..........................>>>>>>>>>>///////////////////////.....................
> ................................................................................
> │ 
> ............................>>>>>>>>>>///////////////////.......................
> ................................................................................
> │ 
> ..............................>>>>>>>>>>////////////////........................
> ................................................................................
> │ 
> ................................>>>>>>>>>>////////////..........................
> ................................................................................
> │ 
> ..................................>>>>>>>>>>////////............................
> ................................................................................
> │ 
> ....................................=>>>>>>>>>/////.............................
> ................................................................................
> │ 
> ..........................................>>>>>//...............................
> ................................................................................
> │ 
> .............................................../................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ............................................;;..................................
> ................................................................................
> │ 
> ..........................................;;////................................
> ................................................................................
> │ 
> ........................................;;////////..............................
> ................................................................................
> │ 
> ......................................;////////////<............................
> ................................................................................
> │ 
> ....................................;////////////////<..........................
> ................................................................................
> │ 
> ..................................;////////////////////<........................
> ................................................................................
> │ 
> ................................;////////////////////////<......................
> ................................................................................
> │ 
> ..............................;////////////////////////////.....................
> ................................................................................
> │ 
> ............................;////////////////////////////////...................
> ..........;;//..................................................................
> │ 
> ..........................;////////////////////////////////////.................
> ........;;//////................................................................
> │ 
> ........................;///////////////////////////////////////<...............
> .....;;;//////////..............................................................
> │ 
> ......................;///////////////////////////////////////////<.............
> ...\;;//////////////....................;<......................................
> │ 
> ....................;;//////////////////////////////////////////////<...........
> ..;;;/////////////////...............;;;///<....................................
> │ 
> ..................;;>////////////////////////////////////////////////...........
> ;;;/////////////////////...........;;;///////<..................................
> │ 
> ................;;>>>>>//////////////////////////////////////////////.........;;
> ;;>/////////////////////..........;;;//////////.................................
> │ 
> ...............;;>>>>>>>>//////////////////////////////////////////.........\;;>
> >>>>>//////////////////..........;;>>>>////////.................................
> │ 
> ..............;>>>>>>>>>>>>///////////////////////////////////////...........>>>
> >>>>>>>///////////////.............>>>>>>////...................................
> │ 
> ................>>>>>>>>>>>>>////////////////////////////////////...............
> >>>>>>>>>>//////////.................>>>>>/.....................................
> │ 
> ..................>>>>>>>>>>>>>>///////////////////////////////.................
> .\>>>>>>>>>////////...................=.........................................
> │ 
> ....................\>>>>>>>>>>>>>////////////////////////////..................
> ....>>>>>>>>>////...............................................................
> │ 
> .......................>>>>>>>>>>>>>/////////////////////////...................
> ......>>>>>>>>>/................................................................
> │ 
> .........................>>>>>>>>>>>>>/////////////////////.....................
> ................................................................................
> │ 
> ...........................>>>>>>>>>>>>>//////////////////......................
> ................................................................................
> │ 
> .............................>>>>>>>>>>>>>///////////////.......................
> ................................................................................
> │ 
> ...............................>>>>>>>>>>>>>>//////////.........................
> ................................................................................
> │ 
> ..................................>>>>>>>>>>>>>///////..........................
> ................................................................................
> │ 
> ....................................=>>>>>>>>>>>>////...........................
> ................................................................................
> │ 
> ............................................=>>>>>/.............................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ...........................................;/<..................................
> ................................................................................
> │ 
> .........................................;;////<................................
> ................................................................................
> │ 
> .......................................;;////////<..............................
> ................................................................................
> │ 
> .....................................;;////////////<............................
> ................................................................................
> │ 
> ...................................;;;///////////////<..........................
> ................................................................................
> │ 
> .................................;;////////////////////<........................
> ................................................................................
> │ 
> ................................;;///////////////////////<......................
> ................................................................................
> │ 
> ..............................;;///////////////////////////<....................
> ................................................................................
> │ 
> ............................;;///////////////////////////////<..................
> ..........;;//..................................................................
> │ 
> ..........................;;;//////////////////////////////////.................
> .......;;;//////................................................................
> │ 
> .........................;;//////////////////////////////////////...............
> .....;;;//////////..............................................................
> │ 
> .......................;;//////////////////////////////////////////<............
> ...;;;;/////////////....................;/......................................
> │ 
> .....................;;//////////////////////////////////////////////...........
> .;;;;/////////////////...............;;;////....................................
> │ 
> ...................;;;///////////////////////////////////////////////...........
> ;;;;////////////////////...........;;;////////..................................
> │ 
> ..................;;>>>>////////////////////////////////////////////..........;;
> ;;;>////////////////////..........;;;//////////.................................
> │ 
> ................;;>>>>>>>>////////////////////////////////////////...........;;;
> >>>>>>/////////////////..........;;>>>>///////..................................
> │ 
> ..............;;>>>>>>>>>>>>/////////////////////////////////////...........;>>>
> >>>>>>>>/////////////.............>>>>>>>>///...................................
> │ 
> ..............>>>>>>>>>>>>>>>>>/////////////////////////////////...............>
> >>>>>>>>>>//////////................\>>>>>>/....................................
> │ 
> ................\>>>>>>>>>>>>>>>>//////////////////////////////.................
> .>>>>>>>>>>>///////....................=........................................
> │ 
> ...................>>>>>>>>>>>>>>>>///////////////////////////..................
> ...>>>>>>>>>>>>///..............................................................
> │ 
> .....................\>>>>>>>>>>>>>>>>///////////////////////...................
> ......>>>>>>>>>>................................................................
> │ 
> ........................>>>>>>>>>>>>>>>>////////////////////....................
> ................................................................................
> │ 
> ..........................>>>>>>>>>>>>>>>>/////////////////.....................
> ................................................................................
> │ 
> .............................>>>>>>>>>>>>>>>>/////////////......................
> ................................................................................
> │ 
> ...............................>>>>>>>>>>>>>>>>/////////........................
> ................................................................................
> │ 
> ..................................>>>>>>>>>>>>>>>>/////.........................
> ................................................................................
> │ 
> ....................................=>>>>>>>>>>>>>>>//..........................
> ................................................................................
> │ 
> .................................................>>>>...........................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ..........................................;//...................................
> ................................................................................
> │ 
> ........................................;;/////.................................
> ................................................................................
> │ 
> ......................................;;/////////...............................
> ................................................................................
> │ 
> ....................................;;;////////////.............................
> ................................................................................
> │ 
> ..................................;;;////////////////...........................
> ................................................................................
> │ 
> ................................;;;;///////////////////<........................
> ................................................................................
> │ 
> ..............................;;;;///////////////////////<......................
> ................................................................................
> │ 
> .............................;;;;//////////////////////////<....................
> ................................................................................
> │ 
> ...........................;;;;///////////////////////////////..................
> .........;;;//..................................................................
> │ 
> ..........................;;;;//////////////////////////////////................
> ......;;;;//////................................................................
> │ 
> ........................;;;;//////////////////////////////////////..............
> ....;;;;;/////////..............................................................
> │ 
> ......................;;;;;/////////////////////////////////////////............
> ...;;;;/////////////<..................<;<......................................
> │ 
> .....................;;;;///////////////////////////////////////////............
> .;;;;;/////////////////..............;;;////....................................
> │ 
> ...................;;;;;////////////////////////////////////////////............
> ;;;;////////////////////...........;;;;///////..................................
> │ 
> ..................;;;;;>///////////////////////////////////////////...........;;
> ;;;>////////////////////..........;;;//////////.................................
> │ 
> ................;;;;;>>>>>////////////////////////////////////////...........;;;
> ;;>>>>/////////////////..........;;;>>>>//////..................................
> │ 
> ...............;;;>>>>>>>>>>>////////////////////////////////////...........;;>>
> >>>>>>>>>/////////////............>>>>>>>>///...................................
> │ 
> .............;;;>>>>>>>>>>>>>>>>////////////////////////////////..............>>
> >>>>>>>>>>>/////////................>>>>>>>/....................................
> │ 
> ..............\>>>>>>>>>>>>>>>>>>>/////////////////////////////.................
> .>>>>>>>>>>>>>/////....................>........................................
> │ 
> .................>>>>>>>>>>>>>>>>>>>>/////////////////////////..................
> ...>>>>>>>>>>>>>//..............................................................
> │ 
> ....................>>>>>>>>>>>>>>>>>>>>/////////////////////...................
> ......>>>>>>>>>>>...............................................................
> │ 
> .......................>>>>>>>>>>>>>>>>>>>//////////////////....................
> ................................................................................
> │ 
> ..........................>>>>>>>>>>>>>>>>>>>//////////////.....................
> ................................................................................
> │ 
> ............................>>>>>>>>>>>>>>>>>>>>///////////.....................
> ................................................................................
> │ 
> ...............................>>>>>>>>>>>>>>>>>>>////////......................
> ................................................................................
> │ 
> ..................................>>>>>>>>>>>>>>>>>>>////.......................
> ................................................................................
> │ 
> .....................................>>>>>>>>>>>>>>>>>>/........................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .........................................;;/....................................
> ................................................................................
> │ 
> .......................................;;/////<.................................
> ................................................................................
> │ 
> .....................................;;;/////////...............................
> ................................................................................
> │ 
> ...................................;;;;////////////.............................
> ................................................................................
> │ 
> .................................;;;;;///////////////...........................
> ................................................................................
> │ 
> ...............................;;;;;///////////////////<........................
> ................................................................................
> │ 
> .............................;;;;;;//////////////////////<......................
> ................................................................................
> │ 
> ...........................;;;;;;;//////////////////////////....................
> ................................................................................
> │ 
> ..........................;;;;;;//////////////////////////////..................
> .........;;//<..................................................................
> │ 
> .........................;;;;;;/////////////////////////////////................
> ......;;;;//////................................................................
> │ 
> .......................;;;;;;;////////////////////////////////////<.............
> ...;;;;;;/////////<.............................................................
> │ 
> ......................;;;;;;;///////////////////////////////////////............
> ..;;;;;//////////////..................;;.......................................
> │ 
> .....................;;;;;;////////////////////////////////////////.............
> .;;;;;;////////////////.............;;;;////....................................
> │ 
> ...................;;;;;;;////////////////////////////////////////..............
> ;;;;;;//////////////////...........;;;;///////<.................................
> │ 
> ..................;;;;;;;/////////////////////////////////////////............\;
> ;;;;///////////////////...........;;;;/////////.................................
> │ 
> .................;;;;;;;>>>//////////////////////////////////////............;;;
> ;;;>>>>///////////////...........;;;;>>>//////..................................
> │ 
> ...............;;;;;;>>>>>>>>>>/////////////////////////////////............;;;>
> >>>>>>>>>////////////............\>>>>>>>>>//...................................
> │ 
> ..............;;;;>>>>>>>>>>>>>>>///////////////////////////////.............>>>
> >>>>>>>>>>>>/////////...............>>>>>>>>....................................
> │ 
> .............;;>>>>>>>>>>>>>>>>>>>>>///////////////////////////.................
> >>>>>>>>>>>>>>>/////...................>........................................
> │ 
> ...............>>>>>>>>>>>>>>>>>>>>>>>>///////////////////////..................
> ...>>>>>>>>>>>>>>>/.............................................................
> │ 
> ..................>>>>>>>>>>>>>>>>>>>>>>>>////////////////////..................
> ......>>>>>>>>>>>/..............................................................
> │ 
> .....................>>>>>>>>>>>>>>>>>>>>>>>>////////////////...................
> ................................................................................
> │ 
> ........................>>>>>>>>>>>>>>>>>>>>>>>>////////////....................
> ................................................................................
> │ 
> ............................>>>>>>>>>>>>>>>>>>>>>>>/////////....................
> ................................................................................
> │ 
> ...............................>>>>>>>>>>>>>>>>>>>>>>>/////.....................
> ................................................................................
> │ 
> ..................................>>>>>>>>>>>>>>>>>>>>>>//......................
> ................................................................................
> │ 
> .....................................>>>>>>>>>>>>>>>>>>>>/......................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ........................................;;/<....................................
> ................................................................................
> │ 
> ......................................;;;/////..................................
> ................................................................................
> │ 
> ....................................;;;;////////................................
> ................................................................................
> │ 
> ..................................;;;;;////////////.............................
> ................................................................................
> │ 
> ................................;;;;;;///////////////...........................
> ................................................................................
> │ 
> ..............................;;;;;;;//////////////////.........................
> ................................................................................
> │ 
> ............................;;;;;;;;//////////////////////......................
> ................................................................................
> │ 
> ..........................;;;;;;;;//////////////////////////....................
> ................................................................................
> │ 
> .........................;;;;;;;;/////////////////////////////<.................
> ........;;;//...................................................................
> │ 
> ........................;;;;;;;;////////////////////////////////<...............
> .....;;;;;//////................................................................
> │ 
> .......................;;;;;;;;////////////////////////////////////.............
> ..<;;;;;;/////////<.............................................................
> │ 
> .....................\;;;;;;;;/////////////////////////////////////.............
> ..;;;;;;/////////////..................;;<......................................
> │ 
> ....................;;;;;;;;;/////////////////////////////////////..............
> \;;;;;;/////////////////............;;;;////....................................
> │ 
> ...................;;;;;;;;;//////////////////////////////////////..............
> ;;;;;;/////////////////............;;;;////////.................................
> │ 
> ..................;;;;;;;;;//////////////////////////////////////.............\;
> ;;;;;//////////////////...........;;;;/////////.................................
> │ 
> .................;;;;;;;;;;>/////////////////////////////////////............\;;
> ;;;;;>>///////////////...........;;;;;>>>/////..................................
> │ 
> ................;;;;;;;;>>>>>>>>////////////////////////////////............\;;;
> ;>>>>>>>>>////////////...........;>>>>>>>>>//...................................
> │ 
> ...............;;;;;;>>>>>>>>>>>>>>/////////////////////////////............;>>>
> >>>>>>>>>>>>>////////...............>>>>>>>>/...................................
> │ 
> ..............;;;;>>>>>>>>>>>>>>>>>>>>/////////////////////////................>
> >>>>>>>>>>>>>>>>////...................=>.......................................
> │ 
> .............;>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////////.................
> ..\>>>>>>>>>>>>>>>>.............................................................
> │ 
> ................>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////..................
> ......>>>>>>>>>=>...............................................................
> │ 
> ....................>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////..................
> ................................................................................
> │ 
> .......................>>>>>>>>>>>>>>>>>>>>>>>>>>>///////////...................
> ................................................................................
> │ 
> ...........................>>>>>>>>>>>>>>>>>>>>>>>>>>>///////...................
> ................................................................................
> │ 
> ..............................>>>>>>>>>>>>>>>>>>>>>>>>>>>///....................
> ................................................................................
> │ 
> ..................................>>>>>>>>>>>>>>>>>>>>>>>>>/....................
> ................................................................................
> │ 
> ......................................>>>>>=>=>>................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .......................................;;//.....................................
> ................................................................................
> │ 
> .....................................;;;/////<..................................
> ................................................................................
> │ 
> ...................................;;;;/////////................................
> ................................................................................
> │ 
> .................................;;;;;;///////////<.............................
> ................................................................................
> │ 
> ...............................;;;;;;;///////////////...........................
> ................................................................................
> │ 
> .............................;;;;;;;;//////////////////.........................
> ................................................................................
> │ 
> ...........................;;;;;;;;;//////////////////////......................
> ................................................................................
> │ 
> .........................;;;;;;;;;;/////////////////////////....................
> ................................................................................
> │ 
> ........................;;;;;;;;;;;///////////////////////////<.................
> ........;;;//...................................................................
> │ 
> .......................;;;;;;;;;;;///////////////////////////////...............
> .....;;;;;//////................................................................
> │ 
> ......................;;;;;;;;;;;/////////////////////////////////..............
> ..;;;;;;;/////////<.............................................................
> │ 
> .....................;;;;;;;;;;;//////////////////////////////////..............
> .;;;;;;;/////////////..................;;<......................................
> │ 
> ....................;;;;;;;;;;;//////////////////////////////////...............
> ;;;;;;;;///////////////.............;;;;////<...................................
> │ 
> ...................;;;;;;;;;;;;//////////////////////////////////..............;
> ;;;;;;;////////////////............;;;;////////.................................
> │ 
> ..................;;;;;;;;;;;;///////////////////////////////////..............;
> ;;;;;;/////////////////...........;;;;;////////.................................
> │ 
> .................;;;;;;;;;;;;///////////////////////////////////..............;;
> ;;;;;;>>//////////////...........;;;;;>>>/////..................................
> │ 
> ................;;;;;;;;;;;;>>>>>///////////////////////////////.............;;;
> ;;>>>>>>>>>///////////...........;>>>>>>>>>>//..................................
> │ 
> ...............;;;;;;;;;>>>>>>>>>>>>////////////////////////////............\;;>
> >>>>>>>>>>>>>>///////...............>>>>>>>>>...................................
> │ 
> ..............;;;;;;;>>>>>>>>>>>>>>>>>>>///////////////////////...............\>
> >>>>>>>>>>>>>>>>>>///..................>=.......................................
> │ 
> .............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>////////////////////.................
> ..>>>>>>>>>>>>>>>>>>............................................................
> │ 
> .............>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////////////////.................
> ......>>>>>>>>>>=...............................................................
> │ 
> .................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////////..................
> ................................................................................
> │ 
> ......................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////..................
> ................................................................................
> │ 
> ..........................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////..................
> ................................................................................
> │ 
> ..............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//..................
> ................................................................................
> │ 
> ..................................>>>>>>>>>>>>>>>>>>>>>>>>>>>...................
> ................................................................................
> │ 
> ......................................>>>==.....................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .......................................;;/<.....................................
> ................................................................................
> │ 
> ....................................<;;;/////...................................
> ................................................................................
> │ 
> ..................................;;;;;////////<................................
> ................................................................................
> │ 
> ................................;;;;;;;///////////..............................
> ................................................................................
> │ 
> ..............................;;;;;;;;//////////////<...........................
> ................................................................................
> │ 
> ............................;;;;;;;;;;/////////////////.........................
> ................................................................................
> │ 
> ..........................;;;;;;;;;;;////////////////////<......................
> ................................................................................
> │ 
> ........................;;;;;;;;;;;;////////////////////////....................
> ................................................................................
> │ 
> .......................;;;;;;;;;;;;;///////////////////////////.................
> ........;;///...................................................................
> │ 
> ......................;;;;;;;;;;;;;//////////////////////////////...............
> .....;;;;;//////................................................................
> │ 
> .....................;;;;;;;;;;;;;;//////////////////////////////...............
> ..;;;;;;;//////////.............................................................
> │ 
> ....................;;;;;;;;;;;;;;///////////////////////////////...............
> \;;;;;;;;////////////<.................;;.......................................
> │ 
> ...................\;;;;;;;;;;;;;///////////////////////////////................
> ;;;;;;;;///////////////............<;;;;////<...................................
> │ 
> ...................;;;;;;;;;;;;;;///////////////////////////////...............;
> ;;;;;;;;///////////////...........\;;;;////////.................................
> │ 
> ..................;;;;;;;;;;;;;;////////////////////////////////..............\;
> ;;;;;;;///////////////............;;;;;////////.................................
> │ 
> .................;;;;;;;;;;;;;;;////////////////////////////////..............;;
> ;;;;;;;>//////////////...........\;;;;;>>>////..................................
> │ 
> ................;;;;;;;;;;;;;;;>>>//////////////////////////////.............;;;
> ;;;;>>>>>>>>//////////...........;;>>>>>>>>>>/..................................
> │ 
> ................;;;;;;;;;;;;>>>>>>>>>>//////////////////////////.............;;;
> >>>>>>>>>>>>>>>>/////..............\>>>>>>>>/...................................
> │ 
> ...............;;;;;;;;;>>>>>>>>>>>>>>>>>>//////////////////////.............\>>
> >>>>>>>>>>>>>>>>>>>//..................\=.......................................
> │ 
> ..............;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////................
> .\>>>>>>>>>>>>>>>>>>/...........................................................
> │ 
> .............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////////////.................
> ......>>>>>>>>>>................................................................
> │ 
> ...............>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////.................
> ................................................................................
> │ 
> ...................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////.................
> ................................................................................
> │ 
> ........................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//.................
> ................................................................................
> │ 
> .............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/.................
> ................................................................................
> │ 
> ..................................>>>>>>>>>>>>>>>>>>>>==........................
> ................................................................................
> │ 
> .......................................>==......................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ......................................;;//......................................
> ................................................................................
> │ 
> ....................................;;;;////....................................
> ................................................................................
> │ 
> ..................................;;;;;////////.................................
> ................................................................................
> │ 
> ...............................<;;;;;;;///////////..............................
> ................................................................................
> │ 
> .............................;;;;;;;;;//////////////............................
> ................................................................................
> │ 
> ...........................;;;;;;;;;;;/////////////////.........................
> ................................................................................
> │ 
> .........................;;;;;;;;;;;;;///////////////////<......................
> ................................................................................
> │ 
> .......................;;;;;;;;;;;;;;///////////////////////....................
> ................................................................................
> │ 
> .....................\;;;;;;;;;;;;;;;//////////////////////////.................
> .......<;;//<...................................................................
> │ 
> .....................;;;;;;;;;;;;;;;;///////////////////////////................
> ....<;;;;;//////................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;////////////////////////////................
> ..;;;;;;;;/////////.............................................................
> │ 
> ....................;;;;;;;;;;;;;;;;////////////////////////////................
> ;;;;;;;;;/////////////.................;/.......................................
> │ 
> ...................;;;;;;;;;;;;;;;;/////////////////////////////...............;
> ;;;;;;;;;/////////////.............<;;;;////<...................................
> │ 
> ..................;;;;;;;;;;;;;;;;;/////////////////////////////...............;
> ;;;;;;;;//////////////............\;;;;;//////..................................
> │ 
> ..................;;;;;;;;;;;;;;;;;/////////////////////////////..............\;
> ;;;;;;;;//////////////............;;;;;///////..................................
> │ 
> .................;;;;;;;;;;;;;;;;;//////////////////////////////..............;;
> ;;;;;;;;>/////////////............;;;;;>>>////..................................
> │ 
> .................;;;;;;;;;;;;;;;;;>/////////////////////////////..............;;
> ;;;;;;>>>>>>>/////////...........;;;>>>>>>>>>/..................................
> │ 
> ................;;;;;;;;;;;;;;;;>>>>>>>/////////////////////////.............;;;
> ;;>>>>>>>>>>>>>>>/////.............\>>>>>>>>>=..................................
> │ 
> ...............;;;;;;;;;;;;;>>>>>>>>>>>>>>>/////////////////////.............;>>
> >>>>>>>>>>>>>>>>>>>>>/..................>.......................................
> │ 
> ...............;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>////////////////................
> .>>>>>>>>>>>>>>>>>>>/...........................................................
> │ 
> ..............;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////////................
> ......>>>>>>>>>>................................................................
> │ 
> ..............;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////................
> ................................................................................
> │ 
> .................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////................
> ................................................................................
> │ 
> ......................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>................
> ................................................................................
> │ 
> ............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>..................
> ................................................................................
> │ 
> ..................................>>>>>>>>>>>>>>>>>>............................
> ................................................................................
> │ 
> .......................................>=.......................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .....................................<;;/<......................................
> ................................................................................
> │ 
> ...................................;;;;;///<....................................
> ................................................................................
> │ 
> .................................;;;;;;///////<.................................
> ................................................................................
> │ 
> ...............................;;;;;;;;//////////<..............................
> ................................................................................
> │ 
> ............................<;;;;;;;;;;/////////////............................
> ................................................................................
> │ 
> ..........................<;;;;;;;;;;;;///////////////<.........................
> ................................................................................
> │ 
> ........................;;;;;;;;;;;;;;;//////////////////<......................
> ................................................................................
> │ 
> ......................;;;;;;;;;;;;;;;;//////////////////////....................
> ................................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;////////////////////////..................
> .......;;;//....................................................................
> │ 
> ....................;;;;;;;;;;;;;;;;;;/////////////////////////.................
> ....;;;;;;//////................................................................
> │ 
> ...................;;;;;;;;;;;;;;;;;;;/////////////////////////.................
> .<;;;;;;;;////////<.............................................................
> │ 
> ...................;;;;;;;;;;;;;;;;;;;/////////////////////////................;
> ;;;;;;;;;;////////////.................;/.......................................
> │ 
> ..................\;;;;;;;;;;;;;;;;;;//////////////////////////................;
> ;;;;;;;;;/////////////.............<;;;;////<...................................
> │ 
> ..................;;;;;;;;;;;;;;;;;;;//////////////////////////................;
> ;;;;;;;;;/////////////............;;;;;;//////..................................
> │ 
> ..................;;;;;;;;;;;;;;;;;;;///////////////////////////..............;;
> ;;;;;;;;;/////////////............;;;;;;//////..................................
> │ 
> .................;;;;;;;;;;;;;;;;;;;;///////////////////////////..............;;
> ;;;;;;;;;>////////////............;;;;;;>>////..................................
> │ 
> .................;;;;;;;;;;;;;;;;;;;;///////////////////////////..............;;
> ;;;;;;;;>>>>/>////////............;;;>>>>>>>>>..................................
> │ 
> ................;;;;;;;;;;;;;;;;;;;;>>>>>///////////////////////.............\;;
> ;;;>>>>>>>>>>>>>/>////.............>>>>>>>>>=...................................
> │ 
> ................;;;;;;;;;;;;;;;;>>>>>>>>>>>>>>//////////////////.............;;;
> >>>>>>>>>>>>>>>>>>>>>>..................=.......................................
> │ 
> ...............;;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>//////////////................
> >>>>>>>>>>>>>>>>>>>>>...........................................................
> │ 
> ...............;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////...............
> .....\>>>>>>>>=.................................................................
> │ 
> ..............;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////...............
> ................................................................................
> │ 
> ..............;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/...............
> ................................................................................
> │ 
> ....................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>...............
> ................................................................................
> │ 
> ..........................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>......................
> ................................................................................
> │ 
> .................................>>>>>>>>>>>>>>>>...............................
> ................................................................................
> │ 
> ........................................=.......................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> .....................................;;//.......................................
> ................................................................................
> │ 
> ...................................;;;;////<....................................
> ................................................................................
> │ 
> ................................<;;;;;;///////..................................
> ................................................................................
> │ 
> ..............................<;;;;;;;;/////////<...............................
> ................................................................................
> │ 
> ............................;;;;;;;;;;;////////////<............................
> ................................................................................
> │ 
> ..........................;;;;;;;;;;;;;///////////////<.........................
> ................................................................................
> │ 
> .......................<;;;;;;;;;;;;;;;//////////////////.......................
> ................................................................................
> │ 
> .....................;;;;;;;;;;;;;;;;;;/////////////////////....................
> ................................................................................
> │ 
> ...................;;;;;;;;;;;;;;;;;;;;//////////////////////...................
> .......;;;//....................................................................
> │ 
> ...................;;;;;;;;;;;;;;;;;;;;///////////////////////..................
> ....;;;;;;//////................................................................
> │ 
> ..................\;;;;;;;;;;;;;;;;;;;;///////////////////////..................
> .;;;;;;;;;/////////.............................................................
> │ 
> ..................;;;;;;;;;;;;;;;;;;;;;///////////////////////.................;
> ;;;;;;;;;;///////////..................;/.......................................
> │ 
> ..................;;;;;;;;;;;;;;;;;;;;;////////////////////////................;
> ;;;;;;;;;;////////////.............<;;;;////<...................................
> │ 
> ..................;;;;;;;;;;;;;;;;;;;;;////////////////////////...............\;
> ;;;;;;;;;;////////////............;;;;;;//////..................................
> │ 
> .................;;;;;;;;;;;;;;;;;;;;;;////////////////////////...............;;
> ;;;;;;;;;;////////////............;;;;;;//////..................................
> │ 
> .................;;;;;;;;;;;;;;;;;;;;;;/////////////////////////..............;;
> ;;;;;;;;;;>///////////............;;;;;;>>>///..................................
> │ 
> .................;;;;;;;;;;;;;;;;;;;;;;/////////////////////////..............;;
> ;;;;;;;;;>>>>>>///////............;;;;>>>>>>>>..................................
> │ 
> ................;;;;;;;;;;;;;;;;;;;;;;;>>>>/////////////////////..............;;
> ;;;;;;>>>>>>>>>>>>>>//.............>>>>>>>>>=...................................
> │ 
> ................;;;;;;;;;;;;;;;;;;;>>>>>>>>>>>>>/////////////////.............;;
> ;;>>>>>>>>>>>>>>>>>>>>..................=.......................................
> │ 
> ................;;;;;;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>////////////..............\
> >>>>>>>>>>>>>>>>>>>>............................................................
> │ 
> ...............\;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>///////...............
> .....>>>>>>>>>=.................................................................
> │ 
> ...............;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>///..............
> ................................................................................
> │ 
> ...............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>..............
> ................................................................................
> │ 
> ................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=..................
> ................................................................................
> │ 
> ........................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=.........................
> ................................................................................
> │ 
> .................................\>>>>>>>>>>>>>=................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> ................................................................................
> ................................................................................
> │ 
> │ 
00:00:28 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 450030 }
00:00:28 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:29 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:29 v #9 !   return _pygments_highlight(
00:00:29 v #10 ! [NbConvertApp] Writing 798024 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.html
00:00:29 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 916 }
00:00:29 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 916 }
00:00:29 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:30 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:30 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:30 d #16 spiral.run / dib / { exit_code = 0; result_length = 451005 }
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! @kant2002
Stand with Ukraine! https://standwithukraine.com.ua/

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

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 8490ms

./deps/spiral/lib/spiral/common.fsx(2339,0): (2339,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(252,0): (252,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(2569,0): (2569,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(5637,0): (5637,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(2897,0): (2897,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(9581,0): (9581,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(21240,0): (21240,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! @zpodlovics
Stand with Ukraine! https://standwithukraine.com.ua/

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

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 8062ms

./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! @mastoj
Stand with Ukraine! https://standwithukraine.com.ua/

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

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 8428ms

./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.18 (0d4089ea)

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

11 packages installed [110.00ms]
[INFO]: 🎯  Checking for the Wasm target...
[INFO]: 🌀  Compiling to Wasm...
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/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/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/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.
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.
   Compiling proc-macro2 v1.0.92
   Compiling unicode-ident v1.0.14
   Compiling autocfg v1.4.0
   Compiling serde v1.0.216
   Compiling wasm-bindgen-shared v0.2.99
   Compiling cfg-if v1.0.0
   Compiling log v0.4.22
   Compiling bumpalo v3.16.0
   Compiling once_cell v1.20.2
   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 pin-project-lite v0.2.15
   Compiling syn v2.0.90
   Compiling smallvec v1.13.2
   Compiling writeable v0.5.5
   Compiling futures-core v0.3.31
   Compiling litemap v0.7.4
   Compiling lock_api v0.4.12
   Compiling slab v0.4.9
   Compiling parking_lot_core v0.9.10
   Compiling futures-sink v0.3.31
   Compiling itoa v1.0.14
   Compiling futures-channel v0.3.31
   Compiling icu_locid_transform_data v1.5.0
   Compiling futures-io v0.3.31
   Compiling serde_json v1.0.133
   Compiling libc v0.2.168
   Compiling icu_properties_data v1.5.0
   Compiling unicode-xid v0.2.6
   Compiling futures-task v0.3.31
   Compiling ryu v1.0.18
   Compiling pin-utils v0.1.0
   Compiling percent-encoding v2.3.1
   Compiling const_format_proc_macros v0.2.34
   Compiling proc-macro-error-attr v1.0.4
   Compiling utf16_iter v1.0.5
   Compiling icu_normalizer_data v1.5.0
   Compiling hashbrown v0.15.2
   Compiling utf8_iter v1.0.4
   Compiling equivalent v1.0.1
   Compiling write16 v1.0.0
   Compiling indexmap v2.7.0
   Compiling proc-macro-error v1.0.4
   Compiling bytes v1.9.0
   Compiling unicode-segmentation v1.12.0
   Compiling fnv v1.0.7
   Compiling const_format v0.2.34
   Compiling convert_case v0.6.0
   Compiling form_urlencoded v1.2.1
   Compiling proc-macro-utils v0.10.0
   Compiling proc-macro-utils v0.8.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 scopeguard v1.2.0
   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 wasm-bindgen-macro-support v0.2.99
   Compiling ciborium-io v0.2.2
   Compiling camino v1.1.9
   Compiling anyhow v1.0.94
   Compiling ciborium-ll v0.2.2
   Compiling manyhow v0.10.4
   Compiling http v1.2.0
   Compiling tracing-core v0.1.33
   Compiling hashbrown v0.14.5
   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 zerovec v0.10.4
   Compiling icu_provider_macros v1.5.0
   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-macro v0.3.31
   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 icu_normalizer v1.5.0
   Compiling idna_adapter v1.2.0
   Compiling futures-executor v0.3.31
   Compiling pin-project-internal v1.1.7
   Compiling tracing-attributes v0.1.28
   Compiling futures v0.3.31
   Compiling idna v1.0.3
   Compiling quote-use-macros v0.8.4
   Compiling pin-project v1.1.7
   Compiling url v2.5.4
   Compiling quote-use v0.8.4
   Compiling serde_spanned v0.6.8
   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 winnow v0.6.20
   Compiling collection_literals v1.0.1
   Compiling attribute-derive-macro v0.9.2
   Compiling rstml v0.11.2
   Compiling toml_edit v0.22.22
   Compiling walkdir v2.5.0
   Compiling tracing v0.1.41
   Compiling serde-wasm-bindgen v0.6.5
   Compiling ciborium v0.2.2
   Compiling oco_ref v0.1.1
   Compiling serde_qs v0.12.0
   Compiling dashmap v5.5.3
   Compiling server_fn_macro_default v0.6.15
   Compiling derive-where v1.2.7
   Compiling parking_lot v0.12.3
   Compiling getrandom v0.2.15
   Compiling send_wrapper v0.6.0
   Compiling proc-macro-error-attr2 v2.0.0
   Compiling aho-corasick v1.1.3
   Compiling minimal-lexical v0.2.1
   Compiling rustc-hash v1.1.0
   Compiling self_cell v1.1.0
   Compiling utf8-width v0.1.7
   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 html-escape v0.2.13
   Compiling nom v7.1.3
   Compiling proc-macro-error2 v2.0.1
   Compiling uuid v1.11.0
   Compiling leptos_hot_reload v0.6.15
   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 pad-adapter v0.1.1
   Compiling lazy_static v1.5.0
   Compiling inventory v0.3.15
   Compiling drain_filter_polyfill v0.1.3
   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 base64 v0.13.1
   Compiling tower-service v0.3.3
   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_router v0.6.15
   Compiling leptos_meta 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 50.63s
[INFO]: ⬇️  Installing wasm-bindgen...
[INFO]: Optional field missing from Cargo.toml: 'description'. This is not necessary, but recommended
[INFO]: ✨   Done in 52.38s
[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 40ms
$ 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.51s - 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"
> │ > ]]
> │ > 
> │ > ── [ 361.97ms - 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"
> │ > ]]
> │ > 
> │ > ── [ 385.35ms - 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
> 
> ── [ 367.56ms - 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.37s - 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.51s - stdout ] ──────────────────────────────────────────────────────────
> │ Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha)
> │ 
> │ Thanks to the contributor! @xtuc
> │ Stand with Ukraine! https://standwithukraine.com.ua/
> │ 
> │ Parsing test.fsproj...
> │ Project and references (1 source files) parsed in 2353ms
> │ 
> │ 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.22s - stdout ] ─────────────────────────────────────────────────────────
> │ 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/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/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/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/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/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/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.
> │    Compiling syn v2.0.90
> │    Compiling byteorder v1.5.0
> │    Compiling linux-raw-sys v0.4.14
> │    Compiling getrandom v0.2.15
> │    Compiling rand_core v0.6.4
> │    Compiling num-traits v0.2.19
> │    Compiling once_cell v1.20.2
> │    Compiling libm v0.2.11
> │    Compiling rustix v0.38.42
> │    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 unarray v0.1.4
> │    Compiling memchr v2.7.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.16s
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### run release tests with output enabled
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> { cargo test --release -- --show-output } | Invoke-Block
> 
> ── [ 14.83s - stdout ] ─────────────────────────────────────────────────────────
> │ 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/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/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/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/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/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.
> │    Compiling bitflags v2.6.0
> │    Compiling zerocopy v0.7.35
> │    Compiling linux-raw-sys v0.4.14
> │    Compiling fastrand v2.3.0
> │    Compiling once_cell v1.20.2
> │    Compiling wait-timeout v0.2.0
> │    Compiling quick-error v1.2.3
> │    Compiling fnv v1.0.7
> │    Compiling bit-vec v0.6.3
> │    Compiling rustix v0.38.42
> │    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 memchr v2.7.4
> │    Compiling rand_chacha v0.3.1
> │    Compiling rand v0.8.5
> │    Compiling unarray v0.1.4
> │    Compiling lazy_static v1.5.0
> │    Compiling minimal-lexical v0.2.1
> │    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.70s
> │      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=StringLiteral("{^q{;A*oIN:tM/}Kf-")
> │ input=Integer(-783498312442272161)
> │ input=Operator("/")
> │ input=Integer(6656901008445763153)
> │ input=Integer(-3006170582180803873)
> │ input=Identifier("s1")
> │ input=StringLiteral("lUY:OB.Mo=/IMZ$Tq./{<F.PJ39=")
> │ input=Comment("4R|vM%;@0,")
> │ input=Comment("$$X$6V%%-N*")
> │ input=Identifier("w1Kdc6tx8GlWIg471yiNetTkcRU4Xeu")
> │ input=StringLiteral(".:>qO</?^lWD.bjX")
> │ input=Integer(-3801654648727455996)
> │ input=Comment("%E+t`$=URB,?J.:[fM?Q/:*d,/$&R[.Q")
> │ input=Operator(")")
> │ input=Identifier("w35wtHVx66wN03bFtDjG")
> │ input=Identifier("w0y3WVTZDdlV6txeykFEMLzMFK7p59")
> │ input=StringLiteral("`,f=KL5o&;O>H*kF/WG.'8e',ZL+='")
> │ input=Integer(1484173259892452089)
> │ input=Comment("}_*<\\0~N|sR_E8@@r`A;! \"Q9?Y`")
> │ input=Identifier("n99J4ps9c")
> │ input=Identifier("n281uDCG3e8v0nt121Nn8QXTkRR")
> │ input=StringLiteral(")p%`N?&<{,")
> │ input=Operator("-")
> │ input=Integer(-264600127641722069)
> │ input=StringLiteral("rh")
> │ input=StringLiteral("?Z'.v*Y/EcuU")
> │ input=Identifier("mLzuHWgqt8bM21F")
> │ input=Integer(-1953786740257329514)
> │ input=Comment("JW{i%w#pQlb'MM ")
> │ input=Comment("%%j#Dh$L7'=;wYC0^\"=%JF<{&ec@.`")
> │ input=StringLiteral("HCB8x_/B{[")
> │ input=Operator("(")
> │ input=Identifier("OnfnZVp5KNK3b4ROh4")
> │ input=Identifier("Odn3x0ZVaPBrKs5RY1T1C")
> │ input=Comment("Fq{z?&")
> │ input=Operator("(")
> │ input=Comment("=q:(")
> │ input=StringLiteral("s<*^yX&OmF$vS$7h.>")
> │ input=Comment("n<`q*IZ<n/h/N\"bq?d?Ju{6'")
> │ input=Comment("\"=B^B+p`V2*`zYt`\\,\\+l?*E4W2b&h.Y")
> │ input=Integer(-9026580337223446830)
> │ input=Identifier("D")
> │ input=Operator("-")
> │ input=Identifier("eP0A")
> │ input=Identifier("AJap8twD74mw")
> │ input=Operator("=")
> │ input=StringLiteral("'/I%nB:<, S{eIkM0%%3%/$")
> │ input=Integer(-7206074084960861920)
> │ input=StringLiteral("PRoy/.@0-<C/a")
> │ input=Identifier("MISQmnjJ2xHmz29lOEAa6A4FvueCS1")
> │ input=Comment("k.]]48sH\\X$ix")
> │ input=Comment("R_<9@v:wPV$ Kfw[z%F8/jni>GW7")
> │ input=Comment(":Sj.JrED,G | /`q7mP2BEM&?")
> │ input=Identifier("Hj7JTB18kEN1SKNVM1gAw3QKlPzxnk9pL")
> │ input=StringLiteral("_IAT&Wdadch{IorGCO'r<Es")
> │ input=Identifier("lvMqPiac9R9m2EB3")
> │ input=Identifier("Xr36Yh3p9r1K")
> │ input=StringLiteral("O]HJD^sjH!")
> │ input=Comment("'pzPA")
> │ input=Integer(-7802712747953158856)
> │ input=Comment("y05\"@)1,K|f")
> │ input=Comment("%:</kF0")
> │ input=Comment("Xe{ku")
> │ input=Identifier("i78mZ3Ac1BZPZ7Sl6SMB70IcuWLfBaF")
> │ input=Identifier("l6N95ZdWE7LsVQ6dQMCHEqqCI")
> │ input=Comment("-b&)e[r `]>m`")
> │ input=Identifier("OQuLY")
> │ input=StringLiteral("{")
> │ input=Operator("(")
> │ input=Integer(5548233779901595419)
> │ input=StringLiteral("j6Nw{i^bw+%,2:")
> │ input=Identifier("Q8vw")
> │ input=Integer(8845627017356029180)
> │ input=Integer(-937404015976027772)
> │ input=StringLiteral("g$Q0qZ:<Q.}$'M:`|*9H`aA]_VG/l/s")
> │ input=Identifier("NyaP1tnigOklcC5Es")
> │ input=Comment("$&[#\"i{2Q ")
> │ input=Identifier("OtM3DaDvN5N6iy2Zrts3kz66Lxi3")
> │ input=Comment("d+rzK")
> │ input=Identifier("BPm5zwbrpJ5vINEXWExHq7PabPSPn")
> │ input=Integer(-7401299599497781158)
> │ input=Operator("=")
> │ input=StringLiteral(";:R[<%`~)^Em&J|E`N`//&*W/s$")
> │ input=Comment("xo<'{\"")
> │ input=Integer(-417535586042745459)
> │ input=Integer(3774457177682950076)
> │ input=Comment("")
> │ input=Operator("/")
> │ input=StringLiteral("}{`&,o/(h.tX")
> │ input=Identifier("J1j")
> │ input=StringLiteral(";)")
> │ input=StringLiteral("}i<@K<=4cs':BQBv")
> │ input=Identifier("T2RN")
> │ input=Integer(-8026950628763238246)
> │ input=Comment("")
> │ input=Integer(1839320284795969634)
> │ input=Identifier("e82RemqgZXrMfkp3a7Lfx8tDeOgqzi3As")
> │ input=StringLiteral(":_'1yP!~$&$>`*2")
> │ input=Comment("`rtxt")
> │ input=Comment("{Pi")
> │ input=StringLiteral("APB`C#=0x.wdw{p")
> │ input=Integer(-3538823895023690303)
> │ input=Comment("y:13d`EZ&M<{?~'F&?/t:\"%{=5-y\"<")
> │ input=StringLiteral("[OW?x Z5`Wq=%H={JN}=&1D`3]F")
> │ input=Operator("*")
> │ input=StringLiteral("`]7{=&oe;sNn%}5:0.,hy:G=>5.YL")
> │ input=StringLiteral("]9/?c}`=)#ue")
> │ input=Comment("X$?0=")
> │ input=Comment("v-<S<\"\\YT")
> │ input=Identifier("z28Z1fPq4K4H4V")
> │ input=Operator("-")
> │ input=StringLiteral("")
> │ input=StringLiteral("{A(k'kL?/q|T:4")
> │ input=Comment("=-1d);9U_I 6`.%=F:)h@g=M<B")
> │ input=Operator(")")
> │ input=Operator("(")
> │ input=StringLiteral("92wWZ1pj{i{W0{&$")
> │ input=Comment("?<Po5{\"z<T<'Ew`@pm\\iA0|?d\\K")
> │ input=Comment("J\\*^=LIT(tI\"bW~mM:")
> │ input=Integer(-6944100891339678850)
> │ input=Operator(")")
> │ input=StringLiteral("<v2-$?e{&~S/0[_$:+Q")
> │ input=Identifier("Ol")
> │ input=Operator("(")
> │ input=Comment("@RQ\"`zV=")
> │ input=StringLiteral("x.')K{=%e*U^g:")
> │ input=Operator("/")
> │ input=StringLiteral("'5TN")
> │ input=Identifier("ie0pYO1vW7h645kNbIfPDmsXyzvu7U9D")
> │ input=Operator("-")
> │ input=Operator("=")
> │ input=Operator("+")
> │ input=Identifier("G25X5j40r2eCKLg4yEPMxsaHl18x4bzdb")
> │ input=Identifier("E1yBAZUBLCSxrTwTBHGm5cWav719")
> │ input=Integer(7842392086551509438)
> │ input=StringLiteral("")
> │ input=Identifier("ahmsxPQ4Ds0DbLfDENoyXmLK59")
> │ input=StringLiteral("nhfY")
> │ input=Identifier("XhrKe")
> │ input=Comment("$hPZ'';2Ysgnv")
> │ input=Operator("+")
> │ input=Identifier("A9o7")
> │ input=StringLiteral("&U*Fh.")
> │ input=Integer(5555137377653682191)
> │ input=StringLiteral("n$=G)$f%M/~?Rd")
> │ input=Operator("=")
> │ input=Integer(403936982257904102)
> │ input=Identifier("iisazcZhB5R29fU1UK2ZTE4rpRM2sf")
> │ input=StringLiteral("|Ss&j-8GpyGvF1V7`@FyN^{KY[")
> │ input=StringLiteral("O|%/')4os>f@?`.=J'2d-'%0TE.?")
> │ input=Operator("/")
> │ input=Identifier("Om8TQ6jYhBS0u5")
> │ input=Comment("O?pI?vN<Rk{/{'z$D%T.3w?2=")
> │ input=StringLiteral("@$ZT=YR9")
> │ input=Operator("+")
> │ input=Operator("(")
> │ input=Operator("+")
> │ input=Operator(")")
> │ input=Integer(-9017859850632012847)
> │ input=Operator("=")
> │ input=Comment("0tz %w$~=O}/q`Q-]TVe")
> │ input=Operator("+")
> │ input=Operator("(")
> │ input=StringLiteral("|J.s?%?`BJBl>ihX=cj(U76%")
> │ input=StringLiteral("z?prTEL_5v'{I`U")
> │ input=Identifier("nA80EL51lqW5k4aW")
> │ input=Identifier("IFS17s9jI")
> │ input=Integer(1036055419133102259)
> │ input=StringLiteral("C&6q^~{Sty@U/Cd=o9fSm|")
> │ input=Comment("ALl&")
> │ input=Operator("-")
> │ input=Integer(-7089178766501993029)
> │ input=Operator("*")
> │ input=StringLiteral("r{&gwPC6")
> │ input=StringLiteral("PM@CCu0R=Xd0iy*:f]h3WK*J")
> │ input=Identifier("C20GGldV9RSL3MopeJf7VCz56")
> │ input=Operator("(")
> │ input=Operator("(")
> │ input=Operator("*")
> │ input=Identifier("vJFqj2BDyWGqyF0Xm")
> │ input=Operator("(")
> │ input=Integer(-3133798926969914182)
> │ input=Comment("P\\tJqG:yaN]0`")
> │ input=StringLiteral("/n")
> │ input=Integer(-4943033530227650789)
> │ input=StringLiteral("<% xc$<$E$,Ax$~rqs;q")
> │ input=Comment("")
> │ input=Operator("*")
> │ input=Identifier("U")
> │ input=StringLiteral("$61(%.8%lH8@].*t<")
> │ input=Operator("=")
> │ input=StringLiteral("/")
> │ input=StringLiteral("=/2|ul[%z'oS9ovx`:&,2l$")
> │ input=Operator("=")
> │ input=StringLiteral("&nV= I{L`r.yvC*Z('=")
> │ input=Operator("=")
> │ input=Integer(6858368592611446591)
> │ input=Operator(")")
> │ input=Integer(-7476157701708945265)
> │ input=Operator(")")
> │ input=Comment("aA.} :,D\\I")
> │ input=Identifier("l19Uui8x4vNS0")
> │ input=Integer(-5685433002927856652)
> │ input=StringLiteral("e!722Ik<_hW2lo(M`e!h7!,?;m| .")
> │ input=Comment("e@")
> │ input=Comment("|HS?'?P =&`M\\)b&9h?}:`\\!\\=Y0{<\\")
> │ input=Comment("K]`N&F_9DA%QA~\\")
> │ input=Comment("P]fIoo")
> │ input=Operator("(")
> │ input=Identifier("M3wPiWicIJ4N6Pa")
> │ input=Integer(2849056086393693560)
> │ input=Identifier("Opjc9JfUfM44")
> │ input=Operator("+")
> │ input=StringLiteral("o13LHD> v(/Eb8rq=H$&!&:D")
> │ input=Identifier("pSCO4rUSzaBnEvhJf8lA0CF")
> │ input=Comment("oMOt`\"7@.m\\*.U`]\\u*@=")
> │ input=Operator("(")
> │ input=StringLiteral("%P")
> │ input=Integer(-7565699573165095762)
> │ input=StringLiteral("'U+%,9/XT%")
> │ input=Operator("=")
> │ input=Operator("-")
> │ input=Identifier("dNV5P4586l1dH697")
> │ input=Operator("*")
> │ input=Operator("/")
> │ input=Integer(8210267912921340675)
> │ input=Comment("!:\"qU\\'HqD\\-0{^?\"")
> │ input=Identifier("W9")
> │ input=Comment("=d$&9$")
> │ input=Identifier("l7ixH5p2DkZmytO76cVo9LY")
> │ input=StringLiteral("0A=F]Rz'K' :+h%c,? vHBI?")
> │ input=Identifier("LN7v9A300L91gYPBG2QB08sujiWDB")
> │ input=Identifier("Y")
> │ input=Comment("1#\"91;&%R&+vI*<H.{1N#/{/NI\"\"..%:")
> │ input=Operator("-")
> │ input=StringLiteral("s-' Wg`VN!<")
> │ input=StringLiteral("?%R .(<>Ge")
> │ input=Operator("(")
> │ input=Identifier("MKv0AgbCIvYXj8i8zrmlzFz6Q7Ya")
> │ input=Identifier("MWwoO3z28Xnst5q4czANosDDZBfZSC9z")
> │ input=Comment("&/CaOWA%n[$2]6=v/R==^;4h?=Y5=`")
> │ input=Operator("*")
> │ input=Comment("%l>7a[{O*")
> │ input=Identifier("DJLtsJXZ806T11nRfyUCj")
> │ input=Integer(-5551813085294007871)
> │ input=Identifier("l8cx")
> │ input=Comment("7`~(c{uo+9:\"")
> │ input=Integer(6019813581810744448)
> │ input=Integer(-7448440149538356722)
> │ input=Integer(-5847805533978286491)
> │ input=Identifier("PZTIvWIn4N8rN0uA1uITqyjEJiC1g")
> │ input=Integer(8856444247118404768)
> │ input=Operator("(")
> │ input=Operator("*")
> │ input=Integer(3327878944632248319)
> │ input=Comment("pYF_{=")
> │ 
> │ 
> │ 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.67ms - stdout ] ─────────────────────────────────────────────────────────
> │ app=test
> │ 
00:00:49 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 99486 }
00:00:49 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:50 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:50 v #9 !   return _pygments_highlight(
00:00:50 v #10 ! [NbConvertApp] Writing 377469 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.html
00:00:50 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 918 }
00:00:50 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 918 }
00:00:50 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:50 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:50 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:50 d #16 spiral.run / dib / { exit_code = 0; result_length = 100463 }
In [ ]:
{ pwsh ../apps/spiral/vscode/build.ps1 } | Invoke-Block
bun install v1.2.18 (0d4089ea)

+ @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 [1062.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.18 (0d4089ea)

+ @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 [534.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
    * Falco.Markup 1.1.1 -> 1.2.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: 13 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
----                        -------  ------   ------   ----    --------
android-tzdata              0.1.1    Removed  Removed  Normal  cfg(target_os = "android")
android_system_properties   0.1.5    Removed  Removed  Normal  cfg(target_os = "android")
autocfg                     1.4.0    Removed  Removed  Build   ---
bumpalo                     3.16.0   Removed  Removed  Normal  ---
cc                          1.2.4    Removed  Removed  Build   ---
cfg-if                      1.0.0    Removed  Removed  Normal  ---
chrono                      0.4.39   Removed  Removed  Normal  ---
core-foundation-sys         0.8.7    Removed  Removed  Normal  cfg(any(target_os = "macos", target_os = "ios"))
equivalent                  1.0.1    Removed  Removed  Normal  ---
hashbrown                   0.15.2   0.12.3   0.12.3   Normal  ---
iana-time-zone              0.1.61   Removed  Removed  Normal  cfg(unix)
iana-time-zone-haiku        0.1.2    Removed  Removed  Normal  cfg(target_os = "haiku")
indexmap                    2.7.0    1.9.3    1.9.3    Normal  ---
jobserver                   0.1.32   Removed  Removed  Normal  ---
js-sys                      0.3.76   Removed  Removed  Normal  cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
js-sys                      0.3.76   Removed  Removed  Normal  cfg(all(target_arch = "wasm32", target_os = "unknown"))
libc                        0.2.168  Removed  Removed  Normal  ---
libc                        0.2.168  Removed  Removed  Normal  cfg(unix)
libm                        0.2.11   Removed  Removed  Normal  ---
log                         0.4.22   Removed  Removed  Normal  ---
near-sandbox-utils          0.8.0    0.9.0    0.9.0    Build   ---
num-traits                  0.2.19   Removed  Removed  Normal  ---
once_cell                   1.20.2   Removed  Removed  Normal  ---
proc-macro2                 1.0.92   Removed  Removed  Normal  ---
quote                       1.0.37   Removed  Removed  Normal  ---
serde                       1.0.216  Removed  Removed  Normal  ---
serde_derive                1.0.216  Removed  Removed  Normal  ---
shlex                       1.3.0    Removed  Removed  Normal  ---
syn                         2.0.90   Removed  Removed  Normal  ---
unicode-ident               1.0.14   Removed  Removed  Normal  ---
wasm-bindgen                0.2.99   Removed  Removed  Normal  ---
wasm-bindgen                0.2.99   Removed  Removed  Normal  cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
wasm-bindgen                0.2.99   Removed  Removed  Normal  cfg(all(target_arch = "wasm32", target_os = "unknown"))
wasm-bindgen-backend        0.2.99   Removed  Removed  Normal  ---
wasm-bindgen-macro          0.2.99   Removed  Removed  Normal  ---
wasm-bindgen-macro-support  0.2.99   Removed  Removed  Normal  ---
wasm-bindgen-shared         0.2.99   Removed  Removed  Normal  ---
windows-core                0.52.0   Removed  Removed  Normal  cfg(target_os = "windows")
windows-targets             0.52.6   Removed  Removed  Normal  ---
windows-targets             0.52.6   Removed  Removed  Normal  cfg(windows)
windows_aarch64_gnullvm     0.52.6   Removed  Removed  Normal  aarch64-pc-windows-gnullvm
windows_aarch64_msvc        0.52.6   Removed  Removed  Normal  cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib)))
windows_i686_gnu            0.52.6   Removed  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  Removed  Normal  i686-pc-windows-gnullvm
windows_i686_msvc           0.52.6   Removed  Removed  Normal  cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib)))
windows_x86_64_gnu          0.52.6   Removed  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  Removed  Normal  x86_64-pc-windows-gnullvm
windows_x86_64_msvc         0.52.6   Removed  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/sha2-0.11.0-rc.0/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 `sha2 v0.11.0-rc.0`
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/sha2-0.11.0-rc.0/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 `sha2 v0.11.0-rc.0`
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/sha2-0.11.0-rc.0/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-07-03
 @types/chrome      ~0.0.268  →                 ~0.0.329
 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.6
 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