[INFO] crate stream-vbyte 0.3.2 is already in cache [INFO] extracting crate stream-vbyte 0.3.2 into work/ex/clippy-test-run/sources/stable/reg/stream-vbyte/0.3.2 [INFO] extracting crate stream-vbyte 0.3.2 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/stream-vbyte/0.3.2 [INFO] validating manifest of stream-vbyte-0.3.2 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of stream-vbyte-0.3.2 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing stream-vbyte-0.3.2 [INFO] finished frobbing stream-vbyte-0.3.2 [INFO] frobbed toml for stream-vbyte-0.3.2 written to work/ex/clippy-test-run/sources/stable/reg/stream-vbyte/0.3.2/Cargo.toml [INFO] started frobbing stream-vbyte-0.3.2 [INFO] finished frobbing stream-vbyte-0.3.2 [INFO] frobbed toml for stream-vbyte-0.3.2 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/stream-vbyte/0.3.2/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting stream-vbyte-0.3.2 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/stream-vbyte/0.3.2:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 3b9e6382d511fe7c6eb3d36b651ada9703314eb15943639a00e55143601832e6 [INFO] running `"docker" "start" "-a" "3b9e6382d511fe7c6eb3d36b651ada9703314eb15943639a00e55143601832e6"` [INFO] [stderr] Checking stream-vbyte v0.3.2 (/opt/crater/workdir) [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/tables.rs:1:41 [INFO] [stderr] | [INFO] [stderr] 1 | pub const DECODE_LENGTH_PER_NUM_TABLE: &'static [(u8, u8, u8, u8); 256] = &[ [INFO] [stderr] | -^^^^^^^------------------------ help: consider removing `'static`: `&[(u8, u8, u8, u8); 256]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/tables.rs:260:42 [INFO] [stderr] | [INFO] [stderr] 260 | pub const DECODE_LENGTH_PER_QUAD_TABLE: &'static [u8; 256] = &[ [INFO] [stderr] | -^^^^^^^---------- help: consider removing `'static`: `&[u8; 256]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `remaining_output` [INFO] [stderr] --> src/cursor.rs:104:22 [INFO] [stderr] | [INFO] [stderr] 104 | for i in 0..self.encoded_shape.leftover_numbers { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 104 | for (i, ) in remaining_output.iter_mut().enumerate().take(self.encoded_shape.leftover_numbers) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `quads_encoded` is only used to index `control_bytes`. [INFO] [stderr] --> src/lib.rs:158:30 [INFO] [stderr] | [INFO] [stderr] 158 | for quads_encoded in 0..control_bytes.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 158 | for in &mut control_bytes { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:218:8 [INFO] [stderr] | [INFO] [stderr] 218 | if input.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `input.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/lib.rs:298:14 [INFO] [stderr] | [INFO] [stderr] 298 | for i in 0..len { [INFO] [stderr] | ^^^^^^ help: try replacing the loop by: `output[..len].clone_from_slice(&buf[..len])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: statement can be reduced [INFO] [stderr] --> src/lib.rs:307:5 [INFO] [stderr] | [INFO] [stderr] 307 | &buf[0..len].copy_from_slice(&input[0..len]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `buf[0..len].copy_from_slice(&input[0..len]);` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_operation)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/tables.rs:1:41 [INFO] [stderr] | [INFO] [stderr] 1 | pub const DECODE_LENGTH_PER_NUM_TABLE: &'static [(u8, u8, u8, u8); 256] = &[ [INFO] [stderr] | -^^^^^^^------------------------ help: consider removing `'static`: `&[(u8, u8, u8, u8); 256]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/tables.rs:260:42 [INFO] [stderr] | [INFO] [stderr] 260 | pub const DECODE_LENGTH_PER_QUAD_TABLE: &'static [u8; 256] = &[ [INFO] [stderr] | -^^^^^^^---------- help: consider removing `'static`: `&[u8; 256]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `remaining_output` [INFO] [stderr] --> src/cursor.rs:104:22 [INFO] [stderr] | [INFO] [stderr] 104 | for i in 0..self.encoded_shape.leftover_numbers { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 104 | for (i, ) in remaining_output.iter_mut().enumerate().take(self.encoded_shape.leftover_numbers) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/cursor.rs:137:27 [INFO] [stderr] | [INFO] [stderr] 137 | DecodeCursor::new(&vec![], 0).skip(3) [INFO] [stderr] | ^^^^^^^ help: you can use a slice directly: `&[]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_vec)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: the loop variable `quads_encoded` is only used to index `control_bytes`. [INFO] [stderr] --> src/lib.rs:158:30 [INFO] [stderr] | [INFO] [stderr] 158 | for quads_encoded in 0..control_bytes.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 158 | for in &mut control_bytes { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:218:8 [INFO] [stderr] | [INFO] [stderr] 218 | if input.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `input.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/lib.rs:298:14 [INFO] [stderr] | [INFO] [stderr] 298 | for i in 0..len { [INFO] [stderr] | ^^^^^^ help: try replacing the loop by: `output[..len].clone_from_slice(&buf[..len])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: statement can be reduced [INFO] [stderr] --> src/lib.rs:307:5 [INFO] [stderr] | [INFO] [stderr] 307 | &buf[0..len].copy_from_slice(&input[0..len]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `buf[0..len].copy_from_slice(&input[0..len]);` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_operation)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/tests.rs:50:40 [INFO] [stderr] | [INFO] [stderr] 50 | assert_eq!(0, decode_num_scalar(1, &vec![0, 0, 0, 0])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[0, 0, 0, 0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/tests.rs:55:55 [INFO] [stderr] | [INFO] [stderr] 55 | assert_eq!(u32::max_value(), decode_num_scalar(4, &vec![0xFF, 0xFF, 0xFF, 0xFF])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[0xFF, 0xFF, 0xFF, 0xFF]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/tests.rs:61:75 [INFO] [stderr] | [INFO] [stderr] 61 | assert_eq!((4 << 24) + (3 << 16) + (2 << 8) + 1, decode_num_scalar(4, &vec![1, 2, 3, 4])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[1, 2, 3, 4]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/tests.rs:67:63 [INFO] [stderr] | [INFO] [stderr] 67 | assert_eq!((3 << 16) + (2 << 8) + 1, decode_num_scalar(3, &vec![1, 2, 3])); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: you can use a slice directly: `&[1, 2, 3]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/tests.rs:73:51 [INFO] [stderr] | [INFO] [stderr] 73 | assert_eq!((2 << 8) + 1, decode_num_scalar(2, &vec![1, 2])); [INFO] [stderr] | ^^^^^^^^^^^ help: you can use a slice directly: `&[1, 2]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/tests.rs:79:40 [INFO] [stderr] | [INFO] [stderr] 79 | assert_eq!(1, decode_num_scalar(1, &vec![1])); [INFO] [stderr] | ^^^^^^^^ help: you can use a slice directly: `&[1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/tests.rs:219:45 [INFO] [stderr] | [INFO] [stderr] 219 | decoded.resize(count + extra_slots, garbage as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(garbage)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/tests.rs:237:24 [INFO] [stderr] | [INFO] [stderr] 237 | assert_eq!(garbage as u32, n, "index {}", i); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(garbage)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error[E0554]: #![feature] may not be used on the stable release channel [INFO] [stderr] --> benches/benchmarks.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | #![feature(test)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] For more information about this error, try `rustc --explain E0554`. [INFO] [stderr] error: Could not compile `stream-vbyte`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> tests/tests.rs:109:51 [INFO] [stderr] | [INFO] [stderr] 109 | decoded.resize(decoded_len + extra_slots, garbage as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(garbage)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> tests/tests.rs:120:24 [INFO] [stderr] | [INFO] [stderr] 120 | assert_eq!(garbage as u32, n, "index {}", i); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(garbage)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> tests/tests.rs:153:55 [INFO] [stderr] | [INFO] [stderr] 153 | decoded.resize(decoded_len + extra_slots, garbage as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(garbage)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> tests/tests.rs:156:27 [INFO] [stderr] | [INFO] [stderr] 156 | nums.push(num as u32); [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(num)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> tests/tests.rs:174:28 [INFO] [stderr] | [INFO] [stderr] 174 | assert_eq!(garbage as u32, n, "index {}", i); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(garbage)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> tests/cursor.rs:193:25 [INFO] [stderr] | [INFO] [stderr] 193 | for skip_len in (0..(count / 4 + 1)).map(|i| i * 4) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: use: `(0..=count / 4)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: unused label `'dec1` [INFO] [stderr] --> tests/cursor.rs:243:9 [INFO] [stderr] | [INFO] [stderr] 243 | / 'dec1: for initial_decode_len in 4..(count + 1) { [INFO] [stderr] 244 | | // skips must be divisible by 4 [INFO] [stderr] 245 | | 'skip: for skip_len in (0..count / 4).map(|i| i * 4) { [INFO] [stderr] 246 | | 'dec2: for final_decode_len in 4..count { [INFO] [stderr] ... | [INFO] [stderr] 291 | | } [INFO] [stderr] 292 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_label)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_label [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> tests/cursor.rs:243:42 [INFO] [stderr] | [INFO] [stderr] 243 | 'dec1: for initial_decode_len in 4..(count + 1) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use: `4..=count` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] error: build failed [INFO] running `"docker" "inspect" "3b9e6382d511fe7c6eb3d36b651ada9703314eb15943639a00e55143601832e6"` [INFO] running `"docker" "rm" "-f" "3b9e6382d511fe7c6eb3d36b651ada9703314eb15943639a00e55143601832e6"` [INFO] [stdout] 3b9e6382d511fe7c6eb3d36b651ada9703314eb15943639a00e55143601832e6