[INFO] updating cached repository https://github.com/mrfu2/rust-warpwallet [INFO] running `"git" "-c" "credential.helper=" "-c" "credential.helper=/mnt/big/crater/work/cargo-home/bin/git-credential-null" "-c" "remote.origin.fetch=refs/heads/*:refs/heads/*" "fetch" "origin" "--force" "--prune"` [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 163527a58288245fe1aa28941e765b2b3acb1a8d [INFO] checking mrfu2/rust-warpwallet against try#e689e5eaefe96e6dc3ed5bb629c521b7d207aff7 for pr-64398 [INFO] running `"git" "clone" "work/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmrfu2%2Frust-warpwallet" "work/builds/worker-7/source"` [INFO] [stderr] Cloning into 'work/builds/worker-7/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/mrfu2/rust-warpwallet on toolchain e689e5eaefe96e6dc3ed5bb629c521b7d207aff7-alt [INFO] running `"/mnt/big/crater/work/cargo-home/bin/cargo" "+e689e5eaefe96e6dc3ed5bb629c521b7d207aff7-alt" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started tweaking git repo https://github.com/mrfu2/rust-warpwallet [INFO] finished tweaking git repo https://github.com/mrfu2/rust-warpwallet [INFO] tweaked toml for git repo https://github.com/mrfu2/rust-warpwallet written to work/builds/worker-7/source/Cargo.toml [INFO] crate git repo https://github.com/mrfu2/rust-warpwallet already has a lockfile, it will not be regenerated [INFO] running `"/mnt/big/crater/work/cargo-home/bin/cargo" "+e689e5eaefe96e6dc3ed5bb629c521b7d207aff7-alt" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/builds/worker-7/target:/opt/rustwide/target:rw,Z" "-v" "/mnt/big/crater/work/builds/worker-7/source:/opt/rustwide/workdir:ro,Z" "-v" "/mnt/big/crater/work/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env" "/opt/rustwide/cargo-home/bin/cargo" "+e689e5eaefe96e6dc3ed5bb629c521b7d207aff7-alt" "check" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 00e940389a723ac5244c6a9532dc1d78ad8ab04516e44bb208deb76e8cb397c0 [INFO] running `"docker" "start" "-a" "00e940389a723ac5244c6a9532dc1d78ad8ab04516e44bb208deb76e8cb397c0"` [INFO] [stderr] Compiling nodrop v0.1.12 [INFO] [stderr] Checking xor v0.1.4 (https://github.com/zummenix/xor-rs/#bef04cb4) [INFO] [stderr] Compiling secp256k1 v0.6.3 [INFO] [stderr] Checking hpack v0.2.0 [INFO] [stderr] Checking rust-crypto v0.2.36 [INFO] [stderr] Checking serde v0.6.15 [INFO] [stderr] Checking cookie v0.2.5 [INFO] [stderr] Compiling arrayvec v0.4.7 [INFO] [stderr] Checking solicit v0.4.4 [INFO] [stderr] Compiling crossbeam-epoch v0.3.0 [INFO] [stderr] Checking hyper v0.9.18 [INFO] [stderr] Compiling crossbeam-deque v0.2.0 [INFO] [stderr] Checking strason v0.3.4 [INFO] [stderr] Checking serde_json v0.6.1 [INFO] [stderr] Compiling rayon-core v1.4.0 [INFO] [stderr] Compiling rayon v0.8.2 [INFO] [stderr] Checking jsonrpc v0.8.0 [INFO] [stderr] Checking bitcoin v0.10.6 [INFO] [stderr] Compiling ring v0.12.1 [INFO] [stderr] Checking rust-warpwallet v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] warning: unused import: `sha256::hash256` [INFO] [stderr] --> src/bitcoin.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use sha256::hash256; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `time::PreciseTime` [INFO] [stderr] --> src/threadtest.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use time::PreciseTime; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `warpwallet::add_byte_to_string` [INFO] [stderr] --> src/threadtest.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use warpwallet::add_byte_to_string; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `threadpool::ThreadPool` [INFO] [stderr] --> src/main.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | use threadpool::ThreadPool; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::sync::mpsc::channel` [INFO] [stderr] --> src/main.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | use std::sync::mpsc::channel; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `index` [INFO] [stderr] --> src/main.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | for index in 0..iterations { [INFO] [stderr] | ^^^^^ help: consider prefixing with an underscore: `_index` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `warpwallet::add_byte_to_string` [INFO] [stderr] --> src/threadtest.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use warpwallet::add_byte_to_string; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `threadpool::ThreadPool` [INFO] [stderr] --> src/main.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | use threadpool::ThreadPool; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::sync::mpsc::channel` [INFO] [stderr] --> src/main.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | use std::sync::mpsc::channel; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `warp_wallet` [INFO] [stderr] --> src/warpwallet.rs:80:1 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn warp_wallet(pass_phrase: &str, salt: &str) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `perform_warp_pbkdf2` [INFO] [stderr] --> src/warpwallet.rs:107:1 [INFO] [stderr] | [INFO] [stderr] 107 | pub fn perform_warp_pbkdf2(pass_phrase: &str, salt: &str) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `perform_warp_scrypt` [INFO] [stderr] --> src/warpwallet.rs:122:1 [INFO] [stderr] | [INFO] [stderr] 122 | pub fn perform_warp_scrypt(pass_phrase: &str, salt: &str) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `add_byte_to_string` [INFO] [stderr] --> src/warpwallet.rs:133:1 [INFO] [stderr] | [INFO] [stderr] 133 | pub fn add_byte_to_string(input_string: &str, add_byte: u8) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `WarpWalletVector` [INFO] [stderr] --> src/warpwallet.rs:286:1 [INFO] [stderr] | [INFO] [stderr] 286 | pub struct WarpWalletVector { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `get_warp_wallet_vectors` [INFO] [stderr] --> src/warpwallet.rs:293:1 [INFO] [stderr] | [INFO] [stderr] 293 | pub fn get_warp_wallet_vectors() -> [WarpWalletVector; 12] { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `threaded_xor` [INFO] [stderr] --> src/hexxor.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | pub fn threaded_xor(s1: Vec, s2:Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `hash256` [INFO] [stderr] --> src/sha256.rs:6:1 [INFO] [stderr] | [INFO] [stderr] 6 | pub fn hash256(input: &str) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `thread_test_simple` [INFO] [stderr] --> src/threadtest.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | fn thread_test_simple() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `generate_random_string` [INFO] [stderr] --> src/threadtest.rs:46:1 [INFO] [stderr] | [INFO] [stderr] 46 | fn generate_random_string(char_length: usize) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `generate_random_bytes` [INFO] [stderr] --> src/threadtest.rs:55:1 [INFO] [stderr] | [INFO] [stderr] 55 | fn generate_random_bytes(byte_count: usize) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `WARP_WALLET_SALT` [INFO] [stderr] --> src/main.rs:29:1 [INFO] [stderr] | [INFO] [stderr] 29 | const WARP_WALLET_SALT: &str = "a@b.c"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `WARP_WALLET_SEARCH` [INFO] [stderr] --> src/main.rs:30:1 [INFO] [stderr] | [INFO] [stderr] 30 | const WARP_WALLET_SEARCH: &str = "1MkupVKiCik9iyfnLrJoZLx9RH4rkF3hnA"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:43:13 [INFO] [stderr] | [INFO] [stderr] 43 | cloned_tx.send(warpwallet::print_phrase_wif_address_warp_wallet(generate_random_string(8).as_bytes().to_vec(), SALT.to_vec())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_must_use)]` on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/warpwallet.rs:57:9 [INFO] [stderr] | [INFO] [stderr] 57 | / tx.send( perform_scrypt( [INFO] [stderr] 58 | | scrypt_phrase, [INFO] [stderr] 59 | | scrypt_salt, [INFO] [stderr] 60 | | WARP_SCRYPT_ITERATIONS, [INFO] [stderr] ... | [INFO] [stderr] 63 | | WARP_KEY_LENGTH [INFO] [stderr] 64 | | )); [INFO] [stderr] | |___________^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/warpwallet.rs:67:9 [INFO] [stderr] | [INFO] [stderr] 67 | / s2_tx.send(perform_pbkdf2( [INFO] [stderr] 68 | | pbkdf2_phrase, [INFO] [stderr] 69 | | pbkdf2_salt, [INFO] [stderr] 70 | | WARP_PBKDF2_ITERATIONS, [INFO] [stderr] 71 | | WARP_KEY_LENGTH [INFO] [stderr] 72 | | )); [INFO] [stderr] | |___________^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/threadtest.rs:24:9 [INFO] [stderr] | [INFO] [stderr] 24 | tx.send(s1); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/threadtest.rs:29:9 [INFO] [stderr] | [INFO] [stderr] 29 | tx2.send(s2); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/threadtest.rs:37:9 [INFO] [stderr] | [INFO] [stderr] 37 | s3tx.send(s3); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused variable: `index` [INFO] [stderr] --> src/main.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | for index in 0..iterations { [INFO] [stderr] | ^^^^^ help: consider prefixing with an underscore: `_index` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `index` [INFO] [stderr] --> src/threadtest.rs:74:9 [INFO] [stderr] | [INFO] [stderr] 74 | for index in 0..iterations { [INFO] [stderr] | ^^^^^ help: consider prefixing with an underscore: `_index` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `index` [INFO] [stderr] --> src/threadtest.rs:102:9 [INFO] [stderr] | [INFO] [stderr] 102 | for index in 0..iterations { [INFO] [stderr] | ^^^^^ help: consider prefixing with an underscore: `_index` [INFO] [stderr] [INFO] [stderr] warning: function is never used: `thread_test_simple` [INFO] [stderr] --> src/threadtest.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | fn thread_test_simple() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `WARP_WALLET_SALT` [INFO] [stderr] --> src/main.rs:29:1 [INFO] [stderr] | [INFO] [stderr] 29 | const WARP_WALLET_SALT: &str = "a@b.c"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `WARP_WALLET_SEARCH` [INFO] [stderr] --> src/main.rs:30:1 [INFO] [stderr] | [INFO] [stderr] 30 | const WARP_WALLET_SEARCH: &str = "1MkupVKiCik9iyfnLrJoZLx9RH4rkF3hnA"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:43:13 [INFO] [stderr] | [INFO] [stderr] 43 | cloned_tx.send(warpwallet::print_phrase_wif_address_warp_wallet(generate_random_string(8).as_bytes().to_vec(), SALT.to_vec())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_must_use)]` on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/warpwallet.rs:57:9 [INFO] [stderr] | [INFO] [stderr] 57 | / tx.send( perform_scrypt( [INFO] [stderr] 58 | | scrypt_phrase, [INFO] [stderr] 59 | | scrypt_salt, [INFO] [stderr] 60 | | WARP_SCRYPT_ITERATIONS, [INFO] [stderr] ... | [INFO] [stderr] 63 | | WARP_KEY_LENGTH [INFO] [stderr] 64 | | )); [INFO] [stderr] | |___________^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/warpwallet.rs:67:9 [INFO] [stderr] | [INFO] [stderr] 67 | / s2_tx.send(perform_pbkdf2( [INFO] [stderr] 68 | | pbkdf2_phrase, [INFO] [stderr] 69 | | pbkdf2_salt, [INFO] [stderr] 70 | | WARP_PBKDF2_ITERATIONS, [INFO] [stderr] 71 | | WARP_KEY_LENGTH [INFO] [stderr] 72 | | )); [INFO] [stderr] | |___________^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/threadtest.rs:24:9 [INFO] [stderr] | [INFO] [stderr] 24 | tx.send(s1); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/threadtest.rs:29:9 [INFO] [stderr] | [INFO] [stderr] 29 | tx2.send(s2); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/threadtest.rs:37:9 [INFO] [stderr] | [INFO] [stderr] 37 | s3tx.send(s3); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/threadtest.rs:98:13 [INFO] [stderr] | [INFO] [stderr] 98 | cloned_tx.send(warpwallet::print_phrase_wif_address_warp_wallet(generate_random_string(8).as_bytes().to_vec(), SALT.to_vec())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 45.90s [INFO] running `"docker" "inspect" "00e940389a723ac5244c6a9532dc1d78ad8ab04516e44bb208deb76e8cb397c0"` [INFO] running `"docker" "rm" "-f" "00e940389a723ac5244c6a9532dc1d78ad8ab04516e44bb208deb76e8cb397c0"` [INFO] [stdout] 00e940389a723ac5244c6a9532dc1d78ad8ab04516e44bb208deb76e8cb397c0