[INFO] fetching crate utf16string 0.2.0... [INFO] building utf16string-0.2.0 against master#ad85bc524b1ad696e42061ad8338d382dffbdbe5 for pr-146237-1 [INFO] extracting crate utf16string 0.2.0 into /workspace/builds/worker-6-tc1/source [INFO] started tweaking crates.io crate utf16string 0.2.0 [INFO] finished tweaking crates.io crate utf16string 0.2.0 [INFO] tweaked toml for crates.io crate utf16string 0.2.0 written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate utf16string 0.2.0 on toolchain ad85bc524b1ad696e42061ad8338d382dffbdbe5 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Locking 1 package to latest compatible version [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] ef7c7ca33609a85b3b2ebe6bf53516fbd10453c3f753ec32c15bfe5875fd556d [INFO] running `Command { std: "docker" "start" "-a" "ef7c7ca33609a85b3b2ebe6bf53516fbd10453c3f753ec32c15bfe5875fd556d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "ef7c7ca33609a85b3b2ebe6bf53516fbd10453c3f753ec32c15bfe5875fd556d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ef7c7ca33609a85b3b2ebe6bf53516fbd10453c3f753ec32c15bfe5875fd556d", kill_on_drop: false }` [INFO] [stdout] ef7c7ca33609a85b3b2ebe6bf53516fbd10453c3f753ec32c15bfe5875fd556d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 3be5187bc16ef6776177b5c9305c2e0b060ac0bf785e6b5c340c2a1556b2a006 [INFO] running `Command { std: "docker" "start" "-a" "3be5187bc16ef6776177b5c9305c2e0b060ac0bf785e6b5c340c2a1556b2a006", kill_on_drop: false }` [INFO] [stderr] Compiling utf16string v0.2.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unnecessary qualification [INFO] [stdout] --> src/iters.rs:113:58 [INFO] [stdout] | [INFO] [stdout] 113 | let pos = self.index + self.chars.chunks.len() * std::mem::size_of::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the lint level is defined here [INFO] [stdout] --> src/lib.rs:73:5 [INFO] [stdout] | [INFO] [stdout] 73 | unused_qualifications [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: remove the unnecessary path segments [INFO] [stdout] | [INFO] [stdout] 113 - let pos = self.index + self.chars.chunks.len() * std::mem::size_of::(); [INFO] [stdout] 113 + let pos = self.index + self.chars.chunks.len() * size_of::(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary qualification [INFO] [stdout] --> src/utf16.rs:68:39 [INFO] [stdout] | [INFO] [stdout] 68 | let mut chunks = raw.chunks_exact(std::mem::size_of::()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: remove the unnecessary path segments [INFO] [stdout] | [INFO] [stdout] 68 - let mut chunks = raw.chunks_exact(std::mem::size_of::()); [INFO] [stdout] 68 + let mut chunks = raw.chunks_exact(size_of::()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary qualification [INFO] [stdout] --> src/utf16.rs:77:33 [INFO] [stdout] | [INFO] [stdout] 77 | error_len: Some(std::mem::size_of::() as u8), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: remove the unnecessary path segments [INFO] [stdout] | [INFO] [stdout] 77 - error_len: Some(std::mem::size_of::() as u8), [INFO] [stdout] 77 + error_len: Some(size_of::() as u8), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary qualification [INFO] [stdout] --> src/utf16.rs:87:45 [INFO] [stdout] | [INFO] [stdout] 87 | ... error_len: Some(std::mem::size_of::() as u8), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: remove the unnecessary path segments [INFO] [stdout] | [INFO] [stdout] 87 - error_len: Some(std::mem::size_of::() as u8), [INFO] [stdout] 87 + error_len: Some(size_of::() as u8), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/wstr.rs:264:18 [INFO] [stdout] | [INFO] [stdout] 264 | pub fn chars(&self) -> WStrChars { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 264 | pub fn chars(&self) -> WStrChars<'_, E> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/wstr.rs:273:25 [INFO] [stdout] | [INFO] [stdout] 273 | pub fn char_indices(&self) -> WStrCharIndices { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 273 | pub fn char_indices(&self) -> WStrCharIndices<'_, E> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.27s [INFO] running `Command { std: "docker" "inspect" "3be5187bc16ef6776177b5c9305c2e0b060ac0bf785e6b5c340c2a1556b2a006", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3be5187bc16ef6776177b5c9305c2e0b060ac0bf785e6b5c340c2a1556b2a006", kill_on_drop: false }` [INFO] [stdout] 3be5187bc16ef6776177b5c9305c2e0b060ac0bf785e6b5c340c2a1556b2a006 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 16110da5c6c630ef23f76ee3a1c25a4e5ccd61bb9886ee7e16bfa3ae2900f902 [INFO] running `Command { std: "docker" "start" "-a" "16110da5c6c630ef23f76ee3a1c25a4e5ccd61bb9886ee7e16bfa3ae2900f902", kill_on_drop: false }` [INFO] [stdout] warning: unnecessary qualification [INFO] [stdout] --> src/iters.rs:113:58 [INFO] [stdout] | [INFO] [stdout] 113 | let pos = self.index + self.chars.chunks.len() * std::mem::size_of::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the lint level is defined here [INFO] [stdout] --> src/lib.rs:73:5 [INFO] [stdout] | [INFO] [stdout] 73 | unused_qualifications [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: remove the unnecessary path segments [INFO] [stdout] | [INFO] [stdout] 113 - let pos = self.index + self.chars.chunks.len() * std::mem::size_of::(); [INFO] [stdout] 113 + let pos = self.index + self.chars.chunks.len() * size_of::(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary qualification [INFO] [stdout] --> src/utf16.rs:68:39 [INFO] [stdout] | [INFO] [stdout] 68 | let mut chunks = raw.chunks_exact(std::mem::size_of::()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: remove the unnecessary path segments [INFO] [stdout] | [INFO] [stdout] 68 - let mut chunks = raw.chunks_exact(std::mem::size_of::()); [INFO] [stdout] 68 + let mut chunks = raw.chunks_exact(size_of::()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary qualification [INFO] [stdout] --> src/utf16.rs:77:33 [INFO] [stdout] | [INFO] [stdout] 77 | error_len: Some(std::mem::size_of::() as u8), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: remove the unnecessary path segments [INFO] [stdout] | [INFO] [stdout] 77 - error_len: Some(std::mem::size_of::() as u8), [INFO] [stdout] 77 + error_len: Some(size_of::() as u8), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary qualification [INFO] [stdout] --> src/utf16.rs:87:45 [INFO] [stdout] | [INFO] [stdout] 87 | ... error_len: Some(std::mem::size_of::() as u8), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: remove the unnecessary path segments [INFO] [stdout] | [INFO] [stdout] 87 - error_len: Some(std::mem::size_of::() as u8), [INFO] [stdout] 87 + error_len: Some(size_of::() as u8), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling utf16string v0.2.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/wstr.rs:264:18 [INFO] [stdout] | [INFO] [stdout] 264 | pub fn chars(&self) -> WStrChars { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 264 | pub fn chars(&self) -> WStrChars<'_, E> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/wstr.rs:273:25 [INFO] [stdout] | [INFO] [stdout] 273 | pub fn char_indices(&self) -> WStrCharIndices { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 273 | pub fn char_indices(&self) -> WStrCharIndices<'_, E> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary qualification [INFO] [stdout] --> src/iters.rs:113:58 [INFO] [stdout] | [INFO] [stdout] 113 | let pos = self.index + self.chars.chunks.len() * std::mem::size_of::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the lint level is defined here [INFO] [stdout] --> src/lib.rs:73:5 [INFO] [stdout] | [INFO] [stdout] 73 | unused_qualifications [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: remove the unnecessary path segments [INFO] [stdout] | [INFO] [stdout] 113 - let pos = self.index + self.chars.chunks.len() * std::mem::size_of::(); [INFO] [stdout] 113 + let pos = self.index + self.chars.chunks.len() * size_of::(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary qualification [INFO] [stdout] --> src/utf16.rs:68:39 [INFO] [stdout] | [INFO] [stdout] 68 | let mut chunks = raw.chunks_exact(std::mem::size_of::()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: remove the unnecessary path segments [INFO] [stdout] | [INFO] [stdout] 68 - let mut chunks = raw.chunks_exact(std::mem::size_of::()); [INFO] [stdout] 68 + let mut chunks = raw.chunks_exact(size_of::()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary qualification [INFO] [stdout] --> src/utf16.rs:77:33 [INFO] [stdout] | [INFO] [stdout] 77 | error_len: Some(std::mem::size_of::() as u8), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: remove the unnecessary path segments [INFO] [stdout] | [INFO] [stdout] 77 - error_len: Some(std::mem::size_of::() as u8), [INFO] [stdout] 77 + error_len: Some(size_of::() as u8), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary qualification [INFO] [stdout] --> src/utf16.rs:87:45 [INFO] [stdout] | [INFO] [stdout] 87 | ... error_len: Some(std::mem::size_of::() as u8), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: remove the unnecessary path segments [INFO] [stdout] | [INFO] [stdout] 87 - error_len: Some(std::mem::size_of::() as u8), [INFO] [stdout] 87 + error_len: Some(size_of::() as u8), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary qualification [INFO] [stdout] --> src/utf16.rs:257:36 [INFO] [stdout] | [INFO] [stdout] 257 | let l1 = 'c'.len_utf16() * std::mem::size_of::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: remove the unnecessary path segments [INFO] [stdout] | [INFO] [stdout] 257 - let l1 = 'c'.len_utf16() * std::mem::size_of::(); [INFO] [stdout] 257 + let l1 = 'c'.len_utf16() * size_of::(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary qualification [INFO] [stdout] --> src/utf16.rs:262:44 [INFO] [stdout] | [INFO] [stdout] 262 | let l1 = '\u{10000}'.len_utf16() * std::mem::size_of::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: remove the unnecessary path segments [INFO] [stdout] | [INFO] [stdout] 262 - let l1 = '\u{10000}'.len_utf16() * std::mem::size_of::(); [INFO] [stdout] 262 + let l1 = '\u{10000}'.len_utf16() * size_of::(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/wstr.rs:264:18 [INFO] [stdout] | [INFO] [stdout] 264 | pub fn chars(&self) -> WStrChars { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 264 | pub fn chars(&self) -> WStrChars<'_, E> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/wstr.rs:273:25 [INFO] [stdout] | [INFO] [stdout] 273 | pub fn char_indices(&self) -> WStrCharIndices { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 273 | pub fn char_indices(&self) -> WStrCharIndices<'_, E> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.73s [INFO] running `Command { std: "docker" "inspect" "16110da5c6c630ef23f76ee3a1c25a4e5ccd61bb9886ee7e16bfa3ae2900f902", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "16110da5c6c630ef23f76ee3a1c25a4e5ccd61bb9886ee7e16bfa3ae2900f902", kill_on_drop: false }` [INFO] [stdout] 16110da5c6c630ef23f76ee3a1c25a4e5ccd61bb9886ee7e16bfa3ae2900f902