[INFO] fetching crate cradle 0.2.1... [INFO] testing cradle-0.2.1 against 1.60.0 for beta-1.61-1 [INFO] extracting crate cradle 0.2.1 into /workspace/builds/worker-21/source [INFO] validating manifest of crates.io crate cradle 0.2.1 on toolchain 1.60.0 [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+1.60.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking crates.io crate cradle 0.2.1 [INFO] finished tweaking crates.io crate cradle 0.2.1 [INFO] tweaked toml for crates.io crate cradle 0.2.1 written to /workspace/builds/worker-21/source/Cargo.toml [INFO] crate crates.io crate cradle 0.2.1 already has a lockfile, it will not be regenerated [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+1.60.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded gag v0.1.10 [INFO] [stderr] Downloaded nix v0.22.2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-21/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-21/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:b0c94ce3c1162fcb8e57cac5b65ec2f72eabb1eebea4fcc35e269e823f681646" "/opt/rustwide/cargo-home/bin/cargo" "+1.60.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 3a083ecc2b9c8a720345ee5161fb6318afcc1d8e414a5e27ab61db47f7f6c7e2 [INFO] running `Command { std: "docker" "start" "-a" "3a083ecc2b9c8a720345ee5161fb6318afcc1d8e414a5e27ab61db47f7f6c7e2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "3a083ecc2b9c8a720345ee5161fb6318afcc1d8e414a5e27ab61db47f7f6c7e2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3a083ecc2b9c8a720345ee5161fb6318afcc1d8e414a5e27ab61db47f7f6c7e2", kill_on_drop: false }` [INFO] [stdout] 3a083ecc2b9c8a720345ee5161fb6318afcc1d8e414a5e27ab61db47f7f6c7e2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-21/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-21/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:b0c94ce3c1162fcb8e57cac5b65ec2f72eabb1eebea4fcc35e269e823f681646" "/opt/rustwide/cargo-home/bin/cargo" "+1.60.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 4c66dfa921fd82de6bdc29a893053b17f04b7dc1c19a94e5e83b6d5918ec9315 [INFO] running `Command { std: "docker" "start" "-a" "4c66dfa921fd82de6bdc29a893053b17f04b7dc1c19a94e5e83b6d5918ec9315", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Compiling cradle v0.2.1 (/opt/rustwide/workdir) [INFO] [stdout] warning: use of deprecated associated function `std::array::IntoIter::::new`: use `IntoIterator::into_iter` instead [INFO] [stdout] --> src/input.rs:498:40 [INFO] [stdout] | [INFO] [stdout] 498 | for t in std::array::IntoIter::new(self) { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 1 warning emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1.35s [INFO] running `Command { std: "docker" "inspect" "4c66dfa921fd82de6bdc29a893053b17f04b7dc1c19a94e5e83b6d5918ec9315", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4c66dfa921fd82de6bdc29a893053b17f04b7dc1c19a94e5e83b6d5918ec9315", kill_on_drop: false }` [INFO] [stdout] 4c66dfa921fd82de6bdc29a893053b17f04b7dc1c19a94e5e83b6d5918ec9315 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-21/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-21/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:b0c94ce3c1162fcb8e57cac5b65ec2f72eabb1eebea4fcc35e269e823f681646" "/opt/rustwide/cargo-home/bin/cargo" "+1.60.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 6b2f4b49b08f3ea9f90452c998958e647afa8ecdf2f5216f018c0806f81cd217 [INFO] running `Command { std: "docker" "start" "-a" "6b2f4b49b08f3ea9f90452c998958e647afa8ecdf2f5216f018c0806f81cd217", kill_on_drop: false }` [INFO] [stderr] Compiling diff v0.1.12 [INFO] [stderr] Compiling unindent v0.1.7 [INFO] [stderr] Compiling executable-path v1.0.0 [INFO] [stderr] Compiling getrandom v0.2.3 [INFO] [stdout] warning: use of deprecated associated function `std::array::IntoIter::::new`: use `IntoIterator::into_iter` instead [INFO] [stdout] --> src/input.rs:498:40 [INFO] [stdout] | [INFO] [stdout] 498 | for t in std::array::IntoIter::new(self) { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 1 warning emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling pretty_assertions v1.0.0 [INFO] [stderr] Compiling rand_core v0.6.3 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling rand v0.8.4 [INFO] [stderr] Compiling tempfile v3.2.0 [INFO] [stderr] Compiling cradle v0.2.1 (/opt/rustwide/workdir) [INFO] [stdout] warning: use of deprecated associated function `std::array::IntoIter::::new`: use `IntoIterator::into_iter` instead [INFO] [stdout] --> src/input.rs:498:40 [INFO] [stdout] | [INFO] [stdout] 498 | for t in std::array::IntoIter::new(self) { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 1 warning emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished test [unoptimized + debuginfo] target(s) in 4.78s [INFO] running `Command { std: "docker" "inspect" "6b2f4b49b08f3ea9f90452c998958e647afa8ecdf2f5216f018c0806f81cd217", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6b2f4b49b08f3ea9f90452c998958e647afa8ecdf2f5216f018c0806f81cd217", kill_on_drop: false }` [INFO] [stdout] 6b2f4b49b08f3ea9f90452c998958e647afa8ecdf2f5216f018c0806f81cd217 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-21/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-21/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:b0c94ce3c1162fcb8e57cac5b65ec2f72eabb1eebea4fcc35e269e823f681646" "/opt/rustwide/cargo-home/bin/cargo" "+1.60.0" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 6a2234c5785241da62515e83fa3227aea23ba6f0ffc8772c6886fd9b2f610a03 [INFO] running `Command { std: "docker" "start" "-a" "6a2234c5785241da62515e83fa3227aea23ba6f0ffc8772c6886fd9b2f610a03", kill_on_drop: false }` [INFO] [stderr] warning: use of deprecated associated function `std::array::IntoIter::::new`: use `IntoIterator::into_iter` instead [INFO] [stdout] [INFO] [stderr] --> src/input.rs:498:40 [INFO] [stdout] running 141 tests [INFO] [stderr] | [INFO] [stderr] 498 | for t in std::array::IntoIter::new(self) { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(deprecated)]` on by default [INFO] [stderr] [INFO] [stderr] warning: `cradle` (lib) generated 1 warning [INFO] [stderr] warning: `cradle` (lib test) generated 1 warning (1 duplicate) [INFO] [stderr] Finished test [unoptimized + debuginfo] target(s) in 0.01s [INFO] [stderr] Running unittests (/opt/rustwide/target/debug/deps/cradle-ae477e42aced76a1) [INFO] [stderr] + echo foo [INFO] [stderr] + cargo build --bin test_executables_helper --features test_executables [INFO] [stdout] test error::tests::english_list::four ... ok [INFO] [stdout] test error::tests::english_list::one ... ok [INFO] [stdout] test error::tests::english_list::three ... ok [INFO] [stdout] test error::tests::english_list::two ... ok [INFO] [stdout] test macros::tests::tuple_up::nested_tuples ... ok [INFO] [stdout] test macros::tests::tuple_up::percent_shortcut ... ok [INFO] [stdout] test macros::tests::tuple_up::percent_shortcut_with_multiple_values ... ok [INFO] [stdout] test macros::tests::tuple_up::percent_shortcut_with_subsequent_values ... ok [INFO] [stdout] test macros::tests::tuple_up::three_values ... ok [INFO] [stdout] test macros::tests::tuple_up::percent_shortcut_with_preceeding_values ... ok [INFO] [stdout] test error::tests::invalid_utf8_to_stderr_has_source ... ok [INFO] [stdout] test macros::tests::tuple_up::two_values ... ok [INFO] [stdout] test macros::tests::tuple_up::one_value ... ok [INFO] [stdout] test tests::allows_to_retrieve_stdout ... ok [INFO] [stdout] test error::tests::invalid_utf8_to_stdout_has_source ... ok [INFO] [stdout] test tests::bool_output::failure_exit_status_is_false ... ok [INFO] [stdout] test tests::capturing_stdout::trimmed::does_not_remove_whitespace_within_output ... ok [INFO] [stdout] test tests::arguments_can_be_given_as_references ... ok [INFO] [stdout] test tests::capturing_stdout::untrimmed::does_not_trim_leading_whitespace ... ok [INFO] [stdout] test tests::capturing_stdout::trimmed::trims_leading_whitespace ... ok [INFO] [stdout] test tests::capturing_stdout::untrimmed::does_not_relay_stdout ... ok [INFO] [stdout] test tests::capturing_stdout::trimmed::does_not_modify_output_without_whitespace ... ok [INFO] [stdout] test tests::capturing_stdout::trimmed::does_not_relay_stdout ... ok [INFO] [stdout] test tests::command_and_argument_as_separate_ref_str ... ok [INFO] [stdout] test tests::bool_output::success_exit_status_is_true ... ok [INFO] [stdout] test tests::capturing_stdout::trimmed::trims_trailing_whitespace ... ok [INFO] [stdout] test tests::capturing_stdout::untrimmed::does_not_trim_trailing_newline ... ok [INFO] [stdout] test tests::errors::result_types::missing_executable_file_error_can_be_caused_by_relative_paths ... ok [INFO] [stdout] test tests::errors::result_types::includes_full_command_on_non_zero_exit_codes ... ok [INFO] [stdout] test tests::errors::result_types::no_executable ... ok [INFO] [stdout] test tests::errors::result_types::combine_ok_with_other_outputs ... ok [INFO] [stdout] test tests::sequences::arrays_as_arguments ... ok [INFO] [stdout] test tests::sequences::array_refs_as_arguments ... ok [INFO] [stdout] test tests::sequences::arrays_of_non_strings ... ok [INFO] [stdout] test tests::errors::result_types::missing_executable_file_error_can_be_matched_against ... ok [INFO] [stdout] test tests::multiple_arguments_as_ref_str ... ok [INFO] [stdout] test tests::log_commands::logs_simple_commands ... ok [INFO] [stdout] test tests::errors::whitespace_in_executable_note::missing_executable_file_with_whitespace_includes_note ... ok [INFO] [stdout] test tests::errors::result_types::missing_executable_file_error_message ... ok [INFO] [stdout] test tests::errors::result_types::combine_err_with_other_outputs ... ok [INFO] [stdout] test tests::errors::result_types::non_zero_exit_codes ... ok [INFO] [stdout] test tests::exit_status::failing_commands_return_oks_when_exit_status_is_captured ... ok [INFO] [stdout] test tests::sequences::vector_of_vectors ... ok [INFO] [stdout] test tests::split::percent_sign::for_first_of_multiple_arguments ... ok [INFO] [stdout] test tests::allows_to_execute_a_command ... ok [INFO] [stdout] test tests::sequences::vector_of_non_strings ... ok [INFO] [stdout] test tests::log_commands::arguments_with_invalid_utf8_will_be_logged_with_lossy_conversion ... ok [INFO] [stdout] test tests::run_interface::allows_to_bundle_arguments_up_in_tuples ... ok [INFO] [stdout] test tests::split::percent_sign::in_run_result ... ok [INFO] [stdout] test tests::exit_status::zero ... ok [INFO] [stdout] test tests::log_commands::quotes_arguments_with_spaces ... ok [INFO] [stdout] test tests::splitting_with_library_functions::allow_to_use_split ... ok [INFO] [stdout] foo [INFO] [stdout] foo [INFO] [stdout] test tests::errors::result_types::no_errors ... ok [INFO] [stdout] test tests::sequences::slices_as_arguments ... ok [INFO] [stdout] test tests::sequences::allows_to_pass_in_arguments_as_a_vec_of_ref_str ... ok [INFO] [stdout] test tests::log_commands::logs_commands_with_arguments ... ok [INFO] [stdout] test tests::errors::whitespace_in_executable_note::single_argument ... ok [INFO] [stdout] test tests::split::percent_sign::in_run ... ok [INFO] [stdout] test tests::run_interface::run_result ... ok [INFO] [stdout] test tests::split::trims_trailing_whitespace ... ok [INFO] [stdout] test tests::os_strings::works_for_os_str ... ok [INFO] [stdout] test tests::run_interface::allows_to_run_commands_with_dot_run ... ok [INFO] [stdout] test tests::split::percent_sign::splits_words ... ok [INFO] [stdout] test tests::exit_status::one ... ok [INFO] [stdout] foo [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stdout] test tests::split::percent_sign::non_literals ... ok [INFO] [stdout] test tests::splitting_with_library_functions::split_ascii_whitespace ... ok [INFO] [stdout] test tests::sequences::slices_of_non_strings ... ok [INFO] [stdout] test tests::split::percent_sign::works_for_later_arguments ... ok [INFO] [stdout] test tests::split::splits_words_by_whitespace ... ok [INFO] [stdout] test tests::split::trims_leading_whitespace ... ok [INFO] [stdout] test tests::log_commands::quotes_empty_arguments ... ok [INFO] [stdout] foo [INFO] [stdout] test tests::split::skips_multiple_whitespace_characters ... ok [INFO] [stdout] test tests::splitting_with_library_functions::split_whitespace ... ok [INFO] [stdout] test tests::invocation_syntax::trailing_comma_is_accepted_after_normal_argument ... ok [INFO] [stdout] test tests::stdin::writing_too_many_bytes_into_a_non_reading_child_may_error ... ok [INFO] [stdout] test tests::run_interface::works_for_different_output_types ... ok [INFO] [stdout] test tests::os_strings::works_for_os_string ... ok [INFO] [stdout] test tests::stdout::does_not_relay_stdout_when_collecting_into_string ... ok [INFO] [stdout] test tests::tuple_inputs::three_tuples ... ok [INFO] [stdout] foo [INFO] [stdout] test tests::stdout::relays_stdout_by_default ... ok [INFO] [stdout] test tests::stdout::does_not_relay_stdout_when_collecting_into_result_of_string ... ok [INFO] [stdout] test tests::strings::mix_ref_str_and_string ... ok [INFO] [stdout] test tests::invocation_syntax::trailing_comma_is_accepted_after_split_argument ... ok [INFO] [stdout] test tests::strings::works_for_string ... ok [INFO] [stdout] test tests::tuple_inputs::two_tuple ... ok [INFO] [stdout] test tests::tuple_inputs::unit_input ... ok [INFO] [stdout] test tests::current_dir::works_for_other_types ... ok [INFO] [stdout] test tests::strings::multiple_strings ... ok [INFO] [stdout] test tests::tuple_inputs::nested_tuples ... ok [INFO] [stdout] test tests::errors::result_types::includes_full_command_on_io_errors ... ok [INFO] [stdout] test tests::tuple_outputs::result_of_tuple ... ok [INFO] [stdout] test tests::tuple_outputs::three_tuples ... ok [INFO] [stdout] test tests::tuple_outputs::result_of_tuple_when_erroring ... ok [INFO] [stdout] test tests::bool_output::io_error_panics - should panic ... ok [INFO] [stdout] test tests::errors::panics_by_default::no_executable - should panic ... ok [INFO] [stdout] test tests::errors::panics_by_default::combine_panics_with_other_outputs - should panic ... ok [INFO] [stdout] test tests::errors::panics_by_default::non_zero_exit_codes - should panic ... ok [INFO] [stdout] test tests::errors::panics_by_default::executable_cannot_be_found - should panic ... ok [INFO] [stdout] test tests::errors::panics_by_default::includes_full_command_on_non_zero_exit_codes - should panic ... ok [INFO] [stdout] test tests::errors::panics_by_default::includes_full_command_on_io_errors - should panic ... ok [INFO] [stdout] test tests::paths::path_buf_as_executable ... ok [INFO] [stdout] test tests::paths::ref_path_as_argument ... ok [INFO] [stdout] test tests::paths::ref_path_as_executable ... ok [INFO] [stdout] test tests::paths::path_buf_as_argument ... ok [INFO] [stdout] test tests::run_interface::run ... ok [INFO] [stdout] test tests::sequences::elements_in_array_refs_are_not_split_by_whitespace ... ok [INFO] [stdout] test tests::sequences::elements_in_arrays_are_not_split_by_whitespace ... ok [INFO] [stdout] test tests::sequences::elements_in_slices_are_not_split_by_whitespace ... ok [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Compiling libc v0.2.112 [INFO] [stderr] Compiling memoffset v0.6.5 [INFO] [stderr] Compiling getrandom v0.2.3 [INFO] [stderr] Compiling nix v0.22.2 [INFO] [stderr] Compiling rand_core v0.6.3 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling rand v0.8.4 [INFO] [stderr] Compiling tempfile v3.2.0 [INFO] [stderr] Compiling gag v0.1.10 [INFO] [stderr] Compiling cradle v0.2.1 (/opt/rustwide/workdir) [INFO] [stderr] warning: use of deprecated associated function `std::array::IntoIter::::new`: use `IntoIterator::into_iter` instead [INFO] [stderr] --> src/input.rs:498:40 [INFO] [stderr] | [INFO] [stderr] 498 | for t in std::array::IntoIter::new(self) { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(deprecated)]` on by default [INFO] [stderr] [INFO] [stderr] warning: `cradle` (lib) generated 1 warning [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 8.17s [INFO] [stderr] + cargo build --bin test_executables_panic --features test_executables [INFO] [stdout] test tests::environment_variables::allows_to_add_variables ... ok [INFO] [stdout] test tests::environment_variables::variables_are_overwritten_by_subsequent_variables_with_the_same_name ... ok [ERROR] error running command: stream did not contain valid UTF-8 [INFO] running `Command { std: "docker" "inspect" "6a2234c5785241da62515e83fa3227aea23ba6f0ffc8772c6886fd9b2f610a03", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6a2234c5785241da62515e83fa3227aea23ba6f0ffc8772c6886fd9b2f610a03", kill_on_drop: false }` [INFO] [stdout] 6a2234c5785241da62515e83fa3227aea23ba6f0ffc8772c6886fd9b2f610a03