[INFO] fetching crate ber 0.0.6... [INFO] testing ber-0.0.6 against 1.55.0 for beta-1.56-1 [INFO] extracting crate ber 0.0.6 into /workspace/builds/worker-55/source [INFO] validating manifest of crates.io crate ber 0.0.6 on toolchain 1.55.0 [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+1.55.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking crates.io crate ber 0.0.6 [INFO] finished tweaking crates.io crate ber 0.0.6 [INFO] tweaked toml for crates.io crate ber 0.0.6 written to /workspace/builds/worker-55/source/Cargo.toml [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+1.55.0" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+1.55.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-55/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-55/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:a89201d6b5b9fd45c15d5952ece0a0129e7e80cb26ec023fd59cf09bc26f1604" "/opt/rustwide/cargo-home/bin/cargo" "+1.55.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 17b7a8fca02c3a4062ac5ec089fb996e6b6df7f564f9ac7853081208cd20f909 [INFO] running `Command { std: "docker" "start" "-a" "17b7a8fca02c3a4062ac5ec089fb996e6b6df7f564f9ac7853081208cd20f909", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "17b7a8fca02c3a4062ac5ec089fb996e6b6df7f564f9ac7853081208cd20f909", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "17b7a8fca02c3a4062ac5ec089fb996e6b6df7f564f9ac7853081208cd20f909", kill_on_drop: false }` [INFO] [stdout] 17b7a8fca02c3a4062ac5ec089fb996e6b6df7f564f9ac7853081208cd20f909 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-55/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-55/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=warn" "-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:a89201d6b5b9fd45c15d5952ece0a0129e7e80cb26ec023fd59cf09bc26f1604" "/opt/rustwide/cargo-home/bin/cargo" "+1.55.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] daf38626162f2353d3ed90d7d6a91ac31b20b74a6ee9560f95017aa06c53516a [INFO] running `Command { std: "docker" "start" "-a" "daf38626162f2353d3ed90d7d6a91ac31b20b74a6ee9560f95017aa06c53516a", kill_on_drop: false }` [INFO] [stderr] Compiling byteorder v1.4.3 [INFO] [stderr] Compiling ber v0.0.6 (/opt/rustwide/workdir) [INFO] [stdout] error[E0412]: cannot find type `Error` in crate `byteorder` [INFO] [stdout] --> src/err.rs:13:26 [INFO] [stdout] | [INFO] [stdout] 13 | Byteorder(byteorder::Error), [INFO] [stdout] | ^^^^^ not found in `byteorder` [INFO] [stdout] | [INFO] [stdout] help: consider importing one of these items [INFO] [stdout] | [INFO] [stdout] 1 | use Error; [INFO] [stdout] | [INFO] [stdout] 1 | use err::error::Error; [INFO] [stdout] | [INFO] [stdout] 1 | use err::fmt::Error; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0412]: cannot find type `Error` in crate `byteorder` [INFO] [stdout] --> src/err.rs:76:22 [INFO] [stdout] | [INFO] [stdout] 76 | impl From for Error { [INFO] [stdout] | ^^^^^ not found in `byteorder` [INFO] [stdout] | [INFO] [stdout] help: consider importing one of these items [INFO] [stdout] | [INFO] [stdout] 1 | use Error; [INFO] [stdout] | [INFO] [stdout] 1 | use err::error::Error; [INFO] [stdout] | [INFO] [stdout] 1 | use err::fmt::Error; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0412]: cannot find type `Error` in crate `byteorder` [INFO] [stdout] --> src/err.rs:77:30 [INFO] [stdout] | [INFO] [stdout] 77 | fn from (err: byteorder::Error) -> Error { [INFO] [stdout] | ^^^^^ not found in `byteorder` [INFO] [stdout] | [INFO] [stdout] help: consider importing one of these items [INFO] [stdout] | [INFO] [stdout] 1 | use Error; [INFO] [stdout] | [INFO] [stdout] 1 | use err::error::Error; [INFO] [stdout] | [INFO] [stdout] 1 | use err::fmt::Error; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0412]: cannot find type `Result` in crate `byteorder` [INFO] [stdout] --> src/tag.rs:311:68 [INFO] [stdout] | [INFO] [stdout] 311 | fn write_length (mut w: &mut Write, length: &Length) -> byteorder::Result<()> { [INFO] [stdout] | ^^^^^^ not found in `byteorder` [INFO] [stdout] | [INFO] [stdout] help: consider importing one of these items [INFO] [stdout] | [INFO] [stdout] 1 | use std::result::Result; [INFO] [stdout] | [INFO] [stdout] 1 | use std::thread::Result; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/err.rs:59:33 [INFO] [stdout] | [INFO] [stdout] 59 | fn cause (&self) -> Option<&error::Error> { [INFO] [stdout] | ^^^^^^^^^^^^ help: use `dyn`: `dyn error::Error` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see issue #80165 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/tag.rs:141:38 [INFO] [stdout] | [INFO] [stdout] 141 | fn read_extended_number (mut r: &mut Read) -> Result { [INFO] [stdout] | ^^^^ help: use `dyn`: `dyn Read` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see issue #80165 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/tag.rs:147:17 [INFO] [stdout] | [INFO] [stdout] 147 | let b = try!(r.read_u8()); [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/tag.rs:161:47 [INFO] [stdout] | [INFO] [stdout] 161 | fn maybe_read_extended_number (b: i8, r: &mut Read) -> Result { [INFO] [stdout] | ^^^^ help: use `dyn`: `dyn Read` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see issue #80165 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/tag.rs:169:34 [INFO] [stdout] | [INFO] [stdout] 169 | fn read_identifiers (mut r: &mut Read) -> Result<(Class, Flavor, Number), err::Error> { [INFO] [stdout] | ^^^^ help: use `dyn`: `dyn Read` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see issue #80165 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/tag.rs:170:13 [INFO] [stdout] | [INFO] [stdout] 170 | let b = try!(r.read_u8()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/tag.rs:186:33 [INFO] [stdout] | [INFO] [stdout] 186 | Number::Application(try!(maybe_read_extended_number(number, r))), [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/tag.rs:188:37 [INFO] [stdout] | [INFO] [stdout] 188 | Number::ContextSpecific(try!(maybe_read_extended_number(number, r))), [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/tag.rs:190:29 [INFO] [stdout] | [INFO] [stdout] 190 | Number::Private(try!(maybe_read_extended_number(number, r))), [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/tag.rs:196:29 [INFO] [stdout] | [INFO] [stdout] 196 | fn read_length (mut r: &mut Read) -> Result { [INFO] [stdout] | ^^^^ help: use `dyn`: `dyn Read` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see issue #80165 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/tag.rs:197:13 [INFO] [stdout] | [INFO] [stdout] 197 | let b = try!(r.read_u8()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/tag.rs:213:21 [INFO] [stdout] | [INFO] [stdout] 213 | let b = try!(r.read_u8()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/tag.rs:228:13 [INFO] [stdout] | [INFO] [stdout] 228 | try!(r.read(&mut buf)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/tag.rs:238:25 [INFO] [stdout] | [INFO] [stdout] 238 | let child = try!(Tag::inner_read(r)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/tag.rs:261:39 [INFO] [stdout] | [INFO] [stdout] 261 | fn write_extended_number (mut w: &mut Write, mut num: i64) -> io::Result<()> { [INFO] [stdout] | ^^^^^ help: use `dyn`: `dyn Write` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see issue #80165 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/tag.rs:272:9 [INFO] [stdout] | [INFO] [stdout] 272 | try!(w.write_u8(b)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/tag.rs:277:41 [INFO] [stdout] | [INFO] [stdout] 277 | fn maybe_write_extended_number (w: &mut Write, num: i64) -> io::Result<()> { [INFO] [stdout] | ^^^^^ help: use `dyn`: `dyn Write` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see issue #80165 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/tag.rs:300:5 [INFO] [stdout] | [INFO] [stdout] 300 | try!(w.write_u8(b)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/tag.rs:285:35 [INFO] [stdout] | [INFO] [stdout] 285 | fn write_identifiers (mut w: &mut Write, class: &Class, flavor: &Flavor, number: &Number) -> io::Result<()> { [INFO] [stdout] | ^^^^^ help: use `dyn`: `dyn Write` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see issue #80165 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/tag.rs:304:41 [INFO] [stdout] | [INFO] [stdout] 304 | Number::Private(ref num) => try!(maybe_write_extended_number(w, *num)), [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/tag.rs:311:30 [INFO] [stdout] | [INFO] [stdout] 311 | fn write_length (mut w: &mut Write, length: &Length) -> byteorder::Result<()> { [INFO] [stdout] | ^^^^^ help: use `dyn`: `dyn Write` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see issue #80165 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/tag.rs:330:17 [INFO] [stdout] | [INFO] [stdout] 330 | try!(w.write_u8(count | 0x80)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/tag.rs:335:21 [INFO] [stdout] | [INFO] [stdout] 335 | try!(w.write_u8(byte)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/tag.rs:344:31 [INFO] [stdout] | [INFO] [stdout] 344 | fn write_payload (mut w: &mut Write, payload: &Payload) -> io::Result<()> { [INFO] [stdout] | ^^^^^ help: use `dyn`: `dyn Write` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see issue #80165 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/tag.rs:351:17 [INFO] [stdout] | [INFO] [stdout] 351 | try!(tag.write(w)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/tag.rs:396:26 [INFO] [stdout] | [INFO] [stdout] 396 | pub fn read (r: &mut Read) -> Result { [INFO] [stdout] | ^^^^ help: use `dyn`: `dyn Read` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see issue #80165 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/tag.rs:413:9 [INFO] [stdout] | [INFO] [stdout] 413 | try!(write_identifiers(w, &class, &flavor, &self.number)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/tag.rs:415:9 [INFO] [stdout] | [INFO] [stdout] 415 | try!(write_length(w, &length)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/tag.rs:417:9 [INFO] [stdout] | [INFO] [stdout] 417 | try!(write_payload(w, &self.payload)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/tag.rs:400:38 [INFO] [stdout] | [INFO] [stdout] 400 | pub fn write (&self, mut w: &mut Write) -> io::Result<()> { [INFO] [stdout] | ^^^^^ help: use `dyn`: `dyn Write` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see issue #80165 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/util.rs:4:26 [INFO] [stdout] | [INFO] [stdout] 4 | inner: &'a mut (Read + 'a), [INFO] [stdout] | ^^^^^^^^^ help: use `dyn`: `dyn Read + 'a` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see issue #80165 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/util.rs:9:33 [INFO] [stdout] | [INFO] [stdout] 9 | pub fn new (inner: &'a mut (Read + 'a)) -> TrackedRead<'a> { [INFO] [stdout] | ^^^^^^^^^ help: use `dyn`: `dyn Read + 'a` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see issue #80165 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/util.rs:22:21 [INFO] [stdout] | [INFO] [stdout] 22 | let count = try!(self.inner.read(buf)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `std::error::Error::description`: use the Display impl or to_string() [INFO] [stdout] --> src/err.rs:44:65 [INFO] [stdout] | [INFO] [stdout] 44 | write!(f, "error at {}: {}", self.offset, error::Error::description(self)) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `std::error::Error::description`: use the Display impl or to_string() [INFO] [stdout] --> src/err.rs:54:46 [INFO] [stdout] | [INFO] [stdout] 54 | Kind::Io(ref x) => error::Error::description(x), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `std::error::Error::description`: use the Display impl or to_string() [INFO] [stdout] --> src/err.rs:55:53 [INFO] [stdout] | [INFO] [stdout] 55 | Kind::Byteorder(ref x) => error::Error::description(x), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 4 previous errors; 36 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0412`. [INFO] [stdout] [INFO] [stderr] error: could not compile `ber` due to 5 previous errors; 36 warnings emitted [INFO] running `Command { std: "docker" "inspect" "daf38626162f2353d3ed90d7d6a91ac31b20b74a6ee9560f95017aa06c53516a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "daf38626162f2353d3ed90d7d6a91ac31b20b74a6ee9560f95017aa06c53516a", kill_on_drop: false }` [INFO] [stdout] daf38626162f2353d3ed90d7d6a91ac31b20b74a6ee9560f95017aa06c53516a