[INFO] fetching crate boobytrap 0.1.61... [INFO] testing boobytrap-0.1.61 against try#b83b707f97d809763b7861afa7638871f3339a33 for pr-145838-1 [INFO] extracting crate boobytrap 0.1.61 into /workspace/builds/worker-4-tc2/source [INFO] started tweaking crates.io crate boobytrap 0.1.61 [INFO] finished tweaking crates.io crate boobytrap 0.1.61 [INFO] tweaked toml for crates.io crate boobytrap 0.1.61 written to /workspace/builds/worker-4-tc2/source/Cargo.toml [INFO] validating manifest of crates.io crate boobytrap 0.1.61 on toolchain b83b707f97d809763b7861afa7638871f3339a33 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b83b707f97d809763b7861afa7638871f3339a33" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate boobytrap 0.1.61 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b83b707f97d809763b7861afa7638871f3339a33" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+b83b707f97d809763b7861afa7638871f3339a33" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 501e276406d64616931ed2cd86a00e5af0c7942b7bb68f55ee6c5604228bbd1b [INFO] running `Command { std: "docker" "start" "-a" "501e276406d64616931ed2cd86a00e5af0c7942b7bb68f55ee6c5604228bbd1b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "501e276406d64616931ed2cd86a00e5af0c7942b7bb68f55ee6c5604228bbd1b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "501e276406d64616931ed2cd86a00e5af0c7942b7bb68f55ee6c5604228bbd1b", kill_on_drop: false }` [INFO] [stdout] 501e276406d64616931ed2cd86a00e5af0c7942b7bb68f55ee6c5604228bbd1b [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+b83b707f97d809763b7861afa7638871f3339a33" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] e8148b2b8c6dc374edf2ad7aaac21e59a3fed5fb02d9bd9ab2d9f611787339c1 [INFO] running `Command { std: "docker" "start" "-a" "e8148b2b8c6dc374edf2ad7aaac21e59a3fed5fb02d9bd9ab2d9f611787339c1", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.87 [INFO] [stderr] Compiling once_cell v1.20.2 [INFO] [stderr] Compiling serde v1.0.210 [INFO] [stderr] Compiling bytes v1.8.0 [INFO] [stderr] Compiling cc v1.1.30 [INFO] [stderr] Compiling smallvec v1.13.2 [INFO] [stderr] Compiling thiserror v1.0.64 [INFO] [stderr] Compiling libc v0.2.159 [INFO] [stderr] Compiling httparse v1.9.5 [INFO] [stderr] Compiling crunchy v0.2.2 [INFO] [stderr] Compiling typenum v1.17.0 [INFO] [stderr] Compiling futures-task v0.3.31 [INFO] [stderr] Compiling tiny-keccak v2.0.2 [INFO] [stderr] Compiling serde_json v1.0.128 [INFO] [stderr] Compiling native-tls v0.2.12 [INFO] [stderr] Compiling allocator-api2 v0.2.20 [INFO] [stderr] Compiling futures-util v0.3.31 [INFO] [stderr] Compiling tracing-core v0.1.32 [INFO] [stderr] Compiling parking_lot_core v0.9.10 [INFO] [stderr] Compiling unicode-normalization v0.1.24 [INFO] [stderr] Compiling unicode-bidi v0.3.17 [INFO] [stderr] Compiling getrandom v0.2.15 [INFO] [stderr] Compiling rustls-pki-types v1.9.0 [INFO] [stderr] Compiling parking_lot v0.12.3 [INFO] [stderr] Compiling http v1.1.0 [INFO] [stderr] Compiling anyhow v1.0.93 [INFO] [stderr] Compiling sync_wrapper v1.0.1 [INFO] [stderr] Compiling ipnet v2.10.1 [INFO] [stderr] Compiling tracing v0.1.40 [INFO] [stderr] Compiling const-oid v0.10.0-rc.2 [INFO] [stderr] Compiling winnow v0.6.20 [INFO] [stderr] Compiling num_cpus v1.16.0 [INFO] [stderr] Compiling keccak v0.2.0-pre.0 [INFO] [stderr] Compiling rustls-pemfile v2.2.0 [INFO] [stderr] Compiling quote v1.0.37 [INFO] [stderr] Compiling idna v0.5.0 [INFO] [stderr] Compiling arraydeque v0.5.1 [INFO] [stderr] Compiling syn v2.0.79 [INFO] [stderr] Compiling hybrid-array v0.2.0-rc.11 [INFO] [stderr] Compiling threadpool v1.8.1 [INFO] [stderr] Compiling convert_case v0.6.0 [INFO] [stderr] Compiling pathdiff v0.2.2 [INFO] [stderr] Compiling whoami v1.5.2 [INFO] [stderr] Compiling http-body v1.0.1 [INFO] [stderr] Compiling const-random-macro v0.1.16 [INFO] [stderr] Compiling openssl-sys v0.9.103 [INFO] [stderr] Compiling blake3 v1.5.4 [INFO] [stderr] Compiling url v2.5.2 [INFO] [stderr] Compiling http-body-util v0.1.2 [INFO] [stderr] Compiling const-random v0.1.18 [INFO] [stderr] Compiling dlv-list v0.5.2 [INFO] [stderr] Compiling crypto-common v0.2.0-rc.1 [INFO] [stderr] Compiling block-buffer v0.11.0-rc.2 [INFO] [stderr] Compiling openssl v0.10.66 [INFO] [stderr] Compiling digest v0.11.0-pre.9 [INFO] [stderr] Compiling sha3 v0.11.0-pre.4 [INFO] [stderr] Compiling darling_core v0.20.10 [INFO] [stderr] Compiling serde_derive v1.0.210 [INFO] [stderr] Compiling zerocopy-derive v0.7.35 [INFO] [stderr] Compiling tokio-macros v2.4.0 [INFO] [stderr] Compiling thiserror-impl v1.0.64 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling async-trait v0.1.83 [INFO] [stderr] Compiling tokio v1.41.1 [INFO] [stderr] Compiling zerocopy v0.7.35 [INFO] [stderr] Compiling pest v2.7.13 [INFO] [stderr] Compiling ahash v0.8.11 [INFO] [stderr] Compiling ppv-lite86 v0.2.20 [INFO] [stderr] Compiling rand_core v0.9.0-alpha.2 [INFO] [stderr] Compiling hashbrown v0.14.5 [INFO] [stderr] Compiling darling_macro v0.20.10 [INFO] [stderr] Compiling rand_chacha v0.9.0-alpha.2 [INFO] [stderr] Compiling darling v0.20.10 [INFO] [stderr] Compiling pest_meta v2.7.13 [INFO] [stderr] Compiling serde_with_macros v3.11.0 [INFO] [stderr] Compiling rand v0.9.0-alpha.2 [INFO] [stderr] Compiling hashlink v0.8.4 [INFO] [stderr] Compiling ordered-multimap v0.7.3 [INFO] [stderr] Compiling rust-ini v0.20.0 [INFO] [stderr] Compiling yaml-rust2 v0.8.1 [INFO] [stderr] Compiling pest_generator v2.7.13 [INFO] [stderr] Compiling pest_derive v2.7.13 [INFO] [stderr] Compiling bitflags v2.6.0 [INFO] [stderr] Compiling toml_datetime v0.6.8 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling serde_spanned v0.6.8 [INFO] [stderr] Compiling serde_with v3.11.0 [INFO] [stderr] Compiling json5 v0.4.1 [INFO] [stderr] Compiling toml_edit v0.22.22 [INFO] [stderr] Compiling ron v0.8.1 [INFO] [stderr] Compiling tokio-util v0.7.12 [INFO] [stderr] Compiling h2 v0.4.6 [INFO] [stderr] Compiling filesystem-hashing v0.3.4 [INFO] [stderr] Compiling toml v0.8.19 [INFO] [stderr] Compiling config v0.14.1 [INFO] [stderr] Compiling tokio-native-tls v0.3.1 [INFO] [stderr] Compiling hyper v1.4.1 [INFO] [stderr] Compiling hyper-util v0.1.9 [INFO] [stderr] Compiling hyper-tls v0.6.0 [INFO] [stderr] Compiling reqwest v0.12.9 [INFO] [stderr] Compiling httping v0.1.9 [INFO] [stderr] Compiling discord-webhook-lib v0.1.7 [INFO] [stderr] Compiling boobytrap v0.1.61 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::process` [INFO] [stdout] --> src/boobytrap.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use std::process; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::process::exit` [INFO] [stdout] --> src/default_config.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::process::exit; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `exit` [INFO] [stdout] --> src/monitors/devices.rs:6:20 [INFO] [stdout] | [INFO] [stdout] 6 | use std::process::{exit, Command}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `mon_usb` and `detection_triggered` are never read [INFO] [stdout] --> src/boobytrap.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 24 | pub struct AppState { [INFO] [stdout] | -------- fields in this struct [INFO] [stdout] 25 | pub mon_usb: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 26 | pub detection_triggered: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `load_state` is never used [INFO] [stdout] --> src/monitors/filechanges.rs:121:8 [INFO] [stdout] | [INFO] [stdout] 25 | impl FileChanges { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 121 | fn load_state(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 59.21s [INFO] running `Command { std: "docker" "inspect" "e8148b2b8c6dc374edf2ad7aaac21e59a3fed5fb02d9bd9ab2d9f611787339c1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e8148b2b8c6dc374edf2ad7aaac21e59a3fed5fb02d9bd9ab2d9f611787339c1", kill_on_drop: false }` [INFO] [stdout] e8148b2b8c6dc374edf2ad7aaac21e59a3fed5fb02d9bd9ab2d9f611787339c1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+b83b707f97d809763b7861afa7638871f3339a33" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 48d393115abad7f5d0fd97198e080010411054352362c9c0fdb05cdc29fd5970 [INFO] running `Command { std: "docker" "start" "-a" "48d393115abad7f5d0fd97198e080010411054352362c9c0fdb05cdc29fd5970", kill_on_drop: false }` [INFO] [stderr] Compiling boobytrap v0.1.61 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::process` [INFO] [stdout] --> src/boobytrap.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use std::process; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::process::exit` [INFO] [stdout] --> src/default_config.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::process::exit; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `exit` [INFO] [stdout] --> src/monitors/devices.rs:6:20 [INFO] [stdout] | [INFO] [stdout] 6 | use std::process::{exit, Command}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `mon_usb` and `detection_triggered` are never read [INFO] [stdout] --> src/boobytrap.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 24 | pub struct AppState { [INFO] [stdout] | -------- fields in this struct [INFO] [stdout] 25 | pub mon_usb: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 26 | pub detection_triggered: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `load_state` is never used [INFO] [stdout] --> src/monitors/filechanges.rs:121:8 [INFO] [stdout] | [INFO] [stdout] 25 | impl FileChanges { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 121 | fn load_state(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1.47s [INFO] running `Command { std: "docker" "inspect" "48d393115abad7f5d0fd97198e080010411054352362c9c0fdb05cdc29fd5970", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "48d393115abad7f5d0fd97198e080010411054352362c9c0fdb05cdc29fd5970", kill_on_drop: false }` [INFO] [stdout] 48d393115abad7f5d0fd97198e080010411054352362c9c0fdb05cdc29fd5970 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+b83b707f97d809763b7861afa7638871f3339a33" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 809d1bbee9f43bf372620986d67483ac7d98dcd35903983f71b4a62ccd9b2bc0 [INFO] running `Command { std: "docker" "start" "-a" "809d1bbee9f43bf372620986d67483ac7d98dcd35903983f71b4a62ccd9b2bc0", kill_on_drop: false }` [INFO] [stderr] warning: unused import: `std::process` [INFO] [stderr] --> src/boobytrap.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use std::process; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::process::exit` [INFO] [stderr] --> src/default_config.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::process::exit; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `exit` [INFO] [stderr] --> src/monitors/devices.rs:6:20 [INFO] [stderr] | [INFO] [stderr] 6 | use std::process::{exit, Command}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: fields `mon_usb` and `detection_triggered` are never read [INFO] [stderr] --> src/boobytrap.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 24 | pub struct AppState { [INFO] [stderr] | -------- fields in this struct [INFO] [stderr] 25 | pub mon_usb: bool, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] 26 | pub detection_triggered: bool, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: method `load_state` is never used [INFO] [stderr] --> src/monitors/filechanges.rs:121:8 [INFO] [stderr] | [INFO] [stderr] 25 | impl FileChanges { [INFO] [stderr] | ---------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 121 | fn load_state(&mut self) { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `boobytrap` (bin "boobytrap" test) generated 5 warnings (run `cargo fix --bin "boobytrap" --tests` to apply 3 suggestions) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.99s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/boobytrap-a8b67372dc66b0e9) [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test monitors::filechanges::tests::test_load_blacklist ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "809d1bbee9f43bf372620986d67483ac7d98dcd35903983f71b4a62ccd9b2bc0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "809d1bbee9f43bf372620986d67483ac7d98dcd35903983f71b4a62ccd9b2bc0", kill_on_drop: false }` [INFO] [stdout] 809d1bbee9f43bf372620986d67483ac7d98dcd35903983f71b4a62ccd9b2bc0