diff --git a/src/builder.rs b/src/builder.rs index f57bb1b..7ad7285 100644 --- a/src/builder.rs +++ b/src/builder.rs @@ -701,9 +701,15 @@ impl Builder { impl Node { #[inline] fn feature_index(&self, feat: &str) -> usize { - self.features - .binary_search_by(|f| f.as_str().cmp(feat)) - .unwrap() + match self.features.binary_search_by(|f| f.as_str().cmp(feat)) { + Ok(i) => i, + Err(_i) => { + unreachable!( + "unable to locate {feat} for crate {} features({:?})", + self.id, self.features + ); + } + } } #[inline] @@ -1069,12 +1075,14 @@ impl Builder { } }; - let Some(ndep) = rnode - .deps - .iter() - .find(|rdep| dep_names_match(krate_name, &rdep.name)) - else { - unreachable!("unable to find dependency {krate_name} for {pid}"); + let Some(ndep) = rnode.deps.iter().find(|rdep| { + dep_names_match(krate_name, &rdep.name) + || crate_name_from_pid(&rdep.pkg) == krate_name + }) else { + unreachable!( + "unable to find dependency {krate_name} for {pid} {:#?}", + rnode.deps + ); }; let rdep_node = get_rnode(&ndep.pkg); diff --git a/tests/feature-bug/Cargo.lock b/tests/feature-bug/Cargo.lock index b7ac70d..709410f 100644 --- a/tests/feature-bug/Cargo.lock +++ b/tests/feature-bug/Cargo.lock @@ -8,6 +8,17 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "ahash" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" +dependencies = [ + "getrandom", + "once_cell", + "version_check", +] + [[package]] name = "aho-corasick" version = "1.1.2" @@ -47,6 +58,17 @@ dependencies = [ "num-traits", ] +[[package]] +name = "async-trait" +version = "0.1.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + [[package]] name = "autocfg" version = "1.1.0" @@ -157,6 +179,25 @@ dependencies = [ "cc", ] +[[package]] +name = "config" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23738e11972c7643e4ec947840fc463b6a571afcd3e735bdfce7d03c7a784aca" +dependencies = [ + "async-trait", + "json5", + "lazy_static", + "nom", + "pathdiff", + "ron", + "rust-ini", + "serde", + "serde_json", + "toml", + "yaml-rust", +] + [[package]] name = "core-foundation-sys" version = "0.8.6" @@ -287,6 +328,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "dlv-list" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0688c2a7f92e427f44895cd63841bff7b29f8d7a1648b9e7e07a4a365b2e1257" + [[package]] name = "errno" version = "0.3.8" @@ -375,6 +422,15 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash", +] + [[package]] name = "iana-time-zone" version = "0.1.59" @@ -451,6 +507,17 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "json5" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1" +dependencies = [ + "pest", + "pest_derive", + "serde", +] + [[package]] name = "katexit" version = "0.1.4" @@ -509,6 +576,12 @@ dependencies = [ "redox_syscall", ] +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + [[package]] name = "linux-raw-sys" version = "0.4.12" @@ -537,6 +610,12 @@ version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "miniz_oxide" version = "0.7.1" @@ -587,6 +666,16 @@ dependencies = [ "cmake", ] +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + [[package]] name = "num-complex" version = "0.4.4" @@ -663,12 +752,73 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +[[package]] +name = "ordered-multimap" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccd746e37177e1711c20dd619a1620f34f5c8b569c53590a72dedd5344d8924a" +dependencies = [ + "dlv-list", + "hashbrown", +] + +[[package]] +name = "pathdiff" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" + [[package]] name = "percent-encoding" version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +[[package]] +name = "pest" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f200d8d83c44a45b21764d1916299752ca035d15ecd46faca3e9a2a2bf6ad06" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcd6ab1236bbdb3a49027e920e693192ebfe8913f6d60e294de57463a493cfde" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a31940305ffc96863a735bef7c7994a00b325a7138fdbc5bda0f1a0476d3275" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "pest_meta" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7ff62f5259e53b78d1af898941cdcdccfae7385cf7d793a6e55de5d05bb4b7d" +dependencies = [ + "once_cell", + "pest", + "sha2", +] + [[package]] name = "ppv-lite86" version = "0.2.17" @@ -816,6 +966,27 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "ron" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88073939a61e5b7680558e6be56b419e208420c2adb92be54921fa6b72283f1a" +dependencies = [ + "base64 0.13.1", + "bitflags 1.3.2", + "serde", +] + +[[package]] +name = "rust-ini" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6d5f2436026b4f6e79dc829837d467cc7e9a55ee40e750d716713540715a2df" +dependencies = [ + "cfg-if", + "ordered-multimap", +] + [[package]] name = "rustix" version = "0.38.28" @@ -934,6 +1105,7 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" name = "sub-crate" version = "0.1.0" dependencies = [ + "config", "ndarray-linalg", ] @@ -1020,6 +1192,12 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + [[package]] name = "unicode-bidi" version = "0.3.14" @@ -1349,3 +1527,12 @@ dependencies = [ "linux-raw-sys", "rustix", ] + +[[package]] +name = "yaml-rust" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +dependencies = [ + "linked-hash-map", +] diff --git a/tests/feature-bug/sub-crate/Cargo.toml b/tests/feature-bug/sub-crate/Cargo.toml index 93c451d..a3f74a5 100644 --- a/tests/feature-bug/sub-crate/Cargo.toml +++ b/tests/feature-bug/sub-crate/Cargo.toml @@ -7,6 +7,9 @@ edition = "2021" default = [] simple = ["dep:ndarray-linalg"] +[dependencies] +config = "0.13" + [target.'cfg(target_os = "windows")'.dependencies] ndarray-linalg = { workspace = true, default-features = false, optional = true } diff --git a/tests/snapshots/features__ignores_features_for_ignored_kinds.snap b/tests/snapshots/features__ignores_features_for_ignored_kinds.snap index 94f06a7..107e2a9 100644 --- a/tests/snapshots/features__ignores_features_for_ignored_kinds.snap +++ b/tests/snapshots/features__ignores_features_for_ignored_kinds.snap @@ -3,305 +3,561 @@ source: tests/features.rs expression: dotgraph --- digraph { - 0 [ label = "crate approx 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" ] - 1 [ label = "crate autocfg 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" ] - 2 [ label = "crate cauchy 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" ] - 3 [ label = "crate cblas-sys 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" ] - 4 [ label = "crate cc 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)" ] - 5 [ label = "crate cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" ] - 6 [ label = "crate cmake 0.1.50 (registry+https://github.com/rust-lang/crates.io-index)" ] - 7 [ label = "crate feature-bug 0.1.0 (path+file:///krates/tests/feature-bug)" ] - 8 [ label = "crate getrandom 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)" ] - 9 [ label = "crate katexit 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" ] - 10 [ label = "crate lapack-sys 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" ] - 11 [ label = "crate lax 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" ] - 12 [ label = "crate libc 0.2.152 (registry+https://github.com/rust-lang/crates.io-index)" ] - 13 [ label = "crate matrixmultiply 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" ] - 14 [ label = "crate ndarray 0.15.6 (registry+https://github.com/rust-lang/crates.io-index)" ] - 15 [ label = "crate ndarray-linalg 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" ] - 16 [ label = "crate netlib-src 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" ] - 17 [ label = "crate num-complex 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" ] - 18 [ label = "crate num-integer 0.1.45 (registry+https://github.com/rust-lang/crates.io-index)" ] - 19 [ label = "crate num-traits 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)" ] - 20 [ label = "crate ppv-lite86 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)" ] - 21 [ label = "crate proc-macro2 1.0.76 (registry+https://github.com/rust-lang/crates.io-index)" ] - 22 [ label = "crate quote 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)" ] - 23 [ label = "crate rand 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)" ] - 24 [ label = "crate rand_chacha 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" ] - 25 [ label = "crate rand_core 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" ] - 26 [ label = "crate rawpointer 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" ] - 27 [ label = "crate serde 1.0.195 (registry+https://github.com/rust-lang/crates.io-index)" ] - 28 [ label = "crate sub-crate 0.1.0 (path+file:///krates/tests/feature-bug/sub-crate)" ] - 29 [ label = "crate syn 1.0.109 (registry+https://github.com/rust-lang/crates.io-index)" ] - 30 [ label = "crate syn 2.0.48 (registry+https://github.com/rust-lang/crates.io-index)" ] - 31 [ label = "crate thiserror 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)" ] - 32 [ label = "crate thiserror-impl 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)" ] - 33 [ label = "crate unicode-ident 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)" ] - 34 [ label = "crate wasi 0.11.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)" ] - 35 [ label = "feature serde" ] - 36 [ label = "feature rand" ] - 37 [ label = "feature default" ] - 38 [ label = "feature default" ] - 39 [ label = "feature default" ] - 40 [ label = "feature default" ] - 41 [ label = "feature default" ] - 42 [ label = "feature simple" ] - 43 [ label = "feature default" ] - 44 [ label = "feature default" ] - 45 [ label = "feature full" ] - 46 [ label = "feature extra-traits" ] - 47 [ label = "feature default" ] - 48 [ label = "feature cblas" ] - 49 [ label = "feature static" ] - 50 [ label = "feature cgemm" ] - 51 [ label = "feature std" ] - 52 [ label = "feature std" ] - 53 [ label = "feature netlib" ] - 54 [ label = "feature blas" ] - 55 [ label = "feature approx" ] - 56 [ label = "feature std" ] - 57 [ label = "feature i128" ] - 58 [ label = "feature proc-macro" ] - 59 [ label = "feature std" ] - 60 [ label = "feature alloc" ] - 61 [ label = "feature getrandom" ] - 62 [ label = "feature std" ] - 63 [ label = "feature simd" ] - 64 [ label = "feature std" ] - 65 [ label = "feature std" ] - 66 [ label = "feature netlib" ] - 67 [ label = "feature default" ] - 68 [ label = "feature proc-macro" ] - 69 [ label = "feature default" ] - 70 [ label = "feature netlib-static" ] - 71 [ label = "feature std" ] - 72 [ label = "feature libc" ] - 73 [ label = "feature cblas-sys" ] - 74 [ label = "feature std" ] - 75 [ label = "feature std_rng" ] - 76 [ label = "feature rand_chacha" ] - 77 [ label = "feature std" ] - 78 [ label = "feature alloc" ] - 79 [ label = "feature getrandom" ] - 80 [ label = "feature libc" ] - 81 [ label = "feature std" ] - 82 [ label = "feature quote" ] - 83 [ label = "feature proc-macro" ] - 84 [ label = "feature printing" ] - 85 [ label = "feature parsing" ] - 86 [ label = "feature derive" ] - 87 [ label = "feature clone-impls" ] - 88 [ label = "feature quote" ] - 89 [ label = "feature proc-macro" ] - 90 [ label = "feature printing" ] - 91 [ label = "feature parsing" ] - 92 [ label = "feature derive" ] - 93 [ label = "feature clone-impls" ] - 0 -> 19 [ label = "" ] - 2 -> 35 [ label = "" ] - 2 -> 36 [ label = "" ] - 2 -> 37 [ label = "" ] - 2 -> 38 [ label = "" ] - 2 -> 39 [ label = "" ] - 2 -> 40 [ label = "" ] - 3 -> 41 [ label = "" ] - 4 -> 12 [ label = " 'cfg(unix)'" ] - 6 -> 4 [ label = "" ] - 7 -> 42 [ label = "" ] - 8 -> 5 [ label = "" ] - 8 -> 12 [ label = " 'cfg(unix)'" ] - 8 -> 34 [ label = " 'cfg(target_os = \"wasi\")'" ] - 9 -> 43 [ label = "" ] - 9 -> 44 [ label = "" ] - 9 -> 45 [ label = "" ] - 9 -> 46 [ label = "" ] - 9 -> 47 [ label = "" ] - 10 -> 41 [ label = "" ] - 11 -> 2 [ label = "" ] + 0 [ label = "crate ahash 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)" ] + 1 [ label = "crate approx 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" ] + 2 [ label = "crate async-trait 0.1.77 (registry+https://github.com/rust-lang/crates.io-index)" ] + 3 [ label = "crate autocfg 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" ] + 4 [ label = "crate base64 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" ] + 5 [ label = "crate bitflags 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" ] + 6 [ label = "crate block-buffer 0.10.4 (registry+https://github.com/rust-lang/crates.io-index)" ] + 7 [ label = "crate cauchy 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" ] + 8 [ label = "crate cblas-sys 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" ] + 9 [ label = "crate cc 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)" ] + 10 [ label = "crate cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" ] + 11 [ label = "crate cmake 0.1.50 (registry+https://github.com/rust-lang/crates.io-index)" ] + 12 [ label = "crate config 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)" ] + 13 [ label = "crate cpufeatures 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)" ] + 14 [ label = "crate crypto-common 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" ] + 15 [ label = "crate digest 0.10.7 (registry+https://github.com/rust-lang/crates.io-index)" ] + 16 [ label = "crate dlv-list 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" ] + 17 [ label = "crate feature-bug 0.1.0 (path+file:///krates/tests/feature-bug)" ] + 18 [ label = "crate generic-array 0.14.7 (registry+https://github.com/rust-lang/crates.io-index)" ] + 19 [ label = "crate getrandom 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)" ] + 20 [ label = "crate hashbrown 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" ] + 21 [ label = "crate itoa 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)" ] + 22 [ label = "crate json5 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" ] + 23 [ label = "crate katexit 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" ] + 24 [ label = "crate lapack-sys 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" ] + 25 [ label = "crate lax 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" ] + 26 [ label = "crate lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" ] + 27 [ label = "crate libc 0.2.152 (registry+https://github.com/rust-lang/crates.io-index)" ] + 28 [ label = "crate linked-hash-map 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" ] + 29 [ label = "crate matrixmultiply 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" ] + 30 [ label = "crate memchr 2.7.1 (registry+https://github.com/rust-lang/crates.io-index)" ] + 31 [ label = "crate minimal-lexical 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" ] + 32 [ label = "crate ndarray 0.15.6 (registry+https://github.com/rust-lang/crates.io-index)" ] + 33 [ label = "crate ndarray-linalg 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" ] + 34 [ label = "crate netlib-src 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" ] + 35 [ label = "crate nom 7.1.3 (registry+https://github.com/rust-lang/crates.io-index)" ] + 36 [ label = "crate num-complex 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" ] + 37 [ label = "crate num-integer 0.1.45 (registry+https://github.com/rust-lang/crates.io-index)" ] + 38 [ label = "crate num-traits 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)" ] + 39 [ label = "crate once_cell 1.19.0 (registry+https://github.com/rust-lang/crates.io-index)" ] + 40 [ label = "crate ordered-multimap 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" ] + 41 [ label = "crate pathdiff 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" ] + 42 [ label = "crate pest 2.7.6 (registry+https://github.com/rust-lang/crates.io-index)" ] + 43 [ label = "crate pest_derive 2.7.6 (registry+https://github.com/rust-lang/crates.io-index)" ] + 44 [ label = "crate pest_generator 2.7.6 (registry+https://github.com/rust-lang/crates.io-index)" ] + 45 [ label = "crate pest_meta 2.7.6 (registry+https://github.com/rust-lang/crates.io-index)" ] + 46 [ label = "crate ppv-lite86 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)" ] + 47 [ label = "crate proc-macro2 1.0.76 (registry+https://github.com/rust-lang/crates.io-index)" ] + 48 [ label = "crate quote 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)" ] + 49 [ label = "crate rand 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)" ] + 50 [ label = "crate rand_chacha 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" ] + 51 [ label = "crate rand_core 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" ] + 52 [ label = "crate rawpointer 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" ] + 53 [ label = "crate ron 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" ] + 54 [ label = "crate rust-ini 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)" ] + 55 [ label = "crate ryu 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)" ] + 56 [ label = "crate serde 1.0.195 (registry+https://github.com/rust-lang/crates.io-index)" ] + 57 [ label = "crate serde_derive 1.0.195 (registry+https://github.com/rust-lang/crates.io-index)" ] + 58 [ label = "crate serde_json 1.0.111 (registry+https://github.com/rust-lang/crates.io-index)" ] + 59 [ label = "crate sha2 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)" ] + 60 [ label = "crate sub-crate 0.1.0 (path+file:///krates/tests/feature-bug/sub-crate)" ] + 61 [ label = "crate syn 1.0.109 (registry+https://github.com/rust-lang/crates.io-index)" ] + 62 [ label = "crate syn 2.0.48 (registry+https://github.com/rust-lang/crates.io-index)" ] + 63 [ label = "crate thiserror 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)" ] + 64 [ label = "crate thiserror-impl 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)" ] + 65 [ label = "crate toml 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)" ] + 66 [ label = "crate typenum 1.17.0 (registry+https://github.com/rust-lang/crates.io-index)" ] + 67 [ label = "crate ucd-trie 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" ] + 68 [ label = "crate unicode-ident 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)" ] + 69 [ label = "crate version_check 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)" ] + 70 [ label = "crate wasi 0.11.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)" ] + 71 [ label = "crate yaml-rust 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" ] + 72 [ label = "feature alloc" ] + 73 [ label = "feature default" ] + 74 [ label = "feature default" ] + 75 [ label = "feature full" ] + 76 [ label = "feature visit-mut" ] + 77 [ label = "feature default" ] + 78 [ label = "feature serde" ] + 79 [ label = "feature rand" ] + 80 [ label = "feature default" ] + 81 [ label = "feature default" ] + 82 [ label = "feature default" ] + 83 [ label = "feature default" ] + 84 [ label = "feature default" ] + 85 [ label = "feature default" ] + 86 [ label = "feature default" ] + 87 [ label = "feature default" ] + 88 [ label = "feature default" ] + 89 [ label = "feature more_lengths" ] + 90 [ label = "feature simple" ] + 91 [ label = "feature default" ] + 92 [ label = "feature default" ] + 93 [ label = "feature full" ] + 94 [ label = "feature extra-traits" ] + 95 [ label = "feature default" ] + 96 [ label = "feature cblas" ] + 97 [ label = "feature static" ] + 98 [ label = "feature cgemm" ] + 99 [ label = "feature std" ] + 100 [ label = "feature std" ] + 101 [ label = "feature netlib" ] + 102 [ label = "feature blas" ] + 103 [ label = "feature approx" ] + 104 [ label = "feature std" ] + 105 [ label = "feature std" ] + 106 [ label = "feature std" ] + 107 [ label = "feature i128" ] + 108 [ label = "feature default" ] + 109 [ label = "feature default" ] + 110 [ label = "feature std" ] + 111 [ label = "feature std" ] + 112 [ label = "feature std" ] + 113 [ label = "feature default" ] + 114 [ label = "feature default" ] + 115 [ label = "feature proc-macro" ] + 116 [ label = "feature std" ] + 117 [ label = "feature alloc" ] + 118 [ label = "feature getrandom" ] + 119 [ label = "feature std" ] + 120 [ label = "feature simd" ] + 121 [ label = "feature std" ] + 122 [ label = "feature std" ] + 123 [ label = "feature default" ] + 124 [ label = "feature default" ] + 125 [ label = "feature serde_derive" ] + 126 [ label = "feature default" ] + 127 [ label = "feature std" ] + 128 [ label = "feature default" ] + 129 [ label = "feature default" ] + 130 [ label = "feature netlib" ] + 131 [ label = "feature default" ] + 132 [ label = "feature proc-macro" ] + 133 [ label = "feature std" ] + 134 [ label = "feature yaml-rust" ] + 135 [ label = "feature yaml" ] + 136 [ label = "feature toml" ] + 137 [ label = "feature serde_json" ] + 138 [ label = "feature rust-ini" ] + 139 [ label = "feature ron" ] + 140 [ label = "feature json5_rs" ] + 141 [ label = "feature json5_rs" ] + 142 [ label = "feature json5" ] + 143 [ label = "feature json" ] + 144 [ label = "feature ini" ] + 145 [ label = "feature core-api" ] + 146 [ label = "feature block-buffer" ] + 147 [ label = "feature inline-more" ] + 148 [ label = "feature ahash" ] + 149 [ label = "feature netlib-static" ] + 150 [ label = "feature std" ] + 151 [ label = "feature alloc" ] + 152 [ label = "feature libc" ] + 153 [ label = "feature cblas-sys" ] + 154 [ label = "feature std" ] + 155 [ label = "feature alloc" ] + 156 [ label = "feature std" ] + 157 [ label = "feature std" ] + 158 [ label = "feature race" ] + 159 [ label = "feature memchr" ] + 160 [ label = "feature std" ] + 161 [ label = "feature std_rng" ] + 162 [ label = "feature rand_chacha" ] + 163 [ label = "feature std" ] + 164 [ label = "feature alloc" ] + 165 [ label = "feature getrandom" ] + 166 [ label = "feature libc" ] + 167 [ label = "feature std" ] + 168 [ label = "feature quote" ] + 169 [ label = "feature proc-macro" ] + 170 [ label = "feature printing" ] + 171 [ label = "feature parsing" ] + 172 [ label = "feature derive" ] + 173 [ label = "feature clone-impls" ] + 174 [ label = "feature quote" ] + 175 [ label = "feature proc-macro" ] + 176 [ label = "feature printing" ] + 177 [ label = "feature parsing" ] + 178 [ label = "feature derive" ] + 179 [ label = "feature clone-impls" ] + 0 -> 19 [ label = " 'cfg(any(target_os = \"linux\", target_os = \"android\", target_os = \"windows\", target_os = \"macos\", target_os = \"ios\", target_os = \"freebsd\", target_os = \"openbsd\", target_os = \"netbsd\", target_os = \"dragonfly\", target_os = \"solaris\", target_os = \"illumos\", target_os = \"fuchsia\", target_os = \"redox\", target_os = \"cloudabi\", target_os = \"haiku\", target_os = \"vxworks\", target_os = \"emscripten\", target_os = \"wasi\"))'" ] + 0 -> 72 [ label = " 'cfg(not(all(target_arch = \"arm\", target_os = \"none\")))'" ] + 0 -> 69 [ label = "(build)" ] + 1 -> 38 [ label = "" ] + 2 -> 73 [ label = "" ] + 2 -> 74 [ label = "" ] + 2 -> 75 [ label = "" ] + 2 -> 76 [ label = "" ] + 2 -> 77 [ label = "" ] + 6 -> 18 [ label = "" ] + 7 -> 78 [ label = "" ] + 7 -> 79 [ label = "" ] + 7 -> 80 [ label = "" ] + 7 -> 81 [ label = "" ] + 7 -> 82 [ label = "" ] + 7 -> 83 [ label = "" ] + 8 -> 84 [ label = "" ] + 9 -> 27 [ label = " 'cfg(unix)'" ] 11 -> 9 [ label = "" ] - 11 -> 10 [ label = "" ] - 11 -> 48 [ label = "" ] - 11 -> 49 [ label = "" ] - 11 -> 38 [ label = "" ] - 11 -> 31 [ label = "" ] - 13 -> 1 [ label = "(build)" ] - 13 -> 26 [ label = "" ] - 14 -> 0 [ label = "" ] - 14 -> 3 [ label = "" ] - 14 -> 41 [ label = "" ] - 14 -> 50 [ label = "" ] - 14 -> 51 [ label = "" ] - 14 -> 17 [ label = "" ] - 14 -> 18 [ label = "" ] - 14 -> 19 [ label = "" ] - 14 -> 52 [ label = "" ] - 14 -> 26 [ label = "" ] - 15 -> 2 [ label = "" ] - 15 -> 9 [ label = "" ] - 15 -> 11 [ label = "" ] - 15 -> 53 [ label = "" ] - 15 -> 54 [ label = "" ] - 15 -> 55 [ label = "" ] - 15 -> 56 [ label = "" ] - 15 -> 37 [ label = "" ] - 15 -> 38 [ label = "" ] - 15 -> 39 [ label = "" ] - 15 -> 31 [ label = "" ] - 16 -> 6 [ label = "(build)" ] - 17 -> 57 [ label = "" ] - 17 -> 52 [ label = "" ] - 17 -> 23 [ label = "" ] - 17 -> 27 [ label = "" ] - 18 -> 1 [ label = "(build)" ] - 18 -> 19 [ label = "" ] - 19 -> 1 [ label = "(build)" ] - 21 -> 33 [ label = "" ] - 22 -> 21 [ label = "" ] - 22 -> 58 [ label = "" ] - 23 -> 12 [ label = " 'cfg(unix)'" ] - 23 -> 24 [ label = "" ] - 23 -> 59 [ label = "" ] - 23 -> 25 [ label = "" ] - 23 -> 60 [ label = "" ] - 23 -> 61 [ label = "" ] - 23 -> 62 [ label = "" ] - 24 -> 63 [ label = "" ] - 24 -> 64 [ label = "" ] - 24 -> 25 [ label = "" ] - 25 -> 8 [ label = "" ] - 25 -> 65 [ label = "" ] - 28 -> 66 [ label = " 'cfg(target_os = \"linux\")'" ] - 28 -> 67 [ label = " 'cfg(target_os = \"linux\")'" ] - 28 -> 66 [ label = " 'cfg(target_os = \"windows\")'" ] - 28 -> 67 [ label = " 'cfg(target_os = \"windows\")'" ] - 29 -> 21 [ label = "" ] - 29 -> 58 [ label = "" ] - 29 -> 22 [ label = "" ] - 29 -> 68 [ label = "" ] - 29 -> 33 [ label = "" ] - 30 -> 21 [ label = "" ] - 30 -> 58 [ label = "" ] - 30 -> 22 [ label = "" ] - 30 -> 68 [ label = "" ] - 30 -> 33 [ label = "" ] - 31 -> 32 [ label = "" ] - 32 -> 43 [ label = "" ] - 32 -> 44 [ label = "" ] - 32 -> 69 [ label = "" ] - 65 -> 8 [ label = "" ] - 70 -> 11 [ label = "" ] - 70 -> 49 [ label = "" ] - 53 -> 11 [ label = "" ] - 53 -> 70 [ label = "" ] - 71 -> 12 [ label = "" ] - 41 -> 12 [ label = "" ] - 41 -> 71 [ label = "" ] - 51 -> 13 [ label = "" ] - 50 -> 13 [ label = "" ] - 56 -> 14 [ label = "" ] - 56 -> 52 [ label = "" ] - 56 -> 51 [ label = "" ] - 72 -> 14 [ label = "" ] - 72 -> 12 [ label = "" ] - 73 -> 14 [ label = "" ] - 73 -> 3 [ label = "" ] - 54 -> 14 [ label = "" ] - 54 -> 73 [ label = "" ] - 54 -> 72 [ label = "" ] - 55 -> 14 [ label = "" ] - 55 -> 0 [ label = "" ] - 66 -> 15 [ label = "" ] - 66 -> 53 [ label = "" ] - 67 -> 15 [ label = "" ] - 49 -> 16 [ label = "" ] - 48 -> 16 [ label = "" ] - 74 -> 17 [ label = "" ] - 74 -> 52 [ label = "" ] - 35 -> 17 [ label = "" ] - 35 -> 27 [ label = "" ] - 36 -> 17 [ label = "" ] - 36 -> 23 [ label = "" ] - 37 -> 17 [ label = "" ] - 37 -> 74 [ label = "" ] - 52 -> 19 [ label = "" ] - 57 -> 19 [ label = "" ] - 38 -> 19 [ label = "" ] - 38 -> 52 [ label = "" ] - 64 -> 20 [ label = "" ] - 63 -> 20 [ label = "" ] + 12 -> 2 [ label = "" ] + 12 -> 22 [ label = "" ] + 12 -> 26 [ label = "" ] + 12 -> 85 [ label = "" ] + 12 -> 41 [ label = "" ] + 12 -> 53 [ label = "" ] + 12 -> 86 [ label = "" ] + 12 -> 83 [ label = "" ] + 12 -> 87 [ label = "" ] + 12 -> 88 [ label = "" ] + 12 -> 71 [ label = "" ] + 13 -> 84 [ label = " 'aarch64-linux-android'" ] + 13 -> 84 [ label = " 'cfg(all(target_arch = \"aarch64\", target_os = \"linux\"))'" ] + 13 -> 84 [ label = " 'cfg(all(target_arch = \"aarch64\", target_vendor = \"apple\"))'" ] + 13 -> 84 [ label = " 'cfg(all(target_arch = \"loongarch64\", target_os = \"linux\"))'" ] + 14 -> 89 [ label = "" ] + 14 -> 66 [ label = "" ] + 15 -> 6 [ label = "" ] + 15 -> 14 [ label = "" ] + 17 -> 90 [ label = "" ] + 18 -> 66 [ label = "" ] + 18 -> 69 [ label = "(build)" ] + 19 -> 10 [ label = "" ] + 19 -> 27 [ label = " 'cfg(unix)'" ] + 19 -> 70 [ label = " 'cfg(target_os = \"wasi\")'" ] + 20 -> 0 [ label = "" ] + 22 -> 91 [ label = "" ] + 22 -> 92 [ label = "" ] + 22 -> 83 [ label = "" ] + 23 -> 73 [ label = "" ] + 23 -> 74 [ label = "" ] + 23 -> 93 [ label = "" ] + 23 -> 94 [ label = "" ] + 23 -> 95 [ label = "" ] + 24 -> 84 [ label = "" ] + 25 -> 7 [ label = "" ] + 25 -> 23 [ label = "" ] + 25 -> 24 [ label = "" ] + 25 -> 96 [ label = "" ] + 25 -> 97 [ label = "" ] + 25 -> 81 [ label = "" ] + 25 -> 63 [ label = "" ] + 29 -> 3 [ label = "(build)" ] + 29 -> 52 [ label = "" ] + 32 -> 1 [ label = "" ] + 32 -> 8 [ label = "" ] + 32 -> 84 [ label = "" ] + 32 -> 98 [ label = "" ] + 32 -> 99 [ label = "" ] + 32 -> 36 [ label = "" ] + 32 -> 37 [ label = "" ] + 32 -> 38 [ label = "" ] + 32 -> 100 [ label = "" ] + 32 -> 52 [ label = "" ] + 33 -> 7 [ label = "" ] + 33 -> 23 [ label = "" ] + 33 -> 25 [ label = "" ] + 33 -> 101 [ label = "" ] + 33 -> 102 [ label = "" ] + 33 -> 103 [ label = "" ] + 33 -> 104 [ label = "" ] + 33 -> 80 [ label = "" ] + 33 -> 81 [ label = "" ] + 33 -> 82 [ label = "" ] + 33 -> 63 [ label = "" ] + 34 -> 11 [ label = "(build)" ] + 35 -> 30 [ label = "" ] + 35 -> 105 [ label = "" ] + 35 -> 31 [ label = "" ] + 35 -> 106 [ label = "" ] + 36 -> 107 [ label = "" ] + 36 -> 100 [ label = "" ] + 36 -> 49 [ label = "" ] + 36 -> 56 [ label = "" ] + 37 -> 3 [ label = "(build)" ] + 37 -> 38 [ label = "" ] + 38 -> 3 [ label = "(build)" ] + 40 -> 16 [ label = "" ] + 40 -> 108 [ label = "" ] + 42 -> 109 [ label = "" ] + 42 -> 63 [ label = "" ] + 42 -> 67 [ label = "" ] + 42 -> 110 [ label = "" ] + 43 -> 42 [ label = "" ] + 43 -> 111 [ label = "" ] + 43 -> 44 [ label = "" ] + 43 -> 112 [ label = "" ] + 44 -> 42 [ label = "" ] + 44 -> 111 [ label = "" ] + 44 -> 113 [ label = "" ] + 44 -> 73 [ label = "" ] + 44 -> 74 [ label = "" ] + 44 -> 77 [ label = "" ] + 45 -> 114 [ label = "" ] + 45 -> 91 [ label = "" ] + 45 -> 59 [ label = "(build)" ] + 47 -> 68 [ label = "" ] + 48 -> 47 [ label = "" ] + 48 -> 115 [ label = "" ] + 49 -> 27 [ label = " 'cfg(unix)'" ] + 49 -> 50 [ label = "" ] + 49 -> 116 [ label = "" ] + 49 -> 51 [ label = "" ] + 49 -> 117 [ label = "" ] + 49 -> 118 [ label = "" ] + 49 -> 119 [ label = "" ] + 50 -> 120 [ label = "" ] + 50 -> 121 [ label = "" ] + 50 -> 51 [ label = "" ] + 51 -> 19 [ label = "" ] + 51 -> 122 [ label = "" ] + 53 -> 123 [ label = "" ] + 53 -> 124 [ label = "" ] + 53 -> 125 [ label = "" ] + 53 -> 83 [ label = "" ] + 54 -> 10 [ label = "" ] + 54 -> 40 [ label = "" ] + 56 -> 126 [ label = "" ] + 56 -> 126 [ label = " 'cfg(any())'" ] + 57 -> 73 [ label = "" ] + 57 -> 74 [ label = "" ] + 57 -> 77 [ label = "" ] 58 -> 21 [ label = "" ] - 43 -> 21 [ label = "" ] - 43 -> 58 [ label = "" ] - 68 -> 22 [ label = "" ] - 68 -> 58 [ label = "" ] - 44 -> 22 [ label = "" ] - 44 -> 68 [ label = "" ] - 75 -> 23 [ label = "" ] - 75 -> 76 [ label = "" ] - 77 -> 23 [ label = "" ] + 58 -> 55 [ label = "" ] + 58 -> 56 [ label = "" ] + 58 -> 127 [ label = "" ] + 59 -> 10 [ label = "" ] + 59 -> 13 [ label = " 'cfg(any(target_arch = \"aarch64\", target_arch = \"x86_64\", target_arch = \"x86\"))'" ] + 59 -> 128 [ label = "" ] + 60 -> 129 [ label = "" ] + 60 -> 130 [ label = " 'cfg(target_os = \"linux\")'" ] + 60 -> 131 [ label = " 'cfg(target_os = \"linux\")'" ] + 60 -> 130 [ label = " 'cfg(target_os = \"windows\")'" ] + 60 -> 131 [ label = " 'cfg(target_os = \"windows\")'" ] + 61 -> 47 [ label = "" ] + 61 -> 115 [ label = "" ] + 61 -> 48 [ label = "" ] + 61 -> 132 [ label = "" ] + 61 -> 68 [ label = "" ] + 62 -> 47 [ label = "" ] + 62 -> 115 [ label = "" ] + 62 -> 48 [ label = "" ] + 62 -> 132 [ label = "" ] + 62 -> 68 [ label = "" ] + 63 -> 64 [ label = "" ] + 64 -> 73 [ label = "" ] + 64 -> 74 [ label = "" ] + 64 -> 77 [ label = "" ] + 65 -> 83 [ label = "" ] + 71 -> 28 [ label = "" ] + 133 -> 4 [ label = "" ] + 123 -> 4 [ label = "" ] + 123 -> 133 [ label = "" ] + 124 -> 5 [ label = "" ] + 134 -> 12 [ label = "" ] + 134 -> 71 [ label = "" ] + 135 -> 12 [ label = "" ] + 135 -> 134 [ label = "" ] + 136 -> 12 [ label = "" ] + 136 -> 65 [ label = "" ] + 137 -> 12 [ label = "" ] + 137 -> 58 [ label = "" ] + 138 -> 12 [ label = "" ] + 138 -> 54 [ label = "" ] + 139 -> 12 [ label = "" ] + 139 -> 53 [ label = "" ] + 140 -> 12 [ label = "" ] + 140 -> 141 [ label = "" ] + 142 -> 12 [ label = "" ] + 142 -> 140 [ label = "" ] + 143 -> 12 [ label = "" ] + 143 -> 137 [ label = "" ] + 144 -> 12 [ label = "" ] + 144 -> 138 [ label = "" ] + 129 -> 12 [ label = "" ] + 129 -> 136 [ label = "" ] + 129 -> 143 [ label = "" ] + 129 -> 135 [ label = "" ] + 129 -> 144 [ label = "" ] + 129 -> 139 [ label = "" ] + 129 -> 142 [ label = "" ] + 128 -> 15 [ label = "" ] + 128 -> 145 [ label = "" ] + 145 -> 15 [ label = "" ] + 145 -> 146 [ label = "" ] + 146 -> 15 [ label = "" ] + 146 -> 6 [ label = "" ] + 89 -> 18 [ label = "" ] + 122 -> 19 [ label = "" ] + 147 -> 20 [ label = "" ] + 108 -> 20 [ label = "" ] + 108 -> 148 [ label = "" ] + 108 -> 147 [ label = "" ] + 148 -> 20 [ label = "" ] + 148 -> 0 [ label = "" ] + 149 -> 25 [ label = "" ] + 149 -> 97 [ label = "" ] + 101 -> 25 [ label = "" ] + 101 -> 149 [ label = "" ] + 150 -> 27 [ label = "" ] + 84 -> 27 [ label = "" ] + 84 -> 150 [ label = "" ] + 99 -> 29 [ label = "" ] + 98 -> 29 [ label = "" ] + 105 -> 30 [ label = "" ] + 105 -> 151 [ label = "" ] + 109 -> 30 [ label = "" ] + 109 -> 105 [ label = "" ] + 151 -> 30 [ label = "" ] + 106 -> 31 [ label = "" ] + 104 -> 32 [ label = "" ] + 104 -> 100 [ label = "" ] + 104 -> 99 [ label = "" ] + 152 -> 32 [ label = "" ] + 152 -> 27 [ label = "" ] + 153 -> 32 [ label = "" ] + 153 -> 8 [ label = "" ] + 102 -> 32 [ label = "" ] + 102 -> 153 [ label = "" ] + 102 -> 152 [ label = "" ] + 103 -> 32 [ label = "" ] + 103 -> 1 [ label = "" ] + 130 -> 33 [ label = "" ] + 130 -> 101 [ label = "" ] + 131 -> 33 [ label = "" ] + 97 -> 34 [ label = "" ] + 96 -> 34 [ label = "" ] + 154 -> 35 [ label = "" ] + 154 -> 155 [ label = "" ] + 154 -> 105 [ label = "" ] + 154 -> 106 [ label = "" ] + 85 -> 35 [ label = "" ] + 85 -> 154 [ label = "" ] + 155 -> 35 [ label = "" ] + 156 -> 36 [ label = "" ] + 156 -> 100 [ label = "" ] + 78 -> 36 [ label = "" ] + 78 -> 56 [ label = "" ] + 79 -> 36 [ label = "" ] + 79 -> 49 [ label = "" ] + 80 -> 36 [ label = "" ] + 80 -> 156 [ label = "" ] + 100 -> 38 [ label = "" ] + 107 -> 38 [ label = "" ] + 81 -> 38 [ label = "" ] + 81 -> 100 [ label = "" ] + 157 -> 39 [ label = "" ] + 157 -> 72 [ label = "" ] + 158 -> 39 [ label = "" ] + 114 -> 39 [ label = "" ] + 114 -> 157 [ label = "" ] + 72 -> 39 [ label = "" ] + 72 -> 158 [ label = "" ] + 111 -> 42 [ label = "" ] + 111 -> 110 [ label = "" ] + 111 -> 63 [ label = "" ] + 159 -> 42 [ label = "" ] + 159 -> 30 [ label = "" ] + 91 -> 42 [ label = "" ] + 91 -> 111 [ label = "" ] + 91 -> 159 [ label = "" ] + 160 -> 43 [ label = "" ] + 160 -> 111 [ label = "" ] + 160 -> 112 [ label = "" ] + 92 -> 43 [ label = "" ] + 92 -> 160 [ label = "" ] + 112 -> 44 [ label = "" ] + 112 -> 111 [ label = "" ] + 113 -> 45 [ label = "" ] + 121 -> 46 [ label = "" ] + 120 -> 46 [ label = "" ] + 115 -> 47 [ label = "" ] + 73 -> 47 [ label = "" ] + 73 -> 115 [ label = "" ] + 132 -> 48 [ label = "" ] + 132 -> 115 [ label = "" ] + 74 -> 48 [ label = "" ] + 74 -> 132 [ label = "" ] + 161 -> 49 [ label = "" ] + 161 -> 162 [ label = "" ] + 163 -> 49 [ label = "" ] + 163 -> 119 [ label = "" ] + 163 -> 116 [ label = "" ] + 163 -> 164 [ label = "" ] + 163 -> 165 [ label = "" ] + 163 -> 166 [ label = "" ] + 162 -> 49 [ label = "" ] + 162 -> 50 [ label = "" ] + 166 -> 49 [ label = "" ] + 166 -> 27 [ label = "" ] + 165 -> 49 [ label = "" ] + 165 -> 118 [ label = "" ] + 82 -> 49 [ label = "" ] + 82 -> 163 [ label = "" ] + 82 -> 161 [ label = "" ] + 164 -> 49 [ label = "" ] + 164 -> 117 [ label = "" ] + 116 -> 50 [ label = "" ] + 116 -> 121 [ label = "" ] + 119 -> 51 [ label = "" ] + 119 -> 117 [ label = "" ] + 119 -> 118 [ label = "" ] + 119 -> 122 [ label = "" ] + 118 -> 51 [ label = "" ] + 118 -> 19 [ label = "" ] + 117 -> 51 [ label = "" ] + 86 -> 54 [ label = "" ] + 127 -> 56 [ label = "" ] + 125 -> 56 [ label = "" ] + 125 -> 57 [ label = "" ] + 83 -> 56 [ label = "" ] + 83 -> 127 [ label = "" ] + 126 -> 57 [ label = "" ] + 167 -> 58 [ label = "" ] + 167 -> 127 [ label = "" ] + 87 -> 58 [ label = "" ] + 87 -> 167 [ label = "" ] + 90 -> 60 [ label = "" ] + 90 -> 33 [ label = "" ] + 168 -> 61 [ label = "" ] + 168 -> 48 [ label = "" ] + 169 -> 61 [ label = "" ] + 169 -> 115 [ label = "" ] + 169 -> 132 [ label = "" ] + 170 -> 61 [ label = "" ] + 170 -> 168 [ label = "" ] + 171 -> 61 [ label = "" ] + 93 -> 61 [ label = "" ] + 94 -> 61 [ label = "" ] + 172 -> 61 [ label = "" ] + 95 -> 61 [ label = "" ] + 95 -> 172 [ label = "" ] + 95 -> 171 [ label = "" ] + 95 -> 170 [ label = "" ] + 95 -> 173 [ label = "" ] + 95 -> 169 [ label = "" ] + 173 -> 61 [ label = "" ] + 76 -> 62 [ label = "" ] + 174 -> 62 [ label = "" ] + 174 -> 48 [ label = "" ] + 175 -> 62 [ label = "" ] + 175 -> 115 [ label = "" ] + 175 -> 132 [ label = "" ] + 176 -> 62 [ label = "" ] + 176 -> 174 [ label = "" ] + 177 -> 62 [ label = "" ] + 75 -> 62 [ label = "" ] + 178 -> 62 [ label = "" ] 77 -> 62 [ label = "" ] - 77 -> 59 [ label = "" ] - 77 -> 78 [ label = "" ] - 77 -> 79 [ label = "" ] - 77 -> 80 [ label = "" ] - 76 -> 23 [ label = "" ] - 76 -> 24 [ label = "" ] - 80 -> 23 [ label = "" ] - 80 -> 12 [ label = "" ] - 79 -> 23 [ label = "" ] - 79 -> 61 [ label = "" ] - 39 -> 23 [ label = "" ] - 39 -> 77 [ label = "" ] - 39 -> 75 [ label = "" ] - 78 -> 23 [ label = "" ] - 78 -> 60 [ label = "" ] - 59 -> 24 [ label = "" ] - 59 -> 64 [ label = "" ] - 62 -> 25 [ label = "" ] - 62 -> 60 [ label = "" ] - 62 -> 61 [ label = "" ] - 62 -> 65 [ label = "" ] - 61 -> 25 [ label = "" ] - 61 -> 8 [ label = "" ] - 60 -> 25 [ label = "" ] - 81 -> 27 [ label = "" ] - 40 -> 27 [ label = "" ] - 40 -> 81 [ label = "" ] - 42 -> 28 [ label = "" ] - 42 -> 15 [ label = "" ] - 82 -> 29 [ label = "" ] - 82 -> 22 [ label = "" ] - 83 -> 29 [ label = "" ] - 83 -> 58 [ label = "" ] - 83 -> 68 [ label = "" ] - 84 -> 29 [ label = "" ] - 84 -> 82 [ label = "" ] - 85 -> 29 [ label = "" ] - 45 -> 29 [ label = "" ] - 46 -> 29 [ label = "" ] - 86 -> 29 [ label = "" ] - 47 -> 29 [ label = "" ] - 47 -> 86 [ label = "" ] - 47 -> 85 [ label = "" ] - 47 -> 84 [ label = "" ] - 47 -> 87 [ label = "" ] - 47 -> 83 [ label = "" ] - 87 -> 29 [ label = "" ] - 88 -> 30 [ label = "" ] - 88 -> 22 [ label = "" ] - 89 -> 30 [ label = "" ] - 89 -> 58 [ label = "" ] - 89 -> 68 [ label = "" ] - 90 -> 30 [ label = "" ] - 90 -> 88 [ label = "" ] - 91 -> 30 [ label = "" ] - 92 -> 30 [ label = "" ] - 69 -> 30 [ label = "" ] - 69 -> 92 [ label = "" ] - 69 -> 91 [ label = "" ] - 69 -> 90 [ label = "" ] - 69 -> 93 [ label = "" ] - 69 -> 89 [ label = "" ] - 93 -> 30 [ label = "" ] + 77 -> 178 [ label = "" ] + 77 -> 177 [ label = "" ] + 77 -> 176 [ label = "" ] + 77 -> 179 [ label = "" ] + 77 -> 175 [ label = "" ] + 179 -> 62 [ label = "" ] + 88 -> 65 [ label = "" ] + 110 -> 67 [ label = "" ] }