Files
rose-ash/shared/static/wasm/sx/router.sxbc
giles 59ac51a8ba
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 46s
kernel+bundle: fix nil-bytecode .sxbc (compile-blob serializer dropped Integer)
Every .sxbc shipped with `:bytecode (nil nil ...)` and `:arity nil`, so the WASM
kernel's vm.sx hit "VM: unknown opcode 0" on every module and fell back to .sx
source (slower, noisy console). Root cause: `raw_serialize` in the `compile-blob`
command (sx_server.ml) handles `Number` but not `Integer`, and bytecode opcodes +
arity/upvalue-count are `Integer`s — so they fell through to the `_ -> "nil"`
catch-all and serialized as nil. Same class of bug as the value_to_js Integer gap
(689dae7d). It went unnoticed because source-fallback masks it. Add the Integer
case and regenerate: the web stack now loads entirely from bytecode (0 unknown-
opcode warnings, 0 source fallbacks), boost + SPA unchanged. compiler.sx in the
bundle was also stale — re-synced to the canonical lib/compiler.sx.

Verified: native host conformance 271/271; chromium boots with 0 unknown-opcode
warnings + 0 source-fallback loads; spa-check still passes (boost 6/6, fragment
swap). Prereq for content-addressing the assets (caching real bytecode, not nil).
2026-06-29 13:17:20 +00:00

4 lines
14 KiB
Plaintext

(sxbc 1 "1943df0157712c44"
(code
:constants ("split-path-segments" {:upvalue-count 0 :arity 1 :constants ("/" "starts-with?" 1 "slice" "empty?" "ends-with?" 0 "list" "split") :bytecode (16 0 1 0 0 52 1 0 2 33 12 0 16 0 1 2 0 52 3 0 2 32 2 0 16 0 17 1 16 1 52 4 0 1 167 6 33 10 0 5 16 1 1 0 0 52 5 0 2 33 19 0 16 1 1 6 0 16 1 168 1 2 0 161 52 3 0 3 32 2 0 16 1 17 2 16 2 52 4 0 1 33 7 0 52 7 0 0 32 9 0 16 2 1 0 0 52 8 0 2 50)} "make-route-segment" {:upvalue-count 0 :arity 1 :constants ("<" "starts-with?" ">" "ends-with?" 1 "slice" "type" "param" "dict-set!" "value" "literal") :bytecode (16 0 1 0 0 52 1 0 2 6 33 10 0 5 16 0 1 2 0 52 3 0 2 33 53 0 16 0 1 4 0 16 0 168 1 4 0 161 52 5 0 3 17 1 65 0 0 17 2 16 2 1 6 0 1 7 0 52 8 0 3 5 16 2 1 9 0 16 1 52 8 0 3 5 16 2 32 32 0 65 0 0 17 1 16 1 1 6 0 1 10 0 52 8 0 3 5 16 1 1 9 0 16 0 52 8 0 3 5 16 1 50)} "parse-route-pattern" {:upvalue-count 0 :arity 1 :constants ("split-path-segments" "make-route-segment" "map") :bytecode (20 0 0 16 0 48 1 17 1 20 1 0 16 1 52 2 0 2 50)} "match-route-segments" {:upvalue-count 0 :arity 2 :constants ({:upvalue-count 3 :arity 2 :constants ("nth" "type" "get" "literal" "value" "param" "dict-set!") :bytecode (18 0 33 91 0 18 1 16 0 52 0 0 2 17 2 16 1 1 1 0 52 2 0 2 17 3 16 3 1 3 0 164 33 26 0 16 2 16 1 1 4 0 52 2 0 2 164 167 33 6 0 4 19 0 32 1 0 2 32 32 0 16 3 1 5 0 164 33 20 0 18 2 16 1 1 4 0 52 2 0 2 16 2 52 6 0 3 32 3 0 4 19 0 32 1 0 2 50)} "for-each-indexed") :bytecode (16 0 168 16 1 168 164 167 33 4 0 2 32 35 0 65 0 0 17 2 3 17 3 51 0 0 1 3 1 0 1 2 16 1 52 1 0 2 5 16 3 33 5 0 16 2 32 1 0 2 50)} "match-route" {:upvalue-count 0 :arity 2 :constants ("split-path-segments" "parse-route-pattern" "match-route-segments") :bytecode (20 0 0 16 0 48 1 17 2 20 1 0 16 1 48 1 17 3 20 2 0 16 2 16 3 49 2 50)} "find-matching-route" {:upvalue-count 0 :arity 2 :constants ("/(" "index-of" 0 "sx-url-to-path" "slice" "starts-with?" "split-path-segments" {:upvalue-count 2 :arity 1 :constants ("nil?" "match-route-segments" "parsed" "get" "merge" "params" "dict-set!") :bytecode (18 0 52 0 0 1 33 62 0 20 1 0 18 1 16 0 1 2 0 52 3 0 2 48 2 17 1 16 1 52 0 0 1 167 33 30 0 16 0 65 0 0 52 4 0 2 17 2 16 2 1 5 0 16 1 52 6 0 3 5 16 2 19 0 32 1 0 2 32 1 0 2 50)} "for-each") :bytecode (16 0 1 0 0 52 1 0 2 17 2 16 2 1 2 0 166 33 26 0 20 3 0 16 0 16 2 16 0 168 52 4 0 3 48 1 6 34 3 0 5 16 0 32 31 0 16 0 1 0 0 52 5 0 2 33 17 0 20 3 0 16 0 48 1 6 34 3 0 5 16 0 32 2 0 16 0 17 2 20 6 0 16 2 48 1 17 3 2 17 4 51 7 0 1 4 1 3 16 1 52 8 0 2 5 16 4 50)} "_fn-to-segment" {:upvalue-count 0 :arity 1 :constants ("doc" "=" "docs" "spec" "specs" "bootstrapper" "bootstrappers" "test" "testing" "example" "examples" "protocol" "protocols" "essay" "essays" "plan" "plans" "reference-detail" "reference") :bytecode (16 0 6 1 0 0 52 1 0 2 33 7 0 5 1 2 0 32 147 0 6 1 3 0 52 1 0 2 33 7 0 5 1 4 0 32 129 0 6 1 5 0 52 1 0 2 33 7 0 5 1 6 0 32 111 0 6 1 7 0 52 1 0 2 33 7 0 5 1 8 0 32 93 0 6 1 9 0 52 1 0 2 33 7 0 5 1 10 0 32 75 0 6 1 11 0 52 1 0 2 33 7 0 5 1 12 0 32 57 0 6 1 13 0 52 1 0 2 33 7 0 5 1 14 0 32 39 0 6 1 15 0 52 1 0 2 33 7 0 5 1 16 0 32 21 0 6 1 17 0 52 1 0 2 33 7 0 5 1 18 0 32 3 0 5 16 0 50)} "sx-url-to-path" {:upvalue-count 0 :arity 1 :constants ("/(" "starts-with?" ")" "ends-with?" 2 1 "slice" "." "/" "replace" "(" "" {:upvalue-count 0 :arity 1 :constants ("empty?") :bytecode (16 0 52 0 0 1 167 50)} "split" "filter" "_fn-to-segment" "map" "join" "str") :bytecode (16 0 1 0 0 52 1 0 2 6 33 10 0 5 16 0 1 2 0 52 3 0 2 167 33 4 0 2 32 93 0 16 0 1 4 0 16 0 168 1 5 0 161 52 6 0 3 17 1 16 1 1 7 0 1 8 0 52 9 0 3 1 10 0 1 11 0 52 9 0 3 1 2 0 1 11 0 52 9 0 3 17 2 51 12 0 16 2 1 8 0 52 13 0 2 52 14 0 2 17 3 1 8 0 1 8 0 20 15 0 16 3 52 16 0 2 52 17 0 2 52 18 0 2 50)} "_count-leading-dots" {:upvalue-count 0 :arity 1 :constants ("empty?" 0 "." "starts-with?" 1 "_count-leading-dots" "slice") :bytecode (16 0 52 0 0 1 33 6 0 1 1 0 32 36 0 16 0 1 2 0 52 3 0 2 33 21 0 1 4 0 20 5 0 16 0 1 4 0 52 6 0 2 48 1 160 32 3 0 1 1 0 50)} "_strip-trailing-close" {:upvalue-count 0 :arity 1 :constants (")" "ends-with?" "_strip-trailing-close" 0 1 "slice") :bytecode (16 0 1 0 0 52 1 0 2 33 24 0 20 2 0 16 0 1 3 0 16 0 168 1 4 0 161 52 5 0 3 49 1 32 2 0 16 0 50)} "_index-of-safe" {:upvalue-count 0 :arity 2 :constants ("index-of" "nil?" 0) :bytecode (16 0 16 1 52 0 0 2 17 2 16 2 52 1 0 1 6 34 7 0 5 16 2 1 2 0 165 33 4 0 2 32 2 0 16 2 50)} "_last-index-of" {:upvalue-count 0 :arity 2 :constants ("_index-of-safe" "nil?" "_last-index-of" 1 "slice") :bytecode (20 0 0 16 0 16 1 48 2 17 2 16 2 52 1 0 1 33 4 0 2 32 44 0 20 2 0 16 0 16 2 1 3 0 160 52 4 0 2 16 1 48 2 17 3 16 3 52 1 0 1 33 5 0 16 2 32 9 0 16 2 1 3 0 160 16 3 160 50)} "_pop-sx-url-level" {:upvalue-count 0 :arity 1 :constants ("_strip-trailing-close" 1 "<=" "/" "_last-index-of" ".(" "nil?" 0 "slice" "str") :bytecode (20 0 0 16 0 48 1 17 1 16 0 168 20 0 0 16 0 48 1 168 161 17 2 16 2 1 1 0 52 2 0 2 33 6 0 1 3 0 32 58 0 20 4 0 16 1 1 5 0 48 2 17 3 16 3 52 6 0 1 33 6 0 1 3 0 32 31 0 16 1 1 7 0 16 3 52 8 0 3 16 0 16 0 168 16 2 1 1 0 161 161 52 8 0 2 52 9 0 2 50)} "_pop-sx-url-levels" {:upvalue-count 0 :arity 2 :constants (0 "<=" "_pop-sx-url-levels" "_pop-sx-url-level" 1) :bytecode (16 1 1 0 0 52 1 0 2 33 5 0 16 0 32 18 0 20 2 0 20 3 0 16 0 48 1 16 1 1 4 0 161 49 2 50)} "_split-pos-kw" {:upvalue-count 0 :arity 4 :constants (">=" "positional" "." "join" "keywords" "nth" ":" "starts-with?" 1 "" "_split-pos-kw" 2 "list" "append") :bytecode (16 1 16 0 168 52 0 0 2 33 23 0 1 1 0 1 2 0 16 2 52 3 0 2 1 4 0 16 3 65 2 0 32 118 0 16 0 16 1 52 5 0 2 17 4 16 4 1 6 0 52 7 0 2 33 69 0 16 1 1 8 0 160 16 0 168 165 33 15 0 16 0 16 1 1 8 0 160 52 5 0 2 32 3 0 1 9 0 17 5 20 10 0 16 0 16 1 1 11 0 160 16 2 16 3 16 4 16 5 52 12 0 2 52 12 0 1 52 13 0 2 49 4 32 27 0 20 10 0 16 0 16 1 1 8 0 160 16 2 16 4 52 12 0 1 52 13 0 2 16 3 49 4 50)} "_parse-relative-body" {:upvalue-count 0 :arity 1 :constants ("empty?" "positional" "" "keywords" "list" "_split-pos-kw" "." "split" 0) :bytecode (16 0 52 0 0 1 33 19 0 1 1 0 1 2 0 1 3 0 52 4 0 0 65 2 0 32 25 0 20 5 0 16 0 1 6 0 52 7 0 2 1 8 0 52 4 0 0 52 4 0 0 49 4 50)} "_extract-innermost" {:upvalue-count 0 :arity 1 :constants ("_strip-trailing-close" "slice" "_last-index-of" ".(" "nil?" "before" "/(" "content" 2 "suffix" 0) :bytecode (20 0 0 16 0 48 1 17 1 16 0 20 0 0 16 0 48 1 168 52 1 0 2 17 2 20 2 0 16 1 1 3 0 48 2 17 3 16 3 52 4 0 1 33 29 0 1 5 0 1 6 0 1 7 0 16 1 1 8 0 52 1 0 2 1 9 0 16 2 65 3 0 32 41 0 1 5 0 16 1 1 10 0 16 3 1 8 0 160 52 1 0 3 1 7 0 16 1 16 3 1 8 0 160 52 1 0 2 1 9 0 16 2 65 3 0 50)} "_find-kw-in-tokens" {:upvalue-count 0 :arity 3 :constants (">=" "nth" 1 "_find-kw-in-tokens") :bytecode (16 1 16 0 168 52 0 0 2 33 4 0 2 32 59 0 16 0 16 1 52 1 0 2 16 2 164 6 33 11 0 5 16 1 1 2 0 160 16 0 168 165 33 15 0 16 0 16 1 1 2 0 160 52 1 0 2 32 15 0 20 3 0 16 0 16 1 1 2 0 160 16 2 49 3 50)} "_find-keyword-value" {:upvalue-count 0 :arity 2 :constants ("_find-kw-in-tokens" "." "split" 0) :bytecode (20 0 0 16 0 1 1 0 52 2 0 2 1 3 0 16 1 49 3 50)} "_replace-kw-in-tokens" {:upvalue-count 0 :arity 4 :constants (">=" "list" "nth" 1 "_replace-kw-in-tokens" 2 "append") :bytecode (16 1 16 0 168 52 0 0 2 33 7 0 52 1 0 0 32 87 0 16 0 16 1 52 2 0 2 16 2 164 6 33 11 0 5 16 1 1 3 0 160 16 0 168 165 33 32 0 16 2 16 3 52 1 0 2 20 4 0 16 0 16 1 1 5 0 160 16 2 16 3 48 4 52 6 0 2 32 26 0 16 0 16 1 52 2 0 2 20 4 0 16 0 16 1 1 3 0 160 16 2 16 3 48 4 172 50)} "_set-keyword-in-content" {:upvalue-count 0 :arity 3 :constants ("_find-keyword-value" "nil?" "." "str" "_replace-kw-in-tokens" "split" 0 "join") :bytecode (20 0 0 16 0 16 1 48 2 17 3 16 3 52 1 0 1 33 19 0 16 0 1 2 0 16 1 1 2 0 16 2 52 3 0 5 32 28 0 1 2 0 20 4 0 16 0 1 2 0 52 5 0 2 1 6 0 16 1 16 2 48 4 52 7 0 2 50)} "_is-delta-value?" {:upvalue-count 0 :arity 1 :constants ("empty?" 1 "+" "starts-with?" "-") :bytecode (16 0 52 0 0 1 167 6 33 36 0 5 16 0 168 1 1 0 166 6 33 24 0 5 16 0 1 2 0 52 3 0 2 6 34 10 0 5 16 0 1 4 0 52 3 0 2 50)} "_apply-delta" {:upvalue-count 0 :arity 2 :constants ("parse-int" "nil?" "str") :bytecode (16 0 2 52 0 0 2 17 2 16 1 2 52 0 0 2 17 3 16 2 52 1 0 1 6 34 7 0 5 16 3 52 1 0 1 33 5 0 16 1 32 9 0 16 2 16 3 160 52 2 0 1 50)} "_apply-kw-pairs" {:upvalue-count 0 :arity 2 :constants ("empty?" 1 "nth" "_is-delta-value?" "_find-keyword-value" "nil?" "_apply-delta" "_apply-kw-pairs" "_set-keyword-in-content") :bytecode (16 1 52 0 0 1 33 5 0 16 0 32 91 0 16 1 169 17 2 16 2 169 17 3 16 2 1 1 0 52 2 0 2 17 4 20 3 0 16 4 48 1 33 37 0 20 4 0 16 0 16 3 48 2 17 5 16 5 52 5 0 1 33 5 0 16 4 32 9 0 20 6 0 16 5 16 4 48 2 32 2 0 16 4 17 5 20 7 0 20 8 0 16 0 16 3 16 5 48 3 16 1 170 49 2 50)} "_apply-keywords-to-url" {:upvalue-count 0 :arity 2 :constants ("empty?" "_extract-innermost" "_apply-kw-pairs" "content" "get" "before" "suffix" "str") :bytecode (16 1 52 0 0 1 33 5 0 16 0 32 51 0 20 1 0 16 0 48 1 17 2 20 2 0 16 2 1 3 0 52 4 0 2 16 1 48 2 17 3 16 2 1 5 0 52 4 0 2 16 3 16 2 1 6 0 52 4 0 2 52 7 0 3 50)} "_normalize-relative" {:upvalue-count 0 :arity 1 :constants ("(" "starts-with?" ")" "str") :bytecode (16 0 1 0 0 52 1 0 2 33 5 0 16 0 32 12 0 1 0 0 16 0 1 2 0 52 3 0 3 50)} "resolve-relative-url" {:upvalue-count 0 :arity 2 :constants ("_normalize-relative" 1 "slice" "_count-leading-dots" 0 "_parse-relative-body" "positional" "get" "keywords" "empty?" "_strip-trailing-close" "." "str" "_pop-sx-url-levels" "/" "/(" ")" ".(" "_apply-keywords-to-url") :bytecode (20 0 0 16 1 48 1 17 2 16 2 1 1 0 16 2 168 1 1 0 161 52 2 0 3 17 3 20 3 0 16 3 48 1 17 4 16 3 20 3 0 16 3 48 1 52 2 0 2 17 5 16 4 1 4 0 164 33 5 0 16 0 32 200 0 20 5 0 16 5 48 1 17 6 16 6 1 6 0 52 7 0 2 17 7 16 6 1 8 0 52 7 0 2 17 8 16 4 1 1 0 164 33 55 0 16 7 52 9 0 1 33 5 0 16 0 32 38 0 20 10 0 16 0 48 1 17 9 16 0 20 10 0 16 0 48 1 168 52 2 0 2 17 10 16 9 1 11 0 16 7 16 10 52 12 0 4 32 94 0 20 13 0 16 0 16 4 1 1 0 161 48 2 17 9 16 7 52 9 0 1 33 5 0 16 9 32 65 0 16 9 1 14 0 164 33 15 0 1 15 0 16 7 1 16 0 52 12 0 3 32 41 0 20 10 0 16 9 48 1 17 10 16 9 20 10 0 16 9 48 1 168 52 2 0 2 17 11 16 10 1 17 0 16 7 1 16 0 16 11 52 12 0 5 17 9 20 18 0 16 9 16 8 49 2 50)} "relative-sx-url?" {:upvalue-count 0 :arity 1 :constants ("(" "starts-with?" "/(" ".") :bytecode (16 0 1 0 0 52 1 0 2 6 33 11 0 5 16 0 1 2 0 52 1 0 2 167 6 34 10 0 5 16 0 1 3 0 52 1 0 2 50)} "_url-special-forms" {:upvalue-count 0 :arity 0 :constants ("!source" "!inspect" "!diff" "!search" "!raw" "!json" "list") :bytecode (1 0 0 1 1 0 1 2 0 1 3 0 1 4 0 1 5 0 52 6 0 6 50)} "url-special-form?" {:upvalue-count 0 :arity 1 :constants ("!" "starts-with?" "_url-special-forms" "contains?") :bytecode (16 0 1 0 0 52 1 0 2 6 33 12 0 5 20 2 0 48 0 16 0 52 3 0 2 50)} "parse-sx-url" {:upvalue-count 0 :arity 1 :constants ("/" "raw" "type" "home" "relative-sx-url?" "relative" "/(!" "starts-with?" ")" "ends-with?" 2 1 "slice" "_index-of-safe" "." "(" "nil?" "min" 0 "special-form" "inner" "form" "/(~" "direct-component" "name" "/(" "absolute" "path") :bytecode (16 0 1 0 0 164 33 17 0 1 1 0 16 0 1 2 0 1 3 0 65 2 0 32 104 1 20 4 0 16 0 48 1 33 17 0 1 1 0 16 0 1 2 0 1 5 0 65 2 0 32 77 1 16 0 1 6 0 52 7 0 2 6 33 10 0 5 16 0 1 8 0 52 9 0 2 33 184 0 16 0 1 10 0 16 0 168 1 11 0 161 52 12 0 3 17 1 20 13 0 16 1 1 14 0 48 2 17 2 20 13 0 16 1 1 15 0 48 2 17 3 16 2 52 16 0 1 6 33 7 0 5 16 3 52 16 0 1 33 6 0 16 1 168 32 36 0 16 2 52 16 0 1 33 5 0 16 3 32 22 0 16 3 52 16 0 1 33 5 0 16 2 32 8 0 16 2 16 3 52 17 0 2 17 4 16 1 1 18 0 16 4 52 12 0 3 17 5 16 1 16 4 52 12 0 2 17 6 16 6 1 14 0 52 7 0 2 33 12 0 16 6 1 11 0 52 12 0 2 32 2 0 16 6 17 7 1 1 0 16 0 1 2 0 1 19 0 1 20 0 16 7 1 21 0 16 5 65 4 0 32 123 0 16 0 1 22 0 52 7 0 2 6 33 10 0 5 16 0 1 8 0 52 9 0 2 33 40 0 16 0 1 10 0 16 0 168 1 11 0 161 52 12 0 3 17 1 1 1 0 16 0 1 2 0 1 23 0 1 24 0 16 1 65 3 0 32 57 0 16 0 1 25 0 52 7 0 2 6 33 10 0 5 16 0 1 8 0 52 9 0 2 33 17 0 1 1 0 16 0 1 2 0 1 26 0 65 2 0 32 14 0 1 1 0 16 0 1 2 0 1 27 0 65 2 0 50)} "url-special-form-name" {:upvalue-count 0 :arity 1 :constants ("parse-sx-url" "type" "get" "special-form" "form") :bytecode (20 0 0 16 0 48 1 17 1 16 1 1 1 0 52 2 0 2 1 3 0 164 33 12 0 16 1 1 4 0 52 2 0 2 32 1 0 2 50)} "url-special-form-inner" {:upvalue-count 0 :arity 1 :constants ("parse-sx-url" "type" "get" "special-form" "inner") :bytecode (20 0 0 16 0 48 1 17 1 16 1 1 1 0 52 2 0 2 1 3 0 164 33 12 0 16 1 1 4 0 52 2 0 2 32 1 0 2 50)} "url-to-expr" {:upvalue-count 0 :arity 1 :constants ("/" "empty?" "list" "starts-with?" 1 "slice" "." " " "replace" "sx-parse") :bytecode (16 0 1 0 0 164 6 34 7 0 5 16 0 52 1 0 1 33 7 0 52 2 0 0 32 70 0 16 0 1 0 0 52 3 0 2 33 12 0 16 0 1 4 0 52 5 0 2 32 2 0 16 0 17 1 16 1 1 6 0 1 7 0 52 8 0 3 17 2 20 9 0 16 2 48 1 17 3 16 3 52 1 0 1 33 7 0 52 2 0 0 32 3 0 16 3 169 50)} "auto-quote-unknowns" {:upvalue-count 0 :arity 2 :constants ("list?" "empty?" {:upvalue-count 1 :arity 1 :constants ("list?" "auto-quote-unknowns" "type-of" "symbol" "symbol-name" "env-has?" ":" "starts-with?" "~" "!") :bytecode (16 0 52 0 0 1 33 12 0 20 1 0 16 0 18 0 49 2 32 86 0 16 0 52 2 0 1 1 3 0 164 33 71 0 16 0 52 4 0 1 17 1 18 0 16 1 52 5 0 2 6 34 38 0 5 16 1 1 6 0 52 7 0 2 6 34 24 0 5 16 1 1 8 0 52 7 0 2 6 34 10 0 5 16 1 1 9 0 52 7 0 2 33 5 0 16 0 32 2 0 16 1 32 2 0 16 0 50)} "map") :bytecode (16 0 52 0 0 1 167 33 5 0 16 0 32 30 0 16 0 52 1 0 1 33 5 0 16 0 32 16 0 16 0 169 51 2 0 1 1 16 0 170 52 3 0 2 172 50)} "prepare-url-expr" {:upvalue-count 0 :arity 2 :constants ("url-to-expr" "empty?" "auto-quote-unknowns") :bytecode (20 0 0 16 0 48 1 17 2 16 2 52 1 0 1 33 5 0 16 2 32 9 0 20 2 0 16 2 16 1 49 2 50)} {:library (web router) :op "import"}) :bytecode (51 1 0 128 0 0 5 51 3 0 128 2 0 5 51 5 0 128 4 0 5 51 7 0 128 6 0 5 51 9 0 128 8 0 5 51 11 0 128 10 0 5 51 13 0 128 12 0 5 51 15 0 128 14 0 5 51 17 0 128 16 0 5 51 19 0 128 18 0 5 51 21 0 128 20 0 5 51 23 0 128 22 0 5 51 25 0 128 24 0 5 51 27 0 128 26 0 5 51 29 0 128 28 0 5 51 31 0 128 30 0 5 51 33 0 128 32 0 5 51 35 0 128 34 0 5 51 37 0 128 36 0 5 51 39 0 128 38 0 5 51 41 0 128 40 0 5 51 43 0 128 42 0 5 51 45 0 128 44 0 5 51 47 0 128 46 0 5 51 49 0 128 48 0 5 51 51 0 128 50 0 5 51 53 0 128 52 0 5 51 55 0 128 54 0 5 51 57 0 128 56 0 5 51 59 0 128 58 0 5 51 61 0 128 60 0 5 51 63 0 128 62 0 5 51 65 0 128 64 0 5 51 67 0 128 66 0 5 51 69 0 128 68 0 5 51 71 0 128 70 0 5 1 72 0 112 50)))