├── .gitignore ├── Cargo.toml ├── LICENSE ├── README.md ├── src ├── main.rs └── lib.rs └── Cargo.lock /.gitignore: -------------------------------------------------------------------------------- 1 | target 2 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "termpix" 3 | version = "0.1.0" 4 | 5 | [dependencies] 6 | ansi_term = "0.7" 7 | docopt = "1.0" 8 | image = "*" 9 | serde = "1.0" 10 | serde_derive = "1.0" 11 | terminal_size = "*" 12 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2016 hopey-dishwasher 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # termpix 2 | Draw images in an ANSI terminal! Requires that your terminal can show ANSI colours, and uses a font that can show the 'bottom half block' character (▄). 3 | 4 | Usage: 5 | `termpix [--width ] [--height ] [--max-width ] [--max-height ] [--true-color|--true-colour]` 6 | 7 | ![buzz](https://cloud.githubusercontent.com/assets/4640028/13073384/9d46b2e2-d4f2-11e5-9218-09f1a05bf296.png) 8 | 9 | `file` can be any image file readable by the [rust 'image' library](https://github.com/PistonDevelopers/image). 10 | I've seen it fail with some unusual jpeg files ("Marker SOF2 is not supported.") 11 | 12 | By default, it will fill as much of the terminal as possible, while keping the aspect ratio of the input image. 13 | Use --width or --height to override this, specifying the number of terminal rows or columns to fit to (Or both 14 | to specify an absolute size). Alternatively, use --max-width and/or --max-height to fit to the terminal up to a maximum. 15 | 16 | ![buzz smaller](https://cloud.githubusercontent.com/assets/4640028/13073404/b60d1410-d4f2-11e5-85c1-ccb6dc967eae.png) 17 | 18 | If your terminal supports it, you can use the full 24-bit colour palette with the `--true-colour` flag: 19 | ![lena looks good](https://cloud.githubusercontent.com/assets/4640028/13419797/fa51cb88-dfd4-11e5-87c3-f8620cd67557.png) 20 | 21 | In low-colour mode, high-contrast, colourful images tend to work better than flatter images. Skin tones and shades of brown are 22 | particularly poorly represented in the ANSI colour pallette. 23 | ![lena looks bad](https://cloud.githubusercontent.com/assets/4640028/13073360/705a85b0-d4f2-11e5-917a-fdb91e5e45b9.png) 24 | 25 | # Installing 26 | 27 | * Install Rust & Cargo: https://www.rust-lang.org/downloads.html 28 | * `cargo install --git https://github.com/hopey-dishwasher/termpix` (see `cargo install` options for e.g. install location customisation) 29 | 30 | # License 31 | Apache 2.0 license 32 | 33 | 34 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | extern crate docopt; 2 | extern crate image; 3 | #[macro_use] 4 | extern crate serde_derive; 5 | extern crate terminal_size; 6 | extern crate termpix; 7 | 8 | use std::io::Write; 9 | 10 | use docopt::Docopt; 11 | use image::GenericImage; 12 | use terminal_size::{Width, Height, terminal_size}; 13 | 14 | use std::path::Path; 15 | use std::cmp::min; 16 | 17 | const USAGE: &'static str = " 18 | termpix : display image from in an ANSI terminal 19 | 20 | Usage: 21 | termpix [--width ] [--height ] [--max-width ] [--max-height ] [--true-color|--true-colour] 22 | 23 | By default it will use as much of the current terminal window as possible, while maintaining the aspect 24 | ratio of the input image. This can be overridden as follows. 25 | 26 | Options: 27 | --width Output width in terminal columns. 28 | --height Output height in terminal rows. 29 | --max-width Maximum width to use when --width is excluded 30 | --max-height Maximum height to use when --height is excluded 31 | --true-colour Use 24-bit RGB colour. Some terminals don't support this. 32 | --true-colour Use 24-bit RGB color but you don't spell so good. 33 | "; 34 | 35 | #[derive(Debug, Deserialize)] 36 | struct Args { 37 | flag_width: Option, 38 | flag_height: Option, 39 | flag_max_width: Option, 40 | flag_max_height: Option, 41 | flag_true_colour: bool, 42 | flag_true_color: bool, 43 | arg_file: String, 44 | } 45 | 46 | fn main() { 47 | 48 | let args: Args = Docopt::new(USAGE) 49 | .and_then(|d| d.deserialize()) 50 | .unwrap_or_else(|e| e.exit()); 51 | 52 | let img = image::open(&Path::new(&args.arg_file)).unwrap(); 53 | let (orig_width, orig_height) = img.dimensions(); 54 | let true_colour = args.flag_true_colour || args.flag_true_color; 55 | let (width, height) = determine_size(args, orig_width, orig_height); 56 | 57 | termpix::print_image(img, true_colour, width, height); 58 | 59 | } 60 | 61 | fn determine_size(args: Args, 62 | orig_width: u32, 63 | orig_height: u32) -> (u32, u32) { 64 | match (args.flag_width, args.flag_height) { 65 | (Some(w), Some(h)) => (w, h * 2), 66 | (Some(w), None) => (w, scale_dimension(w, orig_height, orig_width)), 67 | (None, Some(h)) => (scale_dimension(h * 2, orig_width, orig_height), h * 2), 68 | (None, None) => { 69 | let size = terminal_size(); 70 | 71 | if let Some((Width(terminal_width), Height(terminal_height))) = size { 72 | fit_to_size( 73 | orig_width, 74 | orig_height, 75 | terminal_width as u32, 76 | (terminal_height - 1) as u32, 77 | args.flag_max_width, 78 | args.flag_max_height) 79 | } else { 80 | writeln!(std::io::stderr(), "Neither --width or --height specified, and could not determine terminal size. Giving up.").unwrap(); 81 | std::process::exit(1); 82 | } 83 | } 84 | } 85 | } 86 | 87 | fn scale_dimension(other: u32, orig_this: u32, orig_other: u32) -> u32 { 88 | (orig_this as f32 * other as f32 / orig_other as f32 + 0.5) as u32 89 | } 90 | 91 | pub fn fit_to_size(orig_width: u32, 92 | orig_height: u32, 93 | terminal_width: u32, 94 | terminal_height: u32, 95 | max_width: Option, 96 | max_height: Option) -> (u32, u32) { 97 | let target_width = match max_width { 98 | Some(max_width) => min(max_width, terminal_width), 99 | None => terminal_width 100 | }; 101 | 102 | //2 pixels per terminal row 103 | let target_height = 2 * match max_height { 104 | Some(max_height) => min(max_height, terminal_height), 105 | None => terminal_height 106 | }; 107 | 108 | let calculated_width = scale_dimension(target_height, orig_width, orig_height); 109 | if calculated_width <= target_width { 110 | (calculated_width, target_height) 111 | } else { 112 | (target_width, scale_dimension(target_width, orig_height, orig_width)) 113 | } 114 | } 115 | -------------------------------------------------------------------------------- /src/lib.rs: -------------------------------------------------------------------------------- 1 | extern crate ansi_term; 2 | extern crate image; 3 | 4 | use std::io::{Write, self}; 5 | 6 | use ansi_term::Colour::Fixed; 7 | use ansi_term::ANSIStrings; 8 | use image::{imageops, FilterType, Pixel}; 9 | 10 | pub fn print_image(img: image::DynamicImage, true_colour: bool, width: u32, height: u32) { 11 | let img = imageops::resize(&img, width, height, FilterType::Nearest); 12 | 13 | if !true_colour { 14 | for y in 0..height { 15 | //TODO: inc by 2 instead 16 | if y%2 == 1 || y + 1 == height { 17 | continue; 18 | } 19 | 20 | let row: Vec<_> = (0..width).map(|x| { 21 | let mut top = img[(x,y)]; 22 | let mut bottom = img[(x,y+1)]; 23 | blend_alpha(&mut top); 24 | blend_alpha(&mut bottom); 25 | let top_colour = find_colour_index(top.to_rgb().channels()); 26 | let bottom_colour = find_colour_index(bottom.to_rgb().channels()); 27 | Fixed(bottom_colour).on(Fixed(top_colour)).paint("▄") 28 | }).collect(); 29 | 30 | print!("{}\n", ANSIStrings(&row)); 31 | } 32 | } else { 33 | let mut row = Vec::new(); 34 | for y in 0..height { 35 | //TODO: inc by 2 instead 36 | if y%2 == 1 || y + 1 == height { 37 | continue; 38 | } 39 | 40 | for x in 0..width { 41 | let mut top = img[(x,y)]; 42 | let mut bottom = img[(x,y+1)]; 43 | blend_alpha(&mut top); 44 | blend_alpha(&mut bottom); 45 | write!(row, "\x1b[48;2;{};{};{}m\x1b[38;2;{};{};{}m▄", 46 | top[0], top[1], top[2], 47 | bottom[0], bottom[1], bottom[2]).unwrap(); 48 | } 49 | 50 | write!(row, "\x1b[m\n").unwrap(); 51 | io::stdout().write(&row).unwrap(); 52 | row.clear(); 53 | } 54 | } 55 | } 56 | 57 | fn find_colour_index(pixel: &[u8]) -> u8 { 58 | let mut best = 0; 59 | let mut best_distance = 255 * 255 * 3 + 1; 60 | for i in 16..255 { 61 | let ansi_colour = ANSI_COLOURS[i]; 62 | let dr = ansi_colour[0] - pixel[0] as i32; 63 | let dg = ansi_colour[1] - pixel[1] as i32; 64 | let db = ansi_colour[2] - pixel[2] as i32; 65 | let distance = dr * dr + dg * dg + db * db; 66 | 67 | if distance < best_distance { 68 | best_distance = distance; 69 | best = i as u8; 70 | } 71 | } 72 | 73 | return best; 74 | } 75 | 76 | fn blend_alpha(pixel: &mut image::Rgba) { 77 | let alpha = pixel[3] as i32 as f32/255.0; 78 | pixel[0] = (alpha*(pixel[0] as i32 as f32) + (1.0 - alpha)*38.0) as u8; 79 | pixel[1] = (alpha*(pixel[1] as i32 as f32) + (1.0 - alpha)*38.0) as u8; 80 | pixel[2] = (alpha*(pixel[2] as i32 as f32) + (1.0 - alpha)*38.0) as u8; 81 | } 82 | 83 | static ANSI_COLOURS: [[i32; 3]; 256] = [ 84 | [ 0x00, 0x00, 0x00 ],[ 0x80, 0x00, 0x00 ],[ 0x00, 0x80, 0x00 ],[ 0x80, 0x80, 0x00 ],[ 0x00, 0x00, 0x80 ], 85 | [ 0x80, 0x00, 0x80 ],[ 0x00, 0x80, 0x80 ],[ 0xc0, 0xc0, 0xc0 ],[ 0x80, 0x80, 0x80 ],[ 0xff, 0x00, 0x00 ], 86 | [ 0x00, 0xff, 0x00 ],[ 0xff, 0xff, 0x00 ],[ 0x00, 0x00, 0xff ],[ 0xff, 0x00, 0xff ],[ 0x00, 0xff, 0xff ], 87 | [ 0xff, 0xff, 0xff ],[ 0x00, 0x00, 0x00 ],[ 0x00, 0x00, 0x5f ],[ 0x00, 0x00, 0x87 ],[ 0x00, 0x00, 0xaf ], 88 | [ 0x00, 0x00, 0xd7 ],[ 0x00, 0x00, 0xff ],[ 0x00, 0x5f, 0x00 ],[ 0x00, 0x5f, 0x5f ],[ 0x00, 0x5f, 0x87 ], 89 | [ 0x00, 0x5f, 0xaf ],[ 0x00, 0x5f, 0xd7 ],[ 0x00, 0x5f, 0xff ],[ 0x00, 0x87, 0x00 ],[ 0x00, 0x87, 0x5f ], 90 | [ 0x00, 0x87, 0x87 ],[ 0x00, 0x87, 0xaf ],[ 0x00, 0x87, 0xd7 ],[ 0x00, 0x87, 0xff ],[ 0x00, 0xaf, 0x00 ], 91 | [ 0x00, 0xaf, 0x5f ],[ 0x00, 0xaf, 0x87 ],[ 0x00, 0xaf, 0xaf ],[ 0x00, 0xaf, 0xd7 ],[ 0x00, 0xaf, 0xff ], 92 | [ 0x00, 0xd7, 0x00 ],[ 0x00, 0xd7, 0x5f ],[ 0x00, 0xd7, 0x87 ],[ 0x00, 0xd7, 0xaf ],[ 0x00, 0xd7, 0xd7 ], 93 | [ 0x00, 0xd7, 0xff ],[ 0x00, 0xff, 0x00 ],[ 0x00, 0xff, 0x5f ],[ 0x00, 0xff, 0x87 ],[ 0x00, 0xff, 0xaf ], 94 | [ 0x00, 0xff, 0xd7 ],[ 0x00, 0xff, 0xff ],[ 0x5f, 0x00, 0x00 ],[ 0x5f, 0x00, 0x5f ],[ 0x5f, 0x00, 0x87 ], 95 | [ 0x5f, 0x00, 0xaf ],[ 0x5f, 0x00, 0xd7 ],[ 0x5f, 0x00, 0xff ],[ 0x5f, 0x5f, 0x00 ],[ 0x5f, 0x5f, 0x5f ], 96 | [ 0x5f, 0x5f, 0x87 ],[ 0x5f, 0x5f, 0xaf ],[ 0x5f, 0x5f, 0xd7 ],[ 0x5f, 0x5f, 0xff ],[ 0x5f, 0x87, 0x00 ], 97 | [ 0x5f, 0x87, 0x5f ],[ 0x5f, 0x87, 0x87 ],[ 0x5f, 0x87, 0xaf ],[ 0x5f, 0x87, 0xd7 ],[ 0x5f, 0x87, 0xff ], 98 | [ 0x5f, 0xaf, 0x00 ],[ 0x5f, 0xaf, 0x5f ],[ 0x5f, 0xaf, 0x87 ],[ 0x5f, 0xaf, 0xaf ],[ 0x5f, 0xaf, 0xd7 ], 99 | [ 0x5f, 0xaf, 0xff ],[ 0x5f, 0xd7, 0x00 ],[ 0x5f, 0xd7, 0x5f ],[ 0x5f, 0xd7, 0x87 ],[ 0x5f, 0xd7, 0xaf ], 100 | [ 0x5f, 0xd7, 0xd7 ],[ 0x5f, 0xd7, 0xff ],[ 0x5f, 0xff, 0x00 ],[ 0x5f, 0xff, 0x5f ],[ 0x5f, 0xff, 0x87 ], 101 | [ 0x5f, 0xff, 0xaf ],[ 0x5f, 0xff, 0xd7 ],[ 0x5f, 0xff, 0xff ],[ 0x87, 0x00, 0x00 ],[ 0x87, 0x00, 0x5f ], 102 | [ 0x87, 0x00, 0x87 ],[ 0x87, 0x00, 0xaf ],[ 0x87, 0x00, 0xd7 ],[ 0x87, 0x00, 0xff ],[ 0x87, 0x5f, 0x00 ], 103 | [ 0x87, 0x5f, 0x5f ],[ 0x87, 0x5f, 0x87 ],[ 0x87, 0x5f, 0xaf ],[ 0x87, 0x5f, 0xd7 ],[ 0x87, 0x5f, 0xff ], 104 | [ 0x87, 0x87, 0x00 ],[ 0x87, 0x87, 0x5f ],[ 0x87, 0x87, 0x87 ],[ 0x87, 0x87, 0xaf ],[ 0x87, 0x87, 0xd7 ], 105 | [ 0x87, 0x87, 0xff ],[ 0x87, 0xaf, 0x00 ],[ 0x87, 0xaf, 0x5f ],[ 0x87, 0xaf, 0x87 ],[ 0x87, 0xaf, 0xaf ], 106 | [ 0x87, 0xaf, 0xd7 ],[ 0x87, 0xaf, 0xff ],[ 0x87, 0xd7, 0x00 ],[ 0x87, 0xd7, 0x5f ],[ 0x87, 0xd7, 0x87 ], 107 | [ 0x87, 0xd7, 0xaf ],[ 0x87, 0xd7, 0xd7 ],[ 0x87, 0xd7, 0xff ],[ 0x87, 0xff, 0x00 ],[ 0x87, 0xff, 0x5f ], 108 | [ 0x87, 0xff, 0x87 ],[ 0x87, 0xff, 0xaf ],[ 0x87, 0xff, 0xd7 ],[ 0x87, 0xff, 0xff ],[ 0xaf, 0x00, 0x00 ], 109 | [ 0xaf, 0x00, 0x5f ],[ 0xaf, 0x00, 0x87 ],[ 0xaf, 0x00, 0xaf ],[ 0xaf, 0x00, 0xd7 ],[ 0xaf, 0x00, 0xff ], 110 | [ 0xaf, 0x5f, 0x00 ],[ 0xaf, 0x5f, 0x5f ],[ 0xaf, 0x5f, 0x87 ],[ 0xaf, 0x5f, 0xaf ],[ 0xaf, 0x5f, 0xd7 ], 111 | [ 0xaf, 0x5f, 0xff ],[ 0xaf, 0x87, 0x00 ],[ 0xaf, 0x87, 0x5f ],[ 0xaf, 0x87, 0x87 ],[ 0xaf, 0x87, 0xaf ], 112 | [ 0xaf, 0x87, 0xd7 ],[ 0xaf, 0x87, 0xff ],[ 0xaf, 0xaf, 0x00 ],[ 0xaf, 0xaf, 0x5f ],[ 0xaf, 0xaf, 0x87 ], 113 | [ 0xaf, 0xaf, 0xaf ],[ 0xaf, 0xaf, 0xd7 ],[ 0xaf, 0xaf, 0xff ],[ 0xaf, 0xd7, 0x00 ],[ 0xaf, 0xd7, 0x5f ], 114 | [ 0xaf, 0xd7, 0x87 ],[ 0xaf, 0xd7, 0xaf ],[ 0xaf, 0xd7, 0xd7 ],[ 0xaf, 0xd7, 0xff ],[ 0xaf, 0xff, 0x00 ], 115 | [ 0xaf, 0xff, 0x5f ],[ 0xaf, 0xff, 0x87 ],[ 0xaf, 0xff, 0xaf ],[ 0xaf, 0xff, 0xd7 ],[ 0xaf, 0xff, 0xff ], 116 | [ 0xd7, 0x00, 0x00 ],[ 0xd7, 0x00, 0x5f ],[ 0xd7, 0x00, 0x87 ],[ 0xd7, 0x00, 0xaf ],[ 0xd7, 0x00, 0xd7 ], 117 | [ 0xd7, 0x00, 0xff ],[ 0xd7, 0x5f, 0x00 ],[ 0xd7, 0x5f, 0x5f ],[ 0xd7, 0x5f, 0x87 ],[ 0xd7, 0x5f, 0xaf ], 118 | [ 0xd7, 0x5f, 0xd7 ],[ 0xd7, 0x5f, 0xff ],[ 0xd7, 0x87, 0x00 ],[ 0xd7, 0x87, 0x5f ],[ 0xd7, 0x87, 0x87 ], 119 | [ 0xd7, 0x87, 0xaf ],[ 0xd7, 0x87, 0xd7 ],[ 0xd7, 0x87, 0xff ],[ 0xd7, 0xaf, 0x00 ],[ 0xd7, 0xaf, 0x5f ], 120 | [ 0xd7, 0xaf, 0x87 ],[ 0xd7, 0xaf, 0xaf ],[ 0xd7, 0xaf, 0xd7 ],[ 0xd7, 0xaf, 0xff ],[ 0xd7, 0xd7, 0x00 ], 121 | [ 0xd7, 0xd7, 0x5f ],[ 0xd7, 0xd7, 0x87 ],[ 0xd7, 0xd7, 0xaf ],[ 0xd7, 0xd7, 0xd7 ],[ 0xd7, 0xd7, 0xff ], 122 | [ 0xd7, 0xff, 0x00 ],[ 0xd7, 0xff, 0x5f ],[ 0xd7, 0xff, 0x87 ],[ 0xd7, 0xff, 0xaf ],[ 0xd7, 0xff, 0xd7 ], 123 | [ 0xd7, 0xff, 0xff ],[ 0xff, 0x00, 0x00 ],[ 0xff, 0x00, 0x5f ],[ 0xff, 0x00, 0x87 ],[ 0xff, 0x00, 0xaf ], 124 | [ 0xff, 0x00, 0xd7 ],[ 0xff, 0x00, 0xff ],[ 0xff, 0x5f, 0x00 ],[ 0xff, 0x5f, 0x5f ],[ 0xff, 0x5f, 0x87 ], 125 | [ 0xff, 0x5f, 0xaf ],[ 0xff, 0x5f, 0xd7 ],[ 0xff, 0x5f, 0xff ],[ 0xff, 0x87, 0x00 ],[ 0xff, 0x87, 0x5f ], 126 | [ 0xff, 0x87, 0x87 ],[ 0xff, 0x87, 0xaf ],[ 0xff, 0x87, 0xd7 ],[ 0xff, 0x87, 0xff ],[ 0xff, 0xaf, 0x00 ], 127 | [ 0xff, 0xaf, 0x5f ],[ 0xff, 0xaf, 0x87 ],[ 0xff, 0xaf, 0xaf ],[ 0xff, 0xaf, 0xd7 ],[ 0xff, 0xaf, 0xff ], 128 | [ 0xff, 0xd7, 0x00 ],[ 0xff, 0xd7, 0x5f ],[ 0xff, 0xd7, 0x87 ],[ 0xff, 0xd7, 0xaf ],[ 0xff, 0xd7, 0xd7 ], 129 | [ 0xff, 0xd7, 0xff ],[ 0xff, 0xff, 0x00 ],[ 0xff, 0xff, 0x5f ],[ 0xff, 0xff, 0x87 ],[ 0xff, 0xff, 0xaf ], 130 | [ 0xff, 0xff, 0xd7 ],[ 0xff, 0xff, 0xff ],[ 0x08, 0x08, 0x08 ],[ 0x12, 0x12, 0x12 ],[ 0x1c, 0x1c, 0x1c ], 131 | [ 0x26, 0x26, 0x26 ],[ 0x30, 0x30, 0x30 ],[ 0x3a, 0x3a, 0x3a ],[ 0x44, 0x44, 0x44 ],[ 0x4e, 0x4e, 0x4e ], 132 | [ 0x58, 0x58, 0x58 ],[ 0x60, 0x60, 0x60 ],[ 0x66, 0x66, 0x66 ],[ 0x76, 0x76, 0x76 ],[ 0x80, 0x80, 0x80 ], 133 | [ 0x8a, 0x8a, 0x8a ],[ 0x94, 0x94, 0x94 ],[ 0x9e, 0x9e, 0x9e ],[ 0xa8, 0xa8, 0xa8 ],[ 0xb2, 0xb2, 0xb2 ], 134 | [ 0xbc, 0xbc, 0xbc ],[ 0xc6, 0xc6, 0xc6 ],[ 0xd0, 0xd0, 0xd0 ],[ 0xda, 0xda, 0xda ],[ 0xe4, 0xe4, 0xe4 ], 135 | [ 0xee, 0xee, 0xee ]]; 136 | 137 | 138 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | [[package]] 2 | name = "adler32" 3 | version = "1.0.3" 4 | source = "registry+https://github.com/rust-lang/crates.io-index" 5 | 6 | [[package]] 7 | name = "aho-corasick" 8 | version = "0.6.4" 9 | source = "registry+https://github.com/rust-lang/crates.io-index" 10 | dependencies = [ 11 | "memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 12 | ] 13 | 14 | [[package]] 15 | name = "ansi_term" 16 | version = "0.7.5" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | 19 | [[package]] 20 | name = "arrayvec" 21 | version = "0.4.7" 22 | source = "registry+https://github.com/rust-lang/crates.io-index" 23 | dependencies = [ 24 | "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 25 | ] 26 | 27 | [[package]] 28 | name = "bitflags" 29 | version = "1.0.3" 30 | source = "registry+https://github.com/rust-lang/crates.io-index" 31 | 32 | [[package]] 33 | name = "byteorder" 34 | version = "1.2.3" 35 | source = "registry+https://github.com/rust-lang/crates.io-index" 36 | 37 | [[package]] 38 | name = "cfg-if" 39 | version = "0.1.3" 40 | source = "registry+https://github.com/rust-lang/crates.io-index" 41 | 42 | [[package]] 43 | name = "color_quant" 44 | version = "1.0.1" 45 | source = "registry+https://github.com/rust-lang/crates.io-index" 46 | 47 | [[package]] 48 | name = "crossbeam-deque" 49 | version = "0.2.0" 50 | source = "registry+https://github.com/rust-lang/crates.io-index" 51 | dependencies = [ 52 | "crossbeam-epoch 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 53 | "crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 54 | ] 55 | 56 | [[package]] 57 | name = "crossbeam-epoch" 58 | version = "0.3.1" 59 | source = "registry+https://github.com/rust-lang/crates.io-index" 60 | dependencies = [ 61 | "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 62 | "cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 63 | "crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 64 | "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 65 | "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 66 | "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 67 | "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 68 | ] 69 | 70 | [[package]] 71 | name = "crossbeam-utils" 72 | version = "0.2.2" 73 | source = "registry+https://github.com/rust-lang/crates.io-index" 74 | dependencies = [ 75 | "cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 76 | ] 77 | 78 | [[package]] 79 | name = "deflate" 80 | version = "0.7.18" 81 | source = "registry+https://github.com/rust-lang/crates.io-index" 82 | dependencies = [ 83 | "adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 84 | "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 85 | ] 86 | 87 | [[package]] 88 | name = "docopt" 89 | version = "1.0.0" 90 | source = "registry+https://github.com/rust-lang/crates.io-index" 91 | dependencies = [ 92 | "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 93 | "regex 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 94 | "serde 1.0.66 (registry+https://github.com/rust-lang/crates.io-index)", 95 | "serde_derive 1.0.66 (registry+https://github.com/rust-lang/crates.io-index)", 96 | "strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 97 | ] 98 | 99 | [[package]] 100 | name = "either" 101 | version = "1.5.0" 102 | source = "registry+https://github.com/rust-lang/crates.io-index" 103 | 104 | [[package]] 105 | name = "fuchsia-zircon" 106 | version = "0.3.3" 107 | source = "registry+https://github.com/rust-lang/crates.io-index" 108 | dependencies = [ 109 | "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 110 | "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 111 | ] 112 | 113 | [[package]] 114 | name = "fuchsia-zircon-sys" 115 | version = "0.3.3" 116 | source = "registry+https://github.com/rust-lang/crates.io-index" 117 | 118 | [[package]] 119 | name = "gif" 120 | version = "0.10.0" 121 | source = "registry+https://github.com/rust-lang/crates.io-index" 122 | dependencies = [ 123 | "color_quant 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 124 | "lzw 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", 125 | ] 126 | 127 | [[package]] 128 | name = "image" 129 | version = "0.19.0" 130 | source = "registry+https://github.com/rust-lang/crates.io-index" 131 | dependencies = [ 132 | "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 133 | "gif 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", 134 | "jpeg-decoder 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", 135 | "lzw 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", 136 | "num-derive 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 137 | "num-iter 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", 138 | "num-rational 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 139 | "num-traits 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", 140 | "png 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", 141 | "scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 142 | ] 143 | 144 | [[package]] 145 | name = "inflate" 146 | version = "0.4.2" 147 | source = "registry+https://github.com/rust-lang/crates.io-index" 148 | dependencies = [ 149 | "adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 150 | ] 151 | 152 | [[package]] 153 | name = "jpeg-decoder" 154 | version = "0.1.15" 155 | source = "registry+https://github.com/rust-lang/crates.io-index" 156 | dependencies = [ 157 | "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 158 | "rayon 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 159 | ] 160 | 161 | [[package]] 162 | name = "kernel32-sys" 163 | version = "0.2.2" 164 | source = "registry+https://github.com/rust-lang/crates.io-index" 165 | dependencies = [ 166 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 167 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 168 | ] 169 | 170 | [[package]] 171 | name = "lazy_static" 172 | version = "1.0.1" 173 | source = "registry+https://github.com/rust-lang/crates.io-index" 174 | 175 | [[package]] 176 | name = "libc" 177 | version = "0.2.42" 178 | source = "registry+https://github.com/rust-lang/crates.io-index" 179 | 180 | [[package]] 181 | name = "lzw" 182 | version = "0.10.0" 183 | source = "registry+https://github.com/rust-lang/crates.io-index" 184 | 185 | [[package]] 186 | name = "memchr" 187 | version = "2.0.1" 188 | source = "registry+https://github.com/rust-lang/crates.io-index" 189 | dependencies = [ 190 | "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", 191 | ] 192 | 193 | [[package]] 194 | name = "memoffset" 195 | version = "0.2.1" 196 | source = "registry+https://github.com/rust-lang/crates.io-index" 197 | 198 | [[package]] 199 | name = "nodrop" 200 | version = "0.1.12" 201 | source = "registry+https://github.com/rust-lang/crates.io-index" 202 | 203 | [[package]] 204 | name = "num-derive" 205 | version = "0.2.2" 206 | source = "registry+https://github.com/rust-lang/crates.io-index" 207 | dependencies = [ 208 | "num-traits 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", 209 | "proc-macro2 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 210 | "quote 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", 211 | "syn 0.14.2 (registry+https://github.com/rust-lang/crates.io-index)", 212 | ] 213 | 214 | [[package]] 215 | name = "num-integer" 216 | version = "0.1.39" 217 | source = "registry+https://github.com/rust-lang/crates.io-index" 218 | dependencies = [ 219 | "num-traits 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", 220 | ] 221 | 222 | [[package]] 223 | name = "num-iter" 224 | version = "0.1.37" 225 | source = "registry+https://github.com/rust-lang/crates.io-index" 226 | dependencies = [ 227 | "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", 228 | "num-traits 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", 229 | ] 230 | 231 | [[package]] 232 | name = "num-rational" 233 | version = "0.1.42" 234 | source = "registry+https://github.com/rust-lang/crates.io-index" 235 | dependencies = [ 236 | "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", 237 | "num-traits 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", 238 | ] 239 | 240 | [[package]] 241 | name = "num-traits" 242 | version = "0.2.5" 243 | source = "registry+https://github.com/rust-lang/crates.io-index" 244 | 245 | [[package]] 246 | name = "num_cpus" 247 | version = "1.8.0" 248 | source = "registry+https://github.com/rust-lang/crates.io-index" 249 | dependencies = [ 250 | "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", 251 | ] 252 | 253 | [[package]] 254 | name = "png" 255 | version = "0.12.0" 256 | source = "registry+https://github.com/rust-lang/crates.io-index" 257 | dependencies = [ 258 | "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 259 | "deflate 0.7.18 (registry+https://github.com/rust-lang/crates.io-index)", 260 | "inflate 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 261 | "num-iter 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", 262 | ] 263 | 264 | [[package]] 265 | name = "proc-macro2" 266 | version = "0.4.6" 267 | source = "registry+https://github.com/rust-lang/crates.io-index" 268 | dependencies = [ 269 | "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 270 | ] 271 | 272 | [[package]] 273 | name = "quote" 274 | version = "0.6.3" 275 | source = "registry+https://github.com/rust-lang/crates.io-index" 276 | dependencies = [ 277 | "proc-macro2 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 278 | ] 279 | 280 | [[package]] 281 | name = "rand" 282 | version = "0.4.2" 283 | source = "registry+https://github.com/rust-lang/crates.io-index" 284 | dependencies = [ 285 | "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 286 | "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", 287 | "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", 288 | ] 289 | 290 | [[package]] 291 | name = "rayon" 292 | version = "1.0.1" 293 | source = "registry+https://github.com/rust-lang/crates.io-index" 294 | dependencies = [ 295 | "either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 296 | "rayon-core 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 297 | ] 298 | 299 | [[package]] 300 | name = "rayon-core" 301 | version = "1.4.0" 302 | source = "registry+https://github.com/rust-lang/crates.io-index" 303 | dependencies = [ 304 | "crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 305 | "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 306 | "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", 307 | "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 308 | "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 309 | ] 310 | 311 | [[package]] 312 | name = "regex" 313 | version = "1.0.1" 314 | source = "registry+https://github.com/rust-lang/crates.io-index" 315 | dependencies = [ 316 | "aho-corasick 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", 317 | "memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 318 | "regex-syntax 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 319 | "thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", 320 | "utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 321 | ] 322 | 323 | [[package]] 324 | name = "regex-syntax" 325 | version = "0.6.1" 326 | source = "registry+https://github.com/rust-lang/crates.io-index" 327 | dependencies = [ 328 | "ucd-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 329 | ] 330 | 331 | [[package]] 332 | name = "scoped_threadpool" 333 | version = "0.1.9" 334 | source = "registry+https://github.com/rust-lang/crates.io-index" 335 | 336 | [[package]] 337 | name = "scopeguard" 338 | version = "0.3.3" 339 | source = "registry+https://github.com/rust-lang/crates.io-index" 340 | 341 | [[package]] 342 | name = "serde" 343 | version = "1.0.66" 344 | source = "registry+https://github.com/rust-lang/crates.io-index" 345 | 346 | [[package]] 347 | name = "serde_derive" 348 | version = "1.0.66" 349 | source = "registry+https://github.com/rust-lang/crates.io-index" 350 | dependencies = [ 351 | "proc-macro2 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 352 | "quote 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", 353 | "syn 0.14.2 (registry+https://github.com/rust-lang/crates.io-index)", 354 | ] 355 | 356 | [[package]] 357 | name = "strsim" 358 | version = "0.7.0" 359 | source = "registry+https://github.com/rust-lang/crates.io-index" 360 | 361 | [[package]] 362 | name = "syn" 363 | version = "0.14.2" 364 | source = "registry+https://github.com/rust-lang/crates.io-index" 365 | dependencies = [ 366 | "proc-macro2 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 367 | "quote 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", 368 | "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 369 | ] 370 | 371 | [[package]] 372 | name = "terminal_size" 373 | version = "0.1.7" 374 | source = "registry+https://github.com/rust-lang/crates.io-index" 375 | dependencies = [ 376 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 377 | "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", 378 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 379 | ] 380 | 381 | [[package]] 382 | name = "termpix" 383 | version = "0.1.0" 384 | dependencies = [ 385 | "ansi_term 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)", 386 | "docopt 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 387 | "image 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", 388 | "serde 1.0.66 (registry+https://github.com/rust-lang/crates.io-index)", 389 | "serde_derive 1.0.66 (registry+https://github.com/rust-lang/crates.io-index)", 390 | "terminal_size 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 391 | ] 392 | 393 | [[package]] 394 | name = "thread_local" 395 | version = "0.3.5" 396 | source = "registry+https://github.com/rust-lang/crates.io-index" 397 | dependencies = [ 398 | "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 399 | "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 400 | ] 401 | 402 | [[package]] 403 | name = "ucd-util" 404 | version = "0.1.1" 405 | source = "registry+https://github.com/rust-lang/crates.io-index" 406 | 407 | [[package]] 408 | name = "unicode-xid" 409 | version = "0.1.0" 410 | source = "registry+https://github.com/rust-lang/crates.io-index" 411 | 412 | [[package]] 413 | name = "unreachable" 414 | version = "1.0.0" 415 | source = "registry+https://github.com/rust-lang/crates.io-index" 416 | dependencies = [ 417 | "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 418 | ] 419 | 420 | [[package]] 421 | name = "utf8-ranges" 422 | version = "1.0.0" 423 | source = "registry+https://github.com/rust-lang/crates.io-index" 424 | 425 | [[package]] 426 | name = "void" 427 | version = "1.0.2" 428 | source = "registry+https://github.com/rust-lang/crates.io-index" 429 | 430 | [[package]] 431 | name = "winapi" 432 | version = "0.2.8" 433 | source = "registry+https://github.com/rust-lang/crates.io-index" 434 | 435 | [[package]] 436 | name = "winapi" 437 | version = "0.3.5" 438 | source = "registry+https://github.com/rust-lang/crates.io-index" 439 | dependencies = [ 440 | "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 441 | "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 442 | ] 443 | 444 | [[package]] 445 | name = "winapi-build" 446 | version = "0.1.1" 447 | source = "registry+https://github.com/rust-lang/crates.io-index" 448 | 449 | [[package]] 450 | name = "winapi-i686-pc-windows-gnu" 451 | version = "0.4.0" 452 | source = "registry+https://github.com/rust-lang/crates.io-index" 453 | 454 | [[package]] 455 | name = "winapi-x86_64-pc-windows-gnu" 456 | version = "0.4.0" 457 | source = "registry+https://github.com/rust-lang/crates.io-index" 458 | 459 | [metadata] 460 | "checksum adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7e522997b529f05601e05166c07ed17789691f562762c7f3b987263d2dedee5c" 461 | "checksum aho-corasick 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d6531d44de723825aa81398a6415283229725a00fa30713812ab9323faa82fc4" 462 | "checksum ansi_term 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)" = "30275ad0ad84ec1c06dde3b3f7d23c6006b7d76d61a85e7060b426b747eff70d" 463 | "checksum arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "a1e964f9e24d588183fcb43503abda40d288c8657dfc27311516ce2f05675aef" 464 | "checksum bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d0c54bb8f454c567f21197eefcdbf5679d0bd99f2ddbe52e84c77061952e6789" 465 | "checksum byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "74c0b906e9446b0a2e4f760cdb3fa4b2c48cdc6db8766a845c54b6ff063fd2e9" 466 | "checksum cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "405216fd8fe65f718daa7102ea808a946b6ce40c742998fbfd3463645552de18" 467 | "checksum color_quant 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0dbbb57365263e881e805dc77d94697c9118fd94d8da011240555aa7b23445bd" 468 | "checksum crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f739f8c5363aca78cfb059edf753d8f0d36908c348f3d8d1503f03d8b75d9cf3" 469 | "checksum crossbeam-epoch 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "927121f5407de9956180ff5e936fe3cf4324279280001cd56b669d28ee7e9150" 470 | "checksum crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2760899e32a1d58d5abb31129f8fae5de75220bc2176e77ff7c627ae45c918d9" 471 | "checksum deflate 0.7.18 (registry+https://github.com/rust-lang/crates.io-index)" = "32c8120d981901a9970a3a1c97cf8b630e0fa8c3ca31e75b6fd6fd5f9f427b31" 472 | "checksum docopt 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e67fb750c36fc6fffbd3575cf8f2b46790fc0b05096ae3c03a36cf71b55e1e2b" 473 | "checksum either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3be565ca5c557d7f59e7cfcf1844f9e3033650c929c6566f511e8005f205c1d0" 474 | "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" 475 | "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" 476 | "checksum gif 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ff3414b424657317e708489d2857d9575f4403698428b040b609b9d1c1a84a2c" 477 | "checksum image 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ebdff791af04e30089bde8ad2a632b86af433b40c04db8d70ad4b21487db7a6a" 478 | "checksum inflate 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4ec18d981200fd14e65ee8e35fb60ed1ce55227a02407303f3a72517c6146dcc" 479 | "checksum jpeg-decoder 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "c8b7d43206b34b3f94ea9445174bda196e772049b9bddbc620c9d29b2d20110d" 480 | "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" 481 | "checksum lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e6412c5e2ad9584b0b8e979393122026cdd6d2a80b933f890dcd694ddbe73739" 482 | "checksum libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)" = "b685088df2b950fccadf07a7187c8ef846a959c142338a48f9dc0b94517eb5f1" 483 | "checksum lzw 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7d947cbb889ed21c2a84be6ffbaebf5b4e0f4340638cba0444907e38b56be084" 484 | "checksum memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "796fba70e76612589ed2ce7f45282f5af869e0fdd7cc6199fa1aa1f1d591ba9d" 485 | "checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" 486 | "checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" 487 | "checksum num-derive 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0d2c31b75c36a993d30c7a13d70513cb93f02acafdd5b7ba250f9b0e18615de7" 488 | "checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" 489 | "checksum num-iter 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "af3fdbbc3291a5464dc57b03860ec37ca6bf915ed6ee385e7c6c052c422b2124" 490 | "checksum num-rational 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "ee314c74bd753fc86b4780aa9475da469155f3848473a261d2d18e35245a784e" 491 | "checksum num-traits 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "630de1ef5cc79d0cdd78b7e33b81f083cbfe90de0f4b2b2f07f905867c70e9fe" 492 | "checksum num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a3322e4bca9d212ad9a158a02abc6934d005490c054a2778df73a70aa0a30" 493 | "checksum png 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f54b9600d584d3b8a739e1662a595fab051329eff43f20e7d8cc22872962145b" 494 | "checksum proc-macro2 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "effdb53b25cdad54f8f48843d67398f7ef2e14f12c1b4cb4effc549a6462a4d6" 495 | "checksum quote 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e44651a0dc4cdd99f71c83b561e221f714912d11af1a4dff0631f923d53af035" 496 | "checksum rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "eba5f8cb59cc50ed56be8880a5c7b496bfd9bd26394e176bc67884094145c2c5" 497 | "checksum rayon 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "80e811e76f1dbf68abf87a759083d34600017fc4e10b6bd5ad84a700f9dba4b1" 498 | "checksum rayon-core 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9d24ad214285a7729b174ed6d3bcfcb80177807f959d95fafd5bfc5c4f201ac8" 499 | "checksum regex 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "13c93d55961981ba9226a213b385216f83ab43bd6ac53ab16b2eeb47e337cf4e" 500 | "checksum regex-syntax 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05b06a75f5217880fc5e905952a42750bf44787e56a6c6d6852ed0992f5e1d54" 501 | "checksum scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" 502 | "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" 503 | "checksum serde 1.0.66 (registry+https://github.com/rust-lang/crates.io-index)" = "e9a2d9a9ac5120e0f768801ca2b58ad6eec929dc9d1d616c162f208869c2ce95" 504 | "checksum serde_derive 1.0.66 (registry+https://github.com/rust-lang/crates.io-index)" = "0a90213fa7e0f5eac3f7afe2d5ff6b088af515052cc7303bd68c7e3b91a3fb79" 505 | "checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" 506 | "checksum syn 0.14.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c67da57e61ebc7b7b6fff56bb34440ca3a83db037320b0507af4c10368deda7d" 507 | "checksum terminal_size 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "ef4f7fdb2a063032d361d9a72539380900bc3e0cd9ffc9ca8b677f8c855bae0f" 508 | "checksum thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "279ef31c19ededf577bfd12dfae728040a21f635b06a24cd670ff510edd38963" 509 | "checksum ucd-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fd2be2d6639d0f8fe6cdda291ad456e23629558d466e2789d2c3e9892bda285d" 510 | "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" 511 | "checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" 512 | "checksum utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122" 513 | "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" 514 | "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" 515 | "checksum winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "773ef9dcc5f24b7d850d0ff101e542ff24c3b090a9768e03ff889fdef41f00fd" 516 | "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" 517 | "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 518 | "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 519 | --------------------------------------------------------------------------------