├── .envrc ├── .github ├── dependabot.yml └── workflows │ └── test.yml ├── .gitignore ├── Cargo.lock ├── Cargo.toml ├── README.md ├── default.nix ├── module.nix ├── nix ├── Cargo.nix ├── crate-overrides.nix ├── default.nix ├── sources.json └── sources.nix ├── pkgs.nix ├── shell.nix ├── src ├── avahi.rs ├── main.rs ├── narinfo.rs ├── serve-narinfo.rs ├── state.rs ├── util.rs └── web.rs └── test.nix /.envrc: -------------------------------------------------------------------------------- 1 | if has lorri; then 2 | eval "$(lorri direnv)" 3 | unset SSL_CERT_FILE 4 | unset NIX_SSL_CERT_FILE 5 | else 6 | use nix 7 | fi 8 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "github-actions" 4 | directory: "/" 5 | schedule: 6 | interval: "weekly" 7 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: "Test" 2 | on: 3 | pull_request: 4 | push: 5 | jobs: 6 | tests: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: actions/checkout@v2 10 | - uses: cachix/install-nix-action@v12 11 | - name: Setup cachix 12 | uses: cachix/cachix-action@v7 13 | with: 14 | name: local-nix-cache 15 | signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}' 16 | - run: nix-build -A pkg 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | **/*.rs.bk -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "actix-codec" 5 | version = "0.1.2" 6 | source = "registry+https://github.com/rust-lang/crates.io-index" 7 | dependencies = [ 8 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 9 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 10 | "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 11 | "tokio-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 12 | "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 13 | ] 14 | 15 | [[package]] 16 | name = "actix-connect" 17 | version = "0.2.5" 18 | source = "registry+https://github.com/rust-lang/crates.io-index" 19 | dependencies = [ 20 | "actix-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 21 | "actix-rt 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 22 | "actix-service 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 23 | "actix-utils 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 24 | "derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", 25 | "either 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 26 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 27 | "http 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 28 | "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 29 | "rustls 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", 30 | "tokio-current-thread 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 31 | "tokio-rustls 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)", 32 | "tokio-tcp 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 33 | "trust-dns-resolver 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)", 34 | "webpki 0.19.1 (registry+https://github.com/rust-lang/crates.io-index)", 35 | ] 36 | 37 | [[package]] 38 | name = "actix-http" 39 | version = "0.2.11" 40 | source = "registry+https://github.com/rust-lang/crates.io-index" 41 | dependencies = [ 42 | "actix-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 43 | "actix-connect 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", 44 | "actix-server-config 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 45 | "actix-service 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 46 | "actix-threadpool 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 47 | "actix-utils 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 48 | "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 49 | "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 50 | "brotli2 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 51 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 52 | "chrono 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)", 53 | "copyless 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 54 | "derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", 55 | "either 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 56 | "encoding_rs 0.8.24 (registry+https://github.com/rust-lang/crates.io-index)", 57 | "failure 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 58 | "flate2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", 59 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 60 | "h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", 61 | "hashbrown 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", 62 | "http 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 63 | "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 64 | "indexmap 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", 65 | "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 66 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 67 | "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 68 | "mime 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", 69 | "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 70 | "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", 71 | "regex 1.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 72 | "rustls 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", 73 | "serde 1.0.116 (registry+https://github.com/rust-lang/crates.io-index)", 74 | "serde_json 1.0.58 (registry+https://github.com/rust-lang/crates.io-index)", 75 | "serde_urlencoded 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 76 | "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", 77 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 78 | "time 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)", 79 | "tokio-current-thread 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 80 | "tokio-tcp 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 81 | "tokio-timer 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", 82 | "trust-dns-resolver 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)", 83 | "webpki-roots 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", 84 | ] 85 | 86 | [[package]] 87 | name = "actix-router" 88 | version = "0.1.5" 89 | source = "registry+https://github.com/rust-lang/crates.io-index" 90 | dependencies = [ 91 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 92 | "http 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 93 | "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 94 | "regex 1.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 95 | "serde 1.0.116 (registry+https://github.com/rust-lang/crates.io-index)", 96 | "string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 97 | ] 98 | 99 | [[package]] 100 | name = "actix-rt" 101 | version = "0.2.6" 102 | source = "registry+https://github.com/rust-lang/crates.io-index" 103 | dependencies = [ 104 | "actix-threadpool 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 105 | "copyless 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 106 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 107 | "tokio-current-thread 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 108 | "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 109 | "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 110 | "tokio-timer 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", 111 | ] 112 | 113 | [[package]] 114 | name = "actix-server" 115 | version = "0.6.1" 116 | source = "registry+https://github.com/rust-lang/crates.io-index" 117 | dependencies = [ 118 | "actix-rt 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 119 | "actix-server-config 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 120 | "actix-service 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 121 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 122 | "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 123 | "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)", 124 | "net2 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)", 125 | "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)", 126 | "rustls 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", 127 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 128 | "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 129 | "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 130 | "tokio-rustls 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)", 131 | "tokio-signal 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", 132 | "tokio-tcp 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 133 | "tokio-timer 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", 134 | "webpki 0.19.1 (registry+https://github.com/rust-lang/crates.io-index)", 135 | "webpki-roots 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", 136 | ] 137 | 138 | [[package]] 139 | name = "actix-server-config" 140 | version = "0.1.2" 141 | source = "registry+https://github.com/rust-lang/crates.io-index" 142 | dependencies = [ 143 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 144 | "rustls 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", 145 | "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 146 | "tokio-rustls 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)", 147 | "tokio-tcp 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 148 | ] 149 | 150 | [[package]] 151 | name = "actix-service" 152 | version = "0.4.2" 153 | source = "registry+https://github.com/rust-lang/crates.io-index" 154 | dependencies = [ 155 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 156 | ] 157 | 158 | [[package]] 159 | name = "actix-testing" 160 | version = "0.1.0" 161 | source = "registry+https://github.com/rust-lang/crates.io-index" 162 | dependencies = [ 163 | "actix-rt 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 164 | "actix-server 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 165 | "actix-server-config 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 166 | "actix-service 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 167 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 168 | "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 169 | "net2 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)", 170 | "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 171 | "tokio-tcp 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 172 | ] 173 | 174 | [[package]] 175 | name = "actix-threadpool" 176 | version = "0.1.2" 177 | source = "registry+https://github.com/rust-lang/crates.io-index" 178 | dependencies = [ 179 | "derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", 180 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 181 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 182 | "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 183 | "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)", 184 | "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 185 | "threadpool 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)", 186 | ] 187 | 188 | [[package]] 189 | name = "actix-utils" 190 | version = "0.4.7" 191 | source = "registry+https://github.com/rust-lang/crates.io-index" 192 | dependencies = [ 193 | "actix-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 194 | "actix-service 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 195 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 196 | "either 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 197 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 198 | "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 199 | "tokio-current-thread 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 200 | "tokio-timer 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", 201 | ] 202 | 203 | [[package]] 204 | name = "actix-web" 205 | version = "1.0.9" 206 | source = "registry+https://github.com/rust-lang/crates.io-index" 207 | dependencies = [ 208 | "actix-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 209 | "actix-http 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 210 | "actix-router 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 211 | "actix-rt 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 212 | "actix-server 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 213 | "actix-server-config 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 214 | "actix-service 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 215 | "actix-testing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 216 | "actix-threadpool 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 217 | "actix-utils 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 218 | "actix-web-codegen 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 219 | "awc 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 220 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 221 | "derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", 222 | "encoding_rs 0.8.24 (registry+https://github.com/rust-lang/crates.io-index)", 223 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 224 | "hashbrown 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", 225 | "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 226 | "mime 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", 227 | "net2 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)", 228 | "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 229 | "regex 1.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 230 | "rustls 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", 231 | "serde 1.0.116 (registry+https://github.com/rust-lang/crates.io-index)", 232 | "serde_json 1.0.58 (registry+https://github.com/rust-lang/crates.io-index)", 233 | "serde_urlencoded 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 234 | "time 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)", 235 | "url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 236 | ] 237 | 238 | [[package]] 239 | name = "actix-web-codegen" 240 | version = "0.1.3" 241 | source = "registry+https://github.com/rust-lang/crates.io-index" 242 | dependencies = [ 243 | "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", 244 | "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", 245 | "syn 1.0.42 (registry+https://github.com/rust-lang/crates.io-index)", 246 | ] 247 | 248 | [[package]] 249 | name = "addr2line" 250 | version = "0.13.0" 251 | source = "registry+https://github.com/rust-lang/crates.io-index" 252 | dependencies = [ 253 | "gimli 0.22.0 (registry+https://github.com/rust-lang/crates.io-index)", 254 | ] 255 | 256 | [[package]] 257 | name = "adler" 258 | version = "0.2.3" 259 | source = "registry+https://github.com/rust-lang/crates.io-index" 260 | 261 | [[package]] 262 | name = "ahash" 263 | version = "0.2.18" 264 | source = "registry+https://github.com/rust-lang/crates.io-index" 265 | dependencies = [ 266 | "const-random 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 267 | ] 268 | 269 | [[package]] 270 | name = "aho-corasick" 271 | version = "0.7.13" 272 | source = "registry+https://github.com/rust-lang/crates.io-index" 273 | dependencies = [ 274 | "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 275 | ] 276 | 277 | [[package]] 278 | name = "ansi_term" 279 | version = "0.11.0" 280 | source = "registry+https://github.com/rust-lang/crates.io-index" 281 | dependencies = [ 282 | "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 283 | ] 284 | 285 | [[package]] 286 | name = "arc-swap" 287 | version = "0.4.7" 288 | source = "registry+https://github.com/rust-lang/crates.io-index" 289 | 290 | [[package]] 291 | name = "atty" 292 | version = "0.2.14" 293 | source = "registry+https://github.com/rust-lang/crates.io-index" 294 | dependencies = [ 295 | "hermit-abi 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", 296 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 297 | "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 298 | ] 299 | 300 | [[package]] 301 | name = "autocfg" 302 | version = "0.1.7" 303 | source = "registry+https://github.com/rust-lang/crates.io-index" 304 | 305 | [[package]] 306 | name = "autocfg" 307 | version = "1.0.1" 308 | source = "registry+https://github.com/rust-lang/crates.io-index" 309 | 310 | [[package]] 311 | name = "awc" 312 | version = "0.2.8" 313 | source = "registry+https://github.com/rust-lang/crates.io-index" 314 | dependencies = [ 315 | "actix-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 316 | "actix-http 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 317 | "actix-service 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 318 | "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 319 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 320 | "derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", 321 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 322 | "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 323 | "mime 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", 324 | "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 325 | "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", 326 | "rustls 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", 327 | "serde 1.0.116 (registry+https://github.com/rust-lang/crates.io-index)", 328 | "serde_json 1.0.58 (registry+https://github.com/rust-lang/crates.io-index)", 329 | "serde_urlencoded 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 330 | "tokio-timer 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", 331 | ] 332 | 333 | [[package]] 334 | name = "backtrace" 335 | version = "0.3.51" 336 | source = "registry+https://github.com/rust-lang/crates.io-index" 337 | dependencies = [ 338 | "addr2line 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", 339 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 340 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 341 | "miniz_oxide 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 342 | "object 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", 343 | "rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", 344 | ] 345 | 346 | [[package]] 347 | name = "base64" 348 | version = "0.10.1" 349 | source = "registry+https://github.com/rust-lang/crates.io-index" 350 | dependencies = [ 351 | "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 352 | ] 353 | 354 | [[package]] 355 | name = "bindgen" 356 | version = "0.42.3" 357 | source = "registry+https://github.com/rust-lang/crates.io-index" 358 | dependencies = [ 359 | "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 360 | "cexpr 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 361 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 362 | "clang-sys 0.26.4 (registry+https://github.com/rust-lang/crates.io-index)", 363 | "clap 2.33.3 (registry+https://github.com/rust-lang/crates.io-index)", 364 | "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", 365 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 366 | "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 367 | "peeking_take_while 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 368 | "proc-macro2 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", 369 | "quote 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 370 | "regex 1.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 371 | "which 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 372 | ] 373 | 374 | [[package]] 375 | name = "bitflags" 376 | version = "1.2.1" 377 | source = "registry+https://github.com/rust-lang/crates.io-index" 378 | 379 | [[package]] 380 | name = "brotli-sys" 381 | version = "0.3.2" 382 | source = "registry+https://github.com/rust-lang/crates.io-index" 383 | dependencies = [ 384 | "cc 1.0.60 (registry+https://github.com/rust-lang/crates.io-index)", 385 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 386 | ] 387 | 388 | [[package]] 389 | name = "brotli2" 390 | version = "0.3.2" 391 | source = "registry+https://github.com/rust-lang/crates.io-index" 392 | dependencies = [ 393 | "brotli-sys 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 394 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 395 | ] 396 | 397 | [[package]] 398 | name = "byteorder" 399 | version = "1.3.4" 400 | source = "registry+https://github.com/rust-lang/crates.io-index" 401 | 402 | [[package]] 403 | name = "bytes" 404 | version = "0.4.12" 405 | source = "registry+https://github.com/rust-lang/crates.io-index" 406 | dependencies = [ 407 | "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 408 | "either 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 409 | "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 410 | ] 411 | 412 | [[package]] 413 | name = "cc" 414 | version = "1.0.60" 415 | source = "registry+https://github.com/rust-lang/crates.io-index" 416 | 417 | [[package]] 418 | name = "cexpr" 419 | version = "0.3.6" 420 | source = "registry+https://github.com/rust-lang/crates.io-index" 421 | dependencies = [ 422 | "nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 423 | ] 424 | 425 | [[package]] 426 | name = "cfg-if" 427 | version = "0.1.10" 428 | source = "registry+https://github.com/rust-lang/crates.io-index" 429 | 430 | [[package]] 431 | name = "chrono" 432 | version = "0.4.19" 433 | source = "registry+https://github.com/rust-lang/crates.io-index" 434 | dependencies = [ 435 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 436 | "num-integer 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", 437 | "num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", 438 | "time 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)", 439 | "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 440 | ] 441 | 442 | [[package]] 443 | name = "clang-sys" 444 | version = "0.26.4" 445 | source = "registry+https://github.com/rust-lang/crates.io-index" 446 | dependencies = [ 447 | "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 448 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 449 | "libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 450 | ] 451 | 452 | [[package]] 453 | name = "clap" 454 | version = "2.33.3" 455 | source = "registry+https://github.com/rust-lang/crates.io-index" 456 | dependencies = [ 457 | "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", 458 | "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", 459 | "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 460 | "strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 461 | "textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", 462 | "unicode-width 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 463 | "vec_map 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", 464 | ] 465 | 466 | [[package]] 467 | name = "cloudabi" 468 | version = "0.0.3" 469 | source = "registry+https://github.com/rust-lang/crates.io-index" 470 | dependencies = [ 471 | "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 472 | ] 473 | 474 | [[package]] 475 | name = "const-random" 476 | version = "0.1.8" 477 | source = "registry+https://github.com/rust-lang/crates.io-index" 478 | dependencies = [ 479 | "const-random-macro 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 480 | "proc-macro-hack 0.5.18 (registry+https://github.com/rust-lang/crates.io-index)", 481 | ] 482 | 483 | [[package]] 484 | name = "const-random-macro" 485 | version = "0.1.8" 486 | source = "registry+https://github.com/rust-lang/crates.io-index" 487 | dependencies = [ 488 | "getrandom 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", 489 | "proc-macro-hack 0.5.18 (registry+https://github.com/rust-lang/crates.io-index)", 490 | ] 491 | 492 | [[package]] 493 | name = "cookie" 494 | version = "0.12.0" 495 | source = "registry+https://github.com/rust-lang/crates.io-index" 496 | dependencies = [ 497 | "time 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)", 498 | "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 499 | ] 500 | 501 | [[package]] 502 | name = "cookie_store" 503 | version = "0.7.0" 504 | source = "registry+https://github.com/rust-lang/crates.io-index" 505 | dependencies = [ 506 | "cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", 507 | "failure 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 508 | "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 509 | "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 510 | "publicsuffix 1.5.4 (registry+https://github.com/rust-lang/crates.io-index)", 511 | "serde 1.0.116 (registry+https://github.com/rust-lang/crates.io-index)", 512 | "serde_json 1.0.58 (registry+https://github.com/rust-lang/crates.io-index)", 513 | "time 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)", 514 | "try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 515 | "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 516 | ] 517 | 518 | [[package]] 519 | name = "copyless" 520 | version = "0.1.5" 521 | source = "registry+https://github.com/rust-lang/crates.io-index" 522 | 523 | [[package]] 524 | name = "core-foundation" 525 | version = "0.7.0" 526 | source = "registry+https://github.com/rust-lang/crates.io-index" 527 | dependencies = [ 528 | "core-foundation-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 529 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 530 | ] 531 | 532 | [[package]] 533 | name = "core-foundation-sys" 534 | version = "0.7.0" 535 | source = "registry+https://github.com/rust-lang/crates.io-index" 536 | 537 | [[package]] 538 | name = "crc32fast" 539 | version = "1.2.0" 540 | source = "registry+https://github.com/rust-lang/crates.io-index" 541 | dependencies = [ 542 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 543 | ] 544 | 545 | [[package]] 546 | name = "crossbeam-deque" 547 | version = "0.7.3" 548 | source = "registry+https://github.com/rust-lang/crates.io-index" 549 | dependencies = [ 550 | "crossbeam-epoch 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", 551 | "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 552 | "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 553 | ] 554 | 555 | [[package]] 556 | name = "crossbeam-epoch" 557 | version = "0.8.2" 558 | source = "registry+https://github.com/rust-lang/crates.io-index" 559 | dependencies = [ 560 | "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 561 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 562 | "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 563 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 564 | "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 565 | "memoffset 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", 566 | "scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 567 | ] 568 | 569 | [[package]] 570 | name = "crossbeam-queue" 571 | version = "0.2.3" 572 | source = "registry+https://github.com/rust-lang/crates.io-index" 573 | dependencies = [ 574 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 575 | "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 576 | "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 577 | ] 578 | 579 | [[package]] 580 | name = "crossbeam-utils" 581 | version = "0.7.2" 582 | source = "registry+https://github.com/rust-lang/crates.io-index" 583 | dependencies = [ 584 | "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 585 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 586 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 587 | ] 588 | 589 | [[package]] 590 | name = "derive_more" 591 | version = "0.15.0" 592 | source = "registry+https://github.com/rust-lang/crates.io-index" 593 | dependencies = [ 594 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 595 | "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 596 | "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", 597 | "regex 1.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 598 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 599 | "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", 600 | ] 601 | 602 | [[package]] 603 | name = "dtoa" 604 | version = "0.4.6" 605 | source = "registry+https://github.com/rust-lang/crates.io-index" 606 | 607 | [[package]] 608 | name = "either" 609 | version = "1.6.1" 610 | source = "registry+https://github.com/rust-lang/crates.io-index" 611 | 612 | [[package]] 613 | name = "encoding_rs" 614 | version = "0.8.24" 615 | source = "registry+https://github.com/rust-lang/crates.io-index" 616 | dependencies = [ 617 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 618 | ] 619 | 620 | [[package]] 621 | name = "enum-as-inner" 622 | version = "0.2.1" 623 | source = "registry+https://github.com/rust-lang/crates.io-index" 624 | dependencies = [ 625 | "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 626 | "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", 627 | "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", 628 | ] 629 | 630 | [[package]] 631 | name = "env_logger" 632 | version = "0.5.13" 633 | source = "registry+https://github.com/rust-lang/crates.io-index" 634 | dependencies = [ 635 | "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", 636 | "humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 637 | "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 638 | "regex 1.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 639 | "termcolor 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 640 | ] 641 | 642 | [[package]] 643 | name = "env_logger" 644 | version = "0.6.2" 645 | source = "registry+https://github.com/rust-lang/crates.io-index" 646 | dependencies = [ 647 | "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", 648 | "humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 649 | "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 650 | "regex 1.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 651 | "termcolor 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 652 | ] 653 | 654 | [[package]] 655 | name = "error-chain" 656 | version = "0.12.4" 657 | source = "registry+https://github.com/rust-lang/crates.io-index" 658 | dependencies = [ 659 | "version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", 660 | ] 661 | 662 | [[package]] 663 | name = "failure" 664 | version = "0.1.8" 665 | source = "registry+https://github.com/rust-lang/crates.io-index" 666 | dependencies = [ 667 | "backtrace 0.3.51 (registry+https://github.com/rust-lang/crates.io-index)", 668 | "failure_derive 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 669 | ] 670 | 671 | [[package]] 672 | name = "failure_derive" 673 | version = "0.1.8" 674 | source = "registry+https://github.com/rust-lang/crates.io-index" 675 | dependencies = [ 676 | "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", 677 | "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", 678 | "syn 1.0.42 (registry+https://github.com/rust-lang/crates.io-index)", 679 | "synstructure 0.12.4 (registry+https://github.com/rust-lang/crates.io-index)", 680 | ] 681 | 682 | [[package]] 683 | name = "flate2" 684 | version = "1.0.18" 685 | source = "registry+https://github.com/rust-lang/crates.io-index" 686 | dependencies = [ 687 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 688 | "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 689 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 690 | "miniz-sys 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 691 | "miniz_oxide 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 692 | ] 693 | 694 | [[package]] 695 | name = "fnv" 696 | version = "1.0.7" 697 | source = "registry+https://github.com/rust-lang/crates.io-index" 698 | 699 | [[package]] 700 | name = "foreign-types" 701 | version = "0.3.2" 702 | source = "registry+https://github.com/rust-lang/crates.io-index" 703 | dependencies = [ 704 | "foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 705 | ] 706 | 707 | [[package]] 708 | name = "foreign-types-shared" 709 | version = "0.1.1" 710 | source = "registry+https://github.com/rust-lang/crates.io-index" 711 | 712 | [[package]] 713 | name = "fuchsia-cprng" 714 | version = "0.1.1" 715 | source = "registry+https://github.com/rust-lang/crates.io-index" 716 | 717 | [[package]] 718 | name = "fuchsia-zircon" 719 | version = "0.3.3" 720 | source = "registry+https://github.com/rust-lang/crates.io-index" 721 | dependencies = [ 722 | "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 723 | "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 724 | ] 725 | 726 | [[package]] 727 | name = "fuchsia-zircon-sys" 728 | version = "0.3.3" 729 | source = "registry+https://github.com/rust-lang/crates.io-index" 730 | 731 | [[package]] 732 | name = "futures" 733 | version = "0.1.30" 734 | source = "registry+https://github.com/rust-lang/crates.io-index" 735 | 736 | [[package]] 737 | name = "futures-cpupool" 738 | version = "0.1.8" 739 | source = "registry+https://github.com/rust-lang/crates.io-index" 740 | dependencies = [ 741 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 742 | "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)", 743 | ] 744 | 745 | [[package]] 746 | name = "getrandom" 747 | version = "0.1.15" 748 | source = "registry+https://github.com/rust-lang/crates.io-index" 749 | dependencies = [ 750 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 751 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 752 | "wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)", 753 | ] 754 | 755 | [[package]] 756 | name = "gimli" 757 | version = "0.22.0" 758 | source = "registry+https://github.com/rust-lang/crates.io-index" 759 | 760 | [[package]] 761 | name = "glob" 762 | version = "0.2.11" 763 | source = "registry+https://github.com/rust-lang/crates.io-index" 764 | 765 | [[package]] 766 | name = "h2" 767 | version = "0.1.26" 768 | source = "registry+https://github.com/rust-lang/crates.io-index" 769 | dependencies = [ 770 | "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 771 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 772 | "fnv 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", 773 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 774 | "http 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 775 | "indexmap 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", 776 | "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 777 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 778 | "string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 779 | "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 780 | ] 781 | 782 | [[package]] 783 | name = "hashbrown" 784 | version = "0.6.3" 785 | source = "registry+https://github.com/rust-lang/crates.io-index" 786 | dependencies = [ 787 | "ahash 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", 788 | "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 789 | ] 790 | 791 | [[package]] 792 | name = "hashbrown" 793 | version = "0.9.1" 794 | source = "registry+https://github.com/rust-lang/crates.io-index" 795 | 796 | [[package]] 797 | name = "hermit-abi" 798 | version = "0.1.16" 799 | source = "registry+https://github.com/rust-lang/crates.io-index" 800 | dependencies = [ 801 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 802 | ] 803 | 804 | [[package]] 805 | name = "hostname" 806 | version = "0.3.1" 807 | source = "registry+https://github.com/rust-lang/crates.io-index" 808 | dependencies = [ 809 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 810 | "match_cfg 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 811 | "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 812 | ] 813 | 814 | [[package]] 815 | name = "http" 816 | version = "0.1.21" 817 | source = "registry+https://github.com/rust-lang/crates.io-index" 818 | dependencies = [ 819 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 820 | "fnv 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", 821 | "itoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 822 | ] 823 | 824 | [[package]] 825 | name = "http-body" 826 | version = "0.1.0" 827 | source = "registry+https://github.com/rust-lang/crates.io-index" 828 | dependencies = [ 829 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 830 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 831 | "http 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 832 | "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 833 | ] 834 | 835 | [[package]] 836 | name = "httparse" 837 | version = "1.3.4" 838 | source = "registry+https://github.com/rust-lang/crates.io-index" 839 | 840 | [[package]] 841 | name = "humantime" 842 | version = "1.3.0" 843 | source = "registry+https://github.com/rust-lang/crates.io-index" 844 | dependencies = [ 845 | "quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 846 | ] 847 | 848 | [[package]] 849 | name = "hyper" 850 | version = "0.12.35" 851 | source = "registry+https://github.com/rust-lang/crates.io-index" 852 | dependencies = [ 853 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 854 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 855 | "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 856 | "h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", 857 | "http 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 858 | "http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 859 | "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 860 | "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 861 | "itoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 862 | "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 863 | "net2 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)", 864 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 865 | "time 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)", 866 | "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", 867 | "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 868 | "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 869 | "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 870 | "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 871 | "tokio-tcp 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 872 | "tokio-threadpool 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", 873 | "tokio-timer 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", 874 | "want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 875 | ] 876 | 877 | [[package]] 878 | name = "hyper-tls" 879 | version = "0.3.2" 880 | source = "registry+https://github.com/rust-lang/crates.io-index" 881 | dependencies = [ 882 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 883 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 884 | "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)", 885 | "native-tls 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", 886 | "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 887 | ] 888 | 889 | [[package]] 890 | name = "idna" 891 | version = "0.1.5" 892 | source = "registry+https://github.com/rust-lang/crates.io-index" 893 | dependencies = [ 894 | "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 895 | "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 896 | "unicode-normalization 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 897 | ] 898 | 899 | [[package]] 900 | name = "idna" 901 | version = "0.2.0" 902 | source = "registry+https://github.com/rust-lang/crates.io-index" 903 | dependencies = [ 904 | "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 905 | "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 906 | "unicode-normalization 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 907 | ] 908 | 909 | [[package]] 910 | name = "indexmap" 911 | version = "1.6.0" 912 | source = "registry+https://github.com/rust-lang/crates.io-index" 913 | dependencies = [ 914 | "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 915 | "hashbrown 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", 916 | ] 917 | 918 | [[package]] 919 | name = "iovec" 920 | version = "0.1.4" 921 | source = "registry+https://github.com/rust-lang/crates.io-index" 922 | dependencies = [ 923 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 924 | ] 925 | 926 | [[package]] 927 | name = "ipconfig" 928 | version = "0.2.2" 929 | source = "registry+https://github.com/rust-lang/crates.io-index" 930 | dependencies = [ 931 | "socket2 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", 932 | "widestring 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", 933 | "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 934 | "winreg 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 935 | ] 936 | 937 | [[package]] 938 | name = "itoa" 939 | version = "0.4.6" 940 | source = "registry+https://github.com/rust-lang/crates.io-index" 941 | 942 | [[package]] 943 | name = "kernel32-sys" 944 | version = "0.2.2" 945 | source = "registry+https://github.com/rust-lang/crates.io-index" 946 | dependencies = [ 947 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 948 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 949 | ] 950 | 951 | [[package]] 952 | name = "language-tags" 953 | version = "0.2.2" 954 | source = "registry+https://github.com/rust-lang/crates.io-index" 955 | 956 | [[package]] 957 | name = "lazy_static" 958 | version = "1.4.0" 959 | source = "registry+https://github.com/rust-lang/crates.io-index" 960 | 961 | [[package]] 962 | name = "libc" 963 | version = "0.2.79" 964 | source = "registry+https://github.com/rust-lang/crates.io-index" 965 | 966 | [[package]] 967 | name = "libloading" 968 | version = "0.5.2" 969 | source = "registry+https://github.com/rust-lang/crates.io-index" 970 | dependencies = [ 971 | "cc 1.0.60 (registry+https://github.com/rust-lang/crates.io-index)", 972 | "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 973 | ] 974 | 975 | [[package]] 976 | name = "libnixstore-sys" 977 | version = "0.1.0" 978 | source = "registry+https://github.com/rust-lang/crates.io-index" 979 | dependencies = [ 980 | "bindgen 0.42.3 (registry+https://github.com/rust-lang/crates.io-index)", 981 | "pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)", 982 | ] 983 | 984 | [[package]] 985 | name = "linked-hash-map" 986 | version = "0.5.3" 987 | source = "registry+https://github.com/rust-lang/crates.io-index" 988 | 989 | [[package]] 990 | name = "local-nix-cache" 991 | version = "0.1.0" 992 | dependencies = [ 993 | "actix-web 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)", 994 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 995 | "clap 2.33.3 (registry+https://github.com/rust-lang/crates.io-index)", 996 | "env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 997 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 998 | "libnixstore-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 999 | "multicast_dns 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 1000 | "reqwest 0.9.24 (registry+https://github.com/rust-lang/crates.io-index)", 1001 | "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 1002 | ] 1003 | 1004 | [[package]] 1005 | name = "lock_api" 1006 | version = "0.3.4" 1007 | source = "registry+https://github.com/rust-lang/crates.io-index" 1008 | dependencies = [ 1009 | "scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1010 | ] 1011 | 1012 | [[package]] 1013 | name = "log" 1014 | version = "0.4.11" 1015 | source = "registry+https://github.com/rust-lang/crates.io-index" 1016 | dependencies = [ 1017 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 1018 | ] 1019 | 1020 | [[package]] 1021 | name = "lru-cache" 1022 | version = "0.1.2" 1023 | source = "registry+https://github.com/rust-lang/crates.io-index" 1024 | dependencies = [ 1025 | "linked-hash-map 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", 1026 | ] 1027 | 1028 | [[package]] 1029 | name = "match_cfg" 1030 | version = "0.1.0" 1031 | source = "registry+https://github.com/rust-lang/crates.io-index" 1032 | 1033 | [[package]] 1034 | name = "matches" 1035 | version = "0.1.8" 1036 | source = "registry+https://github.com/rust-lang/crates.io-index" 1037 | 1038 | [[package]] 1039 | name = "maybe-uninit" 1040 | version = "2.0.0" 1041 | source = "registry+https://github.com/rust-lang/crates.io-index" 1042 | 1043 | [[package]] 1044 | name = "memchr" 1045 | version = "2.3.3" 1046 | source = "registry+https://github.com/rust-lang/crates.io-index" 1047 | 1048 | [[package]] 1049 | name = "memoffset" 1050 | version = "0.5.6" 1051 | source = "registry+https://github.com/rust-lang/crates.io-index" 1052 | dependencies = [ 1053 | "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1054 | ] 1055 | 1056 | [[package]] 1057 | name = "mime" 1058 | version = "0.3.16" 1059 | source = "registry+https://github.com/rust-lang/crates.io-index" 1060 | 1061 | [[package]] 1062 | name = "mime_guess" 1063 | version = "2.0.3" 1064 | source = "registry+https://github.com/rust-lang/crates.io-index" 1065 | dependencies = [ 1066 | "mime 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", 1067 | "unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)", 1068 | ] 1069 | 1070 | [[package]] 1071 | name = "miniz-sys" 1072 | version = "0.1.12" 1073 | source = "registry+https://github.com/rust-lang/crates.io-index" 1074 | dependencies = [ 1075 | "cc 1.0.60 (registry+https://github.com/rust-lang/crates.io-index)", 1076 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 1077 | ] 1078 | 1079 | [[package]] 1080 | name = "miniz_oxide" 1081 | version = "0.4.2" 1082 | source = "registry+https://github.com/rust-lang/crates.io-index" 1083 | dependencies = [ 1084 | "adler 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 1085 | "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1086 | ] 1087 | 1088 | [[package]] 1089 | name = "mio" 1090 | version = "0.6.22" 1091 | source = "registry+https://github.com/rust-lang/crates.io-index" 1092 | dependencies = [ 1093 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 1094 | "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 1095 | "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 1096 | "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1097 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 1098 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 1099 | "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 1100 | "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 1101 | "net2 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)", 1102 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1103 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 1104 | ] 1105 | 1106 | [[package]] 1107 | name = "mio-uds" 1108 | version = "0.6.8" 1109 | source = "registry+https://github.com/rust-lang/crates.io-index" 1110 | dependencies = [ 1111 | "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1112 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 1113 | "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)", 1114 | ] 1115 | 1116 | [[package]] 1117 | name = "miow" 1118 | version = "0.2.1" 1119 | source = "registry+https://github.com/rust-lang/crates.io-index" 1120 | dependencies = [ 1121 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 1122 | "net2 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)", 1123 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 1124 | "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 1125 | ] 1126 | 1127 | [[package]] 1128 | name = "multicast_dns" 1129 | version = "0.5.0" 1130 | source = "registry+https://github.com/rust-lang/crates.io-index" 1131 | dependencies = [ 1132 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 1133 | "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 1134 | ] 1135 | 1136 | [[package]] 1137 | name = "native-tls" 1138 | version = "0.2.4" 1139 | source = "registry+https://github.com/rust-lang/crates.io-index" 1140 | dependencies = [ 1141 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1142 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 1143 | "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 1144 | "openssl 0.10.30 (registry+https://github.com/rust-lang/crates.io-index)", 1145 | "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1146 | "openssl-sys 0.9.58 (registry+https://github.com/rust-lang/crates.io-index)", 1147 | "schannel 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", 1148 | "security-framework 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 1149 | "security-framework-sys 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", 1150 | "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1151 | ] 1152 | 1153 | [[package]] 1154 | name = "net2" 1155 | version = "0.2.35" 1156 | source = "registry+https://github.com/rust-lang/crates.io-index" 1157 | dependencies = [ 1158 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 1159 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 1160 | "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 1161 | ] 1162 | 1163 | [[package]] 1164 | name = "nom" 1165 | version = "4.2.3" 1166 | source = "registry+https://github.com/rust-lang/crates.io-index" 1167 | dependencies = [ 1168 | "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 1169 | "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1170 | ] 1171 | 1172 | [[package]] 1173 | name = "num-integer" 1174 | version = "0.1.43" 1175 | source = "registry+https://github.com/rust-lang/crates.io-index" 1176 | dependencies = [ 1177 | "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1178 | "num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", 1179 | ] 1180 | 1181 | [[package]] 1182 | name = "num-traits" 1183 | version = "0.2.12" 1184 | source = "registry+https://github.com/rust-lang/crates.io-index" 1185 | dependencies = [ 1186 | "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1187 | ] 1188 | 1189 | [[package]] 1190 | name = "num_cpus" 1191 | version = "1.13.0" 1192 | source = "registry+https://github.com/rust-lang/crates.io-index" 1193 | dependencies = [ 1194 | "hermit-abi 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", 1195 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 1196 | ] 1197 | 1198 | [[package]] 1199 | name = "object" 1200 | version = "0.20.0" 1201 | source = "registry+https://github.com/rust-lang/crates.io-index" 1202 | 1203 | [[package]] 1204 | name = "openssl" 1205 | version = "0.10.30" 1206 | source = "registry+https://github.com/rust-lang/crates.io-index" 1207 | dependencies = [ 1208 | "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 1209 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 1210 | "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 1211 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1212 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 1213 | "openssl-sys 0.9.58 (registry+https://github.com/rust-lang/crates.io-index)", 1214 | ] 1215 | 1216 | [[package]] 1217 | name = "openssl-probe" 1218 | version = "0.1.2" 1219 | source = "registry+https://github.com/rust-lang/crates.io-index" 1220 | 1221 | [[package]] 1222 | name = "openssl-sys" 1223 | version = "0.9.58" 1224 | source = "registry+https://github.com/rust-lang/crates.io-index" 1225 | dependencies = [ 1226 | "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1227 | "cc 1.0.60 (registry+https://github.com/rust-lang/crates.io-index)", 1228 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 1229 | "pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)", 1230 | "vcpkg 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", 1231 | ] 1232 | 1233 | [[package]] 1234 | name = "parking_lot" 1235 | version = "0.9.0" 1236 | source = "registry+https://github.com/rust-lang/crates.io-index" 1237 | dependencies = [ 1238 | "lock_api 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 1239 | "parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 1240 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 1241 | ] 1242 | 1243 | [[package]] 1244 | name = "parking_lot_core" 1245 | version = "0.6.2" 1246 | source = "registry+https://github.com/rust-lang/crates.io-index" 1247 | dependencies = [ 1248 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 1249 | "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 1250 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 1251 | "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)", 1252 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 1253 | "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", 1254 | "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 1255 | ] 1256 | 1257 | [[package]] 1258 | name = "peeking_take_while" 1259 | version = "0.1.2" 1260 | source = "registry+https://github.com/rust-lang/crates.io-index" 1261 | 1262 | [[package]] 1263 | name = "percent-encoding" 1264 | version = "1.0.1" 1265 | source = "registry+https://github.com/rust-lang/crates.io-index" 1266 | 1267 | [[package]] 1268 | name = "percent-encoding" 1269 | version = "2.1.0" 1270 | source = "registry+https://github.com/rust-lang/crates.io-index" 1271 | 1272 | [[package]] 1273 | name = "pkg-config" 1274 | version = "0.3.18" 1275 | source = "registry+https://github.com/rust-lang/crates.io-index" 1276 | 1277 | [[package]] 1278 | name = "ppv-lite86" 1279 | version = "0.2.9" 1280 | source = "registry+https://github.com/rust-lang/crates.io-index" 1281 | 1282 | [[package]] 1283 | name = "proc-macro-hack" 1284 | version = "0.5.18" 1285 | source = "registry+https://github.com/rust-lang/crates.io-index" 1286 | 1287 | [[package]] 1288 | name = "proc-macro2" 1289 | version = "0.3.5" 1290 | source = "registry+https://github.com/rust-lang/crates.io-index" 1291 | dependencies = [ 1292 | "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1293 | ] 1294 | 1295 | [[package]] 1296 | name = "proc-macro2" 1297 | version = "0.4.30" 1298 | source = "registry+https://github.com/rust-lang/crates.io-index" 1299 | dependencies = [ 1300 | "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1301 | ] 1302 | 1303 | [[package]] 1304 | name = "proc-macro2" 1305 | version = "1.0.24" 1306 | source = "registry+https://github.com/rust-lang/crates.io-index" 1307 | dependencies = [ 1308 | "unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 1309 | ] 1310 | 1311 | [[package]] 1312 | name = "publicsuffix" 1313 | version = "1.5.4" 1314 | source = "registry+https://github.com/rust-lang/crates.io-index" 1315 | dependencies = [ 1316 | "error-chain 0.12.4 (registry+https://github.com/rust-lang/crates.io-index)", 1317 | "idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 1318 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1319 | "regex 1.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 1320 | "url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1321 | ] 1322 | 1323 | [[package]] 1324 | name = "quick-error" 1325 | version = "1.2.3" 1326 | source = "registry+https://github.com/rust-lang/crates.io-index" 1327 | 1328 | [[package]] 1329 | name = "quote" 1330 | version = "0.5.2" 1331 | source = "registry+https://github.com/rust-lang/crates.io-index" 1332 | dependencies = [ 1333 | "proc-macro2 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", 1334 | ] 1335 | 1336 | [[package]] 1337 | name = "quote" 1338 | version = "0.6.13" 1339 | source = "registry+https://github.com/rust-lang/crates.io-index" 1340 | dependencies = [ 1341 | "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 1342 | ] 1343 | 1344 | [[package]] 1345 | name = "quote" 1346 | version = "1.0.7" 1347 | source = "registry+https://github.com/rust-lang/crates.io-index" 1348 | dependencies = [ 1349 | "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", 1350 | ] 1351 | 1352 | [[package]] 1353 | name = "rand" 1354 | version = "0.4.6" 1355 | source = "registry+https://github.com/rust-lang/crates.io-index" 1356 | dependencies = [ 1357 | "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1358 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 1359 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1360 | "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1361 | "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 1362 | ] 1363 | 1364 | [[package]] 1365 | name = "rand" 1366 | version = "0.6.5" 1367 | source = "registry+https://github.com/rust-lang/crates.io-index" 1368 | dependencies = [ 1369 | "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 1370 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 1371 | "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1372 | "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1373 | "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1374 | "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1375 | "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1376 | "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1377 | "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1378 | "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1379 | "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 1380 | ] 1381 | 1382 | [[package]] 1383 | name = "rand" 1384 | version = "0.7.3" 1385 | source = "registry+https://github.com/rust-lang/crates.io-index" 1386 | dependencies = [ 1387 | "getrandom 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", 1388 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 1389 | "rand_chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 1390 | "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 1391 | "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 1392 | ] 1393 | 1394 | [[package]] 1395 | name = "rand_chacha" 1396 | version = "0.1.1" 1397 | source = "registry+https://github.com/rust-lang/crates.io-index" 1398 | dependencies = [ 1399 | "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 1400 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1401 | ] 1402 | 1403 | [[package]] 1404 | name = "rand_chacha" 1405 | version = "0.2.2" 1406 | source = "registry+https://github.com/rust-lang/crates.io-index" 1407 | dependencies = [ 1408 | "ppv-lite86 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", 1409 | "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 1410 | ] 1411 | 1412 | [[package]] 1413 | name = "rand_core" 1414 | version = "0.3.1" 1415 | source = "registry+https://github.com/rust-lang/crates.io-index" 1416 | dependencies = [ 1417 | "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1418 | ] 1419 | 1420 | [[package]] 1421 | name = "rand_core" 1422 | version = "0.4.2" 1423 | source = "registry+https://github.com/rust-lang/crates.io-index" 1424 | 1425 | [[package]] 1426 | name = "rand_core" 1427 | version = "0.5.1" 1428 | source = "registry+https://github.com/rust-lang/crates.io-index" 1429 | dependencies = [ 1430 | "getrandom 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", 1431 | ] 1432 | 1433 | [[package]] 1434 | name = "rand_hc" 1435 | version = "0.1.0" 1436 | source = "registry+https://github.com/rust-lang/crates.io-index" 1437 | dependencies = [ 1438 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1439 | ] 1440 | 1441 | [[package]] 1442 | name = "rand_hc" 1443 | version = "0.2.0" 1444 | source = "registry+https://github.com/rust-lang/crates.io-index" 1445 | dependencies = [ 1446 | "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 1447 | ] 1448 | 1449 | [[package]] 1450 | name = "rand_isaac" 1451 | version = "0.1.1" 1452 | source = "registry+https://github.com/rust-lang/crates.io-index" 1453 | dependencies = [ 1454 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1455 | ] 1456 | 1457 | [[package]] 1458 | name = "rand_jitter" 1459 | version = "0.1.4" 1460 | source = "registry+https://github.com/rust-lang/crates.io-index" 1461 | dependencies = [ 1462 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 1463 | "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1464 | "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 1465 | ] 1466 | 1467 | [[package]] 1468 | name = "rand_os" 1469 | version = "0.1.3" 1470 | source = "registry+https://github.com/rust-lang/crates.io-index" 1471 | dependencies = [ 1472 | "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 1473 | "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1474 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 1475 | "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1476 | "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1477 | "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 1478 | ] 1479 | 1480 | [[package]] 1481 | name = "rand_pcg" 1482 | version = "0.1.2" 1483 | source = "registry+https://github.com/rust-lang/crates.io-index" 1484 | dependencies = [ 1485 | "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 1486 | "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1487 | ] 1488 | 1489 | [[package]] 1490 | name = "rand_xorshift" 1491 | version = "0.1.1" 1492 | source = "registry+https://github.com/rust-lang/crates.io-index" 1493 | dependencies = [ 1494 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1495 | ] 1496 | 1497 | [[package]] 1498 | name = "rdrand" 1499 | version = "0.4.0" 1500 | source = "registry+https://github.com/rust-lang/crates.io-index" 1501 | dependencies = [ 1502 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1503 | ] 1504 | 1505 | [[package]] 1506 | name = "redox_syscall" 1507 | version = "0.1.57" 1508 | source = "registry+https://github.com/rust-lang/crates.io-index" 1509 | 1510 | [[package]] 1511 | name = "regex" 1512 | version = "1.3.9" 1513 | source = "registry+https://github.com/rust-lang/crates.io-index" 1514 | dependencies = [ 1515 | "aho-corasick 0.7.13 (registry+https://github.com/rust-lang/crates.io-index)", 1516 | "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 1517 | "regex-syntax 0.6.18 (registry+https://github.com/rust-lang/crates.io-index)", 1518 | "thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1519 | ] 1520 | 1521 | [[package]] 1522 | name = "regex-syntax" 1523 | version = "0.6.18" 1524 | source = "registry+https://github.com/rust-lang/crates.io-index" 1525 | 1526 | [[package]] 1527 | name = "remove_dir_all" 1528 | version = "0.5.3" 1529 | source = "registry+https://github.com/rust-lang/crates.io-index" 1530 | dependencies = [ 1531 | "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 1532 | ] 1533 | 1534 | [[package]] 1535 | name = "reqwest" 1536 | version = "0.9.24" 1537 | source = "registry+https://github.com/rust-lang/crates.io-index" 1538 | dependencies = [ 1539 | "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 1540 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1541 | "cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", 1542 | "cookie_store 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 1543 | "encoding_rs 0.8.24 (registry+https://github.com/rust-lang/crates.io-index)", 1544 | "flate2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", 1545 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 1546 | "http 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 1547 | "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)", 1548 | "hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 1549 | "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 1550 | "mime 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", 1551 | "mime_guess 2.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 1552 | "native-tls 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", 1553 | "serde 1.0.116 (registry+https://github.com/rust-lang/crates.io-index)", 1554 | "serde_json 1.0.58 (registry+https://github.com/rust-lang/crates.io-index)", 1555 | "serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", 1556 | "time 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)", 1557 | "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", 1558 | "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 1559 | "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 1560 | "tokio-threadpool 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", 1561 | "tokio-timer 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", 1562 | "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 1563 | "uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", 1564 | "winreg 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 1565 | ] 1566 | 1567 | [[package]] 1568 | name = "resolv-conf" 1569 | version = "0.6.3" 1570 | source = "registry+https://github.com/rust-lang/crates.io-index" 1571 | dependencies = [ 1572 | "hostname 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1573 | "quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 1574 | ] 1575 | 1576 | [[package]] 1577 | name = "ring" 1578 | version = "0.14.6" 1579 | source = "registry+https://github.com/rust-lang/crates.io-index" 1580 | dependencies = [ 1581 | "cc 1.0.60 (registry+https://github.com/rust-lang/crates.io-index)", 1582 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1583 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 1584 | "spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 1585 | "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 1586 | "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 1587 | ] 1588 | 1589 | [[package]] 1590 | name = "rustc-demangle" 1591 | version = "0.1.16" 1592 | source = "registry+https://github.com/rust-lang/crates.io-index" 1593 | 1594 | [[package]] 1595 | name = "rustc_version" 1596 | version = "0.2.3" 1597 | source = "registry+https://github.com/rust-lang/crates.io-index" 1598 | dependencies = [ 1599 | "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 1600 | ] 1601 | 1602 | [[package]] 1603 | name = "rustls" 1604 | version = "0.15.2" 1605 | source = "registry+https://github.com/rust-lang/crates.io-index" 1606 | dependencies = [ 1607 | "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 1608 | "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 1609 | "ring 0.14.6 (registry+https://github.com/rust-lang/crates.io-index)", 1610 | "sct 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 1611 | "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 1612 | "webpki 0.19.1 (registry+https://github.com/rust-lang/crates.io-index)", 1613 | ] 1614 | 1615 | [[package]] 1616 | name = "ryu" 1617 | version = "1.0.5" 1618 | source = "registry+https://github.com/rust-lang/crates.io-index" 1619 | 1620 | [[package]] 1621 | name = "schannel" 1622 | version = "0.1.19" 1623 | source = "registry+https://github.com/rust-lang/crates.io-index" 1624 | dependencies = [ 1625 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1626 | "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 1627 | ] 1628 | 1629 | [[package]] 1630 | name = "scopeguard" 1631 | version = "1.1.0" 1632 | source = "registry+https://github.com/rust-lang/crates.io-index" 1633 | 1634 | [[package]] 1635 | name = "sct" 1636 | version = "0.5.0" 1637 | source = "registry+https://github.com/rust-lang/crates.io-index" 1638 | dependencies = [ 1639 | "ring 0.14.6 (registry+https://github.com/rust-lang/crates.io-index)", 1640 | "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 1641 | ] 1642 | 1643 | [[package]] 1644 | name = "security-framework" 1645 | version = "0.4.4" 1646 | source = "registry+https://github.com/rust-lang/crates.io-index" 1647 | dependencies = [ 1648 | "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 1649 | "core-foundation 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 1650 | "core-foundation-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 1651 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 1652 | "security-framework-sys 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", 1653 | ] 1654 | 1655 | [[package]] 1656 | name = "security-framework-sys" 1657 | version = "0.4.3" 1658 | source = "registry+https://github.com/rust-lang/crates.io-index" 1659 | dependencies = [ 1660 | "core-foundation-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 1661 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 1662 | ] 1663 | 1664 | [[package]] 1665 | name = "semver" 1666 | version = "0.9.0" 1667 | source = "registry+https://github.com/rust-lang/crates.io-index" 1668 | dependencies = [ 1669 | "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 1670 | ] 1671 | 1672 | [[package]] 1673 | name = "semver-parser" 1674 | version = "0.7.0" 1675 | source = "registry+https://github.com/rust-lang/crates.io-index" 1676 | 1677 | [[package]] 1678 | name = "serde" 1679 | version = "1.0.116" 1680 | source = "registry+https://github.com/rust-lang/crates.io-index" 1681 | dependencies = [ 1682 | "serde_derive 1.0.116 (registry+https://github.com/rust-lang/crates.io-index)", 1683 | ] 1684 | 1685 | [[package]] 1686 | name = "serde_derive" 1687 | version = "1.0.116" 1688 | source = "registry+https://github.com/rust-lang/crates.io-index" 1689 | dependencies = [ 1690 | "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", 1691 | "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", 1692 | "syn 1.0.42 (registry+https://github.com/rust-lang/crates.io-index)", 1693 | ] 1694 | 1695 | [[package]] 1696 | name = "serde_json" 1697 | version = "1.0.58" 1698 | source = "registry+https://github.com/rust-lang/crates.io-index" 1699 | dependencies = [ 1700 | "itoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 1701 | "ryu 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 1702 | "serde 1.0.116 (registry+https://github.com/rust-lang/crates.io-index)", 1703 | ] 1704 | 1705 | [[package]] 1706 | name = "serde_urlencoded" 1707 | version = "0.5.5" 1708 | source = "registry+https://github.com/rust-lang/crates.io-index" 1709 | dependencies = [ 1710 | "dtoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 1711 | "itoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 1712 | "serde 1.0.116 (registry+https://github.com/rust-lang/crates.io-index)", 1713 | "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 1714 | ] 1715 | 1716 | [[package]] 1717 | name = "serde_urlencoded" 1718 | version = "0.6.1" 1719 | source = "registry+https://github.com/rust-lang/crates.io-index" 1720 | dependencies = [ 1721 | "dtoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 1722 | "itoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 1723 | "serde 1.0.116 (registry+https://github.com/rust-lang/crates.io-index)", 1724 | "url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1725 | ] 1726 | 1727 | [[package]] 1728 | name = "sha1" 1729 | version = "0.6.0" 1730 | source = "registry+https://github.com/rust-lang/crates.io-index" 1731 | 1732 | [[package]] 1733 | name = "signal-hook-registry" 1734 | version = "1.2.1" 1735 | source = "registry+https://github.com/rust-lang/crates.io-index" 1736 | dependencies = [ 1737 | "arc-swap 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 1738 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 1739 | ] 1740 | 1741 | [[package]] 1742 | name = "slab" 1743 | version = "0.4.2" 1744 | source = "registry+https://github.com/rust-lang/crates.io-index" 1745 | 1746 | [[package]] 1747 | name = "smallvec" 1748 | version = "0.6.13" 1749 | source = "registry+https://github.com/rust-lang/crates.io-index" 1750 | dependencies = [ 1751 | "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 1752 | ] 1753 | 1754 | [[package]] 1755 | name = "socket2" 1756 | version = "0.3.15" 1757 | source = "registry+https://github.com/rust-lang/crates.io-index" 1758 | dependencies = [ 1759 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 1760 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 1761 | "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)", 1762 | "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 1763 | ] 1764 | 1765 | [[package]] 1766 | name = "spin" 1767 | version = "0.5.2" 1768 | source = "registry+https://github.com/rust-lang/crates.io-index" 1769 | 1770 | [[package]] 1771 | name = "string" 1772 | version = "0.2.1" 1773 | source = "registry+https://github.com/rust-lang/crates.io-index" 1774 | dependencies = [ 1775 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1776 | ] 1777 | 1778 | [[package]] 1779 | name = "strsim" 1780 | version = "0.8.0" 1781 | source = "registry+https://github.com/rust-lang/crates.io-index" 1782 | 1783 | [[package]] 1784 | name = "syn" 1785 | version = "0.15.44" 1786 | source = "registry+https://github.com/rust-lang/crates.io-index" 1787 | dependencies = [ 1788 | "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 1789 | "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", 1790 | "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1791 | ] 1792 | 1793 | [[package]] 1794 | name = "syn" 1795 | version = "1.0.42" 1796 | source = "registry+https://github.com/rust-lang/crates.io-index" 1797 | dependencies = [ 1798 | "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", 1799 | "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", 1800 | "unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 1801 | ] 1802 | 1803 | [[package]] 1804 | name = "synstructure" 1805 | version = "0.12.4" 1806 | source = "registry+https://github.com/rust-lang/crates.io-index" 1807 | dependencies = [ 1808 | "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", 1809 | "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", 1810 | "syn 1.0.42 (registry+https://github.com/rust-lang/crates.io-index)", 1811 | "unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 1812 | ] 1813 | 1814 | [[package]] 1815 | name = "tempdir" 1816 | version = "0.3.7" 1817 | source = "registry+https://github.com/rust-lang/crates.io-index" 1818 | dependencies = [ 1819 | "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 1820 | "remove_dir_all 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", 1821 | ] 1822 | 1823 | [[package]] 1824 | name = "tempfile" 1825 | version = "3.1.0" 1826 | source = "registry+https://github.com/rust-lang/crates.io-index" 1827 | dependencies = [ 1828 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 1829 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 1830 | "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", 1831 | "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)", 1832 | "remove_dir_all 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", 1833 | "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 1834 | ] 1835 | 1836 | [[package]] 1837 | name = "termcolor" 1838 | version = "1.1.0" 1839 | source = "registry+https://github.com/rust-lang/crates.io-index" 1840 | dependencies = [ 1841 | "winapi-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1842 | ] 1843 | 1844 | [[package]] 1845 | name = "textwrap" 1846 | version = "0.11.0" 1847 | source = "registry+https://github.com/rust-lang/crates.io-index" 1848 | dependencies = [ 1849 | "unicode-width 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1850 | ] 1851 | 1852 | [[package]] 1853 | name = "thread_local" 1854 | version = "1.0.1" 1855 | source = "registry+https://github.com/rust-lang/crates.io-index" 1856 | dependencies = [ 1857 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1858 | ] 1859 | 1860 | [[package]] 1861 | name = "threadpool" 1862 | version = "1.8.1" 1863 | source = "registry+https://github.com/rust-lang/crates.io-index" 1864 | dependencies = [ 1865 | "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)", 1866 | ] 1867 | 1868 | [[package]] 1869 | name = "time" 1870 | version = "0.1.44" 1871 | source = "registry+https://github.com/rust-lang/crates.io-index" 1872 | dependencies = [ 1873 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 1874 | "wasi 0.10.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)", 1875 | "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 1876 | ] 1877 | 1878 | [[package]] 1879 | name = "tinyvec" 1880 | version = "0.3.4" 1881 | source = "registry+https://github.com/rust-lang/crates.io-index" 1882 | 1883 | [[package]] 1884 | name = "tokio" 1885 | version = "0.1.22" 1886 | source = "registry+https://github.com/rust-lang/crates.io-index" 1887 | dependencies = [ 1888 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1889 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 1890 | "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)", 1891 | "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)", 1892 | "tokio-current-thread 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 1893 | "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 1894 | "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 1895 | "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1896 | "tokio-tcp 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1897 | "tokio-threadpool 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", 1898 | "tokio-timer 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", 1899 | ] 1900 | 1901 | [[package]] 1902 | name = "tokio-buf" 1903 | version = "0.1.1" 1904 | source = "registry+https://github.com/rust-lang/crates.io-index" 1905 | dependencies = [ 1906 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1907 | "either 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 1908 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 1909 | ] 1910 | 1911 | [[package]] 1912 | name = "tokio-codec" 1913 | version = "0.1.2" 1914 | source = "registry+https://github.com/rust-lang/crates.io-index" 1915 | dependencies = [ 1916 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1917 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 1918 | "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 1919 | ] 1920 | 1921 | [[package]] 1922 | name = "tokio-current-thread" 1923 | version = "0.1.7" 1924 | source = "registry+https://github.com/rust-lang/crates.io-index" 1925 | dependencies = [ 1926 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 1927 | "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 1928 | ] 1929 | 1930 | [[package]] 1931 | name = "tokio-executor" 1932 | version = "0.1.10" 1933 | source = "registry+https://github.com/rust-lang/crates.io-index" 1934 | dependencies = [ 1935 | "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 1936 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 1937 | ] 1938 | 1939 | [[package]] 1940 | name = "tokio-io" 1941 | version = "0.1.13" 1942 | source = "registry+https://github.com/rust-lang/crates.io-index" 1943 | dependencies = [ 1944 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1945 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 1946 | "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 1947 | ] 1948 | 1949 | [[package]] 1950 | name = "tokio-reactor" 1951 | version = "0.1.12" 1952 | source = "registry+https://github.com/rust-lang/crates.io-index" 1953 | dependencies = [ 1954 | "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 1955 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 1956 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1957 | "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 1958 | "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)", 1959 | "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)", 1960 | "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 1961 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1962 | "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 1963 | "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 1964 | "tokio-sync 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1965 | ] 1966 | 1967 | [[package]] 1968 | name = "tokio-rustls" 1969 | version = "0.9.4" 1970 | source = "registry+https://github.com/rust-lang/crates.io-index" 1971 | dependencies = [ 1972 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 1973 | "rustls 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", 1974 | "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 1975 | "webpki 0.19.1 (registry+https://github.com/rust-lang/crates.io-index)", 1976 | ] 1977 | 1978 | [[package]] 1979 | name = "tokio-signal" 1980 | version = "0.2.9" 1981 | source = "registry+https://github.com/rust-lang/crates.io-index" 1982 | dependencies = [ 1983 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 1984 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 1985 | "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)", 1986 | "mio-uds 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", 1987 | "signal-hook-registry 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 1988 | "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 1989 | "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 1990 | "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1991 | "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 1992 | ] 1993 | 1994 | [[package]] 1995 | name = "tokio-sync" 1996 | version = "0.1.8" 1997 | source = "registry+https://github.com/rust-lang/crates.io-index" 1998 | dependencies = [ 1999 | "fnv 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", 2000 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 2001 | ] 2002 | 2003 | [[package]] 2004 | name = "tokio-tcp" 2005 | version = "0.1.4" 2006 | source = "registry+https://github.com/rust-lang/crates.io-index" 2007 | dependencies = [ 2008 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 2009 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 2010 | "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 2011 | "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)", 2012 | "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 2013 | "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 2014 | ] 2015 | 2016 | [[package]] 2017 | name = "tokio-threadpool" 2018 | version = "0.1.18" 2019 | source = "registry+https://github.com/rust-lang/crates.io-index" 2020 | dependencies = [ 2021 | "crossbeam-deque 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", 2022 | "crossbeam-queue 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 2023 | "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 2024 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 2025 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 2026 | "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 2027 | "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)", 2028 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 2029 | "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 2030 | ] 2031 | 2032 | [[package]] 2033 | name = "tokio-timer" 2034 | version = "0.2.13" 2035 | source = "registry+https://github.com/rust-lang/crates.io-index" 2036 | dependencies = [ 2037 | "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 2038 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 2039 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 2040 | "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 2041 | ] 2042 | 2043 | [[package]] 2044 | name = "tokio-udp" 2045 | version = "0.1.6" 2046 | source = "registry+https://github.com/rust-lang/crates.io-index" 2047 | dependencies = [ 2048 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 2049 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 2050 | "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 2051 | "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)", 2052 | "tokio-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 2053 | "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 2054 | "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 2055 | ] 2056 | 2057 | [[package]] 2058 | name = "trust-dns-proto" 2059 | version = "0.7.4" 2060 | source = "registry+https://github.com/rust-lang/crates.io-index" 2061 | dependencies = [ 2062 | "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 2063 | "enum-as-inner 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 2064 | "failure 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 2065 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 2066 | "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 2067 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 2068 | "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 2069 | "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 2070 | "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", 2071 | "socket2 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", 2072 | "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 2073 | "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 2074 | "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 2075 | "tokio-tcp 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 2076 | "tokio-timer 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", 2077 | "tokio-udp 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 2078 | "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 2079 | ] 2080 | 2081 | [[package]] 2082 | name = "trust-dns-resolver" 2083 | version = "0.11.1" 2084 | source = "registry+https://github.com/rust-lang/crates.io-index" 2085 | dependencies = [ 2086 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 2087 | "failure 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 2088 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 2089 | "ipconfig 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 2090 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 2091 | "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 2092 | "lru-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 2093 | "resolv-conf 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", 2094 | "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", 2095 | "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 2096 | "trust-dns-proto 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", 2097 | ] 2098 | 2099 | [[package]] 2100 | name = "try-lock" 2101 | version = "0.2.3" 2102 | source = "registry+https://github.com/rust-lang/crates.io-index" 2103 | 2104 | [[package]] 2105 | name = "try_from" 2106 | version = "0.3.2" 2107 | source = "registry+https://github.com/rust-lang/crates.io-index" 2108 | dependencies = [ 2109 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 2110 | ] 2111 | 2112 | [[package]] 2113 | name = "unicase" 2114 | version = "2.6.0" 2115 | source = "registry+https://github.com/rust-lang/crates.io-index" 2116 | dependencies = [ 2117 | "version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", 2118 | ] 2119 | 2120 | [[package]] 2121 | name = "unicode-bidi" 2122 | version = "0.3.4" 2123 | source = "registry+https://github.com/rust-lang/crates.io-index" 2124 | dependencies = [ 2125 | "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 2126 | ] 2127 | 2128 | [[package]] 2129 | name = "unicode-normalization" 2130 | version = "0.1.13" 2131 | source = "registry+https://github.com/rust-lang/crates.io-index" 2132 | dependencies = [ 2133 | "tinyvec 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 2134 | ] 2135 | 2136 | [[package]] 2137 | name = "unicode-width" 2138 | version = "0.1.8" 2139 | source = "registry+https://github.com/rust-lang/crates.io-index" 2140 | 2141 | [[package]] 2142 | name = "unicode-xid" 2143 | version = "0.1.0" 2144 | source = "registry+https://github.com/rust-lang/crates.io-index" 2145 | 2146 | [[package]] 2147 | name = "unicode-xid" 2148 | version = "0.2.1" 2149 | source = "registry+https://github.com/rust-lang/crates.io-index" 2150 | 2151 | [[package]] 2152 | name = "untrusted" 2153 | version = "0.6.2" 2154 | source = "registry+https://github.com/rust-lang/crates.io-index" 2155 | 2156 | [[package]] 2157 | name = "url" 2158 | version = "1.7.2" 2159 | source = "registry+https://github.com/rust-lang/crates.io-index" 2160 | dependencies = [ 2161 | "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 2162 | "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 2163 | "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 2164 | ] 2165 | 2166 | [[package]] 2167 | name = "url" 2168 | version = "2.1.1" 2169 | source = "registry+https://github.com/rust-lang/crates.io-index" 2170 | dependencies = [ 2171 | "idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 2172 | "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 2173 | "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 2174 | ] 2175 | 2176 | [[package]] 2177 | name = "uuid" 2178 | version = "0.7.4" 2179 | source = "registry+https://github.com/rust-lang/crates.io-index" 2180 | dependencies = [ 2181 | "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 2182 | ] 2183 | 2184 | [[package]] 2185 | name = "vcpkg" 2186 | version = "0.2.10" 2187 | source = "registry+https://github.com/rust-lang/crates.io-index" 2188 | 2189 | [[package]] 2190 | name = "vec_map" 2191 | version = "0.8.2" 2192 | source = "registry+https://github.com/rust-lang/crates.io-index" 2193 | 2194 | [[package]] 2195 | name = "version_check" 2196 | version = "0.1.5" 2197 | source = "registry+https://github.com/rust-lang/crates.io-index" 2198 | 2199 | [[package]] 2200 | name = "version_check" 2201 | version = "0.9.2" 2202 | source = "registry+https://github.com/rust-lang/crates.io-index" 2203 | 2204 | [[package]] 2205 | name = "want" 2206 | version = "0.2.0" 2207 | source = "registry+https://github.com/rust-lang/crates.io-index" 2208 | dependencies = [ 2209 | "futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 2210 | "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 2211 | "try-lock 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 2212 | ] 2213 | 2214 | [[package]] 2215 | name = "wasi" 2216 | version = "0.9.0+wasi-snapshot-preview1" 2217 | source = "registry+https://github.com/rust-lang/crates.io-index" 2218 | 2219 | [[package]] 2220 | name = "wasi" 2221 | version = "0.10.0+wasi-snapshot-preview1" 2222 | source = "registry+https://github.com/rust-lang/crates.io-index" 2223 | 2224 | [[package]] 2225 | name = "webpki" 2226 | version = "0.19.1" 2227 | source = "registry+https://github.com/rust-lang/crates.io-index" 2228 | dependencies = [ 2229 | "ring 0.14.6 (registry+https://github.com/rust-lang/crates.io-index)", 2230 | "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 2231 | ] 2232 | 2233 | [[package]] 2234 | name = "webpki-roots" 2235 | version = "0.16.0" 2236 | source = "registry+https://github.com/rust-lang/crates.io-index" 2237 | dependencies = [ 2238 | "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 2239 | "webpki 0.19.1 (registry+https://github.com/rust-lang/crates.io-index)", 2240 | ] 2241 | 2242 | [[package]] 2243 | name = "which" 2244 | version = "1.0.5" 2245 | source = "registry+https://github.com/rust-lang/crates.io-index" 2246 | dependencies = [ 2247 | "libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)", 2248 | ] 2249 | 2250 | [[package]] 2251 | name = "widestring" 2252 | version = "0.4.3" 2253 | source = "registry+https://github.com/rust-lang/crates.io-index" 2254 | 2255 | [[package]] 2256 | name = "winapi" 2257 | version = "0.2.8" 2258 | source = "registry+https://github.com/rust-lang/crates.io-index" 2259 | 2260 | [[package]] 2261 | name = "winapi" 2262 | version = "0.3.9" 2263 | source = "registry+https://github.com/rust-lang/crates.io-index" 2264 | dependencies = [ 2265 | "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 2266 | "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 2267 | ] 2268 | 2269 | [[package]] 2270 | name = "winapi-build" 2271 | version = "0.1.1" 2272 | source = "registry+https://github.com/rust-lang/crates.io-index" 2273 | 2274 | [[package]] 2275 | name = "winapi-i686-pc-windows-gnu" 2276 | version = "0.4.0" 2277 | source = "registry+https://github.com/rust-lang/crates.io-index" 2278 | 2279 | [[package]] 2280 | name = "winapi-util" 2281 | version = "0.1.5" 2282 | source = "registry+https://github.com/rust-lang/crates.io-index" 2283 | dependencies = [ 2284 | "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 2285 | ] 2286 | 2287 | [[package]] 2288 | name = "winapi-x86_64-pc-windows-gnu" 2289 | version = "0.4.0" 2290 | source = "registry+https://github.com/rust-lang/crates.io-index" 2291 | 2292 | [[package]] 2293 | name = "winreg" 2294 | version = "0.6.2" 2295 | source = "registry+https://github.com/rust-lang/crates.io-index" 2296 | dependencies = [ 2297 | "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 2298 | ] 2299 | 2300 | [[package]] 2301 | name = "ws2_32-sys" 2302 | version = "0.2.1" 2303 | source = "registry+https://github.com/rust-lang/crates.io-index" 2304 | dependencies = [ 2305 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 2306 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 2307 | ] 2308 | 2309 | [metadata] 2310 | "checksum actix-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9f2c11af4b06dc935d8e1b1491dad56bfb32febc49096a91e773f8535c176453" 2311 | "checksum actix-connect 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "9fade9bd4bb46bacde89f1e726c7a3dd230536092712f5d94d77ca57c087fca0" 2312 | "checksum actix-http 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "fcb50f77cd28240d344fd54afd205bae8760a3b0ad448b1716a2aa31e24db139" 2313 | "checksum actix-router 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "23224bb527e204261d0291102cb9b52713084def67d94f7874923baefe04ccf7" 2314 | "checksum actix-rt 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "88c9da1d06603d82ec2b6690fc5b80eb626cd2d6b573f3d9a71d5252e06d098e" 2315 | "checksum actix-server 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dd626534af8d0a738e5f74901fe603af0445708f91b86a7d763d80df10d562a5" 2316 | "checksum actix-server-config 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "483a34989c682d93142bacad6300375bb6ad8002d2e0bb249dbad86128b9ff30" 2317 | "checksum actix-service 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bca5b48e928841ff7e7dce1fdb5b0d4582f6b1b976e08f4bac3f640643e0773f" 2318 | "checksum actix-testing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "af001e97ac6750994824d400a1b7087055aab14317aa012f528d0b2b363f37f1" 2319 | "checksum actix-threadpool 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6b5ae85d13da7e6fb86b1b7bc83185e0e3bd4cc5f421c887e1803796c034d35d" 2320 | "checksum actix-utils 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "908c3109948f5c37a8b57fd343a37dcad5bb1d90bfd06300ac96b17bbe017b95" 2321 | "checksum actix-web 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)" = "af3a1b967cdbacb903c4b9ae71257a7f098d881b25eb483d0c468b7dac579b03" 2322 | "checksum actix-web-codegen 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "068a33520e21c1eea89726be4d6b3ce2e6b81046904367e1677287695a043abb" 2323 | "checksum addr2line 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1b6a2d3371669ab3ca9797670853d61402b03d0b4b9ebf33d677dfa720203072" 2324 | "checksum adler 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" 2325 | "checksum ahash 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "6f33b5018f120946c1dcf279194f238a9f146725593ead1c08fa47ff22b0b5d3" 2326 | "checksum aho-corasick 0.7.13 (registry+https://github.com/rust-lang/crates.io-index)" = "043164d8ba5c4c3035fec9bbee8647c0261d788f3474306f93bb65901cae0e86" 2327 | "checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" 2328 | "checksum arc-swap 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "4d25d88fd6b8041580a654f9d0c581a047baee2b3efee13275f2fc392fc75034" 2329 | "checksum atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" 2330 | "checksum autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" 2331 | "checksum autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" 2332 | "checksum awc 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "5e995283278dd3bf0449e7534e77184adb1570c0de8b6a50bf7c9d01ad8db8c4" 2333 | "checksum backtrace 0.3.51 (registry+https://github.com/rust-lang/crates.io-index)" = "ec1931848a574faa8f7c71a12ea00453ff5effbb5f51afe7f77d7a48cace6ac1" 2334 | "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" 2335 | "checksum bindgen 0.42.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e0f199ccbabf5e9f9e13a3096534e80c9ce37aee440789dafaa47190e283245c" 2336 | "checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" 2337 | "checksum brotli-sys 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4445dea95f4c2b41cde57cc9fee236ae4dbae88d8fcbdb4750fc1bb5d86aaecd" 2338 | "checksum brotli2 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0cb036c3eade309815c15ddbacec5b22c4d1f3983a774ab2eac2e3e9ea85568e" 2339 | "checksum byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" 2340 | "checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" 2341 | "checksum cc 1.0.60 (registry+https://github.com/rust-lang/crates.io-index)" = "ef611cc68ff783f18535d77ddd080185275713d852c4f5cbb6122c462a7a825c" 2342 | "checksum cexpr 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "fce5b5fb86b0c57c20c834c1b412fd09c77c8a59b9473f86272709e78874cd1d" 2343 | "checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" 2344 | "checksum chrono 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)" = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" 2345 | "checksum clang-sys 0.26.4 (registry+https://github.com/rust-lang/crates.io-index)" = "6ef0c1bcf2e99c649104bd7a7012d8f8802684400e03db0ec0af48583c6fa0e4" 2346 | "checksum clap 2.33.3 (registry+https://github.com/rust-lang/crates.io-index)" = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" 2347 | "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" 2348 | "checksum const-random 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "2f1af9ac737b2dd2d577701e59fd09ba34822f6f2ebdb30a7647405d9e55e16a" 2349 | "checksum const-random-macro 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "25e4c606eb459dd29f7c57b2e0879f2b6f14ee130918c2b78ccb58a9624e6c7a" 2350 | "checksum cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "888604f00b3db336d2af898ec3c1d5d0ddf5e6d462220f2ededc33a87ac4bbd5" 2351 | "checksum cookie_store 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "46750b3f362965f197996c4448e4a0935e791bf7d6631bfce9ee0af3d24c919c" 2352 | "checksum copyless 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a2df960f5d869b2dd8532793fde43eb5427cceb126c929747a26823ab0eeb536" 2353 | "checksum core-foundation 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" 2354 | "checksum core-foundation-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" 2355 | "checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" 2356 | "checksum crossbeam-deque 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285" 2357 | "checksum crossbeam-epoch 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" 2358 | "checksum crossbeam-queue 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570" 2359 | "checksum crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" 2360 | "checksum derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a141330240c921ec6d074a3e188a7c7ef95668bb95e7d44fa0e5778ec2a7afe" 2361 | "checksum dtoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "134951f4028bdadb9b84baf4232681efbf277da25144b9b0ad65df75946c422b" 2362 | "checksum either 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" 2363 | "checksum encoding_rs 0.8.24 (registry+https://github.com/rust-lang/crates.io-index)" = "a51b8cf747471cb9499b6d59e59b0444f4c90eba8968c4e44874e92b5b64ace2" 2364 | "checksum enum-as-inner 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3d58266c97445680766be408285e798d3401c6d4c378ec5552e78737e681e37d" 2365 | "checksum env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)" = "15b0a4d2e39f8420210be8b27eeda28029729e2fd4291019455016c348240c38" 2366 | "checksum env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "aafcde04e90a5226a6443b7aabdb016ba2f8307c847d524724bd9b346dd1a2d3" 2367 | "checksum error-chain 0.12.4 (registry+https://github.com/rust-lang/crates.io-index)" = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" 2368 | "checksum failure 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" 2369 | "checksum failure_derive 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" 2370 | "checksum flate2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)" = "da80be589a72651dcda34d8b35bcdc9b7254ad06325611074d9cc0fbb19f60ee" 2371 | "checksum fnv 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 2372 | "checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 2373 | "checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 2374 | "checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" 2375 | "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" 2376 | "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" 2377 | "checksum futures 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)" = "4c7e4c2612746b0df8fed4ce0c69156021b704c9aefa360311c04e6e9e002eed" 2378 | "checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" 2379 | "checksum getrandom 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6" 2380 | "checksum gimli 0.22.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aaf91faf136cb47367fa430cd46e37a788775e7fa104f8b4bcb3861dc389b724" 2381 | "checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" 2382 | "checksum h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)" = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462" 2383 | "checksum hashbrown 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8e6073d0ca812575946eb5f35ff68dbe519907b25c42530389ff946dc84c6ead" 2384 | "checksum hashbrown 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" 2385 | "checksum hermit-abi 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c30f6d0bc6b00693347368a67d41b58f2fb851215ff1da49e90fe2c5c667151" 2386 | "checksum hostname 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" 2387 | "checksum http 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)" = "d6ccf5ede3a895d8856620237b2f02972c1bbc78d2965ad7fe8838d4a0ed41f0" 2388 | "checksum http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d" 2389 | "checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" 2390 | "checksum humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" 2391 | "checksum hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)" = "9dbe6ed1438e1f8ad955a4701e9a944938e9519f6888d12d8558b645e247d5f6" 2392 | "checksum hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3a800d6aa50af4b5850b2b0f659625ce9504df908e9733b635720483be26174f" 2393 | "checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" 2394 | "checksum idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" 2395 | "checksum indexmap 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "55e2e4c765aa53a0424761bf9f41aa7a6ac1efa87238f59560640e27fca028f2" 2396 | "checksum iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" 2397 | "checksum ipconfig 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f7e2f18aece9709094573a9f24f483c4f65caa4298e2f7ae1b71cc65d853fad7" 2398 | "checksum itoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" 2399 | "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" 2400 | "checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" 2401 | "checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 2402 | "checksum libc 0.2.79 (registry+https://github.com/rust-lang/crates.io-index)" = "2448f6066e80e3bfc792e9c98bf705b4b0fc6e8ef5b43e5889aff0eaa9c58743" 2403 | "checksum libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753" 2404 | "checksum libnixstore-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "32d480143a684813e12aaa4f92b48a0fc190e6c73d57455057d6a5bed6869569" 2405 | "checksum linked-hash-map 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8dd5a6d5999d9907cda8ed67bbd137d3af8085216c2ac62de5be860bd41f304a" 2406 | "checksum lock_api 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75" 2407 | "checksum log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b" 2408 | "checksum lru-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" 2409 | "checksum match_cfg 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" 2410 | "checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" 2411 | "checksum maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" 2412 | "checksum memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" 2413 | "checksum memoffset 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" 2414 | "checksum mime 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)" = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" 2415 | "checksum mime_guess 2.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2684d4c2e97d99848d30b324b00c8fcc7e5c897b7cbb5819b09e7c90e8baf212" 2416 | "checksum miniz-sys 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "1e9e3ae51cea1576ceba0dde3d484d30e6e5b86dee0b2d412fe3a16a15c98202" 2417 | "checksum miniz_oxide 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c60c0dfe32c10b43a144bad8fc83538c52f58302c92300ea7ec7bf7b38d5a7b9" 2418 | "checksum mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)" = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430" 2419 | "checksum mio-uds 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)" = "afcb699eb26d4332647cc848492bbc15eafb26f08d0304550d5aa1f612e066f0" 2420 | "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" 2421 | "checksum multicast_dns 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "41c106046571f5cb3a4afd95b6850790cf4ee5d8da53fcceab862b727ccb5d99" 2422 | "checksum native-tls 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "2b0d88c06fe90d5ee94048ba40409ef1d9315d86f6f38c2efdaad4fb50c58b2d" 2423 | "checksum net2 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)" = "3ebc3ec692ed7c9a255596c67808dee269f64655d8baf7b4f0638e51ba1d6853" 2424 | "checksum nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" 2425 | "checksum num-integer 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "8d59457e662d541ba17869cf51cf177c0b5f0cbf476c66bdc90bf1edac4f875b" 2426 | "checksum num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)" = "ac267bcc07f48ee5f8935ab0d24f316fb722d7a1292e2913f0cc196b29ffd611" 2427 | "checksum num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" 2428 | "checksum object 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1ab52be62400ca80aa00285d25253d7f7c437b7375c4de678f5405d3afe82ca5" 2429 | "checksum openssl 0.10.30 (registry+https://github.com/rust-lang/crates.io-index)" = "8d575eff3665419f9b83678ff2815858ad9d11567e082f5ac1814baba4e2bcb4" 2430 | "checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" 2431 | "checksum openssl-sys 0.9.58 (registry+https://github.com/rust-lang/crates.io-index)" = "a842db4709b604f0fe5d1170ae3565899be2ad3d9cbc72dedc789ac0511f78de" 2432 | "checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" 2433 | "checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" 2434 | "checksum peeking_take_while 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" 2435 | "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" 2436 | "checksum percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" 2437 | "checksum pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)" = "d36492546b6af1463394d46f0c834346f31548646f6ba10849802c9c9a27ac33" 2438 | "checksum ppv-lite86 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c36fa947111f5c62a733b652544dd0016a43ce89619538a8ef92724a6f501a20" 2439 | "checksum proc-macro-hack 0.5.18 (registry+https://github.com/rust-lang/crates.io-index)" = "99c605b9a0adc77b7211c6b1f722dcb613d68d66859a44f3d485a6da332b0598" 2440 | "checksum proc-macro2 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "77997c53ae6edd6d187fec07ec41b207063b5ee6f33680e9fa86d405cdd313d4" 2441 | "checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" 2442 | "checksum proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)" = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" 2443 | "checksum publicsuffix 1.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3bbaa49075179162b49acac1c6aa45fb4dafb5f13cf6794276d77bc7fd95757b" 2444 | "checksum quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" 2445 | "checksum quote 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9949cfe66888ffe1d53e6ec9d9f3b70714083854be20fd5e271b232a017401e8" 2446 | "checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" 2447 | "checksum quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" 2448 | "checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" 2449 | "checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" 2450 | "checksum rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" 2451 | "checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" 2452 | "checksum rand_chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" 2453 | "checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" 2454 | "checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" 2455 | "checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" 2456 | "checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" 2457 | "checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" 2458 | "checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" 2459 | "checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" 2460 | "checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" 2461 | "checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" 2462 | "checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" 2463 | "checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" 2464 | "checksum redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)" = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" 2465 | "checksum regex 1.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3780fcf44b193bc4d09f36d2a3c87b251da4a046c87795a0d35f4f927ad8e6" 2466 | "checksum regex-syntax 0.6.18 (registry+https://github.com/rust-lang/crates.io-index)" = "26412eb97c6b088a6997e05f69403a802a92d520de2f8e63c2b65f9e0f47c4e8" 2467 | "checksum remove_dir_all 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" 2468 | "checksum reqwest 0.9.24 (registry+https://github.com/rust-lang/crates.io-index)" = "f88643aea3c1343c804950d7bf983bd2067f5ab59db6d613a08e05572f2714ab" 2469 | "checksum resolv-conf 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "11834e137f3b14e309437a8276714eed3a80d1ef894869e510f2c0c0b98b9f4a" 2470 | "checksum ring 0.14.6 (registry+https://github.com/rust-lang/crates.io-index)" = "426bc186e3e95cac1e4a4be125a4aca7e84c2d616ffc02244eef36e2a60a093c" 2471 | "checksum rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" 2472 | "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" 2473 | "checksum rustls 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f271e3552cd835fa28c541c34a7e8fdd8cdff09d77fe4eb8f6c42e87a11b096e" 2474 | "checksum ryu 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" 2475 | "checksum schannel 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)" = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" 2476 | "checksum scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" 2477 | "checksum sct 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2f5adf8fbd58e1b1b52699dc8bed2630faecb6d8c7bee77d009d6bbe4af569b9" 2478 | "checksum security-framework 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "64808902d7d99f78eaddd2b4e2509713babc3dc3c85ad6f4c447680f3c01e535" 2479 | "checksum security-framework-sys 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "17bf11d99252f512695eb468de5516e5cf75455521e69dfe343f3b74e4748405" 2480 | "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" 2481 | "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" 2482 | "checksum serde 1.0.116 (registry+https://github.com/rust-lang/crates.io-index)" = "96fe57af81d28386a513cbc6858332abc6117cfdb5999647c6444b8f43a370a5" 2483 | "checksum serde_derive 1.0.116 (registry+https://github.com/rust-lang/crates.io-index)" = "f630a6370fd8e457873b4bd2ffdae75408bc291ba72be773772a4c2a065d9ae8" 2484 | "checksum serde_json 1.0.58 (registry+https://github.com/rust-lang/crates.io-index)" = "a230ea9107ca2220eea9d46de97eddcb04cd00e92d13dda78e478dd33fa82bd4" 2485 | "checksum serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "642dd69105886af2efd227f75a520ec9b44a820d65bc133a9131f7d229fd165a" 2486 | "checksum serde_urlencoded 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9ec5d77e2d4c73717816afac02670d5c4f534ea95ed430442cad02e7a6e32c97" 2487 | "checksum sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" 2488 | "checksum signal-hook-registry 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a3e12110bc539e657a646068aaf5eb5b63af9d0c1f7b29c97113fad80e15f035" 2489 | "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" 2490 | "checksum smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" 2491 | "checksum socket2 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "b1fa70dc5c8104ec096f4fe7ede7a221d35ae13dcd19ba1ad9a81d2cab9a1c44" 2492 | "checksum spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" 2493 | "checksum string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" 2494 | "checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" 2495 | "checksum syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" 2496 | "checksum syn 1.0.42 (registry+https://github.com/rust-lang/crates.io-index)" = "9c51d92969d209b54a98397e1b91c8ae82d8c87a7bb87df0b29aa2ad81454228" 2497 | "checksum synstructure 0.12.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701" 2498 | "checksum tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8" 2499 | "checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" 2500 | "checksum termcolor 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f" 2501 | "checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" 2502 | "checksum thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" 2503 | "checksum threadpool 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" 2504 | "checksum time 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)" = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" 2505 | "checksum tinyvec 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "238ce071d267c5710f9d31451efec16c5ee22de34df17cc05e56cbc92e967117" 2506 | "checksum tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" 2507 | "checksum tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46" 2508 | "checksum tokio-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "25b2998660ba0e70d18684de5d06b70b70a3a747469af9dea7618cc59e75976b" 2509 | "checksum tokio-current-thread 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b1de0e32a83f131e002238d7ccde18211c0a5397f60cbfffcb112868c2e0e20e" 2510 | "checksum tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671" 2511 | "checksum tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" 2512 | "checksum tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351" 2513 | "checksum tokio-rustls 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)" = "95a199832a67452c60bed18ed951d28d5755ff57b02b3d2d535d9f13a81ea6c9" 2514 | "checksum tokio-signal 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "d0c34c6e548f101053321cba3da7cbb87a610b85555884c41b07da2eb91aff12" 2515 | "checksum tokio-sync 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "edfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87dee" 2516 | "checksum tokio-tcp 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "98df18ed66e3b72e742f185882a9e201892407957e45fbff8da17ae7a7c51f72" 2517 | "checksum tokio-threadpool 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "df720b6581784c118f0eb4310796b12b1d242a7eb95f716a8367855325c25f89" 2518 | "checksum tokio-timer 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296" 2519 | "checksum tokio-udp 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "e2a0b10e610b39c38b031a2fcab08e4b82f16ece36504988dcbd81dbba650d82" 2520 | "checksum trust-dns-proto 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5559ebdf6c2368ddd11e20b11d6bbaf9e46deb803acd7815e93f5a7b4a6d2901" 2521 | "checksum trust-dns-resolver 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6c9992e58dba365798803c0b91018ff6c8d3fc77e06977c4539af2a6bfe0a039" 2522 | "checksum try-lock 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" 2523 | "checksum try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "283d3b89e1368717881a9d51dad843cc435380d8109c9e47d38780a324698d8b" 2524 | "checksum unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" 2525 | "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" 2526 | "checksum unicode-normalization 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6fb19cf769fa8c6a80a162df694621ebeb4dafb606470b2b2fce0be40a98a977" 2527 | "checksum unicode-width 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" 2528 | "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" 2529 | "checksum unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" 2530 | "checksum untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "55cd1f4b4e96b46aeb8d4855db4a7a9bd96eeeb5c6a1ab54593328761642ce2f" 2531 | "checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" 2532 | "checksum url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb" 2533 | "checksum uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a" 2534 | "checksum vcpkg 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "6454029bf181f092ad1b853286f23e2c507d8e8194d01d92da4a55c274a5508c" 2535 | "checksum vec_map 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" 2536 | "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" 2537 | "checksum version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" 2538 | "checksum want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" 2539 | "checksum wasi 0.10.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)" = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" 2540 | "checksum wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)" = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" 2541 | "checksum webpki 0.19.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4f7e1cd7900a3a6b65a3e8780c51a3e6b59c0e2c55c6dc69578c288d69f7d082" 2542 | "checksum webpki-roots 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c10fa4212003ba19a564f25cd8ab572c6791f99a03cc219c13ed35ccab00de0e" 2543 | "checksum which 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e84a603e7e0b1ce1aa1ee2b109c7be00155ce52df5081590d1ffb93f4f515cb2" 2544 | "checksum widestring 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c168940144dd21fd8046987c16a46a33d5fc84eec29ef9dcddc2ac9e31526b7c" 2545 | "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" 2546 | "checksum winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 2547 | "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" 2548 | "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 2549 | "checksum winapi-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" 2550 | "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 2551 | "checksum winreg 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9" 2552 | "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" 2553 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "local-nix-cache" 3 | version = "0.1.0" 4 | authors = ["Andreas Rammhold "] 5 | edition = "2018" 6 | 7 | [dependencies] 8 | clap = "2.33" 9 | tempdir = "0.3" 10 | reqwest = "0.9" 11 | env_logger = "0.6" 12 | futures = "0.1.29" # An implementation of futures and streams featuring zero allocations, composability, a… 13 | bytes = "0.4" 14 | multicast_dns = "0.5.0" 15 | 16 | [dependencies.actix-web] 17 | version = "1.0" 18 | default-features = false 19 | features = [ "brotli", "client", "fail", "rust-tls" ] 20 | 21 | [dependencies.libnixstore-sys] 22 | version = "0.1.0" 23 | # path = "../libnixstore-sys" 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Local Nix Cache 2 | 3 | This project tries to solve a common issue amongst people on low bandwidth 4 | internet connections: Sharing binaries between different NixOS systems without 5 | requiring an extended amount of trust to the local peers. 6 | 7 | The primary idea is to re-serve the contents of the local Nix store in a format 8 | that is compatible with the signatures of cache.nixos.org. There is no 9 | additional trust setup required. As long you trust the signing key of hydra you 10 | can just use anyones NAR files. 11 | 12 | Ideally we could just use IPFS but we aren't quiet there yet. 13 | 14 | 15 | # How do I use this? 16 | 17 | 0. Choose a machine to serve the cache from (called `server` from now on). It 18 | is useful to use a machine with a larger set of paths in the store or a 19 | machine that usually updates first. 20 | 1. Install the `local-nix-cache` daemon via the module from the `module.nix` 21 | (or your own) on the server. 22 | 2. On all the machines that should make a use of the paths that might already 23 | be present on the `server` add the server to `nix.binaryCaches`. 24 | e.g. `nix.binaryCaches = [ "http://server:8083" "https://cache.nixos.org" ];` 25 | 3. Run a build on a machine that isn't the server and you should see it 26 | downloading all the paths that are alreayd downloaded to the server from 27 | there. All the others will be retrieved from hydra as usual. 28 | 29 | # Use cases 30 | 31 | **Note**: Not all of them a properly covered. Local discovery is pretty 32 | important to be really useful. 33 | 34 | In general all situations where internet bandwidth or volume is a concern. E.g. 35 | slow links, high latencies, metered connections, …. 36 | 37 | Some situations where this might come in handy are: 38 | 39 | - a bunch of machines with an overlapping set of packages 40 | downloading the same files. 41 | 42 | - a group of Nix(OS) users sharing an internet connection that falls in one of 43 | the previous categories. Conferences, Workshops, Co-worker in a shared office 44 | space. 45 | 46 | (Offline scenarios are not (yet) supported. Hopefully some day.) 47 | 48 | # Requirements 49 | 50 | At the present time it requires a patched Nix daemon to be running on the 51 | machine that serves it's nix store contents. The changes to vanilla Nix are 52 | very simple and expose another Operation via the store interface. The patch is 53 | available at https://github.com/andir/nix/tree/queryPathFromFileHash. 54 | 55 | You can override the local Nix store in `configuration.nix` via: 56 | 57 | ```nix 58 | { pkgs, config, ...}: { 59 | nix.package = pkgs.nixUnstable.overrideAttrs (_: { 60 | src = pkgs.fetchFromGitHub { 61 | owner = "andir"; 62 | repo = "nix"; 63 | rev = "3aefaac46e4833b029555242f90d37f0df80f02f"; 64 | sha256 = "0aq0k4kyjcml5dgbhgzf0iv2wl2psy650w80g1d33pnzzv6gcdsr"; 65 | }; 66 | }); 67 | } 68 | ``` 69 | 70 | # How Can I use it? 71 | 72 | ```nix 73 | { config, pkgs, lib, ... }: 74 | let 75 | local-nix-cache = import ((import {}).fetchFromGitHub { 76 | owner = "andir"; 77 | repo = "local-nix-cache"; 78 | rev = "be2d3ea9d8da586647540c164805730d2d34a556"; 79 | sha256 = "1fdj2b7bz0gxdbbdc29x46ivlj8fkvg08w6jiya9xwqkr6gpv2ai"; 80 | }) {}; 81 | in 82 | { 83 | imports = [ 84 | (local-nix-cache.path + "/module.nix") 85 | ]; 86 | 87 | local-nix-cache = { 88 | server.enable = true; 89 | client.enable = true; 90 | }; 91 | networking.firewall.allowedTCPPorts = [ config.local-nix-cache.server.port ]; 92 | 93 | systemd.services.local-nix-cache.path = [ local-nix-cache.nix ]; 94 | 95 | services.avahi.enable = true; 96 | services.avahi.publish.enable = true; 97 | services.avahi.publish.userServices = true; 98 | 99 | } 100 | ``` 101 | 102 | # Related work 103 | 104 | To make this work I needed rust bindings to Nix which in turn required some 105 | stable-ish C bindings. 106 | 107 | - [libnixstore-c](https://github.com/andir/libnixstore-c) - the C library to 108 | Nix. Exposing a very limited set of features. 109 | - [libnixstore-sys](https://github.com/andir/libnixstore-sys) - Rust bindings 110 | to the above C library. 111 | -------------------------------------------------------------------------------- /default.nix: -------------------------------------------------------------------------------- 1 | { pkgsSrc ? ./nix}: 2 | let 3 | pkgs = import pkgsSrc {}; 4 | 5 | in { 6 | pkg = (pkgs.callPackage ./nix/Cargo.nix {}).rootCrate.build; 7 | inherit (pkgs) nix; 8 | path = ./.; 9 | shell = pkgs.mkShell { 10 | nativeBuildInputs = with pkgs; [ crate2nix niv ]; 11 | buildInputs = with pkgs; [ 12 | sqlite 13 | openssl 14 | pkgconfig 15 | libnixstore-c 16 | avahi 17 | dbus 18 | nix-prefetch-git 19 | ]; 20 | shellHook = '' 21 | export LIBCLANG_PATH=${pkgs.llvmPackages.clang-unwrapped.lib}/lib 22 | ''; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /module.nix: -------------------------------------------------------------------------------- 1 | { lib, config, pkgs, ... }: 2 | let 3 | cfg = config.local-nix-cache; 4 | drvs = import ./default.nix { /* pkgsSrc = pkgs.path; */ }; 5 | in 6 | with lib; { 7 | 8 | options.local-nix-cache = { 9 | server = { 10 | enable = mkEnableOption "enable the local nix serve service"; 11 | address = mkOption { 12 | default = "localhost"; 13 | type = types.str; 14 | description = '' 15 | The addresses to listen on. 16 | ''; 17 | }; 18 | port = mkOption { 19 | default = 8083; 20 | type = types.port; 21 | description = '' 22 | The HTTP port to listen on. 23 | ''; 24 | }; 25 | }; 26 | client = { 27 | enable = mkEnableOption "Use the specified 'local' cache in addition to the other substituters that you configured."; 28 | substituter = mkOption { 29 | default = "http://localhost:${toString cfg.server.port}/avahi/"; 30 | type = types.str; 31 | description = '' 32 | the url of the local substituter to use 33 | ''; 34 | }; 35 | }; 36 | }; 37 | 38 | config = mkIf (cfg.server.enable || cfg.client.enable) { 39 | nix.binaryCaches = mkIf cfg.client.enable (mkBefore [ cfg.client.substituter ]); 40 | nix.package = mkIf cfg.server.enable (mkForce drvs.nix); 41 | systemd.services."local-nix-cache" = mkIf cfg.server.enable { 42 | wantedBy = [ "multi-user.target" ]; 43 | path = [ 44 | drvs.pkg 45 | ]; 46 | script = '' 47 | local-nix-cache --port ${toString cfg.server.port} 48 | ''; 49 | }; 50 | }; 51 | } 52 | -------------------------------------------------------------------------------- /nix/crate-overrides.nix: -------------------------------------------------------------------------------- 1 | { pkgs }: 2 | { 3 | actix-web = attrs: { 4 | features = []; 5 | }; 6 | 7 | bzip2-sys = attrs: { 8 | buildInputs = [ pkgs.bzip2 ]; 9 | propagatedBuildInputs = [ pkgs.bzip2 ]; 10 | extraLinkFlags = [ "-L${pkgs.bzip2.out}/lib" ]; 11 | }; 12 | 13 | libnixstore-sys = attrs: { 14 | propagatedBuildInputs = [ pkgs.libnixstore-c ]; 15 | buildInputs = [ pkgs.libnixstore-c ]; 16 | nativeBuildInputs = [ pkgs.pkgconfig ]; 17 | LIBCLANG_PATH= "${pkgs.llvmPackages.clang-unwrapped.lib}/lib"; 18 | EXTRA_INCLUDE = "${pkgs.stdenv.cc.libc_dev}/include"; 19 | }; 20 | 21 | multicast_dns = attrs: { 22 | nativeBuildInputs = [ pkgs.pkgconfig ]; 23 | buildInputs = [ pkgs.avahi pkgs.dbus ]; 24 | }; 25 | 26 | local-nix-cache = attrs: { 27 | buildInputs = [ pkgs.libnixstore-c pkgs.avahi pkgs.dbus ]; 28 | # extraLinkFlags = [ "-L${pkgs.bzip2}/lib" "-lbz2"]; 29 | }; 30 | 31 | } 32 | -------------------------------------------------------------------------------- /nix/default.nix: -------------------------------------------------------------------------------- 1 | { ... }@args: 2 | let 3 | sources = import ./sources.nix; 4 | 5 | pkgs = import sources.nixpkgs ({ 6 | overlays = [ 7 | (_: _: { inherit (import sources.niv {}) niv; }) 8 | (_: super: { crate2nix = super.callPackage sources.crate2nix {}; }) 9 | (self: super: { 10 | libnixstore-c = super.callPackage (super.fetchFromGitHub { 11 | owner = "andir"; 12 | repo = "libnixstore-c"; 13 | rev = "b0b1bc6da463c5c65dc1335e44dd60b98a65134d"; 14 | sha256 = "1nllgp0a66av6ji4irfw4ir414lrlx3v725jxyqxwx8krkcch1j5"; 15 | }) {}; 16 | nix = self.libnixstore-c.nix; 17 | }) 18 | (_: super: { 19 | defaultCrateOverrides = super.defaultCrateOverrides // (super.callPackage ./crate-overrides.nix {}); 20 | }) 21 | 22 | ]; 23 | }//args); 24 | in pkgs 25 | -------------------------------------------------------------------------------- /nix/sources.json: -------------------------------------------------------------------------------- 1 | { 2 | "crate2nix": { 3 | "branch": "master", 4 | "description": "nix build file generator for rust crates", 5 | "homepage": "", 6 | "owner": "kolloch", 7 | "repo": "crate2nix", 8 | "rev": "e07af104b8e41d1cd7e41dc7ac3fdcdf4953efae", 9 | "sha256": "07syygn1rc5n1big7hf42pzgm5wc1r0mzglzvlbcb7rkzgqqhbqx", 10 | "type": "tarball", 11 | "url": "https://github.com/kolloch/crate2nix/archive/e07af104b8e41d1cd7e41dc7ac3fdcdf4953efae.tar.gz", 12 | "url_template": "https://github.com///archive/.tar.gz" 13 | }, 14 | "niv": { 15 | "branch": "master", 16 | "description": "Easy dependency management for Nix projects", 17 | "homepage": "https://github.com/nmattia/niv", 18 | "owner": "nmattia", 19 | "repo": "niv", 20 | "rev": "9d35b9e4837ab88517210b1701127612c260eccf", 21 | "sha256": "0q50xhnm8g2yfyakrh0nly4swyygxpi0a8cb9gp65wcakcgvzvdh", 22 | "type": "tarball", 23 | "url": "https://github.com/nmattia/niv/archive/9d35b9e4837ab88517210b1701127612c260eccf.tar.gz", 24 | "url_template": "https://github.com///archive/.tar.gz" 25 | }, 26 | "nixpkgs": { 27 | "branch": "nixos-unstable", 28 | "description": "A read-only mirror of NixOS/nixpkgs tracking the released channels. Send issues and PRs to", 29 | "homepage": "https://github.com/NixOS/nixpkgs", 30 | "owner": "nixos", 31 | "repo": "nixpkgs", 32 | "rev": "84d74ae9c9cbed73274b8e4e00be14688ffc93fe", 33 | "sha256": "0ww70kl08rpcsxb9xdx8m48vz41dpss4hh3vvsmswll35l158x0v", 34 | "type": "tarball", 35 | "url": "https://github.com/nixos/nixpkgs/archive/84d74ae9c9cbed73274b8e4e00be14688ffc93fe.tar.gz", 36 | "url_template": "https://github.com///archive/.tar.gz" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /nix/sources.nix: -------------------------------------------------------------------------------- 1 | # This file has been generated by Niv. 2 | 3 | # A record, from name to path, of the third-party packages 4 | with rec 5 | { 6 | pkgs = 7 | if hasNixpkgsPath 8 | then 9 | if hasThisAsNixpkgsPath 10 | then import (builtins_fetchTarball { inherit (sources_nixpkgs) url sha256; }) {} 11 | else import {} 12 | else 13 | import (builtins_fetchTarball { inherit (sources_nixpkgs) url sha256; }) {}; 14 | 15 | sources_nixpkgs = 16 | if builtins.hasAttr "nixpkgs" sources 17 | then sources.nixpkgs 18 | else abort 19 | '' 20 | Please specify either (through -I or NIX_PATH=nixpkgs=...) or 21 | add a package called "nixpkgs" to your sources.json. 22 | ''; 23 | 24 | # fetchTarball version that is compatible between all the versions of Nix 25 | builtins_fetchTarball = 26 | { url, sha256 }@attrs: 27 | let 28 | inherit (builtins) lessThan nixVersion fetchTarball; 29 | in 30 | if lessThan nixVersion "1.12" then 31 | fetchTarball { inherit url; } 32 | else 33 | fetchTarball attrs; 34 | 35 | # fetchurl version that is compatible between all the versions of Nix 36 | builtins_fetchurl = 37 | { url, sha256 }@attrs: 38 | let 39 | inherit (builtins) lessThan nixVersion fetchurl; 40 | in 41 | if lessThan nixVersion "1.12" then 42 | fetchurl { inherit url; } 43 | else 44 | fetchurl attrs; 45 | 46 | # A wrapper around pkgs.fetchzip that has inspectable arguments, 47 | # annoyingly this means we have to specify them 48 | fetchzip = { url, sha256 }@attrs: pkgs.fetchzip attrs; 49 | 50 | hasNixpkgsPath = (builtins.tryEval ).success; 51 | hasThisAsNixpkgsPath = 52 | (builtins.tryEval ).success && == ./.; 53 | 54 | sources = builtins.fromJSON (builtins.readFile ./sources.json); 55 | 56 | mapAttrs = builtins.mapAttrs or 57 | (f: set: with builtins; 58 | listToAttrs (map (attr: { name = attr; value = f attr set.${attr}; }) (attrNames set))); 59 | 60 | # borrowed from nixpkgs 61 | functionArgs = f: f.__functionArgs or (builtins.functionArgs f); 62 | callFunctionWith = autoArgs: f: args: 63 | let auto = builtins.intersectAttrs (functionArgs f) autoArgs; 64 | in f (auto // args); 65 | 66 | getFetcher = spec: 67 | let fetcherName = 68 | if builtins.hasAttr "type" spec 69 | then builtins.getAttr "type" spec 70 | else "builtin-tarball"; 71 | in builtins.getAttr fetcherName { 72 | "tarball" = fetchzip; 73 | "builtin-tarball" = builtins_fetchTarball; 74 | "file" = pkgs.fetchurl; 75 | "builtin-url" = builtins_fetchurl; 76 | }; 77 | }; 78 | # NOTE: spec must _not_ have an "outPath" attribute 79 | mapAttrs (_: spec: 80 | if builtins.hasAttr "outPath" spec 81 | then abort 82 | "The values in sources.json should not have an 'outPath' attribute" 83 | else 84 | if builtins.hasAttr "url" spec && builtins.hasAttr "sha256" spec 85 | then 86 | spec // 87 | { outPath = callFunctionWith spec (getFetcher spec) { }; } 88 | else spec 89 | ) sources 90 | -------------------------------------------------------------------------------- /pkgs.nix: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shell.nix: -------------------------------------------------------------------------------- 1 | (import ./default.nix {}).shell 2 | -------------------------------------------------------------------------------- /src/avahi.rs: -------------------------------------------------------------------------------- 1 | use crate::util; 2 | use futures::future::{err, Future}; 3 | use multicast_dns::discovery::*; 4 | use reqwest::r#async::{Client, Response}; 5 | use std::collections::HashSet; 6 | use std::hash::{Hash, Hasher}; 7 | use std::sync::{Arc, RwLock}; 8 | use std::time::{SystemTime, UNIX_EPOCH}; 9 | 10 | #[derive(Debug)] 11 | pub enum Error { 12 | LockError, 13 | } 14 | 15 | struct AvahiHost { 16 | addr: String, 17 | port: u16, 18 | last_seen: u128, 19 | } 20 | 21 | impl AvahiHost { 22 | fn new(addr: String, port: u16) -> AvahiHost { 23 | let now = SystemTime::now().duration_since(UNIX_EPOCH).unwrap(); 24 | AvahiHost { 25 | addr, 26 | port, 27 | last_seen: now.as_millis(), 28 | } 29 | } 30 | } 31 | 32 | impl Hash for AvahiHost { 33 | fn hash(&self, state: &mut H) { 34 | self.addr.hash(state); 35 | self.port.hash(state); 36 | } 37 | } 38 | 39 | impl std::cmp::PartialEq for AvahiHost { 40 | fn eq(&self, other: &Self) -> bool { 41 | self.addr == other.addr && self.port == other.port 42 | } 43 | } 44 | impl std::cmp::Eq for AvahiHost {} 45 | 46 | #[derive(Debug)] 47 | pub struct AvahiDiscovery { 48 | hosts: RwLock>, 49 | } 50 | 51 | impl AvahiDiscovery { 52 | pub fn new() -> Self { 53 | AvahiDiscovery { 54 | hosts: RwLock::new(Vec::new()), 55 | } 56 | } 57 | 58 | pub fn get_hosts(&self) -> Vec<(String, u16)> { 59 | let hosts = self.hosts.read().expect("RwLock poisoned"); 60 | hosts.clone() 61 | } 62 | 63 | pub fn run(&self) { 64 | let seen_hosts: RwLock> = RwLock::new(HashSet::new()); 65 | 66 | let update_hosts = || { 67 | let now = SystemTime::now() 68 | .duration_since(UNIX_EPOCH) 69 | .unwrap() 70 | .as_millis(); 71 | let seen_hosts = seen_hosts.read().expect("RwLock poisoned"); 72 | let hosts: Vec<_> = seen_hosts 73 | .iter() 74 | .filter_map(|v| { 75 | if now - v.last_seen < 120_000 { 76 | Some((v.addr.clone(), v.port)) 77 | } else { 78 | None 79 | } 80 | }) 81 | .collect(); 82 | println!("Hosts: {:?}", hosts); 83 | let mut hs = self.hosts.write().expect("RwLock poisoned"); 84 | *hs = hosts; 85 | }; 86 | 87 | loop { 88 | let manager = Arc::new(DiscoveryManager::new()); 89 | 90 | let wg = util::WaitGroup::new_arc(); 91 | 92 | println!("Searching for avahi nixcaches"); 93 | let wg_done = wg.clone(); 94 | let on_service_resolved = |service: ServiceInfo| { 95 | println!("resolved: {:?}", service); 96 | if let Some(a) = service.address.clone() { 97 | { 98 | let mut seen_hosts = seen_hosts.write().expect("RwLock poisoned"); 99 | let host = AvahiHost::new(a, service.port); 100 | seen_hosts.replace(host); 101 | } 102 | 103 | update_hosts(); 104 | } 105 | }; 106 | 107 | let wg_new = wg.clone(); 108 | let on_service_discovered = { 109 | let manager = manager.clone(); 110 | move |service: ServiceInfo| { 111 | let resolve_listeners = ResolveListeners { 112 | on_service_resolved: Some(&on_service_resolved), 113 | }; 114 | println!("discovered: {:?}", service); 115 | wg_new.increment(); 116 | manager.resolve_service(service, resolve_listeners); 117 | wg_done.decrement(); 118 | } 119 | }; 120 | 121 | let on_all_discovered = || { 122 | println!("All discovered"); 123 | manager.stop_service_discovery(); 124 | }; 125 | 126 | let discovery_listeners = DiscoveryListeners { 127 | on_service_discovered: Some(&on_service_discovered), 128 | on_all_discovered: Some(&on_all_discovered), 129 | }; 130 | 131 | manager 132 | .discover_services("_nixcache._tcp", discovery_listeners) 133 | .unwrap(); 134 | 135 | println!("Waiting for all tasks to finish"); 136 | wg.wait(); 137 | 138 | drop(manager); 139 | 140 | let duration = std::time::Duration::from_millis(15_000); 141 | println!("Sleeping for {:?}", duration); 142 | std::thread::sleep(duration); 143 | } 144 | } 145 | } 146 | 147 | #[derive(Debug)] 148 | pub enum AvahiRetrievalError { 149 | Exhausted, 150 | ReqwestError(reqwest::Error), 151 | RetrievalError(util::RetrievalError), 152 | } 153 | 154 | pub fn try_retrieve( 155 | client: Client, 156 | path: String, 157 | hosts: Vec<(String, u16)>, 158 | ) -> Box> { 159 | if let Some(((host, port), hosts)) = hosts.split_first() { 160 | let hosts = hosts.to_vec(); 161 | let url = format!("http://{}:{}/{}", host, port, path); 162 | println!("trying: {}", url); 163 | 164 | let chain = client 165 | .get(&url) 166 | .send() 167 | .map_err(AvahiRetrievalError::ReqwestError) 168 | .and_then(|r| util::stream200_or_err(r).map_err(AvahiRetrievalError::RetrievalError)) 169 | .map(|(sh, r)| { 170 | println!("sh: {:?}", sh); 171 | (sh, r) 172 | }) 173 | .or_else(|r| { 174 | println!("failed to retrieve from host: {:?}", r); 175 | try_retrieve(client, path, hosts) 176 | }); 177 | Box::new(chain) 178 | } else { 179 | Box::new(err(AvahiRetrievalError::Exhausted)) 180 | } 181 | } 182 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | extern crate libnixstore_sys; 2 | extern crate multicast_dns; 3 | 4 | mod avahi; 5 | mod narinfo; 6 | mod state; 7 | mod util; 8 | mod web; 9 | 10 | fn main() { 11 | use clap::{App, Arg}; 12 | env_logger::init(); 13 | std::env::set_var("RUST_LOG", "actix_web=info"); 14 | let matches = App::new("Nix-Local-Cache-Serve-Narinfo") 15 | .version("1.0") 16 | .author("Andreas Rammhold ") 17 | .about("Serves narinfo files present in the local nix store. Only serves those files that were downloaded from the official hydra. No private builds should be leaked.") 18 | .arg(Arg::with_name("port") 19 | .long("port") 20 | .help("The port to listen on for incoming HTTP connections.") 21 | .default_value("8380")) 22 | .get_matches(); 23 | 24 | let port = matches 25 | .value_of("port") 26 | .expect("Missing the port to listen on.") 27 | .parse::() 28 | .expect("Invalid port (not numeric)"); 29 | println!("Running on port: {}", port); 30 | 31 | web::serve(port).unwrap(); 32 | } 33 | -------------------------------------------------------------------------------- /src/narinfo.rs: -------------------------------------------------------------------------------- 1 | /* 2 | StorePath: /nix/store/8aijxqjfzwysvx4d4ydank0kax2z4mz2-systemd-239.20190219 3 | URL: nar/00ba0gdz2jgzj7azm5ggycmkn9f02b871l4v01zggqhcjvdgdin3.nar.xz 4 | Compression: xz 5 | FileHash: sha256:00ba0gdz2jgzj7azm5ggycmkn9f02b871l4v01zggqhcjvdgdin3 6 | FileSize: 4030068 7 | NarHash: sha256:1hgm1k2hkn5mcq6pndycwxxhw0my6sk7brbsxp6axvwj2bm1rwpp 8 | NarSize: 21544632 9 | References: 39v133j0yzybc8bqs7zqdp98y6kp6gsv-libapparmor-2.12.0 4fayzafn5gmsv08zf71azwpyrdihlh34-kmod-25 4j8iyd154cyid79wjq409a538py853vd-util-linux-2.32.1-bin 68z2cvbzws1pn0z8dhgfkmws75r2z7gm-coreutils-8.29 7gx4kiv5m0i7d7qkixq2cwzbr10lvxwc-glibc-2.27 8aijxqjfzwysvx4d4ydank0kax2z4mz2-systemd-239.20190219 8j13mdddcpk924npkifr3hbsfq56xw4r-lz4-1.8.3 9s9g5gv27k3j8y6mjvlv60q59n3mfqgc-util-linux-2.32.1 ah8z1r2iim5dz9gzg530xihjh6417shq-xz-5.2.4 b9p787yqaqi313l9rr0491igjwyzqfmw-bash-4.4-p23 dmb9jil2qwhyd1bscrcnmg4kahriqhf2-libgpg-error-1.28 fyyxw96k5g2b7zh8lqvl4y4786hv4c96-libidn2-2.0.5 ij3j1wirsgbqc7yw5j1d23m89kjfczkm-systemd-239.20190219-lib j6zw24ky002abm3k1sdpmzzmbg3lsxqr-iptables-1.6.2 jx6rh0192a90db75niyhbm9cvpl6rrwl-audit-2.8.4 m22l6qg6yj9abds5bipk04290igb1j3i-libgcrypt-1.8.3 m32jma185w7ib8x7y8gz250i56sbmi32-pcre2-10.31 mdjsx29y76nbbjchsldbr8a9ip9mwjrn-libcap-2.25-lib nz0rzym6lydlhgkdckxpzl9phzwvzzzb-kbd-2.0.4 rb2z41k2rnq7abzklsbi457wd3hg242y-acl-2.2.52 x882sqlwz9z519jrarhr6vk4i7rf5q48-kexec-tools-2.0.17 y0d2h6csi3ai7b2a3nkx7m8nq10i0hk1-libseccomp-2.3.3-lib zhi6gr8ndcys2d1lpsav5w50wyamfjz4-linux-pam-1.3.0 zsv2w891mi8d5xi8g92vprc0qm0w0p4w-libmicrohttpd-0.9.59 10 | Deriver: xv6m5s410dqh28nn9avd3fh08mw26khc-systemd-239.20190219.drv 11 | Sig: cache.nixos.org-1:Ub8INk3OBTOuYTbqcGuR5JOBCm9FzCJyzLcpxFxnbL+LjdV7d+G/rwiAC3iETXG+/DMX0MiQK/4+frY5R+z8CA== 12 | */ 13 | 14 | #[derive(Default, Clone, Debug)] 15 | pub struct NARInfo { 16 | pub store_path: String, 17 | pub url: String, 18 | pub compression: String, 19 | pub file_hash: String, 20 | pub file_size: isize, 21 | pub nar_hash: String, 22 | pub nar_size: isize, 23 | pub references: String, 24 | pub deriver: String, 25 | pub sig: String, 26 | } 27 | 28 | impl NARInfo { 29 | pub fn format_with_compression(&self, compression: &str) -> String { 30 | use std::fmt::Write; 31 | let mut info = "".to_owned(); 32 | write!(info, "StorePath: {}\n", self.store_path).unwrap(); 33 | write!(info, "URL: {}\n", self.url).unwrap(); 34 | write!(info, "Compression: {}\n", compression); 35 | write!(info, "NarHash: {}\n", self.nar_hash).unwrap(); 36 | write!(info, "NarSize: {}\n", self.nar_size).unwrap(); 37 | write!(info, "FileHash: {}\n", self.file_hash).unwrap(); 38 | write!(info, "FileSize: {}\n", self.file_size).unwrap(); 39 | write!(info, "References: {}\n", self.references).unwrap(); 40 | write!(info, "Deriver: {}\n", self.deriver).unwrap(); 41 | write!(info, "Sig: {}\n", self.sig).unwrap(); 42 | info 43 | } 44 | } 45 | 46 | impl std::string::ToString for NARInfo { 47 | fn to_string(&self) -> String { 48 | self.format_with_compression(&self.compression) 49 | } 50 | } 51 | 52 | impl NARInfo { 53 | pub fn parse>(s: S) -> std::result::Result { 54 | // Using default here is basically a hack.. It should really be a struct of options that 55 | // all must be filled out and the a "flat" struct with the fields should be returned 56 | // from the function 57 | let mut ni = Self::default(); 58 | 59 | let parse_size = |v: String| { 60 | v.parse() 61 | .map_err(|_| format!("failed to parse value {} as isize", v)) 62 | }; 63 | 64 | for line in s.as_ref().lines() { 65 | let parts = line.splitn(2, ": ").collect::>(); 66 | if parts.len() != 2 { 67 | return Err(format!("Not exactly two parts from line: {}", line)); 68 | } 69 | match (parts[0], parts[1].to_owned()) { 70 | ("StorePath", val) => ni.store_path = val, 71 | ("URL", val) => ni.url = val, 72 | ("Compression", val) => ni.compression = val, 73 | ("FileHash", val) => ni.file_hash = val, 74 | ("FileSize", val) => ni.file_size = parse_size(val)?, 75 | ("NarHash", val) => ni.nar_hash = val, 76 | ("NarSize", val) => ni.nar_size = parse_size(val)?, 77 | ("References", val) => ni.references = val, 78 | ("Deriver", val) => ni.deriver = val, 79 | ("Sig", val) => ni.sig = val, 80 | (other, val) => { 81 | return Err(format!("unknown field {} with value {}", other, val)); 82 | } 83 | } 84 | } 85 | 86 | // FIXME: we are removing the compression behind the URL so we can just serve the files 87 | // without compression for now 88 | ni.url = ni 89 | .url 90 | .replace(".nar.xz", ".nar") 91 | .replace(".nar.gz", ".nar") 92 | .replace(".nar.bz2", ".nar"); 93 | 94 | Ok(ni) 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /src/serve-narinfo.rs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/state.rs: -------------------------------------------------------------------------------- 1 | use crate::avahi; 2 | use crate::narinfo::NARInfo; 3 | use futures::future::{err, ok, Future}; 4 | use std::collections::HashMap; 5 | use std::sync::{Arc, RwLock}; 6 | 7 | use crate::util; 8 | 9 | pub struct State { 10 | narinfo_cache: Arc>>, 11 | avahi: Arc, 12 | } 13 | 14 | #[derive(Debug)] 15 | pub enum Error { 16 | ReqwestError(reqwest::Error), 17 | RetrievalError(util::RetrievalError), 18 | ParseError(String), 19 | } 20 | 21 | impl From for Error { 22 | fn from(e: util::RetrievalError) -> Error { 23 | Error::RetrievalError(e) 24 | } 25 | } 26 | 27 | impl From for Error { 28 | fn from(e: reqwest::Error) -> Error { 29 | Error::ReqwestError(e) 30 | } 31 | } 32 | 33 | impl State { 34 | pub fn new(a: Arc) -> Self { 35 | Self { 36 | narinfo_cache: Arc::new(RwLock::new(HashMap::new())), 37 | avahi: a, 38 | } 39 | } 40 | 41 | pub fn get_avahi(&self) -> Arc { 42 | Arc::clone(&self.avahi) 43 | } 44 | 45 | pub fn retrieve_narinfo>( 46 | &self, 47 | path: S, 48 | ) -> Box> { 49 | let path = path.as_ref().to_string(); 50 | let cache = Arc::clone(&self.narinfo_cache); 51 | 52 | { 53 | let map = cache.read().expect("RwLock poisoned"); 54 | if let Some(narinfo) = map.get(&path) { 55 | return Box::new(ok(narinfo.clone())); 56 | } 57 | } 58 | 59 | let url = format!("https://cache.nixos.org/{}.narinfo", &path); 60 | 61 | let client = reqwest::r#async::ClientBuilder::new() 62 | .build() 63 | .expect("Failed to build client"); 64 | let response = client 65 | .get(&url) 66 | .send() 67 | .map_err(|e| Error::from(e)) 68 | .and_then(|r| util::stream200_or_err(r).map_err(Error::RetrievalError)); 69 | let narinfo = response 70 | .and_then(|(_sh, mut r)| r.text().map_err(Error::ReqwestError)) 71 | .and_then(move |text| { 72 | let text = text.to_string(); 73 | let narinfo = match NARInfo::parse(text) { 74 | Ok(n) => n, 75 | Err(e) => return err(Error::ParseError(e)), 76 | }; 77 | { 78 | let mut map = cache.write().expect("RwLock poisoned"); 79 | map.entry(path).or_insert(narinfo.clone()); 80 | } 81 | ok(narinfo) 82 | }); 83 | Box::new(narinfo) 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /src/util.rs: -------------------------------------------------------------------------------- 1 | use futures::future::{err, ok, Future}; 2 | use reqwest::r#async::Response; 3 | use std::sync::{Arc, Condvar, Mutex}; 4 | 5 | #[derive(Debug)] 6 | pub enum RetrievalError { 7 | Exhausted, 8 | Not200, 9 | ReqwestError(reqwest::Error), 10 | } 11 | 12 | #[derive(Debug)] 13 | pub struct SmallHeader { 14 | pub content_type: Option, 15 | pub content_length: Option, 16 | } 17 | 18 | pub fn stream200_or_err( 19 | mut r: reqwest::r#async::Response, 20 | ) -> Box> { 21 | let content_type: Option<_> = match r 22 | .headers() 23 | .get(reqwest::header::CONTENT_TYPE) 24 | .map(|v| v.to_str()) 25 | { 26 | Some(Ok(v)) => Some(v.to_string()), 27 | _ => None, 28 | }; 29 | let content_length = r.content_length(); 30 | let sh = SmallHeader { 31 | content_type, 32 | content_length, 33 | }; 34 | if r.status().as_u16() == 200 { 35 | Box::new(ok((sh, r))) 36 | } else { 37 | Box::new(err(RetrievalError::Not200)) 38 | } 39 | } 40 | 41 | 42 | #[derive(Debug)] 43 | pub struct WaitGroup { 44 | counter: Mutex, 45 | condvar: Condvar, 46 | } 47 | 48 | impl WaitGroup { 49 | pub fn new() -> Self { 50 | WaitGroup { 51 | counter: Mutex::new(0), 52 | condvar: Condvar::new(), 53 | } 54 | } 55 | 56 | pub fn new_arc() -> Arc { 57 | Arc::new(Self::new()) 58 | } 59 | 60 | pub fn increment(&self) { 61 | let mut c = self.counter.lock().unwrap(); 62 | *c += 1; 63 | } 64 | 65 | pub fn decrement(&self) { 66 | let mut c = self.counter.lock().unwrap(); 67 | *c -= 1; 68 | self.condvar.notify_all(); 69 | } 70 | 71 | pub fn wait(&self) { 72 | let mut count = self.counter.lock().unwrap(); 73 | while *count > 0 { 74 | count = self.condvar.wait(count).unwrap(); 75 | } 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /src/web.rs: -------------------------------------------------------------------------------- 1 | use crate::avahi; 2 | use crate::narinfo::NARInfo; 3 | use crate::state::State as AppState; 4 | use actix_web::web::{Data as State, Path}; 5 | use actix_web::{middleware, App, Error, HttpResponse, HttpServer, Responder}; 6 | use bytes::buf::Buf; 7 | use futures::future::{ok, Future}; 8 | use futures::stream::Stream; 9 | use multicast_dns::host::HostManager as AvahiHostManager; 10 | use std::sync::Arc; 11 | 12 | fn nar(data: State, info: Path<(String,)>) -> impl Responder { 13 | let hash = format!("sha256:{}", info.0); 14 | 15 | let mut instance = libnixstore_sys::Instance::new().unwrap(); 16 | let path = match instance.query_path_from_file_hash(&hash) { 17 | Ok(Some(p)) => p, 18 | Ok(None) | Err(_) => { 19 | println!("No path for nar hash {} found or failed to query", &hash); 20 | return HttpResponse::NotFound().finish(); 21 | } 22 | }; 23 | 24 | let path_info = match instance.query_path_info(path) { 25 | Ok(Some(pi)) => pi, 26 | Ok(None) | Err(_) => return HttpResponse::NotFound().finish(), 27 | }; 28 | 29 | // let narinfo = match data.retrieve_narinfo(&path_info.hash_part) { 30 | // Ok(n) => n, 31 | // Err(_) => { 32 | // println!("Failed to retrieve narinfo for nar file of path {}", &path_info.path); 33 | // return HttpResponse::NotFound().finish(); 34 | // }, 35 | // }; 36 | 37 | println!("path info: {:?} for {}", path_info, hash); 38 | use std::process::Command; 39 | let out = Command::new("nix-store") 40 | .arg("--dump") 41 | .arg(path_info.path) 42 | .output() 43 | .expect("failed to execute dump"); 44 | 45 | HttpResponse::Ok() 46 | .content_type("application/x-nix-nar") 47 | .body(out.stdout) 48 | } 49 | 50 | fn narinfo( 51 | data: State, 52 | info: Path<(String,)>, 53 | ) -> Box> { 54 | //let bdb = data.open_binary_cache_db(); 55 | //let sdb = data.open_store_db(); 56 | let mut instance = libnixstore_sys::Instance::new().unwrap(); 57 | 58 | println!("narinfo for path: {}", &info.0); 59 | 60 | match instance.query_path_from_hash_part(&info.0) { 61 | Err(e) => { 62 | println!("Failed to query for path from hash_part for {}", &info.0); 63 | Box::new(ok(HttpResponse::NotFound().finish())) 64 | } 65 | Ok(None) => { 66 | println!("No path for hash part {} found.", &info.0); 67 | Box::new(ok(HttpResponse::NotFound().finish())) 68 | } 69 | Ok(Some(path)) => { 70 | let path_info = match instance.query_path_info(&path) { 71 | Ok(Some(pi)) => pi, 72 | Ok(None) | Err(_) => { 73 | println!( 74 | "Failed to query path info or no path info found for path: {}", 75 | path 76 | ); 77 | return Box::new(ok(HttpResponse::NotFound().finish())); 78 | } 79 | }; 80 | let sigs = path_info.signatures.clone(); 81 | // very ugly way to deal with this.. If the local Nar cache would always be 82 | // there we could look it up there :/ 83 | if !sigs.is_empty() && sigs.starts_with("cache.nixos.org-1:") { 84 | let fut = 85 | data.retrieve_narinfo(&info.0) 86 | .then(move |r: Result| match r { 87 | Ok(narinfo) => { 88 | match instance.query_path_from_file_hash(&narinfo.file_hash) { 89 | Ok(None) | Err(_) => { 90 | println!("Path {} not cached locally", &path_info.path); 91 | return HttpResponse::NotFound().finish(); 92 | } 93 | Ok(Some(_)) => {} 94 | } 95 | 96 | let resp = narinfo.format_with_compression("none"); 97 | HttpResponse::Ok() 98 | .content_type("text/x-nix-narinfo") 99 | .body(resp) 100 | } 101 | Err(e) => { 102 | println!("Failed to retrieve NARInfo for path {}: {:?}", path, e); 103 | HttpResponse::NotFound().finish() 104 | } 105 | }); 106 | Box::new(fut) 107 | } else { 108 | println!("Path {} is not signed by cache.nixos.org", path); 109 | Box::new(ok(HttpResponse::NotFound().finish())) 110 | } 111 | } 112 | } 113 | } 114 | 115 | fn nix_cache_info(_state: State) -> impl Responder { 116 | "StoreDir: /nix/store\nWantMassQuery: 1\nPriority: 30\n" 117 | } 118 | 119 | fn avahi_proxy( 120 | state: State, 121 | info: Path<(String,)>, 122 | ) -> impl Future { 123 | let path = &info.0; 124 | println!("Got request for {}", path); 125 | let hosts = state.get_avahi().get_hosts(); 126 | 127 | let client = reqwest::r#async::ClientBuilder::new() 128 | .connect_timeout(std::time::Duration::from_millis(300)) 129 | .build() 130 | .expect("Failed to build client"); 131 | 132 | avahi::try_retrieve(client, (*path).to_string(), hosts) 133 | .and_then(|(sh, r)| { 134 | let stream = r 135 | .into_body() 136 | .map_err(actix_web::error::ErrorInternalServerError) 137 | .map(|chunk| -> bytes::Bytes { bytes::Bytes::from(chunk.bytes()) }); 138 | let response = match sh.content_type { 139 | Some(ct) => HttpResponse::Ok().content_type(ct).streaming(stream), 140 | None => HttpResponse::Ok().streaming(stream), 141 | }; 142 | Ok(response) 143 | }) 144 | .or_else(|r| { 145 | println!("or else: {:?}", r); 146 | HttpResponse::NotFound().finish() 147 | }) 148 | } 149 | 150 | pub fn serve(port: i16) -> std::io::Result<()> { 151 | let host_manager = AvahiHostManager::new(); 152 | if let Err(e) = 153 | host_manager.announce_service("My local nix cache", "_nixcache._tcp", port as u16) 154 | { 155 | println!("Failed to announce service via avahi. Consider setting `services.avahi.publish.userServices = true;` in your NixOS configuration. Error: {}", e); 156 | } 157 | 158 | let avahi = Arc::new(avahi::AvahiDiscovery::new()); 159 | { 160 | let a = Arc::clone(&avahi); 161 | std::thread::spawn(move || a.run()); 162 | } 163 | 164 | HttpServer::new(move || { 165 | use actix_web::web::*; 166 | let d = Data::new(AppState::new(Arc::clone(&avahi))); 167 | App::new() 168 | .register_data(d) 169 | .wrap(middleware::Logger::default()) 170 | .service(resource("/nar/{narHash}.nar").route(get().to(nar))) 171 | .service(resource("/{narHash}.narinfo").route(get().to(narinfo))) 172 | .service(resource("/nix-cache-info").route(get().to(nix_cache_info))) 173 | .service(resource("/avahi/nix-cache-info").route(get().to(nix_cache_info))) 174 | .service(resource("/avahi/{path:.*}").route(get().to_async(avahi_proxy))) 175 | }) 176 | .bind(format!("[::]:{}", port))? 177 | .run()?; 178 | 179 | Ok(()) 180 | } 181 | -------------------------------------------------------------------------------- /test.nix: -------------------------------------------------------------------------------- 1 | { pkgsSrc ? ./nix }: 2 | 3 | let 4 | pkgs = import pkgsSrc {}; 5 | drvs = (import (fetchGit ./.) { pkgsSrc = pkgs.path; }); 6 | module = import (drvs.path + "/module.nix"); 7 | in 8 | (import (pkgs.path + "/nixos/tests/make-test-python.nix") ({ pkgs, lib, ...}: { 9 | machine = { pkgs, ... }: { 10 | imports = [ module ]; 11 | local-nix-cache.server.enable = true; 12 | }; 13 | 14 | testScript = '' 15 | start_all() 16 | machine.wait_for_unit("multi-user.target") 17 | machine.wait_for_unit("local-nix-cache") 18 | machine.succeed("curl localhost:8083 -q") 19 | ''; 20 | })) 21 | --------------------------------------------------------------------------------