Dec 04 19:41:17.197 INFO checking donniemattingly/fingerprint against try#1df97983eb2057dc6a8f7eb364e263b51ae23230 for pr-56481 Dec 04 19:41:17.197 INFO running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/pr-56481/worker-3/try#1df97983eb2057dc6a8f7eb364e263b51ae23230:/target:rw,Z" "-v" "/mnt/big/crater/work/local/test-source/worker-3/pr-56481/try#1df97983eb2057dc6a8f7eb364e263b51ae23230:/source:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/source" "-e" "USER_ID=1000" "-e" "CMD=cargo +1df97983eb2057dc6a8f7eb364e263b51ae23230-alt check --frozen --all --all-targets" "-e" "CARGO_TARGET_DIR=/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/cargo-home" "-e" "RUSTUP_HOME=/rustup-home" "-m" "1536M" "--network" "none" "crater"` Dec 04 19:41:17.788 INFO [stdout] 4b2fe3a9b9aabe8e96e64f7be5cc4d179ef22f198db53bc44a85b0af9b1c088f Dec 04 19:41:17.790 INFO running `"docker" "start" "-a" "4b2fe3a9b9aabe8e96e64f7be5cc4d179ef22f198db53bc44a85b0af9b1c088f"` Dec 04 19:41:19.667 INFO [stderr] usermod: no changes Dec 04 19:41:19.982 INFO [stderr] Checking hound v3.3.1 Dec 04 19:41:19.989 INFO [stderr] Checking goertzel v0.2.0 Dec 04 19:41:19.989 INFO [stderr] Checking sha1 v0.6.0 Dec 04 19:41:19.990 INFO [stderr] Compiling miniz-sys v0.1.10 Dec 04 19:41:20.015 INFO [stderr] Checking serde_json v1.0.10 Dec 04 19:41:20.015 INFO [stderr] Checking log v0.4.1 Dec 04 19:41:20.015 INFO [stderr] Checking multimap v0.4.0 Dec 04 19:41:20.015 INFO [stderr] Checking threadpool v1.7.1 Dec 04 19:41:22.099 INFO [stderr] Checking num-bigint v0.1.43 Dec 04 19:41:22.820 INFO [stderr] Checking alga v0.5.3 Dec 04 19:41:22.848 INFO [stderr] Checking rustfft v2.0.0 Dec 04 19:41:22.899 INFO [stderr] Checking ordered-float v0.5.0 Dec 04 19:41:23.076 INFO [stderr] Checking serde_yaml v0.7.3 Dec 04 19:41:23.239 INFO [stderr] Checking png v0.11.0 Dec 04 19:41:25.839 INFO [stderr] Checking rayon-core v1.4.0 Dec 04 19:41:26.243 INFO [stderr] Checking serde-value v0.5.1 Dec 04 19:41:30.756 INFO [stderr] Checking flate2 v1.0.1 Dec 04 19:41:32.047 INFO [stderr] Checking rayon v1.0.0 Dec 04 19:41:32.431 INFO [stderr] Checking num-rational v0.1.42 Dec 04 19:41:35.172 INFO [stderr] Checking num v0.1.42 Dec 04 19:41:35.870 INFO [stderr] Checking nalgebra v0.13.1 Dec 04 19:41:36.111 INFO [stderr] Checking chrono v0.4.0 Dec 04 19:41:36.113 INFO [stderr] Checking nalgebra v0.5.1 Dec 04 19:41:36.119 INFO [stderr] Checking stopwatch v0.0.7 Dec 04 19:41:36.119 INFO [stderr] Checking streaming-stats v0.1.28 Dec 04 19:41:41.677 INFO [stderr] Checking jpeg-decoder v0.1.14 Dec 04 19:41:42.966 INFO [stderr] Checking log4rs v0.8.0 Dec 04 19:41:45.123 INFO [stderr] Checking image v0.18.0 Dec 04 19:41:52.391 INFO [stderr] Checking apodize v0.2.0 Dec 04 19:42:12.742 INFO [stderr] Checking fingerprint v0.1.0 (/source) Dec 04 19:42:20.133 INFO [stderr] warning: unused import: `self::stopwatch::Stopwatch` Dec 04 19:42:20.133 INFO [stderr] --> src/lib.rs:8:5 Dec 04 19:42:20.133 INFO [stderr] | Dec 04 19:42:20.133 INFO [stderr] 8 | use self::stopwatch::Stopwatch; Dec 04 19:42:20.134 INFO [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ Dec 04 19:42:20.134 INFO [stderr] | Dec 04 19:42:20.134 INFO [stderr] = note: #[warn(unused_imports)] on by default Dec 04 19:42:20.134 INFO [stderr] Dec 04 19:42:20.135 INFO [stderr] warning: unused import: `std::collections::HashMap` Dec 04 19:42:20.135 INFO [stderr] --> src/lib.rs:14:5 Dec 04 19:42:20.135 INFO [stderr] | Dec 04 19:42:20.136 INFO [stderr] 14 | use std::collections::HashMap; Dec 04 19:42:20.136 INFO [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ Dec 04 19:42:20.136 INFO [stderr] Dec 04 19:42:20.136 INFO [stderr] warning: unused import: `multimap::MultiMap` Dec 04 19:42:20.137 INFO [stderr] --> src/lib.rs:18:5 Dec 04 19:42:20.137 INFO [stderr] | Dec 04 19:42:20.137 INFO [stderr] 18 | use multimap::MultiMap; Dec 04 19:42:20.137 INFO [stderr] | ^^^^^^^^^^^^^^^^^^ Dec 04 19:42:20.138 INFO [stderr] Dec 04 19:42:20.140 INFO [stderr] warning: unused import: `std::path::PathBuf` Dec 04 19:42:20.140 INFO [stderr] --> src/spectrogram.rs:234:5 Dec 04 19:42:20.140 INFO [stderr] | Dec 04 19:42:20.140 INFO [stderr] 234 | use std::path::PathBuf; Dec 04 19:42:20.141 INFO [stderr] | ^^^^^^^^^^^^^^^^^^ Dec 04 19:42:20.141 INFO [stderr] Dec 04 19:42:20.141 INFO [stderr] warning: unused import: `std::collections::HashSet` Dec 04 19:42:20.141 INFO [stderr] --> src/hash.rs:5:5 Dec 04 19:42:20.142 INFO [stderr] | Dec 04 19:42:20.142 INFO [stderr] 5 | use std::collections::HashSet; Dec 04 19:42:20.142 INFO [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ Dec 04 19:42:20.142 INFO [stderr] Dec 04 19:42:20.143 INFO [stderr] warning: unused import: `std::path::PathBuf` Dec 04 19:42:20.143 INFO [stderr] --> src/hash.rs:197:5 Dec 04 19:42:20.144 INFO [stderr] | Dec 04 19:42:20.144 INFO [stderr] 197 | use std::path::PathBuf; Dec 04 19:42:20.144 INFO [stderr] | ^^^^^^^^^^^^^^^^^^ Dec 04 19:42:20.144 INFO [stderr] Dec 04 19:42:20.443 INFO [stderr] warning: unused import: `std::collections::HashMap` Dec 04 19:42:20.443 INFO [stderr] --> src/main.rs:14:5 Dec 04 19:42:20.443 INFO [stderr] | Dec 04 19:42:20.443 INFO [stderr] 14 | use std::collections::HashMap; Dec 04 19:42:20.444 INFO [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ Dec 04 19:42:20.444 INFO [stderr] | Dec 04 19:42:20.444 INFO [stderr] = note: #[warn(unused_imports)] on by default Dec 04 19:42:20.444 INFO [stderr] Dec 04 19:42:20.444 INFO [stderr] warning: unused import: `std::path::PathBuf` Dec 04 19:42:20.444 INFO [stderr] --> src/spectrogram.rs:234:5 Dec 04 19:42:20.444 INFO [stderr] | Dec 04 19:42:20.444 INFO [stderr] 234 | use std::path::PathBuf; Dec 04 19:42:20.444 INFO [stderr] | ^^^^^^^^^^^^^^^^^^ Dec 04 19:42:20.444 INFO [stderr] Dec 04 19:42:20.444 INFO [stderr] warning: unused import: `std::collections::HashSet` Dec 04 19:42:20.444 INFO [stderr] --> src/hash.rs:5:5 Dec 04 19:42:20.444 INFO [stderr] | Dec 04 19:42:20.444 INFO [stderr] 5 | use std::collections::HashSet; Dec 04 19:42:20.444 INFO [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ Dec 04 19:42:20.444 INFO [stderr] Dec 04 19:42:20.444 INFO [stderr] warning: unused import: `std::path::PathBuf` Dec 04 19:42:20.444 INFO [stderr] --> src/hash.rs:197:5 Dec 04 19:42:20.445 INFO [stderr] | Dec 04 19:42:20.445 INFO [stderr] 197 | use std::path::PathBuf; Dec 04 19:42:20.445 INFO [stderr] | ^^^^^^^^^^^^^^^^^^ Dec 04 19:42:20.445 INFO [stderr] Dec 04 19:42:20.445 INFO [stderr] warning: unnecessary parentheses around `if` condition Dec 04 19:42:20.445 INFO [stderr] --> src/main.rs:81:12 Dec 04 19:42:20.445 INFO [stderr] | Dec 04 19:42:20.445 INFO [stderr] 81 | if (diff != cur) { Dec 04 19:42:20.445 INFO [stderr] | ^^^^^^^^^^^^^ help: remove these parentheses Dec 04 19:42:20.445 INFO [stderr] | Dec 04 19:42:20.445 INFO [stderr] = note: #[warn(unused_parens)] on by default Dec 04 19:42:20.445 INFO [stderr] Dec 04 19:42:20.445 INFO [stderr] warning: unnecessary parentheses around `if` condition Dec 04 19:42:20.445 INFO [stderr] --> src/main.rs:82:16 Dec 04 19:42:20.445 INFO [stderr] | Dec 04 19:42:20.445 INFO [stderr] 82 | if (cur_count > 10) { Dec 04 19:42:20.445 INFO [stderr] | ^^^^^^^^^^^^^^^^ help: remove these parentheses Dec 04 19:42:20.445 INFO [stderr] Dec 04 19:42:20.579 INFO [stderr] warning: unused variable: `peaks_len` Dec 04 19:42:20.579 INFO [stderr] --> src/hash.rs:116:9 Dec 04 19:42:20.579 INFO [stderr] | Dec 04 19:42:20.579 INFO [stderr] 116 | let peaks_len = peaks.len(); Dec 04 19:42:20.579 INFO [stderr] | ^^^^^^^^^ help: consider using `_peaks_len` instead Dec 04 19:42:20.579 INFO [stderr] | Dec 04 19:42:20.579 INFO [stderr] = note: #[warn(unused_variables)] on by default Dec 04 19:42:20.579 INFO [stderr] Dec 04 19:42:20.579 INFO [stderr] warning: unused variable: `peak` Dec 04 19:42:20.580 INFO [stderr] --> src/hash.rs:126:13 Dec 04 19:42:20.580 INFO [stderr] | Dec 04 19:42:20.580 INFO [stderr] 126 | for (i, peak) in peaks.iter().enumerate() { Dec 04 19:42:20.580 INFO [stderr] | ^^^^ help: consider using `_peak` instead Dec 04 19:42:20.580 INFO [stderr] Dec 04 19:42:20.580 INFO [stderr] warning: unused variable: `y` Dec 04 19:42:20.580 INFO [stderr] --> src/hash.rs:162:9 Dec 04 19:42:20.580 INFO [stderr] | Dec 04 19:42:20.580 INFO [stderr] 162 | let y = rand::random::(); Dec 04 19:42:20.580 INFO [stderr] | ^ help: consider using `_y` instead Dec 04 19:42:20.580 INFO [stderr] Dec 04 19:42:20.586 INFO [stderr] warning: unused variable: `path` Dec 04 19:42:20.587 INFO [stderr] --> src/lib.rs:53:39 Dec 04 19:42:20.587 INFO [stderr] | Dec 04 19:42:20.587 INFO [stderr] 53 | pub extern "C" fn rust_compute_hashes(path: *const c_char) -> int32_t { Dec 04 19:42:20.587 INFO [stderr] | ^^^^ help: consider using `_path` instead Dec 04 19:42:20.587 INFO [stderr] Dec 04 19:42:20.635 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:20.635 INFO [stderr] --> src/spectrogram.rs:62:13 Dec 04 19:42:20.635 INFO [stderr] | Dec 04 19:42:20.635 INFO [stderr] 62 | let mut sw = Stopwatch::start_new(); Dec 04 19:42:20.635 INFO [stderr] | ----^^ Dec 04 19:42:20.635 INFO [stderr] | | Dec 04 19:42:20.635 INFO [stderr] | help: remove this `mut` Dec 04 19:42:20.635 INFO [stderr] | Dec 04 19:42:20.635 INFO [stderr] = note: #[warn(unused_mut)] on by default Dec 04 19:42:20.635 INFO [stderr] Dec 04 19:42:20.643 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:20.643 INFO [stderr] --> src/spectrogram.rs:109:9 Dec 04 19:42:20.643 INFO [stderr] | Dec 04 19:42:20.643 INFO [stderr] 109 | let mut new_spec = spectrum.split_off(half_index); Dec 04 19:42:20.643 INFO [stderr] | ----^^^^^^^^ Dec 04 19:42:20.643 INFO [stderr] | | Dec 04 19:42:20.643 INFO [stderr] | help: remove this `mut` Dec 04 19:42:20.643 INFO [stderr] Dec 04 19:42:20.663 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:20.663 INFO [stderr] --> src/spectrogram.rs:183:9 Dec 04 19:42:20.663 INFO [stderr] | Dec 04 19:42:20.663 INFO [stderr] 183 | let mut raw: Vec> = vec![Vec::new(); num_chunks - 1 as usize]; Dec 04 19:42:20.663 INFO [stderr] | ----^^^ Dec 04 19:42:20.663 INFO [stderr] | | Dec 04 19:42:20.663 INFO [stderr] | help: remove this `mut` Dec 04 19:42:20.663 INFO [stderr] Dec 04 19:42:20.663 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:20.663 INFO [stderr] --> src/spectrogram.rs:184:9 Dec 04 19:42:20.663 INFO [stderr] | Dec 04 19:42:20.663 INFO [stderr] 184 | let mut output: Mutex>> = Mutex::new(raw); Dec 04 19:42:20.663 INFO [stderr] | ----^^^^^^ Dec 04 19:42:20.663 INFO [stderr] | | Dec 04 19:42:20.663 INFO [stderr] | help: remove this `mut` Dec 04 19:42:20.663 INFO [stderr] Dec 04 19:42:20.678 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:20.678 INFO [stderr] --> src/hash.rs:61:9 Dec 04 19:42:20.678 INFO [stderr] | Dec 04 19:42:20.678 INFO [stderr] 61 | let mut sw = Stopwatch::start_new(); Dec 04 19:42:20.678 INFO [stderr] | ----^^ Dec 04 19:42:20.678 INFO [stderr] | | Dec 04 19:42:20.678 INFO [stderr] | help: remove this `mut` Dec 04 19:42:20.678 INFO [stderr] Dec 04 19:42:20.679 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:20.679 INFO [stderr] --> src/hash.rs:113:9 Dec 04 19:42:20.679 INFO [stderr] | Dec 04 19:42:20.679 INFO [stderr] 113 | let mut sw = Stopwatch::start_new(); Dec 04 19:42:20.679 INFO [stderr] | ----^^ Dec 04 19:42:20.679 INFO [stderr] | | Dec 04 19:42:20.679 INFO [stderr] | help: remove this `mut` Dec 04 19:42:20.679 INFO [stderr] Dec 04 19:42:20.679 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:20.679 INFO [stderr] --> src/hash.rs:119:9 Dec 04 19:42:20.679 INFO [stderr] | Dec 04 19:42:20.679 INFO [stderr] 119 | let mut output: Mutex> = Mutex::new(vec![]); Dec 04 19:42:20.679 INFO [stderr] | ----^^^^^^ Dec 04 19:42:20.679 INFO [stderr] | | Dec 04 19:42:20.679 INFO [stderr] | help: remove this `mut` Dec 04 19:42:20.679 INFO [stderr] Dec 04 19:42:20.691 INFO [stderr] warning: unnecessary `unsafe` block Dec 04 19:42:20.691 INFO [stderr] --> src/lib.rs:69:5 Dec 04 19:42:20.691 INFO [stderr] | Dec 04 19:42:20.691 INFO [stderr] 69 | unsafe { transformed[0] } Dec 04 19:42:20.691 INFO [stderr] | ^^^^^^ unnecessary `unsafe` block Dec 04 19:42:20.691 INFO [stderr] | Dec 04 19:42:20.691 INFO [stderr] = note: #[warn(unused_unsafe)] on by default Dec 04 19:42:20.691 INFO [stderr] Dec 04 19:42:20.851 INFO [stderr] warning: unused import: `std::collections::HashMap` Dec 04 19:42:20.851 INFO [stderr] --> src/main.rs:14:5 Dec 04 19:42:20.851 INFO [stderr] | Dec 04 19:42:20.851 INFO [stderr] 14 | use std::collections::HashMap; Dec 04 19:42:20.851 INFO [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ Dec 04 19:42:20.851 INFO [stderr] | Dec 04 19:42:20.851 INFO [stderr] = note: #[warn(unused_imports)] on by default Dec 04 19:42:20.851 INFO [stderr] Dec 04 19:42:20.851 INFO [stderr] warning: unused import: `std::collections::HashSet` Dec 04 19:42:20.851 INFO [stderr] --> src/hash.rs:5:5 Dec 04 19:42:20.851 INFO [stderr] | Dec 04 19:42:20.851 INFO [stderr] 5 | use std::collections::HashSet; Dec 04 19:42:20.851 INFO [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ Dec 04 19:42:20.851 INFO [stderr] Dec 04 19:42:20.851 INFO [stderr] warning: unnecessary parentheses around `if` condition Dec 04 19:42:20.851 INFO [stderr] --> src/main.rs:81:12 Dec 04 19:42:20.851 INFO [stderr] | Dec 04 19:42:20.851 INFO [stderr] 81 | if (diff != cur) { Dec 04 19:42:20.851 INFO [stderr] | ^^^^^^^^^^^^^ help: remove these parentheses Dec 04 19:42:20.851 INFO [stderr] | Dec 04 19:42:20.851 INFO [stderr] = note: #[warn(unused_parens)] on by default Dec 04 19:42:20.851 INFO [stderr] Dec 04 19:42:20.851 INFO [stderr] warning: unnecessary parentheses around `if` condition Dec 04 19:42:20.851 INFO [stderr] --> src/main.rs:82:16 Dec 04 19:42:20.851 INFO [stderr] | Dec 04 19:42:20.851 INFO [stderr] 82 | if (cur_count > 10) { Dec 04 19:42:20.851 INFO [stderr] | ^^^^^^^^^^^^^^^^ help: remove these parentheses Dec 04 19:42:20.851 INFO [stderr] Dec 04 19:42:20.907 INFO [stderr] warning: unused variable: `peaks_len` Dec 04 19:42:20.907 INFO [stderr] --> src/hash.rs:116:9 Dec 04 19:42:20.907 INFO [stderr] | Dec 04 19:42:20.907 INFO [stderr] 116 | let peaks_len = peaks.len(); Dec 04 19:42:20.907 INFO [stderr] | ^^^^^^^^^ help: consider using `_peaks_len` instead Dec 04 19:42:20.907 INFO [stderr] | Dec 04 19:42:20.907 INFO [stderr] = note: #[warn(unused_variables)] on by default Dec 04 19:42:20.907 INFO [stderr] Dec 04 19:42:20.907 INFO [stderr] warning: unused variable: `peak` Dec 04 19:42:20.907 INFO [stderr] --> src/hash.rs:126:13 Dec 04 19:42:20.907 INFO [stderr] | Dec 04 19:42:20.907 INFO [stderr] 126 | for (i, peak) in peaks.iter().enumerate() { Dec 04 19:42:20.907 INFO [stderr] | ^^^^ help: consider using `_peak` instead Dec 04 19:42:20.907 INFO [stderr] Dec 04 19:42:20.907 INFO [stderr] warning: unused variable: `y` Dec 04 19:42:20.907 INFO [stderr] --> src/hash.rs:162:9 Dec 04 19:42:20.907 INFO [stderr] | Dec 04 19:42:20.907 INFO [stderr] 162 | let y = rand::random::(); Dec 04 19:42:20.907 INFO [stderr] | ^ help: consider using `_y` instead Dec 04 19:42:20.907 INFO [stderr] Dec 04 19:42:20.907 INFO [stderr] warning: unused variable: `offsets2` Dec 04 19:42:20.907 INFO [stderr] --> src/main.rs:65:13 Dec 04 19:42:20.907 INFO [stderr] | Dec 04 19:42:20.907 INFO [stderr] 65 | let mut offsets2: Vec<(f32, f32, String)> = Vec::new(); Dec 04 19:42:20.907 INFO [stderr] | ^^^^^^^^ help: consider using `_offsets2` instead Dec 04 19:42:20.907 INFO [stderr] Dec 04 19:42:20.913 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:20.913 INFO [stderr] --> src/main.rs:25:9 Dec 04 19:42:20.913 INFO [stderr] | Dec 04 19:42:20.913 INFO [stderr] 25 | let mut sw = Stopwatch::start_new(); Dec 04 19:42:20.913 INFO [stderr] | ----^^ Dec 04 19:42:20.913 INFO [stderr] | | Dec 04 19:42:20.913 INFO [stderr] | help: remove this `mut` Dec 04 19:42:20.913 INFO [stderr] | Dec 04 19:42:20.913 INFO [stderr] = note: #[warn(unused_mut)] on by default Dec 04 19:42:20.913 INFO [stderr] Dec 04 19:42:20.955 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:20.955 INFO [stderr] --> src/main.rs:44:9 Dec 04 19:42:20.955 INFO [stderr] | Dec 04 19:42:20.955 INFO [stderr] 44 | let mut dups = 0; Dec 04 19:42:20.955 INFO [stderr] | ----^^^^ Dec 04 19:42:20.955 INFO [stderr] | | Dec 04 19:42:20.955 INFO [stderr] | help: remove this `mut` Dec 04 19:42:20.955 INFO [stderr] Dec 04 19:42:20.955 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:20.955 INFO [stderr] --> src/main.rs:65:9 Dec 04 19:42:20.955 INFO [stderr] | Dec 04 19:42:20.955 INFO [stderr] 65 | let mut offsets2: Vec<(f32, f32, String)> = Vec::new(); Dec 04 19:42:20.955 INFO [stderr] | ----^^^^^^^^ Dec 04 19:42:20.955 INFO [stderr] | | Dec 04 19:42:20.955 INFO [stderr] | help: remove this `mut` Dec 04 19:42:20.955 INFO [stderr] Dec 04 19:42:20.991 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:20.991 INFO [stderr] --> src/spectrogram.rs:62:13 Dec 04 19:42:20.991 INFO [stderr] | Dec 04 19:42:20.991 INFO [stderr] 62 | let mut sw = Stopwatch::start_new(); Dec 04 19:42:20.991 INFO [stderr] | ----^^ Dec 04 19:42:20.991 INFO [stderr] | | Dec 04 19:42:20.991 INFO [stderr] | help: remove this `mut` Dec 04 19:42:20.991 INFO [stderr] Dec 04 19:42:21.011 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:21.011 INFO [stderr] --> src/spectrogram.rs:109:9 Dec 04 19:42:21.011 INFO [stderr] | Dec 04 19:42:21.011 INFO [stderr] 109 | let mut new_spec = spectrum.split_off(half_index); Dec 04 19:42:21.011 INFO [stderr] | ----^^^^^^^^ Dec 04 19:42:21.011 INFO [stderr] | | Dec 04 19:42:21.011 INFO [stderr] | help: remove this `mut` Dec 04 19:42:21.011 INFO [stderr] Dec 04 19:42:21.039 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:21.039 INFO [stderr] --> src/spectrogram.rs:183:9 Dec 04 19:42:21.039 INFO [stderr] | Dec 04 19:42:21.039 INFO [stderr] 183 | let mut raw: Vec> = vec![Vec::new(); num_chunks - 1 as usize]; Dec 04 19:42:21.039 INFO [stderr] | ----^^^ Dec 04 19:42:21.039 INFO [stderr] | | Dec 04 19:42:21.039 INFO [stderr] | help: remove this `mut` Dec 04 19:42:21.039 INFO [stderr] Dec 04 19:42:21.039 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:21.039 INFO [stderr] --> src/spectrogram.rs:184:9 Dec 04 19:42:21.039 INFO [stderr] | Dec 04 19:42:21.039 INFO [stderr] 184 | let mut output: Mutex>> = Mutex::new(raw); Dec 04 19:42:21.039 INFO [stderr] | ----^^^^^^ Dec 04 19:42:21.039 INFO [stderr] | | Dec 04 19:42:21.039 INFO [stderr] | help: remove this `mut` Dec 04 19:42:21.039 INFO [stderr] Dec 04 19:42:21.049 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:21.049 INFO [stderr] --> src/hash.rs:61:9 Dec 04 19:42:21.049 INFO [stderr] | Dec 04 19:42:21.049 INFO [stderr] 61 | let mut sw = Stopwatch::start_new(); Dec 04 19:42:21.049 INFO [stderr] | ----^^ Dec 04 19:42:21.049 INFO [stderr] | | Dec 04 19:42:21.049 INFO [stderr] | help: remove this `mut` Dec 04 19:42:21.049 INFO [stderr] Dec 04 19:42:21.059 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:21.059 INFO [stderr] --> src/hash.rs:113:9 Dec 04 19:42:21.059 INFO [stderr] | Dec 04 19:42:21.059 INFO [stderr] 113 | let mut sw = Stopwatch::start_new(); Dec 04 19:42:21.059 INFO [stderr] | ----^^ Dec 04 19:42:21.059 INFO [stderr] | | Dec 04 19:42:21.059 INFO [stderr] | help: remove this `mut` Dec 04 19:42:21.059 INFO [stderr] Dec 04 19:42:21.059 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:21.059 INFO [stderr] --> src/hash.rs:119:9 Dec 04 19:42:21.059 INFO [stderr] | Dec 04 19:42:21.059 INFO [stderr] 119 | let mut output: Mutex> = Mutex::new(vec![]); Dec 04 19:42:21.059 INFO [stderr] | ----^^^^^^ Dec 04 19:42:21.059 INFO [stderr] | | Dec 04 19:42:21.059 INFO [stderr] | help: remove this `mut` Dec 04 19:42:21.059 INFO [stderr] Dec 04 19:42:21.063 INFO [stderr] warning: function is never used: `gen_spectrogram` Dec 04 19:42:21.063 INFO [stderr] --> src/main.rs:33:1 Dec 04 19:42:21.063 INFO [stderr] | Dec 04 19:42:21.063 INFO [stderr] 33 | fn gen_spectrogram>(wav: P, image: P) { Dec 04 19:42:21.063 INFO [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Dec 04 19:42:21.063 INFO [stderr] | Dec 04 19:42:21.063 INFO [stderr] = note: #[warn(dead_code)] on by default Dec 04 19:42:21.063 INFO [stderr] Dec 04 19:42:21.063 INFO [stderr] warning: function is never used: `test_fingerprinting` Dec 04 19:42:21.063 INFO [stderr] --> src/main.rs:39:1 Dec 04 19:42:21.063 INFO [stderr] | Dec 04 19:42:21.063 INFO [stderr] 39 | fn test_fingerprinting() { Dec 04 19:42:21.063 INFO [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ Dec 04 19:42:21.063 INFO [stderr] Dec 04 19:42:21.075 INFO [stderr] warning: unused variable: `peaks_len` Dec 04 19:42:21.075 INFO [stderr] --> src/hash.rs:116:9 Dec 04 19:42:21.075 INFO [stderr] | Dec 04 19:42:21.075 INFO [stderr] 116 | let peaks_len = peaks.len(); Dec 04 19:42:21.075 INFO [stderr] | ^^^^^^^^^ help: consider using `_peaks_len` instead Dec 04 19:42:21.075 INFO [stderr] | Dec 04 19:42:21.075 INFO [stderr] = note: #[warn(unused_variables)] on by default Dec 04 19:42:21.075 INFO [stderr] Dec 04 19:42:21.075 INFO [stderr] warning: unused variable: `peak` Dec 04 19:42:21.075 INFO [stderr] --> src/hash.rs:126:13 Dec 04 19:42:21.075 INFO [stderr] | Dec 04 19:42:21.075 INFO [stderr] 126 | for (i, peak) in peaks.iter().enumerate() { Dec 04 19:42:21.075 INFO [stderr] | ^^^^ help: consider using `_peak` instead Dec 04 19:42:21.075 INFO [stderr] Dec 04 19:42:21.075 INFO [stderr] warning: unused variable: `y` Dec 04 19:42:21.075 INFO [stderr] --> src/hash.rs:162:9 Dec 04 19:42:21.075 INFO [stderr] | Dec 04 19:42:21.075 INFO [stderr] 162 | let y = rand::random::(); Dec 04 19:42:21.075 INFO [stderr] | ^ help: consider using `_y` instead Dec 04 19:42:21.075 INFO [stderr] Dec 04 19:42:21.075 INFO [stderr] warning: unused variable: `offsets2` Dec 04 19:42:21.075 INFO [stderr] --> src/main.rs:65:13 Dec 04 19:42:21.075 INFO [stderr] | Dec 04 19:42:21.075 INFO [stderr] 65 | let mut offsets2: Vec<(f32, f32, String)> = Vec::new(); Dec 04 19:42:21.075 INFO [stderr] | ^^^^^^^^ help: consider using `_offsets2` instead Dec 04 19:42:21.075 INFO [stderr] Dec 04 19:42:21.079 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:21.079 INFO [stderr] --> src/main.rs:25:9 Dec 04 19:42:21.079 INFO [stderr] | Dec 04 19:42:21.079 INFO [stderr] 25 | let mut sw = Stopwatch::start_new(); Dec 04 19:42:21.079 INFO [stderr] | ----^^ Dec 04 19:42:21.079 INFO [stderr] | | Dec 04 19:42:21.079 INFO [stderr] | help: remove this `mut` Dec 04 19:42:21.079 INFO [stderr] | Dec 04 19:42:21.079 INFO [stderr] = note: #[warn(unused_mut)] on by default Dec 04 19:42:21.079 INFO [stderr] Dec 04 19:42:21.091 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:21.091 INFO [stderr] --> src/main.rs:44:9 Dec 04 19:42:21.091 INFO [stderr] | Dec 04 19:42:21.091 INFO [stderr] 44 | let mut dups = 0; Dec 04 19:42:21.091 INFO [stderr] | ----^^^^ Dec 04 19:42:21.091 INFO [stderr] | | Dec 04 19:42:21.091 INFO [stderr] | help: remove this `mut` Dec 04 19:42:21.091 INFO [stderr] Dec 04 19:42:21.091 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:21.091 INFO [stderr] --> src/main.rs:65:9 Dec 04 19:42:21.091 INFO [stderr] | Dec 04 19:42:21.091 INFO [stderr] 65 | let mut offsets2: Vec<(f32, f32, String)> = Vec::new(); Dec 04 19:42:21.091 INFO [stderr] | ----^^^^^^^^ Dec 04 19:42:21.091 INFO [stderr] | | Dec 04 19:42:21.091 INFO [stderr] | help: remove this `mut` Dec 04 19:42:21.091 INFO [stderr] Dec 04 19:42:21.115 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:21.115 INFO [stderr] --> src/spectrogram.rs:62:13 Dec 04 19:42:21.115 INFO [stderr] | Dec 04 19:42:21.115 INFO [stderr] 62 | let mut sw = Stopwatch::start_new(); Dec 04 19:42:21.115 INFO [stderr] | ----^^ Dec 04 19:42:21.115 INFO [stderr] | | Dec 04 19:42:21.115 INFO [stderr] | help: remove this `mut` Dec 04 19:42:21.115 INFO [stderr] Dec 04 19:42:21.115 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:21.115 INFO [stderr] --> src/spectrogram.rs:109:9 Dec 04 19:42:21.115 INFO [stderr] | Dec 04 19:42:21.115 INFO [stderr] 109 | let mut new_spec = spectrum.split_off(half_index); Dec 04 19:42:21.115 INFO [stderr] | ----^^^^^^^^ Dec 04 19:42:21.115 INFO [stderr] | | Dec 04 19:42:21.115 INFO [stderr] | help: remove this `mut` Dec 04 19:42:21.115 INFO [stderr] Dec 04 19:42:21.131 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:21.131 INFO [stderr] --> src/spectrogram.rs:183:9 Dec 04 19:42:21.131 INFO [stderr] | Dec 04 19:42:21.131 INFO [stderr] 183 | let mut raw: Vec> = vec![Vec::new(); num_chunks - 1 as usize]; Dec 04 19:42:21.131 INFO [stderr] | ----^^^ Dec 04 19:42:21.131 INFO [stderr] | | Dec 04 19:42:21.131 INFO [stderr] | help: remove this `mut` Dec 04 19:42:21.131 INFO [stderr] Dec 04 19:42:21.131 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:21.131 INFO [stderr] --> src/spectrogram.rs:184:9 Dec 04 19:42:21.131 INFO [stderr] | Dec 04 19:42:21.131 INFO [stderr] 184 | let mut output: Mutex>> = Mutex::new(raw); Dec 04 19:42:21.131 INFO [stderr] | ----^^^^^^ Dec 04 19:42:21.131 INFO [stderr] | | Dec 04 19:42:21.131 INFO [stderr] | help: remove this `mut` Dec 04 19:42:21.131 INFO [stderr] Dec 04 19:42:21.147 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:21.147 INFO [stderr] --> src/hash.rs:61:9 Dec 04 19:42:21.147 INFO [stderr] | Dec 04 19:42:21.147 INFO [stderr] 61 | let mut sw = Stopwatch::start_new(); Dec 04 19:42:21.147 INFO [stderr] | ----^^ Dec 04 19:42:21.147 INFO [stderr] | | Dec 04 19:42:21.147 INFO [stderr] | help: remove this `mut` Dec 04 19:42:21.147 INFO [stderr] Dec 04 19:42:21.147 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:21.147 INFO [stderr] --> src/hash.rs:113:9 Dec 04 19:42:21.147 INFO [stderr] | Dec 04 19:42:21.147 INFO [stderr] 113 | let mut sw = Stopwatch::start_new(); Dec 04 19:42:21.147 INFO [stderr] | ----^^ Dec 04 19:42:21.147 INFO [stderr] | | Dec 04 19:42:21.147 INFO [stderr] | help: remove this `mut` Dec 04 19:42:21.147 INFO [stderr] Dec 04 19:42:21.147 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:21.147 INFO [stderr] --> src/hash.rs:119:9 Dec 04 19:42:21.147 INFO [stderr] | Dec 04 19:42:21.147 INFO [stderr] 119 | let mut output: Mutex> = Mutex::new(vec![]); Dec 04 19:42:21.147 INFO [stderr] | ----^^^^^^ Dec 04 19:42:21.147 INFO [stderr] | | Dec 04 19:42:21.147 INFO [stderr] | help: remove this `mut` Dec 04 19:42:21.147 INFO [stderr] Dec 04 19:42:21.155 INFO [stderr] warning: function is never used: `gen_spectrogram` Dec 04 19:42:21.155 INFO [stderr] --> src/main.rs:33:1 Dec 04 19:42:21.155 INFO [stderr] | Dec 04 19:42:21.155 INFO [stderr] 33 | fn gen_spectrogram>(wav: P, image: P) { Dec 04 19:42:21.155 INFO [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Dec 04 19:42:21.155 INFO [stderr] | Dec 04 19:42:21.155 INFO [stderr] = note: #[warn(dead_code)] on by default Dec 04 19:42:21.155 INFO [stderr] Dec 04 19:42:21.155 INFO [stderr] warning: function is never used: `test_fingerprinting` Dec 04 19:42:21.155 INFO [stderr] --> src/main.rs:39:1 Dec 04 19:42:21.155 INFO [stderr] | Dec 04 19:42:21.155 INFO [stderr] 39 | fn test_fingerprinting() { Dec 04 19:42:21.155 INFO [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ Dec 04 19:42:21.155 INFO [stderr] Dec 04 19:42:21.848 INFO [stderr] warning: unused import: `self::stopwatch::Stopwatch` Dec 04 19:42:21.849 INFO [stderr] --> src/lib.rs:8:5 Dec 04 19:42:21.849 INFO [stderr] | Dec 04 19:42:21.849 INFO [stderr] 8 | use self::stopwatch::Stopwatch; Dec 04 19:42:21.849 INFO [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ Dec 04 19:42:21.849 INFO [stderr] | Dec 04 19:42:21.849 INFO [stderr] = note: #[warn(unused_imports)] on by default Dec 04 19:42:21.849 INFO [stderr] Dec 04 19:42:21.849 INFO [stderr] warning: unused import: `std::collections::HashMap` Dec 04 19:42:21.849 INFO [stderr] --> src/lib.rs:14:5 Dec 04 19:42:21.849 INFO [stderr] | Dec 04 19:42:21.849 INFO [stderr] 14 | use std::collections::HashMap; Dec 04 19:42:21.849 INFO [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ Dec 04 19:42:21.849 INFO [stderr] Dec 04 19:42:21.849 INFO [stderr] warning: unused import: `multimap::MultiMap` Dec 04 19:42:21.849 INFO [stderr] --> src/lib.rs:18:5 Dec 04 19:42:21.849 INFO [stderr] | Dec 04 19:42:21.849 INFO [stderr] 18 | use multimap::MultiMap; Dec 04 19:42:21.849 INFO [stderr] | ^^^^^^^^^^^^^^^^^^ Dec 04 19:42:21.849 INFO [stderr] Dec 04 19:42:21.849 INFO [stderr] warning: unused import: `std::collections::HashSet` Dec 04 19:42:21.849 INFO [stderr] --> src/hash.rs:5:5 Dec 04 19:42:21.849 INFO [stderr] | Dec 04 19:42:21.849 INFO [stderr] 5 | use std::collections::HashSet; Dec 04 19:42:21.849 INFO [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ Dec 04 19:42:21.849 INFO [stderr] Dec 04 19:42:22.051 INFO [stderr] warning: unused variable: `peaks_len` Dec 04 19:42:22.051 INFO [stderr] --> src/hash.rs:116:9 Dec 04 19:42:22.051 INFO [stderr] | Dec 04 19:42:22.051 INFO [stderr] 116 | let peaks_len = peaks.len(); Dec 04 19:42:22.051 INFO [stderr] | ^^^^^^^^^ help: consider using `_peaks_len` instead Dec 04 19:42:22.051 INFO [stderr] | Dec 04 19:42:22.051 INFO [stderr] = note: #[warn(unused_variables)] on by default Dec 04 19:42:22.051 INFO [stderr] Dec 04 19:42:22.051 INFO [stderr] warning: unused variable: `peak` Dec 04 19:42:22.051 INFO [stderr] --> src/hash.rs:126:13 Dec 04 19:42:22.051 INFO [stderr] | Dec 04 19:42:22.051 INFO [stderr] 126 | for (i, peak) in peaks.iter().enumerate() { Dec 04 19:42:22.051 INFO [stderr] | ^^^^ help: consider using `_peak` instead Dec 04 19:42:22.051 INFO [stderr] Dec 04 19:42:22.051 INFO [stderr] warning: unused variable: `y` Dec 04 19:42:22.051 INFO [stderr] --> src/hash.rs:162:9 Dec 04 19:42:22.051 INFO [stderr] | Dec 04 19:42:22.051 INFO [stderr] 162 | let y = rand::random::(); Dec 04 19:42:22.051 INFO [stderr] | ^ help: consider using `_y` instead Dec 04 19:42:22.051 INFO [stderr] Dec 04 19:42:22.051 INFO [stderr] warning: unused variable: `path` Dec 04 19:42:22.051 INFO [stderr] --> src/lib.rs:53:39 Dec 04 19:42:22.051 INFO [stderr] | Dec 04 19:42:22.051 INFO [stderr] 53 | pub extern "C" fn rust_compute_hashes(path: *const c_char) -> int32_t { Dec 04 19:42:22.051 INFO [stderr] | ^^^^ help: consider using `_path` instead Dec 04 19:42:22.051 INFO [stderr] Dec 04 19:42:22.063 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:22.063 INFO [stderr] --> src/spectrogram.rs:62:13 Dec 04 19:42:22.063 INFO [stderr] | Dec 04 19:42:22.063 INFO [stderr] 62 | let mut sw = Stopwatch::start_new(); Dec 04 19:42:22.063 INFO [stderr] | ----^^ Dec 04 19:42:22.063 INFO [stderr] | | Dec 04 19:42:22.063 INFO [stderr] | help: remove this `mut` Dec 04 19:42:22.063 INFO [stderr] | Dec 04 19:42:22.063 INFO [stderr] = note: #[warn(unused_mut)] on by default Dec 04 19:42:22.063 INFO [stderr] Dec 04 19:42:22.069 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:22.069 INFO [stderr] --> src/spectrogram.rs:109:9 Dec 04 19:42:22.069 INFO [stderr] | Dec 04 19:42:22.069 INFO [stderr] 109 | let mut new_spec = spectrum.split_off(half_index); Dec 04 19:42:22.069 INFO [stderr] | ----^^^^^^^^ Dec 04 19:42:22.069 INFO [stderr] | | Dec 04 19:42:22.069 INFO [stderr] | help: remove this `mut` Dec 04 19:42:22.071 INFO [stderr] Dec 04 19:42:22.091 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:22.091 INFO [stderr] --> src/spectrogram.rs:183:9 Dec 04 19:42:22.091 INFO [stderr] | Dec 04 19:42:22.091 INFO [stderr] 183 | let mut raw: Vec> = vec![Vec::new(); num_chunks - 1 as usize]; Dec 04 19:42:22.091 INFO [stderr] | ----^^^ Dec 04 19:42:22.091 INFO [stderr] | | Dec 04 19:42:22.091 INFO [stderr] | help: remove this `mut` Dec 04 19:42:22.091 INFO [stderr] Dec 04 19:42:22.091 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:22.091 INFO [stderr] --> src/spectrogram.rs:184:9 Dec 04 19:42:22.091 INFO [stderr] | Dec 04 19:42:22.091 INFO [stderr] 184 | let mut output: Mutex>> = Mutex::new(raw); Dec 04 19:42:22.091 INFO [stderr] | ----^^^^^^ Dec 04 19:42:22.091 INFO [stderr] | | Dec 04 19:42:22.091 INFO [stderr] | help: remove this `mut` Dec 04 19:42:22.091 INFO [stderr] Dec 04 19:42:22.115 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:22.115 INFO [stderr] --> src/hash.rs:61:9 Dec 04 19:42:22.115 INFO [stderr] | Dec 04 19:42:22.115 INFO [stderr] 61 | let mut sw = Stopwatch::start_new(); Dec 04 19:42:22.115 INFO [stderr] | ----^^ Dec 04 19:42:22.115 INFO [stderr] | | Dec 04 19:42:22.115 INFO [stderr] | help: remove this `mut` Dec 04 19:42:22.115 INFO [stderr] Dec 04 19:42:22.119 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:22.119 INFO [stderr] --> src/hash.rs:113:9 Dec 04 19:42:22.119 INFO [stderr] | Dec 04 19:42:22.119 INFO [stderr] 113 | let mut sw = Stopwatch::start_new(); Dec 04 19:42:22.119 INFO [stderr] | ----^^ Dec 04 19:42:22.119 INFO [stderr] | | Dec 04 19:42:22.119 INFO [stderr] | help: remove this `mut` Dec 04 19:42:22.119 INFO [stderr] Dec 04 19:42:22.119 INFO [stderr] warning: variable does not need to be mutable Dec 04 19:42:22.119 INFO [stderr] --> src/hash.rs:119:9 Dec 04 19:42:22.119 INFO [stderr] | Dec 04 19:42:22.119 INFO [stderr] 119 | let mut output: Mutex> = Mutex::new(vec![]); Dec 04 19:42:22.119 INFO [stderr] | ----^^^^^^ Dec 04 19:42:22.119 INFO [stderr] | | Dec 04 19:42:22.119 INFO [stderr] | help: remove this `mut` Dec 04 19:42:22.119 INFO [stderr] Dec 04 19:42:22.123 INFO [stderr] warning: unnecessary `unsafe` block Dec 04 19:42:22.123 INFO [stderr] --> src/lib.rs:69:5 Dec 04 19:42:22.123 INFO [stderr] | Dec 04 19:42:22.123 INFO [stderr] 69 | unsafe { transformed[0] } Dec 04 19:42:22.123 INFO [stderr] | ^^^^^^ unnecessary `unsafe` block Dec 04 19:42:22.123 INFO [stderr] | Dec 04 19:42:22.123 INFO [stderr] = note: #[warn(unused_unsafe)] on by default Dec 04 19:42:22.123 INFO [stderr] Dec 04 19:42:22.180 INFO [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1m 02s Dec 04 19:42:22.203 INFO [stderr] su: No module specific data is present Dec 04 19:42:23.003 INFO running `"docker" "inspect" "4b2fe3a9b9aabe8e96e64f7be5cc4d179ef22f198db53bc44a85b0af9b1c088f"` Dec 04 19:42:23.193 INFO running `"docker" "rm" "-f" "4b2fe3a9b9aabe8e96e64f7be5cc4d179ef22f198db53bc44a85b0af9b1c088f"` Dec 04 19:42:23.351 INFO [stdout] 4b2fe3a9b9aabe8e96e64f7be5cc4d179ef22f198db53bc44a85b0af9b1c088f