vibe

Build log

nerves_system_qemu_aarch64

vibe 0.2.4 · fail · run vibe-0.2.4-1791151171447
1419 of 1419 lines
1Resolving Hex dependencies...2Resolution completed in 0.771s3Unchanged:4  abacus 2.2.05  abnf_parsec 2.1.06  boxart 0.3.37  castore 1.0.218  cc_precompiler 0.1.119  circular_buffer 1.1.010  cowboy 2.19.011  cowboy_telemetry 0.4.012  cowlib 2.20.0 VULNERABLE!13    EEF-CVE-2026-43966 (MEDIUM)14    aka: CVE-2026-43966, GHSA-w4f7-4cxr-rv3c15    HTTP Response Splitting via Non-VCHAR Bytes in cow_http_struct_hd:escape_string/216    https://osv.dev/vulnerability/EEF-CVE-2026-439661718    EEF-CVE-2026-43969 (LOW)19    aka: CVE-2026-43969, GHSA-g2wm-735q-3f5620    Cookie Request Header Injection via Unvalidated Encoder in cow_cookie:cookie/121    https://osv.dev/vulnerability/EEF-CVE-2026-4396922  cringe 0.2.023  crontab 1.2.024  db_connection 2.10.225  decimal 3.1.126  dotenvy 1.2.127  ecto 3.14.228  ecto_sql 3.14.029  ecto_sqlite3 0.25.030  elixir_make 0.10.031  ex_ast 0.12.1032  ex_gram 0.67.033  exqlite 0.42.034  file_system 1.1.135  finch 0.22.036  floki 0.38.437  fsmx 0.5.038  fuse 2.5.039  ghostty 0.4.940  glob_ex 0.1.1241  hex_solver 0.3.042  hpax 1.1.043  iconify 0.3.144  idna 7.1.045  interactive_cmd 0.1.446  jason 1.4.547  jido 2.3.348  jido_action 2.3.049  jido_ai 2.3.050  jido_signal 2.3.151  json_codec 0.3.152  json_spec 1.2.053  jsv 0.26.054  libgraph 0.16.055  llm_db 2026.9.856  lua 0.4.057  luerl 1.5.158  mdex 0.14.259  mdex_native 0.2.1160  mime 2.0.761  mint 1.11.062  mint_web_socket 1.0.663  multigraph 0.16.1-mg.564  nerves 2.0.0-pre.265  nerves_discovery 0.1.566  nerves_logging 0.2.467  nerves_runtime 0.13.1368  nerves_system_bbb 2.30.269  nerves_system_br 1.34.470  nerves_system_mangopi_mq_pro 0.17.271  nerves_system_qemu_aarch64 0.4.272  nerves_system_rpi0 2.1.273  nerves_system_rpi4 2.1.274  nerves_system_rpi5 2.1.275  nerves_system_trellis 0.5.076  nerves_system_x86_64 1.34.277  nerves_toolchain_aarch64_nerves_linux_gnu 15.3.178  nerves_toolchain_armv6_nerves_linux_gnueabihf 15.3.179  nerves_toolchain_armv7_nerves_linux_gnueabihf 15.3.180  nerves_toolchain_riscv64_nerves_linux_gnu 15.3.181  nerves_toolchain_x86_64_nerves_linux_musl 15.3.182  nerves_uevent 0.1.783  nimble_options 1.1.184  nimble_ownership 1.0.285  nimble_parsec 1.4.286  nimble_pool 1.1.087  npm 0.7.688  npm_semver 0.1.089  opentelemetry 1.7.090  opentelemetry_api 1.5.091  opentelemetry_telemetry 1.1.292  oxc 0.17.893  oxide_ex 0.2.294  phoenix 1.8.1595  phoenix_html 4.3.096  phoenix_iconify 0.3.797  phoenix_live_view 1.2.1298  phoenix_pubsub 2.3.099  phoenix_streamdown 1.0.0-beta.4100  phoenix_template 1.1.0101  plug 1.20.3102  plug_cowboy 2.9.0103  plug_crypto 2.2.0104  poolboy 1.5.2105  private 0.1.2106  property_table 0.3.4107  quickbeam 0.10.20108  ranch 2.3.0109  reach 2.6.1110  req 0.5.18 VULNERABLE!111    EEF-CVE-2026-49755 (HIGH)112    aka: CVE-2026-49755, GHSA-655f-mp8p-96gv113    Decompression bomb DoS in Req via auto-decoded archive and compressed response bodies114    https://osv.dev/vulnerability/EEF-CVE-2026-49755115116    EEF-CVE-2026-49756 (LOW)117    aka: CVE-2026-49756, GHSA-px9f-whj3-246m118    Multipart form-data header injection in Req via unescaped name/filename/content_type119    https://osv.dev/vulnerability/EEF-CVE-2026-49756120  req_llm 1.25.0121  ring_logger 0.11.7122  rustler_precompiled 0.10.0123  server_sent_events 1.1.0124  sourceror 1.12.3125  splode 0.3.2126  tablet 0.3.3127  telemetry 1.4.2128  telemetry_metrics 1.2.0129  texture 2.0.0130  time_zone_info 0.8.0131  toml 0.7.0132  toolshed 0.5.0133  ttycast 0.1.0134  uboot_env 1.0.2135  uniq 0.6.3136  vibe 0.2.4137  vize 0.13.1138  volt 0.14.6139  websock 0.5.3140  websock_adapter 0.6.0141  websockex 0.5.1142  yamerl 0.10.0143  yaml_elixir 2.12.2144  zigler_precompiled 0.1.6145  zoi 0.18.11146* Getting vibe (Hex package)147* Getting nerves (Hex package)148* Getting ring_logger (Hex package)149* Getting toolshed (Hex package)150* Getting nerves_runtime (Hex package)151* Getting nerves_system_bbb (Hex package)152* Getting nerves_system_mangopi_mq_pro (Hex package)153* Getting nerves_system_qemu_aarch64 (Hex package)154* Getting nerves_system_rpi0 (Hex package)155* Getting nerves_system_rpi4 (Hex package)156* Getting nerves_system_rpi5 (Hex package)157* Getting nerves_system_trellis (Hex package)158* Getting nerves_system_x86_64 (Hex package)159* Getting nerves_system_br (Hex package)160* Getting nerves_toolchain_x86_64_nerves_linux_musl (Hex package)161* Getting nerves_toolchain_armv7_nerves_linux_gnueabihf (Hex package)162* Getting nerves_toolchain_aarch64_nerves_linux_gnu (Hex package)163* Getting nerves_toolchain_armv6_nerves_linux_gnueabihf (Hex package)164* Getting nerves_toolchain_riscv64_nerves_linux_gnu (Hex package)165* Getting nerves_logging (Hex package)166* Getting nerves_uevent (Hex package)167* Getting uboot_env (Hex package)168* Getting elixir_make (Hex package)169* Getting property_table (Hex package)170* Getting circular_buffer (Hex package)171* Getting interactive_cmd (Hex package)172* Getting nerves_discovery (Hex package)173* Getting tablet (Hex package)174* Getting abnf_parsec (Hex package)175* Getting boxart (Hex package)176* Getting cringe (Hex package)177* Getting ecto_sql (Hex package)178* Getting ecto_sqlite3 (Hex package)179* Getting ex_ast (Hex package)180* Getting ex_gram (Hex package)181* Getting floki (Hex package)182* Getting ghostty (Hex package)183* Getting glob_ex (Hex package)184* Getting jason (Hex package)185* Getting jido (Hex package)186* Getting jido_ai (Hex package)187* Getting json_spec (Hex package)188* Getting mdex (Hex package)189* Getting opentelemetry (Hex package)190* Getting opentelemetry_api (Hex package)191* Getting opentelemetry_telemetry (Hex package)192* Getting phoenix (Hex package)193* Getting phoenix_iconify (Hex package)194* Getting phoenix_live_view (Hex package)195* Getting phoenix_streamdown (Hex package)196* Getting plug_cowboy (Hex package)197* Getting reach (Hex package)198* Getting req (Hex package)199* Getting req_llm (Hex package)200* Getting toml (Hex package)201* Getting ttycast (Hex package)202* Getting volt (Hex package)203* Getting yaml_elixir (Hex package)204* Getting yamerl (Hex package)205* Getting dotenvy (Hex package)206* Getting file_system (Hex package)207* Getting npm (Hex package)208* Getting oxc (Hex package)209* Getting oxide_ex (Hex package)210* Getting plug (Hex package)211* Getting quickbeam (Hex package)212* Getting vize (Hex package)213* Getting websock_adapter (Hex package)214* Getting websock (Hex package)215* Getting rustler_precompiled (Hex package)216* Getting mint_web_socket (Hex package)217* Getting nimble_pool (Hex package)218* Getting zigler_precompiled (Hex package)219* Getting castore (Hex package)220* Getting mint (Hex package)221* Getting hpax (Hex package)222* Getting mime (Hex package)223* Getting plug_crypto (Hex package)224* Getting telemetry (Hex package)225* Getting hex_solver (Hex package)226* Getting npm_semver (Hex package)227* Getting nimble_parsec (Hex package)228* Getting jsv (Hex package)229* Getting llm_db (Hex package)230* Getting nimble_options (Hex package)231* Getting server_sent_events (Hex package)232* Getting splode (Hex package)233* Getting websockex (Hex package)234* Getting zoi (Hex package)235* Getting idna (Hex package)236* Getting texture (Hex package)237* Getting finch (Hex package)238* Getting libgraph (Hex package)239* Getting cowboy (Hex package)240* Getting cowboy_telemetry (Hex package)241* Getting cowlib (Hex package)242* Getting ranch (Hex package)243* Getting phoenix_html (Hex package)244* Getting phoenix_template (Hex package)245* Getting iconify (Hex package)246* Getting json_codec (Hex package)247* Getting phoenix_pubsub (Hex package)248* Getting mdex_native (Hex package)249* Getting fsmx (Hex package)250* Getting jido_action (Hex package)251* Getting abacus (Hex package)252* Getting lua (Hex package)253* Getting multigraph (Hex package)254* Getting private (Hex package)255* Getting telemetry_metrics (Hex package)256* Getting uniq (Hex package)257* Getting luerl (Hex package)258* Getting crontab (Hex package)259* Getting jido_signal (Hex package)260* Getting poolboy (Hex package)261* Getting time_zone_info (Hex package)262* Getting fuse (Hex package)263* Getting nimble_ownership (Hex package)264* Getting sourceror (Hex package)265* Getting decimal (Hex package)266* Getting ecto (Hex package)267* Getting exqlite (Hex package)268* Getting cc_precompiler (Hex package)269* Getting db_connection (Hex package)270Found packages with security advisories, see above for details271You have added/upgraded packages you could sponsor, run `mix hex.sponsor` to learn more272==> nerves_system_br273Generated nerves_system_br app274==> file_system275Compiling 7 files (.ex)276Generated file_system app277==> floki278Compiling 1 file (.xrl)279Compiling 2 files (.erl)280Compiling 30 files (.ex)281Generated floki app282==> hex_solver283Compiling 21 files (.ex)284Generated hex_solver app285==> mime286Compiling 1 file (.ex)287Generated mime app288==> toml289Compiling 10 files (.ex)290     warning: using single-quoted strings to represent charlists is deprecated.291     Use ~c"" if you indeed want a charlist or use "" instead.292     You may run "mix format --migrate" to change all single-quoted293     strings to use the ~c sigil and fix this warning.294     │295 264 │   defp handle_token(lexer, original, doc, type, skip, _data, lines) when type in '-_' do296     │                                                                                  ~297     │298     └─ lib/decoder.ex:264:82299300     warning: using single-quoted strings to represent charlists is deprecated.301     Use ~c"" if you indeed want a charlist or use "" instead.302     You may run "mix format --migrate" to change all single-quoted303     strings to use the ~c sigil and fix this warning.304     │305 371 │       {:ok, {type, _skip, _data, _lines}} when type in '-+' ->306     │                                                        ~307     │308     └─ lib/decoder.ex:371:56309310     warning: using single-quoted strings to represent charlists is deprecated.311     Use ~c"" if you indeed want a charlist or use "" instead.312     You may run "mix format --migrate" to change all single-quoted313     strings to use the ~c sigil and fix this warning.314     │315 419 │           {:ok, {:alpha, _, <<c::utf8>>, _}} when c in 'eE' ->316     │                                                        ~317     │318     └─ lib/decoder.ex:419:56319320     warning: using single-quoted strings to represent charlists is deprecated.321     Use ~c"" if you indeed want a charlist or use "" instead.322     You may run "mix format --migrate" to change all single-quoted323     strings to use the ~c sigil and fix this warning.324     │325 474 │       {:ok, {:alpha, _, <<c::utf8>>, _}} when c in 'eE' ->326     │                                                    ~327     │328     └─ lib/decoder.ex:474:52329330     warning: using single-quoted strings to represent charlists is deprecated.331     Use ~c"" if you indeed want a charlist or use "" instead.332     You may run "mix format --migrate" to change all single-quoted333     strings to use the ~c sigil and fix this warning.334     │335 514 │       {:ok, {sign, _, _, _}} when sign in '-+' and last == ?e ->336     │                                           ~337     │338     └─ lib/decoder.ex:514:43339340     warning: using single-quoted strings to represent charlists is deprecated.341     Use ~c"" if you indeed want a charlist or use "" instead.342     You may run "mix format --migrate" to change all single-quoted343     strings to use the ~c sigil and fix this warning.344     │345 518 │       {:ok, {:alpha, _, <<c::utf8>>, _}} when c in 'eE' and signal == ?. ->346     │                                                    ~347     │348     └─ lib/decoder.ex:518:52349350     warning: using single-quoted strings to represent charlists is deprecated.351     Use ~c"" if you indeed want a charlist or use "" instead.352     You may run "mix format --migrate" to change all single-quoted353     strings to use the ~c sigil and fix this warning.354     │355 522 │       {:ok, {?_, skip, _, lines}} when last not in '_e.' ->356     │                                                    ~357     │358     └─ lib/decoder.ex:522:52359360     warning: using single-quoted strings to represent charlists is deprecated.361     Use ~c"" if you indeed want a charlist or use "" instead.362     You may run "mix format --migrate" to change all single-quoted363     strings to use the ~c sigil and fix this warning.364     │365 538 │       {:ok, {type, skip, data, lines}} when last in 'e.' ->366     │                                                     ~367     │368     └─ lib/decoder.ex:538:53369370     warning: using single-quoted strings to represent charlists is deprecated.371     Use ~c"" if you indeed want a charlist or use "" instead.372     You may run "mix format --migrate" to change all single-quoted373     strings to use the ~c sigil and fix this warning.374     │375 542 │       {:ok, {_type, skip, _data, lines} = token} when last not in '_e.' ->376     │                                                                   ~377     │378     └─ lib/decoder.ex:542:67379380     warning: using single-quoted strings to represent charlists is deprecated.381     Use ~c"" if you indeed want a charlist or use "" instead.382     You may run "mix format --migrate" to change all single-quoted383     strings to use the ~c sigil and fix this warning.384     │385 682 │         {:ok, {sign, _, _, _}} when sign in '-+' ->386     │                                             ~387     │388     └─ lib/decoder.ex:682:45389390     warning: using single-quoted strings to represent charlists is deprecated.391     Use ~c"" if you indeed want a charlist or use "" instead.392     You may run "mix format --migrate" to change all single-quoted393     strings to use the ~c sigil and fix this warning.394     │395 796 │       {:ok, {sign, _, _, _}} when sign in '-+' ->396     │                                           ~397     │398     └─ lib/decoder.ex:796:43399400     warning: using single-quoted strings to represent charlists is deprecated.401     Use ~c"" if you indeed want a charlist or use "" instead.402     You may run "mix format --migrate" to change all single-quoted403     strings to use the ~c sigil and fix this warning.404     │405 916 │         {:ok, {type, skip, _, lines}} when type in '-_' ->406     │                                                    ~407     │408     └─ lib/decoder.ex:916:52409410     warning: using single-quoted strings to represent charlists is deprecated.411     Use ~c"" if you indeed want a charlist or use "" instead.412     You may run "mix format --migrate" to change all single-quoted413     strings to use the ~c sigil and fix this warning.414     │415 954 │               {:ok, {type, _, _, _}} when type in '-_' ->416     │                                                   ~417     │418     └─ lib/decoder.ex:954:51419420     warning: using single-quoted strings to represent charlists is deprecated.421     Use ~c"" if you indeed want a charlist or use "" instead.422     You may run "mix format --migrate" to change all single-quoted423     strings to use the ~c sigil and fix this warning.424     │425 969 │       {:ok, {type, _, _, _}} when type in '-_' ->426     │                                           ~427     │428     └─ lib/decoder.ex:969:43429430     warning: using single-quoted strings to represent charlists is deprecated.431     Use ~c"" if you indeed want a charlist or use "" instead.432     You may run "mix format --migrate" to change all single-quoted433     strings to use the ~c sigil and fix this warning.434     │435 983 │           {:ok, {type, _, _, _}} when type in '-_' ->436     │                                               ~437     │438     └─ lib/decoder.ex:983:47439440     warning: the following clause will never match:441442         {:datetime, {:error, :invalid_date}} ->443444     it is expected to match on type:445446         dynamic(447           {:date,448            ({:error, :invalid_date} and not {:ok, {integer(), integer(), integer()}}) or449              {:error, :incompatible_calendars or :invalid_format} or {:ok, %Date{}}} and450             not {:date, {:ok, %Date{}}}451         )452453     type warning found at:454     │455 722 │       {:datetime, {:error, :invalid_date}} ->456     │       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~457     │458     └─ lib/decoder.ex:722: Toml.Decoder.datetime/3459460     warning: the following clause will never match:461462         {:datetime, {:error, reason}} ->463464     it is expected to match on type:465466         dynamic(467           {:date,468            ({:error, :invalid_date} and not {:ok, {integer(), integer(), integer()}}) or469              {:error, :incompatible_calendars or :invalid_format} or {:ok, %Date{}}} and470             not {:date, {:ok, %Date{}}}471         )472473     type warning found at:474     │475 725 │       {:datetime, {:error, reason}} ->476     │       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~477     │478     └─ lib/decoder.ex:725: Toml.Decoder.datetime/3479480     warning: the following clause will never match:481482         {:error, _, _, _} = err ->483484     it is expected to match on type:485486         dynamic(487           {:date,488            ({:error, :invalid_date} and not {:ok, {integer(), integer(), integer()}}) or489              {:error, :incompatible_calendars or :invalid_format} or {:ok, %Date{}}} and490             not {:date, {:ok, %Date{}}}491         )492493     type warning found at:494     │495 728 │       {:error, _, _, _} = err ->496     │                         ~497     │498     └─ lib/decoder.ex:728:25: Toml.Decoder.datetime/3499500     warning: the following clause will never match:501502         {:ok, {type, skip, data, lines}} ->503504     it is expected to match on type:505506         dynamic(507           {:date,508            ({:error, :invalid_date} and not {:ok, {integer(), integer(), integer()}}) or509              {:error, :incompatible_calendars or :invalid_format} or {:ok, %Date{}}} and510             not {:date, {:ok, %Date{}}}511         )512513     type warning found at:514     │515 731 │       {:ok, {type, skip, data, lines}} ->516     │       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~517     │518     └─ lib/decoder.ex:731: Toml.Decoder.datetime/3519520Generated toml app521==> circular_buffer522Compiling 1 file (.ex)523Generated circular_buffer app524==> nimble_options525Compiling 3 files (.ex)526Generated nimble_options app527==> multigraph528Compiling 16 files (.ex)529      warning: the following clause is redundant:530531          defp include_edge_for_filtered_partitions?(edge, _edge_partition, _partitions, where_fun)532               when is_function(where_fun)533534      it has type:535536          dynamic(), dynamic(), dynamic(), dynamic(fun())537538      previous clauses have already matched on the following types:539540          term(), term(), term(), nil541          term(), term(), term(), fun()542543      │544 2902 │   defp include_edge_for_filtered_partitions?(edge, _edge_partition, _partitions, where_fun)545      │        ~546      │547      └─ lib/multigraph.ex:2902:8: Multigraph.include_edge_for_filtered_partitions?/4548549Generated multigraph app550==> plug_crypto551Compiling 5 files (.ex)552Generated plug_crypto app553==> hpax554Compiling 4 files (.ex)555Generated hpax app556==> nerves_compatibility_test557===> Analyzing applications...558===> Compiling yamerl559/work/proj/deps_qemu_aarch64/yamerl/src/yamerl_node_binary.erl:65:9: Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.560Compile directive 'nowarn_deprecated_catch' can be used to suppress561warnings in selected modules.562%   65|    case catch base64:decode(Text) of563%     |         ^564565/work/proj/deps_qemu_aarch64/yamerl/src/yamerl_node_binary.erl:72:9: Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.566Compile directive 'nowarn_deprecated_catch' can be used to suppress567warnings in selected modules.568%   72|    case catch base64:decode(Text) of569%     |         ^570571    ┌─ src/yamerl_node_binary.erl:572    │573 65 │     case catch base64:decode(Text) of574    │          ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.575Compile directive 'nowarn_deprecated_catch' can be used to suppress576warnings in selected modules.577578    ┌─ src/yamerl_node_binary.erl:579    │580 72 │     case catch base64:decode(Text) of581    │          ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.582Compile directive 'nowarn_deprecated_catch' can be used to suppress583warnings in selected modules.584585586/work/proj/deps_qemu_aarch64/yamerl/src/yamerl_constr.erl:801:5: Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.587Compile directive 'nowarn_deprecated_catch' can be used to suppress588warnings in selected modules.589%  801|     catch Mod:module_info(),590%     |     ^591592     ┌─ src/yamerl_constr.erl:593     │594 801 │      catch Mod:module_info(),595     │      ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.596Compile directive 'nowarn_deprecated_catch' can be used to suppress597warnings in selected modules.598599600===> Analyzing applications...601===> Compiling luerl602     ┌─ src/luerl_lib_string.erl:603     │604 483 │      case catch seq(Cs0, 0, 1, []) of605     │           ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.606Compile directive 'nowarn_deprecated_catch' can be used to suppress607warnings in selected modules.608609610     ┌─ src/luerl_heap.erl:611     │612 137 │                         true when I >= 1 -> {D,array:set(I, V, A)};613     │                                   ╰── Warning: variable 'I' exported from '==' (line 136, column 39).614Exporting bindings from subexpressions other than block expressions is615deprecated and may yield an error in a future version of Erlang/OTP.616Please move the binding of 'I' out of the '=='.617Compile directive 'nowarn_export_var_subexpr' can be used to suppress618warnings in selected modules.619620     ┌─ src/luerl_heap.erl:621     │622 211 │          true when I >= 1 -> set_table_key_int(Tref, Key, I, Val, St);623     │                    ╰── Warning: variable 'I' exported from '==' (line 210, column 24).624Exporting bindings from subexpressions other than block expressions is625deprecated and may yield an error in a future version of Erlang/OTP.626Please move the binding of 'I' out of the '=='.627Compile directive 'nowarn_export_var_subexpr' can be used to suppress628warnings in selected modules.629630     ┌─ src/luerl_heap.erl:631     │632 293 │          true when I >= 1 -> get_table_key_int(Tref, Key, I, St);633     │                    ╰── Warning: variable 'I' exported from '==' (line 292, column 24).634Exporting bindings from subexpressions other than block expressions is635deprecated and may yield an error in a future version of Erlang/OTP.636Please move the binding of 'I' out of the '=='.637Compile directive 'nowarn_export_var_subexpr' can be used to suppress638warnings in selected modules.639640     ┌─ src/luerl_heap.erl:641     │642 348 │          true when I >= 1 ->643     │                    ╰── Warning: variable 'I' exported from '==' (line 347, column 24).644Exporting bindings from subexpressions other than block expressions is645deprecated and may yield an error in a future version of Erlang/OTP.646Please move the binding of 'I' out of the '=='.647Compile directive 'nowarn_export_var_subexpr' can be used to suppress648warnings in selected modules.649650     ┌─ src/luerl_heap.erl:651     │652 374 │                 true when I >= 1 ->653     │                           ╰── Warning: variable 'I' exported from '==' (line 373, column 31).654Exporting bindings from subexpressions other than block expressions is655deprecated and may yield an error in a future version of Erlang/OTP.656Please move the binding of 'I' out of the '=='.657Compile directive 'nowarn_export_var_subexpr' can be used to suppress658warnings in selected modules.659660661     ┌─ src/luerl_lib_basic.erl:662     │663 164 │  		true when I >= 1 ->664     │  		          ╰── Warning: variable 'I' exported from '==' (line 163, column 25).665Exporting bindings from subexpressions other than block expressions is666deprecated and may yield an error in a future version of Erlang/OTP.667Please move the binding of 'I' out of the '=='.668Compile directive 'nowarn_export_var_subexpr' can be used to suppress669warnings in selected modules.670671672     ┌─ src/luerl_lib.erl:673     │674 243 │  	    case catch begin [N1] = string:tokens(N0, [9,10,11,12,13,32,160]),675     │  	         ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.676Compile directive 'nowarn_deprecated_catch' can be used to suppress677warnings in selected modules.678679680../../../Users/rv/luerl/luerl/src/luerl_scan.xrl:171:10: Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.681Compile directive 'nowarn_deprecated_catch' can be used to suppress682warnings in selected modules.683684===> Analyzing applications...685===> Compiling fuse686===> Analyzing applications...687===> Compiling ranch688==> abacus689Compiling 3 files (.erl)690Compiling 5 files (.ex)691    warning: Abacus.parse/1 is undefined or private692    │693 36 │       Abacus.parse(without_parantheses),694    │              ~695    │696    └─ lib/format.ex:36:14: Abacus.Format.format/1697    └─ lib/format.ex:37:14: Abacus.Format.format/1698    └─ lib/format.ex:38:14: Abacus.Format.format/1699    └─ lib/format.ex:39:14: Abacus.Format.format/1700    └─ lib/format.ex:64:14: Abacus.Format.format/1701    └─ lib/format.ex:65:14: Abacus.Format.format/1702    └─ lib/format.ex:81:14: Abacus.Format.format/1703    └─ lib/format.ex:82:14: Abacus.Format.format/1704    └─ lib/format.ex:100:28: Abacus.Format.format/1705706    warning: the following clause is redundant:707708        def typeof(b) when is_boolean(b)709710    it has type:711712        dynamic(boolean())713714    previous clauses have already matched on the following types:715716        atom()717        binary()718        integer()719        float()720721    │722 31 │   def typeof(b) when is_boolean(b), do: :boolean723    │       ~724    │725    └─ lib/runtime/helpers.ex:31:7: Abacus.Runtime.Helpers.typeof/1726727Generated abacus app728==> tablet729Compiling 2 files (.ex)730Generated tablet app731==> server_sent_events732Compiling 2 files (.ex)733Generated server_sent_events app734==> private735Compiling 1 file (.ex)736Generated private app737==> elixir_make738Compiling 8 files (.ex)739Generated elixir_make app740==> nerves_logging741 CC kmsg_tailer.o742 LD kmsg_tailer743Compiling 5 files (.ex)744Generated nerves_logging app745==> castore746Compiling 1 file (.ex)747Generated castore app748==> mint749Compiling 1 file (.erl)750Compiling 21 files (.ex)751Generated mint app752==> mint_web_socket753Compiling 7 files (.ex)754Generated mint_web_socket app755==> nerves_compatibility_test756===> Analyzing applications...757===> Compiling cowlib758==> sourceror759Compiling 20 files (.ex)760Generated sourceror app761==> nerves_discovery762Compiling 5 files (.ex)763Generated nerves_discovery app764==> ring_logger765Compiling 7 files (.ex)766Generated ring_logger app767==> json_spec768Compiling 2 files (.ex)769Generated json_spec app770==> nerves_compatibility_test771===> Analyzing applications...772===> Compiling poolboy773==> decimal774Compiling 4 files (.ex)775Generated decimal app776==> jason777Compiling 10 files (.ex)778Generated jason app779==> ex_ast780Compiling 36 files (.ex)781Generated ex_ast app782==> json_codec783Compiling 6 files (.ex)784Generated json_codec app785==> yaml_elixir786Compiling 6 files (.ex)787Generated yaml_elixir app788==> interactive_cmd789Compiling 1 file (.ex)790Generated interactive_cmd app791==> nerves792Compiling 65 files (.ex)793    warning: redefining module Mix.Tasks.Nerves.Init (current version loaded from /work/proj/_build/qemu_aarch64/lib/nerves/ebin/Elixir.Mix.Tasks.Nerves.Init.beam)794    │795  6 │ defmodule Mix.Tasks.Nerves.Init do796    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~797    │798    └─ lib/mix/tasks/nerves.init.ex:6: Mix.Tasks.Nerves.Init (module)799800    warning: redefining module Nerves (current version loaded from /work/proj/_build/qemu_aarch64/lib/nerves/ebin/Elixir.Nerves.beam)801    │802  6 │ defmodule Nerves do803    │ ~~~~~~~~~~~~~~~~~~~804    │805    └─ lib/nerves.ex:6: Nerves (module)806807    warning: redefining module Nerves.ArtifactResolver (current version loaded from /work/proj/_build/qemu_aarch64/lib/nerves/ebin/Elixir.Nerves.ArtifactResolver.beam)808    │809  5 │ defmodule Nerves.ArtifactResolver do810    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~811    │812    └─ lib/nerves/artifact_resolver.ex:5: Nerves.ArtifactResolver (module)813814    warning: redefining module Nerves.BuildAction.AppModes (current version loaded from /work/proj/_build/qemu_aarch64/lib/nerves/ebin/Elixir.Nerves.BuildAction.AppModes.beam)815    │816  6 │ defmodule Nerves.BuildAction.AppModes do817    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~818    │819    └─ lib/nerves/build_action/app_modes.ex:6: Nerves.BuildAction.AppModes (module)820821    warning: redefining module Nerves.BuildAction.CheckExecutables (current version loaded from /work/proj/_build/qemu_aarch64/lib/nerves/ebin/Elixir.Nerves.BuildAction.CheckExecutables.beam)822    │823  5 │ defmodule Nerves.BuildAction.CheckExecutables do824    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~825    │826    └─ lib/nerves/build_action/check_executables.ex:5: Nerves.BuildAction.CheckExecutables (module)827828    warning: redefining module Nerves.BuildAction.Erlinit (current version loaded from /work/proj/_build/qemu_aarch64/lib/nerves/ebin/Elixir.Nerves.BuildAction.Erlinit.beam)829    │830  8 │ defmodule Nerves.BuildAction.Erlinit do831    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~832    │833    └─ lib/nerves/build_action/erlinit.ex:8: Nerves.BuildAction.Erlinit (module)834835    warning: redefining module Nerves.BuildAction.Firmware (current version loaded from /work/proj/_build/qemu_aarch64/lib/nerves/ebin/Elixir.Nerves.BuildAction.Firmware.beam)836    │837  5 │ defmodule Nerves.BuildAction.Firmware do838    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~839    │840    └─ lib/nerves/build_action/firmware.ex:5: Nerves.BuildAction.Firmware (module)841842    warning: redefining module Nerves.BuildAction.IExStartupCheck (current version loaded from /work/proj/_build/qemu_aarch64/lib/nerves/ebin/Elixir.Nerves.BuildAction.IExStartupCheck.beam)843    │844  7 │ defmodule Nerves.BuildAction.IExStartupCheck do845    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~846    │847    └─ lib/nerves/build_action/iex_startup_check.ex:7: Nerves.BuildAction.IExStartupCheck (module)848849    warning: redefining module Nerves.BuildAction.NervesV1System (current version loaded from /work/proj/_build/qemu_aarch64/lib/nerves/ebin/Elixir.Nerves.BuildAction.NervesV1System.beam)850    │851  5 │ defmodule Nerves.BuildAction.NervesV1System do852    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~853    │854    └─ lib/nerves/build_action/nerves_v1_system.ex:5: Nerves.BuildAction.NervesV1System (module)855856    warning: redefining module Nerves.BuildAction.NervesV1Toolchain (current version loaded from /work/proj/_build/qemu_aarch64/lib/nerves/ebin/Elixir.Nerves.BuildAction.NervesV1Toolchain.beam)857    │858  5 │ defmodule Nerves.BuildAction.NervesV1Toolchain do859    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~860    │861    └─ lib/nerves/build_action/nerves_v1_toolchain.ex:5: Nerves.BuildAction.NervesV1Toolchain (module)862863    warning: redefining module Nerves.BuildAction.Rootfs (current version loaded from /work/proj/_build/qemu_aarch64/lib/nerves/ebin/Elixir.Nerves.BuildAction.Rootfs.beam)864    │865  5 │ defmodule Nerves.BuildAction.Rootfs do866    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~867    │868    └─ lib/nerves/build_action/rootfs.ex:5: Nerves.BuildAction.Rootfs (module)869870    warning: redefining module Nerves.BuildAction.SortApps (current version loaded from /work/proj/_build/qemu_aarch64/lib/nerves/ebin/Elixir.Nerves.BuildAction.SortApps.beam)871    │872  6 │ defmodule Nerves.BuildAction.SortApps do873    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~874    │875    └─ lib/nerves/build_action/sort_apps.ex:6: Nerves.BuildAction.SortApps (module)876877    warning: redefining module Nerves.BuildAction.StripAll (current version loaded from /work/proj/_build/qemu_aarch64/lib/nerves/ebin/Elixir.Nerves.BuildAction.StripAll.beam)878    │879  5 │ defmodule Nerves.BuildAction.StripAll do880    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~881    │882    └─ lib/nerves/build_action/strip_all.ex:5: Nerves.BuildAction.StripAll (module)883884    warning: redefining module Nerves.BuildAction.Trimmer (current version loaded from /work/proj/_build/qemu_aarch64/lib/nerves/ebin/Elixir.Nerves.BuildAction.Trimmer.beam)885    │886  5 │ defmodule Nerves.BuildAction.Trimmer do887    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~888    │889    └─ lib/nerves/build_action/trimmer.ex:5: Nerves.BuildAction.Trimmer (module)890891    warning: redefining module Nerves.BuildPlan (current version loaded from /work/proj/_build/qemu_aarch64/lib/nerves/ebin/Elixir.Nerves.BuildPlan.beam)892    │893  5 │ defmodule Nerves.BuildPlan do894    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~895    │896    └─ lib/nerves/build_plan.ex:5: Nerves.BuildPlan (module)897898    warning: redefining module Nerves.BuildPlan.Checks (current version loaded from /work/proj/_build/qemu_aarch64/lib/nerves/ebin/Elixir.Nerves.BuildPlan.Checks.beam)899    │900  5 │ defmodule Nerves.BuildPlan.Checks do901    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~902    │903    └─ lib/nerves/build_plan/checks.ex:5: Nerves.BuildPlan.Checks (module)904905    warning: redefining module Nerves.Container (current version loaded from /work/proj/_build/qemu_aarch64/lib/nerves/ebin/Elixir.Nerves.Container.beam)906    │907  6 │ defmodule Nerves.Container do908    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~909    │910    └─ lib/nerves/container.ex:6: Nerves.Container (module)911912    warning: redefining module Nerves.Fingerprint (current version loaded from /work/proj/_build/qemu_aarch64/lib/nerves/ebin/Elixir.Nerves.Fingerprint.beam)913    │914  5 │ defmodule Nerves.Fingerprint do915    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~916    │917    └─ lib/nerves/fingerprint.ex:5: Nerves.Fingerprint (module)918919    warning: redefining module Nerves.MixPackage (current version loaded from /work/proj/_build/qemu_aarch64/lib/nerves/ebin/Elixir.Nerves.MixPackage.beam)920    │921  5 │ defmodule Nerves.MixPackage do922    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~923    │924    └─ lib/nerves/mix_package.ex:5: Nerves.MixPackage (module)925926    warning: redefining module Nerves.Paths (current version loaded from /work/proj/_build/qemu_aarch64/lib/nerves/ebin/Elixir.Nerves.Paths.beam)927    │928  5 │ defmodule Nerves.Paths do929    │ ~~~~~~~~~~~~~~~~~~~~~~~~~930    │931    └─ lib/nerves/paths.ex:5: Nerves.Paths (module)932933    warning: redefining module Nerves.TargetTuple (current version loaded from /work/proj/_build/qemu_aarch64/lib/nerves/ebin/Elixir.Nerves.TargetTuple.beam)934    │935  5 │ defmodule Nerves.TargetTuple do936    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~937    │938    └─ lib/nerves/target_tuple.ex:5: Nerves.TargetTuple (module)939940Generated nerves app941==> nerves_toolchain_aarch64_nerves_linux_gnu942Compiling 1 file (.ex)943Generated nerves_toolchain_aarch64_nerves_linux_gnu app944==> nerves_system_qemu_aarch64945Compiling 1 file (.ex)946Generated nerves_system_qemu_aarch64 app947==> nerves_compatibility_test948===> Analyzing applications...949===> Compiling idna950==> libgraph951Compiling 15 files (.ex)952Generated libgraph app953==> boxart954Compiling 24 files (.ex)955Generated boxart app956==> nimble_parsec957Compiling 4 files (.ex)958Generated nimble_parsec app959==> time_zone_info960Compiling 29 files (.ex)961Generated time_zone_info app962==> nerves_compatibility_test963===> Analyzing applications...964===> Compiling telemetry965==> websockex966Compiling 6 files (.ex)967     warning: the variable "size" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator968     │969 109 │     <<payload::bytes-size(size), rest::bitstring>> = remaining970     │                           ~971     │972     └─ lib/websockex/frame.ex:109:27: WebSockex.Frame.parse_frame/1973974     warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator975     │976 125 │       <<payload::bytes-size(len), rest::bitstring>> = remaining977     │                             ~978     │979     └─ lib/websockex/frame.ex:125:29: WebSockex.Frame.parse_frame/1980981     warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator982     │983 125 │       <<payload::bytes-size(len), rest::bitstring>> = remaining984     │                             ~985     │986     └─ lib/websockex/frame.ex:125:29: WebSockex.Frame.parse_frame/1987988     warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator989     │990 145 │     <<payload::bytes-size(len), rest::bitstring>> = remaining991     │                           ~992     │993     └─ lib/websockex/frame.ex:145:27: WebSockex.Frame.parse_frame/1994995     warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator996     │997 150 │     <<payload::bytes-size(len), rest::bitstring>> = remaining998     │                           ~999     │1000     └─ lib/websockex/frame.ex:150:27: WebSockex.Frame.parse_frame/110011002     warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1003     │1004 155 │     <<payload::bytes-size(len), rest::bitstring>> = remaining1005     │                           ~1006     │1007     └─ lib/websockex/frame.ex:155:27: WebSockex.Frame.parse_frame/110081009     warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1010     │1011 164 │       <<payload::bytes-size(len), rest::bitstring>> = remaining1012     │                             ~1013     │1014     └─ lib/websockex/frame.ex:164:29: WebSockex.Frame.parse_frame/110151016     warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1017     │1018 171 │       <<payload::bytes-size(len), rest::bitstring>> = remaining1019     │                             ~1020     │1021     └─ lib/websockex/frame.ex:171:29: WebSockex.Frame.parse_frame/110221023     warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1024     │1025 176 │       <<payload::bytes-size(len), rest::bitstring>> = remaining1026     │                             ~1027     │1028     └─ lib/websockex/frame.ex:176:29: WebSockex.Frame.parse_frame/110291030     warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1031     │1032 164 │       <<payload::bytes-size(len), rest::bitstring>> = remaining1033     │                             ~1034     │1035     └─ lib/websockex/frame.ex:164:29: WebSockex.Frame.parse_frame/110361037     warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1038     │1039 171 │       <<payload::bytes-size(len), rest::bitstring>> = remaining1040     │                             ~1041     │1042     └─ lib/websockex/frame.ex:171:29: WebSockex.Frame.parse_frame/110431044     warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1045     │1046 176 │       <<payload::bytes-size(len), rest::bitstring>> = remaining1047     │                             ~1048     │1049     └─ lib/websockex/frame.ex:176:29: WebSockex.Frame.parse_frame/110501051     warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1052     │1053 183 │     <<payload::bytes-size(len), rest::bitstring>> = remaining1054     │                           ~1055     │1056     └─ lib/websockex/frame.ex:183:27: WebSockex.Frame.parse_frame/110571058     warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1059     │1060 188 │     <<payload::bytes-size(len), rest::bitstring>> = remaining1061     │                           ~1062     │1063     └─ lib/websockex/frame.ex:188:27: WebSockex.Frame.parse_frame/110641065     warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1066     │1067 193 │     <<payload::bytes-size(len), rest::bitstring>> = remaining1068     │                           ~1069     │1070     └─ lib/websockex/frame.ex:193:27: WebSockex.Frame.parse_frame/110711072     warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1073     │1074 199 │     <<payload::bytes-size(len), rest::bitstring>> = remaining1075     │                           ~1076     │1077     └─ lib/websockex/frame.ex:199:27: WebSockex.Frame.parse_frame/110781079     warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1080     │1081 204 │     <<payload::bytes-size(len), rest::bitstring>> = remaining1082     │                           ~1083     │1084     └─ lib/websockex/frame.ex:204:27: WebSockex.Frame.parse_frame/110851086     warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1087     │1088 209 │     <<payload::bytes-size(len), rest::bitstring>> = remaining1089     │                           ~1090     │1091     └─ lib/websockex/frame.ex:209:27: WebSockex.Frame.parse_frame/110921093     warning: the variable "len" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1094     │1095 358 │     <<payload::bytes-size(len), rest::bitstring>> = remaining1096     │                           ~1097     │1098     └─ lib/websockex/frame.ex:358:27: WebSockex.Frame.parse_text_payload/310991100Generated websockex app1101==> telemetry_metrics1102Compiling 7 files (.ex)1103Generated telemetry_metrics app1104==> ecto1105Compiling 56 files (.ex)1106Generated ecto app1107==> uniq1108Compiling 5 files (.ex)1109     warning: the variable "clock_hi_size" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1110     │1111 547 │            <<clock_hi::bits(clock_hi_size), clock_lo::bits(8), node::bits(48)>> <-1112     │                             ~1113     │1114     └─ lib/uuid.ex:547:29: Uniq.UUID.parse_raw/511151116     warning: the variable "clock_size" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1117     │1118 549 │            <<clock::uint(clock_size)>> <-1119     │                          ~1120     │1121     └─ lib/uuid.ex:549:26: Uniq.UUID.parse_raw/511221123     warning: the variable "clock_hi_size" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1124     │1125 547 │            <<clock_hi::bits(clock_hi_size), clock_lo::bits(8), node::bits(48)>> <-1126     │                             ~1127     │1128     └─ lib/uuid.ex:547:29: Uniq.UUID.parse_raw/511291130     warning: the variable "clock_size" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1131     │1132 549 │            <<clock::uint(clock_size)>> <-1133     │                          ~1134     │1135     └─ lib/uuid.ex:549:26: Uniq.UUID.parse_raw/511361137     warning: the variable "clock_hi_size" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1138     │1139 547 │            <<clock_hi::bits(clock_hi_size), clock_lo::bits(8), node::bits(48)>> <-1140     │                             ~1141     │1142     └─ lib/uuid.ex:547:29: Uniq.UUID.parse_raw/511431144     warning: the variable "clock_size" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1145     │1146 549 │            <<clock::uint(clock_size)>> <-1147     │                          ~1148     │1149     └─ lib/uuid.ex:549:26: Uniq.UUID.parse_raw/511501151     warning: the variable "clock_hi_size" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1152     │1153 547 │            <<clock_hi::bits(clock_hi_size), clock_lo::bits(8), node::bits(48)>> <-1154     │                             ~1155     │1156     └─ lib/uuid.ex:547:29: Uniq.UUID.parse_raw/511571158     warning: the variable "clock_size" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator1159     │1160 549 │            <<clock::uint(clock_size)>> <-1161     │                          ~1162     │1163     └─ lib/uuid.ex:549:26: Uniq.UUID.parse_raw/511641165Generated uniq app1166==> crontab1167Compiling 7 files (.ex)1168     warning: this clause of defp get_interval_value/2 is never used (or it will always fail/warn when invoked)1169     │1170 255 │   defp get_interval_value(:ambiguity_opts, %{ambiguity_opts: ambiguity_opts}), do: ambiguity_opts1171     │        ~1172     │1173     └─ lib/crontab/date_checker.ex:255:8: Crontab.DateChecker.get_interval_value/211741175Generated crontab app1176==> db_connection1177Compiling 18 files (.ex)1178Generated db_connection app1179==> ecto_sql1180Compiling 25 files (.ex)1181Generated ecto_sql app1182==> fsmx1183Compiling 3 files (.ex)1184Generated fsmx app1185==> nerves_compatibility_test1186===> Analyzing applications...1187===> Compiling cowboy1188==> phoenix_html1189Compiling 6 files (.ex)1190Generated phoenix_html app1191==> zoi1192Compiling 84 files (.ex)1193Generated zoi app1194==> phoenix_template1195Compiling 4 files (.ex)1196Generated phoenix_template app1197==> abnf_parsec1198Compiling 4 files (.ex)1199Generated abnf_parsec app1200==> texture1201Compiling 7 files (.ex)1202Generated texture app1203==> phoenix_pubsub1204Compiling 12 files (.ex)1205Generated phoenix_pubsub app1206==> rustler_precompiled1207Compiling 4 files (.ex)1208Generated rustler_precompiled app1209==> oxc1210Compiling 17 files (.ex)1211121222:23:19.524 [debug] Downloading NIF from https://github.com/elixir-volt/oxc_ex/releases/download/v0.17.8/liboxc_fmt_nif-v0.17.8-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz1213121422:23:19.590 [debug] Downloading NIF from https://github.com/elixir-volt/oxc_ex/releases/download/v0.17.8/liboxc_lint_nif-v0.17.8-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz1215121622:23:21.143 [debug] NIF cached at /home/nerves/.cache/rustler_precompiled/precompiled_nifs/liboxc_lint_nif-v0.17.8-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz and extracted to /work/proj/_build/qemu_aarch64/lib/oxc/priv/native/liboxc_lint_nif-v0.17.8-nif-2.15-aarch64-unknown-linux-gnu.so1217121822:23:21.253 [debug] NIF cached at /home/nerves/.cache/rustler_precompiled/precompiled_nifs/liboxc_fmt_nif-v0.17.8-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz and extracted to /work/proj/_build/qemu_aarch64/lib/oxc/priv/native/liboxc_fmt_nif-v0.17.8-nif-2.15-aarch64-unknown-linux-gnu.so1219122022:23:21.338 [debug] Downloading NIF from https://github.com/elixir-volt/oxc_ex/releases/download/v0.17.8/liboxc_ex_nif-v0.17.8-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz1221122222:23:22.857 [debug] NIF cached at /home/nerves/.cache/rustler_precompiled/precompiled_nifs/liboxc_ex_nif-v0.17.8-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz and extracted to /work/proj/_build/qemu_aarch64/lib/oxc/priv/native/liboxc_ex_nif-v0.17.8-nif-2.15-aarch64-unknown-linux-gnu.so1223Generated oxc app1224==> oxide_ex1225Compiling 2 files (.ex)1226122722:23:23.772 [debug] Downloading NIF from https://github.com/elixir-volt/oxide_ex/releases/download/v0.2.2/liboxide_ex_nif-v0.2.2-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz1228122922:23:24.424 [debug] NIF cached at /home/nerves/.cache/rustler_precompiled/precompiled_nifs/liboxide_ex_nif-v0.2.2-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz and extracted to /work/proj/_build/qemu_aarch64/lib/oxide_ex/priv/native/liboxide_ex_nif-v0.2.2-nif-2.15-aarch64-unknown-linux-gnu.so1230Generated oxide_ex app1231==> vize1232Compiling 11 files (.ex)1233123422:23:24.942 [debug] Downloading NIF from https://github.com/elixir-volt/vize_ex/releases/download/v0.13.1/libvize_ex_nif-v0.13.1-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz1235123622:23:26.084 [debug] NIF cached at /home/nerves/.cache/rustler_precompiled/precompiled_nifs/libvize_ex_nif-v0.13.1-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz and extracted to /work/proj/_build/qemu_aarch64/lib/vize/priv/native/libvize_ex_nif-v0.13.1-nif-2.15-aarch64-unknown-linux-gnu.so1237Generated vize app1238==> mdex_native1239Compiling 9 files (.ex)1240124122:23:26.492 [debug] Downloading NIF from https://github.com/leandrocp/mdex_native/releases/download/v0.2.11/libmdex_native_nif-v0.2.11-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz1242124322:23:27.181 [debug] NIF cached at /home/nerves/.cache/rustler_precompiled/precompiled_nifs/libmdex_native_nif-v0.2.11-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz and extracted to /work/proj/_build/qemu_aarch64/lib/mdex_native/priv/native/libmdex_native_nif-v0.2.11-nif-2.15-aarch64-unknown-linux-gnu.so1244Generated mdex_native app1245==> splode1246Compiling 5 files (.ex)1247Generated splode app1248==> jido_signal1249Compiling 67 files (.ex)1250125122:23:32.481 [debug] Extension registry unavailable queued module=Jido.Signal.Ext.Dispatch1252125322:23:34.164 [debug] Extension registry unavailable queued module=Jido.Signal.Ext.Trace1254Generated jido_signal app1255==> jsv1256Compiling 75 files (.ex)1257Generated jsv app1258==> glob_ex1259Compiling 4 files (.ex)1260Generated glob_ex app1261==> lua1262Compiling 7 files (.ex)1263     warning: this clause of defp format_error/2 is never used (or it will always fail/warn when invoked)1264     │1265 177 │   defp format_error(_, {:undefined, args}) do1266     │        ~1267     │1268     └─ lib/lua/util.ex:177:8: Lua.Util.format_error/212691270Generated lua app1271==> plug1272Compiling 1 file (.erl)1273Compiling 42 files (.ex)1274Generated plug app1275==> dotenvy1276Compiling 3 files (.ex)1277Generated dotenvy app1278==> uboot_env1279Compiling 5 files (.ex)1280Generated uboot_env app1281==> nimble_pool1282Compiling 2 files (.ex)1283Generated nimble_pool app1284==> finch1285Compiling 22 files (.ex)1286Generated finch app1287warning: "xref: [exclude: ...]" in your mix.exs file is deprecated, instead use: "elixirc_options: [no_warn_undefined: ...]"1288  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:243: Mix.Tasks.Compile.Elixir.xref_exclude_opts/21289  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:142: Mix.Tasks.Compile.Elixir.run/11290  (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/51291  (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/21292  (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/41293  (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/212941295==> req1296Compiling 19 files (.ex)1297Generated req app1298==> llm_db1299Compiling 65 files (.ex)1300Generated llm_db app1301==> req_llm1302Compiling 219 files (.ex)1303Compiling lib/mix/tasks/gen.ex (it's taking more than 10s)1304Compiling lib/req_llm/providers/anthropic/context.ex (it's taking more than 10s)1305Compiling lib/req_llm/output/validation.ex (it's taking more than 10s)1306Compiling lib/req_llm/open_telemetry/content.ex (it's taking more than 10s)1307Compiling lib/req_llm/context/tool_exchange.ex (it's taking more than 10s)1308Compiling lib/req_llm/context.ex (it's taking more than 10s)1309Compiling lib/req_llm/telemetry.ex (it's taking more than 10s)1310Generated req_llm app1311==> iconify1312Compiling 5 files (.ex)1313Generated iconify app1314==> jido_action1315Compiling 39 files (.ex)1316     warning: the following clause cannot match because the previous clauses already matched all possible values:13171318         _ ->13191320     it attempts to match on the result of:13211322         Map.has_key?(message, :message) and is_binary(message.message)13231324     which has the already matched type:13251326         dynamic(false)13271328     type warning found at:1329     │1330 147 │         if Map.has_key?(message, :message) and is_binary(message.message) do1331     │         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1332     │1333     └─ lib/jido_action/exec/telemetry.ex:147: Jido.Exec.Telemetry.extract_safe_error_message/113341335Generated jido_action app1336==> jido1337Compiling 126 files (.ex)1338Generated jido app1339==> jido_ai1340Compiling 170 files (.ex)1341Compiling lib/jido_ai/directive/helpers.ex (it's taking more than 10s)1342Compiling lib/jido_ai/actions/tool_calling/call_with_tools.ex (it's taking more than 10s)1343Compiling lib/jido_ai/actions/skill/load_skill.ex (it's taking more than 10s)1344Compiling lib/jido_ai/reasoning/react/runner.ex (it's taking more than 10s)1345Generated jido_ai app1346==> cc_precompiler1347Compiling 3 files (.ex)1348Generated cc_precompiler app1349==> exqlite1350Downloading precompiled NIF to /home/nerves/.cache/elixir_make/exqlite-nif-2.17-aarch64-linux-gnu-0.42.0.tar.gz1351Compiling 12 files (.ex)1352Generated exqlite app1353==> ecto_sqlite31354Compiling 5 files (.ex)1355Generated ecto_sqlite3 app1356==> property_table1357Compiling 8 files (.ex)1358Generated property_table app1359==> nerves_uevent1360 CC uevent.o1361 LD uevent1362Compiling 5 files (.ex)1363Generated nerves_uevent app1364==> nerves_runtime1365Compiling 14 files (.ex)1366Generated nerves_runtime app1367==> toolshed1368Compiling 5 files (.ex)1369Generated toolshed app1370==> zigler_precompiled1371Compiling 5 files (.ex)1372Generated zigler_precompiled app1373==> nerves_compatibility_test1374===> Analyzing applications...1375===> Compiling cowboy_telemetry1376==> plug_cowboy1377Compiling 5 files (.ex)1378Generated plug_cowboy app1379==> websock1380Compiling 1 file (.ex)1381Generated websock app1382==> websock_adapter1383Compiling 4 files (.ex)1384Generated websock_adapter app1385==> phoenix1386Compiling 75 files (.ex)1387Generated phoenix app1388==> phoenix_live_view1389Compiling 55 files (.ex)1390Generated phoenix_live_view app1391==> ghostty1392Compiling 19 files (.ex)1393139422:27:21.179 [debug] Downloading NIF from https://github.com/dannote/ghostty_ex/releases/download/v0.4.9/Elixir.Ghostty.PTY.Nif-v0.4.9-aarch64-linux-gnu.so.tar.gz1395139622:27:21.545 [debug] Downloading NIF from https://github.com/dannote/ghostty_ex/releases/download/v0.4.9/Elixir.Ghostty.Terminal.Nif-v0.4.9-aarch64-linux-gnu.so.tar.gz1397Generated ghostty app1398could not compile dependency :ghostty, "mix compile" failed. Errors may have been logged above. You can recompile this dependency with "mix deps.compile ghostty --force", update it with "mix deps.update ghostty" or clean it with "mix deps.clean ghostty"1399140022:27:23.539 [warning] The on_load function for module Elixir.OXC.Native returned:1401{:error,1402 {:load_failed,1403  ~c"Failed to load NIF library: '/work/proj/_build/qemu_aarch64/lib/oxc/priv/native/liboxc_ex_nif-v0.17.8-nif-2.15-aarch64-unknown-linux-gnu.so: cannot open shared object file: No such file or directory'"}}14041405140622:27:23.628 [warning] The on_load function for module Elixir.OXC.Native returned:1407{:error,1408 {:load_failed,1409  ~c"Failed to load NIF library: '/work/proj/_build/qemu_aarch64/lib/oxc/priv/native/liboxc_ex_nif-v0.17.8-nif-2.15-aarch64-unknown-linux-gnu.so: cannot open shared object file: No such file or directory'"}}14101411** (UndefinedFunctionError) function OXC.Native.bundle/2 is undefined (module OXC.Native is not available)1412    (oxc 0.17.8) OXC.Native.bundle([{"cursor.ts", "import { applyCellTextStyles } from './render'\nimport { rgb } from './util'\n\nimport type { Cell, CellMetrics, CursorState } from './types'\n\nexport function cursorVisible(cursor: CursorState | null, blinkVisible: boolean): boolean {\n  return Boolean(cursor && cursor.visible && cursor.x !== null && cursor.y !== null && blinkVisible)\n}\n\nexport function cursorDisplayStyle(style: string, focused: boolean): string {\n  if (!focused && style === 'block') {\n    return 'block_hollow'\n  }\n  return style\n}\n\nexport function cursorCell(cursor: CursorState, rowsData: Cell[][]): Cell | null {\n  if (cursor.y === null || cursor.x === null) return null\n\n  const row = rowsData[cursor.y]\n  if (!row) return null\n\n  if (cursor.wide_tail && cursor.x > 0) {\n    return row[cursor.x - 1] ?? null\n  }\n\n  return row[cursor.x] ?? null\n}\n\nexport function cursorChar(cell: Cell | null): string {\n  return cell?.[0] || ' '\n}\n\nexport function cursorColor(cursor: CursorState, pre: HTMLPreElement): string {\n  if (cursor.color) {\n    return rgb(cursor.color)\n  }\n  return window.getComputedStyle(pre).color || '#cdd6f4'\n}\n\nexport function cursorTextColor(cell: Cell | null, pre: HTMLPreElement): string {\n  if (cell?.[2]) {\n    return rgb(cell[2])\n  }\n  return window.getComputedStyle(pre).backgroundColor || '#1e1e2e'\n}\n\nexport function renderCursor(\n  cursorEl: HTMLDivElement,\n  cursorTextEl: HTMLSpanElement,\n  cursor: CursorState | null,\n  rowsData: Cell[][],\n  focused: boolean,\n  blinkVisible: boolean,\n  metrics: CellMetrics,\n  pre: HTMLPreElement,\n  input: HTMLTextAreaElement\n): void {\n  if (!cursorVisible(cursor, blinkVisible)) {\n    cursorEl.style.display = 'none'\n    syncInputPosition(input, null)\n    return\n  }\n\n  const c = cursor as CursorState\n  const cx = c.x as number\n  const cy = c.y as number\n  let leftCol = cx\n  let widthCols = 1\n\n  if (c.wide_tail && cx > 0) {\n    leftCol -= 1\n    widthCols = 2\n  }\n\n  const left = metrics.paddingLeft + leftCol * metrics.width\n  const top = metrics.paddingTop + cy * metrics.height\n  const width = metrics.width * widthCols\n  const height = metrics.height\n  const style = cursorDisplayStyle(c.style, focused)\n  const color = cursorColor(c, pre)\n\n  syncInputPosition(input, { left, top, height })\n\n  cursorEl.style.display = 'block'\n  cursorEl.style.left = `${left}px`\n  cursorEl.style.top = `${top}px`\n  cursorEl.style.width = `${width}px`\n  cursorEl.style.height = `${height}px`\n  cursorEl.style.opacity = focused ? '1' : '0.85'\n\n  cursorTextEl.textContent = ''\n  cursorTextEl.style.color = ''\n  cursorTextEl.style.backgroundColor = 'transparent'\n  cursorTextEl.style.fontWeight = ''\n  cursorTextEl.style.fontStyle = ''\n  cursorTextEl.style.opacity = '1'\n  cursorTextEl.style.textDecoration = 'none'\n\n  cursorEl.style.backgroundColor = 'transparent'\n  cursorEl.style.border = 'none'\n  cursorEl.style.borderBottom = 'none'\n  cursorEl.style.borderLeft = 'none'\n\n  if (style === 'block') {\n    const cell = cursorCell(c, rowsData)\n    cursorEl.style.backgroundColor = color\n    cursorTextEl.textContent = cursorChar(cell)\n    cursorTextEl.style.color = cursorTextColor(cell, pre)\n    applyCellTextStyles(cursorTextEl, cell)\n    return\n  }\n\n  if (style === 'underline') {\n    cursorEl.style.borderBottom = `2px solid ${color}`\n    return\n  }\n\n  if (style === 'bar') {\n    const barWidth = Math.max(2, Math.round(metrics.width * 0.15))\n    cursorEl.style.width = `${barWidth}px`\n    cursorEl.style.backgroundColor = color\n    return\n  }\n\n  cursorEl.style.border = `1px solid ${color}`\n}\n\nfunction syncInputPosition(\n  input: HTMLTextAreaElement,\n  position: { left: number; top: number; height: number } | null\n): void {\n  if (!position) {\n    input.style.left = '0'\n    input.style.top = '0'\n    return\n  }\n\n  input.style.left = `${position.left}px`\n  input.style.top = `${position.top}px`\n  input.style.height = `${position.height}px`\n}\n"}, {"dom.ts", "export function createScreen(): HTMLDivElement {\n  const screen = document.createElement('div')\n  screen.style.position = 'relative'\n  screen.style.display = 'block'\n  screen.style.width = '100%'\n  return screen\n}\n\nexport function createPre(): HTMLPreElement {\n  const pre = document.createElement('pre')\n  pre.style.margin = '0'\n  pre.style.padding = '8px'\n  pre.style.backgroundColor = '#1e1e2e'\n  pre.style.color = '#cdd6f4'\n  pre.style.overflow = 'hidden'\n  pre.style.position = 'relative'\n  pre.style.width = '100%'\n  pre.style.boxSizing = 'border-box'\n  pre.style.userSelect = 'none'\n  pre.style.webkitUserSelect = 'none'\n  pre.style.cursor = 'text'\n  return pre\n}\n\nexport function createSelectionLayer(): HTMLDivElement {\n  const layer = document.createElement('div')\n  layer.setAttribute('aria-hidden', 'true')\n  layer.setAttribute('data-ghostty-selection-layer', 'true')\n  layer.style.position = 'absolute'\n  layer.style.inset = '0'\n  layer.style.pointerEvents = 'none'\n  layer.style.zIndex = '0'\n  return layer\n}\n\nexport function createMeasure(): HTMLSpanElement {\n  const span = document.createElement('span')\n  span.textContent = 'MMMMMMMMMM'\n  span.setAttribute('aria-hidden', 'true')\n  span.style.position = 'absolute'\n  span.style.visibility = 'hidden'\n  span.style.pointerEvents = 'none'\n  span.style.whiteSpace = 'pre'\n  span.style.font = 'inherit'\n  span.style.lineHeight = 'inherit'\n  return span\n}\n\nexport function createCursorEl(): { cursorEl: HTMLDivElement; cursorText: HTMLSpanElement } {\n  const cursorEl = document.createElement('div')\n  cursorEl.setAttribute('aria-hidden', 'true')\n  cursorEl.style.position = 'absolute'\n  cursorEl.style.display = 'none'\n  cursorEl.style.pointerEvents = 'none'\n  cursorEl.style.boxSizing = 'border-box'\n  cursorEl.style.whiteSpace = 'pre'\n  cursorEl.style.zIndex = '1'\n\n  const cursorText = document.createElement('span')\n  cursorText.style.display = 'block'\n  cursorText.style.width = '100%'\n  cursorText.style.height = '100%'\n  cursorText.style.font = 'inherit'\n  cursorText.style.lineHeight = 'inherit'\n  cursorEl.appendChild(cursorText)\n\n  return { cursorEl, cursorText }\n}\n\nexport function setupInput(input: HTMLTextAreaElement): void {\n  input.setAttribute('data-ghostty-input', 'true')\n  input.setAttribute('aria-label', 'Terminal input')\n  input.setAttribute('autocapitalize', 'off')\n  input.setAttribute('autocomplete', 'off')\n  input.setAttribute('autocorrect', 'off')\n  input.setAttribute('spellcheck', 'false')\n  input.style.position = 'absolute'\n  input.style.left = '0'\n  input.style.top = '0'\n  input.style.width = '1px'\n  input.style.height = '1em'\n  input.style.padding = '0'\n  input.style.margin = '0'\n  input.style.border = '0'\n  input.style.outline = 'none'\n  input.style.opacity = '0'\n  input.style.resize = 'none'\n  input.style.overflow = 'hidden'\n  input.style.background = 'transparent'\n  input.style.color = 'transparent'\n  input.style.caretColor = 'transparent'\n  input.style.whiteSpace = 'pre'\n  input.style.pointerEvents = 'none'\n  input.style.zIndex = '2'\n}\n\nexport function measureCellMetrics(\n  pre: HTMLPreElement,\n  measure: HTMLSpanElement,\n  input: HTMLTextAreaElement,\n  cursorEl: HTMLDivElement\n): {\n  width: number\n  height: number\n  paddingLeft: number\n  paddingRight: number\n  paddingTop: number\n  paddingBottom: number\n} {\n  const styles = window.getComputedStyle(pre)\n\n  measure.style.fontFamily = styles.fontFamily\n  measure.style.fontSize = styles.fontSize\n  measure.style.fontWeight = styles.fontWeight\n  measure.style.fontStyle = styles.fontStyle\n  measure.style.lineHeight = styles.lineHeight\n\n  input.style.fontFamily = styles.fontFamily\n  input.style.fontSize = styles.fontSize\n  input.style.lineHeight = styles.lineHeight\n  cursorEl.style.fontFamily = styles.fontFamily\n  cursorEl.style.fontSize = styles.fontSize\n  cursorEl.style.lineHeight = styles.lineHeight\n\n  const measureRect = measure.getBoundingClientRect()\n  const fontSize = parseFloat(styles.fontSize) || 16\n  const lineHeight = parseFloat(styles.lineHeight) || fontSize * 1.2\n  const width = measureRect.width > 0 ? measur" <> ...}, {"hook.ts", "import { renderCursor } from './cursor'\nimport {\n  createCursorEl,\n  createMeasure,\n  createPre,\n  createScreen,\n  createSelectionLayer,\n  measureCellMetrics,\n  setupInput\n} from './dom'\nimport {\n  hasMouseModifiers,\n  isCopyShortcut,\n  isPasteShortcut,\n  mouseButtonName,\n  primaryPressedButton\n} from './input'\nimport { renderCells, renderSelection } from './render'\nimport { normalizeSelection, selectedText } from './selection'\nimport { DEFAULT_MOUSE } from './types'\nimport { clamp } from './util'\n\nimport type {\n  Cell,\n  CellMetrics,\n  CellPoint,\n  CursorState,\n  MouseModes,\n  RenderPayload,\n  ScrollbarState\n} from './types'\n\ninterface TerminalState {\n  cols: number\n  rows: number\n  fit: boolean\n  autofocus: boolean\n  rowsData: Cell[][]\n  cursor: CursorState | null\n  mouse: MouseModes\n  scrollbar: ScrollbarState | null\n  focusReporting: boolean\n  focused: boolean\n  composing: boolean\n  cursorBlinkVisible: boolean\n  cursorBlinkTimer: ReturnType<typeof setInterval> | null\n  target: string | null\n  resizeObserver: ResizeObserver | null\n  pendingFitTimer: ReturnType<typeof setTimeout> | null\n  lastFitCols: number | null\n  lastFitRows: number | null\n  selectionAnchor: CellPoint | null\n  selectionFocus: CellPoint | null\n  selecting: boolean\n  pointerActive: boolean\n  autofocusTimers: ReturnType<typeof setTimeout>[]\n  readySent: boolean\n  autofocusPending: boolean\n\n  screen: HTMLDivElement\n  pre: HTMLPreElement\n  selectionLayer: HTMLDivElement\n  measure: HTMLSpanElement\n  input: HTMLTextAreaElement\n  cursorEl: HTMLDivElement\n  cursorText: HTMLSpanElement\n\n  onContainerFocus: () => void\n  onContainerBlur: () => void\n  onPointerDown: (e: MouseEvent) => void\n  onPointerMove: (e: MouseEvent) => void\n  onPointerUp: (e: MouseEvent) => void\n  onDocumentPointerDown: (e: MouseEvent) => void\n  onDocumentFocusIn: (e: FocusEvent) => void\n  onContextMenu: (e: Event) => void\n  onWindowResize: () => void\n  onKeydown: (e: KeyboardEvent) => void\n  onPaste: (e: ClipboardEvent) => void\n  onCopy: (e: ClipboardEvent) => void\n  onCompositionStart: () => void\n  onCompositionEnd: (e: CompositionEvent) => void\n  onInputFocus: () => void\n  onInputBlur: () => void\n}\n\n// Phoenix LiveView hook methods\ninterface HookMethods {\n  el: HTMLElement\n  pushEvent(event: string, payload: object): void\n  pushEventTo(target: string, event: string, payload: object): void\n  handleEvent(event: string, callback: (payload: never) => void): void\n}\n\ntype Hook = TerminalState & HookMethods\n\nfunction pushHookEvent(hook: Hook, name: string, payload: object): void {\n  if (hook.target) {\n    hook.pushEventTo(hook.target, name, payload)\n  } else {\n    hook.pushEvent(name, payload)\n  }\n}\n\nfunction metrics(hook: Hook): CellMetrics {\n  return measureCellMetrics(hook.pre, hook.measure, hook.input, hook.cursorEl)\n}\n\nfunction isInsideTerminal(hook: Hook, node: Node | null): boolean {\n  return Boolean(node && (node === hook.el || node === hook.input || hook.el.contains(node)))\n}\n\nfunction mouseModeActive(hook: Hook): boolean {\n  return Boolean(hook.mouse?.tracking)\n}\n\nfunction hasSelection(hook: Hook): boolean {\n  return (\n    !mouseModeActive(hook) && normalizeSelection(hook.selectionAnchor, hook.selectionFocus) !== null\n  )\n}\n\nfunction clearSelection(hook: Hook): void {\n  hook.selectionAnchor = null\n  hook.selectionFocus = null\n  hook.selecting = false\n  hook.selectionLayer.innerHTML = ''\n}\n\nfunction focusInput(hook: Hook, force = false): void {\n  if (!force && !shouldAutofocus(hook)) {\n    return\n  }\n  if (document.activeElement !== hook.el) {\n    hook.el.focus({ preventScroll: true })\n  }\n  if (document.activeElement !== hook.input) {\n    hook.input.focus({ preventScroll: true })\n  }\n}\n\nfunction blurTerminal(hook: Hook): void {\n  hook.pointerActive = false\n  if (document.activeElement === hook.input) {\n    hook.input.blur()\n  }\n  if (document.activeElement === hook.el) {\n    hook.el.blur()\n  }\n  hook.focused = false\n  hook.cursorBlinkVisible = true\n  syncCursorBlink(hook)\n  doRenderCursor(hook)\n}\n\nfunction disableAutofocus(hook: Hook): void {\n  hook.autofocusPending = false\n  stopAu" <> ...}, {"input.ts", "export function isCopyShortcut(e: KeyboardEvent): boolean {\n  return (e.metaKey || e.ctrlKey) && !e.altKey && e.key.toLowerCase() === 'c'\n}\n\nexport function isPasteShortcut(e: KeyboardEvent): boolean {\n  return (e.metaKey || e.ctrlKey) && !e.altKey && e.key.toLowerCase() === 'v'\n}\n\nexport function mouseButtonName(button: number): string | null {\n  switch (button) {\n    case 0:\n      return 'left'\n    case 1:\n      return 'middle'\n    case 2:\n      return 'right'\n    case 3:\n      return 'four'\n    case 4:\n      return 'five'\n    default:\n      return null\n  }\n}\n\nexport function primaryPressedButton(e: MouseEvent): number {\n  if (e.buttons & 1) return 0\n  if (e.buttons & 4) return 1\n  if (e.buttons & 2) return 2\n  if (e.buttons & 8) return 3\n  if (e.buttons & 16) return 4\n  return -1\n}\n\nexport function hasMouseModifiers(e: MouseEvent): boolean {\n  return e.shiftKey || e.ctrlKey || e.altKey || e.metaKey\n}\n"}, {"phoenix.d.ts", "interface ViewHook {\n  el: HTMLElement\n  pushEvent(event: string, payload: object): void\n  pushEventTo(target: string, event: string, payload: object): void\n  handleEvent(event: string, callback: (payload: never) => void): void\n}\n\ntype ViewHookObject = ThisType<ViewHook> & {\n  mounted?(): void\n  destroyed?(): void\n}\n"}, {"render.ts", "import { CellFlags } from './types'\nimport { esc, rgb } from './util'\n\nimport type { Cell, CellMetrics, Color, Selection } from './types'\n\nexport function renderCells(pre: HTMLPreElement, rows: Cell[][]): void {\n  let html = ''\n  for (const row of rows) {\n    for (const [char, fg, bg, flags] of row) {\n      const styles = cellStyles(fg, bg, flags)\n      const ch = char || ' '\n      if (styles.length > 0) {\n        html += `<span style=\"${styles.join(';')}\">${esc(ch)}</span>`\n      } else {\n        html += esc(ch)\n      }\n    }\n    html += '\\n'\n  }\n  pre.innerHTML = html\n}\n\nexport function renderSelection(\n  layer: HTMLDivElement,\n  selection: Selection | null,\n  cols: number,\n  metrics: CellMetrics\n): void {\n  layer.innerHTML = ''\n\n  if (!selection) {\n    return\n  }\n\n  for (let row = selection.start.row; row <= selection.end.row; row += 1) {\n    const startCol = row === selection.start.row ? selection.start.col : 0\n    const endCol = row === selection.end.row ? selection.end.col : cols - 1\n    const rect = document.createElement('div')\n    rect.style.position = 'absolute'\n    rect.style.left = `${metrics.paddingLeft + startCol * metrics.width}px`\n    rect.style.top = `${metrics.paddingTop + row * metrics.height}px`\n    rect.style.width = `${Math.max(1, endCol - startCol + 1) * metrics.width}px`\n    rect.style.height = `${metrics.height}px`\n    rect.style.background = 'rgba(137, 180, 250, 0.35)'\n    rect.style.borderRadius = '2px'\n    layer.appendChild(rect)\n  }\n}\n\nfunction cellStyles(fg: Color | null, bg: Color | null, flags: number): string[] {\n  const styles: string[] = []\n  const decorations: string[] = []\n\n  if (fg) styles.push(`color:${rgb(fg)}`)\n  if (bg) styles.push(`background:${rgb(bg)}`)\n  if (flags & CellFlags.BOLD) styles.push('font-weight:bold')\n  if (flags & CellFlags.ITALIC) styles.push('font-style:italic')\n  if (flags & CellFlags.DIM) styles.push('opacity:0.5')\n  if (flags & CellFlags.UNDERLINE) decorations.push('underline')\n  if (flags & CellFlags.STRIKETHROUGH) decorations.push('line-through')\n  if (flags & CellFlags.OVERLINE) decorations.push('overline')\n  if (decorations.length > 0) styles.push(`text-decoration:${decorations.join(' ')}`)\n\n  return styles\n}\n\nexport function applyCellTextStyles(el: HTMLElement, cell: Cell | null): void {\n  if (!cell) return\n\n  const [, , , flags] = cell\n  const decorations: string[] = []\n\n  el.style.fontWeight = flags & CellFlags.BOLD ? 'bold' : ''\n  el.style.fontStyle = flags & CellFlags.ITALIC ? 'italic' : ''\n  el.style.opacity = flags & CellFlags.DIM ? '0.5' : '1'\n  if (flags & CellFlags.UNDERLINE) decorations.push('underline')\n  if (flags & CellFlags.STRIKETHROUGH) decorations.push('line-through')\n  if (flags & CellFlags.OVERLINE) decorations.push('overline')\n  el.style.textDecoration = decorations.length > 0 ? decorations.join(' ') : 'none'\n}\n"}, {"selection.ts", "import type { Cell, CellPoint, Selection } from './types'\n\nexport function normalizeSelection(\n  anchor: CellPoint | null,\n  focus: CellPoint | null\n): Selection | null {\n  if (!anchor || !focus) {\n    return null\n  }\n\n  const start = { ...anchor }\n  const end = { ...focus }\n\n  if (end.row < start.row || (end.row === start.row && end.col < start.col)) {\n    return { start: end, end: start }\n  }\n\n  if (start.row === end.row && start.col === end.col) {\n    return null\n  }\n\n  return { start, end }\n}\n\nexport function selectedText(\n  selection: Selection | null,\n  rowsData: Cell[][],\n  cols: number\n): string {\n  if (!selection) {\n    return ''\n  }\n\n  const lines: string[] = []\n\n  for (let row = selection.start.row; row <= selection.end.row; row += 1) {\n    const sourceRow = rowsData[row] || []\n    const startCol = row === selection.start.row ? selection.start.col : 0\n    const endCol = row === selection.end.row ? selection.end.col : cols - 1\n    let text = ''\n\n    for (let col = startCol; col <= endCol; col += 1) {\n      const cell = sourceRow[col]\n      text += cell?.[0] || ' '\n    }\n\n    lines.push(text.trimEnd())\n  }\n\n  return lines.join('\\n')\n}\n"}, {"types.ts", "export type Color = [number, number, number]\n\nexport type Cell = [string, Color | null, Color | null, number]\n\nexport interface CellPoint {\n  col: number\n  row: number\n  encodeX: number\n  encodeY: number\n}\n\nexport interface MouseModes {\n  tracking: boolean\n  x10: boolean\n  normal: boolean\n  button: boolean\n  any: boolean\n  sgr: boolean\n}\n\nexport interface CursorState {\n  x: number | null\n  y: number | null\n  visible: boolean\n  blinking: boolean\n  style: 'block' | 'bar' | 'underline' | 'block_hollow'\n  wide_tail: boolean\n  color: Color | null\n}\n\nexport interface ScrollbarState {\n  total: number\n  offset: number\n  len: number\n}\n\nexport interface RenderPayload {\n  id: string\n  cells: Cell[][]\n  cursor: CursorState\n  mouse: MouseModes\n  scrollbar: ScrollbarState\n  focus_reporting: boolean\n}\n\nexport interface CellMetrics {\n  width: number\n  height: number\n  paddingLeft: number\n  paddingRight: number\n  paddingTop: number\n  paddingBottom: number\n}\n\nexport interface Selection {\n  start: CellPoint\n  end: CellPoint\n}\n\nexport const DEFAULT_MOUSE: MouseModes = {\n  tracking: false,\n  x10: false,\n  normal: false,\n  button: false,\n  any: false,\n  sgr: false\n}\n\nexport const CellFlags = {\n  BOLD: 1,\n  ITALIC: 2,\n  DIM: 4,\n  UNDERLINE: 8,\n  STRIKETHROUGH: 16,\n  OVERLINE: 128\n} as const\n"}, {"util.ts", "import type { Color } from './types'\n\nexport function esc(s: string): string {\n  return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;')\n}\n\nexport function rgb(color: Color): string {\n  return `rgb(${color[0]},${color[1]},${color[2]})`\n}\n\nexport function clamp(value: number, min: number, max: number): number {\n  return Math.min(max, Math.max(min, value))\n}\n"}], %{entry: "hook.ts", exports: "auto", external: [], format: "esm", modules: [], cwd: "", define: %{}, target: "", sourcemap: false, footer: nil, conditions: [], minify: false, import_source: "", jsx: "automatic", jsx_factory: "", jsx_fragment: "", treeshake: false, banner: nil, preamble: nil, module_types: %{}, preserve_entry_signatures: "", main_fields: [], drop_console: false})1413    (oxc 0.17.8) lib/oxc.ex:487: OXC.bundle/21414    (ghostty 0.4.9) lib/mix/compilers/ghostty_js.ex:47: Mix.Compilers.GhosttyJS.do_bundle/21415    (mix 1.20.3) lib/mix/task.ex:589: Mix.Task.run_alias/61416    (mix 1.20.3) lib/mix/tasks/deps.compile.ex:230: anonymous fn/2 in Mix.Tasks.Deps.Compile.do_mix/21417    (mix 1.20.3) lib/mix/project.ex:557: Mix.Project.in_project/41418    (elixir 1.20.3) lib/file.ex:2100: File.cd!/21419    (mix 1.20.3) lib/mix/dep.ex:279: Mix.Dep.in_dependency/3