[INFO] fetching crate i8080 0.1.0... [INFO] checking i8080-0.1.0 against try#c659ee110de67e82444e4b6c8407c1a9af9c2cf6 for pr-145608-1 [INFO] extracting crate i8080 0.1.0 into /workspace/builds/worker-3-tc2/source [INFO] started tweaking crates.io crate i8080 0.1.0 [INFO] finished tweaking crates.io crate i8080 0.1.0 [INFO] tweaked toml for crates.io crate i8080 0.1.0 written to /workspace/builds/worker-3-tc2/source/Cargo.toml [INFO] validating manifest of crates.io crate i8080 0.1.0 on toolchain c659ee110de67e82444e4b6c8407c1a9af9c2cf6 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c659ee110de67e82444e4b6c8407c1a9af9c2cf6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c659ee110de67e82444e4b6c8407c1a9af9c2cf6" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Locking 159 packages to latest compatible versions [INFO] [stderr] Adding clap v2.34.0 (available: v4.5.47) [INFO] [stderr] Adding ears v0.4.0 (available: v0.8.0) [INFO] [stderr] Adding image v0.15.0 (available: v0.25.8) [INFO] [stderr] Adding piston_window v0.70.0 (available: v0.132.0) [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c659ee110de67e82444e4b6c8407c1a9af9c2cf6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+c659ee110de67e82444e4b6c8407c1a9af9c2cf6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 9610eb4e5333482b950e9985a3988b04ccabbf453f802f93bcb334af348ea7fb [INFO] running `Command { std: "docker" "start" "-a" "9610eb4e5333482b950e9985a3988b04ccabbf453f802f93bcb334af348ea7fb", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "9610eb4e5333482b950e9985a3988b04ccabbf453f802f93bcb334af348ea7fb", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9610eb4e5333482b950e9985a3988b04ccabbf453f802f93bcb334af348ea7fb", kill_on_drop: false }` [INFO] [stdout] 9610eb4e5333482b950e9985a3988b04ccabbf453f802f93bcb334af348ea7fb [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+c659ee110de67e82444e4b6c8407c1a9af9c2cf6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 62f286f95ec23a32df53d9131db803aed62da23b90722f949b1273e5e87f9391 [INFO] running `Command { std: "docker" "start" "-a" "62f286f95ec23a32df53d9131db803aed62da23b90722f949b1273e5e87f9391", kill_on_drop: false }` [INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024 [INFO] [stderr] Compiling bitflags v0.9.1 [INFO] [stderr] Compiling rand_os v0.1.3 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling dtoa v0.4.8 [INFO] [stderr] Compiling itoa v0.3.4 [INFO] [stderr] Compiling serde v0.9.15 [INFO] [stderr] Compiling khronos_api v2.2.0 [INFO] [stderr] Compiling rand v0.6.5 [INFO] [stderr] Compiling bitflags v1.3.2 [INFO] [stderr] Compiling xml-rs v0.6.1 [INFO] [stderr] Compiling xml-rs v0.7.0 [INFO] [stderr] Checking piston-float v0.3.0 [INFO] [stderr] Compiling syn v0.15.44 [INFO] [stderr] Checking piston-viewport v0.3.0 [INFO] [stderr] Checking num-integer v0.1.46 [INFO] [stderr] Checking rand v0.4.6 [INFO] [stderr] Checking bitflags v0.8.2 [INFO] [stderr] Checking log v0.3.9 [INFO] [stderr] Compiling x11-dl v2.21.0 [INFO] [stderr] Checking draw_state v0.7.1 [INFO] [stderr] Checking fs2 v0.2.5 [INFO] [stderr] Compiling num-rational v0.1.43 [INFO] [stderr] Compiling wayland-scanner v0.9.10 [INFO] [stderr] Checking rand v0.3.23 [INFO] [stderr] Compiling phf_generator v0.7.24 [INFO] [stderr] Compiling phf_codegen v0.7.24 [INFO] [stderr] Compiling num-traits v0.1.43 [INFO] [stderr] Checking adler32 v1.2.0 [INFO] [stderr] Compiling target_build_utils v0.3.1 [INFO] [stderr] Compiling khronos_api v1.0.1 [INFO] [stderr] Checking either v1.15.0 [INFO] [stderr] Compiling wayland-client v0.9.10 [INFO] [stderr] Compiling wayland-protocols v0.9.10 [INFO] [stderr] Checking shader_version v0.2.2 [INFO] [stderr] Checking shared_library v0.1.9 [INFO] [stderr] Checking deflate v0.7.20 [INFO] [stderr] Checking rayon v1.11.0 [INFO] [stderr] Compiling gl_generator v0.5.5 [INFO] [stderr] Checking tempfile v2.2.0 [INFO] [stderr] Compiling gl_generator v0.6.1 [INFO] [stderr] Compiling gl_generator v0.7.0 [INFO] [stderr] Checking memmap v0.4.0 [INFO] [stderr] Checking pistoncore-input v0.19.0 [INFO] [stderr] Checking num-iter v0.1.45 [INFO] [stderr] Checking lzw v0.10.0 [INFO] [stderr] Compiling arrayvec v0.4.12 [INFO] [stderr] Checking bitflags v0.7.0 [INFO] [stderr] Checking inflate v0.2.0 [INFO] [stderr] Compiling gl v0.6.5 [INFO] [stderr] Checking pistoncore-window v0.28.0 [INFO] [stderr] Compiling serde_json v0.9.10 [INFO] [stderr] Checking gif v0.9.2 [INFO] [stderr] Compiling gfx_gl v0.4.0 [INFO] [stderr] Checking enum_primitive v0.1.1 [INFO] [stderr] Compiling glutin v0.9.2 [INFO] [stderr] Checking png v0.9.0 [INFO] [stderr] Checking jpeg-decoder v0.1.22 [INFO] [stderr] Checking stb_truetype v0.3.1 [INFO] [stderr] Checking nodrop v0.1.14 [INFO] [stderr] Checking piston-texture v0.5.0 [INFO] [stderr] Checking scoped_threadpool v0.1.9 [INFO] [stderr] Checking stb_truetype v0.2.8 [INFO] [stderr] Checking image v0.15.0 [INFO] [stderr] Compiling derivative v1.0.4 [INFO] [stderr] Checking osmesa-sys v0.1.2 [INFO] [stderr] Checking vecmath v0.3.1 [INFO] [stderr] Checking interpolation v0.1.0 [INFO] [stderr] Checking read_color v0.1.0 [INFO] [stderr] Checking piston2d-graphics v0.21.1 [INFO] [stderr] Checking rusttype v0.2.4 [INFO] [stderr] Checking pistoncore-event_loop v0.33.0 [INFO] [stderr] Checking gfx_core v0.7.2 [INFO] [stderr] Checking piston-shaders_graphics2d v0.3.1 [INFO] [stderr] Compiling ears v0.4.0 [INFO] [stderr] Checking atty v0.2.14 [INFO] [stderr] Checking piston v0.33.0 [INFO] [stderr] Checking clap v2.34.0 [INFO] [stderr] Checking gfx v0.16.3 [INFO] [stderr] Checking gfx_device_gl v0.14.6 [INFO] [stderr] Checking piston-gfx_texture v0.26.0 [INFO] [stderr] Checking piston2d-gfx_graphics v0.43.0 [INFO] [stderr] Compiling libloading v0.3.4 [INFO] [stderr] Checking dlib v0.3.1 [INFO] [stderr] Checking wayland-sys v0.9.10 [INFO] [stderr] Checking wayland-kbd v0.9.1 [INFO] [stderr] Checking wayland-window v0.7.0 [INFO] [stderr] Checking winit v0.7.6 [INFO] [stderr] Checking pistoncore-glutin_window v0.39.1 [INFO] [stderr] Checking piston_window v0.70.0 [INFO] [stderr] Checking i8080 v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:104:17 [INFO] [stdout] | [INFO] [stdout] 104 | 0x40...0x75 | 0x77...0x7f => self.mov(*opcode), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(ellipsis_inclusive_range_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:104:31 [INFO] [stdout] | [INFO] [stdout] 104 | 0x40...0x75 | 0x77...0x7f => self.mov(*opcode), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:108:17 [INFO] [stdout] | [INFO] [stdout] 108 | 0x80...0x87 => self.add(*opcode), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:109:17 [INFO] [stdout] | [INFO] [stdout] 109 | 0x88...0x8f => self.adc(*opcode), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:110:17 [INFO] [stdout] | [INFO] [stdout] 110 | 0x90...0x97 => self.sub(*opcode), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:111:17 [INFO] [stdout] | [INFO] [stdout] 111 | 0x98...0x9f => self.sbb(*opcode), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:113:17 [INFO] [stdout] | [INFO] [stdout] 113 | 0xa0...0xa7 => self.ana(*opcode), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:114:17 [INFO] [stdout] | [INFO] [stdout] 114 | 0xa8...0xaf => self.xra(*opcode), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:116:17 [INFO] [stdout] | [INFO] [stdout] 116 | 0xb0...0xb7 => self.ora(*opcode), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:118:17 [INFO] [stdout] | [INFO] [stdout] 118 | 0xb8...0xbf => self.cmp(*opcode), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:283:17 [INFO] [stdout] | [INFO] [stdout] 283 | 0x40...0x47 => mov!(b, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: trailing semicolon in macro used in expression position [INFO] [stdout] --> src/cpu.rs:253:18 [INFO] [stdout] | [INFO] [stdout] 253 | }; [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 283 | 0x40...0x47 => mov!(b, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47), [INFO] [stdout] | ------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #79813 [INFO] [stdout] = note: `#[deny(semicolon_in_expressions_from_macros)]` on by default [INFO] [stdout] = note: this error originates in the macro `mov` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:284:17 [INFO] [stdout] | [INFO] [stdout] 284 | 0x48...0x4f => mov!(c, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: trailing semicolon in macro used in expression position [INFO] [stdout] --> src/cpu.rs:253:18 [INFO] [stdout] | [INFO] [stdout] 253 | }; [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 284 | 0x48...0x4f => mov!(c, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f), [INFO] [stdout] | ------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #79813 [INFO] [stdout] = note: this error originates in the macro `mov` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:285:17 [INFO] [stdout] | [INFO] [stdout] 285 | 0x50...0x57 => mov!(d, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: trailing semicolon in macro used in expression position [INFO] [stdout] --> src/cpu.rs:253:18 [INFO] [stdout] | [INFO] [stdout] 253 | }; [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 285 | 0x50...0x57 => mov!(d, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57), [INFO] [stdout] | ------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #79813 [INFO] [stdout] = note: this error originates in the macro `mov` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:286:17 [INFO] [stdout] | [INFO] [stdout] 286 | 0x58...0x5f => mov!(e, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: trailing semicolon in macro used in expression position [INFO] [stdout] --> src/cpu.rs:253:18 [INFO] [stdout] | [INFO] [stdout] 253 | }; [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 286 | 0x58...0x5f => mov!(e, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f), [INFO] [stdout] | ------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #79813 [INFO] [stdout] = note: this error originates in the macro `mov` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:287:17 [INFO] [stdout] | [INFO] [stdout] 287 | 0x60...0x67 => mov!(h, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: trailing semicolon in macro used in expression position [INFO] [stdout] --> src/cpu.rs:253:18 [INFO] [stdout] | [INFO] [stdout] 253 | }; [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 287 | 0x60...0x67 => mov!(h, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67), [INFO] [stdout] | ------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #79813 [INFO] [stdout] = note: this error originates in the macro `mov` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:288:17 [INFO] [stdout] | [INFO] [stdout] 288 | 0x68...0x6f => mov!(l, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: trailing semicolon in macro used in expression position [INFO] [stdout] --> src/cpu.rs:253:18 [INFO] [stdout] | [INFO] [stdout] 253 | }; [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 288 | 0x68...0x6f => mov!(l, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f), [INFO] [stdout] | ------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #79813 [INFO] [stdout] = note: this error originates in the macro `mov` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:289:17 [INFO] [stdout] | [INFO] [stdout] 289 | 0x70...0x75 | 0x77 => movm!(0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x77), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:290:17 [INFO] [stdout] | [INFO] [stdout] 290 | 0x78...0x7f => mov!(a, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: trailing semicolon in macro used in expression position [INFO] [stdout] --> src/cpu.rs:253:18 [INFO] [stdout] | [INFO] [stdout] 253 | }; [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 290 | 0x78...0x7f => mov!(a, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f), [INFO] [stdout] | ------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #79813 [INFO] [stdout] = note: this error originates in the macro `mov` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around method argument [INFO] [stdout] --> src/cpu.rs:1036:40 [INFO] [stdout] | [INFO] [stdout] 1036 | self.memory.write(self.sp - 1, (ret >> 8)); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 1036 - self.memory.write(self.sp - 1, (ret >> 8)); [INFO] [stdout] 1036 + self.memory.write(self.sp - 1, ret >> 8); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:104:17 [INFO] [stdout] | [INFO] [stdout] 104 | 0x40...0x75 | 0x77...0x7f => self.mov(*opcode), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(ellipsis_inclusive_range_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:104:31 [INFO] [stdout] | [INFO] [stdout] 104 | 0x40...0x75 | 0x77...0x7f => self.mov(*opcode), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:108:17 [INFO] [stdout] | [INFO] [stdout] 108 | 0x80...0x87 => self.add(*opcode), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:109:17 [INFO] [stdout] | [INFO] [stdout] 109 | 0x88...0x8f => self.adc(*opcode), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:110:17 [INFO] [stdout] | [INFO] [stdout] 110 | 0x90...0x97 => self.sub(*opcode), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:111:17 [INFO] [stdout] | [INFO] [stdout] 111 | 0x98...0x9f => self.sbb(*opcode), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:113:17 [INFO] [stdout] | [INFO] [stdout] 113 | 0xa0...0xa7 => self.ana(*opcode), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:114:17 [INFO] [stdout] | [INFO] [stdout] 114 | 0xa8...0xaf => self.xra(*opcode), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:116:17 [INFO] [stdout] | [INFO] [stdout] 116 | 0xb0...0xb7 => self.ora(*opcode), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:118:17 [INFO] [stdout] | [INFO] [stdout] 118 | 0xb8...0xbf => self.cmp(*opcode), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:283:17 [INFO] [stdout] | [INFO] [stdout] 283 | 0x40...0x47 => mov!(b, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: trailing semicolon in macro used in expression position [INFO] [stdout] --> src/cpu.rs:253:18 [INFO] [stdout] | [INFO] [stdout] 253 | }; [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 283 | 0x40...0x47 => mov!(b, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47), [INFO] [stdout] | ------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #79813 [INFO] [stdout] = note: `#[deny(semicolon_in_expressions_from_macros)]` on by default [INFO] [stdout] = note: this error originates in the macro `mov` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:284:17 [INFO] [stdout] | [INFO] [stdout] 284 | 0x48...0x4f => mov!(c, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: trailing semicolon in macro used in expression position [INFO] [stdout] --> src/cpu.rs:253:18 [INFO] [stdout] | [INFO] [stdout] 253 | }; [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 284 | 0x48...0x4f => mov!(c, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f), [INFO] [stdout] | ------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #79813 [INFO] [stdout] = note: this error originates in the macro `mov` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:285:17 [INFO] [stdout] | [INFO] [stdout] 285 | 0x50...0x57 => mov!(d, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: trailing semicolon in macro used in expression position [INFO] [stdout] --> src/cpu.rs:253:18 [INFO] [stdout] | [INFO] [stdout] 253 | }; [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 285 | 0x50...0x57 => mov!(d, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57), [INFO] [stdout] | ------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #79813 [INFO] [stdout] = note: this error originates in the macro `mov` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:286:17 [INFO] [stdout] | [INFO] [stdout] 286 | 0x58...0x5f => mov!(e, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: trailing semicolon in macro used in expression position [INFO] [stdout] --> src/cpu.rs:253:18 [INFO] [stdout] | [INFO] [stdout] 253 | }; [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 286 | 0x58...0x5f => mov!(e, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f), [INFO] [stdout] | ------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #79813 [INFO] [stdout] = note: this error originates in the macro `mov` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:287:17 [INFO] [stdout] | [INFO] [stdout] 287 | 0x60...0x67 => mov!(h, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: trailing semicolon in macro used in expression position [INFO] [stdout] --> src/cpu.rs:253:18 [INFO] [stdout] | [INFO] [stdout] 253 | }; [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 287 | 0x60...0x67 => mov!(h, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67), [INFO] [stdout] | ------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #79813 [INFO] [stdout] = note: this error originates in the macro `mov` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:288:17 [INFO] [stdout] | [INFO] [stdout] 288 | 0x68...0x6f => mov!(l, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: trailing semicolon in macro used in expression position [INFO] [stdout] --> src/cpu.rs:253:18 [INFO] [stdout] | [INFO] [stdout] 253 | }; [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 288 | 0x68...0x6f => mov!(l, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f), [INFO] [stdout] | ------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #79813 [INFO] [stdout] = note: this error originates in the macro `mov` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:289:17 [INFO] [stdout] | [INFO] [stdout] 289 | 0x70...0x75 | 0x77 => movm!(0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x77), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/cpu.rs:290:17 [INFO] [stdout] | [INFO] [stdout] 290 | 0x78...0x7f => mov!(a, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f), [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: trailing semicolon in macro used in expression position [INFO] [stdout] --> src/cpu.rs:253:18 [INFO] [stdout] | [INFO] [stdout] 253 | }; [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 290 | 0x78...0x7f => mov!(a, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f), [INFO] [stdout] | ------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #79813 [INFO] [stdout] = note: this error originates in the macro `mov` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around method argument [INFO] [stdout] --> src/cpu.rs:1036:40 [INFO] [stdout] | [INFO] [stdout] 1036 | self.memory.write(self.sp - 1, (ret >> 8)); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 1036 - self.memory.write(self.sp - 1, (ret >> 8)); [INFO] [stdout] 1036 + self.memory.write(self.sp - 1, ret >> 8); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/opcode.rs:332:13 [INFO] [stdout] | [INFO] [stdout] 332 | _ => unreachable!(), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/opcode.rs:332:13 [INFO] [stdout] | [INFO] [stdout] 76 | 0x00 => "NOP", [INFO] [stdout] | ---- matches some of the same values [INFO] [stdout] 77 | 0x01 => "LXI B", [INFO] [stdout] | ---- matches some of the same values [INFO] [stdout] 78 | 0x02 => "STAX B", [INFO] [stdout] | ---- matches some of the same values [INFO] [stdout] 79 | 0x03 => "INX B", [INFO] [stdout] | ---- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 332 | _ => unreachable!(), [INFO] [stdout] | ^ ...and 252 other patterns collectively make this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `i8080` (lib) due to 14 previous errors; 20 warnings emitted [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/opcode.rs:332:13 [INFO] [stdout] | [INFO] [stdout] 332 | _ => unreachable!(), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/opcode.rs:332:13 [INFO] [stdout] | [INFO] [stdout] 76 | 0x00 => "NOP", [INFO] [stdout] | ---- matches some of the same values [INFO] [stdout] 77 | 0x01 => "LXI B", [INFO] [stdout] | ---- matches some of the same values [INFO] [stdout] 78 | 0x02 => "STAX B", [INFO] [stdout] | ---- matches some of the same values [INFO] [stdout] 79 | 0x03 => "INX B", [INFO] [stdout] | ---- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 332 | _ => unreachable!(), [INFO] [stdout] | ^ ...and 252 other patterns collectively make this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `i8080` (lib test) due to 14 previous errors; 20 warnings emitted [INFO] running `Command { std: "docker" "inspect" "62f286f95ec23a32df53d9131db803aed62da23b90722f949b1273e5e87f9391", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "62f286f95ec23a32df53d9131db803aed62da23b90722f949b1273e5e87f9391", kill_on_drop: false }` [INFO] [stdout] 62f286f95ec23a32df53d9131db803aed62da23b90722f949b1273e5e87f9391