=== keep-starknet-strange/s2morrow-b3aecfccf === >>> git clone --depth 1 --no-tags https://github.com/keep-starknet-strange/s2morrow . [err] Cloning into '.'... >>> maat-check-versions [out] Name Version Source Installed [out] nodejs 23.11.0 ASDF_NODEJS_VERSION true [out] scarb nightly-2025-06-16 ASDF_SCARB_VERSION true [out] starknet-foundry 0.44.0 ASDF_STARKNET-FOUNDRY_VERSION true >>> maat-patch [err] Installed 1 package in 2ms [out] diff --git a/Scarb.toml b/Scarb.toml [out] index 8f00bc2..3ba5f9b 100644 [out] --- a/Scarb.toml [out] +++ b/Scarb.toml [out] @@ -3,3 +3,14 @@ members = ["packages/*"] [out] [out] [cairo] [out] enable-gas = false [out] + [out] +[patch.scarbs-xyz] [out] +assert_macros = "2.11.4+nightly-2025-06-16" # NOTE: added by maat-patch, was: None [out] +starknet = "2.11.4+nightly-2025-06-16" # NOTE: added by maat-patch, was: None [out] +cairo_test = "2.11.4+nightly-2025-06-16" # NOTE: added by maat-patch, was: None [out] +snforge_std = "0.44.0" # NOTE: added by maat-patch, was: None [out] +snforge_scarb_plugin = "0.44.0" # NOTE: added by maat-patch, was: None [out] + [out] +[patch."https://github.com/foundry-rs/starknet-foundry.git"] [out] +snforge_std = "0.44.0" # NOTE: added by maat-patch, was: None [out] +snforge_scarb_plugin = "0.44.0" # NOTE: added by maat-patch, was: None [out] diff --git a/packages/falcon/Scarb.toml b/packages/falcon/Scarb.toml [out] index c0a0833..5e24c0e 100644 [out] --- a/packages/falcon/Scarb.toml [out] +++ b/packages/falcon/Scarb.toml [out] @@ -2,6 +2,7 @@ [out] name = "falcon" [out] version = "0.1.0" [out] edition = "2024_07" [out] +cairo-version = "2.11.4+nightly-2025-06-16" # NOTE: added by maat-patch, was: None [out] [out] [lib] [out] [out] @@ -12,3 +13,9 @@ cairo_execute = "2.11.4" [out] [out] [dev-dependencies] [out] cairo_test = "2.11.4" [out] + [out] +[scripts] [out] +test = "scarb cairo-test" # NOTE: added by maat-patch, was: None [out] + [out] +[tool.scarb] [out] +allow-prebuilt-plugins = ["snforge_std"] # NOTE: maat-patch added 'snforge_std' [out] diff --git a/packages/sphincs-plus/Scarb.toml b/packages/sphincs-plus/Scarb.toml [out] index 7fd03d7..19b0b22 100644 [out] --- a/packages/sphincs-plus/Scarb.toml [out] +++ b/packages/sphincs-plus/Scarb.toml [out] @@ -2,6 +2,7 @@ [out] name = "sphincs_plus" [out] version = "0.1.0" [out] edition = "2024_07" [out] +cairo-version = "2.11.4+nightly-2025-06-16" # NOTE: added by maat-patch, was: None [out] [out] [lib] [out] [out] @@ -17,3 +18,9 @@ cairo_test = "2.11.4" [out] default = [] [out] blake_hash = [] [out] sparse_addr = [] [out] + [out] +[scripts] [out] +test = "scarb cairo-test" # NOTE: added by maat-patch, was: None [out] + [out] +[tool.scarb] [out] +allow-prebuilt-plugins = ["snforge_std"] # NOTE: maat-patch added 'snforge_std' >>> scarb fetch [out] warn: patch `starknet` (`registry+https://scarbs.xyz/`) for source `https://scarbs.xyz/` has not been used [out] warn: patch `snforge_std` (`registry+https://scarbs.xyz/`) for source `https://github.com/foundry-rs/starknet-foundry` has not been used [out] warn: patch `assert_macros` (`registry+https://scarbs.xyz/`) for source `https://scarbs.xyz/` has not been used [out] warn: patch `snforge_scarb_plugin` (`registry+https://scarbs.xyz/`) for source `https://scarbs.xyz/` has not been used [out] warn: patch `snforge_scarb_plugin` (`registry+https://scarbs.xyz/`) for source `https://github.com/foundry-rs/starknet-foundry` has not been used [out] warn: patch `cairo_test` (`registry+https://scarbs.xyz/`) for source `https://scarbs.xyz/` has not been used [out] warn: patch `snforge_std` (`registry+https://scarbs.xyz/`) for source `https://scarbs.xyz/` has not been used >>> scarb tree -q --workspace [out] falcon v0.1.0 (/mnt/maat-workbench/packages/falcon/Scarb.toml) [out] ├── cairo_execute v2.11.4 (std) [out] └── [dev-dependencies] [out] └── cairo_test v2.11.4 (std) [out] [out] sphincs_plus v0.1.0 (/mnt/maat-workbench/packages/sphincs-plus/Scarb.toml) [out] ├── cairo_execute v2.11.4 (std) (*) [out] └── [dev-dependencies] [out] └── cairo_test v2.11.4 (std) (*) >>> SCARB_IGNORE_CAIRO_VERSION=true scarb build --workspace --test [out] warn: patch `snforge_scarb_plugin` (`registry+https://scarbs.xyz/`) for source `https://github.com/foundry-rs/starknet-foundry` has not been used [out] warn: patch `assert_macros` (`registry+https://scarbs.xyz/`) for source `https://scarbs.xyz/` has not been used [out] warn: patch `cairo_test` (`registry+https://scarbs.xyz/`) for source `https://scarbs.xyz/` has not been used [out] warn: patch `snforge_scarb_plugin` (`registry+https://scarbs.xyz/`) for source `https://scarbs.xyz/` has not been used [out] warn: patch `snforge_std` (`registry+https://scarbs.xyz/`) for source `https://github.com/foundry-rs/starknet-foundry` has not been used [out] warn: patch `starknet` (`registry+https://scarbs.xyz/`) for source `https://scarbs.xyz/` has not been used [out] warn: patch `snforge_std` (`registry+https://scarbs.xyz/`) for source `https://scarbs.xyz/` has not been used [out] Compiling test(falcon_unittest) falcon v0.1.0 (/mnt/maat-workbench/packages/falcon/Scarb.toml) [out] warn: Unreachable code [out] --> /mnt/maat-workbench/packages/falcon/src/ntt_constants.cairo:121:9 [out] array![].span() [out] ^^^^^^^^^^^^^^^ [out] [out] warn: Unreachable code [out] --> /mnt/maat-workbench/packages/falcon/src/ntt_constants.cairo:245:9 [out] array![].span() [out] ^^^^^^^^^^^^^^^ [out] [out] Compiling test(sphincs_plus_unittest) sphincs_plus v0.1.0 (/mnt/maat-workbench/packages/sphincs-plus/Scarb.toml) [out] warn: Unused import: `sphincs_plus::fors::SPX_FORS_HEIGHT` [out] --> /mnt/maat-workbench/packages/sphincs-plus/src/fors.cairo:12:48 [out] use crate::params_128s::{SPX_FORS_BASE_OFFSET, SPX_FORS_HEIGHT, SPX_FORS_TREES}; [out] ^^^^^^^^^^^^^^^ [out] [out] warn: Unused import: `sphincs_plus::fors::SPX_FORS_TREES` [out] --> /mnt/maat-workbench/packages/sphincs-plus/src/fors.cairo:12:65 [out] use crate::params_128s::{SPX_FORS_BASE_OFFSET, SPX_FORS_HEIGHT, SPX_FORS_TREES}; [out] ^^^^^^^^^^^^^^ [out] [out] warn: Unused import: `sphincs_plus::hasher::SPX_HASH_LEN` [out] --> /mnt/maat-workbench/packages/sphincs-plus/src/hasher.cairo:19:25 [out] use crate::params_128s::SPX_HASH_LEN; [out] ^^^^^^^^^^^^ [out] [out] warn: Unused import: `sphincs_plus::sphincs::SPX_D` [out] --> /mnt/maat-workbench/packages/sphincs-plus/src/sphincs.cairo:10:26 [out] use crate::params_128s::{SPX_D, SPX_DGST_BYTES, SPX_TREE_HEIGHT}; [out] ^^^^^ [out] [out] warn: Unused import: `sphincs_plus::sphincs::SPX_TREE_HEIGHT` [out] --> /mnt/maat-workbench/packages/sphincs-plus/src/sphincs.cairo:10:49 [out] use crate::params_128s::{SPX_D, SPX_DGST_BYTES, SPX_TREE_HEIGHT}; [out] ^^^^^^^^^^^^^^^ [out] [out] warn: Unreachable code [out] --> /mnt/maat-workbench/packages/sphincs-plus/src/word_array.cairo:190:13 [out] 0 [out] ^ [out] [out] Finished `dev` profile target(s) in 8 seconds >>> SCARB_IGNORE_CAIRO_VERSION=true scarb lint --workspace --deny-warnings [out] warn: patch `cairo_test` (`registry+https://scarbs.xyz/`) for source `https://scarbs.xyz/` has not been used [out] warn: patch `snforge_scarb_plugin` (`registry+https://scarbs.xyz/`) for source `https://scarbs.xyz/` has not been used [out] warn: patch `starknet` (`registry+https://scarbs.xyz/`) for source `https://scarbs.xyz/` has not been used [out] warn: patch `snforge_scarb_plugin` (`registry+https://scarbs.xyz/`) for source `https://github.com/foundry-rs/starknet-foundry` has not been used [out] warn: patch `snforge_std` (`registry+https://scarbs.xyz/`) for source `https://scarbs.xyz/` has not been used [out] warn: patch `snforge_std` (`registry+https://scarbs.xyz/`) for source `https://github.com/foundry-rs/starknet-foundry` has not been used [out] warn: patch `assert_macros` (`registry+https://scarbs.xyz/`) for source `https://scarbs.xyz/` has not been used [out] Linting lib(falcon) falcon v0.1.0 (/mnt/maat-workbench/packages/falcon/Scarb.toml) [out] warn: Plugin diagnostic: Manual assert detected. Consider using assert!() macro instead. [out] --> /mnt/maat-workbench/packages/falcon/src/ntt_constants.cairo:117:12-122:5 [out] } else if degree == 1024 { [out] ____________^ [out] | ... [out] | } [out] |_____^ [out] [out] warn: Plugin diagnostic: Manual assert detected. Consider using assert!() macro instead. [out] --> /mnt/maat-workbench/packages/falcon/src/ntt_constants.cairo:241:12-246:5 [out] } else if degree == 1024 { [out] ____________^ [out] | ... [out] | } [out] |_____^ [out] [out] error: lint checking `falcon` failed due to previous errors [out] [out] Stack backtrace: [out] 0: anyhow::kind::Adhoc::new [out] 1: anyhow::__private::format_err.104784 [out] 2: scarb::ops::lint::lint [out] 3: scarb::commands::lint::do_lint [out] 4: scarb::commands::run [out] 5: scarb::main [out] 6: std::sys::backtrace::__rust_begin_short_backtrace [out] 7: main [out] 8: __libc_start_call_main [out] 9: __libc_start_main_impl [out] 10: _start Process finished with exit code 1 >>> SCARB_IGNORE_CAIRO_VERSION=true SNFORGE_FUZZER_SEED=1 SNFORGE_IGNORE_FORK_TESTS=1 scarb test --workspace [out] Running test falcon (scarb cairo-test) [out] warn: patch `starknet` (`registry+https://scarbs.xyz/`) for source `https://scarbs.xyz/` has not been used [out] warn: patch `snforge_scarb_plugin` (`registry+https://scarbs.xyz/`) for source `https://github.com/foundry-rs/starknet-foundry` has not been used [out] warn: patch `cairo_test` (`registry+https://scarbs.xyz/`) for source `https://scarbs.xyz/` has not been used [out] warn: patch `snforge_std` (`registry+https://scarbs.xyz/`) for source `https://scarbs.xyz/` has not been used [out] warn: patch `snforge_std` (`registry+https://scarbs.xyz/`) for source `https://github.com/foundry-rs/starknet-foundry` has not been used [out] warn: patch `assert_macros` (`registry+https://scarbs.xyz/`) for source `https://scarbs.xyz/` has not been used [out] warn: patch `snforge_scarb_plugin` (`registry+https://scarbs.xyz/`) for source `https://scarbs.xyz/` has not been used [out] Compiling test(falcon_unittest) falcon v0.1.0 (/mnt/maat-workbench/packages/falcon/Scarb.toml) [out] warn: Unreachable code [out] --> /mnt/maat-workbench/packages/falcon/src/ntt_constants.cairo:121:9 [out] array![].span() [out] ^^^^^^^^^^^^^^^ [out] [out] warn: Unreachable code [out] --> /mnt/maat-workbench/packages/falcon/src/ntt_constants.cairo:245:9 [out] array![].span() [out] ^^^^^^^^^^^^^^^ [out] [out] Finished `dev` profile target(s) in 3 seconds [out] Testing falcon [out] running 10 tests [out] test falcon::ntt::tests::test_ntt_8 ... ok [out] test falcon::ntt::tests::test_ntt_16 ... ok [out] test falcon::ntt::tests::test_ntt_4 ... ok [out] test falcon::ntt::tests::test_ntt_64 ... ok [out] test falcon::ntt::tests::test_ntt_32 ... ok [out] test falcon::ntt::tests::test_ntt_128 ... ok [out] test falcon::ntt::tests::test_split_ntt ... ok [out] test falcon::ntt::tests::test_ntt_256 ... ok [out] test falcon::ntt::tests::test_ntt_512 ... ok [out] test falcon::falcon::tests::test_falcon1024_verify_uncompressed ... ok [out] test result: ok. 10 passed; 0 failed; 0 ignored; 0 filtered out; [out] Running test sphincs_plus (scarb cairo-test) [out] warn: patch `starknet` (`registry+https://scarbs.xyz/`) for source `https://scarbs.xyz/` has not been used [out] warn: patch `snforge_std` (`registry+https://scarbs.xyz/`) for source `https://github.com/foundry-rs/starknet-foundry` has not been used [out] warn: patch `cairo_test` (`registry+https://scarbs.xyz/`) for source `https://scarbs.xyz/` has not been used [out] warn: patch `snforge_std` (`registry+https://scarbs.xyz/`) for source `https://scarbs.xyz/` has not been used [out] warn: patch `snforge_scarb_plugin` (`registry+https://scarbs.xyz/`) for source `https://scarbs.xyz/` has not been used [out] warn: patch `snforge_scarb_plugin` (`registry+https://scarbs.xyz/`) for source `https://github.com/foundry-rs/starknet-foundry` has not been used [out] warn: patch `assert_macros` (`registry+https://scarbs.xyz/`) for source `https://scarbs.xyz/` has not been used [out] Compiling test(sphincs_plus_unittest) sphincs_plus v0.1.0 (/mnt/maat-workbench/packages/sphincs-plus/Scarb.toml) [out] warn: Unused import: `sphincs_plus::fors::SPX_FORS_HEIGHT` [out] --> /mnt/maat-workbench/packages/sphincs-plus/src/fors.cairo:12:48 [out] use crate::params_128s::{SPX_FORS_BASE_OFFSET, SPX_FORS_HEIGHT, SPX_FORS_TREES}; [out] ^^^^^^^^^^^^^^^ [out] [out] warn: Unused import: `sphincs_plus::fors::SPX_FORS_TREES` [out] --> /mnt/maat-workbench/packages/sphincs-plus/src/fors.cairo:12:65 [out] use crate::params_128s::{SPX_FORS_BASE_OFFSET, SPX_FORS_HEIGHT, SPX_FORS_TREES}; [out] ^^^^^^^^^^^^^^ [out] [out] warn: Unused import: `sphincs_plus::hasher::SPX_HASH_LEN` [out] --> /mnt/maat-workbench/packages/sphincs-plus/src/hasher.cairo:19:25 [out] use crate::params_128s::SPX_HASH_LEN; [out] ^^^^^^^^^^^^ [out] [out] warn: Unused import: `sphincs_plus::sphincs::SPX_D` [out] --> /mnt/maat-workbench/packages/sphincs-plus/src/sphincs.cairo:10:26 [out] use crate::params_128s::{SPX_D, SPX_DGST_BYTES, SPX_TREE_HEIGHT}; [out] ^^^^^ [out] [out] warn: Unused import: `sphincs_plus::sphincs::SPX_TREE_HEIGHT` [out] --> /mnt/maat-workbench/packages/sphincs-plus/src/sphincs.cairo:10:49 [out] use crate::params_128s::{SPX_D, SPX_DGST_BYTES, SPX_TREE_HEIGHT}; [out] ^^^^^^^^^^^^^^^ [out] [out] warn: Unreachable code [out] --> /mnt/maat-workbench/packages/sphincs-plus/src/word_array.cairo:190:13 [out] 0 [out] ^ [out] [out] Finished `dev` profile target(s) in 6 seconds [out] Testing sphincs_plus [out] running 16 tests [out] test sphincs_plus::wots::tests::test_chain_hash_2 ... ok [out] test sphincs_plus::address::dense::tests::test_fors_tree_address ... ok [out] test sphincs_plus::sphincs::tests::test_split_xdigest_128s ... ok [out] test sphincs_plus::hasher::tests::test_thash_128s_2 ... ok [out] test sphincs_plus::fors::tests::test_message_to_indices_128s ... ok [out] test sphincs_plus::hasher::tests::test_hash_message_128s ... ok [out] test sphincs_plus::wots::tests::test_chain_hash_3 ... ok [out] test sphincs_plus::hasher::sha256::tests::test_sha256_finalize ... ok [out] test sphincs_plus::wots::tests::test_add_checksum ... ok [out] test sphincs_plus::hasher::tests::test_thash_128s ... ok [out] test sphincs_plus::wots::tests::test_base_w_128s ... ok [out] test sphincs_plus::hasher::tests::test_compute_root ... ok [out] test sphincs_plus::hasher::tests::test_initialize_hash_function ... ok [out] test sphincs_plus::wots::tests::test_chain_hash ... ok [out] test sphincs_plus::wots::tests::test_wots_pk_from_sig ... ok [out] test sphincs_plus::sphincs::tests::test_verify_128s ... ok [out] test result: ok. 16 passed; 0 failed; 0 ignored; 0 filtered out; >>> SCARB_IGNORE_CAIRO_VERSION=true maat-test-ls [err] 0.004056601s WARN cairo_language_server::config: client does not support `workspace/configuration` requests, config will not be reloaded [out] Opening file:///mnt/maat-workbench/packages/falcon/src/lib.cairo [out] Opening file:///mnt/maat-workbench/packages/sphincs-plus/src/lib.cairo [out] [out] ============================== [out] Analysis completed, server is idle. [out] [out] ============================== [out] # Analyzed Crates [out] --- [out] ```json [out] { [out] "name": "core", [out] "source_paths": [ [out] "/mnt/maat-cache/scarb/registry/std/d5f083c33/core/src/lib.cairo" [out] ], [out] "settings": { [out] "name": "core", [out] "edition": "2024_07", [out] "version": "2.11.4", [out] "cfg_set": [ [out] [ [out] "gas", [out] "disabled" [out] ], [out] [ [out] "target", [out] "executable" [out] ], [out] [ [out] "target", [out] "lib" [out] ], [out] [ [out] "target", [out] "test" [out] ] [out] ], [out] "dependencies": { [out] "core": { [out] "discriminator": null [out] } [out] }, [out] "experimental_features": { [out] "negative_impls": true, [out] "associated_item_constraints": true, [out] "coupons": true, [out] "user_defined_inline_macros": false [out] } [out] }, [out] "linter_configuration": { [out] "include_compiler_generated_files": false [out] }, [out] "plugins": { [out] "builtin_plugins": [ [out] "Executable", [out] "CairoTest" [out] ] [out] } [out] } [out] [out] { [out] "name": "falcon", [out] "source_paths": [ [out] "/mnt/maat-workbench/packages/falcon/src/lib.cairo" [out] ], [out] "settings": { [out] "name": "falcon", [out] "edition": "2024_07", [out] "version": "0.1.0", [out] "cfg_set": [ [out] [ [out] "gas", [out] "disabled" [out] ], [out] [ [out] "target", [out] "executable" [out] ], [out] [ [out] "target", [out] "lib" [out] ], [out] [ [out] "target", [out] "test" [out] ], [out] "test" [out] ], [out] "dependencies": { [out] "core": { [out] "discriminator": null [out] }, [out] "falcon": { [out] "discriminator": "falcon 0.1.0 (path+file:///mnt/maat-workbench/packages/falcon/Scarb.toml)" [out] } [out] }, [out] "experimental_features": { [out] "negative_impls": false, [out] "associated_item_constraints": false, [out] "coupons": false, [out] "user_defined_inline_macros": false [out] } [out] }, [out] "linter_configuration": { [out] "include_compiler_generated_files": false [out] }, [out] "plugins": { [out] "builtin_plugins": [ [out] "Executable", [out] "CairoTest" [out] ] [out] } [out] } [out] [out] { [out] "name": "sphincs_plus", [out] "source_paths": [ [out] "/mnt/maat-workbench/packages/sphincs-plus/src/lib.cairo" [out] ], [out] "settings": { [out] "name": "sphincs_plus", [out] "edition": "2024_07", [out] "version": "0.1.0", [out] "cfg_set": [ [out] [ [out] "feature", [out] "default" [out] ], [out] [ [out] "gas", [out] "disabled" [out] ], [out] [ [out] "target", [out] "executable" [out] ], [out] [ [out] "target", [out] "lib" [out] ], [out] [ [out] "target", [out] "test" [out] ], [out] "test" [out] ], [out] "dependencies": { [out] "core": { [out] "discriminator": null [out] }, [out] "sphincs_plus": { [out] "discriminator": "sphincs_plus 0.1.0 (path+file:///mnt/maat-workbench/packages/sphincs-plus/Scarb.toml)" [out] } [out] }, [out] "experimental_features": { [out] "negative_impls": false, [out] "associated_item_constraints": false, [out] "coupons": false, [out] "user_defined_inline_macros": false [out] } [out] }, [out] "linter_configuration": { [out] "include_compiler_generated_files": false [out] }, [out] "plugins": { [out] "builtin_plugins": [ [out] "Executable", [out] "CairoTest" [out] ] [out] } [out] } [out] ``` [out] [out] ============================== [out] file:///mnt/maat-workbench/packages/falcon/src/ntt_constants.cairo (4) [out] (W) Plugin diagnostic: Manual assert detected. Consider using assert!() macro instead. [Ln 116, Col 11] [out] (W) Plugin diagnostic: Manual assert detected. Consider using assert!() macro instead. [Ln 240, Col 11] [out] (W) Unreachable code [Ln 120, Col 8] [out] (W) Unreachable code [Ln 244, Col 8] [out] file:///mnt/maat-workbench/packages/sphincs-plus/src/fors.cairo (4) [out] (W) Unused import: `sphincs_plus::fors::SPX_FORS_HEIGHT` [Ln 11, Col 47] [out] (W) Unused import: `sphincs_plus::fors::SPX_FORS_TREES` [Ln 11, Col 64] [out] (W) Plugin diagnostic: using `clone` on type which implements `Copy` trait [Ln 28, Col 29] [out] (W) Plugin diagnostic: using `clone` on type which implements `Copy` trait [Ln 59, Col 27] [out] file:///mnt/maat-workbench/packages/sphincs-plus/src/hasher.cairo (2) [out] (W) Unused import: `sphincs_plus::hasher::SPX_HASH_LEN` [Ln 18, Col 24] [out] (W) Plugin diagnostic: using `clone` on type which implements `Copy` trait [Ln 109, Col 22] [out] file:///mnt/maat-workbench/packages/sphincs-plus/src/sphincs.cairo (4) [out] (W) Unused import: `sphincs_plus::sphincs::SPX_D` [Ln 9, Col 25] [out] (W) Unused import: `sphincs_plus::sphincs::SPX_TREE_HEIGHT` [Ln 9, Col 48] [out] (W) Plugin diagnostic: using `clone` on type which implements `Copy` trait [Ln 74, Col 20] [out] (W) Plugin diagnostic: using `clone` on type which implements `Copy` trait [Ln 78, Col 31] [out] file:///mnt/maat-workbench/packages/sphincs-plus/src/word_array.cairo (2) [out] (W) Plugin diagnostic: Manual assert detected. Consider using assert!() macro instead. [Ln 184, Col 15] [out] (W) Unreachable code [Ln 189, Col 12] [out] file:///mnt/maat-workbench/packages/sphincs-plus/src/wots.cairo (1) [out] (W) Plugin diagnostic: using `clone` on type which implements `Copy` trait [Ln 46, Col 24] [out] total: 0 errors, 17 warnings, 0 infos, 0 hints [out] [out] ============================== [out] CairoLS process exited with code: 0