[INFO] cloning repository https://github.com/ArmedGuy/rusty-rust-interpreter
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ArmedGuy/rusty-rust-interpreter" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FArmedGuy%2Frusty-rust-interpreter", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FArmedGuy%2Frusty-rust-interpreter'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 049b40e52d8f26f09545e4222eb9402370e7fe86
[INFO] checking ArmedGuy/rusty-rust-interpreter against master#4eb62535fc12dd1a63fd43a4173e224e79313c4d for pr-158816
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FArmedGuy%2Frusty-rust-interpreter" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/ArmedGuy/rusty-rust-interpreter
[INFO] finished tweaking git repo https://github.com/ArmedGuy/rusty-rust-interpreter
[INFO] tweaked toml for git repo https://github.com/ArmedGuy/rusty-rust-interpreter written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/ArmedGuy/rusty-rust-interpreter on toolchain 4eb62535fc12dd1a63fd43a4173e224e79313c4d
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+4eb62535fc12dd1a63fd43a4173e224e79313c4d" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/ArmedGuy/rusty-rust-interpreter already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+4eb62535fc12dd1a63fd43a4173e224e79313c4d" "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 lalrpop-util v0.19.0
[INFO] [stderr]   Downloaded string_cache v0.8.0
[INFO] [stderr]   Downloaded siphasher v0.3.3
[INFO] [stderr]   Downloaded hermit-abi v0.1.15
[INFO] [stderr]   Downloaded regex v1.3.9
[INFO] [stderr]   Downloaded dirs v1.0.5
[INFO] [stderr]   Downloaded diff v0.1.12
[INFO] [stderr]   Downloaded new_debug_unreachable v1.0.4
[INFO] [stderr]   Downloaded ascii-canvas v2.0.0
[INFO] [stderr]   Downloaded either v1.6.0
[INFO] [stderr]   Downloaded bit-vec v0.6.2
[INFO] [stderr]   Downloaded ena v0.14.0
[INFO] [stderr]   Downloaded docopt v1.1.0
[INFO] [stderr]   Downloaded term v0.5.2
[INFO] [stderr]   Downloaded indexmap v1.5.2
[INFO] [stderr]   Downloaded proc-macro2 v1.0.19
[INFO] [stderr]   Downloaded serde_derive v1.0.115
[INFO] [stderr]   Downloaded serde v1.0.115
[INFO] [stderr]   Downloaded hashbrown v0.8.2
[INFO] [stderr]   Downloaded aho-corasick v0.7.13
[INFO] [stderr]   Downloaded lalrpop v0.19.0
[INFO] [stderr]   Downloaded syn v1.0.39
[INFO] [stderr]   Downloaded regex-syntax v0.6.18
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 653b7a36cfdcc13caf874d531ab6ed7023af2c7137d62b17502352e7f24d6c58
[INFO] running `Command { std: "docker" "start" "653b7a36cfdcc13caf874d531ab6ed7023af2c7137d62b17502352e7f24d6c58", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "653b7a36cfdcc13caf874d531ab6ed7023af2c7137d62b17502352e7f24d6c58", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "653b7a36cfdcc13caf874d531ab6ed7023af2c7137d62b17502352e7f24d6c58" "/opt/rustwide/cargo-home/bin/cargo" "+4eb62535fc12dd1a63fd43a4173e224e79313c4d" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "653b7a36cfdcc13caf874d531ab6ed7023af2c7137d62b17502352e7f24d6c58", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "653b7a36cfdcc13caf874d531ab6ed7023af2c7137d62b17502352e7f24d6c58" "/opt/rustwide/cargo-home/bin/cargo" "+4eb62535fc12dd1a63fd43a4173e224e79313c4d" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling memchr v2.3.3
[INFO] [stderr]    Compiling proc-macro2 v1.0.19
[INFO] [stderr]    Compiling unicode-xid v0.2.1
[INFO] [stderr]    Compiling autocfg v1.0.1
[INFO] [stderr]    Compiling libc v0.2.76
[INFO] [stderr]    Compiling typenum v1.12.0
[INFO] [stderr]    Compiling syn v1.0.39
[INFO] [stderr]    Compiling byteorder v1.3.4
[INFO] [stderr]    Compiling serde_derive v1.0.115
[INFO] [stderr]    Compiling serde v1.0.115
[INFO] [stderr]    Compiling byte-tools v0.3.1
[INFO] [stderr]    Compiling log v0.4.11
[INFO] [stderr]    Compiling regex-syntax v0.6.18
[INFO] [stderr]    Compiling siphasher v0.3.3
[INFO] [stderr]    Compiling cfg-if v0.1.10
[INFO] [stderr]    Compiling thread_local v1.0.1
[INFO] [stderr]    Compiling fixedbitset v0.2.0
[INFO] [stderr]    Compiling block-padding v0.1.5
[INFO] [stderr]    Compiling new_debug_unreachable v1.0.4
[INFO] [stderr]    Compiling phf_shared v0.8.0
[INFO] [stderr]    Compiling precomputed-hash v0.1.1
[INFO] [stderr]    Compiling strsim v0.9.3
[INFO] [stderr]    Compiling bit-vec v0.6.2
[INFO] [stderr]    Compiling fake-simd v0.1.2
[INFO] [stderr]    Compiling either v1.6.0
[INFO] [stderr]    Compiling opaque-debug v0.2.3
[INFO] [stderr]    Compiling ena v0.14.0
[INFO] [stderr]    Compiling aho-corasick v0.7.13
[INFO] [stderr]    Compiling itertools v0.9.0
[INFO] [stderr]    Compiling hashbrown v0.8.2
[INFO] [stderr]    Compiling indexmap v1.5.2
[INFO] [stderr]    Compiling bit-set v0.5.2
[INFO] [stderr]    Compiling diff v0.1.12
[INFO] [stderr]    Compiling quote v1.0.7
[INFO] [stderr]    Compiling dirs v1.0.5
[INFO] [stderr]    Compiling atty v0.2.14
[INFO] [stderr]    Compiling term v0.5.2
[INFO] [stderr]    Compiling ascii-canvas v2.0.0
[INFO] [stderr]    Compiling petgraph v0.5.1
[INFO] [stderr]    Compiling generic-array v0.12.3
[INFO] [stderr]    Compiling regex v1.3.9
[INFO] [stderr]    Compiling block-buffer v0.7.3
[INFO] [stderr]    Compiling digest v0.8.1
[INFO] [stderr]    Compiling sha2 v0.8.2
[INFO] [stderr]    Compiling lalrpop-util v0.19.0
[INFO] [stderr]    Compiling docopt v1.1.0
[INFO] [stderr]    Compiling string_cache v0.8.0
[INFO] [stderr]    Compiling lalrpop v0.19.0
[INFO] [stderr]    Compiling d7050e_2020 v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]   --> tests/w1_2.rs:62:15
[INFO] [stdout]    |
[INFO] [stdout] 62 |         while (b < 10) {
[INFO] [stdout]    |               ^      ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 62 -         while (b < 10) {
[INFO] [stdout] 62 +         while b < 10 {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> tests/w1_2.rs:60:13
[INFO] [stdout]    |
[INFO] [stdout] 60 |         let mut b: i32 = 0;
[INFO] [stdout]    |             ----^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]   --> tests/w1_2.rs:59:10
[INFO] [stdout]    |
[INFO] [stdout] 59 |     fn c(x: bool, y: bool) -> i32 {
[INFO] [stdout]    |          ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y`
[INFO] [stdout]   --> tests/w1_2.rs:59:19
[INFO] [stdout]    |
[INFO] [stdout] 59 |     fn c(x: bool, y: bool) -> i32 {
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `parser::*`
[INFO] [stdout]  --> src/comments/main.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use parser::*;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]   --> src/ast/inderpaderper.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 |     while (!br) {
[INFO] [stdout]    |           ^   ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 14 -     while (!br) {
[INFO] [stdout] 14 +     while !br {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]   --> src/ast/inderpaderper.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 |     while (!br) {
[INFO] [stdout]    |           ^   ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 14 -     while (!br) {
[INFO] [stdout] 14 +     while !br {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/ast/type_checking.rs:93:17
[INFO] [stdout]    |
[INFO] [stdout] 93 |             let mut scope = self.vartable.get_mut(&current).unwrap();
[INFO] [stdout]    |                 ----^^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `span`
[INFO] [stdout]    --> src/ast/type_checking.rs:129:42
[INFO] [stdout]     |
[INFO] [stdout] 129 |         if let ast::Expr::Identifier(id, span) = expr {
[INFO] [stdout]     |                                          ^^^^ help: if this is intentional, prefix it with an underscore: `_span`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ast/type_checking.rs:140:17
[INFO] [stdout]     |
[INFO] [stdout] 140 |             let mut scope = self.vartable.get_mut(&current).unwrap();
[INFO] [stdout]     |                 ----^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ast/type_checking.rs:142:21
[INFO] [stdout]     |
[INFO] [stdout] 142 |                 let mut var = scope.get_mut(id).unwrap();
[INFO] [stdout]     |                     ----^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> src/ast/type_checking.rs:230:24
[INFO] [stdout]     |
[INFO] [stdout] 230 |         ast::Expr::Str(s) => Ok(ast::Typedef::Str),
[INFO] [stdout]     |                        ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `span`
[INFO] [stdout]    --> src/ast/type_checking.rs:503:41
[INFO] [stdout]     |
[INFO] [stdout] 503 |             ast::Statement::Block(_, _, span) => block_type_check(scope, Box::new(stmt)).0,
[INFO] [stdout]     |                                         ^^^^ help: if this is intentional, prefix it with an underscore: `_span`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]  --> src/ast/inderpaderper.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 |     let mut br = false;
[INFO] [stdout]   |         ----^^
[INFO] [stdout]   |         |
[INFO] [stdout]   |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/ast/shittyvm.rs:90:17
[INFO] [stdout]    |
[INFO] [stdout] 90 |             let mut scope = self.vartable.get_mut(&current).unwrap();
[INFO] [stdout]    |                 ----^^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/ast/shittyvm.rs:92:21
[INFO] [stdout]    |
[INFO] [stdout] 92 |                 let mut var = scope.get_mut(id).unwrap();
[INFO] [stdout]    |                     ----^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `span`
[INFO] [stdout]    --> src/ast/shittyvm.rs:165:35
[INFO] [stdout]     |
[INFO] [stdout] 165 |         ast::Expr::Op(e1, op, e2, span) => {
[INFO] [stdout]     |                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_span`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `span`
[INFO] [stdout]    --> src/ast/shittyvm.rs:274:47
[INFO] [stdout]     |
[INFO] [stdout] 274 |         ast::Expr::ModOp(ast::Opcode::Neg, e, span) => {
[INFO] [stdout]     |                                               ^^^^ help: if this is intentional, prefix it with an underscore: `_span`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `span`
[INFO] [stdout]    --> src/ast/shittyvm.rs:286:47
[INFO] [stdout]     |
[INFO] [stdout] 286 |         ast::Expr::ModOp(ast::Opcode::Sub, e, span) => {
[INFO] [stdout]     |                                               ^^^^ help: if this is intentional, prefix it with an underscore: `_span`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `span`
[INFO] [stdout]    --> src/ast/shittyvm.rs:371:44
[INFO] [stdout]     |
[INFO] [stdout] 371 |         ast::Statement::Block(stmts, None, span) => {
[INFO] [stdout]     |                                            ^^^^ help: if this is intentional, prefix it with an underscore: `_span`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `span`
[INFO] [stdout]    --> src/ast/shittyvm.rs:374:50
[INFO] [stdout]     |
[INFO] [stdout] 374 |         ast::Statement::Block(stmts, Some(ret2), span) => {
[INFO] [stdout]     |                                                  ^^^^ help: if this is intentional, prefix it with an underscore: `_span`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `inner_span`
[INFO] [stdout]    --> src/ast/shittyvm.rs:379:50
[INFO] [stdout]     |
[INFO] [stdout] 379 |                 if let ast::Statement::Return(e, inner_span) = *ret2 {
[INFO] [stdout]     |                                                  ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_inner_span`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ret`
[INFO] [stdout]    --> src/ast/shittyvm.rs:465:17
[INFO] [stdout]     |
[INFO] [stdout] 465 |             let ret = if ret.is_some() { ret.as_ref().unwrap().clone() } else { ast::Typedef::Unit };
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_ret`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vars`
[INFO] [stdout]    --> src/ast/shittyvm.rs:478:41
[INFO] [stdout]     |
[INFO] [stdout] 478 |             ast::Statement::Function(_, vars, Some(ret), body, span) => {
[INFO] [stdout]     |                                         ^^^^ help: if this is intentional, prefix it with an underscore: `_vars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ret`
[INFO] [stdout]    --> src/ast/shittyvm.rs:478:52
[INFO] [stdout]     |
[INFO] [stdout] 478 |             ast::Statement::Function(_, vars, Some(ret), body, span) => {
[INFO] [stdout]     |                                                    ^^^ help: if this is intentional, prefix it with an underscore: `_ret`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `body`
[INFO] [stdout]    --> src/ast/shittyvm.rs:478:58
[INFO] [stdout]     |
[INFO] [stdout] 478 |             ast::Statement::Function(_, vars, Some(ret), body, span) => {
[INFO] [stdout]     |                                                          ^^^^ help: if this is intentional, prefix it with an underscore: `_body`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `span`
[INFO] [stdout]    --> src/ast/shittyvm.rs:478:64
[INFO] [stdout]     |
[INFO] [stdout] 478 |             ast::Statement::Function(_, vars, Some(ret), body, span) => {
[INFO] [stdout]     |                                                                ^^^^ help: if this is intentional, prefix it with an underscore: `_span`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vars`
[INFO] [stdout]    --> src/ast/shittyvm.rs:481:41
[INFO] [stdout]     |
[INFO] [stdout] 481 |             ast::Statement::Function(_, vars, None, body, span) => {
[INFO] [stdout]     |                                         ^^^^ help: if this is intentional, prefix it with an underscore: `_vars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `body`
[INFO] [stdout]    --> src/ast/shittyvm.rs:481:53
[INFO] [stdout]     |
[INFO] [stdout] 481 |             ast::Statement::Function(_, vars, None, body, span) => {
[INFO] [stdout]     |                                                     ^^^^ help: if this is intentional, prefix it with an underscore: `_body`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `span`
[INFO] [stdout]    --> src/ast/shittyvm.rs:481:59
[INFO] [stdout]     |
[INFO] [stdout] 481 |             ast::Statement::Function(_, vars, None, body, span) => {
[INFO] [stdout]     |                                                           ^^^^ help: if this is intentional, prefix it with an underscore: `_span`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `span`
[INFO] [stdout]    --> src/ast/shittyvm.rs:484:41
[INFO] [stdout]     |
[INFO] [stdout] 484 |             ast::Statement::Block(_, _, span) => eval_block(scope, Box::new(stmt)),
[INFO] [stdout]     |                                         ^^^^ help: if this is intentional, prefix it with an underscore: `_span`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `def`
[INFO] [stdout]    --> src/ast/shittyvm.rs:489:51
[INFO] [stdout]     |
[INFO] [stdout] 489 |                 if let ast::Statement::VarDef(id, def) = *vardef {
[INFO] [stdout]     |                                                   ^^^ help: if this is intentional, prefix it with an underscore: `_def`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `span`
[INFO] [stdout]    --> src/ast/shittyvm.rs:501:47
[INFO] [stdout]     |
[INFO] [stdout] 501 |             ast::Statement::Assignment(id, e, span) => {
[INFO] [stdout]     |                                               ^^^^ help: if this is intentional, prefix it with an underscore: `_span`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `span`
[INFO] [stdout]    --> src/ast/shittyvm.rs:515:48
[INFO] [stdout]     |
[INFO] [stdout] 515 |             ast::Statement::WhileLoop(e, body, span) => {
[INFO] [stdout]     |                                                ^^^^ help: if this is intentional, prefix it with an underscore: `_span`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `reference` is never read
[INFO] [stdout]   --> src/ast/type_checking.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | struct VarFeatures {
[INFO] [stdout]    |        ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     reference: bool,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VarFeatures` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `mutable`, `reference`, `borrowed`, `mutborrowed`, and `transferred` are never read
[INFO] [stdout]   --> src/ast/shittyvm.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | struct VarFeatures {
[INFO] [stdout]    |        ----------- fields in this struct
[INFO] [stdout] 14 |     expr: ast::Expr,
[INFO] [stdout] 15 |     mutable: bool,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 16 |     reference: bool,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 17 |     borrowed: bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 18 |     mutborrowed: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 19 |     transferred: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VarFeatures` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `format_function_if_err` is never used
[INFO] [stdout]    --> src/ast/shittyvm.rs:137:8
[INFO] [stdout]     |
[INFO] [stdout]  30 | impl Scope {
[INFO] [stdout]     | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 137 |     fn format_function_if_err(&self, res: Result<ast::Expr, Error>, span: ast::CodeSpan) -> Result<ast::Expr, Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/ast/inderpaderper.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 |         stdout.flush();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 20 |         let _ = stdout.flush();
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/ast/shittyvm.rs:526:33
[INFO] [stdout]     |
[INFO] [stdout] 526 | ...                   eval_block(scope, body.clone());
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 526 |                                 let _ = eval_block(scope, body.clone());
[INFO] [stdout]     |                                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/ast/shittyvm.rs:586:9
[INFO] [stdout]     |
[INFO] [stdout] 586 |         eval_statements(scope, stmts);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 586 |         let _ = eval_statements(scope, stmts);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/ast/type_checking.rs:93:17
[INFO] [stdout]    |
[INFO] [stdout] 93 |             let mut scope = self.vartable.get_mut(&current).unwrap();
[INFO] [stdout]    |                 ----^^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `span`
[INFO] [stdout]    --> src/ast/type_checking.rs:129:42
[INFO] [stdout]     |
[INFO] [stdout] 129 |         if let ast::Expr::Identifier(id, span) = expr {
[INFO] [stdout]     |                                          ^^^^ help: if this is intentional, prefix it with an underscore: `_span`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ast/type_checking.rs:140:17
[INFO] [stdout]     |
[INFO] [stdout] 140 |             let mut scope = self.vartable.get_mut(&current).unwrap();
[INFO] [stdout]     |                 ----^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ast/type_checking.rs:142:21
[INFO] [stdout]     |
[INFO] [stdout] 142 |                 let mut var = scope.get_mut(id).unwrap();
[INFO] [stdout]     |                     ----^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> src/ast/type_checking.rs:230:24
[INFO] [stdout]     |
[INFO] [stdout] 230 |         ast::Expr::Str(s) => Ok(ast::Typedef::Str),
[INFO] [stdout]     |                        ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `span`
[INFO] [stdout]    --> src/ast/type_checking.rs:503:41
[INFO] [stdout]     |
[INFO] [stdout] 503 |             ast::Statement::Block(_, _, span) => block_type_check(scope, Box::new(stmt)).0,
[INFO] [stdout]     |                                         ^^^^ help: if this is intentional, prefix it with an underscore: `_span`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]  --> src/ast/inderpaderper.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 |     let mut br = false;
[INFO] [stdout]   |         ----^^
[INFO] [stdout]   |         |
[INFO] [stdout]   |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/ast/shittyvm.rs:90:17
[INFO] [stdout]    |
[INFO] [stdout] 90 |             let mut scope = self.vartable.get_mut(&current).unwrap();
[INFO] [stdout]    |                 ----^^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/ast/shittyvm.rs:92:21
[INFO] [stdout]    |
[INFO] [stdout] 92 |                 let mut var = scope.get_mut(id).unwrap();
[INFO] [stdout]    |                     ----^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `span`
[INFO] [stdout]    --> src/ast/shittyvm.rs:165:35
[INFO] [stdout]     |
[INFO] [stdout] 165 |         ast::Expr::Op(e1, op, e2, span) => {
[INFO] [stdout]     |                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_span`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `span`
[INFO] [stdout]    --> src/ast/shittyvm.rs:274:47
[INFO] [stdout]     |
[INFO] [stdout] 274 |         ast::Expr::ModOp(ast::Opcode::Neg, e, span) => {
[INFO] [stdout]     |                                               ^^^^ help: if this is intentional, prefix it with an underscore: `_span`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `span`
[INFO] [stdout]    --> src/ast/shittyvm.rs:286:47
[INFO] [stdout]     |
[INFO] [stdout] 286 |         ast::Expr::ModOp(ast::Opcode::Sub, e, span) => {
[INFO] [stdout]     |                                               ^^^^ help: if this is intentional, prefix it with an underscore: `_span`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `span`
[INFO] [stdout]    --> src/ast/shittyvm.rs:371:44
[INFO] [stdout]     |
[INFO] [stdout] 371 |         ast::Statement::Block(stmts, None, span) => {
[INFO] [stdout]     |                                            ^^^^ help: if this is intentional, prefix it with an underscore: `_span`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `span`
[INFO] [stdout]    --> src/ast/shittyvm.rs:374:50
[INFO] [stdout]     |
[INFO] [stdout] 374 |         ast::Statement::Block(stmts, Some(ret2), span) => {
[INFO] [stdout]     |                                                  ^^^^ help: if this is intentional, prefix it with an underscore: `_span`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `inner_span`
[INFO] [stdout]    --> src/ast/shittyvm.rs:379:50
[INFO] [stdout]     |
[INFO] [stdout] 379 |                 if let ast::Statement::Return(e, inner_span) = *ret2 {
[INFO] [stdout]     |                                                  ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_inner_span`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ret`
[INFO] [stdout]    --> src/ast/shittyvm.rs:465:17
[INFO] [stdout]     |
[INFO] [stdout] 465 |             let ret = if ret.is_some() { ret.as_ref().unwrap().clone() } else { ast::Typedef::Unit };
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_ret`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vars`
[INFO] [stdout]    --> src/ast/shittyvm.rs:478:41
[INFO] [stdout]     |
[INFO] [stdout] 478 |             ast::Statement::Function(_, vars, Some(ret), body, span) => {
[INFO] [stdout]     |                                         ^^^^ help: if this is intentional, prefix it with an underscore: `_vars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ret`
[INFO] [stdout]    --> src/ast/shittyvm.rs:478:52
[INFO] [stdout]     |
[INFO] [stdout] 478 |             ast::Statement::Function(_, vars, Some(ret), body, span) => {
[INFO] [stdout]     |                                                    ^^^ help: if this is intentional, prefix it with an underscore: `_ret`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `body`
[INFO] [stdout]    --> src/ast/shittyvm.rs:478:58
[INFO] [stdout]     |
[INFO] [stdout] 478 |             ast::Statement::Function(_, vars, Some(ret), body, span) => {
[INFO] [stdout]     |                                                          ^^^^ help: if this is intentional, prefix it with an underscore: `_body`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `span`
[INFO] [stdout]    --> src/ast/shittyvm.rs:478:64
[INFO] [stdout]     |
[INFO] [stdout] 478 |             ast::Statement::Function(_, vars, Some(ret), body, span) => {
[INFO] [stdout]     |                                                                ^^^^ help: if this is intentional, prefix it with an underscore: `_span`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vars`
[INFO] [stdout]    --> src/ast/shittyvm.rs:481:41
[INFO] [stdout]     |
[INFO] [stdout] 481 |             ast::Statement::Function(_, vars, None, body, span) => {
[INFO] [stdout]     |                                         ^^^^ help: if this is intentional, prefix it with an underscore: `_vars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `body`
[INFO] [stdout]    --> src/ast/shittyvm.rs:481:53
[INFO] [stdout]     |
[INFO] [stdout] 481 |             ast::Statement::Function(_, vars, None, body, span) => {
[INFO] [stdout]     |                                                     ^^^^ help: if this is intentional, prefix it with an underscore: `_body`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `span`
[INFO] [stdout]    --> src/ast/shittyvm.rs:481:59
[INFO] [stdout]     |
[INFO] [stdout] 481 |             ast::Statement::Function(_, vars, None, body, span) => {
[INFO] [stdout]     |                                                           ^^^^ help: if this is intentional, prefix it with an underscore: `_span`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `span`
[INFO] [stdout]    --> src/ast/shittyvm.rs:484:41
[INFO] [stdout]     |
[INFO] [stdout] 484 |             ast::Statement::Block(_, _, span) => eval_block(scope, Box::new(stmt)),
[INFO] [stdout]     |                                         ^^^^ help: if this is intentional, prefix it with an underscore: `_span`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `def`
[INFO] [stdout]    --> src/ast/shittyvm.rs:489:51
[INFO] [stdout]     |
[INFO] [stdout] 489 |                 if let ast::Statement::VarDef(id, def) = *vardef {
[INFO] [stdout]     |                                                   ^^^ help: if this is intentional, prefix it with an underscore: `_def`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `span`
[INFO] [stdout]    --> src/ast/shittyvm.rs:501:47
[INFO] [stdout]     |
[INFO] [stdout] 501 |             ast::Statement::Assignment(id, e, span) => {
[INFO] [stdout]     |                                               ^^^^ help: if this is intentional, prefix it with an underscore: `_span`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `span`
[INFO] [stdout]    --> src/ast/shittyvm.rs:515:48
[INFO] [stdout]     |
[INFO] [stdout] 515 |             ast::Statement::WhileLoop(e, body, span) => {
[INFO] [stdout]     |                                                ^^^^ help: if this is intentional, prefix it with an underscore: `_span`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `reference` is never read
[INFO] [stdout]   --> src/ast/type_checking.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | struct VarFeatures {
[INFO] [stdout]    |        ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     reference: bool,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VarFeatures` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `mutable`, `reference`, `borrowed`, `mutborrowed`, and `transferred` are never read
[INFO] [stdout]   --> src/ast/shittyvm.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | struct VarFeatures {
[INFO] [stdout]    |        ----------- fields in this struct
[INFO] [stdout] 14 |     expr: ast::Expr,
[INFO] [stdout] 15 |     mutable: bool,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 16 |     reference: bool,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 17 |     borrowed: bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 18 |     mutborrowed: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 19 |     transferred: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VarFeatures` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `format_function_if_err` is never used
[INFO] [stdout]    --> src/ast/shittyvm.rs:137:8
[INFO] [stdout]     |
[INFO] [stdout]  30 | impl Scope {
[INFO] [stdout]     | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 137 |     fn format_function_if_err(&self, res: Result<ast::Expr, Error>, span: ast::CodeSpan) -> Result<ast::Expr, Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/ast/inderpaderper.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 |         stdout.flush();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 20 |         let _ = stdout.flush();
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/ast/shittyvm.rs:526:33
[INFO] [stdout]     |
[INFO] [stdout] 526 | ...                   eval_block(scope, body.clone());
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 526 |                                 let _ = eval_block(scope, body.clone());
[INFO] [stdout]     |                                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/ast/shittyvm.rs:586:9
[INFO] [stdout]     |
[INFO] [stdout] 586 |         eval_statements(scope, stmts);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 586 |         let _ = eval_statements(scope, stmts);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 24.30s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: lalrpop v0.19.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2`
[INFO] running `Command { std: "docker" "inspect" "653b7a36cfdcc13caf874d531ab6ed7023af2c7137d62b17502352e7f24d6c58", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "653b7a36cfdcc13caf874d531ab6ed7023af2c7137d62b17502352e7f24d6c58", kill_on_drop: false }`
[INFO] [stdout] 653b7a36cfdcc13caf874d531ab6ed7023af2c7137d62b17502352e7f24d6c58
