diff options
author | Alex Auvolat <alex@adnab.me> | 2023-01-26 16:46:40 +0100 |
---|---|---|
committer | Alex Auvolat <alex@adnab.me> | 2023-01-26 16:46:40 +0100 |
commit | 590a0a84505c0bee8ddd8fcd8de6f340319da097 (patch) | |
tree | 14009c0feea6c27cdf36fe85a21dc22753da8653 | |
parent | dac254a6e7413498df0e3b626769c2d2be3a4cfb (diff) | |
parent | 611792ddcf86f0a728e22abaa6e172d3679d5ca6 (diff) | |
download | garage-590a0a84505c0bee8ddd8fcd8de6f340319da097.tar.gz garage-590a0a84505c0bee8ddd8fcd8de6f340319da097.zip |
Merge branch 'main' into k2v-watch-range-2
119 files changed, 23616 insertions, 3109 deletions
@@ -4,9 +4,9 @@ version = 3 [[package]] name = "addr2line" -version = "0.17.0" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" +checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" dependencies = [ "gimli", ] @@ -30,11 +30,11 @@ dependencies = [ [[package]] name = "ahash" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57e6e951cfbb2db8de1828d49073a113a29fd7117b1596caa781a258c7e38d72" +checksum = "bf6ccdb167abbf410dcb915cabd428929d7f6a04980b54a11f26a39f1c7f7107" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "getrandom", "once_cell", "version_check", @@ -42,33 +42,33 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "0.7.18" +version = "0.7.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" dependencies = [ "memchr", ] [[package]] -name = "ansi_term" -version = "0.12.1" +name = "android_system_properties" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" dependencies = [ - "winapi", + "libc", ] [[package]] name = "anyhow" -version = "1.0.56" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4361135be9122e0870de935d7c439aef945b9f9ddd4199a553b5270b49c82a27" +checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61" [[package]] name = "arc-swap" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5d78ce20460b82d3fa150275ed9d55e21064fc7951177baacf86a145c4a4b1f" +checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" [[package]] name = "arrayvec" @@ -78,9 +78,9 @@ checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] name = "assert-json-diff" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f1c3703dd33532d7f0ca049168930e9099ecac238e23cf932f3a69c42f06da" +checksum = "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12" dependencies = [ "serde", "serde_json", @@ -88,16 +88,16 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.3.10" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00461f243d703f6999c8e7494f077799f1362720a55ae49a90ffe6214032fc0b" +checksum = "942c7cd7ae39e91bde4820d74132e9862e62c2f386c3aa90ccf55949f5bad63a" dependencies = [ "futures-core", "memchr", "pin-project-lite", "tokio", - "zstd", - "zstd-safe", + "zstd 0.11.2+zstd.1.5.2", + "zstd-safe 5.0.2+zstd.1.5.2", ] [[package]] @@ -123,9 +123,9 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.52" +version = "0.1.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "061a7acccaa286c011ddc30970520b98fa40e00c9d644633fb26b5fc63a265e3" +checksum = "eff18d764974428cf3a9328e23fc5c986f5fbed46e6cd4cdf42544df5d297ec1" dependencies = [ "proc-macro2", "quote", @@ -138,22 +138,13 @@ version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "hermit-abi", + "hermit-abi 0.1.19", "libc", "winapi", ] [[package]] name = "autocfg" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dde43e75fd43e8a1bf86103336bc699aa8d17ad1be60c76c0bdfd4828e19b78" -dependencies = [ - "autocfg 1.1.0", -] - -[[package]] -name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" @@ -248,7 +239,7 @@ dependencies = [ "percent-encoding", "regex", "ring", - "time 0.3.9", + "time 0.3.17", "tracing", ] @@ -278,10 +269,10 @@ dependencies = [ "hex", "http", "http-body", - "md-5 0.10.1", + "md-5 0.10.5", "pin-project-lite", "sha1", - "sha2 0.10.2", + "sha2 0.10.6", "tracing", ] @@ -337,7 +328,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "tokio", - "tokio-util 0.7.0", + "tokio-util 0.7.4", "tracing", ] @@ -365,7 +356,7 @@ dependencies = [ "itoa", "num-integer", "ryu", - "time 0.3.9", + "time 0.3.17", ] [[package]] @@ -401,18 +392,18 @@ checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" dependencies = [ "getrandom", "instant", - "rand 0.8.5", + "rand", ] [[package]] name = "backtrace" -version = "0.3.66" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cab84319d616cfb654d03394f38ab7e6f0919e181b1b57e1fd15e7fb4077d9a7" +checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca" dependencies = [ "addr2line", "cc", - "cfg-if 1.0.0", + "cfg-if", "libc", "miniz_oxide", "object", @@ -421,9 +412,15 @@ dependencies = [ [[package]] name = "base64" -version = "0.13.0" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" [[package]] name = "bincode" @@ -442,13 +439,11 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "blake2" -version = "0.9.2" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a4e37d16930f5459780f5621038b6382b9bb37c19016f39fb6b5808d831f174" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" dependencies = [ - "crypto-mac 0.8.0", - "digest 0.9.0", - "opaque-debug", + "digest 0.10.6", ] [[package]] @@ -462,24 +457,24 @@ dependencies = [ [[package]] name = "block-buffer" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" +checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" dependencies = [ "generic-array", ] [[package]] name = "bumpalo" -version = "3.9.1" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899" +checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" [[package]] name = "bytemuck" -version = "1.9.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdead85bdec19c194affaeeb670c0e41fe23de31459efd1c174d049269cf02cc" +checksum = "c041d3eab048880cb0b86b256447da3f18859a163c3b8d8893f4e6368abe6393" [[package]] name = "byteorder" @@ -489,15 +484,15 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0b3de4a0c5e67e16066a0715723abd91edc2f9001d09c46e1dca929351e130e" +checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c" [[package]] name = "bytes-utils" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1934a3ef9cac8efde4966a92781e77713e1ba329f1d42e446c7d7eba340d8ef1" +checksum = "e47d3a8076e283f3acd27400535992edb3ba4b5bb72f8891ad8fbe7932a7d4b9" dependencies = [ "bytes", "either", @@ -511,21 +506,15 @@ checksum = "6c58ec36aac5066d5ca17df51b3e70279f5670a72102f5752cb7e7c856adfc70" [[package]] name = "cc" -version = "1.0.73" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +checksum = "a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d" dependencies = [ "jobserver", ] [[package]] name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" - -[[package]] -name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" @@ -538,15 +527,17 @@ checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" [[package]] name = "chrono" -version = "0.4.19" +version = "0.4.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" +checksum = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f" dependencies = [ - "libc", + "iana-time-zone", + "js-sys", "num-integer", "num-traits", "serde", - "time 0.1.44", + "time 0.1.45", + "wasm-bindgen", "winapi", ] @@ -557,32 +548,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" dependencies = [ "bitflags", - "textwrap 0.11.0", + "textwrap", "unicode-width", ] [[package]] name = "clap" -version = "3.1.18" +version = "4.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2dbdf4bdacb33466e854ce889eee8dfd5729abf7ccd7664d0a2d60cd384440b" +checksum = "d8d93d855ce6a0aa87b8473ef9169482f40abaa2e9e0993024c35c902cbd5920" dependencies = [ - "atty", "bitflags", "clap_derive", "clap_lex", - "indexmap", - "lazy_static", + "is-terminal", + "once_cell", "strsim", "termcolor", - "textwrap 0.15.0", ] [[package]] name = "clap_derive" -version = "3.1.18" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25320346e922cffe59c0bbc5410c8d8784509efb321488971081313cb1e1a33c" +checksum = "684a277d672e91966334af371f1a7b5833f9aa00b07c84e92fbce95e00208ce8" dependencies = [ "heck 0.4.0", "proc-macro-error", @@ -593,20 +582,21 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.2.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a37c35f1112dad5e6e0b1adaff798507497a18fceeb30cceb3bae7d1427b9213" +checksum = "783fe232adfca04f90f56201b26d79682d4cd2625e0bc7290b95123afe558ade" dependencies = [ "os_str_bytes", ] [[package]] -name = "cloudabi" -version = "0.0.3" +name = "codespan-reporting" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" dependencies = [ - "bitflags", + "termcolor", + "unicode-width", ] [[package]] @@ -627,9 +617,9 @@ checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" [[package]] name = "cpufeatures" -version = "0.2.2" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b" +checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" dependencies = [ "libc", ] @@ -649,60 +639,49 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] name = "crossbeam-channel" -version = "0.5.4" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53" +checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" dependencies = [ - "cfg-if 1.0.0", - "crossbeam-utils 0.8.8", + "cfg-if", + "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.8" +version = "0.9.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c" +checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a" dependencies = [ - "autocfg 1.1.0", - "cfg-if 1.0.0", - "crossbeam-utils 0.8.8", - "lazy_static", + "autocfg", + "cfg-if", + "crossbeam-utils", "memoffset", "scopeguard", ] [[package]] name = "crossbeam-queue" -version = "0.1.2" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b" +checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" dependencies = [ - "crossbeam-utils 0.6.6", + "cfg-if", + "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.6.6" +version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6" +checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" dependencies = [ - "cfg-if 0.1.10", - "lazy_static", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38" -dependencies = [ - "cfg-if 1.0.0", - "lazy_static", + "cfg-if", ] [[package]] @@ -717,16 +696,6 @@ dependencies = [ [[package]] name = "crypto-mac" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" -dependencies = [ - "generic-array", - "subtle", -] - -[[package]] -name = "crypto-mac" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" @@ -745,10 +714,54 @@ dependencies = [ ] [[package]] +name = "cxx" +version = "1.0.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b61a7545f753a88bcbe0a70de1fcc0221e10bfc752f576754fa91e663db1622e" +dependencies = [ + "cc", + "cxxbridge-flags", + "cxxbridge-macro", + "link-cplusplus", +] + +[[package]] +name = "cxx-build" +version = "1.0.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f464457d494b5ed6905c63b0c4704842aba319084a0a3561cdc1359536b53200" +dependencies = [ + "cc", + "codespan-reporting", + "once_cell", + "proc-macro2", + "quote", + "scratch", + "syn", +] + +[[package]] +name = "cxxbridge-flags" +version = "1.0.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43c7119ce3a3701ed81aca8410b9acf6fc399d2629d057b87e2efa4e63a3aaea" + +[[package]] +name = "cxxbridge-macro" +version = "1.0.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65e07508b90551e610910fa648a1878991d367064997a596135b86df30daf07e" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] name = "darling" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4529658bdda7fd6769b8614be250cdcfc3aeb0ee72fe66f9e41e5e5eb73eac02" +checksum = "b0dd3cd20dc6b5a876612a6e5accfe7f3dd883db6d07acfbf14c128f61550dfa" dependencies = [ "darling_core", "darling_macro", @@ -756,9 +769,9 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "649c91bc01e8b1eac09fb91e8dbc7d517684ca6be8ebc75bb9cafc894f9fdb6f" +checksum = "a784d2ccaf7c98501746bf0be29b2022ba41fd62a2e622af997a03e9f972859f" dependencies = [ "fnv", "ident_case", @@ -770,9 +783,9 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddfc69c5bfcbd2fc09a0f38451d2daf0e372e367986a83906d1b0dbc88134fb5" +checksum = "7618812407e9402654622dd402b0a89dff9ba93badd6540781526117b92aab7e" dependencies = [ "darling_core", "quote", @@ -785,7 +798,7 @@ version = "4.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e77a43b28d0668df09411cb0bc9a8c2adc40f9a048afe863e05fd43251e8e39c" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "num_cpus", ] @@ -811,11 +824,11 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.3" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" +checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" dependencies = [ - "block-buffer 0.10.2", + "block-buffer 0.10.3", "crypto-common", "subtle", ] @@ -826,7 +839,7 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "dirs-sys-next", ] @@ -843,23 +856,23 @@ dependencies = [ [[package]] name = "dyn-clone" -version = "1.0.5" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21e50f3adc76d6a43f5ed73b698a87d0760ca74617f60f7c3b879003536fdd28" +checksum = "c9b0705efd4599c15a38151f4721f7bc388306f61084d3bfd50bd07fbca5cb60" [[package]] name = "either" -version = "1.6.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" +checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" [[package]] name = "encoding_rs" -version = "0.8.30" +version = "0.8.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dc8abb250ffdda33912550faa54c88ec8b998dec0b2c55ab224921ce11df" +checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] @@ -890,6 +903,27 @@ dependencies = [ ] [[package]] +name = "errno" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" +dependencies = [ + "errno-dragonfly", + "libc", + "winapi", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + +[[package]] name = "fallible-iterator" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -903,18 +937,18 @@ checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" [[package]] name = "fastrand" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf" +checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" dependencies = [ "instant", ] [[package]] name = "fixedbitset" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "279fb028e20b3c4c320317955b77c5e0c9701f05a1d309905d6fc702cdc5053e" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "fnv" @@ -924,11 +958,10 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "form_urlencoded" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" dependencies = [ - "matches", "percent-encoding", ] @@ -943,16 +976,10 @@ dependencies = [ ] [[package]] -name = "fuchsia-cprng" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" - -[[package]] name = "futures" -version = "0.3.21" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9e" +checksum = "38390104763dc37a5145a53c29c63c1290b5d316d6086ec32c293f6736051bb0" dependencies = [ "futures-channel", "futures-core", @@ -965,9 +992,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.21" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" +checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" dependencies = [ "futures-core", "futures-sink", @@ -975,15 +1002,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.21" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" +checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" [[package]] name = "futures-executor" -version = "0.3.21" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6" +checksum = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2" dependencies = [ "futures-core", "futures-task", @@ -992,15 +1019,15 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.21" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" +checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb" [[package]] name = "futures-macro" -version = "0.3.21" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512" +checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d" dependencies = [ "proc-macro2", "quote", @@ -1009,21 +1036,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.21" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868" +checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9" [[package]] name = "futures-task" -version = "0.3.21" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" +checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" [[package]] name = "futures-util" -version = "0.3.21" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" +checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" dependencies = [ "futures-channel", "futures-core", @@ -1054,7 +1081,7 @@ dependencies = [ "async-trait", "aws-sdk-s3", "backtrace", - "base64", + "base64 0.21.0", "bytes", "bytesize", "chrono", @@ -1079,11 +1106,11 @@ dependencies = [ "opentelemetry-prometheus", "parse_duration", "prometheus", - "rand 0.8.5", + "rand", "serde", "serde_bytes", "serde_json", - "sha2 0.10.2", + "sha2 0.10.6", "static_init", "structopt", "timeago", @@ -1098,7 +1125,7 @@ name = "garage_api" version = "0.8.1" dependencies = [ "async-trait", - "base64", + "base64 0.21.0", "bytes", "chrono", "crypto-common", @@ -1115,10 +1142,10 @@ dependencies = [ "hmac 0.12.1", "http", "http-range", - "httpdate 0.3.2", + "httpdate", "hyper", "idna", - "md-5 0.10.1", + "md-5 0.10.5", "multer", "nom", "opentelemetry", @@ -1131,7 +1158,7 @@ dependencies = [ "serde", "serde_bytes", "serde_json", - "sha2 0.10.2", + "sha2 0.10.6", "tokio", "tokio-stream", "tracing", @@ -1154,20 +1181,20 @@ dependencies = [ "garage_util", "hex", "opentelemetry", - "rand 0.8.5", + "rand", "serde", "serde_bytes", "tokio", - "tokio-util 0.6.9", + "tokio-util 0.6.10", "tracing", - "zstd", + "zstd 0.12.2+zstd.1.5.2", ] [[package]] name = "garage_db" version = "0.8.1" dependencies = [ - "clap 3.1.18", + "clap 4.1.3", "err-derive", "heed", "hexdump", @@ -1184,7 +1211,7 @@ version = "0.8.1" dependencies = [ "arc-swap", "async-trait", - "base64", + "base64 0.21.0", "blake2", "err-derive", "futures", @@ -1197,12 +1224,12 @@ dependencies = [ "hex", "netapp", "opentelemetry", - "rand 0.8.5", + "rand", "serde", "serde_bytes", "tokio", "tracing", - "zstd", + "zstd 0.12.2+zstd.1.5.2", ] [[package]] @@ -1224,12 +1251,13 @@ dependencies = [ "netapp", "opentelemetry", "pnet_datalink", - "rand 0.8.5", + "rand", "reqwest", "schemars", "serde", "serde_bytes", "serde_json", + "systemstat", "tokio", "tokio-stream", "tracing", @@ -1250,7 +1278,7 @@ dependencies = [ "hex", "hexdump", "opentelemetry", - "rand 0.8.5", + "rand", "serde", "serde_bytes", "tokio", @@ -1266,7 +1294,7 @@ dependencies = [ "blake2", "bytes", "chrono", - "digest 0.10.3", + "digest 0.10.6", "err-derive", "futures", "garage_db", @@ -1279,11 +1307,11 @@ dependencies = [ "mktemp", "netapp", "opentelemetry", - "rand 0.8.5", + "rand", "rmp-serde", "serde", "serde_json", - "sha2 0.10.2", + "sha2 0.10.6", "tokio", "toml", "tracing", @@ -1309,9 +1337,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.5" +version = "0.14.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803" +checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" dependencies = [ "typenum", "version_check", @@ -1329,20 +1357,20 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.5" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d39cd93900197114fa1fcb7ae84ca742095eed9442088988ae74fa744e930e77" +checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", - "wasi 0.10.0+wasi-snapshot-preview1", + "wasi 0.11.0+wasi-snapshot-preview1", ] [[package]] name = "gimli" -version = "0.26.2" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" +checksum = "221996f774192f0f718773def8201c4ae31f02616a54ccfc2d358bb0e5cefdec" [[package]] name = "git-version" @@ -1368,9 +1396,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.12" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62eeb471aa3e3c9197aa4bfeabfe02982f6dc96f750486c0bb0009ac58b26d2b" +checksum = "5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4" dependencies = [ "bytes", "fnv", @@ -1381,24 +1409,24 @@ dependencies = [ "indexmap", "slab", "tokio", - "tokio-util 0.6.9", + "tokio-util 0.7.4", "tracing", ] [[package]] name = "hashbrown" -version = "0.11.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ "ahash 0.7.6", ] [[package]] name = "hashlink" -version = "0.7.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7249a3129cbc1ffccd74857f81464a323a152173cdb134e0fd81bc803b29facf" +checksum = "69fe1fcf8b4278d860ad0548329f892a3631fb63f82574df68275f34cdbe0ffa" dependencies = [ "hashbrown", ] @@ -1466,6 +1494,15 @@ dependencies = [ ] [[package]] +name = "hermit-abi" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" +dependencies = [ + "libc", +] + +[[package]] name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1487,7 +1524,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" dependencies = [ - "crypto-mac 0.11.1", + "crypto-mac", "digest 0.9.0", ] @@ -1497,7 +1534,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest 0.10.3", + "digest 0.10.6", ] [[package]] @@ -1536,15 +1573,9 @@ checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29" [[package]] name = "httparse" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9100414882e15fb7feccb4897e5f0ff0ff1ca7d1a86a23208ada4d7a18e6c6c4" - -[[package]] -name = "httpdate" -version = "0.3.2" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" @@ -1563,9 +1594,9 @@ dependencies = [ [[package]] name = "hyper" -version = "0.14.18" +version = "0.14.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b26ae0a80afebe130861d90abf98e3814a4f28a4c6ffeb5ab8ebb2be311e0ef2" +checksum = "034711faac9d2166cb1baf1a2fb0b60b1f277f8492fd72176c17f3515e1abd3c" dependencies = [ "bytes", "futures-channel", @@ -1575,7 +1606,7 @@ dependencies = [ "http", "http-body", "httparse", - "httpdate 1.0.2", + "httpdate", "itoa", "pin-project-lite", "socket2", @@ -1604,14 +1635,14 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.23.0" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d87c48c02e0dc5e3b849a2041db3029fd066650f8f717c07bf8ed78ccb895cac" +checksum = "1788965e61b367cd03a62950836d5cd41560c3577d90e40e0819373194d1661c" dependencies = [ "http", "hyper", "log", - "rustls 0.20.6", + "rustls 0.20.8", "rustls-native-certs 0.6.2", "tokio", "tokio-rustls 0.23.4", @@ -1630,6 +1661,30 @@ dependencies = [ ] [[package]] +name = "iana-time-zone" +version = "0.1.53" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "winapi", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" +dependencies = [ + "cxx", + "cxx-build", +] + +[[package]] name = "ident_case" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1637,22 +1692,21 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.2.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" dependencies = [ - "matches", "unicode-bidi", "unicode-normalization", ] [[package]] name = "indexmap" -version = "1.8.0" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282a6247722caba404c065016bbfa522806e51714c34f5dfc3e4a3a46fcb4223" +checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" dependencies = [ - "autocfg 1.1.0", + "autocfg", "hashbrown", ] @@ -1662,14 +1716,24 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", +] + +[[package]] +name = "io-lifetimes" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7d6c6f8c91b4b9ed43484ad1a938e393caf35960fce7f82a040497207bd8e9e" +dependencies = [ + "libc", + "windows-sys", ] [[package]] name = "ipnet" -version = "2.5.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b" +checksum = "30e22bd8629359895450b59ea7a776c850561b96a3b1d31321c1949d9e6c9146" [[package]] name = "ipnetwork" @@ -1681,13 +1745,24 @@ dependencies = [ ] [[package]] +name = "is-terminal" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dfb6c8100ccc63462345b67d1bbc3679177c75ee4bf59bf29c8b1d110b8189" +dependencies = [ + "hermit-abi 0.2.6", + "io-lifetimes", + "rustix", + "windows-sys", +] + +[[package]] name = "isolang" -version = "1.0.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "265ef164908329e47e753c769b14cbb27434abf0c41984dca201484022f09ce5" +checksum = "b64fd6448ee8a45ce6e4365c58e4fa7d8740cba2ed70db3e9ab4879ebd93eaaa" dependencies = [ "phf", - "phf_codegen", ] [[package]] @@ -1698,42 +1773,42 @@ checksum = "c4a9b56eb56058f43dc66e58f40a214b2ccbc9f3df51861b63d51dec7b65bc3f" [[package]] name = "itertools" -version = "0.10.3" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" dependencies = [ "either", ] [[package]] name = "itoa" -version = "1.0.1" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" +checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" [[package]] name = "jobserver" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fa" +checksum = "068b1ee6743e4d11fb9c6a1e6064b3693a1b600e7f5f5988047d98b3dc9fb90b" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.56" +version = "0.3.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a38fc24e30fd564ce974c02bf1d337caddff65be6cc4735a1f7eab22a7440f04" +checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" dependencies = [ "wasm-bindgen", ] [[package]] name = "json-patch" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f995a3c8f2bc3dd52a18a583e90f9ec109c047fa1603a853e46bcda14d2e279d" +checksum = "eb3fa5a61630976fc4c353c70297f2e93f1930e3ccee574d59d618ccbd5154ce" dependencies = [ "serde", "serde_json", @@ -1755,11 +1830,11 @@ dependencies = [ name = "k2v-client" version = "0.1.1" dependencies = [ - "base64", - "clap 3.1.18", + "base64 0.21.0", + "clap 4.1.3", "garage_util", "http", - "hyper-rustls 0.23.0", + "hyper-rustls 0.23.2", "log", "rusoto_core", "rusoto_credential", @@ -1776,7 +1851,7 @@ version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d9455388f4977de4d0934efa9f7d36296295537d774574113a20f6082de03da" dependencies = [ - "base64", + "base64 0.13.1", "bytes", "chrono", "http", @@ -1806,7 +1881,7 @@ version = "0.75.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97e1a80ecd1b1438a2fc004549e155d47250b9e01fbfcf4cfbe9c8b56a085593" dependencies = [ - "base64", + "base64 0.13.1", "bytes", "chrono", "dirs-next", @@ -1815,14 +1890,14 @@ dependencies = [ "http", "http-body", "hyper", - "hyper-rustls 0.23.0", + "hyper-rustls 0.23.2", "hyper-timeout", "jsonpath_lib", "k8s-openapi", "kube-core", "pem", "pin-project", - "rustls 0.20.6", + "rustls 0.20.8", "rustls-pemfile", "secrecy", "serde", @@ -1830,7 +1905,7 @@ dependencies = [ "serde_yaml", "thiserror", "tokio", - "tokio-util 0.7.0", + "tokio-util 0.7.4", "tower", "tower-http", "tracing", @@ -1873,21 +1948,21 @@ version = "0.75.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7769af142ee2e46bfa44bd393cf7f40b9d8b80d2e11f6317399551ed17760beb" dependencies = [ - "ahash 0.8.0", + "ahash 0.8.2", "backoff", "derivative", "futures", "json-patch", "k8s-openapi", "kube-client", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "pin-project", "serde", "serde_json", "smallvec", "thiserror", "tokio", - "tokio-util 0.7.0", + "tokio-util 0.7.4", "tracing", ] @@ -1923,9 +1998,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.121" +version = "0.2.139" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efaa7b300f3b5fe8eb6bf21ce3895e1751d9665086af2d64b42f19701015ff4f" +checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" [[package]] name = "libsodium-sys" @@ -1941,9 +2016,9 @@ dependencies = [ [[package]] name = "libsqlite3-sys" -version = "0.24.2" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "898745e570c7d0453cc1fbc4a701eb6c662ed54e8fec8b7d14be137ebeeb9d14" +checksum = "29f835d03d717946d28b1d1ed632eb6f0e24a299388ee623d0c23118d3e8a7fa" dependencies = [ "cc", "pkg-config", @@ -1951,10 +2026,25 @@ dependencies = [ ] [[package]] +name = "link-cplusplus" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" +dependencies = [ + "cc", +] + +[[package]] name = "linked-hash-map" -version = "0.5.4" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "linux-raw-sys" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" +checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" [[package]] name = "lmdb-rkv-sys" @@ -1969,20 +2059,21 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.4.6" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" dependencies = [ + "autocfg", "scopeguard", ] [[package]] name = "log" -version = "0.4.16" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6389c490849ff5bc16be905ae24bc913a9c8892e19b2341dbc175e14c341c2b8" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] @@ -1995,12 +2086,6 @@ dependencies = [ ] [[package]] -name = "matches" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" - -[[package]] name = "md-5" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2013,26 +2098,26 @@ dependencies = [ [[package]] name = "md-5" -version = "0.10.1" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658646b21e0b72f7866c7038ab086d3d5e1cd6271f060fd37defb241949d0582" +checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" dependencies = [ - "digest 0.10.3", + "digest 0.10.6", ] [[package]] name = "memchr" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memoffset" -version = "0.6.5" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" dependencies = [ - "autocfg 1.1.0", + "autocfg", ] [[package]] @@ -2049,50 +2134,39 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.5.4" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96590ba8f175222643a85693f33d26e9c8a015f599c216509b1a6894af675d34" +checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" dependencies = [ "adler", ] [[package]] name = "mio" -version = "0.8.2" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52da4364ffb0e4fe33a9841a98a3f3014fb964045ce4f7a45a398243c8d6b0c9" +checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" dependencies = [ "libc", "log", - "miow", - "ntapi", "wasi 0.11.0+wasi-snapshot-preview1", - "winapi", -] - -[[package]] -name = "miow" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" -dependencies = [ - "winapi", + "windows-sys", ] [[package]] name = "mktemp" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "975de676448231fcde04b9149d2543077e166b78fc29eae5aa219e7928410da2" +checksum = "4bdc1f74dd7bb717d39f784f844e490d935b3aa7e383008006dbbf29c1f7820a" dependencies = [ "uuid", ] [[package]] name = "multer" -version = "2.0.2" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f8f35e687561d5c1667590911e6698a8cb714a134a7505718a182e7bc9d3836" +checksum = "6ed4198ce7a4cbd2a57af78d28c6fbb57d81ac5f1d6ad79ac6c5587419cbdf22" dependencies = [ "bytes", "encoding_rs", @@ -2102,7 +2176,7 @@ dependencies = [ "log", "memchr", "mime", - "spin 0.9.2", + "spin 0.9.4", "version_check", ] @@ -2121,7 +2195,7 @@ dependencies = [ "arc-swap", "async-trait", "bytes", - "cfg-if 1.0.0", + "cfg-if", "err-derive", "futures", "hex", @@ -2131,30 +2205,40 @@ dependencies = [ "opentelemetry", "opentelemetry-contrib", "pin-project", - "rand 0.8.5", + "rand", "rmp-serde", "serde", "tokio", "tokio-stream", - "tokio-util 0.7.0", + "tokio-util 0.7.4", ] [[package]] name = "nom" -version = "7.1.1" +version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" dependencies = [ "memchr", "minimal-lexical", ] [[package]] -name = "ntapi" -version = "0.3.7" +name = "nom8" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae01545c9c7fc4486ab7debaf2aad7003ac19431791868fb2e8066df97fad2f8" +dependencies = [ + "memchr", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" dependencies = [ + "overload", "winapi", ] @@ -2178,7 +2262,7 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" dependencies = [ - "autocfg 1.1.0", + "autocfg", "num-integer", "num-traits", ] @@ -2189,17 +2273,17 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" dependencies = [ - "autocfg 1.1.0", + "autocfg", "num-traits", ] [[package]] name = "num-integer" -version = "0.1.44" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" dependencies = [ - "autocfg 1.1.0", + "autocfg", "num-traits", ] @@ -2209,7 +2293,7 @@ version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" dependencies = [ - "autocfg 1.1.0", + "autocfg", "num-integer", "num-traits", ] @@ -2220,7 +2304,7 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" dependencies = [ - "autocfg 1.1.0", + "autocfg", "num-bigint", "num-integer", "num-traits", @@ -2228,46 +2312,37 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" dependencies = [ - "autocfg 1.1.0", + "autocfg", ] [[package]] name = "num_cpus" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "num_threads" -version = "0.1.5" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aba1801fb138d8e85e11d0fc70baf4fe1cdfffda7c6cd34a854905df588e5ed0" +checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" dependencies = [ + "hermit-abi 0.2.6", "libc", ] [[package]] name = "object" -version = "0.29.0" +version = "0.30.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53" +checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.10.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9" +checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" [[package]] name = "opaque-debug" @@ -2298,7 +2373,7 @@ dependencies = [ "lazy_static", "percent-encoding", "pin-project", - "rand 0.8.5", + "rand", "thiserror", "tokio", "tokio-stream", @@ -2354,9 +2429,15 @@ dependencies = [ [[package]] name = "os_str_bytes" -version = "6.0.1" +version = "6.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "029d8d0b2f198229de29dca79676f2738ff952edf3fde542eb8bf94d8c21b435" +checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "page_size" @@ -2376,26 +2457,26 @@ checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" dependencies = [ "instant", "lock_api", - "parking_lot_core 0.8.5", + "parking_lot_core 0.8.6", ] [[package]] name = "parking_lot" -version = "0.12.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f5ec2493a61ac0506c0f4199f99070cbe83857b0337006a30f3e6719b8ef58" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.1", + "parking_lot_core 0.9.6", ] [[package]] name = "parking_lot_core" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "instant", "libc", "redox_syscall", @@ -2405,11 +2486,11 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.1" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28141e0cc4143da2443301914478dc976a61ffdb3f043058310c70df2fed8954" +checksum = "ba1ef8814b5c993410bb3adfad7a5ed269563e4a2f90c41f5d85be7fb47133bf" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", "redox_syscall", "smallvec", @@ -2428,25 +2509,31 @@ dependencies = [ ] [[package]] +name = "paste" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d01a5bd0424d00070b0098dd17ebca6f961a959dead1dbcbbbc1d1cd8d3deeba" + +[[package]] name = "pem" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c64931a1a212348ec4f3b4362585eca7159d0d09cbdf4a7f74f02173596fd4" +checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" dependencies = [ - "base64", + "base64 0.13.1", ] [[package]] name = "percent-encoding" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" [[package]] name = "petgraph" -version = "0.6.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a13a2fa9d0b63e5f22328828741e523766fff0ee9e779316902290dff3f824f" +checksum = "e6d5014253a1331579ce62aa67443b4a658c5e7dd03d4bc6d302b94474888143" dependencies = [ "fixedbitset", "indexmap", @@ -2454,38 +2541,18 @@ dependencies = [ [[package]] name = "phf" -version = "0.7.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3da44b85f8e8dfaec21adae67f95d93244b2ecf6ad2a692320598dcc8e6dd18" -dependencies = [ - "phf_shared", -] - -[[package]] -name = "phf_codegen" -version = "0.7.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b03e85129e324ad4166b06b2c7491ae27fe3ec353af72e72cd1654c7225d517e" -dependencies = [ - "phf_generator", - "phf_shared", -] - -[[package]] -name = "phf_generator" -version = "0.7.24" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09364cc93c159b8b06b1f4dd8a4398984503483891b0c26b867cf431fb132662" +checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" dependencies = [ "phf_shared", - "rand 0.6.5", ] [[package]] name = "phf_shared" -version = "0.7.24" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234f71a15de2288bcb7e3b6515828d22af7ec8598ee6d24c3b526fa0a80b67a0" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" dependencies = [ "siphasher", ] @@ -2524,9 +2591,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.24" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe" +checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" [[package]] name = "pnet_base" @@ -2559,9 +2626,9 @@ dependencies = [ [[package]] name = "ppv-lite86" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "pretty_env_logger" @@ -2599,30 +2666,30 @@ dependencies = [ [[package]] name = "proc-macro-hack" -version = "0.5.19" +version = "0.5.20+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.46" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94e2ef8dbfc347b10c094890f778ee2e36ca9bb4262e86dc99cd217e35f3470b" +checksum = "6ef7d57beacfaf2d8aee5937dab7b7f28de3cb8b1828479bb5de2a7106f2bae2" dependencies = [ "unicode-ident", ] [[package]] name = "prometheus" -version = "0.13.0" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7f64969ffd5dd8f39bd57a68ac53c163a095ed9d0fb707146da1b27025a3504" +checksum = "449811d15fbdf5ceb5c1144416066429cf82316e2ec8ce0c1f6f8a02e7bbcf8c" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "fnv", "lazy_static", "memchr", - "parking_lot 0.11.2", + "parking_lot 0.12.1", "protobuf", "thiserror", ] @@ -2645,7 +2712,7 @@ checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5" dependencies = [ "bytes", "heck 0.3.3", - "itertools 0.10.3", + "itertools 0.10.5", "lazy_static", "log", "multimap", @@ -2664,7 +2731,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe" dependencies = [ "anyhow", - "itertools 0.10.3", + "itertools 0.10.5", "proc-macro2", "quote", "syn", @@ -2682,9 +2749,9 @@ dependencies = [ [[package]] name = "protobuf" -version = "2.27.1" +version = "2.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf7e6d18738ecd0902d30d1ad232c9125985a3422929b16c65517b38adc14f96" +checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" [[package]] name = "quick-error" @@ -2704,51 +2771,22 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" dependencies = [ "proc-macro2", ] [[package]] name = "rand" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" -dependencies = [ - "autocfg 0.1.8", - "libc", - "rand_chacha 0.1.1", - "rand_core 0.4.2", - "rand_hc", - "rand_isaac", - "rand_jitter", - "rand_os", - "rand_pcg", - "rand_xorshift", - "winapi", -] - -[[package]] -name = "rand" version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.3", -] - -[[package]] -name = "rand_chacha" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" -dependencies = [ - "autocfg 0.1.8", - "rand_core 0.3.1", + "rand_chacha", + "rand_core", ] [[package]] @@ -2758,118 +2796,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.3", + "rand_core", ] [[package]] name = "rand_core" -version = "0.3.1" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -dependencies = [ - "rand_core 0.4.2", -] - -[[package]] -name = "rand_core" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" - -[[package]] -name = "rand_core" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ "getrandom", ] [[package]] -name = "rand_hc" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" -dependencies = [ - "rand_core 0.3.1", -] - -[[package]] -name = "rand_isaac" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" -dependencies = [ - "rand_core 0.3.1", -] - -[[package]] -name = "rand_jitter" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" -dependencies = [ - "libc", - "rand_core 0.4.2", - "winapi", -] - -[[package]] -name = "rand_os" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" -dependencies = [ - "cloudabi", - "fuchsia-cprng", - "libc", - "rand_core 0.4.2", - "rdrand", - "winapi", -] - -[[package]] -name = "rand_pcg" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" -dependencies = [ - "autocfg 0.1.8", - "rand_core 0.4.2", -] - -[[package]] -name = "rand_xorshift" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" -dependencies = [ - "rand_core 0.3.1", -] - -[[package]] -name = "rdrand" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" -dependencies = [ - "rand_core 0.3.1", -] - -[[package]] name = "redox_syscall" -version = "0.2.11" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8380fe0152551244f0747b1bf41737e0f8a74f97a14ccefd1148187271634f3c" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" dependencies = [ "bitflags", ] [[package]] name = "redox_users" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7776223e2696f1aa4c6b0170e83212f47296a00424305117d013dfe86fb0fe55" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ "getrandom", "redox_syscall", @@ -2878,9 +2830,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.5.5" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286" +checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" dependencies = [ "aho-corasick", "memchr", @@ -2898,9 +2850,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.25" +version = "0.6.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" +checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" [[package]] name = "remove_dir_all" @@ -2913,11 +2865,11 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.11.12" +version = "0.11.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "431949c384f4e2ae07605ccaa56d1d9d2ecdb5cadd4f9577ccfab29f2e5149fc" +checksum = "21eed90ec8570952d53b772ecf8f206aa1ec9a3d76b2521c56c42973f2d91ee9" dependencies = [ - "base64", + "base64 0.21.0", "bytes", "encoding_rs", "futures-core", @@ -2926,7 +2878,7 @@ dependencies = [ "http", "http-body", "hyper", - "hyper-rustls 0.23.0", + "hyper-rustls 0.23.2", "ipnet", "js-sys", "log", @@ -2934,7 +2886,7 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls 0.20.6", + "rustls 0.20.8", "rustls-pemfile", "serde", "serde_json", @@ -2966,12 +2918,13 @@ dependencies = [ [[package]] name = "rmp" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f55e5fa1446c4d5dd1f5daeed2a4fe193071771a2636274d0d7a3b082aa7ad6" +checksum = "44519172358fd6d58656c86ab8e7fbc9e1490c3e8f14d35ed78ca0dd07403c9f" dependencies = [ "byteorder", "num-traits", + "paste", ] [[package]] @@ -3001,13 +2954,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1db30db44ea73551326269adcf7a2169428a054f14faf9e1768f2163494f2fa2" dependencies = [ "async-trait", - "base64", + "base64 0.13.1", "bytes", "crc32fast", "futures", "http", "hyper", - "hyper-rustls 0.23.0", + "hyper-rustls 0.23.2", "lazy_static", "log", "rusoto_credential", @@ -3043,7 +2996,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5ae95491c8b4847931e291b151127eccd6ff8ca13f33603eb3d0035ecb05272" dependencies = [ - "base64", + "base64 0.13.1", "bytes", "chrono", "digest 0.9.0", @@ -3065,16 +3018,15 @@ dependencies = [ [[package]] name = "rusqlite" -version = "0.27.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85127183a999f7db96d1a976a309eebbfb6ea3b0b400ddd8340190129de6eb7a" +checksum = "01e213bc3ecb39ac32e81e51ebe31fd888a940515173e3a18a35f8c6e896422a" dependencies = [ "bitflags", "fallible-iterator", "fallible-streaming-iterator", "hashlink", "libsqlite3-sys", - "memchr", "smallvec", ] @@ -3094,12 +3046,26 @@ dependencies = [ ] [[package]] +name = "rustix" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fdebc4b395b7fbb9ab11e462e20ed9051e7b16e42d24042c776eca0ac81b03" +dependencies = [ + "bitflags", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys", + "windows-sys", +] + +[[package]] name = "rustls" version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" dependencies = [ - "base64", + "base64 0.13.1", "log", "ring", "sct 0.6.1", @@ -3108,9 +3074,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.20.6" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aab8ee6c7097ed6057f43c187a62418d0c05a4bd5f18b3571db50ee0f9ce033" +checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" dependencies = [ "log", "ring", @@ -3144,24 +3110,24 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0864aeff53f8c05aa08d86e5ef839d3dfcf07aeba2db32f12db0ef716e87bd55" +checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" dependencies = [ - "base64", + "base64 0.21.0", ] [[package]] name = "rustversion" -version = "1.0.6" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f" +checksum = "5583e89e108996506031660fe09baa5011b9dd0341b89029313006d1fb508d70" [[package]] name = "ryu" -version = "1.0.9" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" +checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" [[package]] name = "same-file" @@ -3174,19 +3140,18 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.19" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" +checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" dependencies = [ - "lazy_static", - "winapi", + "windows-sys", ] [[package]] name = "schemars" -version = "0.8.8" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6b5a3c80cea1ab61f4260238409510e814e38b4b563c06044edf91e7dc070e3" +checksum = "2a5fb6c61f29e723026dc8e923d94c694313212abbecbbe5f55a7748eec5b307" dependencies = [ "dyn-clone", "schemars_derive", @@ -3196,9 +3161,9 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.8" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41ae4dce13e8614c46ac3c38ef1c0d668b101df6ac39817aebdaa26642ddae9b" +checksum = "f188d036977451159430f3b8dc82ec76364a42b7e289c2b18a9a18f4470058e9" dependencies = [ "proc-macro2", "quote", @@ -3213,6 +3178,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] +name = "scratch" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddccb15bcce173023b3fedd9436f882a0739b8dfb45e4f6b6002bee5929f61b2" + +[[package]] name = "sct" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3244,9 +3215,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.6.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc" +checksum = "645926f31b250a2dca3c232496c2d898d91036e45ca0e97e0e2390c54e11be36" dependencies = [ "bitflags", "core-foundation", @@ -3257,9 +3228,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.6.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" +checksum = "31c9bb296072e961fcbd8853511dd39c2d8be2deb1e17c6860b1d30732b323b4" dependencies = [ "core-foundation-sys", "libc", @@ -3267,15 +3238,15 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.6" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a3381e03edd24287172047536f20cabde766e2cd3e65e6b00fb3af51c4f38d" +checksum = "58bc9567378fc7690d6b2addae4e60ac2eeea07becb2c64b9f218b53865cba2a" [[package]] name = "serde" -version = "1.0.137" +version = "1.0.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1" +checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" dependencies = [ "serde_derive", ] @@ -3292,18 +3263,18 @@ dependencies = [ [[package]] name = "serde_bytes" -version = "0.11.5" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16ae07dd2f88a366f15bd0632ba725227018c69a1c8550a927324f8eb8368bb9" +checksum = "718dc5fff5b36f99093fc49b280cfc96ce6fc824317783bff5a1fed0c7a64819" dependencies = [ "serde", ] [[package]] name = "serde_derive" -version = "1.0.137" +version = "1.0.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578be" +checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" dependencies = [ "proc-macro2", "quote", @@ -3312,9 +3283,9 @@ dependencies = [ [[package]] name = "serde_derive_internals" -version = "0.25.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dbab34ca63057a1f15280bdf3c39f2b1eb1b54c17e98360e511637aef7418c6" +checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" dependencies = [ "proc-macro2", "quote", @@ -3323,9 +3294,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.81" +version = "1.0.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15c" +checksum = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883" dependencies = [ "indexmap", "itoa", @@ -3334,6 +3305,15 @@ dependencies = [ ] [[package]] +name = "serde_spanned" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c68e921cef53841b8925c2abadd27c9b891d9613bdc43d6b823062866df38e8" +dependencies = [ + "serde", +] + +[[package]] name = "serde_urlencoded" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3347,9 +3327,9 @@ dependencies = [ [[package]] name = "serde_yaml" -version = "0.8.23" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a521f2940385c165a24ee286aa8599633d162077a54bdcae2a6fd5a7bfa7a0" +checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" dependencies = [ "indexmap", "ryu", @@ -3359,13 +3339,13 @@ dependencies = [ [[package]] name = "sha1" -version = "0.10.4" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "006769ba83e921b3085caa8334186b00cf92b4cb1a6cf4632fbccc8eff5c7549" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "cpufeatures", - "digest 0.10.3", + "digest 0.10.6", ] [[package]] @@ -3375,7 +3355,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" dependencies = [ "block-buffer 0.9.0", - "cfg-if 1.0.0", + "cfg-if", "cpufeatures", "digest 0.9.0", "opaque-debug", @@ -3383,13 +3363,13 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.2" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" +checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "cpufeatures", - "digest 0.10.3", + "digest 0.10.6", ] [[package]] @@ -3418,15 +3398,18 @@ dependencies = [ [[package]] name = "siphasher" -version = "0.2.3" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" +checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" [[package]] name = "slab" -version = "0.4.5" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +dependencies = [ + "autocfg", +] [[package]] name = "sled" @@ -3436,7 +3419,7 @@ checksum = "7f96b4737c2ce5987354855aed3797279def4ebf734436c6aa4552cf8e169935" dependencies = [ "crc32fast", "crossbeam-epoch", - "crossbeam-utils 0.8.8", + "crossbeam-utils", "fs2", "fxhash", "libc", @@ -3446,15 +3429,15 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[package]] name = "socket2" -version = "0.4.4" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" +checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" dependencies = [ "libc", "winapi", @@ -3468,21 +3451,21 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "spin" -version = "0.9.2" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "511254be0c5bcf062b019a6c89c01a664aa359ded62f78aa72c6fc137c0590e5" +checksum = "7f6002a767bff9e83f8eeecf883ecb8011875a21ae8da43bffb817a57e78cc09" [[package]] name = "static_init" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "208e44bfab7faad5dee24112ea8af2f76aa0d501ea3370b5d4b81729a528f119" +checksum = "8a2a1c578e98c1c16fc3b8ec1328f7659a500737d7a0c6d625e73e830ff9c1f6" dependencies = [ "bitflags", "cfg_aliases", "libc", "parking_lot 0.11.2", - "parking_lot_core 0.8.5", + "parking_lot_core 0.8.6", "static_init_macro", "winapi", ] @@ -3538,20 +3521,20 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.94" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a07e33e919ebcd69113d5be0e4d70c5707004ff45188910106854f38b960df4a" +checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" dependencies = [ "proc-macro2", "quote", - "unicode-xid", + "unicode-ident", ] [[package]] name = "synchronoise" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d717ed0efc9d39ab3b642a096bc369a3e02a38a51c41845d7fe31bdad1d6eaeb" +checksum = "3dbc01390fc626ce8d1cffe3376ded2b72a11bb70e1c75f404a210e4daa4def2" dependencies = [ "crossbeam-queue", ] @@ -3569,12 +3552,26 @@ dependencies = [ ] [[package]] +name = "systemstat" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a24aec24a9312c83999a28e3ef9db7e2afd5c64bf47725b758cdc1cafd5b0bd2" +dependencies = [ + "bytesize", + "lazy_static", + "libc", + "nom", + "time 0.3.17", + "winapi", +] + +[[package]] name = "tempfile" version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "fastrand", "libc", "redox_syscall", @@ -3584,9 +3581,9 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.1.3" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" dependencies = [ "winapi-util", ] @@ -3601,25 +3598,19 @@ dependencies = [ ] [[package]] -name = "textwrap" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb" - -[[package]] name = "thiserror" -version = "1.0.31" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" +checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.31" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" +checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f" dependencies = [ "proc-macro2", "quote", @@ -3637,9 +3628,9 @@ dependencies = [ [[package]] name = "time" -version = "0.1.44" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" dependencies = [ "libc", "wasi 0.10.0+wasi-snapshot-preview1", @@ -3648,19 +3639,35 @@ dependencies = [ [[package]] name = "time" -version = "0.3.9" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2702e08a7a860f005826c6815dcac101b19b5eb330c27fe4a5928fec1d20ddd" +checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" dependencies = [ - "libc", - "num_threads", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" + +[[package]] +name = "time-macros" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" +dependencies = [ + "time-core", ] [[package]] name = "timeago" -version = "0.3.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ec32dde57efb15c035ac074118d7f32820451395f28cb0524a01d4e94983b26" +checksum = "71bd60ed74255d99458a01fae2df715562d4806ceabfedd8130a82ae6b834993" dependencies = [ "chrono", "isolang", @@ -3668,9 +3675,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.5.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" dependencies = [ "tinyvec_macros", ] @@ -3683,22 +3690,22 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.17.0" +version = "1.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af73ac49756f3f7c01172e34a23e5d0216f6c32333757c2c61feb2bbff5a5ee" +checksum = "597a12a59981d9e3c38d216785b0c37399f6e415e8d0712047620f189371b0bb" dependencies = [ + "autocfg", "bytes", "libc", "memchr", "mio", "num_cpus", - "once_cell", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "pin-project-lite", "signal-hook-registry", "socket2", "tokio-macros", - "winapi", + "windows-sys", ] [[package]] @@ -3713,9 +3720,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "1.7.0" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7" +checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8" dependencies = [ "proc-macro2", "quote", @@ -3739,16 +3746,16 @@ version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" dependencies = [ - "rustls 0.20.6", + "rustls 0.20.8", "tokio", "webpki 0.22.0", ] [[package]] name = "tokio-stream" -version = "0.1.8" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50145484efff8818b5ccd256697f36863f587da82cf8b409c53adf1e840798e3" +checksum = "d660770404473ccd7bc9f8b28494a811bc18542b915c0855c51e8f419d5223ce" dependencies = [ "futures-core", "pin-project-lite", @@ -3757,9 +3764,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e99e1983e5d376cd8eb4b66604d2e99e79f5bd988c3055891dcd8c9e2604cc0" +checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" dependencies = [ "bytes", "futures-core", @@ -3771,27 +3778,52 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.0" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64910e1b9c1901aaf5375561e35b9c057d95ff41a44ede043a03e09279eabaf1" +checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" dependencies = [ "bytes", "futures-core", "futures-io", "futures-sink", - "log", "pin-project-lite", "slab", "tokio", + "tracing", ] [[package]] name = "toml" -version = "0.5.8" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb9d890e4dc9298b70f740f615f2e05b9db37dce531f6b24fb77ac993f9f217" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4553f467ac8e3d374bc9a177a26801e5d0f9b211aa1673fb137a403afd1c9cf5" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +checksum = "729bfd096e40da9c001f778f5cdecbd2957929a24e10e5883d9392220a751581" dependencies = [ + "indexmap", + "nom8", "serde", + "serde_spanned", + "toml_datetime", ] [[package]] @@ -3802,7 +3834,7 @@ checksum = "ff08f4649d10a70ffa3522ca559031285d8e421d727ac85c60825761818f5d0a" dependencies = [ "async-stream", "async-trait", - "base64", + "base64 0.13.1", "bytes", "futures-core", "futures-util", @@ -3817,7 +3849,7 @@ dependencies = [ "prost-derive", "tokio", "tokio-stream", - "tokio-util 0.6.9", + "tokio-util 0.6.10", "tower", "tower-layer", "tower-service", @@ -3839,19 +3871,19 @@ dependencies = [ [[package]] name = "tower" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a89fd63ad6adf737582df5db40d286574513c69a11dac5214dc3b5603d6713e" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" dependencies = [ "futures-core", "futures-util", "indexmap", "pin-project", "pin-project-lite", - "rand 0.8.5", + "rand", "slab", "tokio", - "tokio-util 0.7.0", + "tokio-util 0.7.4", "tower-layer", "tower-service", "tracing", @@ -3859,11 +3891,11 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d342c6d58709c0a6d48d48dabbb62d4ef955cf5f0f3bbfd845838e7ae88dbae" +checksum = "f873044bf02dd1e8239e9c1293ea39dad76dc594ec16185d0a1bf31d8dc8d858" dependencies = [ - "base64", + "base64 0.13.1", "bitflags", "bytes", "futures-core", @@ -3879,23 +3911,23 @@ dependencies = [ [[package]] name = "tower-layer" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "343bc9466d3fe6b0f960ef45960509f84480bf4fd96f92901afe7ff3df9d3a62" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" [[package]] name = "tower-service" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.32" +version = "0.1.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1bdf54a7c28a2bbf701e1d2233f6c77f473486b94bee4f9678da5a148dca7f" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "log", "pin-project-lite", "tracing-attributes", @@ -3904,9 +3936,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.20" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e65ce065b4b5c53e73bb28912318cb8c9e9ad3921f1d669eb0e68b4c8143a2b" +checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" dependencies = [ "proc-macro2", "quote", @@ -3915,11 +3947,11 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.23" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa31669fa42c09c34d94d8165dd2012e8ff3c66aca50f3bb226b68f216f2706c" +checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" dependencies = [ - "lazy_static", + "once_cell", "valuable", ] @@ -3946,13 +3978,13 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.11" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bc28f93baff38037f64e6f43d34cfa1605f27a49c34e8a04c5e78b0babf2596" +checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70" dependencies = [ - "ansi_term", - "lazy_static", "matchers", + "nu-ansi-term", + "once_cell", "regex", "sharded-slab", "smallvec", @@ -3973,54 +4005,54 @@ dependencies = [ [[package]] name = "try-lock" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" [[package]] name = "typenum" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" [[package]] name = "unicode-bidi" -version = "0.3.7" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" +checksum = "d54675592c1dbefd78cbd98db9bacd89886e1ca50692a0692baefffdeb92dd58" [[package]] name = "unicode-ident" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" +checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" [[package]] name = "unicode-normalization" -version = "0.1.19" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" dependencies = [ "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" +checksum = "0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5a" [[package]] name = "unicode-width" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" +checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" [[package]] name = "unicode-xid" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" [[package]] name = "untrusted" @@ -4030,21 +4062,20 @@ checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] name = "url" -version = "2.2.2" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" +checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" dependencies = [ "form_urlencoded", "idna", - "matches", "percent-encoding", ] [[package]] name = "uuid" -version = "0.8.2" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +checksum = "422ee0de9031b5b948b97a8fc04e3aa35230001a722ddd27943e0be31564ce4c" dependencies = [ "getrandom", ] @@ -4102,23 +4133,23 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.79" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06" +checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.79" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b21c0df030f5a177f3cba22e9bc4322695ec43e7257d865302900290bcdedca" +checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" dependencies = [ "bumpalo", - "lazy_static", "log", + "once_cell", "proc-macro2", "quote", "syn", @@ -4127,11 +4158,11 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eb6ec270a31b1d3c7e266b999739109abce8b6c87e4b31fcfcd788b65267395" +checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "js-sys", "wasm-bindgen", "web-sys", @@ -4139,9 +4170,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.79" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01" +checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4149,9 +4180,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.79" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc" +checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" dependencies = [ "proc-macro2", "quote", @@ -4162,15 +4193,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.79" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2" +checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" [[package]] name = "web-sys" -version = "0.3.56" +version = "0.3.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c060b319f29dd25724f09a2ba1418f142f539b2be99fbf4d2d5a8f7330afb8eb" +checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" dependencies = [ "js-sys", "wasm-bindgen", @@ -4198,13 +4229,13 @@ dependencies = [ [[package]] name = "which" -version = "4.2.5" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c4fb54e6113b6a8772ee41c3404fb0301ac79604489467e0a9ce1f3e97c24ae" +checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269" dependencies = [ "either", - "lazy_static", "libc", + "once_cell", ] [[package]] @@ -4240,46 +4271,60 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-sys" -version = "0.32.0" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3df6e476185f92a12c072be4a189a0210dcdcf512a1891d6dff9edb874deadc6" +checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" dependencies = [ + "windows_aarch64_gnullvm", "windows_aarch64_msvc", "windows_i686_gnu", "windows_i686_msvc", "windows_x86_64_gnu", + "windows_x86_64_gnullvm", "windows_x86_64_msvc", ] [[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" + +[[package]] name = "windows_aarch64_msvc" -version = "0.32.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8e92753b1c443191654ec532f14c199742964a061be25d77d7a96f09db20bf5" +checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" [[package]] name = "windows_i686_gnu" -version = "0.32.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a711c68811799e017b6038e0922cb27a5e2f43a2ddb609fe0b6f3eeda9de615" +checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" [[package]] name = "windows_i686_msvc" -version = "0.32.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c11bb1a02615db74680b32a68e2d61f553cc24c4eb5b4ca10311740e44172" +checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" [[package]] name = "windows_x86_64_gnu" -version = "0.32.0" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c912b12f7454c6620635bbff3450962753834be2a594819bd5e945af18ec64bc" +checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" [[package]] name = "windows_x86_64_msvc" -version = "0.32.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "504a2476202769977a040c6364301a3f65d0cc9e3fb08600b2bda150a0488316" +checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" [[package]] name = "winreg" @@ -4304,9 +4349,9 @@ checksum = "114ba2b24d2167ef6d67d7d04c8cc86522b87f490025f39f0303b7db5bf5e3d8" [[package]] name = "xxhash-rust" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a16b7b403377d61184bb601d8349a4ff2c4cec08a305d004f710b7eaafef24" +checksum = "735a71d46c4d68d71d4b24d03fdc2b98e38cea81730595801db779c04fe80d70" [[package]] name = "yaml-rust" @@ -4319,24 +4364,43 @@ dependencies = [ [[package]] name = "zeroize" -version = "1.5.4" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149f" + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb5728b8afd3f280a869ce1d4c554ffaed35f45c231fc41bfbd0381bef50317" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe 5.0.2+zstd.1.5.2", +] [[package]] name = "zstd" -version = "0.9.2+zstd.1.5.1" +version = "0.12.2+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2390ea1bf6c038c39674f22d95f0564725fc06034a47129179810b2fc58caa54" +checksum = "e9262a83dc741c0b0ffec209881b45dbc232c21b02a2b9cb1adb93266e41303d" dependencies = [ - "zstd-safe", + "zstd-safe 6.0.2+zstd.1.5.2", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", ] [[package]] name = "zstd-safe" -version = "4.1.3+zstd.1.5.1" +version = "6.0.2+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e99d81b99fb3c2c2c794e3fe56c305c63d5173a16a46b5850b07c935ffc7db79" +checksum = "a6cf39f730b440bab43da8fb5faf5f254574462f73f260f85f7987f32154ff17" dependencies = [ "libc", "zstd-sys", @@ -4344,9 +4408,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "1.6.2+zstd.1.5.1" +version = "2.0.5+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2daf2f248d9ea44454bfcb2516534e8b8ad2fc91bf818a1885495fc42bc8ac9f" +checksum = "edc50ffce891ad571e9f9afe5039c4837bede781ac4bb13052ed7ae695518596" dependencies = [ "cc", "libc", @@ -32,7 +32,7 @@ args@{ ignoreLockHash, }: let - nixifiedLockHash = "bd3d90904731a6f067b8a535cfe9b84c9727d17eb1cdd499336b6a627dc7c426"; + nixifiedLockHash = "8681b26e2f98ae495ad3ac0d6df1241a6bc0f06bd5fa7ae4c08d8cc13b5b88c5"; workspaceSrc = if args.workspaceSrc == null then ./. else args.workspaceSrc; currentLockHash = builtins.hashFile "sha256" (workspaceSrc + /Cargo.lock); lockHashIgnored = if ignoreLockHash @@ -67,13 +67,13 @@ in garage = rustPackages.unknown.garage."0.8.1"; k2v-client = rustPackages.unknown.k2v-client."0.1.1"; }; - "registry+https://github.com/rust-lang/crates.io-index".addr2line."0.17.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".addr2line."0.19.0" = overridableMkRustCrate (profileName: rec { name = "addr2line"; - version = "0.17.0"; + version = "0.19.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b"; }; + src = fetchCratesIo { inherit name version; sha256 = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97"; }; dependencies = { - gimli = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".gimli."0.26.2" { inherit profileName; }).out; + gimli = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".gimli."0.27.1" { inherit profileName; }).out; }; }); @@ -90,19 +90,19 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"; }; dependencies = { - ${ if (rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage/sqlite" || rootFeatures' ? "garage_db/bundled-libs" || rootFeatures' ? "garage_db/rusqlite" || rootFeatures' ? "garage_db/sqlite" || rootFeatures' ? "garage_model/sqlite") && (hostPlatform.parsed.kernel.name == "linux" || hostPlatform.parsed.kernel.name == "android" || hostPlatform.parsed.kernel.name == "windows" || hostPlatform.parsed.kernel.name == "darwin" || hostPlatform.parsed.kernel.name == "ios" || hostPlatform.parsed.kernel.name == "freebsd" || hostPlatform.parsed.kernel.name == "openbsd" || hostPlatform.parsed.kernel.name == "netbsd" || hostPlatform.parsed.kernel.name == "dragonfly" || hostPlatform.parsed.kernel.name == "solaris" || hostPlatform.parsed.kernel.name == "illumos" || hostPlatform.parsed.kernel.name == "fuchsia" || hostPlatform.parsed.kernel.name == "redox" || hostPlatform.parsed.kernel.name == "cloudabi" || hostPlatform.parsed.kernel.name == "haiku" || hostPlatform.parsed.kernel.name == "vxworks" || hostPlatform.parsed.kernel.name == "emscripten" || hostPlatform.parsed.kernel.name == "wasi") then "getrandom" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".getrandom."0.2.5" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage/sqlite" || rootFeatures' ? "garage_db/bundled-libs" || rootFeatures' ? "garage_db/rusqlite" || rootFeatures' ? "garage_db/sqlite" || rootFeatures' ? "garage_model/sqlite") && !((hostPlatform.parsed.cpu.name == "armv6l" || hostPlatform.parsed.cpu.name == "armv7l") && hostPlatform.parsed.kernel.name == "none") then "once_cell" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".once_cell."1.10.0" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage/sqlite" || rootFeatures' ? "garage_db/bundled-libs" || rootFeatures' ? "garage_db/rusqlite" || rootFeatures' ? "garage_db/sqlite" || rootFeatures' ? "garage_model/sqlite") && (hostPlatform.parsed.kernel.name == "linux" || hostPlatform.parsed.kernel.name == "android" || hostPlatform.parsed.kernel.name == "windows" || hostPlatform.parsed.kernel.name == "darwin" || hostPlatform.parsed.kernel.name == "ios" || hostPlatform.parsed.kernel.name == "freebsd" || hostPlatform.parsed.kernel.name == "openbsd" || hostPlatform.parsed.kernel.name == "netbsd" || hostPlatform.parsed.kernel.name == "dragonfly" || hostPlatform.parsed.kernel.name == "solaris" || hostPlatform.parsed.kernel.name == "illumos" || hostPlatform.parsed.kernel.name == "fuchsia" || hostPlatform.parsed.kernel.name == "redox" || hostPlatform.parsed.kernel.name == "cloudabi" || hostPlatform.parsed.kernel.name == "haiku" || hostPlatform.parsed.kernel.name == "vxworks" || hostPlatform.parsed.kernel.name == "emscripten" || hostPlatform.parsed.kernel.name == "wasi") then "getrandom" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".getrandom."0.2.8" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage/sqlite" || rootFeatures' ? "garage_db/bundled-libs" || rootFeatures' ? "garage_db/rusqlite" || rootFeatures' ? "garage_db/sqlite" || rootFeatures' ? "garage_model/sqlite") && !((hostPlatform.parsed.cpu.name == "armv6l" || hostPlatform.parsed.cpu.name == "armv7l") && hostPlatform.parsed.kernel.name == "none") then "once_cell" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".once_cell."1.17.0" { inherit profileName; }).out; }; buildDependencies = { ${ if rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage/sqlite" || rootFeatures' ? "garage_db/bundled-libs" || rootFeatures' ? "garage_db/rusqlite" || rootFeatures' ? "garage_db/sqlite" || rootFeatures' ? "garage_model/sqlite" then "version_check" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".version_check."0.9.4" { profileName = "__noProfile"; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".ahash."0.8.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".ahash."0.8.2" = overridableMkRustCrate (profileName: rec { name = "ahash"; - version = "0.8.0"; + version = "0.8.2"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "57e6e951cfbb2db8de1828d49073a113a29fd7117b1596caa781a258c7e38d72"; }; + src = fetchCratesIo { inherit name version; sha256 = "bf6ccdb167abbf410dcb915cabd428929d7f6a04980b54a11f26a39f1c7f7107"; }; features = builtins.concatLists [ (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "default") (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "getrandom") @@ -111,54 +111,54 @@ in ]; dependencies = { ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "cfg_if" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cfg-if."1.0.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "getrandom" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".getrandom."0.2.5" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") && !((hostPlatform.parsed.cpu.name == "armv6l" || hostPlatform.parsed.cpu.name == "armv7l") && hostPlatform.parsed.kernel.name == "none") then "once_cell" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".once_cell."1.10.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "getrandom" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".getrandom."0.2.8" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") && !((hostPlatform.parsed.cpu.name == "armv6l" || hostPlatform.parsed.cpu.name == "armv7l") && hostPlatform.parsed.kernel.name == "none") then "once_cell" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".once_cell."1.17.0" { inherit profileName; }).out; }; buildDependencies = { ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "version_check" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".version_check."0.9.4" { profileName = "__noProfile"; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".aho-corasick."0.7.18" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".aho-corasick."0.7.20" = overridableMkRustCrate (profileName: rec { name = "aho-corasick"; - version = "0.7.18"; + version = "0.7.20"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"; }; + src = fetchCratesIo { inherit name version; sha256 = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac"; }; features = builtins.concatLists [ [ "default" ] [ "std" ] ]; dependencies = { - memchr = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".memchr."2.4.1" { inherit profileName; }).out; + memchr = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".memchr."2.5.0" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".ansi_term."0.12.1" = overridableMkRustCrate (profileName: rec { - name = "ansi_term"; - version = "0.12.1"; + "registry+https://github.com/rust-lang/crates.io-index".android_system_properties."0.1.5" = overridableMkRustCrate (profileName: rec { + name = "android_system_properties"; + version = "0.1.5"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"; }; + src = fetchCratesIo { inherit name version; sha256 = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"; }; dependencies = { - ${ if hostPlatform.parsed.kernel.name == "windows" then "winapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" { inherit profileName; }).out; + libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".anyhow."1.0.56" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".anyhow."1.0.68" = overridableMkRustCrate (profileName: rec { name = "anyhow"; - version = "1.0.56"; + version = "1.0.68"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "4361135be9122e0870de935d7c439aef945b9f9ddd4199a553b5270b49c82a27"; }; + src = fetchCratesIo { inherit name version; sha256 = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61"; }; features = builtins.concatLists [ (lib.optional (rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp") "default") (lib.optional (rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp") "std") ]; }); - "registry+https://github.com/rust-lang/crates.io-index".arc-swap."1.5.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".arc-swap."1.6.0" = overridableMkRustCrate (profileName: rec { name = "arc-swap"; - version = "1.5.0"; + version = "1.6.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "c5d78ce20460b82d3fa150275ed9d55e21064fc7951177baacf86a145c4a4b1f"; }; + src = fetchCratesIo { inherit name version; sha256 = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6"; }; }); "registry+https://github.com/rust-lang/crates.io-index".arrayvec."0.5.2" = overridableMkRustCrate (profileName: rec { @@ -172,22 +172,22 @@ in ]; }); - "registry+https://github.com/rust-lang/crates.io-index".assert-json-diff."2.0.1" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".assert-json-diff."2.0.2" = overridableMkRustCrate (profileName: rec { name = "assert-json-diff"; - version = "2.0.1"; + version = "2.0.2"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "50f1c3703dd33532d7f0ca049168930e9099ecac238e23cf932f3a69c42f06da"; }; + src = fetchCratesIo { inherit name version; sha256 = "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12"; }; dependencies = { - serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; - serde_json = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.81" { inherit profileName; }).out; + serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; + serde_json = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.91" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".async-compression."0.3.10" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".async-compression."0.3.15" = overridableMkRustCrate (profileName: rec { name = "async-compression"; - version = "0.3.10"; + version = "0.3.15"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "00461f243d703f6999c8e7494f077799f1362720a55ae49a90ffe6214032fc0b"; }; + src = fetchCratesIo { inherit name version; sha256 = "942c7cd7ae39e91bde4820d74132e9862e62c2f386c3aa90ccf55949f5bad63a"; }; features = builtins.concatLists [ [ "default" ] [ "libzstd" ] @@ -196,12 +196,12 @@ in [ "zstd-safe" ] ]; dependencies = { - futures_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.21" { inherit profileName; }).out; - memchr = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".memchr."2.4.1" { inherit profileName; }).out; + futures_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.25" { inherit profileName; }).out; + memchr = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".memchr."2.5.0" { inherit profileName; }).out; pin_project_lite = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project-lite."0.2.9" { inherit profileName; }).out; - tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; - libzstd = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".zstd."0.9.2+zstd.1.5.1" { inherit profileName; }).out; - zstd_safe = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".zstd-safe."4.1.3+zstd.1.5.1" { inherit profileName; }).out; + tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; + libzstd = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".zstd."0.11.2+zstd.1.5.2" { inherit profileName; }).out; + zstd_safe = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".zstd-safe."5.0.2+zstd.1.5.2" { inherit profileName; }).out; }; }); @@ -212,7 +212,7 @@ in src = fetchCratesIo { inherit name version; sha256 = "dad5c83079eae9969be7fadefe640a1c566901f05ff91ab221de4b6f68d9507e"; }; dependencies = { ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "async_stream_impl" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".async-stream-impl."0.3.3" { profileName = "__noProfile"; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "futures_core" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.21" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "futures_core" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.25" { inherit profileName; }).out; }; }); @@ -222,21 +222,21 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "10f203db73a71dfa2fb6dd22763990fa26f3d2625a6da2da900d23b87d26be27"; }; dependencies = { - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "proc_macro2" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.46" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "quote" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "syn" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.94" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "proc_macro2" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "quote" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "syn" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.107" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".async-trait."0.1.52" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".async-trait."0.1.63" = overridableMkRustCrate (profileName: rec { name = "async-trait"; - version = "0.1.52"; + version = "0.1.63"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "061a7acccaa286c011ddc30970520b98fa40e00c9d644633fb26b5fc63a265e3"; }; + src = fetchCratesIo { inherit name version; sha256 = "eff18d764974428cf3a9328e23fc5c986f5fbed46e6cd4cdf42544df5d297ec1"; }; dependencies = { - proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.46" { inherit profileName; }).out; - quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; }).out; - syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.94" { inherit profileName; }).out; + proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; + quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; + syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.107" { inherit profileName; }).out; }; }); @@ -246,19 +246,9 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"; }; dependencies = { - ${ if (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "garage_db/pretty_env_logger" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") && hostPlatform.parsed.kernel.name == "hermit" then "hermit_abi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hermit-abi."0.1.19" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "garage_db/pretty_env_logger" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") && hostPlatform.isUnix then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "garage_db/pretty_env_logger" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") && hostPlatform.isWindows then "winapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" { inherit profileName; }).out; - }; - }); - - "registry+https://github.com/rust-lang/crates.io-index".autocfg."0.1.8" = overridableMkRustCrate (profileName: rec { - name = "autocfg"; - version = "0.1.8"; - registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "0dde43e75fd43e8a1bf86103336bc699aa8d17ad1be60c76c0bdfd4828e19b78"; }; - dependencies = { - autocfg = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".autocfg."1.1.0" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage_db/cli" || rootFeatures' ? "garage_db/pretty_env_logger") && hostPlatform.parsed.kernel.name == "hermit" then "hermit_abi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hermit-abi."0.1.19" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage_db/cli" || rootFeatures' ? "garage_db/pretty_env_logger") && hostPlatform.isUnix then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage_db/cli" || rootFeatures' ? "garage_db/pretty_env_logger") && hostPlatform.isWindows then "winapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" { inherit profileName; }).out; }; }); @@ -279,8 +269,8 @@ in aws_smithy_types = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".aws-smithy-types."0.49.0" { inherit profileName; }).out; aws_types = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".aws-types."0.49.0" { inherit profileName; }).out; http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; - regex = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".regex."1.5.5" { inherit profileName; }).out; - tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" { inherit profileName; }).out; + regex = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".regex."1.7.1" { inherit profileName; }).out; + tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; }; }); @@ -293,13 +283,13 @@ in aws_smithy_http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".aws-smithy-http."0.49.0" { inherit profileName; }).out; aws_smithy_types = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".aws-smithy-types."0.49.0" { inherit profileName; }).out; aws_types = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".aws-types."0.49.0" { inherit profileName; }).out; - bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; + bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; http_body = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http-body."0.4.5" { inherit profileName; }).out; lazy_static = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".lazy_static."1.4.0" { inherit profileName; }).out; - percent_encoding = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".percent-encoding."2.1.0" { inherit profileName; }).out; + percent_encoding = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".percent-encoding."2.2.0" { inherit profileName; }).out; pin_project_lite = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project-lite."0.2.9" { inherit profileName; }).out; - tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" { inherit profileName; }).out; + tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; }; }); @@ -327,13 +317,13 @@ in aws_smithy_types = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".aws-smithy-types."0.49.0" { inherit profileName; }).out; aws_smithy_xml = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".aws-smithy-xml."0.49.0" { inherit profileName; }).out; aws_types = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".aws-types."0.49.0" { inherit profileName; }).out; - bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; - bytes_utils = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes-utils."0.1.2" { inherit profileName; }).out; + bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; + bytes_utils = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes-utils."0.1.3" { inherit profileName; }).out; http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; http_body = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http-body."0.4.5" { inherit profileName; }).out; - tokio_stream = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-stream."0.1.8" { inherit profileName; }).out; - tower = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tower."0.4.12" { inherit profileName; }).out; - tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" { inherit profileName; }).out; + tokio_stream = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-stream."0.1.11" { inherit profileName; }).out; + tower = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tower."0.4.13" { inherit profileName; }).out; + tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; }; }); @@ -352,7 +342,7 @@ in aws_smithy_http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".aws-smithy-http."0.49.0" { inherit profileName; }).out; aws_types = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".aws-types."0.49.0" { inherit profileName; }).out; http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; - tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" { inherit profileName; }).out; + tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; }; }); @@ -374,16 +364,16 @@ in dependencies = { aws_smithy_eventstream = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".aws-smithy-eventstream."0.49.0" { inherit profileName; }).out; aws_smithy_http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".aws-smithy-http."0.49.0" { inherit profileName; }).out; - bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; - form_urlencoded = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".form_urlencoded."1.0.1" { inherit profileName; }).out; + bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; + form_urlencoded = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".form_urlencoded."1.1.0" { inherit profileName; }).out; hex = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hex."0.4.3" { inherit profileName; }).out; http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; - once_cell = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".once_cell."1.10.0" { inherit profileName; }).out; - percent_encoding = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".percent-encoding."2.1.0" { inherit profileName; }).out; - regex = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".regex."1.5.5" { inherit profileName; }).out; + once_cell = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".once_cell."1.17.0" { inherit profileName; }).out; + percent_encoding = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".percent-encoding."2.2.0" { inherit profileName; }).out; + regex = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".regex."1.7.1" { inherit profileName; }).out; ring = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".ring."0.16.20" { inherit profileName; }).out; - time = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".time."0.3.9" { inherit profileName; }).out; - tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" { inherit profileName; }).out; + time = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".time."0.3.17" { inherit profileName; }).out; + tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; }; }); @@ -396,10 +386,10 @@ in [ "rt-tokio" ] ]; dependencies = { - futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.21" { inherit profileName; }).out; + futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.25" { inherit profileName; }).out; pin_project_lite = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project-lite."0.2.9" { inherit profileName; }).out; - tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; - tokio_stream = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-stream."0.1.8" { inherit profileName; }).out; + tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; + tokio_stream = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-stream."0.1.11" { inherit profileName; }).out; }; }); @@ -411,17 +401,17 @@ in dependencies = { aws_smithy_http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".aws-smithy-http."0.49.0" { inherit profileName; }).out; aws_smithy_types = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".aws-smithy-types."0.49.0" { inherit profileName; }).out; - bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; + bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; crc32c = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".crc32c."0.6.3" { inherit profileName; }).out; crc32fast = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".crc32fast."1.3.2" { inherit profileName; }).out; hex = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hex."0.4.3" { inherit profileName; }).out; http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; http_body = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http-body."0.4.5" { inherit profileName; }).out; - md5 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".md-5."0.10.1" { inherit profileName; }).out; + md5 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".md-5."0.10.5" { inherit profileName; }).out; pin_project_lite = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project-lite."0.2.9" { inherit profileName; }).out; - sha1 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".sha1."0.10.4" { inherit profileName; }).out; - sha2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".sha2."0.10.2" { inherit profileName; }).out; - tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" { inherit profileName; }).out; + sha1 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".sha1."0.10.5" { inherit profileName; }).out; + sha2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".sha2."0.10.6" { inherit profileName; }).out; + tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; }; }); @@ -443,17 +433,17 @@ in aws_smithy_http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".aws-smithy-http."0.49.0" { inherit profileName; }).out; aws_smithy_http_tower = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".aws-smithy-http-tower."0.49.0" { inherit profileName; }).out; aws_smithy_types = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".aws-smithy-types."0.49.0" { inherit profileName; }).out; - bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; - fastrand = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".fastrand."1.7.0" { inherit profileName; }).out; + bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; + fastrand = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".fastrand."1.8.0" { inherit profileName; }).out; http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; http_body = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http-body."0.4.5" { inherit profileName; }).out; - hyper = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.18" { inherit profileName; }).out; + hyper = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.23" { inherit profileName; }).out; hyper_rustls = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper-rustls."0.22.1" { inherit profileName; }).out; lazy_static = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".lazy_static."1.4.0" { inherit profileName; }).out; pin_project_lite = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project-lite."0.2.9" { inherit profileName; }).out; - tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; - tower = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tower."0.4.12" { inherit profileName; }).out; - tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" { inherit profileName; }).out; + tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; + tower = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tower."0.4.13" { inherit profileName; }).out; + tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; }; }); @@ -464,7 +454,7 @@ in src = fetchCratesIo { inherit name version; sha256 = "98c2a7b9490fd2bc7af3a1c486ae921102d7234d1fa5e7d91039068e7af48a01"; }; dependencies = { aws_smithy_types = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".aws-smithy-types."0.49.0" { inherit profileName; }).out; - bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; + bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; crc32fast = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".crc32fast."1.3.2" { inherit profileName; }).out; }; }); @@ -484,18 +474,18 @@ in dependencies = { aws_smithy_eventstream = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".aws-smithy-eventstream."0.49.0" { inherit profileName; }).out; aws_smithy_types = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".aws-smithy-types."0.49.0" { inherit profileName; }).out; - bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; - bytes_utils = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes-utils."0.1.2" { inherit profileName; }).out; - futures_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.21" { inherit profileName; }).out; + bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; + bytes_utils = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes-utils."0.1.3" { inherit profileName; }).out; + futures_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.25" { inherit profileName; }).out; http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; http_body = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http-body."0.4.5" { inherit profileName; }).out; - hyper = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.18" { inherit profileName; }).out; - once_cell = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".once_cell."1.10.0" { inherit profileName; }).out; - percent_encoding = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".percent-encoding."2.1.0" { inherit profileName; }).out; + hyper = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.23" { inherit profileName; }).out; + once_cell = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".once_cell."1.17.0" { inherit profileName; }).out; + percent_encoding = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".percent-encoding."2.2.0" { inherit profileName; }).out; pin_project_lite = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project-lite."0.2.9" { inherit profileName; }).out; - tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; - tokio_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-util."0.7.0" { inherit profileName; }).out; - tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" { inherit profileName; }).out; + tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; + tokio_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-util."0.7.4" { inherit profileName; }).out; + tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; }; }); @@ -506,12 +496,12 @@ in src = fetchCratesIo { inherit name version; sha256 = "deecb478dc3cc40203e0e97ac0fb92947e0719754bbafd0026bdc49318e2fd03"; }; dependencies = { aws_smithy_http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".aws-smithy-http."0.49.0" { inherit profileName; }).out; - bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; + bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; http_body = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http-body."0.4.5" { inherit profileName; }).out; pin_project_lite = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project-lite."0.2.9" { inherit profileName; }).out; - tower = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tower."0.4.12" { inherit profileName; }).out; - tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" { inherit profileName; }).out; + tower = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tower."0.4.13" { inherit profileName; }).out; + tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; }; }); @@ -521,10 +511,10 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "e93b0c93a3b963da946a0b8ef3853a7252298eb75cdbfb21dad60f5ed0ded861"; }; dependencies = { - itoa = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".itoa."1.0.1" { inherit profileName; }).out; - num_integer = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-integer."0.1.44" { inherit profileName; }).out; - ryu = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".ryu."1.0.9" { inherit profileName; }).out; - time = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".time."0.3.9" { inherit profileName; }).out; + itoa = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".itoa."1.0.5" { inherit profileName; }).out; + num_integer = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-integer."0.1.45" { inherit profileName; }).out; + ryu = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".ryu."1.0.12" { inherit profileName; }).out; + time = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".time."0.3.17" { inherit profileName; }).out; }; }); @@ -549,8 +539,8 @@ in aws_smithy_http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".aws-smithy-http."0.49.0" { inherit profileName; }).out; aws_smithy_types = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".aws-smithy-types."0.49.0" { inherit profileName; }).out; http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; - tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" { inherit profileName; }).out; - zeroize = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".zeroize."1.5.4" { inherit profileName; }).out; + tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; + zeroize = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".zeroize."1.5.7" { inherit profileName; }).out; }; buildDependencies = { rustc_version = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".rustc_version."0.4.0" { profileName = "__noProfile"; }).out; @@ -566,39 +556,39 @@ in (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "default") ]; dependencies = { - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "getrandom" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".getrandom."0.2.5" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "getrandom" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".getrandom."0.2.8" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "instant" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".instant."0.1.12" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "rand" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand."0.8.5" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".backtrace."0.3.66" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".backtrace."0.3.67" = overridableMkRustCrate (profileName: rec { name = "backtrace"; - version = "0.3.66"; + version = "0.3.67"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "cab84319d616cfb654d03394f38ab7e6f0919e181b1b57e1fd15e7fb4077d9a7"; }; + src = fetchCratesIo { inherit name version; sha256 = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca"; }; features = builtins.concatLists [ [ "default" ] [ "std" ] ]; dependencies = { - addr2line = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".addr2line."0.17.0" { inherit profileName; }).out; + addr2line = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".addr2line."0.19.0" { inherit profileName; }).out; cfg_if = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cfg-if."1.0.0" { inherit profileName; }).out; - libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; - miniz_oxide = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".miniz_oxide."0.5.4" { inherit profileName; }).out; - object = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".object."0.29.0" { inherit profileName; }).out; + libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; + miniz_oxide = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".miniz_oxide."0.6.2" { inherit profileName; }).out; + object = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".object."0.30.3" { inherit profileName; }).out; rustc_demangle = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rustc-demangle."0.1.21" { inherit profileName; }).out; }; buildDependencies = { - cc = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".cc."1.0.73" { profileName = "__noProfile"; }).out; + cc = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".cc."1.0.78" { profileName = "__noProfile"; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".base64."0.13.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".base64."0.13.1" = overridableMkRustCrate (profileName: rec { name = "base64"; - version = "0.13.0"; + version = "0.13.1"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd"; }; + src = fetchCratesIo { inherit name version; sha256 = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"; }; features = builtins.concatLists [ (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/k8s-openapi" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "alloc") [ "default" ] @@ -606,13 +596,24 @@ in ]; }); + "registry+https://github.com/rust-lang/crates.io-index".base64."0.21.0" = overridableMkRustCrate (profileName: rec { + name = "base64"; + version = "0.21.0"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a"; }; + features = builtins.concatLists [ + [ "default" ] + [ "std" ] + ]; + }); + "registry+https://github.com/rust-lang/crates.io-index".bincode."1.3.3" = overridableMkRustCrate (profileName: rec { name = "bincode"; version = "1.3.3"; registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"; }; dependencies = { - ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "serde" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "serde" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; }; }); @@ -626,19 +627,17 @@ in ]; }); - "registry+https://github.com/rust-lang/crates.io-index".blake2."0.9.2" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".blake2."0.10.6" = overridableMkRustCrate (profileName: rec { name = "blake2"; - version = "0.9.2"; + version = "0.10.6"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "0a4e37d16930f5459780f5621038b6382b9bb37c19016f39fb6b5808d831f174"; }; + src = fetchCratesIo { inherit name version; sha256 = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe"; }; features = builtins.concatLists [ [ "default" ] [ "std" ] ]; dependencies = { - crypto_mac = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".crypto-mac."0.8.0" { inherit profileName; }).out; - digest = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".digest."0.9.0" { inherit profileName; }).out; - opaque_debug = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".opaque-debug."0.3.0" { inherit profileName; }).out; + digest = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".digest."0.10.6" { inherit profileName; }).out; }; }); @@ -648,35 +647,35 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"; }; dependencies = { - generic_array = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".generic-array."0.14.5" { inherit profileName; }).out; + generic_array = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".generic-array."0.14.6" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".block-buffer."0.10.2" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".block-buffer."0.10.3" = overridableMkRustCrate (profileName: rec { name = "block-buffer"; - version = "0.10.2"; + version = "0.10.3"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324"; }; + src = fetchCratesIo { inherit name version; sha256 = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e"; }; dependencies = { - generic_array = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".generic-array."0.14.5" { inherit profileName; }).out; + generic_array = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".generic-array."0.14.6" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".bumpalo."3.9.1" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".bumpalo."3.12.0" = overridableMkRustCrate (profileName: rec { name = "bumpalo"; - version = "3.9.1"; + version = "3.12.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899"; }; + src = fetchCratesIo { inherit name version; sha256 = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"; }; features = builtins.concatLists [ [ "default" ] ]; }); - "registry+https://github.com/rust-lang/crates.io-index".bytemuck."1.9.1" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".bytemuck."1.13.0" = overridableMkRustCrate (profileName: rec { name = "bytemuck"; - version = "1.9.1"; + version = "1.13.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "cdead85bdec19c194affaeeb670c0e41fe23de31459efd1c174d049269cf02cc"; }; + src = fetchCratesIo { inherit name version; sha256 = "c041d3eab048880cb0b86b256447da3f18859a163c3b8d8893f4e6368abe6393"; }; features = builtins.concatLists [ (lib.optional (rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb") "extern_crate_alloc") (lib.optional (rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb") "extern_crate_std") @@ -694,29 +693,29 @@ in ]; }); - "registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" = overridableMkRustCrate (profileName: rec { name = "bytes"; - version = "1.2.0"; + version = "1.3.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "f0b3de4a0c5e67e16066a0715723abd91edc2f9001d09c46e1dca929351e130e"; }; + src = fetchCratesIo { inherit name version; sha256 = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c"; }; features = builtins.concatLists [ [ "default" ] [ "std" ] ]; }); - "registry+https://github.com/rust-lang/crates.io-index".bytes-utils."0.1.2" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".bytes-utils."0.1.3" = overridableMkRustCrate (profileName: rec { name = "bytes-utils"; - version = "0.1.2"; + version = "0.1.3"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "1934a3ef9cac8efde4966a92781e77713e1ba329f1d42e446c7d7eba340d8ef1"; }; + src = fetchCratesIo { inherit name version; sha256 = "e47d3a8076e283f3acd27400535992edb3ba4b5bb72f8891ad8fbe7932a7d4b9"; }; features = builtins.concatLists [ [ "default" ] [ "std" ] ]; dependencies = { - bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; - either = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".either."1.6.1" { inherit profileName; }).out; + bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; + either = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".either."1.8.0" { inherit profileName; }).out; }; }); @@ -727,27 +726,20 @@ in src = fetchCratesIo { inherit name version; sha256 = "6c58ec36aac5066d5ca17df51b3e70279f5670a72102f5752cb7e7c856adfc70"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".cc."1.0.73" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".cc."1.0.78" = overridableMkRustCrate (profileName: rec { name = "cc"; - version = "1.0.73"; + version = "1.0.78"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"; }; + src = fetchCratesIo { inherit name version; sha256 = "a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d"; }; features = builtins.concatLists [ [ "jobserver" ] [ "parallel" ] ]; dependencies = { - jobserver = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".jobserver."0.1.24" { inherit profileName; }).out; + jobserver = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".jobserver."0.1.25" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".cfg-if."0.1.10" = overridableMkRustCrate (profileName: rec { - name = "cfg-if"; - version = "0.1.10"; - registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"; }; - }); - "registry+https://github.com/rust-lang/crates.io-index".cfg-if."1.0.0" = overridableMkRustCrate (profileName: rec { name = "cfg-if"; version = "1.0.0"; @@ -762,28 +754,33 @@ in src = fetchCratesIo { inherit name version; sha256 = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".chrono."0.4.19" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".chrono."0.4.23" = overridableMkRustCrate (profileName: rec { name = "chrono"; - version = "0.4.19"; + version = "0.4.23"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73"; }; + src = fetchCratesIo { inherit name version; sha256 = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f"; }; features = builtins.concatLists [ (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/k8s-openapi" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "alloc") [ "clock" ] [ "default" ] - [ "libc" ] + [ "iana-time-zone" ] + [ "js-sys" ] [ "oldtime" ] [ "serde" ] [ "std" ] [ "time" ] + [ "wasm-bindgen" ] + [ "wasmbind" ] [ "winapi" ] ]; dependencies = { - libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; - num_integer = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-integer."0.1.44" { inherit profileName; }).out; - num_traits = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-traits."0.2.14" { inherit profileName; }).out; - serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; - time = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".time."0.1.44" { inherit profileName; }).out; + iana_time_zone = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".iana-time-zone."0.1.53" { inherit profileName; }).out; + ${ if hostPlatform.parsed.cpu.name == "wasm32" && !(hostPlatform.parsed.kernel.name == "emscripten" || hostPlatform.parsed.kernel.name == "wasi") then "js_sys" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".js-sys."0.3.60" { inherit profileName; }).out; + num_integer = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-integer."0.1.45" { inherit profileName; }).out; + num_traits = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-traits."0.2.15" { inherit profileName; }).out; + serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; + time = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".time."0.1.45" { inherit profileName; }).out; + ${ if hostPlatform.parsed.cpu.name == "wasm32" && !(hostPlatform.parsed.kernel.name == "emscripten" || hostPlatform.parsed.kernel.name == "wasi") then "wasm_bindgen" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen."0.2.83" { inherit profileName; }).out; ${ if hostPlatform.isWindows then "winapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" { inherit profileName; }).out; }; }); @@ -796,79 +793,72 @@ in dependencies = { bitflags = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bitflags."1.3.2" { inherit profileName; }).out; textwrap = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".textwrap."0.11.0" { inherit profileName; }).out; - unicode_width = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".unicode-width."0.1.9" { inherit profileName; }).out; + unicode_width = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".unicode-width."0.1.10" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".clap."3.1.18" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".clap."4.1.3" = overridableMkRustCrate (profileName: rec { name = "clap"; - version = "3.1.18"; + version = "4.1.3"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "d2dbdf4bdacb33466e854ce889eee8dfd5729abf7ccd7664d0a2d60cd384440b"; }; + src = fetchCratesIo { inherit name version; sha256 = "d8d93d855ce6a0aa87b8473ef9169482f40abaa2e9e0993024c35c902cbd5920"; }; features = builtins.concatLists [ - (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "atty") - (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "clap_derive") (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "color") (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "default") (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "derive") (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "env") - (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "lazy_static") + (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "error-context") + (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "help") (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "std") - (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "strsim") (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "suggestions") - (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "termcolor") + (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "usage") ]; dependencies = { - ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "atty" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".atty."0.2.14" { inherit profileName; }).out; ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "bitflags" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bitflags."1.3.2" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "clap_derive" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".clap_derive."3.1.18" { profileName = "__noProfile"; }).out; - ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "clap_lex" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".clap_lex."0.2.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "indexmap" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".indexmap."1.8.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "lazy_static" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".lazy_static."1.4.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "clap_derive" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".clap_derive."4.1.0" { profileName = "__noProfile"; }).out; + ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "clap_lex" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".clap_lex."0.3.1" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "is_terminal" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".is-terminal."0.4.2" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "once_cell" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".once_cell."1.17.0" { inherit profileName; }).out; ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "strsim" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".strsim."0.10.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "termcolor" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".termcolor."1.1.3" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "textwrap" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".textwrap."0.15.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "termcolor" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".termcolor."1.2.0" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".clap_derive."3.1.18" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".clap_derive."4.1.0" = overridableMkRustCrate (profileName: rec { name = "clap_derive"; - version = "3.1.18"; + version = "4.1.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "25320346e922cffe59c0bbc5410c8d8784509efb321488971081313cb1e1a33c"; }; + src = fetchCratesIo { inherit name version; sha256 = "684a277d672e91966334af371f1a7b5833f9aa00b07c84e92fbce95e00208ce8"; }; features = builtins.concatLists [ (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "default") ]; dependencies = { ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "heck" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".heck."0.4.0" { inherit profileName; }).out; ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "proc_macro_error" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro-error."1.0.4" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "proc_macro2" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.46" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "quote" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "syn" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.94" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "proc_macro2" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "quote" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "syn" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.107" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".clap_lex."0.2.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".clap_lex."0.3.1" = overridableMkRustCrate (profileName: rec { name = "clap_lex"; - version = "0.2.0"; + version = "0.3.1"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "a37c35f1112dad5e6e0b1adaff798507497a18fceeb30cceb3bae7d1427b9213"; }; + src = fetchCratesIo { inherit name version; sha256 = "783fe232adfca04f90f56201b26d79682d4cd2625e0bc7290b95123afe558ade"; }; dependencies = { - ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "os_str_bytes" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".os_str_bytes."6.0.1" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "os_str_bytes" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".os_str_bytes."6.4.1" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".cloudabi."0.0.3" = overridableMkRustCrate (profileName: rec { - name = "cloudabi"; - version = "0.0.3"; + "registry+https://github.com/rust-lang/crates.io-index".codespan-reporting."0.11.1" = overridableMkRustCrate (profileName: rec { + name = "codespan-reporting"; + version = "0.11.1"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"; }; - features = builtins.concatLists [ - [ "bitflags" ] - [ "default" ] - ]; + src = fetchCratesIo { inherit name version; sha256 = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e"; }; dependencies = { - bitflags = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bitflags."1.3.2" { inherit profileName; }).out; + termcolor = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".termcolor."1.2.0" { inherit profileName; }).out; + unicode_width = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".unicode-width."0.1.10" { inherit profileName; }).out; }; }); @@ -879,7 +869,7 @@ in src = fetchCratesIo { inherit name version; sha256 = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146"; }; dependencies = { core_foundation_sys = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".core-foundation-sys."0.8.3" { inherit profileName; }).out; - libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; + libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; }; }); @@ -890,13 +880,13 @@ in src = fetchCratesIo { inherit name version; sha256 = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".cpufeatures."0.2.2" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".cpufeatures."0.2.5" = overridableMkRustCrate (profileName: rec { name = "cpufeatures"; - version = "0.2.2"; + version = "0.2.5"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b"; }; + src = fetchCratesIo { inherit name version; sha256 = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320"; }; dependencies = { - ${ if hostPlatform.config == "aarch64-apple-darwin" || hostPlatform.config == "aarch64-linux-android" || hostPlatform.parsed.cpu.name == "aarch64" && hostPlatform.parsed.kernel.name == "linux" then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; + ${ if hostPlatform.config == "aarch64-apple-darwin" || hostPlatform.config == "aarch64-linux-android" || hostPlatform.parsed.cpu.name == "aarch64" && hostPlatform.parsed.kernel.name == "linux" then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; }; }); @@ -924,11 +914,11 @@ in }; }); - "registry+https://github.com/rust-lang/crates.io-index".crossbeam-channel."0.5.4" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".crossbeam-channel."0.5.6" = overridableMkRustCrate (profileName: rec { name = "crossbeam-channel"; - version = "0.5.4"; + version = "0.5.6"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53"; }; + src = fetchCratesIo { inherit name version; sha256 = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521"; }; features = builtins.concatLists [ [ "crossbeam-utils" ] [ "default" ] @@ -936,26 +926,24 @@ in ]; dependencies = { cfg_if = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cfg-if."1.0.0" { inherit profileName; }).out; - crossbeam_utils = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".crossbeam-utils."0.8.8" { inherit profileName; }).out; + crossbeam_utils = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".crossbeam-utils."0.8.14" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".crossbeam-epoch."0.9.8" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".crossbeam-epoch."0.9.13" = overridableMkRustCrate (profileName: rec { name = "crossbeam-epoch"; - version = "0.9.8"; + version = "0.9.13"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c"; }; + src = fetchCratesIo { inherit name version; sha256 = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a"; }; features = builtins.concatLists [ [ "alloc" ] [ "default" ] - [ "lazy_static" ] [ "std" ] ]; dependencies = { cfg_if = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cfg-if."1.0.0" { inherit profileName; }).out; - crossbeam_utils = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".crossbeam-utils."0.8.8" { inherit profileName; }).out; - lazy_static = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".lazy_static."1.4.0" { inherit profileName; }).out; - memoffset = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".memoffset."0.6.5" { inherit profileName; }).out; + crossbeam_utils = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".crossbeam-utils."0.8.14" { inherit profileName; }).out; + memoffset = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".memoffset."0.7.1" { inherit profileName; }).out; scopeguard = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".scopeguard."1.1.0" { inherit profileName; }).out; }; buildDependencies = { @@ -963,45 +951,33 @@ in }; }); - "registry+https://github.com/rust-lang/crates.io-index".crossbeam-queue."0.1.2" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".crossbeam-queue."0.3.8" = overridableMkRustCrate (profileName: rec { name = "crossbeam-queue"; - version = "0.1.2"; + version = "0.3.8"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b"; }; - dependencies = { - ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "crossbeam_utils" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".crossbeam-utils."0.6.6" { inherit profileName; }).out; - }; - }); - - "registry+https://github.com/rust-lang/crates.io-index".crossbeam-utils."0.6.6" = overridableMkRustCrate (profileName: rec { - name = "crossbeam-utils"; - version = "0.6.6"; - registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6"; }; + src = fetchCratesIo { inherit name version; sha256 = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add"; }; features = builtins.concatLists [ + (lib.optional (rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb") "alloc") (lib.optional (rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb") "default") - (lib.optional (rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb") "lazy_static") (lib.optional (rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb") "std") ]; dependencies = { - ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "cfg_if" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cfg-if."0.1.10" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "lazy_static" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".lazy_static."1.4.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "cfg_if" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cfg-if."1.0.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "crossbeam_utils" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".crossbeam-utils."0.8.14" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".crossbeam-utils."0.8.8" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".crossbeam-utils."0.8.14" = overridableMkRustCrate (profileName: rec { name = "crossbeam-utils"; - version = "0.8.8"; + version = "0.8.14"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38"; }; + src = fetchCratesIo { inherit name version; sha256 = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f"; }; features = builtins.concatLists [ [ "default" ] - [ "lazy_static" ] [ "std" ] ]; dependencies = { cfg_if = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cfg-if."1.0.0" { inherit profileName; }).out; - lazy_static = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".lazy_static."1.4.0" { inherit profileName; }).out; }; }); @@ -1014,22 +990,8 @@ in [ "std" ] ]; dependencies = { - generic_array = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".generic-array."0.14.5" { inherit profileName; }).out; - typenum = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".typenum."1.15.0" { inherit profileName; }).out; - }; - }); - - "registry+https://github.com/rust-lang/crates.io-index".crypto-mac."0.8.0" = overridableMkRustCrate (profileName: rec { - name = "crypto-mac"; - version = "0.8.0"; - registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab"; }; - features = builtins.concatLists [ - [ "std" ] - ]; - dependencies = { - generic_array = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".generic-array."0.14.5" { inherit profileName; }).out; - subtle = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".subtle."2.4.1" { inherit profileName; }).out; + generic_array = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".generic-array."0.14.6" { inherit profileName; }).out; + typenum = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".typenum."1.16.0" { inherit profileName; }).out; }; }); @@ -1039,7 +1001,7 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714"; }; dependencies = { - generic_array = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".generic-array."0.14.5" { inherit profileName; }).out; + generic_array = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".generic-array."0.14.6" { inherit profileName; }).out; subtle = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".subtle."2.4.1" { inherit profileName; }).out; }; }); @@ -1054,26 +1016,84 @@ in }; }); - "registry+https://github.com/rust-lang/crates.io-index".darling."0.14.1" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".cxx."1.0.87" = overridableMkRustCrate (profileName: rec { + name = "cxx"; + version = "1.0.87"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "b61a7545f753a88bcbe0a70de1fcc0221e10bfc752f576754fa91e663db1622e"; }; + features = builtins.concatLists [ + [ "alloc" ] + [ "default" ] + [ "std" ] + ]; + dependencies = { + cxxbridge_macro = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".cxxbridge-macro."1.0.87" { profileName = "__noProfile"; }).out; + link_cplusplus = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".link-cplusplus."1.0.8" { inherit profileName; }).out; + }; + buildDependencies = { + cc = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".cc."1.0.78" { profileName = "__noProfile"; }).out; + cxxbridge_flags = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".cxxbridge-flags."1.0.87" { profileName = "__noProfile"; }).out; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".cxx-build."1.0.87" = overridableMkRustCrate (profileName: rec { + name = "cxx-build"; + version = "1.0.87"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "f464457d494b5ed6905c63b0c4704842aba319084a0a3561cdc1359536b53200"; }; + dependencies = { + cc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cc."1.0.78" { inherit profileName; }).out; + codespan_reporting = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".codespan-reporting."0.11.1" { inherit profileName; }).out; + once_cell = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".once_cell."1.17.0" { inherit profileName; }).out; + proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; + quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; + scratch = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".scratch."1.0.3" { inherit profileName; }).out; + syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.107" { inherit profileName; }).out; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".cxxbridge-flags."1.0.87" = overridableMkRustCrate (profileName: rec { + name = "cxxbridge-flags"; + version = "1.0.87"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "43c7119ce3a3701ed81aca8410b9acf6fc399d2629d057b87e2efa4e63a3aaea"; }; + features = builtins.concatLists [ + [ "default" ] + ]; + }); + + "registry+https://github.com/rust-lang/crates.io-index".cxxbridge-macro."1.0.87" = overridableMkRustCrate (profileName: rec { + name = "cxxbridge-macro"; + version = "1.0.87"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "65e07508b90551e610910fa648a1878991d367064997a596135b86df30daf07e"; }; + dependencies = { + proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; + quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; + syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.107" { inherit profileName; }).out; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".darling."0.14.2" = overridableMkRustCrate (profileName: rec { name = "darling"; - version = "0.14.1"; + version = "0.14.2"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "4529658bdda7fd6769b8614be250cdcfc3aeb0ee72fe66f9e41e5e5eb73eac02"; }; + src = fetchCratesIo { inherit name version; sha256 = "b0dd3cd20dc6b5a876612a6e5accfe7f3dd883db6d07acfbf14c128f61550dfa"; }; features = builtins.concatLists [ (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "default") (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "suggestions") ]; dependencies = { - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "darling_core" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".darling_core."0.14.1" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "darling_macro" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".darling_macro."0.14.1" { profileName = "__noProfile"; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "darling_core" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".darling_core."0.14.2" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "darling_macro" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".darling_macro."0.14.2" { profileName = "__noProfile"; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".darling_core."0.14.1" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".darling_core."0.14.2" = overridableMkRustCrate (profileName: rec { name = "darling_core"; - version = "0.14.1"; + version = "0.14.2"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "649c91bc01e8b1eac09fb91e8dbc7d517684ca6be8ebc75bb9cafc894f9fdb6f"; }; + src = fetchCratesIo { inherit name version; sha256 = "a784d2ccaf7c98501746bf0be29b2022ba41fd62a2e622af997a03e9f972859f"; }; features = builtins.concatLists [ (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "strsim") (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "suggestions") @@ -1081,22 +1101,22 @@ in dependencies = { ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "fnv" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".fnv."1.0.7" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "ident_case" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".ident_case."1.0.1" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "proc_macro2" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.46" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "quote" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "proc_macro2" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "quote" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "strsim" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".strsim."0.10.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "syn" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.94" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "syn" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.107" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".darling_macro."0.14.1" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".darling_macro."0.14.2" = overridableMkRustCrate (profileName: rec { name = "darling_macro"; - version = "0.14.1"; + version = "0.14.2"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "ddfc69c5bfcbd2fc09a0f38451d2daf0e372e367986a83906d1b0dbc88134fb5"; }; + src = fetchCratesIo { inherit name version; sha256 = "7618812407e9402654622dd402b0a89dff9ba93badd6540781526117b92aab7e"; }; dependencies = { - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "darling_core" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".darling_core."0.14.1" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "quote" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "syn" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.94" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "darling_core" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".darling_core."0.14.2" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "quote" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "syn" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.107" { inherit profileName; }).out; }; }); @@ -1110,7 +1130,7 @@ in ]; dependencies = { cfg_if = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cfg-if."1.0.0" { inherit profileName; }).out; - num_cpus = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num_cpus."1.13.1" { inherit profileName; }).out; + num_cpus = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num_cpus."1.15.0" { inherit profileName; }).out; }; }); @@ -1120,9 +1140,9 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"; }; dependencies = { - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "proc_macro2" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.46" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "quote" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "syn" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.94" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "proc_macro2" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "quote" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "syn" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.107" { inherit profileName; }).out; }; }); @@ -1136,15 +1156,15 @@ in [ "std" ] ]; dependencies = { - generic_array = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".generic-array."0.14.5" { inherit profileName; }).out; + generic_array = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".generic-array."0.14.6" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".digest."0.10.3" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".digest."0.10.6" = overridableMkRustCrate (profileName: rec { name = "digest"; - version = "0.10.3"; + version = "0.10.6"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506"; }; + src = fetchCratesIo { inherit name version; sha256 = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f"; }; features = builtins.concatLists [ [ "alloc" ] [ "block-buffer" ] @@ -1155,7 +1175,7 @@ in [ "subtle" ] ]; dependencies = { - block_buffer = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".block-buffer."0.10.2" { inherit profileName; }).out; + block_buffer = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".block-buffer."0.10.3" { inherit profileName; }).out; crypto_common = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".crypto-common."0.1.6" { inherit profileName; }).out; subtle = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".subtle."2.4.1" { inherit profileName; }).out; }; @@ -1178,35 +1198,35 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"; }; dependencies = { - ${ if hostPlatform.isUnix then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; - ${ if hostPlatform.parsed.kernel.name == "redox" then "redox_users" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".redox_users."0.4.2" { inherit profileName; }).out; + ${ if hostPlatform.isUnix then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; + ${ if hostPlatform.parsed.kernel.name == "redox" then "redox_users" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".redox_users."0.4.3" { inherit profileName; }).out; ${ if hostPlatform.isWindows then "winapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".dyn-clone."1.0.5" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".dyn-clone."1.0.10" = overridableMkRustCrate (profileName: rec { name = "dyn-clone"; - version = "1.0.5"; + version = "1.0.10"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "21e50f3adc76d6a43f5ed73b698a87d0760ca74617f60f7c3b879003536fdd28"; }; + src = fetchCratesIo { inherit name version; sha256 = "c9b0705efd4599c15a38151f4721f7bc388306f61084d3bfd50bd07fbca5cb60"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".either."1.6.1" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".either."1.8.0" = overridableMkRustCrate (profileName: rec { name = "either"; - version = "1.6.1"; + version = "1.8.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"; }; + src = fetchCratesIo { inherit name version; sha256 = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797"; }; features = builtins.concatLists [ [ "default" ] [ "use_std" ] ]; }); - "registry+https://github.com/rust-lang/crates.io-index".encoding_rs."0.8.30" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".encoding_rs."0.8.31" = overridableMkRustCrate (profileName: rec { name = "encoding_rs"; - version = "0.8.30"; + version = "0.8.31"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "7896dc8abb250ffdda33912550faa54c88ec8b998dec0b2c55ab224921ce11df"; }; + src = fetchCratesIo { inherit name version; sha256 = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b"; }; features = builtins.concatLists [ [ "alloc" ] [ "default" ] @@ -1231,9 +1251,9 @@ in dependencies = { ${ if rootFeatures' ? "garage_db/cli" || rootFeatures' ? "garage_db/pretty_env_logger" then "atty" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".atty."0.2.14" { inherit profileName; }).out; ${ if rootFeatures' ? "garage_db/cli" || rootFeatures' ? "garage_db/pretty_env_logger" then "humantime" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".humantime."1.3.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage_db/cli" || rootFeatures' ? "garage_db/pretty_env_logger" then "log" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.16" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage_db/cli" || rootFeatures' ? "garage_db/pretty_env_logger" then "regex" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".regex."1.5.5" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage_db/cli" || rootFeatures' ? "garage_db/pretty_env_logger" then "termcolor" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".termcolor."1.1.3" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage_db/cli" || rootFeatures' ? "garage_db/pretty_env_logger" then "log" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.17" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage_db/cli" || rootFeatures' ? "garage_db/pretty_env_logger" then "regex" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".regex."1.7.1" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage_db/cli" || rootFeatures' ? "garage_db/pretty_env_logger" then "termcolor" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".termcolor."1.2.0" { inherit profileName; }).out; }; }); @@ -1248,13 +1268,38 @@ in ]; dependencies = { proc_macro_error = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro-error."1.0.4" { inherit profileName; }).out; - proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.46" { inherit profileName; }).out; - quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; }).out; - syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.94" { inherit profileName; }).out; + proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; + quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; + syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.107" { inherit profileName; }).out; synstructure = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".synstructure."0.12.6" { inherit profileName; }).out; }; buildDependencies = { - rustversion = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".rustversion."1.0.6" { profileName = "__noProfile"; }).out; + rustversion = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".rustversion."1.0.11" { profileName = "__noProfile"; }).out; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".errno."0.2.8" = overridableMkRustCrate (profileName: rec { + name = "errno"; + version = "0.2.8"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1"; }; + dependencies = { + ${ if (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") && hostPlatform.parsed.kernel.name == "dragonfly" then "errno_dragonfly" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".errno-dragonfly."0.1.2" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") && (hostPlatform.isUnix || hostPlatform.parsed.kernel.name == "hermit" || hostPlatform.parsed.kernel.name == "wasi") then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") && hostPlatform.isWindows then "winapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" { inherit profileName; }).out; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".errno-dragonfly."0.1.2" = overridableMkRustCrate (profileName: rec { + name = "errno-dragonfly"; + version = "0.1.2"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"; }; + dependencies = { + ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; + }; + buildDependencies = { + ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "cc" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".cc."1.0.78" { profileName = "__noProfile"; }).out; }; }); @@ -1276,21 +1321,21 @@ in src = fetchCratesIo { inherit name version; sha256 = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".fastrand."1.7.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".fastrand."1.8.0" = overridableMkRustCrate (profileName: rec { name = "fastrand"; - version = "1.7.0"; + version = "1.8.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf"; }; + src = fetchCratesIo { inherit name version; sha256 = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499"; }; dependencies = { ${ if hostPlatform.parsed.cpu.name == "wasm32" then "instant" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".instant."0.1.12" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".fixedbitset."0.4.1" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".fixedbitset."0.4.2" = overridableMkRustCrate (profileName: rec { name = "fixedbitset"; - version = "0.4.1"; + version = "0.4.2"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "279fb028e20b3c4c320317955b77c5e0c9701f05a1d309905d6fc702cdc5053e"; }; + src = fetchCratesIo { inherit name version; sha256 = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"; }; }); "registry+https://github.com/rust-lang/crates.io-index".fnv."1.0.7" = overridableMkRustCrate (profileName: rec { @@ -1304,14 +1349,13 @@ in ]; }); - "registry+https://github.com/rust-lang/crates.io-index".form_urlencoded."1.0.1" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".form_urlencoded."1.1.0" = overridableMkRustCrate (profileName: rec { name = "form_urlencoded"; - version = "1.0.1"; + version = "1.1.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191"; }; + src = fetchCratesIo { inherit name version; sha256 = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"; }; dependencies = { - matches = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".matches."0.1.9" { inherit profileName; }).out; - percent_encoding = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".percent-encoding."2.1.0" { inherit profileName; }).out; + percent_encoding = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".percent-encoding."2.2.0" { inherit profileName; }).out; }; }); @@ -1321,23 +1365,16 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213"; }; dependencies = { - ${ if hostPlatform.isUnix then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; + ${ if hostPlatform.isUnix then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; ${ if hostPlatform.isWindows then "winapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".fuchsia-cprng."0.1.1" = overridableMkRustCrate (profileName: rec { - name = "fuchsia-cprng"; - version = "0.1.1"; - registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"; }; - }); - - "registry+https://github.com/rust-lang/crates.io-index".futures."0.3.21" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".futures."0.3.25" = overridableMkRustCrate (profileName: rec { name = "futures"; - version = "0.3.21"; + version = "0.3.25"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "f73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9e"; }; + src = fetchCratesIo { inherit name version; sha256 = "38390104763dc37a5145a53c29c63c1290b5d316d6086ec32c293f6736051bb0"; }; features = builtins.concatLists [ [ "alloc" ] [ "async-await" ] @@ -1347,21 +1384,21 @@ in [ "std" ] ]; dependencies = { - futures_channel = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-channel."0.3.21" { inherit profileName; }).out; - futures_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.21" { inherit profileName; }).out; - futures_executor = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-executor."0.3.21" { inherit profileName; }).out; - futures_io = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-io."0.3.21" { inherit profileName; }).out; - futures_sink = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-sink."0.3.21" { inherit profileName; }).out; - futures_task = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-task."0.3.21" { inherit profileName; }).out; - futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.21" { inherit profileName; }).out; + futures_channel = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-channel."0.3.25" { inherit profileName; }).out; + futures_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.25" { inherit profileName; }).out; + futures_executor = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-executor."0.3.25" { inherit profileName; }).out; + futures_io = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-io."0.3.25" { inherit profileName; }).out; + futures_sink = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-sink."0.3.25" { inherit profileName; }).out; + futures_task = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-task."0.3.25" { inherit profileName; }).out; + futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.25" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".futures-channel."0.3.21" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".futures-channel."0.3.25" = overridableMkRustCrate (profileName: rec { name = "futures-channel"; - version = "0.3.21"; + version = "0.3.25"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010"; }; + src = fetchCratesIo { inherit name version; sha256 = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed"; }; features = builtins.concatLists [ [ "alloc" ] [ "default" ] @@ -1370,16 +1407,16 @@ in [ "std" ] ]; dependencies = { - futures_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.21" { inherit profileName; }).out; - futures_sink = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-sink."0.3.21" { inherit profileName; }).out; + futures_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.25" { inherit profileName; }).out; + futures_sink = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-sink."0.3.25" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.21" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.25" = overridableMkRustCrate (profileName: rec { name = "futures-core"; - version = "0.3.21"; + version = "0.3.25"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3"; }; + src = fetchCratesIo { inherit name version; sha256 = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac"; }; features = builtins.concatLists [ [ "alloc" ] [ "default" ] @@ -1387,50 +1424,50 @@ in ]; }); - "registry+https://github.com/rust-lang/crates.io-index".futures-executor."0.3.21" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".futures-executor."0.3.25" = overridableMkRustCrate (profileName: rec { name = "futures-executor"; - version = "0.3.21"; + version = "0.3.25"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6"; }; + src = fetchCratesIo { inherit name version; sha256 = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2"; }; features = builtins.concatLists [ [ "default" ] [ "std" ] ]; dependencies = { - futures_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.21" { inherit profileName; }).out; - futures_task = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-task."0.3.21" { inherit profileName; }).out; - futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.21" { inherit profileName; }).out; + futures_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.25" { inherit profileName; }).out; + futures_task = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-task."0.3.25" { inherit profileName; }).out; + futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.25" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".futures-io."0.3.21" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".futures-io."0.3.25" = overridableMkRustCrate (profileName: rec { name = "futures-io"; - version = "0.3.21"; + version = "0.3.25"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b"; }; + src = fetchCratesIo { inherit name version; sha256 = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb"; }; features = builtins.concatLists [ [ "default" ] [ "std" ] ]; }); - "registry+https://github.com/rust-lang/crates.io-index".futures-macro."0.3.21" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".futures-macro."0.3.25" = overridableMkRustCrate (profileName: rec { name = "futures-macro"; - version = "0.3.21"; + version = "0.3.25"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512"; }; + src = fetchCratesIo { inherit name version; sha256 = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d"; }; dependencies = { - proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.46" { inherit profileName; }).out; - quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; }).out; - syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.94" { inherit profileName; }).out; + proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; + quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; + syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.107" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".futures-sink."0.3.21" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".futures-sink."0.3.25" = overridableMkRustCrate (profileName: rec { name = "futures-sink"; - version = "0.3.21"; + version = "0.3.25"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868"; }; + src = fetchCratesIo { inherit name version; sha256 = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9"; }; features = builtins.concatLists [ [ "alloc" ] [ "default" ] @@ -1438,22 +1475,22 @@ in ]; }); - "registry+https://github.com/rust-lang/crates.io-index".futures-task."0.3.21" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".futures-task."0.3.25" = overridableMkRustCrate (profileName: rec { name = "futures-task"; - version = "0.3.21"; + version = "0.3.25"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a"; }; + src = fetchCratesIo { inherit name version; sha256 = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea"; }; features = builtins.concatLists [ [ "alloc" ] [ "std" ] ]; }); - "registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.21" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.25" = overridableMkRustCrate (profileName: rec { name = "futures-util"; - version = "0.3.21"; + version = "0.3.25"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a"; }; + src = fetchCratesIo { inherit name version; sha256 = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6"; }; features = builtins.concatLists [ [ "alloc" ] [ "async-await" ] @@ -1471,16 +1508,16 @@ in [ "std" ] ]; dependencies = { - futures_channel = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-channel."0.3.21" { inherit profileName; }).out; - futures_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.21" { inherit profileName; }).out; - futures_io = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-io."0.3.21" { inherit profileName; }).out; - futures_macro = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-macro."0.3.21" { profileName = "__noProfile"; }).out; - futures_sink = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-sink."0.3.21" { inherit profileName; }).out; - futures_task = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-task."0.3.21" { inherit profileName; }).out; - memchr = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".memchr."2.4.1" { inherit profileName; }).out; + futures_channel = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-channel."0.3.25" { inherit profileName; }).out; + futures_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.25" { inherit profileName; }).out; + futures_io = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-io."0.3.25" { inherit profileName; }).out; + futures_macro = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-macro."0.3.25" { profileName = "__noProfile"; }).out; + futures_sink = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-sink."0.3.25" { inherit profileName; }).out; + futures_task = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-task."0.3.25" { inherit profileName; }).out; + memchr = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".memchr."2.5.0" { inherit profileName; }).out; pin_project_lite = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project-lite."0.2.9" { inherit profileName; }).out; pin_utils = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-utils."0.1.0" { inherit profileName; }).out; - slab = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".slab."0.4.5" { inherit profileName; }).out; + slab = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".slab."0.4.7" { inherit profileName; }).out; }; }); @@ -1516,12 +1553,12 @@ in (lib.optional (rootFeatures' ? "garage/telemetry-otlp") "telemetry-otlp") ]; dependencies = { - async_trait = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".async-trait."0.1.52" { profileName = "__noProfile"; }).out; - backtrace = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".backtrace."0.3.66" { inherit profileName; }).out; - bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; + async_trait = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".async-trait."0.1.63" { profileName = "__noProfile"; }).out; + backtrace = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".backtrace."0.3.67" { inherit profileName; }).out; + bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; bytesize = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytesize."1.1.0" { inherit profileName; }).out; - futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.21" { inherit profileName; }).out; - futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.21" { inherit profileName; }).out; + futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.25" { inherit profileName; }).out; + futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.25" { inherit profileName; }).out; garage_api = (rustPackages."unknown".garage_api."0.8.1" { inherit profileName; }).out; garage_block = (rustPackages."unknown".garage_block."0.8.1" { inherit profileName; }).out; garage_db = (rustPackages."unknown".garage_db."0.8.1" { inherit profileName; }).out; @@ -1537,28 +1574,28 @@ in ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "opentelemetry_otlp" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".opentelemetry-otlp."0.10.0" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/default" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/opentelemetry-prometheus" then "opentelemetry_prometheus" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".opentelemetry-prometheus."0.10.0" { inherit profileName; }).out; parse_duration = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".parse_duration."2.1.1" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/default" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/prometheus" then "prometheus" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".prometheus."0.13.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/default" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/prometheus" then "prometheus" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".prometheus."0.13.3" { inherit profileName; }).out; rand = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand."0.8.5" { inherit profileName; }).out; - serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; - serde_bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_bytes."0.11.5" { inherit profileName; }).out; + serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; + serde_bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_bytes."0.11.8" { inherit profileName; }).out; structopt = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".structopt."0.3.26" { inherit profileName; }).out; - timeago = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".timeago."0.3.1" { inherit profileName; }).out; - tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; - toml = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".toml."0.5.8" { inherit profileName; }).out; - tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" { inherit profileName; }).out; - tracing_subscriber = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing-subscriber."0.3.11" { inherit profileName; }).out; + timeago = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".timeago."0.4.0" { inherit profileName; }).out; + tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; + toml = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".toml."0.6.0" { inherit profileName; }).out; + tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; + tracing_subscriber = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing-subscriber."0.3.16" { inherit profileName; }).out; }; devDependencies = { - assert_json_diff = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".assert-json-diff."2.0.1" { inherit profileName; }).out; + assert_json_diff = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".assert-json-diff."2.0.2" { inherit profileName; }).out; aws_sdk_s3 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".aws-sdk-s3."0.19.0" { inherit profileName; }).out; - base64 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".base64."0.13.0" { inherit profileName; }).out; - chrono = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".chrono."0.4.19" { inherit profileName; }).out; + base64 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".base64."0.21.0" { inherit profileName; }).out; + chrono = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".chrono."0.4.23" { inherit profileName; }).out; hmac = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hmac."0.12.1" { inherit profileName; }).out; http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; - hyper = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.18" { inherit profileName; }).out; - serde_json = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.81" { inherit profileName; }).out; - sha2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".sha2."0.10.2" { inherit profileName; }).out; - static_init = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".static_init."1.0.2" { inherit profileName; }).out; + hyper = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.23" { inherit profileName; }).out; + serde_json = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.91" { inherit profileName; }).out; + sha2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".sha2."0.10.6" { inherit profileName; }).out; + static_init = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".static_init."1.0.3" { inherit profileName; }).out; }; }); @@ -1574,15 +1611,15 @@ in (lib.optional (rootFeatures' ? "garage/default" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/prometheus") "prometheus") ]; dependencies = { - async_trait = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".async-trait."0.1.52" { profileName = "__noProfile"; }).out; - base64 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".base64."0.13.0" { inherit profileName; }).out; - bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; - chrono = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".chrono."0.4.19" { inherit profileName; }).out; + async_trait = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".async-trait."0.1.63" { profileName = "__noProfile"; }).out; + base64 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".base64."0.21.0" { inherit profileName; }).out; + bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; + chrono = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".chrono."0.4.23" { inherit profileName; }).out; crypto_common = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".crypto-common."0.1.6" { inherit profileName; }).out; err_derive = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".err-derive."0.3.1" { profileName = "__noProfile"; }).out; - form_urlencoded = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".form_urlencoded."1.0.1" { inherit profileName; }).out; - futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.21" { inherit profileName; }).out; - futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.21" { inherit profileName; }).out; + form_urlencoded = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".form_urlencoded."1.1.0" { inherit profileName; }).out; + futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.25" { inherit profileName; }).out; + futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.25" { inherit profileName; }).out; garage_block = (rustPackages."unknown".garage_block."0.8.1" { inherit profileName; }).out; garage_model = (rustPackages."unknown".garage_model."0.8.1" { inherit profileName; }).out; garage_rpc = (rustPackages."unknown".garage_rpc."0.8.1" { inherit profileName; }).out; @@ -1592,27 +1629,27 @@ in hmac = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hmac."0.12.1" { inherit profileName; }).out; http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; http_range = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http-range."0.1.5" { inherit profileName; }).out; - httpdate = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".httpdate."0.3.2" { inherit profileName; }).out; - hyper = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.18" { inherit profileName; }).out; - idna = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".idna."0.2.3" { inherit profileName; }).out; - md5 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".md-5."0.10.1" { inherit profileName; }).out; - multer = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".multer."2.0.2" { inherit profileName; }).out; - nom = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".nom."7.1.1" { inherit profileName; }).out; + httpdate = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".httpdate."1.0.2" { inherit profileName; }).out; + hyper = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.23" { inherit profileName; }).out; + idna = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".idna."0.3.0" { inherit profileName; }).out; + md5 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".md-5."0.10.5" { inherit profileName; }).out; + multer = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".multer."2.0.4" { inherit profileName; }).out; + nom = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".nom."7.1.3" { inherit profileName; }).out; opentelemetry = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".opentelemetry."0.17.0" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/default" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/opentelemetry-prometheus" then "opentelemetry_prometheus" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".opentelemetry-prometheus."0.10.0" { inherit profileName; }).out; - percent_encoding = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".percent-encoding."2.1.0" { inherit profileName; }).out; + percent_encoding = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".percent-encoding."2.2.0" { inherit profileName; }).out; pin_project = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project."1.0.12" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/default" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/prometheus" then "prometheus" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".prometheus."0.13.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/default" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/prometheus" then "prometheus" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".prometheus."0.13.3" { inherit profileName; }).out; quick_xml = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quick-xml."0.21.0" { inherit profileName; }).out; roxmltree = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".roxmltree."0.14.1" { inherit profileName; }).out; - serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; - serde_bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_bytes."0.11.5" { inherit profileName; }).out; - serde_json = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.81" { inherit profileName; }).out; - sha2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".sha2."0.10.2" { inherit profileName; }).out; - tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; - tokio_stream = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-stream."0.1.8" { inherit profileName; }).out; - tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" { inherit profileName; }).out; - url = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".url."2.2.2" { inherit profileName; }).out; + serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; + serde_bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_bytes."0.11.8" { inherit profileName; }).out; + serde_json = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.91" { inherit profileName; }).out; + sha2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".sha2."0.10.6" { inherit profileName; }).out; + tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; + tokio_stream = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-stream."0.1.11" { inherit profileName; }).out; + tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; + url = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".url."2.3.1" { inherit profileName; }).out; }; }); @@ -1625,12 +1662,12 @@ in (lib.optional (rootFeatures' ? "garage/system-libs" || rootFeatures' ? "garage_block/system-libs") "system-libs") ]; dependencies = { - arc_swap = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".arc-swap."1.5.0" { inherit profileName; }).out; - async_compression = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".async-compression."0.3.10" { inherit profileName; }).out; - async_trait = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".async-trait."0.1.52" { profileName = "__noProfile"; }).out; - bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; - futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.21" { inherit profileName; }).out; - futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.21" { inherit profileName; }).out; + arc_swap = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".arc-swap."1.6.0" { inherit profileName; }).out; + async_compression = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".async-compression."0.3.15" { inherit profileName; }).out; + async_trait = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".async-trait."0.1.63" { profileName = "__noProfile"; }).out; + bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; + futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.25" { inherit profileName; }).out; + futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.25" { inherit profileName; }).out; garage_db = (rustPackages."unknown".garage_db."0.8.1" { inherit profileName; }).out; garage_rpc = (rustPackages."unknown".garage_rpc."0.8.1" { inherit profileName; }).out; garage_table = (rustPackages."unknown".garage_table."0.8.1" { inherit profileName; }).out; @@ -1638,12 +1675,12 @@ in hex = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hex."0.4.3" { inherit profileName; }).out; opentelemetry = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".opentelemetry."0.17.0" { inherit profileName; }).out; rand = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand."0.8.5" { inherit profileName; }).out; - serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; - serde_bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_bytes."0.11.5" { inherit profileName; }).out; - tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; - tokio_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-util."0.6.9" { inherit profileName; }).out; - tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" { inherit profileName; }).out; - zstd = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".zstd."0.9.2+zstd.1.5.1" { inherit profileName; }).out; + serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; + serde_bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_bytes."0.11.8" { inherit profileName; }).out; + tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; + tokio_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-util."0.6.10" { inherit profileName; }).out; + tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; + zstd = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".zstd."0.12.2+zstd.1.5.2" { inherit profileName; }).out; }; }); @@ -1665,17 +1702,17 @@ in (lib.optional (rootFeatures' ? "garage/sqlite" || rootFeatures' ? "garage_db/sqlite" || rootFeatures' ? "garage_model/sqlite") "sqlite") ]; dependencies = { - ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" then "clap" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".clap."3.1.18" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" then "clap" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".clap."4.1.3" { inherit profileName; }).out; err_derive = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".err-derive."0.3.1" { profileName = "__noProfile"; }).out; ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "heed" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".heed."0.11.0" { inherit profileName; }).out; hexdump = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hexdump."0.1.1" { inherit profileName; }).out; ${ if rootFeatures' ? "garage_db/cli" || rootFeatures' ? "garage_db/pretty_env_logger" then "pretty_env_logger" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pretty_env_logger."0.4.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage/sqlite" || rootFeatures' ? "garage_db/bundled-libs" || rootFeatures' ? "garage_db/rusqlite" || rootFeatures' ? "garage_db/sqlite" || rootFeatures' ? "garage_model/sqlite" then "rusqlite" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rusqlite."0.27.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage/sqlite" || rootFeatures' ? "garage_db/bundled-libs" || rootFeatures' ? "garage_db/rusqlite" || rootFeatures' ? "garage_db/sqlite" || rootFeatures' ? "garage_model/sqlite" then "rusqlite" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rusqlite."0.28.0" { inherit profileName; }).out; sled = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".sled."0.34.7" { inherit profileName; }).out; - tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" { inherit profileName; }).out; + tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; }; devDependencies = { - mktemp = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".mktemp."0.4.1" { inherit profileName; }).out; + mktemp = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".mktemp."0.5.0" { inherit profileName; }).out; }; }); @@ -1692,13 +1729,13 @@ in (lib.optional (rootFeatures' ? "garage/sqlite" || rootFeatures' ? "garage_model/sqlite") "sqlite") ]; dependencies = { - arc_swap = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".arc-swap."1.5.0" { inherit profileName; }).out; - async_trait = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".async-trait."0.1.52" { profileName = "__noProfile"; }).out; - base64 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".base64."0.13.0" { inherit profileName; }).out; - blake2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".blake2."0.9.2" { inherit profileName; }).out; + arc_swap = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".arc-swap."1.6.0" { inherit profileName; }).out; + async_trait = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".async-trait."0.1.63" { profileName = "__noProfile"; }).out; + base64 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".base64."0.21.0" { inherit profileName; }).out; + blake2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".blake2."0.10.6" { inherit profileName; }).out; err_derive = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".err-derive."0.3.1" { profileName = "__noProfile"; }).out; - futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.21" { inherit profileName; }).out; - futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.21" { inherit profileName; }).out; + futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.25" { inherit profileName; }).out; + futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.25" { inherit profileName; }).out; garage_block = (rustPackages."unknown".garage_block."0.8.1" { inherit profileName; }).out; garage_db = (rustPackages."unknown".garage_db."0.8.1" { inherit profileName; }).out; garage_rpc = (rustPackages."unknown".garage_rpc."0.8.1" { inherit profileName; }).out; @@ -1708,11 +1745,11 @@ in netapp = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".netapp."0.5.2" { inherit profileName; }).out; opentelemetry = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".opentelemetry."0.17.0" { inherit profileName; }).out; rand = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand."0.8.5" { inherit profileName; }).out; - serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; - serde_bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_bytes."0.11.5" { inherit profileName; }).out; - tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; - tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" { inherit profileName; }).out; - zstd = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".zstd."0.9.2+zstd.1.5.1" { inherit profileName; }).out; + serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; + serde_bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_bytes."0.11.8" { inherit profileName; }).out; + tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; + tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; + zstd = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".zstd."0.12.2+zstd.1.5.2" { inherit profileName; }).out; }; }); @@ -1732,12 +1769,12 @@ in (lib.optional (rootFeatures' ? "garage/system-libs" || rootFeatures' ? "garage_rpc/system-libs") "system-libs") ]; dependencies = { - arc_swap = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".arc-swap."1.5.0" { inherit profileName; }).out; - async_trait = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".async-trait."0.1.52" { profileName = "__noProfile"; }).out; - bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; + arc_swap = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".arc-swap."1.6.0" { inherit profileName; }).out; + async_trait = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".async-trait."0.1.63" { profileName = "__noProfile"; }).out; + bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/err-derive" then "err_derive" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".err-derive."0.3.1" { profileName = "__noProfile"; }).out; - futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.21" { inherit profileName; }).out; - futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.21" { inherit profileName; }).out; + futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.25" { inherit profileName; }).out; + futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.25" { inherit profileName; }).out; garage_util = (rustPackages."unknown".garage_util."0.8.1" { inherit profileName; }).out; gethostname = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".gethostname."0.2.3" { inherit profileName; }).out; hex = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hex."0.4.3" { inherit profileName; }).out; @@ -1748,14 +1785,15 @@ in opentelemetry = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".opentelemetry."0.17.0" { inherit profileName; }).out; pnet_datalink = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pnet_datalink."0.28.0" { inherit profileName; }).out; rand = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand."0.8.5" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "reqwest" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".reqwest."0.11.12" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/schemars" then "schemars" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".schemars."0.8.8" { inherit profileName; }).out; - serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; - serde_bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_bytes."0.11.5" { inherit profileName; }).out; - serde_json = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.81" { inherit profileName; }).out; - tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; - tokio_stream = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-stream."0.1.8" { inherit profileName; }).out; - tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "reqwest" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".reqwest."0.11.14" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/schemars" then "schemars" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".schemars."0.8.11" { inherit profileName; }).out; + serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; + serde_bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_bytes."0.11.8" { inherit profileName; }).out; + serde_json = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.91" { inherit profileName; }).out; + systemstat = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".systemstat."0.2.3" { inherit profileName; }).out; + tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; + tokio_stream = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-stream."0.1.11" { inherit profileName; }).out; + tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; }; }); @@ -1765,11 +1803,11 @@ in registry = "unknown"; src = fetchCrateLocal (workspaceSrc + "/src/table"); dependencies = { - arc_swap = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".arc-swap."1.5.0" { inherit profileName; }).out; - async_trait = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".async-trait."0.1.52" { profileName = "__noProfile"; }).out; - bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; - futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.21" { inherit profileName; }).out; - futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.21" { inherit profileName; }).out; + arc_swap = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".arc-swap."1.6.0" { inherit profileName; }).out; + async_trait = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".async-trait."0.1.63" { profileName = "__noProfile"; }).out; + bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; + futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.25" { inherit profileName; }).out; + futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.25" { inherit profileName; }).out; garage_db = (rustPackages."unknown".garage_db."0.8.1" { inherit profileName; }).out; garage_rpc = (rustPackages."unknown".garage_rpc."0.8.1" { inherit profileName; }).out; garage_util = (rustPackages."unknown".garage_util."0.8.1" { inherit profileName; }).out; @@ -1777,10 +1815,10 @@ in hexdump = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hexdump."0.1.1" { inherit profileName; }).out; opentelemetry = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".opentelemetry."0.17.0" { inherit profileName; }).out; rand = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand."0.8.5" { inherit profileName; }).out; - serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; - serde_bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_bytes."0.11.5" { inherit profileName; }).out; - tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; - tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" { inherit profileName; }).out; + serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; + serde_bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_bytes."0.11.8" { inherit profileName; }).out; + tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; + tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; }; }); @@ -1793,35 +1831,35 @@ in (lib.optional (rootFeatures' ? "garage/default" || rootFeatures' ? "garage/k2v" || rootFeatures' ? "garage_api/k2v" || rootFeatures' ? "garage_model/k2v" || rootFeatures' ? "garage_util/k2v") "k2v") ]; dependencies = { - arc_swap = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".arc-swap."1.5.0" { inherit profileName; }).out; - async_trait = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".async-trait."0.1.52" { profileName = "__noProfile"; }).out; - blake2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".blake2."0.9.2" { inherit profileName; }).out; - bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; - chrono = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".chrono."0.4.19" { inherit profileName; }).out; - digest = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".digest."0.10.3" { inherit profileName; }).out; + arc_swap = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".arc-swap."1.6.0" { inherit profileName; }).out; + async_trait = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".async-trait."0.1.63" { profileName = "__noProfile"; }).out; + blake2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".blake2."0.10.6" { inherit profileName; }).out; + bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; + chrono = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".chrono."0.4.23" { inherit profileName; }).out; + digest = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".digest."0.10.6" { inherit profileName; }).out; err_derive = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".err-derive."0.3.1" { profileName = "__noProfile"; }).out; - futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.21" { inherit profileName; }).out; + futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.25" { inherit profileName; }).out; garage_db = (rustPackages."unknown".garage_db."0.8.1" { inherit profileName; }).out; git_version = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".git-version."0.3.5" { inherit profileName; }).out; hex = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hex."0.4.3" { inherit profileName; }).out; hexdump = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hexdump."0.1.1" { inherit profileName; }).out; http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; - hyper = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.18" { inherit profileName; }).out; + hyper = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.23" { inherit profileName; }).out; lazy_static = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".lazy_static."1.4.0" { inherit profileName; }).out; netapp = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".netapp."0.5.2" { inherit profileName; }).out; opentelemetry = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".opentelemetry."0.17.0" { inherit profileName; }).out; rand = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand."0.8.5" { inherit profileName; }).out; rmp_serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rmp-serde."0.15.5" { inherit profileName; }).out; - serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; - serde_json = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.81" { inherit profileName; }).out; - sha2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".sha2."0.10.2" { inherit profileName; }).out; - tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; - toml = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".toml."0.5.8" { inherit profileName; }).out; - tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" { inherit profileName; }).out; - xxhash_rust = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".xxhash-rust."0.8.4" { inherit profileName; }).out; + serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; + serde_json = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.91" { inherit profileName; }).out; + sha2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".sha2."0.10.6" { inherit profileName; }).out; + tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; + toml = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".toml."0.6.0" { inherit profileName; }).out; + tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; + xxhash_rust = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".xxhash-rust."0.8.6" { inherit profileName; }).out; }; devDependencies = { - mktemp = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".mktemp."0.4.1" { inherit profileName; }).out; + mktemp = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".mktemp."0.5.0" { inherit profileName; }).out; }; }); @@ -1832,29 +1870,29 @@ in src = fetchCrateLocal (workspaceSrc + "/src/web"); dependencies = { err_derive = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".err-derive."0.3.1" { profileName = "__noProfile"; }).out; - futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.21" { inherit profileName; }).out; + futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.25" { inherit profileName; }).out; garage_api = (rustPackages."unknown".garage_api."0.8.1" { inherit profileName; }).out; garage_model = (rustPackages."unknown".garage_model."0.8.1" { inherit profileName; }).out; garage_table = (rustPackages."unknown".garage_table."0.8.1" { inherit profileName; }).out; garage_util = (rustPackages."unknown".garage_util."0.8.1" { inherit profileName; }).out; http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; - hyper = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.18" { inherit profileName; }).out; + hyper = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.23" { inherit profileName; }).out; opentelemetry = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".opentelemetry."0.17.0" { inherit profileName; }).out; - percent_encoding = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".percent-encoding."2.1.0" { inherit profileName; }).out; - tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" { inherit profileName; }).out; + percent_encoding = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".percent-encoding."2.2.0" { inherit profileName; }).out; + tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".generic-array."0.14.5" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".generic-array."0.14.6" = overridableMkRustCrate (profileName: rec { name = "generic-array"; - version = "0.14.5"; + version = "0.14.6"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803"; }; + src = fetchCratesIo { inherit name version; sha256 = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9"; }; features = builtins.concatLists [ [ "more_lengths" ] ]; dependencies = { - typenum = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".typenum."1.15.0" { inherit profileName; }).out; + typenum = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".typenum."1.16.0" { inherit profileName; }).out; }; buildDependencies = { version_check = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".version_check."0.9.4" { profileName = "__noProfile"; }).out; @@ -1867,31 +1905,31 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e"; }; dependencies = { - ${ if !hostPlatform.isWindows then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; + ${ if !hostPlatform.isWindows then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; ${ if hostPlatform.isWindows then "winapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".getrandom."0.2.5" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".getrandom."0.2.8" = overridableMkRustCrate (profileName: rec { name = "getrandom"; - version = "0.2.5"; + version = "0.2.8"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "d39cd93900197114fa1fcb7ae84ca742095eed9442088988ae74fa744e930e77"; }; + src = fetchCratesIo { inherit name version; sha256 = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"; }; features = builtins.concatLists [ [ "std" ] ]; dependencies = { cfg_if = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cfg-if."1.0.0" { inherit profileName; }).out; - ${ if hostPlatform.isUnix then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; - ${ if hostPlatform.parsed.kernel.name == "wasi" then "wasi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".wasi."0.10.0+wasi-snapshot-preview1" { inherit profileName; }).out; + ${ if hostPlatform.isUnix then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; + ${ if hostPlatform.parsed.kernel.name == "wasi" then "wasi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".wasi."0.11.0+wasi-snapshot-preview1" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".gimli."0.26.2" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".gimli."0.27.1" = overridableMkRustCrate (profileName: rec { name = "gimli"; - version = "0.26.2"; + version = "0.27.1"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d"; }; + src = fetchCratesIo { inherit name version; sha256 = "221996f774192f0f718773def8201c4ae31f02616a54ccfc2d358bb0e5cefdec"; }; features = builtins.concatLists [ [ "read" ] [ "read-core" ] @@ -1905,7 +1943,7 @@ in src = fetchCratesIo { inherit name version; sha256 = "f6b0decc02f4636b9ccad390dcbe77b722a77efedfa393caf8379a51d5c61899"; }; dependencies = { git_version_macro = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".git-version-macro."0.3.5" { profileName = "__noProfile"; }).out; - proc_macro_hack = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro-hack."0.5.19" { profileName = "__noProfile"; }).out; + proc_macro_hack = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro-hack."0.5.20+deprecated" { profileName = "__noProfile"; }).out; }; }); @@ -1915,38 +1953,38 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "fe69f1cbdb6e28af2bac214e943b99ce8a0a06b447d15d3e61161b0423139f3f"; }; dependencies = { - proc_macro_hack = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro-hack."0.5.19" { profileName = "__noProfile"; }).out; - proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.46" { inherit profileName; }).out; - quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; }).out; - syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.94" { inherit profileName; }).out; + proc_macro_hack = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro-hack."0.5.20+deprecated" { profileName = "__noProfile"; }).out; + proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; + quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; + syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.107" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".h2."0.3.12" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".h2."0.3.15" = overridableMkRustCrate (profileName: rec { name = "h2"; - version = "0.3.12"; + version = "0.3.15"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "62eeb471aa3e3c9197aa4bfeabfe02982f6dc96f750486c0bb0009ac58b26d2b"; }; + src = fetchCratesIo { inherit name version; sha256 = "5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4"; }; dependencies = { - bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; + bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; fnv = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".fnv."1.0.7" { inherit profileName; }).out; - futures_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.21" { inherit profileName; }).out; - futures_sink = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-sink."0.3.21" { inherit profileName; }).out; - futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.21" { inherit profileName; }).out; + futures_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.25" { inherit profileName; }).out; + futures_sink = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-sink."0.3.25" { inherit profileName; }).out; + futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.25" { inherit profileName; }).out; http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; - indexmap = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".indexmap."1.8.0" { inherit profileName; }).out; - slab = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".slab."0.4.5" { inherit profileName; }).out; - tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; - tokio_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-util."0.6.9" { inherit profileName; }).out; - tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" { inherit profileName; }).out; + indexmap = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".indexmap."1.9.2" { inherit profileName; }).out; + slab = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".slab."0.4.7" { inherit profileName; }).out; + tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; + tokio_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-util."0.7.4" { inherit profileName; }).out; + tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".hashbrown."0.11.2" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".hashbrown."0.12.3" = overridableMkRustCrate (profileName: rec { name = "hashbrown"; - version = "0.11.2"; + version = "0.12.3"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"; }; + src = fetchCratesIo { inherit name version; sha256 = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"; }; features = builtins.concatLists [ (lib.optional (rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage/sqlite" || rootFeatures' ? "garage_db/bundled-libs" || rootFeatures' ? "garage_db/rusqlite" || rootFeatures' ? "garage_db/sqlite" || rootFeatures' ? "garage_model/sqlite") "ahash") (lib.optional (rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage/sqlite" || rootFeatures' ? "garage_db/bundled-libs" || rootFeatures' ? "garage_db/rusqlite" || rootFeatures' ? "garage_db/sqlite" || rootFeatures' ? "garage_model/sqlite") "default") @@ -1958,13 +1996,13 @@ in }; }); - "registry+https://github.com/rust-lang/crates.io-index".hashlink."0.7.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".hashlink."0.8.1" = overridableMkRustCrate (profileName: rec { name = "hashlink"; - version = "0.7.0"; + version = "0.8.1"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "7249a3129cbc1ffccd74857f81464a323a152173cdb134e0fd81bc803b29facf"; }; + src = fetchCratesIo { inherit name version; sha256 = "69fe1fcf8b4278d860ad0548329f892a3631fb63f82574df68275f34cdbe0ffa"; }; dependencies = { - ${ if rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage/sqlite" || rootFeatures' ? "garage_db/bundled-libs" || rootFeatures' ? "garage_db/rusqlite" || rootFeatures' ? "garage_db/sqlite" || rootFeatures' ? "garage_model/sqlite" then "hashbrown" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hashbrown."0.11.2" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage/sqlite" || rootFeatures' ? "garage_db/bundled-libs" || rootFeatures' ? "garage_db/rusqlite" || rootFeatures' ? "garage_db/sqlite" || rootFeatures' ? "garage_model/sqlite" then "hashbrown" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hashbrown."0.12.3" { inherit profileName; }).out; }; }); @@ -1974,7 +2012,7 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"; }; dependencies = { - unicode_segmentation = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".unicode-segmentation."1.9.0" { inherit profileName; }).out; + unicode_segmentation = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".unicode-segmentation."1.10.0" { inherit profileName; }).out; }; }); @@ -1998,16 +2036,16 @@ in (lib.optional (rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb") "lmdb-rkv-sys") ]; dependencies = { - ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "bytemuck" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytemuck."1.9.1" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "bytemuck" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytemuck."1.13.0" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "byteorder" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".byteorder."1.4.3" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "heed_traits" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".heed-traits."0.8.0" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "heed_types" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".heed-types."0.8.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "lmdb_sys" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".lmdb-rkv-sys."0.11.2" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "once_cell" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".once_cell."1.10.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "once_cell" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".once_cell."1.17.0" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "page_size" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".page_size."0.4.2" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "synchronoise" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".synchronoise."1.0.0" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb") && hostPlatform.isWindows then "url" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".url."2.2.2" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "synchronoise" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".synchronoise."1.0.1" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb") && hostPlatform.isWindows then "url" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".url."2.3.1" { inherit profileName; }).out; }; }); @@ -2033,11 +2071,11 @@ in ]; dependencies = { ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "bincode" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bincode."1.3.3" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "bytemuck" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytemuck."1.9.1" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "bytemuck" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytemuck."1.13.0" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "byteorder" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".byteorder."1.4.3" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "heed_traits" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".heed-traits."0.8.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "serde" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "serde_json" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.81" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "serde" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "serde_json" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.91" { inherit profileName; }).out; }; }); @@ -2047,10 +2085,23 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"; }; features = builtins.concatLists [ + (lib.optional (rootFeatures' ? "garage_db/cli" || rootFeatures' ? "garage_db/pretty_env_logger") "default") + ]; + dependencies = { + ${ if rootFeatures' ? "garage_db/cli" || rootFeatures' ? "garage_db/pretty_env_logger" then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".hermit-abi."0.2.6" = overridableMkRustCrate (profileName: rec { + name = "hermit-abi"; + version = "0.2.6"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"; }; + features = builtins.concatLists [ [ "default" ] ]; dependencies = { - libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; + libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; }; }); @@ -2094,7 +2145,7 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"; }; dependencies = { - digest = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".digest."0.10.3" { inherit profileName; }).out; + digest = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".digest."0.10.6" { inherit profileName; }).out; }; }); @@ -2104,9 +2155,9 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399"; }; dependencies = { - bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; + bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; fnv = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".fnv."1.0.7" { inherit profileName; }).out; - itoa = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".itoa."1.0.1" { inherit profileName; }).out; + itoa = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".itoa."1.0.5" { inherit profileName; }).out; }; }); @@ -2116,7 +2167,7 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1"; }; dependencies = { - bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; + bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; pin_project_lite = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project-lite."0.2.9" { inherit profileName; }).out; }; @@ -2136,24 +2187,17 @@ in src = fetchCratesIo { inherit name version; sha256 = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".httparse."1.6.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".httparse."1.8.0" = overridableMkRustCrate (profileName: rec { name = "httparse"; - version = "1.6.0"; + version = "1.8.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "9100414882e15fb7feccb4897e5f0ff0ff1ca7d1a86a23208ada4d7a18e6c6c4"; }; + src = fetchCratesIo { inherit name version; sha256 = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"; }; features = builtins.concatLists [ [ "default" ] [ "std" ] ]; }); - "registry+https://github.com/rust-lang/crates.io-index".httpdate."0.3.2" = overridableMkRustCrate (profileName: rec { - name = "httpdate"; - version = "0.3.2"; - registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47"; }; - }); - "registry+https://github.com/rust-lang/crates.io-index".httpdate."1.0.2" = overridableMkRustCrate (profileName: rec { name = "httpdate"; version = "1.0.2"; @@ -2171,11 +2215,11 @@ in }; }); - "registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.18" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.23" = overridableMkRustCrate (profileName: rec { name = "hyper"; - version = "0.14.18"; + version = "0.14.23"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "b26ae0a80afebe130861d90abf98e3814a4f28a4c6ffeb5ab8ebb2be311e0ef2"; }; + src = fetchCratesIo { inherit name version; sha256 = "034711faac9d2166cb1baf1a2fb0b60b1f277f8492fd72176c17f3515e1abd3c"; }; features = builtins.concatLists [ [ "client" ] [ "default" ] @@ -2190,21 +2234,21 @@ in [ "tcp" ] ]; dependencies = { - bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; - futures_channel = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-channel."0.3.21" { inherit profileName; }).out; - futures_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.21" { inherit profileName; }).out; - futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.21" { inherit profileName; }).out; - h2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".h2."0.3.12" { inherit profileName; }).out; + bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; + futures_channel = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-channel."0.3.25" { inherit profileName; }).out; + futures_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.25" { inherit profileName; }).out; + futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.25" { inherit profileName; }).out; + h2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".h2."0.3.15" { inherit profileName; }).out; http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; http_body = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http-body."0.4.5" { inherit profileName; }).out; - httparse = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".httparse."1.6.0" { inherit profileName; }).out; + httparse = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".httparse."1.8.0" { inherit profileName; }).out; httpdate = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".httpdate."1.0.2" { inherit profileName; }).out; - itoa = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".itoa."1.0.1" { inherit profileName; }).out; + itoa = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".itoa."1.0.5" { inherit profileName; }).out; pin_project_lite = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project-lite."0.2.9" { inherit profileName; }).out; - socket2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".socket2."0.4.4" { inherit profileName; }).out; - tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; - tower_service = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tower-service."0.3.1" { inherit profileName; }).out; - tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" { inherit profileName; }).out; + socket2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".socket2."0.4.7" { inherit profileName; }).out; + tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; + tower_service = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tower-service."0.3.2" { inherit profileName; }).out; + tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; want = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".want."0.3.0" { inherit profileName; }).out; }; }); @@ -2223,22 +2267,22 @@ in ]; dependencies = { ct_logs = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".ct-logs."0.8.0" { inherit profileName; }).out; - futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.21" { inherit profileName; }).out; - hyper = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.18" { inherit profileName; }).out; - log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.16" { inherit profileName; }).out; + futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.25" { inherit profileName; }).out; + hyper = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.23" { inherit profileName; }).out; + log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.17" { inherit profileName; }).out; rustls = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rustls."0.19.1" { inherit profileName; }).out; rustls_native_certs = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rustls-native-certs."0.5.0" { inherit profileName; }).out; - tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; + tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; tokio_rustls = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-rustls."0.22.0" { inherit profileName; }).out; webpki = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".webpki."0.21.4" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".hyper-rustls."0.23.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".hyper-rustls."0.23.2" = overridableMkRustCrate (profileName: rec { name = "hyper-rustls"; - version = "0.23.0"; + version = "0.23.2"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "d87c48c02e0dc5e3b849a2041db3029fd066650f8f717c07bf8ed78ccb895cac"; }; + src = fetchCratesIo { inherit name version; sha256 = "1788965e61b367cd03a62950836d5cd41560c3577d90e40e0819373194d1661c"; }; features = builtins.concatLists [ (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "default") [ "http1" ] @@ -2252,11 +2296,11 @@ in ]; dependencies = { http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; - hyper = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.18" { inherit profileName; }).out; - log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.16" { inherit profileName; }).out; - rustls = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rustls."0.20.6" { inherit profileName; }).out; + hyper = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.23" { inherit profileName; }).out; + log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.17" { inherit profileName; }).out; + rustls = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rustls."0.20.8" { inherit profileName; }).out; rustls_native_certs = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rustls-native-certs."0.6.2" { inherit profileName; }).out; - tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; + tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; tokio_rustls = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-rustls."0.23.4" { inherit profileName; }).out; }; }); @@ -2267,13 +2311,44 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1"; }; dependencies = { - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "hyper" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.18" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "hyper" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.23" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "pin_project_lite" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project-lite."0.2.9" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tokio" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tokio" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tokio_io_timeout" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-io-timeout."1.2.0" { inherit profileName; }).out; }; }); + "registry+https://github.com/rust-lang/crates.io-index".iana-time-zone."0.1.53" = overridableMkRustCrate (profileName: rec { + name = "iana-time-zone"; + version = "0.1.53"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765"; }; + features = builtins.concatLists [ + [ "fallback" ] + ]; + dependencies = { + ${ if hostPlatform.parsed.kernel.name == "android" then "android_system_properties" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".android_system_properties."0.1.5" { inherit profileName; }).out; + ${ if hostPlatform.parsed.kernel.name == "darwin" || hostPlatform.parsed.kernel.name == "ios" then "core_foundation_sys" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".core-foundation-sys."0.8.3" { inherit profileName; }).out; + ${ if hostPlatform.parsed.kernel.name == "haiku" then "iana_time_zone_haiku" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".iana-time-zone-haiku."0.1.1" { inherit profileName; }).out; + ${ if hostPlatform.parsed.cpu.name == "wasm32" then "js_sys" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".js-sys."0.3.60" { inherit profileName; }).out; + ${ if hostPlatform.parsed.cpu.name == "wasm32" then "wasm_bindgen" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen."0.2.83" { inherit profileName; }).out; + ${ if hostPlatform.parsed.kernel.name == "windows" then "winapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" { inherit profileName; }).out; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".iana-time-zone-haiku."0.1.1" = overridableMkRustCrate (profileName: rec { + name = "iana-time-zone-haiku"; + version = "0.1.1"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca"; }; + dependencies = { + cxx = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cxx."1.0.87" { inherit profileName; }).out; + }; + buildDependencies = { + cxx_build = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".cxx-build."1.0.87" { profileName = "__noProfile"; }).out; + }; + }); + "registry+https://github.com/rust-lang/crates.io-index".ident_case."1.0.1" = overridableMkRustCrate (profileName: rec { name = "ident_case"; version = "1.0.1"; @@ -2281,28 +2356,27 @@ in src = fetchCratesIo { inherit name version; sha256 = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".idna."0.2.3" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".idna."0.3.0" = overridableMkRustCrate (profileName: rec { name = "idna"; - version = "0.2.3"; + version = "0.3.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8"; }; + src = fetchCratesIo { inherit name version; sha256 = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"; }; dependencies = { - matches = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".matches."0.1.9" { inherit profileName; }).out; - unicode_bidi = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".unicode-bidi."0.3.7" { inherit profileName; }).out; - unicode_normalization = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".unicode-normalization."0.1.19" { inherit profileName; }).out; + unicode_bidi = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".unicode-bidi."0.3.10" { inherit profileName; }).out; + unicode_normalization = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".unicode-normalization."0.1.22" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".indexmap."1.8.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".indexmap."1.9.2" = overridableMkRustCrate (profileName: rec { name = "indexmap"; - version = "1.8.0"; + version = "1.9.2"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "282a6247722caba404c065016bbfa522806e51714c34f5dfc3e4a3a46fcb4223"; }; + src = fetchCratesIo { inherit name version; sha256 = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"; }; features = builtins.concatLists [ [ "std" ] ]; dependencies = { - hashbrown = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hashbrown."0.11.2" { inherit profileName; }).out; + hashbrown = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hashbrown."0.12.3" { inherit profileName; }).out; }; buildDependencies = { autocfg = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".autocfg."1.1.0" { profileName = "__noProfile"; }).out; @@ -2319,11 +2393,28 @@ in }; }); - "registry+https://github.com/rust-lang/crates.io-index".ipnet."2.5.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".io-lifetimes."1.0.4" = overridableMkRustCrate (profileName: rec { + name = "io-lifetimes"; + version = "1.0.4"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "e7d6c6f8c91b4b9ed43484ad1a938e393caf35960fce7f82a040497207bd8e9e"; }; + features = builtins.concatLists [ + (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "close") + (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "default") + (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "libc") + (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "windows-sys") + ]; + dependencies = { + ${ if (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") && !hostPlatform.isWindows then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") && hostPlatform.isWindows then "windows_sys" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".windows-sys."0.42.0" { inherit profileName; }).out; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".ipnet."2.7.1" = overridableMkRustCrate (profileName: rec { name = "ipnet"; - version = "2.5.0"; + version = "2.7.1"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b"; }; + src = fetchCratesIo { inherit name version; sha256 = "30e22bd8629359895450b59ea7a776c850561b96a3b1d31321c1949d9e6c9146"; }; features = builtins.concatLists [ (lib.optional (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") "default") ]; @@ -2339,23 +2430,34 @@ in [ "serde" ] ]; dependencies = { - serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; + serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".is-terminal."0.4.2" = overridableMkRustCrate (profileName: rec { + name = "is-terminal"; + version = "0.4.2"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "28dfb6c8100ccc63462345b67d1bbc3679177c75ee4bf59bf29c8b1d110b8189"; }; + dependencies = { + ${ if (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") && hostPlatform.parsed.kernel.name == "hermit" then "hermit_abi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hermit-abi."0.2.6" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "io_lifetimes" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".io-lifetimes."1.0.4" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") && !(hostPlatform.isWindows || hostPlatform.parsed.kernel.name == "hermit" || hostPlatform.parsed.kernel.name == "unknown") then "rustix" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rustix."0.36.7" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") && hostPlatform.isWindows then "windows_sys" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".windows-sys."0.42.0" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".isolang."1.0.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".isolang."2.2.0" = overridableMkRustCrate (profileName: rec { name = "isolang"; - version = "1.0.0"; + version = "2.2.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "265ef164908329e47e753c769b14cbb27434abf0c41984dca201484022f09ce5"; }; + src = fetchCratesIo { inherit name version; sha256 = "b64fd6448ee8a45ce6e4365c58e4fa7d8740cba2ed70db3e9ab4879ebd93eaaa"; }; features = builtins.concatLists [ [ "default" ] + [ "english_names" ] ]; dependencies = { - phf = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".phf."0.7.24" { inherit profileName; }).out; - }; - buildDependencies = { - phf_codegen = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".phf_codegen."0.7.24" { profileName = "__noProfile"; }).out; + phf = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".phf."0.10.1" { inherit profileName; }).out; }; }); @@ -2366,61 +2468,61 @@ in src = fetchCratesIo { inherit name version; sha256 = "c4a9b56eb56058f43dc66e58f40a214b2ccbc9f3df51861b63d51dec7b65bc3f"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".itertools."0.10.3" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".itertools."0.10.5" = overridableMkRustCrate (profileName: rec { name = "itertools"; - version = "0.10.3"; + version = "0.10.5"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3"; }; + src = fetchCratesIo { inherit name version; sha256 = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"; }; features = builtins.concatLists [ (lib.optional (rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp") "default") (lib.optional (rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp") "use_alloc") (lib.optional (rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp") "use_std") ]; dependencies = { - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "either" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".either."1.6.1" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "either" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".either."1.8.0" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".itoa."1.0.1" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".itoa."1.0.5" = overridableMkRustCrate (profileName: rec { name = "itoa"; - version = "1.0.1"; + version = "1.0.5"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35"; }; + src = fetchCratesIo { inherit name version; sha256 = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".jobserver."0.1.24" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".jobserver."0.1.25" = overridableMkRustCrate (profileName: rec { name = "jobserver"; - version = "0.1.24"; + version = "0.1.25"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "af25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fa"; }; + src = fetchCratesIo { inherit name version; sha256 = "068b1ee6743e4d11fb9c6a1e6064b3693a1b600e7f5f5988047d98b3dc9fb90b"; }; dependencies = { - ${ if hostPlatform.isUnix then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; + ${ if hostPlatform.isUnix then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".js-sys."0.3.56" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".js-sys."0.3.60" = overridableMkRustCrate (profileName: rec { name = "js-sys"; - version = "0.3.56"; + version = "0.3.60"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "a38fc24e30fd564ce974c02bf1d337caddff65be6cc4735a1f7eab22a7440f04"; }; + src = fetchCratesIo { inherit name version; sha256 = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47"; }; dependencies = { - wasm_bindgen = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen."0.2.79" { inherit profileName; }).out; + wasm_bindgen = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen."0.2.83" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".json-patch."0.2.6" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".json-patch."0.2.7" = overridableMkRustCrate (profileName: rec { name = "json-patch"; - version = "0.2.6"; + version = "0.2.7"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "f995a3c8f2bc3dd52a18a583e90f9ec109c047fa1603a853e46bcda14d2e279d"; }; + src = fetchCratesIo { inherit name version; sha256 = "eb3fa5a61630976fc4c353c70297f2e93f1930e3ccee574d59d618ccbd5154ce"; }; features = builtins.concatLists [ (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "default") (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "diff") (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "treediff") ]; dependencies = { - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde_json" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.81" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde_json" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.91" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "treediff" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".treediff."3.0.2" { inherit profileName; }).out; }; }); @@ -2431,9 +2533,9 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "eaa63191d68230cccb81c5aa23abd53ed64d83337cacbb25a7b8c7979523774f"; }; dependencies = { - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "log" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.16" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde_json" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.81" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "log" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.17" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde_json" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.91" { inherit profileName; }).out; }; }); @@ -2448,19 +2550,19 @@ in (lib.optional (rootFeatures' ? "k2v-client/cli" || rootFeatures' ? "k2v-client/garage_util") "garage_util") ]; dependencies = { - base64 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".base64."0.13.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "clap" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".clap."3.1.18" { inherit profileName; }).out; + base64 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".base64."0.21.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "clap" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".clap."4.1.3" { inherit profileName; }).out; ${ if rootFeatures' ? "k2v-client/cli" || rootFeatures' ? "k2v-client/garage_util" then "garage_util" else null } = (rustPackages."unknown".garage_util."0.8.1" { inherit profileName; }).out; http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; - hyper_rustls = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper-rustls."0.23.0" { inherit profileName; }).out; - log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.16" { inherit profileName; }).out; + hyper_rustls = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper-rustls."0.23.2" { inherit profileName; }).out; + log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.17" { inherit profileName; }).out; rusoto_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rusoto_core."0.48.0" { inherit profileName; }).out; rusoto_credential = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rusoto_credential."0.48.0" { inherit profileName; }).out; rusoto_signature = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rusoto_signature."0.48.0" { inherit profileName; }).out; - serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; - serde_json = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.81" { inherit profileName; }).out; - thiserror = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".thiserror."1.0.31" { inherit profileName; }).out; - tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; + serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; + serde_json = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.91" { inherit profileName; }).out; + thiserror = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".thiserror."1.0.38" { inherit profileName; }).out; + tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; }; }); @@ -2478,15 +2580,15 @@ in (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/k8s-openapi" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "v1_22") ]; dependencies = { - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/k8s-openapi" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "base64" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".base64."0.13.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/k8s-openapi" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "bytes" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/k8s-openapi" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "chrono" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".chrono."0.4.19" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/k8s-openapi" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "base64" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".base64."0.13.1" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/k8s-openapi" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "bytes" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/k8s-openapi" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "chrono" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".chrono."0.4.23" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/k8s-openapi" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "http" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/k8s-openapi" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "percent_encoding" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".percent-encoding."2.1.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/k8s-openapi" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/k8s-openapi" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "percent_encoding" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".percent-encoding."2.2.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/k8s-openapi" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/k8s-openapi" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde_value" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde-value."0.7.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/k8s-openapi" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde_json" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.81" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/k8s-openapi" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "url" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".url."2.2.2" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/k8s-openapi" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde_json" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.91" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/k8s-openapi" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "url" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".url."2.3.1" { inherit profileName; }).out; }; }); @@ -2548,34 +2650,34 @@ in (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "tracing") ]; dependencies = { - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "base64" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".base64."0.13.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "bytes" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "chrono" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".chrono."0.4.19" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "base64" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".base64."0.13.1" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "bytes" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "chrono" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".chrono."0.4.23" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "dirs" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".dirs-next."2.0.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "either" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".either."1.6.1" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "futures" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.21" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "either" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".either."1.8.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "futures" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.25" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "http" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "http_body" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http-body."0.4.5" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "hyper" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.18" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "hyper_rustls" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper-rustls."0.23.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "hyper" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.23" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "hyper_rustls" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper-rustls."0.23.2" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "hyper_timeout" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper-timeout."0.4.1" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "jsonpath_lib" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".jsonpath_lib."0.3.0" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "k8s_openapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".k8s-openapi."0.16.0" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "kube_core" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".kube-core."0.75.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "pem" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pem."1.1.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "pem" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pem."1.1.1" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "pin_project" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project."1.0.12" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "rustls" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rustls."0.20.6" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "rustls_pemfile" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rustls-pemfile."1.0.1" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "rustls" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rustls."0.20.8" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "rustls_pemfile" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rustls-pemfile."1.0.2" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "secrecy" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".secrecy."0.8.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde_json" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.81" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde_yaml" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_yaml."0.8.23" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "thiserror" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".thiserror."1.0.31" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tokio" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tokio_util" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-util."0.7.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tower" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tower."0.4.12" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tower_http" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tower-http."0.3.3" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tracing" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde_json" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.91" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde_yaml" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_yaml."0.8.26" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "thiserror" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".thiserror."1.0.38" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tokio" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tokio_util" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-util."0.7.4" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tower" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tower."0.4.13" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tower_http" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tower-http."0.3.5" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tracing" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; }; }); @@ -2591,16 +2693,16 @@ in (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "schemars") ]; dependencies = { - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "chrono" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".chrono."0.4.19" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "form_urlencoded" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".form_urlencoded."1.0.1" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "chrono" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".chrono."0.4.23" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "form_urlencoded" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".form_urlencoded."1.1.0" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "http" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "json_patch" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".json-patch."0.2.6" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "json_patch" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".json-patch."0.2.7" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "k8s_openapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".k8s-openapi."0.16.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "once_cell" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".once_cell."1.10.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "schemars" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".schemars."0.8.8" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde_json" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.81" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "thiserror" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".thiserror."1.0.31" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "once_cell" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".once_cell."1.17.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "schemars" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".schemars."0.8.11" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde_json" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.91" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "thiserror" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".thiserror."1.0.38" { inherit profileName; }).out; }; }); @@ -2610,11 +2712,11 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "98459d53b2841237392cd6959956185b2df15c19d32c3b275ed6ca7b7ee1adae"; }; dependencies = { - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "darling" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".darling."0.14.1" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "proc_macro2" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.46" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "quote" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde_json" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.81" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "syn" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.94" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "darling" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".darling."0.14.2" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "proc_macro2" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "quote" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde_json" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.91" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "syn" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.107" { inherit profileName; }).out; }; }); @@ -2624,22 +2726,22 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "7769af142ee2e46bfa44bd393cf7f40b9d8b80d2e11f6317399551ed17760beb"; }; dependencies = { - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "ahash" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".ahash."0.8.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "ahash" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".ahash."0.8.2" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "backoff" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".backoff."0.4.0" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "derivative" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".derivative."2.2.0" { profileName = "__noProfile"; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "futures" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.21" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "json_patch" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".json-patch."0.2.6" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "futures" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.25" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "json_patch" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".json-patch."0.2.7" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "k8s_openapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".k8s-openapi."0.16.0" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "kube_client" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".kube-client."0.75.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "parking_lot" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".parking_lot."0.12.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "parking_lot" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".parking_lot."0.12.1" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "pin_project" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project."1.0.12" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde_json" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.81" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "smallvec" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".smallvec."1.8.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "thiserror" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".thiserror."1.0.31" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tokio" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tokio_util" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-util."0.7.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tracing" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde_json" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.91" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "smallvec" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".smallvec."1.10.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "thiserror" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".thiserror."1.0.38" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tokio" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tokio_util" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-util."0.7.4" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tracing" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; }; }); @@ -2654,11 +2756,11 @@ in [ "futures" ] ]; dependencies = { - futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.21" { inherit profileName; }).out; + futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.25" { inherit profileName; }).out; hex = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hex."0.4.3" { inherit profileName; }).out; sodiumoxide = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".kuska-sodiumoxide."0.2.5-0" { inherit profileName; }).out; - log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.16" { inherit profileName; }).out; - thiserror = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".thiserror."1.0.31" { inherit profileName; }).out; + log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.17" { inherit profileName; }).out; + thiserror = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".thiserror."1.0.38" { inherit profileName; }).out; }; }); @@ -2674,9 +2776,9 @@ in (lib.optional (rootFeatures' ? "garage/system-libs" || rootFeatures' ? "garage_rpc/system-libs") "use-pkg-config") ]; dependencies = { - libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; + libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; libsodium_sys = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libsodium-sys."0.2.7" { inherit profileName; }).out; - serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; + serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; }; }); @@ -2687,13 +2789,14 @@ in src = fetchCratesIo { inherit name version; sha256 = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" = overridableMkRustCrate (profileName: rec { name = "libc"; - version = "0.2.121"; + version = "0.2.139"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "efaa7b300f3b5fe8eb6bf21ce3895e1751d9665086af2d64b42f19701015ff4f"; }; + src = fetchCratesIo { inherit name version; sha256 = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79"; }; features = builtins.concatLists [ [ "default" ] + (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "extra_traits") [ "std" ] ]; }); @@ -2707,21 +2810,21 @@ in (lib.optional (rootFeatures' ? "garage/system-libs" || rootFeatures' ? "garage_rpc/system-libs") "use-pkg-config") ]; dependencies = { - libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; + libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; }; buildDependencies = { - ${ if !(hostPlatform.parsed.abi.name == "msvc") then "cc" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".cc."1.0.73" { profileName = "__noProfile"; }).out; - ${ if hostPlatform.parsed.abi.name == "msvc" then "libc" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { profileName = "__noProfile"; }).out; - pkg_config = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".pkg-config."0.3.24" { profileName = "__noProfile"; }).out; + ${ if !(hostPlatform.parsed.abi.name == "msvc") then "cc" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".cc."1.0.78" { profileName = "__noProfile"; }).out; + ${ if hostPlatform.parsed.abi.name == "msvc" then "libc" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { profileName = "__noProfile"; }).out; + pkg_config = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".pkg-config."0.3.26" { profileName = "__noProfile"; }).out; walkdir = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".walkdir."2.3.2" { profileName = "__noProfile"; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".libsqlite3-sys."0.24.2" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".libsqlite3-sys."0.25.2" = overridableMkRustCrate (profileName: rec { name = "libsqlite3-sys"; - version = "0.24.2"; + version = "0.25.2"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "898745e570c7d0453cc1fbc4a701eb6c662ed54e8fec8b7d14be137ebeeb9d14"; }; + src = fetchCratesIo { inherit name version; sha256 = "29f835d03d717946d28b1d1ed632eb6f0e24a299388ee623d0c23118d3e8a7fa"; }; features = builtins.concatLists [ (lib.optional (rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage_db/bundled-libs") "bundled") (lib.optional (rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage_db/bundled-libs") "bundled_bindings") @@ -2732,17 +2835,43 @@ in (lib.optional (rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage/sqlite" || rootFeatures' ? "garage_db/bundled-libs" || rootFeatures' ? "garage_db/rusqlite" || rootFeatures' ? "garage_db/sqlite" || rootFeatures' ? "garage_model/sqlite") "vcpkg") ]; buildDependencies = { - ${ if rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage_db/bundled-libs" then "cc" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".cc."1.0.73" { profileName = "__noProfile"; }).out; - ${ if rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage/sqlite" || rootFeatures' ? "garage_db/bundled-libs" || rootFeatures' ? "garage_db/rusqlite" || rootFeatures' ? "garage_db/sqlite" || rootFeatures' ? "garage_model/sqlite" then "pkg_config" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".pkg-config."0.3.24" { profileName = "__noProfile"; }).out; + ${ if rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage_db/bundled-libs" then "cc" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".cc."1.0.78" { profileName = "__noProfile"; }).out; + ${ if rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage/sqlite" || rootFeatures' ? "garage_db/bundled-libs" || rootFeatures' ? "garage_db/rusqlite" || rootFeatures' ? "garage_db/sqlite" || rootFeatures' ? "garage_model/sqlite" then "pkg_config" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".pkg-config."0.3.26" { profileName = "__noProfile"; }).out; ${ if rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage/sqlite" || rootFeatures' ? "garage_db/bundled-libs" || rootFeatures' ? "garage_db/rusqlite" || rootFeatures' ? "garage_db/sqlite" || rootFeatures' ? "garage_model/sqlite" then "vcpkg" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".vcpkg."0.2.15" { profileName = "__noProfile"; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".linked-hash-map."0.5.4" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".link-cplusplus."1.0.8" = overridableMkRustCrate (profileName: rec { + name = "link-cplusplus"; + version = "1.0.8"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5"; }; + features = builtins.concatLists [ + [ "default" ] + ]; + buildDependencies = { + cc = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".cc."1.0.78" { profileName = "__noProfile"; }).out; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".linked-hash-map."0.5.6" = overridableMkRustCrate (profileName: rec { name = "linked-hash-map"; - version = "0.5.4"; + version = "0.5.6"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"; }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".linux-raw-sys."0.1.4" = overridableMkRustCrate (profileName: rec { + name = "linux-raw-sys"; + version = "0.1.4"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3"; }; + src = fetchCratesIo { inherit name version; sha256 = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4"; }; + features = builtins.concatLists [ + (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "errno") + (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "general") + (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "ioctl") + (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "no_std") + ]; }); "registry+https://github.com/rust-lang/crates.io-index".lmdb-rkv-sys."0.11.2" = overridableMkRustCrate (profileName: rec { @@ -2754,29 +2883,32 @@ in (lib.optional (rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb") "default") ]; dependencies = { - ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; }; buildDependencies = { - ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "cc" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".cc."1.0.73" { profileName = "__noProfile"; }).out; - ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "pkg_config" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".pkg-config."0.3.24" { profileName = "__noProfile"; }).out; + ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "cc" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".cc."1.0.78" { profileName = "__noProfile"; }).out; + ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "pkg_config" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".pkg-config."0.3.26" { profileName = "__noProfile"; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".lock_api."0.4.6" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".lock_api."0.4.9" = overridableMkRustCrate (profileName: rec { name = "lock_api"; - version = "0.4.6"; + version = "0.4.9"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b"; }; + src = fetchCratesIo { inherit name version; sha256 = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"; }; dependencies = { scopeguard = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".scopeguard."1.1.0" { inherit profileName; }).out; }; + buildDependencies = { + autocfg = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".autocfg."1.1.0" { profileName = "__noProfile"; }).out; + }; }); - "registry+https://github.com/rust-lang/crates.io-index".log."0.4.16" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".log."0.4.17" = overridableMkRustCrate (profileName: rec { name = "log"; - version = "0.4.16"; + version = "0.4.17"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "6389c490849ff5bc16be905ae24bc913a9c8892e19b2341dbc175e14c341c2b8"; }; + src = fetchCratesIo { inherit name version; sha256 = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"; }; features = builtins.concatLists [ [ "std" ] ]; @@ -2795,13 +2927,6 @@ in }; }); - "registry+https://github.com/rust-lang/crates.io-index".matches."0.1.9" = overridableMkRustCrate (profileName: rec { - name = "matches"; - version = "0.1.9"; - registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f"; }; - }); - "registry+https://github.com/rust-lang/crates.io-index".md-5."0.9.1" = overridableMkRustCrate (profileName: rec { name = "md-5"; version = "0.9.1"; @@ -2818,36 +2943,36 @@ in }; }); - "registry+https://github.com/rust-lang/crates.io-index".md-5."0.10.1" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".md-5."0.10.5" = overridableMkRustCrate (profileName: rec { name = "md-5"; - version = "0.10.1"; + version = "0.10.5"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "658646b21e0b72f7866c7038ab086d3d5e1cd6271f060fd37defb241949d0582"; }; + src = fetchCratesIo { inherit name version; sha256 = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca"; }; features = builtins.concatLists [ [ "default" ] [ "std" ] ]; dependencies = { - digest = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".digest."0.10.3" { inherit profileName; }).out; + digest = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".digest."0.10.6" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".memchr."2.4.1" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".memchr."2.5.0" = overridableMkRustCrate (profileName: rec { name = "memchr"; - version = "2.4.1"; + version = "2.5.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a"; }; + src = fetchCratesIo { inherit name version; sha256 = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"; }; features = builtins.concatLists [ [ "default" ] [ "std" ] ]; }); - "registry+https://github.com/rust-lang/crates.io-index".memoffset."0.6.5" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".memoffset."0.7.1" = overridableMkRustCrate (profileName: rec { name = "memoffset"; - version = "0.6.5"; + version = "0.7.1"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"; }; + src = fetchCratesIo { inherit name version; sha256 = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"; }; features = builtins.concatLists [ [ "default" ] ]; @@ -2873,21 +2998,21 @@ in ]; }); - "registry+https://github.com/rust-lang/crates.io-index".miniz_oxide."0.5.4" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".miniz_oxide."0.6.2" = overridableMkRustCrate (profileName: rec { name = "miniz_oxide"; - version = "0.5.4"; + version = "0.6.2"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "96590ba8f175222643a85693f33d26e9c8a015f599c216509b1a6894af675d34"; }; + src = fetchCratesIo { inherit name version; sha256 = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa"; }; dependencies = { adler = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".adler."1.0.2" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".mio."0.8.2" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".mio."0.8.5" = overridableMkRustCrate (profileName: rec { name = "mio"; - version = "0.8.2"; + version = "0.8.5"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "52da4364ffb0e4fe33a9841a98a3f3014fb964045ce4f7a45a398243c8d6b0c9"; }; + src = fetchCratesIo { inherit name version; sha256 = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de"; }; features = builtins.concatLists [ [ "default" ] [ "net" ] @@ -2895,53 +3020,41 @@ in [ "os-poll" ] ]; dependencies = { - ${ if hostPlatform.isUnix || hostPlatform.parsed.kernel.name == "wasi" then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; - log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.16" { inherit profileName; }).out; - ${ if hostPlatform.isWindows then "miow" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".miow."0.3.7" { inherit profileName; }).out; - ${ if hostPlatform.isWindows then "ntapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".ntapi."0.3.7" { inherit profileName; }).out; + ${ if hostPlatform.isUnix || hostPlatform.parsed.kernel.name == "wasi" then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; + log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.17" { inherit profileName; }).out; ${ if hostPlatform.parsed.kernel.name == "wasi" then "wasi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".wasi."0.11.0+wasi-snapshot-preview1" { inherit profileName; }).out; - ${ if hostPlatform.isWindows then "winapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" { inherit profileName; }).out; + ${ if hostPlatform.isWindows then "windows_sys" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".windows-sys."0.42.0" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".miow."0.3.7" = overridableMkRustCrate (profileName: rec { - name = "miow"; - version = "0.3.7"; - registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21"; }; - dependencies = { - winapi = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" { inherit profileName; }).out; - }; - }); - - "registry+https://github.com/rust-lang/crates.io-index".mktemp."0.4.1" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".mktemp."0.5.0" = overridableMkRustCrate (profileName: rec { name = "mktemp"; - version = "0.4.1"; + version = "0.5.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "975de676448231fcde04b9149d2543077e166b78fc29eae5aa219e7928410da2"; }; + src = fetchCratesIo { inherit name version; sha256 = "4bdc1f74dd7bb717d39f784f844e490d935b3aa7e383008006dbbf29c1f7820a"; }; dependencies = { - uuid = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".uuid."0.8.2" { inherit profileName; }).out; + uuid = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".uuid."1.2.2" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".multer."2.0.2" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".multer."2.0.4" = overridableMkRustCrate (profileName: rec { name = "multer"; - version = "2.0.2"; + version = "2.0.4"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "5f8f35e687561d5c1667590911e6698a8cb714a134a7505718a182e7bc9d3836"; }; + src = fetchCratesIo { inherit name version; sha256 = "6ed4198ce7a4cbd2a57af78d28c6fbb57d81ac5f1d6ad79ac6c5587419cbdf22"; }; features = builtins.concatLists [ [ "default" ] ]; dependencies = { - bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; - encoding_rs = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".encoding_rs."0.8.30" { inherit profileName; }).out; - futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.21" { inherit profileName; }).out; + bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; + encoding_rs = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".encoding_rs."0.8.31" { inherit profileName; }).out; + futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.25" { inherit profileName; }).out; http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; - httparse = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".httparse."1.6.0" { inherit profileName; }).out; - log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.16" { inherit profileName; }).out; - memchr = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".memchr."2.4.1" { inherit profileName; }).out; + httparse = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".httparse."1.8.0" { inherit profileName; }).out; + log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.17" { inherit profileName; }).out; + memchr = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".memchr."2.5.0" { inherit profileName; }).out; mime = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".mime."0.3.16" { inherit profileName; }).out; - spin = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".spin."0.9.2" { inherit profileName; }).out; + spin = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".spin."0.9.4" { inherit profileName; }).out; }; buildDependencies = { version_check = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".version_check."0.9.4" { profileName = "__noProfile"; }).out; @@ -2967,55 +3080,67 @@ in [ "telemetry" ] ]; dependencies = { - arc_swap = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".arc-swap."1.5.0" { inherit profileName; }).out; - async_trait = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".async-trait."0.1.52" { profileName = "__noProfile"; }).out; - bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; + arc_swap = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".arc-swap."1.6.0" { inherit profileName; }).out; + async_trait = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".async-trait."0.1.63" { profileName = "__noProfile"; }).out; + bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; cfg_if = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cfg-if."1.0.0" { inherit profileName; }).out; err_derive = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".err-derive."0.3.1" { profileName = "__noProfile"; }).out; - futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.21" { inherit profileName; }).out; + futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.25" { inherit profileName; }).out; hex = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hex."0.4.3" { inherit profileName; }).out; kuska_handshake = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".kuska-handshake."0.2.0" { inherit profileName; }).out; sodiumoxide = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".kuska-sodiumoxide."0.2.5-0" { inherit profileName; }).out; - log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.16" { inherit profileName; }).out; + log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.17" { inherit profileName; }).out; opentelemetry = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".opentelemetry."0.17.0" { inherit profileName; }).out; opentelemetry_contrib = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".opentelemetry-contrib."0.9.0" { inherit profileName; }).out; pin_project = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project."1.0.12" { inherit profileName; }).out; rand = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand."0.8.5" { inherit profileName; }).out; rmp_serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rmp-serde."0.15.5" { inherit profileName; }).out; - serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; - tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; - tokio_stream = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-stream."0.1.8" { inherit profileName; }).out; - tokio_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-util."0.7.0" { inherit profileName; }).out; + serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; + tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; + tokio_stream = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-stream."0.1.11" { inherit profileName; }).out; + tokio_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-util."0.7.4" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".nom."7.1.1" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".nom."7.1.3" = overridableMkRustCrate (profileName: rec { name = "nom"; - version = "7.1.1"; + version = "7.1.3"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36"; }; + src = fetchCratesIo { inherit name version; sha256 = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"; }; features = builtins.concatLists [ [ "alloc" ] [ "default" ] [ "std" ] ]; dependencies = { - memchr = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".memchr."2.4.1" { inherit profileName; }).out; + memchr = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".memchr."2.5.0" { inherit profileName; }).out; minimal_lexical = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".minimal-lexical."0.2.1" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".ntapi."0.3.7" = overridableMkRustCrate (profileName: rec { - name = "ntapi"; - version = "0.3.7"; + "registry+https://github.com/rust-lang/crates.io-index".nom8."0.2.0" = overridableMkRustCrate (profileName: rec { + name = "nom8"; + version = "0.2.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f"; }; + src = fetchCratesIo { inherit name version; sha256 = "ae01545c9c7fc4486ab7debaf2aad7003ac19431791868fb2e8066df97fad2f8"; }; features = builtins.concatLists [ + [ "alloc" ] [ "default" ] - [ "user" ] + [ "std" ] ]; dependencies = { - winapi = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" { inherit profileName; }).out; + memchr = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".memchr."2.5.0" { inherit profileName; }).out; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".nu-ansi-term."0.46.0" = overridableMkRustCrate (profileName: rec { + name = "nu-ansi-term"; + version = "0.46.0"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"; }; + dependencies = { + overload = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".overload."0.1.1" { inherit profileName; }).out; + ${ if hostPlatform.parsed.kernel.name == "windows" then "winapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" { inherit profileName; }).out; }; }); @@ -3032,10 +3157,10 @@ in dependencies = { num_bigint = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-bigint."0.2.6" { inherit profileName; }).out; num_complex = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-complex."0.2.4" { inherit profileName; }).out; - num_integer = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-integer."0.1.44" { inherit profileName; }).out; + num_integer = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-integer."0.1.45" { inherit profileName; }).out; num_iter = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-iter."0.1.43" { inherit profileName; }).out; num_rational = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-rational."0.2.4" { inherit profileName; }).out; - num_traits = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-traits."0.2.14" { inherit profileName; }).out; + num_traits = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-traits."0.2.15" { inherit profileName; }).out; }; }); @@ -3048,8 +3173,8 @@ in [ "std" ] ]; dependencies = { - num_integer = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-integer."0.1.44" { inherit profileName; }).out; - num_traits = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-traits."0.2.14" { inherit profileName; }).out; + num_integer = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-integer."0.1.45" { inherit profileName; }).out; + num_traits = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-traits."0.2.15" { inherit profileName; }).out; }; buildDependencies = { autocfg = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".autocfg."1.1.0" { profileName = "__noProfile"; }).out; @@ -3065,24 +3190,24 @@ in [ "std" ] ]; dependencies = { - num_traits = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-traits."0.2.14" { inherit profileName; }).out; + num_traits = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-traits."0.2.15" { inherit profileName; }).out; }; buildDependencies = { autocfg = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".autocfg."1.1.0" { profileName = "__noProfile"; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".num-integer."0.1.44" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".num-integer."0.1.45" = overridableMkRustCrate (profileName: rec { name = "num-integer"; - version = "0.1.44"; + version = "0.1.45"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db"; }; + src = fetchCratesIo { inherit name version; sha256 = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"; }; features = builtins.concatLists [ [ "default" ] [ "std" ] ]; dependencies = { - num_traits = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-traits."0.2.14" { inherit profileName; }).out; + num_traits = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-traits."0.2.15" { inherit profileName; }).out; }; buildDependencies = { autocfg = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".autocfg."1.1.0" { profileName = "__noProfile"; }).out; @@ -3098,8 +3223,8 @@ in [ "std" ] ]; dependencies = { - num_integer = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-integer."0.1.44" { inherit profileName; }).out; - num_traits = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-traits."0.2.14" { inherit profileName; }).out; + num_integer = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-integer."0.1.45" { inherit profileName; }).out; + num_traits = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-traits."0.2.15" { inherit profileName; }).out; }; buildDependencies = { autocfg = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".autocfg."1.1.0" { profileName = "__noProfile"; }).out; @@ -3118,21 +3243,20 @@ in ]; dependencies = { num_bigint = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-bigint."0.2.6" { inherit profileName; }).out; - num_integer = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-integer."0.1.44" { inherit profileName; }).out; - num_traits = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-traits."0.2.14" { inherit profileName; }).out; + num_integer = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-integer."0.1.45" { inherit profileName; }).out; + num_traits = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-traits."0.2.15" { inherit profileName; }).out; }; buildDependencies = { autocfg = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".autocfg."1.1.0" { profileName = "__noProfile"; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".num-traits."0.2.14" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".num-traits."0.2.15" = overridableMkRustCrate (profileName: rec { name = "num-traits"; - version = "0.2.14"; + version = "0.2.15"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290"; }; + src = fetchCratesIo { inherit name version; sha256 = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"; }; features = builtins.concatLists [ - [ "default" ] [ "std" ] ]; buildDependencies = { @@ -3140,32 +3264,22 @@ in }; }); - "registry+https://github.com/rust-lang/crates.io-index".num_cpus."1.13.1" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".num_cpus."1.15.0" = overridableMkRustCrate (profileName: rec { name = "num_cpus"; - version = "1.13.1"; - registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"; }; - dependencies = { - ${ if (hostPlatform.parsed.cpu.name == "x86_64" || hostPlatform.parsed.cpu.name == "aarch64") && hostPlatform.parsed.kernel.name == "hermit" then "hermit_abi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hermit-abi."0.1.19" { inherit profileName; }).out; - ${ if !hostPlatform.isWindows then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; - }; - }); - - "registry+https://github.com/rust-lang/crates.io-index".num_threads."0.1.5" = overridableMkRustCrate (profileName: rec { - name = "num_threads"; - version = "0.1.5"; + version = "1.15.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "aba1801fb138d8e85e11d0fc70baf4fe1cdfffda7c6cd34a854905df588e5ed0"; }; + src = fetchCratesIo { inherit name version; sha256 = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"; }; dependencies = { - ${ if hostPlatform.parsed.kernel.name == "darwin" || hostPlatform.parsed.kernel.name == "ios" || hostPlatform.parsed.kernel.name == "freebsd" then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; + ${ if (hostPlatform.parsed.cpu.name == "x86_64" || hostPlatform.parsed.cpu.name == "aarch64") && hostPlatform.parsed.kernel.name == "hermit" then "hermit_abi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hermit-abi."0.2.6" { inherit profileName; }).out; + ${ if !hostPlatform.isWindows then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".object."0.29.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".object."0.30.3" = overridableMkRustCrate (profileName: rec { name = "object"; - version = "0.29.0"; + version = "0.30.3"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53"; }; + src = fetchCratesIo { inherit name version; sha256 = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439"; }; features = builtins.concatLists [ [ "archive" ] [ "coff" ] @@ -3176,15 +3290,15 @@ in [ "unaligned" ] ]; dependencies = { - memchr = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".memchr."2.4.1" { inherit profileName; }).out; + memchr = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".memchr."2.5.0" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".once_cell."1.10.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".once_cell."1.17.0" = overridableMkRustCrate (profileName: rec { name = "once_cell"; - version = "1.10.0"; + version = "1.17.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9"; }; + src = fetchCratesIo { inherit name version; sha256 = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66"; }; features = builtins.concatLists [ [ "alloc" ] [ "default" ] @@ -3229,21 +3343,21 @@ in [ "trace" ] ]; dependencies = { - async_trait = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".async-trait."0.1.52" { profileName = "__noProfile"; }).out; - crossbeam_channel = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".crossbeam-channel."0.5.4" { inherit profileName; }).out; + async_trait = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".async-trait."0.1.63" { profileName = "__noProfile"; }).out; + crossbeam_channel = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".crossbeam-channel."0.5.6" { inherit profileName; }).out; dashmap = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".dashmap."4.0.2" { inherit profileName; }).out; fnv = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".fnv."1.0.7" { inherit profileName; }).out; - futures_channel = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-channel."0.3.21" { inherit profileName; }).out; - futures_executor = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-executor."0.3.21" { inherit profileName; }).out; - futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.21" { inherit profileName; }).out; - ${ if hostPlatform.parsed.cpu.name == "wasm32" then "js_sys" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".js-sys."0.3.56" { inherit profileName; }).out; + futures_channel = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-channel."0.3.25" { inherit profileName; }).out; + futures_executor = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-executor."0.3.25" { inherit profileName; }).out; + futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.25" { inherit profileName; }).out; + ${ if hostPlatform.parsed.cpu.name == "wasm32" then "js_sys" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".js-sys."0.3.60" { inherit profileName; }).out; lazy_static = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".lazy_static."1.4.0" { inherit profileName; }).out; - percent_encoding = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".percent-encoding."2.1.0" { inherit profileName; }).out; + percent_encoding = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".percent-encoding."2.2.0" { inherit profileName; }).out; pin_project = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project."1.0.12" { inherit profileName; }).out; rand = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand."0.8.5" { inherit profileName; }).out; - thiserror = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".thiserror."1.0.31" { inherit profileName; }).out; - tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; - tokio_stream = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-stream."0.1.8" { inherit profileName; }).out; + thiserror = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".thiserror."1.0.38" { inherit profileName; }).out; + tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; + tokio_stream = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-stream."0.1.11" { inherit profileName; }).out; }; }); @@ -3274,14 +3388,14 @@ in (lib.optional (rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp") "tonic-build") ]; dependencies = { - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "async_trait" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".async-trait."0.1.52" { profileName = "__noProfile"; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "futures" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.21" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "futures_util" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.21" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "async_trait" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".async-trait."0.1.63" { profileName = "__noProfile"; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "futures" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.25" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "futures_util" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.25" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "http" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "opentelemetry" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".opentelemetry."0.17.0" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "prost" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".prost."0.9.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "thiserror" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".thiserror."1.0.31" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "tokio" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "thiserror" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".thiserror."1.0.38" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "tokio" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "tonic" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tonic."0.6.2" { inherit profileName; }).out; }; buildDependencies = { @@ -3296,8 +3410,8 @@ in src = fetchCratesIo { inherit name version; sha256 = "9328977e479cebe12ce0d3fcecdaea4721d234895a9440c5b5dfd113f0594ac6"; }; dependencies = { ${ if rootFeatures' ? "garage/default" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/opentelemetry-prometheus" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/opentelemetry-prometheus" then "opentelemetry" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".opentelemetry."0.17.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/default" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/opentelemetry-prometheus" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/opentelemetry-prometheus" then "prometheus" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".prometheus."0.13.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/default" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/opentelemetry-prometheus" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/opentelemetry-prometheus" then "protobuf" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".protobuf."2.27.1" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/default" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/opentelemetry-prometheus" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/opentelemetry-prometheus" then "prometheus" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".prometheus."0.13.3" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/default" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/opentelemetry-prometheus" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/opentelemetry-prometheus" then "protobuf" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".protobuf."2.28.0" { inherit profileName; }).out; }; }); @@ -3311,27 +3425,34 @@ in (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/k8s-openapi" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "std") ]; dependencies = { - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/k8s-openapi" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "num_traits" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-traits."0.2.14" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/k8s-openapi" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "num_traits" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-traits."0.2.15" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".os_str_bytes."6.0.1" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".os_str_bytes."6.4.1" = overridableMkRustCrate (profileName: rec { name = "os_str_bytes"; - version = "6.0.1"; + version = "6.4.1"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "029d8d0b2f198229de29dca79676f2738ff952edf3fde542eb8bf94d8c21b435"; }; + src = fetchCratesIo { inherit name version; sha256 = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee"; }; features = builtins.concatLists [ (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "raw_os_str") ]; }); + "registry+https://github.com/rust-lang/crates.io-index".overload."0.1.1" = overridableMkRustCrate (profileName: rec { + name = "overload"; + version = "0.1.1"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"; }; + }); + "registry+https://github.com/rust-lang/crates.io-index".page_size."0.4.2" = overridableMkRustCrate (profileName: rec { name = "page_size"; version = "0.4.2"; registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "eebde548fbbf1ea81a99b128872779c437752fb99f217c45245e1a61dcd9edcd"; }; dependencies = { - ${ if (rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb") && hostPlatform.isUnix then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb") && hostPlatform.isUnix then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; ${ if (rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb") && hostPlatform.isWindows then "winapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" { inherit profileName; }).out; }; }); @@ -3346,51 +3467,51 @@ in ]; dependencies = { instant = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".instant."0.1.12" { inherit profileName; }).out; - lock_api = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".lock_api."0.4.6" { inherit profileName; }).out; - parking_lot_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".parking_lot_core."0.8.5" { inherit profileName; }).out; + lock_api = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".lock_api."0.4.9" { inherit profileName; }).out; + parking_lot_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".parking_lot_core."0.8.6" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".parking_lot."0.12.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".parking_lot."0.12.1" = overridableMkRustCrate (profileName: rec { name = "parking_lot"; - version = "0.12.0"; + version = "0.12.1"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "87f5ec2493a61ac0506c0f4199f99070cbe83857b0337006a30f3e6719b8ef58"; }; + src = fetchCratesIo { inherit name version; sha256 = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"; }; features = builtins.concatLists [ - (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "default") + (lib.optional (rootFeatures' ? "garage/default" || rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/opentelemetry-prometheus" || rootFeatures' ? "garage/prometheus" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/opentelemetry-prometheus" || rootFeatures' ? "garage_api/prometheus" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "default") ]; dependencies = { - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "lock_api" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".lock_api."0.4.6" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "parking_lot_core" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".parking_lot_core."0.9.1" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/default" || rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/opentelemetry-prometheus" || rootFeatures' ? "garage/prometheus" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/opentelemetry-prometheus" || rootFeatures' ? "garage_api/prometheus" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "lock_api" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".lock_api."0.4.9" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/default" || rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/opentelemetry-prometheus" || rootFeatures' ? "garage/prometheus" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/opentelemetry-prometheus" || rootFeatures' ? "garage_api/prometheus" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "parking_lot_core" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".parking_lot_core."0.9.6" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".parking_lot_core."0.8.5" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".parking_lot_core."0.8.6" = overridableMkRustCrate (profileName: rec { name = "parking_lot_core"; - version = "0.8.5"; + version = "0.8.6"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216"; }; + src = fetchCratesIo { inherit name version; sha256 = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc"; }; dependencies = { cfg_if = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cfg-if."1.0.0" { inherit profileName; }).out; instant = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".instant."0.1.12" { inherit profileName; }).out; - ${ if hostPlatform.isUnix then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; - ${ if hostPlatform.parsed.kernel.name == "redox" then "syscall" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".redox_syscall."0.2.11" { inherit profileName; }).out; - smallvec = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".smallvec."1.8.0" { inherit profileName; }).out; + ${ if hostPlatform.isUnix then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; + ${ if hostPlatform.parsed.kernel.name == "redox" then "syscall" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".redox_syscall."0.2.16" { inherit profileName; }).out; + smallvec = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".smallvec."1.10.0" { inherit profileName; }).out; ${ if hostPlatform.isWindows then "winapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".parking_lot_core."0.9.1" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".parking_lot_core."0.9.6" = overridableMkRustCrate (profileName: rec { name = "parking_lot_core"; - version = "0.9.1"; + version = "0.9.6"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "28141e0cc4143da2443301914478dc976a61ffdb3f043058310c70df2fed8954"; }; + src = fetchCratesIo { inherit name version; sha256 = "ba1ef8814b5c993410bb3adfad7a5ed269563e4a2f90c41f5d85be7fb47133bf"; }; dependencies = { - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "cfg_if" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cfg-if."1.0.0" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") && hostPlatform.isUnix then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") && hostPlatform.parsed.kernel.name == "redox" then "syscall" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".redox_syscall."0.2.11" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "smallvec" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".smallvec."1.8.0" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") && hostPlatform.isWindows then "windows_sys" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".windows-sys."0.32.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/default" || rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/opentelemetry-prometheus" || rootFeatures' ? "garage/prometheus" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/opentelemetry-prometheus" || rootFeatures' ? "garage_api/prometheus" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "cfg_if" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cfg-if."1.0.0" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage/default" || rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/opentelemetry-prometheus" || rootFeatures' ? "garage/prometheus" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/opentelemetry-prometheus" || rootFeatures' ? "garage_api/prometheus" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") && hostPlatform.isUnix then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage/default" || rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/opentelemetry-prometheus" || rootFeatures' ? "garage/prometheus" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/opentelemetry-prometheus" || rootFeatures' ? "garage_api/prometheus" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") && hostPlatform.parsed.kernel.name == "redox" then "syscall" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".redox_syscall."0.2.16" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/default" || rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/opentelemetry-prometheus" || rootFeatures' ? "garage/prometheus" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/opentelemetry-prometheus" || rootFeatures' ? "garage_api/prometheus" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "smallvec" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".smallvec."1.10.0" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage/default" || rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/opentelemetry-prometheus" || rootFeatures' ? "garage/prometheus" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/opentelemetry-prometheus" || rootFeatures' ? "garage_api/prometheus" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") && hostPlatform.isWindows then "windows_sys" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".windows-sys."0.42.0" { inherit profileName; }).out; }; }); @@ -3402,77 +3523,73 @@ in dependencies = { lazy_static = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".lazy_static."1.4.0" { inherit profileName; }).out; num = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num."0.2.1" { inherit profileName; }).out; - regex = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".regex."1.5.5" { inherit profileName; }).out; + regex = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".regex."1.7.1" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".pem."1.1.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".paste."1.0.11" = overridableMkRustCrate (profileName: rec { + name = "paste"; + version = "1.0.11"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "d01a5bd0424d00070b0098dd17ebca6f961a959dead1dbcbbbc1d1cd8d3deeba"; }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".pem."1.1.1" = overridableMkRustCrate (profileName: rec { name = "pem"; - version = "1.1.0"; + version = "1.1.1"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "03c64931a1a212348ec4f3b4362585eca7159d0d09cbdf4a7f74f02173596fd4"; }; + src = fetchCratesIo { inherit name version; sha256 = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8"; }; dependencies = { - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "base64" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".base64."0.13.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "base64" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".base64."0.13.1" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".percent-encoding."2.1.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".percent-encoding."2.2.0" = overridableMkRustCrate (profileName: rec { name = "percent-encoding"; - version = "2.1.0"; + version = "2.2.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"; }; + src = fetchCratesIo { inherit name version; sha256 = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"; }; + features = builtins.concatLists [ + [ "alloc" ] + [ "default" ] + ]; }); - "registry+https://github.com/rust-lang/crates.io-index".petgraph."0.6.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".petgraph."0.6.2" = overridableMkRustCrate (profileName: rec { name = "petgraph"; - version = "0.6.0"; + version = "0.6.2"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "4a13a2fa9d0b63e5f22328828741e523766fff0ee9e779316902290dff3f824f"; }; + src = fetchCratesIo { inherit name version; sha256 = "e6d5014253a1331579ce62aa67443b4a658c5e7dd03d4bc6d302b94474888143"; }; dependencies = { - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "fixedbitset" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".fixedbitset."0.4.1" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "indexmap" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".indexmap."1.8.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "fixedbitset" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".fixedbitset."0.4.2" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "indexmap" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".indexmap."1.9.2" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".phf."0.7.24" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".phf."0.10.1" = overridableMkRustCrate (profileName: rec { name = "phf"; - version = "0.7.24"; - registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "b3da44b85f8e8dfaec21adae67f95d93244b2ecf6ad2a692320598dcc8e6dd18"; }; - dependencies = { - phf_shared = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".phf_shared."0.7.24" { inherit profileName; }).out; - }; - }); - - "registry+https://github.com/rust-lang/crates.io-index".phf_codegen."0.7.24" = overridableMkRustCrate (profileName: rec { - name = "phf_codegen"; - version = "0.7.24"; - registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "b03e85129e324ad4166b06b2c7491ae27fe3ec353af72e72cd1654c7225d517e"; }; - dependencies = { - phf_generator = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".phf_generator."0.7.24" { inherit profileName; }).out; - phf_shared = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".phf_shared."0.7.24" { inherit profileName; }).out; - }; - }); - - "registry+https://github.com/rust-lang/crates.io-index".phf_generator."0.7.24" = overridableMkRustCrate (profileName: rec { - name = "phf_generator"; - version = "0.7.24"; + version = "0.10.1"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "09364cc93c159b8b06b1f4dd8a4398984503483891b0c26b867cf431fb132662"; }; + src = fetchCratesIo { inherit name version; sha256 = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259"; }; + features = builtins.concatLists [ + [ "default" ] + [ "std" ] + ]; dependencies = { - phf_shared = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".phf_shared."0.7.24" { inherit profileName; }).out; - rand = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand."0.6.5" { inherit profileName; }).out; + phf_shared = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".phf_shared."0.10.0" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".phf_shared."0.7.24" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".phf_shared."0.10.0" = overridableMkRustCrate (profileName: rec { name = "phf_shared"; - version = "0.7.24"; + version = "0.10.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "234f71a15de2288bcb7e3b6515828d22af7ec8598ee6d24c3b526fa0a80b67a0"; }; + src = fetchCratesIo { inherit name version; sha256 = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096"; }; + features = builtins.concatLists [ + [ "std" ] + ]; dependencies = { - siphasher = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".siphasher."0.2.3" { inherit profileName; }).out; + siphasher = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".siphasher."0.3.10" { inherit profileName; }).out; }; }); @@ -3492,9 +3609,9 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55"; }; dependencies = { - proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.46" { inherit profileName; }).out; - quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; }).out; - syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.94" { inherit profileName; }).out; + proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; + quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; + syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.107" { inherit profileName; }).out; }; }); @@ -3512,11 +3629,11 @@ in src = fetchCratesIo { inherit name version; sha256 = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".pkg-config."0.3.24" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".pkg-config."0.3.26" = overridableMkRustCrate (profileName: rec { name = "pkg-config"; - version = "0.3.24"; + version = "0.3.26"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe"; }; + src = fetchCratesIo { inherit name version; sha256 = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"; }; }); "registry+https://github.com/rust-lang/crates.io-index".pnet_base."0.28.0" = overridableMkRustCrate (profileName: rec { @@ -3533,7 +3650,7 @@ in src = fetchCratesIo { inherit name version; sha256 = "d4d1f8ab1ef6c914cf51dc5dfe0be64088ea5f3b08bbf5a31abc70356d271198"; }; dependencies = { ipnetwork = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".ipnetwork."0.18.0" { inherit profileName; }).out; - libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; + libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; pnet_base = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pnet_base."0.28.0" { inherit profileName; }).out; pnet_sys = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pnet_sys."0.28.0" { inherit profileName; }).out; ${ if hostPlatform.isWindows then "winapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" { inherit profileName; }).out; @@ -3546,16 +3663,16 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "d9a3f32b0df45515befd19eed04616f6b56a488da92afc61164ef455e955f07f"; }; dependencies = { - libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; + libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; ${ if hostPlatform.isWindows then "winapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".ppv-lite86."0.2.16" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".ppv-lite86."0.2.17" = overridableMkRustCrate (profileName: rec { name = "ppv-lite86"; - version = "0.2.16"; + version = "0.2.17"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"; }; + src = fetchCratesIo { inherit name version; sha256 = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"; }; features = builtins.concatLists [ [ "simd" ] [ "std" ] @@ -3569,7 +3686,7 @@ in src = fetchCratesIo { inherit name version; sha256 = "926d36b9553851b8b0005f1275891b392ee4d2d833852c417ed025477350fb9d"; }; dependencies = { ${ if rootFeatures' ? "garage_db/cli" || rootFeatures' ? "garage_db/pretty_env_logger" then "env_logger" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".env_logger."0.7.1" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage_db/cli" || rootFeatures' ? "garage_db/pretty_env_logger" then "log" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.16" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage_db/cli" || rootFeatures' ? "garage_db/pretty_env_logger" then "log" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.17" { inherit profileName; }).out; }; }); @@ -3585,9 +3702,9 @@ in ]; dependencies = { proc_macro_error_attr = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro-error-attr."1.0.4" { profileName = "__noProfile"; }).out; - proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.46" { inherit profileName; }).out; - quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; }).out; - syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.94" { inherit profileName; }).out; + proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; + quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; + syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.107" { inherit profileName; }).out; }; buildDependencies = { version_check = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".version_check."0.9.4" { profileName = "__noProfile"; }).out; @@ -3600,40 +3717,41 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"; }; dependencies = { - proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.46" { inherit profileName; }).out; - quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; }).out; + proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; + quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; }; buildDependencies = { version_check = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".version_check."0.9.4" { profileName = "__noProfile"; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".proc-macro-hack."0.5.19" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".proc-macro-hack."0.5.20+deprecated" = overridableMkRustCrate (profileName: rec { name = "proc-macro-hack"; - version = "0.5.19"; + version = "0.5.20+deprecated"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"; }; + src = fetchCratesIo { inherit name version; sha256 = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.46" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" = overridableMkRustCrate (profileName: rec { name = "proc-macro2"; - version = "1.0.46"; + version = "1.0.50"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "94e2ef8dbfc347b10c094890f778ee2e36ca9bb4262e86dc99cd217e35f3470b"; }; + src = fetchCratesIo { inherit name version; sha256 = "6ef7d57beacfaf2d8aee5937dab7b7f28de3cb8b1828479bb5de2a7106f2bae2"; }; features = builtins.concatLists [ [ "default" ] [ "proc-macro" ] + [ "span-locations" ] ]; dependencies = { - unicode_ident = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".unicode-ident."1.0.5" { inherit profileName; }).out; + unicode_ident = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".unicode-ident."1.0.6" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".prometheus."0.13.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".prometheus."0.13.3" = overridableMkRustCrate (profileName: rec { name = "prometheus"; - version = "0.13.0"; + version = "0.13.3"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "b7f64969ffd5dd8f39bd57a68ac53c163a095ed9d0fb707146da1b27025a3504"; }; + src = fetchCratesIo { inherit name version; sha256 = "449811d15fbdf5ceb5c1144416066429cf82316e2ec8ce0c1f6f8a02e7bbcf8c"; }; features = builtins.concatLists [ (lib.optional (rootFeatures' ? "garage/default" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/opentelemetry-prometheus" || rootFeatures' ? "garage/prometheus" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/opentelemetry-prometheus" || rootFeatures' ? "garage_api/prometheus") "default") (lib.optional (rootFeatures' ? "garage/default" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/opentelemetry-prometheus" || rootFeatures' ? "garage/prometheus" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/opentelemetry-prometheus" || rootFeatures' ? "garage_api/prometheus") "protobuf") @@ -3642,10 +3760,10 @@ in ${ if rootFeatures' ? "garage/default" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/opentelemetry-prometheus" || rootFeatures' ? "garage/prometheus" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/opentelemetry-prometheus" || rootFeatures' ? "garage_api/prometheus" then "cfg_if" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cfg-if."1.0.0" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/default" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/opentelemetry-prometheus" || rootFeatures' ? "garage/prometheus" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/opentelemetry-prometheus" || rootFeatures' ? "garage_api/prometheus" then "fnv" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".fnv."1.0.7" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/default" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/opentelemetry-prometheus" || rootFeatures' ? "garage/prometheus" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/opentelemetry-prometheus" || rootFeatures' ? "garage_api/prometheus" then "lazy_static" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".lazy_static."1.4.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/default" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/opentelemetry-prometheus" || rootFeatures' ? "garage/prometheus" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/opentelemetry-prometheus" || rootFeatures' ? "garage_api/prometheus" then "memchr" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".memchr."2.4.1" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/default" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/opentelemetry-prometheus" || rootFeatures' ? "garage/prometheus" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/opentelemetry-prometheus" || rootFeatures' ? "garage_api/prometheus" then "parking_lot" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".parking_lot."0.11.2" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/default" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/opentelemetry-prometheus" || rootFeatures' ? "garage/prometheus" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/opentelemetry-prometheus" || rootFeatures' ? "garage_api/prometheus" then "protobuf" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".protobuf."2.27.1" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/default" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/opentelemetry-prometheus" || rootFeatures' ? "garage/prometheus" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/opentelemetry-prometheus" || rootFeatures' ? "garage_api/prometheus" then "thiserror" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".thiserror."1.0.31" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/default" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/opentelemetry-prometheus" || rootFeatures' ? "garage/prometheus" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/opentelemetry-prometheus" || rootFeatures' ? "garage_api/prometheus" then "memchr" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".memchr."2.5.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/default" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/opentelemetry-prometheus" || rootFeatures' ? "garage/prometheus" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/opentelemetry-prometheus" || rootFeatures' ? "garage_api/prometheus" then "parking_lot" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".parking_lot."0.12.1" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/default" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/opentelemetry-prometheus" || rootFeatures' ? "garage/prometheus" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/opentelemetry-prometheus" || rootFeatures' ? "garage_api/prometheus" then "protobuf" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".protobuf."2.28.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/default" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/opentelemetry-prometheus" || rootFeatures' ? "garage/prometheus" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/opentelemetry-prometheus" || rootFeatures' ? "garage_api/prometheus" then "thiserror" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".thiserror."1.0.38" { inherit profileName; }).out; }; }); @@ -3660,7 +3778,7 @@ in (lib.optional (rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp") "std") ]; dependencies = { - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "bytes" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "bytes" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "prost_derive" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".prost-derive."0.9.0" { profileName = "__noProfile"; }).out; }; }); @@ -3671,20 +3789,20 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5"; }; dependencies = { - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "bytes" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "bytes" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "heck" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".heck."0.3.3" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "itertools" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".itertools."0.10.3" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "itertools" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".itertools."0.10.5" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "lazy_static" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".lazy_static."1.4.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "log" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.16" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "log" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.17" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "multimap" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".multimap."0.8.3" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "petgraph" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".petgraph."0.6.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "petgraph" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".petgraph."0.6.2" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "prost" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".prost."0.9.0" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "prost_types" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".prost-types."0.9.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "regex" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".regex."1.5.5" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "regex" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".regex."1.7.1" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "tempfile" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tempfile."3.3.0" { inherit profileName; }).out; }; buildDependencies = { - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "which" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".which."4.2.5" { profileName = "__noProfile"; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "which" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".which."4.4.0" { profileName = "__noProfile"; }).out; }; }); @@ -3694,11 +3812,11 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe"; }; dependencies = { - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "anyhow" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".anyhow."1.0.56" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "itertools" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".itertools."0.10.3" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "proc_macro2" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.46" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "quote" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "syn" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.94" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "anyhow" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".anyhow."1.0.68" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "itertools" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".itertools."0.10.5" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "proc_macro2" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "quote" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "syn" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.107" { inherit profileName; }).out; }; }); @@ -3708,16 +3826,16 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a"; }; dependencies = { - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "bytes" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "bytes" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "prost" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".prost."0.9.0" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".protobuf."2.27.1" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".protobuf."2.28.0" = overridableMkRustCrate (profileName: rec { name = "protobuf"; - version = "2.27.1"; + version = "2.28.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "cf7e6d18738ecd0902d30d1ad232c9125985a3422929b16c65517b38adc14f96"; }; + src = fetchCratesIo { inherit name version; sha256 = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94"; }; }); "registry+https://github.com/rust-lang/crates.io-index".quick-error."1.2.3" = overridableMkRustCrate (profileName: rec { @@ -3738,50 +3856,22 @@ in [ "serialize" ] ]; dependencies = { - memchr = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".memchr."2.4.1" { inherit profileName; }).out; - serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; + memchr = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".memchr."2.5.0" { inherit profileName; }).out; + serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" = overridableMkRustCrate (profileName: rec { name = "quote"; - version = "1.0.21"; + version = "1.0.23"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"; }; + src = fetchCratesIo { inherit name version; sha256 = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b"; }; features = builtins.concatLists [ [ "default" ] [ "proc-macro" ] ]; dependencies = { - proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.46" { inherit profileName; }).out; - }; - }); - - "registry+https://github.com/rust-lang/crates.io-index".rand."0.6.5" = overridableMkRustCrate (profileName: rec { - name = "rand"; - version = "0.6.5"; - registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca"; }; - features = builtins.concatLists [ - [ "alloc" ] - [ "default" ] - [ "rand_os" ] - [ "std" ] - ]; - dependencies = { - ${ if hostPlatform.isUnix then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; - rand_chacha = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand_chacha."0.1.1" { inherit profileName; }).out; - rand_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand_core."0.4.2" { inherit profileName; }).out; - rand_hc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand_hc."0.1.0" { inherit profileName; }).out; - rand_isaac = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand_isaac."0.1.1" { inherit profileName; }).out; - rand_jitter = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand_jitter."0.1.4" { inherit profileName; }).out; - rand_os = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand_os."0.1.3" { inherit profileName; }).out; - rand_pcg = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand_pcg."0.1.2" { inherit profileName; }).out; - rand_xorshift = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand_xorshift."0.1.1" { inherit profileName; }).out; - ${ if hostPlatform.isWindows then "winapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" { inherit profileName; }).out; - }; - buildDependencies = { - autocfg = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".autocfg."0.1.8" { profileName = "__noProfile"; }).out; + proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; }; }); @@ -3801,22 +3891,9 @@ in [ "std_rng" ] ]; dependencies = { - ${ if hostPlatform.isUnix then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; + ${ if hostPlatform.isUnix then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; rand_chacha = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand_chacha."0.3.1" { inherit profileName; }).out; - rand_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand_core."0.6.3" { inherit profileName; }).out; - }; - }); - - "registry+https://github.com/rust-lang/crates.io-index".rand_chacha."0.1.1" = overridableMkRustCrate (profileName: rec { - name = "rand_chacha"; - version = "0.1.1"; - registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef"; }; - dependencies = { - rand_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand_core."0.3.1" { inherit profileName; }).out; - }; - buildDependencies = { - autocfg = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".autocfg."0.1.8" { profileName = "__noProfile"; }).out; + rand_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand_core."0.6.4" { inherit profileName; }).out; }; }); @@ -3829,161 +3906,53 @@ in [ "std" ] ]; dependencies = { - ppv_lite86 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".ppv-lite86."0.2.16" { inherit profileName; }).out; - rand_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand_core."0.6.3" { inherit profileName; }).out; + ppv_lite86 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".ppv-lite86."0.2.17" { inherit profileName; }).out; + rand_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand_core."0.6.4" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".rand_core."0.3.1" = overridableMkRustCrate (profileName: rec { - name = "rand_core"; - version = "0.3.1"; - registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"; }; - dependencies = { - rand_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand_core."0.4.2" { inherit profileName; }).out; - }; - }); - - "registry+https://github.com/rust-lang/crates.io-index".rand_core."0.4.2" = overridableMkRustCrate (profileName: rec { - name = "rand_core"; - version = "0.4.2"; - registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc"; }; - features = builtins.concatLists [ - [ "alloc" ] - [ "std" ] - ]; - }); - - "registry+https://github.com/rust-lang/crates.io-index".rand_core."0.6.3" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".rand_core."0.6.4" = overridableMkRustCrate (profileName: rec { name = "rand_core"; - version = "0.6.3"; + version = "0.6.4"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"; }; + src = fetchCratesIo { inherit name version; sha256 = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"; }; features = builtins.concatLists [ [ "alloc" ] [ "getrandom" ] [ "std" ] ]; dependencies = { - getrandom = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".getrandom."0.2.5" { inherit profileName; }).out; - }; - }); - - "registry+https://github.com/rust-lang/crates.io-index".rand_hc."0.1.0" = overridableMkRustCrate (profileName: rec { - name = "rand_hc"; - version = "0.1.0"; - registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4"; }; - dependencies = { - rand_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand_core."0.3.1" { inherit profileName; }).out; - }; - }); - - "registry+https://github.com/rust-lang/crates.io-index".rand_isaac."0.1.1" = overridableMkRustCrate (profileName: rec { - name = "rand_isaac"; - version = "0.1.1"; - registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08"; }; - dependencies = { - rand_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand_core."0.3.1" { inherit profileName; }).out; - }; - }); - - "registry+https://github.com/rust-lang/crates.io-index".rand_jitter."0.1.4" = overridableMkRustCrate (profileName: rec { - name = "rand_jitter"; - version = "0.1.4"; - registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b"; }; - features = builtins.concatLists [ - [ "std" ] - ]; - dependencies = { - ${ if hostPlatform.parsed.kernel.name == "darwin" || hostPlatform.parsed.kernel.name == "ios" then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; - rand_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand_core."0.4.2" { inherit profileName; }).out; - ${ if hostPlatform.parsed.kernel.name == "windows" then "winapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" { inherit profileName; }).out; - }; - }); - - "registry+https://github.com/rust-lang/crates.io-index".rand_os."0.1.3" = overridableMkRustCrate (profileName: rec { - name = "rand_os"; - version = "0.1.3"; - registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071"; }; - dependencies = { - ${ if hostPlatform.parsed.kernel.name == "cloudabi" then "cloudabi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cloudabi."0.0.3" { inherit profileName; }).out; - ${ if hostPlatform.parsed.kernel.name == "fuchsia" then "fuchsia_cprng" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".fuchsia-cprng."0.1.1" { inherit profileName; }).out; - ${ if hostPlatform.isUnix then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; - rand_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand_core."0.4.2" { inherit profileName; }).out; - ${ if target == "x86_64-fortanix-unknown-sgx" then "rdrand" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rdrand."0.4.0" { inherit profileName; }).out; - ${ if hostPlatform.isWindows then "winapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" { inherit profileName; }).out; - }; - }); - - "registry+https://github.com/rust-lang/crates.io-index".rand_pcg."0.1.2" = overridableMkRustCrate (profileName: rec { - name = "rand_pcg"; - version = "0.1.2"; - registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44"; }; - dependencies = { - rand_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand_core."0.4.2" { inherit profileName; }).out; - }; - buildDependencies = { - autocfg = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".autocfg."0.1.8" { profileName = "__noProfile"; }).out; - }; - }); - - "registry+https://github.com/rust-lang/crates.io-index".rand_xorshift."0.1.1" = overridableMkRustCrate (profileName: rec { - name = "rand_xorshift"; - version = "0.1.1"; - registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c"; }; - dependencies = { - rand_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand_core."0.3.1" { inherit profileName; }).out; - }; - }); - - "registry+https://github.com/rust-lang/crates.io-index".rdrand."0.4.0" = overridableMkRustCrate (profileName: rec { - name = "rdrand"; - version = "0.4.0"; - registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"; }; - features = builtins.concatLists [ - [ "default" ] - [ "std" ] - ]; - dependencies = { - rand_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand_core."0.3.1" { inherit profileName; }).out; + getrandom = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".getrandom."0.2.8" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".redox_syscall."0.2.11" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".redox_syscall."0.2.16" = overridableMkRustCrate (profileName: rec { name = "redox_syscall"; - version = "0.2.11"; + version = "0.2.16"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "8380fe0152551244f0747b1bf41737e0f8a74f97a14ccefd1148187271634f3c"; }; + src = fetchCratesIo { inherit name version; sha256 = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"; }; dependencies = { bitflags = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bitflags."1.3.2" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".redox_users."0.4.2" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".redox_users."0.4.3" = overridableMkRustCrate (profileName: rec { name = "redox_users"; - version = "0.4.2"; + version = "0.4.3"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "7776223e2696f1aa4c6b0170e83212f47296a00424305117d013dfe86fb0fe55"; }; + src = fetchCratesIo { inherit name version; sha256 = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"; }; dependencies = { - getrandom = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".getrandom."0.2.5" { inherit profileName; }).out; - syscall = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".redox_syscall."0.2.11" { inherit profileName; }).out; - thiserror = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".thiserror."1.0.31" { inherit profileName; }).out; + getrandom = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".getrandom."0.2.8" { inherit profileName; }).out; + syscall = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".redox_syscall."0.2.16" { inherit profileName; }).out; + thiserror = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".thiserror."1.0.38" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".regex."1.5.5" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".regex."1.7.1" = overridableMkRustCrate (profileName: rec { name = "regex"; - version = "1.5.5"; + version = "1.7.1"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286"; }; + src = fetchCratesIo { inherit name version; sha256 = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733"; }; features = builtins.concatLists [ [ "aho-corasick" ] [ "default" ] @@ -4004,9 +3973,9 @@ in [ "unicode-segment" ] ]; dependencies = { - aho_corasick = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".aho-corasick."0.7.18" { inherit profileName; }).out; - memchr = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".memchr."2.4.1" { inherit profileName; }).out; - regex_syntax = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".regex-syntax."0.6.25" { inherit profileName; }).out; + aho_corasick = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".aho-corasick."0.7.20" { inherit profileName; }).out; + memchr = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".memchr."2.5.0" { inherit profileName; }).out; + regex_syntax = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".regex-syntax."0.6.28" { inherit profileName; }).out; }; }); @@ -4021,15 +3990,15 @@ in [ "std" ] ]; dependencies = { - regex_syntax = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".regex-syntax."0.6.25" { inherit profileName; }).out; + regex_syntax = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".regex-syntax."0.6.28" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".regex-syntax."0.6.25" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".regex-syntax."0.6.28" = overridableMkRustCrate (profileName: rec { name = "regex-syntax"; - version = "0.6.25"; + version = "0.6.28"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b"; }; + src = fetchCratesIo { inherit name version; sha256 = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848"; }; features = builtins.concatLists [ [ "default" ] [ "unicode" ] @@ -4053,11 +4022,11 @@ in }; }); - "registry+https://github.com/rust-lang/crates.io-index".reqwest."0.11.12" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".reqwest."0.11.14" = overridableMkRustCrate (profileName: rec { name = "reqwest"; - version = "0.11.12"; + version = "0.11.14"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "431949c384f4e2ae07605ccaa56d1d9d2ecdb5cadd4f9577ccfab29f2e5149fc"; }; + src = fetchCratesIo { inherit name version; sha256 = "21eed90ec8570952d53b772ecf8f206aa1ec9a3d76b2521c56c42973f2d91ee9"; }; features = builtins.concatLists [ (lib.optional (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") "__rustls") (lib.optional (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") "__tls") @@ -4070,35 +4039,35 @@ in (lib.optional (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") "tokio-rustls") ]; dependencies = { - ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "base64" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".base64."0.13.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "bytes" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && !(hostPlatform.parsed.cpu.name == "wasm32") then "encoding_rs" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".encoding_rs."0.8.30" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && !(hostPlatform.parsed.cpu.name == "wasm32") then "futures_core" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.21" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && !(hostPlatform.parsed.cpu.name == "wasm32") then "futures_util" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.21" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && !(hostPlatform.parsed.cpu.name == "wasm32") then "h2" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".h2."0.3.12" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "base64" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".base64."0.21.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "bytes" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && !(hostPlatform.parsed.cpu.name == "wasm32") then "encoding_rs" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".encoding_rs."0.8.31" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "futures_core" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.25" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "futures_util" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.25" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && !(hostPlatform.parsed.cpu.name == "wasm32") then "h2" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".h2."0.3.15" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "http" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && !(hostPlatform.parsed.cpu.name == "wasm32") then "http_body" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http-body."0.4.5" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && !(hostPlatform.parsed.cpu.name == "wasm32") then "hyper" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.18" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && !(hostPlatform.parsed.cpu.name == "wasm32") then "hyper_rustls" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper-rustls."0.23.0" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && !(hostPlatform.parsed.cpu.name == "wasm32") then "ipnet" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".ipnet."2.5.0" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && hostPlatform.parsed.cpu.name == "wasm32" then "js_sys" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".js-sys."0.3.56" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && !(hostPlatform.parsed.cpu.name == "wasm32") then "log" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.16" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && !(hostPlatform.parsed.cpu.name == "wasm32") then "hyper" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.23" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && !(hostPlatform.parsed.cpu.name == "wasm32") then "hyper_rustls" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper-rustls."0.23.2" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && !(hostPlatform.parsed.cpu.name == "wasm32") then "ipnet" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".ipnet."2.7.1" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && hostPlatform.parsed.cpu.name == "wasm32" then "js_sys" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".js-sys."0.3.60" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && !(hostPlatform.parsed.cpu.name == "wasm32") then "log" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.17" { inherit profileName; }).out; ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && !(hostPlatform.parsed.cpu.name == "wasm32") then "mime" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".mime."0.3.16" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && !(hostPlatform.parsed.cpu.name == "wasm32") then "once_cell" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".once_cell."1.10.0" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && !(hostPlatform.parsed.cpu.name == "wasm32") then "percent_encoding" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".percent-encoding."2.1.0" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && !(hostPlatform.parsed.cpu.name == "wasm32") then "once_cell" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".once_cell."1.17.0" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && !(hostPlatform.parsed.cpu.name == "wasm32") then "percent_encoding" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".percent-encoding."2.2.0" { inherit profileName; }).out; ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && !(hostPlatform.parsed.cpu.name == "wasm32") then "pin_project_lite" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project-lite."0.2.9" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && !(hostPlatform.parsed.cpu.name == "wasm32") then "rustls" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rustls."0.20.6" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && !(hostPlatform.parsed.cpu.name == "wasm32") then "rustls_pemfile" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rustls-pemfile."1.0.1" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "serde" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "serde_json" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.81" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && !(hostPlatform.parsed.cpu.name == "wasm32") then "rustls" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rustls."0.20.8" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && !(hostPlatform.parsed.cpu.name == "wasm32") then "rustls_pemfile" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rustls-pemfile."1.0.2" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "serde" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "serde_json" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.91" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "serde_urlencoded" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_urlencoded."0.7.1" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && !(hostPlatform.parsed.cpu.name == "wasm32") then "tokio" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && !(hostPlatform.parsed.cpu.name == "wasm32") then "tokio" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && !(hostPlatform.parsed.cpu.name == "wasm32") then "tokio_rustls" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-rustls."0.23.4" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "tower_service" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tower-service."0.3.1" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "url" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".url."2.2.2" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && hostPlatform.parsed.cpu.name == "wasm32" then "wasm_bindgen" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen."0.2.79" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && hostPlatform.parsed.cpu.name == "wasm32" then "wasm_bindgen_futures" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen-futures."0.4.29" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && hostPlatform.parsed.cpu.name == "wasm32" then "web_sys" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".web-sys."0.3.56" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "tower_service" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tower-service."0.3.2" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "url" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".url."2.3.1" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && hostPlatform.parsed.cpu.name == "wasm32" then "wasm_bindgen" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen."0.2.83" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && hostPlatform.parsed.cpu.name == "wasm32" then "wasm_bindgen_futures" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen-futures."0.4.33" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && hostPlatform.parsed.cpu.name == "wasm32" then "web_sys" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".web-sys."0.3.60" { inherit profileName; }).out; ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && hostPlatform.isWindows then "winreg" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winreg."0.10.1" { inherit profileName; }).out; }; }); @@ -4115,26 +4084,31 @@ in [ "once_cell" ] ]; dependencies = { - ${ if hostPlatform.parsed.kernel.name == "android" || hostPlatform.parsed.kernel.name == "linux" then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; - ${ if hostPlatform.parsed.kernel.name == "android" || hostPlatform.parsed.kernel.name == "linux" || hostPlatform.parsed.kernel.name == "dragonfly" || hostPlatform.parsed.kernel.name == "freebsd" || hostPlatform.parsed.kernel.name == "illumos" || hostPlatform.parsed.kernel.name == "netbsd" || hostPlatform.parsed.kernel.name == "openbsd" || hostPlatform.parsed.kernel.name == "solaris" then "once_cell" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".once_cell."1.10.0" { inherit profileName; }).out; + ${ if hostPlatform.parsed.kernel.name == "android" || hostPlatform.parsed.kernel.name == "linux" then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; + ${ if hostPlatform.parsed.kernel.name == "android" || hostPlatform.parsed.kernel.name == "linux" || hostPlatform.parsed.kernel.name == "dragonfly" || hostPlatform.parsed.kernel.name == "freebsd" || hostPlatform.parsed.kernel.name == "illumos" || hostPlatform.parsed.kernel.name == "netbsd" || hostPlatform.parsed.kernel.name == "openbsd" || hostPlatform.parsed.kernel.name == "solaris" then "once_cell" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".once_cell."1.17.0" { inherit profileName; }).out; ${ if hostPlatform.parsed.cpu.name == "i686" || hostPlatform.parsed.cpu.name == "x86_64" || (hostPlatform.parsed.cpu.name == "aarch64" || hostPlatform.parsed.cpu.name == "armv6l" || hostPlatform.parsed.cpu.name == "armv7l") && (hostPlatform.parsed.kernel.name == "android" || hostPlatform.parsed.kernel.name == "fuchsia" || hostPlatform.parsed.kernel.name == "linux") then "spin" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".spin."0.5.2" { inherit profileName; }).out; untrusted = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".untrusted."0.7.1" { inherit profileName; }).out; - ${ if hostPlatform.parsed.cpu.name == "wasm32" && hostPlatform.parsed.vendor.name == "unknown" && hostPlatform.parsed.kernel.name == "unknown" && hostPlatform.parsed.abi.name == "" then "web_sys" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".web-sys."0.3.56" { inherit profileName; }).out; + ${ if hostPlatform.parsed.cpu.name == "wasm32" && hostPlatform.parsed.vendor.name == "unknown" && hostPlatform.parsed.kernel.name == "unknown" && hostPlatform.parsed.abi.name == "" then "web_sys" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".web-sys."0.3.60" { inherit profileName; }).out; ${ if hostPlatform.parsed.kernel.name == "windows" then "winapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" { inherit profileName; }).out; }; buildDependencies = { - cc = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".cc."1.0.73" { profileName = "__noProfile"; }).out; + cc = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".cc."1.0.78" { profileName = "__noProfile"; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".rmp."0.8.10" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".rmp."0.8.11" = overridableMkRustCrate (profileName: rec { name = "rmp"; - version = "0.8.10"; + version = "0.8.11"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "4f55e5fa1446c4d5dd1f5daeed2a4fe193071771a2636274d0d7a3b082aa7ad6"; }; + src = fetchCratesIo { inherit name version; sha256 = "44519172358fd6d58656c86ab8e7fbc9e1490c3e8f14d35ed78ca0dd07403c9f"; }; + features = builtins.concatLists [ + [ "default" ] + [ "std" ] + ]; dependencies = { byteorder = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".byteorder."1.4.3" { inherit profileName; }).out; - num_traits = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-traits."0.2.14" { inherit profileName; }).out; + num_traits = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num-traits."0.2.15" { inherit profileName; }).out; + paste = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".paste."1.0.11" { profileName = "__noProfile"; }).out; }; }); @@ -4145,8 +4119,8 @@ in src = fetchCratesIo { inherit name version; sha256 = "723ecff9ad04f4ad92fe1c8ca6c20d2196d9286e9c60727c4cb5511629260e9d"; }; dependencies = { byteorder = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".byteorder."1.4.3" { inherit profileName; }).out; - rmp = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rmp."0.8.10" { inherit profileName; }).out; - serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; + rmp = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rmp."0.8.11" { inherit profileName; }).out; + serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; }; }); @@ -4174,21 +4148,21 @@ in [ "rustls" ] ]; dependencies = { - async_trait = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".async-trait."0.1.52" { profileName = "__noProfile"; }).out; - base64 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".base64."0.13.0" { inherit profileName; }).out; - bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; + async_trait = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".async-trait."0.1.63" { profileName = "__noProfile"; }).out; + base64 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".base64."0.13.1" { inherit profileName; }).out; + bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; crc32fast = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".crc32fast."1.3.2" { inherit profileName; }).out; - futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.21" { inherit profileName; }).out; + futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.25" { inherit profileName; }).out; http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; - hyper = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.18" { inherit profileName; }).out; - hyper_rustls = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper-rustls."0.23.0" { inherit profileName; }).out; + hyper = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.23" { inherit profileName; }).out; + hyper_rustls = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper-rustls."0.23.2" { inherit profileName; }).out; lazy_static = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".lazy_static."1.4.0" { inherit profileName; }).out; - log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.16" { inherit profileName; }).out; + log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.17" { inherit profileName; }).out; rusoto_credential = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rusoto_credential."0.48.0" { inherit profileName; }).out; rusoto_signature = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rusoto_signature."0.48.0" { inherit profileName; }).out; - serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; - serde_json = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.81" { inherit profileName; }).out; - tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; + serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; + serde_json = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.91" { inherit profileName; }).out; + tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; xml = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".xml-rs."0.8.4" { inherit profileName; }).out; }; buildDependencies = { @@ -4202,16 +4176,16 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "ee0a6c13db5aad6047b6a44ef023dbbc21a056b6dab5be3b79ce4283d5c02d05"; }; dependencies = { - async_trait = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".async-trait."0.1.52" { profileName = "__noProfile"; }).out; - chrono = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".chrono."0.4.19" { inherit profileName; }).out; + async_trait = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".async-trait."0.1.63" { profileName = "__noProfile"; }).out; + chrono = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".chrono."0.4.23" { inherit profileName; }).out; dirs_next = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".dirs-next."2.0.0" { inherit profileName; }).out; - futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.21" { inherit profileName; }).out; - hyper = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.18" { inherit profileName; }).out; - serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; - serde_json = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.81" { inherit profileName; }).out; + futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.25" { inherit profileName; }).out; + hyper = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.23" { inherit profileName; }).out; + serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; + serde_json = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.91" { inherit profileName; }).out; shlex = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".shlex."1.1.0" { inherit profileName; }).out; - tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; - zeroize = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".zeroize."1.5.4" { inherit profileName; }).out; + tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; + zeroize = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".zeroize."1.5.7" { inherit profileName; }).out; }; }); @@ -4221,34 +4195,34 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "a5ae95491c8b4847931e291b151127eccd6ff8ca13f33603eb3d0035ecb05272"; }; dependencies = { - base64 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".base64."0.13.0" { inherit profileName; }).out; - bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; - chrono = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".chrono."0.4.19" { inherit profileName; }).out; + base64 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".base64."0.13.1" { inherit profileName; }).out; + bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; + chrono = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".chrono."0.4.23" { inherit profileName; }).out; digest = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".digest."0.9.0" { inherit profileName; }).out; - futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.21" { inherit profileName; }).out; + futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.25" { inherit profileName; }).out; hex = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hex."0.4.3" { inherit profileName; }).out; hmac = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hmac."0.11.0" { inherit profileName; }).out; http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; - hyper = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.18" { inherit profileName; }).out; - log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.16" { inherit profileName; }).out; + hyper = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.23" { inherit profileName; }).out; + log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.17" { inherit profileName; }).out; md5 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".md-5."0.9.1" { inherit profileName; }).out; - percent_encoding = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".percent-encoding."2.1.0" { inherit profileName; }).out; + percent_encoding = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".percent-encoding."2.2.0" { inherit profileName; }).out; pin_project_lite = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project-lite."0.2.9" { inherit profileName; }).out; rusoto_credential = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rusoto_credential."0.48.0" { inherit profileName; }).out; - serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; + serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; sha2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".sha2."0.9.9" { inherit profileName; }).out; - tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; + tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; }; buildDependencies = { rustc_version = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".rustc_version."0.4.0" { profileName = "__noProfile"; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".rusqlite."0.27.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".rusqlite."0.28.0" = overridableMkRustCrate (profileName: rec { name = "rusqlite"; - version = "0.27.0"; + version = "0.28.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "85127183a999f7db96d1a976a309eebbfb6ea3b0b400ddd8340190129de6eb7a"; }; + src = fetchCratesIo { inherit name version; sha256 = "01e213bc3ecb39ac32e81e51ebe31fd888a940515173e3a18a35f8c6e896422a"; }; features = builtins.concatLists [ (lib.optional (rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage_db/bundled-libs") "bundled") (lib.optional (rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage_db/bundled-libs") "modern_sqlite") @@ -4257,10 +4231,9 @@ in ${ if rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage/sqlite" || rootFeatures' ? "garage_db/bundled-libs" || rootFeatures' ? "garage_db/rusqlite" || rootFeatures' ? "garage_db/sqlite" || rootFeatures' ? "garage_model/sqlite" then "bitflags" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bitflags."1.3.2" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage/sqlite" || rootFeatures' ? "garage_db/bundled-libs" || rootFeatures' ? "garage_db/rusqlite" || rootFeatures' ? "garage_db/sqlite" || rootFeatures' ? "garage_model/sqlite" then "fallible_iterator" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".fallible-iterator."0.2.0" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage/sqlite" || rootFeatures' ? "garage_db/bundled-libs" || rootFeatures' ? "garage_db/rusqlite" || rootFeatures' ? "garage_db/sqlite" || rootFeatures' ? "garage_model/sqlite" then "fallible_streaming_iterator" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".fallible-streaming-iterator."0.1.9" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage/sqlite" || rootFeatures' ? "garage_db/bundled-libs" || rootFeatures' ? "garage_db/rusqlite" || rootFeatures' ? "garage_db/sqlite" || rootFeatures' ? "garage_model/sqlite" then "hashlink" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hashlink."0.7.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage/sqlite" || rootFeatures' ? "garage_db/bundled-libs" || rootFeatures' ? "garage_db/rusqlite" || rootFeatures' ? "garage_db/sqlite" || rootFeatures' ? "garage_model/sqlite" then "libsqlite3_sys" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libsqlite3-sys."0.24.2" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage/sqlite" || rootFeatures' ? "garage_db/bundled-libs" || rootFeatures' ? "garage_db/rusqlite" || rootFeatures' ? "garage_db/sqlite" || rootFeatures' ? "garage_model/sqlite" then "memchr" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".memchr."2.4.1" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage/sqlite" || rootFeatures' ? "garage_db/bundled-libs" || rootFeatures' ? "garage_db/rusqlite" || rootFeatures' ? "garage_db/sqlite" || rootFeatures' ? "garage_model/sqlite" then "smallvec" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".smallvec."1.8.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage/sqlite" || rootFeatures' ? "garage_db/bundled-libs" || rootFeatures' ? "garage_db/rusqlite" || rootFeatures' ? "garage_db/sqlite" || rootFeatures' ? "garage_model/sqlite" then "hashlink" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hashlink."0.8.1" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage/sqlite" || rootFeatures' ? "garage_db/bundled-libs" || rootFeatures' ? "garage_db/rusqlite" || rootFeatures' ? "garage_db/sqlite" || rootFeatures' ? "garage_model/sqlite" then "libsqlite3_sys" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libsqlite3-sys."0.25.2" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/bundled-libs" || rootFeatures' ? "garage/default" || rootFeatures' ? "garage/sqlite" || rootFeatures' ? "garage_db/bundled-libs" || rootFeatures' ? "garage_db/rusqlite" || rootFeatures' ? "garage_db/sqlite" || rootFeatures' ? "garage_model/sqlite" then "smallvec" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".smallvec."1.10.0" { inherit profileName; }).out; }; }); @@ -4277,7 +4250,30 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"; }; dependencies = { - semver = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".semver."1.0.6" { inherit profileName; }).out; + semver = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".semver."1.0.16" { inherit profileName; }).out; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".rustix."0.36.7" = overridableMkRustCrate (profileName: rec { + name = "rustix"; + version = "0.36.7"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "d4fdebc4b395b7fbb9ab11e462e20ed9051e7b16e42d24042c776eca0ac81b03"; }; + features = builtins.concatLists [ + (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "default") + (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "io-lifetimes") + (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "libc") + (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "std") + (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "termios") + (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "use-libc-auxv") + ]; + dependencies = { + ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "bitflags" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bitflags."1.3.2" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") && !(hostPlatform.parsed.kernel.name == "linux" && (hostPlatform.parsed.cpu.name == "i686" || hostPlatform.parsed.cpu.name == "x86_64" && hostPlatform.parsed.cpu.bits == 64 || hostPlatform.parsed.cpu.significantByte == "littleEndian" && (hostPlatform.parsed.cpu.name == "armv6l" || hostPlatform.parsed.cpu.name == "armv7l" || hostPlatform.parsed.cpu.name == "aarch64" && hostPlatform.parsed.cpu.bits == 64 || hostPlatform.parsed.cpu.name == "powerpc64" || hostPlatform.parsed.cpu.name == "riscv64" || hostPlatform.parsed.cpu.name == "mips" || hostPlatform.parsed.cpu.name == "mips64"))) then "libc_errno" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".errno."0.2.8" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli" then "io_lifetimes" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".io-lifetimes."1.0.4" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") && (hostPlatform.parsed.kernel.name == "linux" && (hostPlatform.parsed.cpu.name == "i686" || hostPlatform.parsed.cpu.name == "x86_64" && hostPlatform.parsed.cpu.bits == 64 || hostPlatform.parsed.cpu.significantByte == "littleEndian" && (hostPlatform.parsed.cpu.name == "armv6l" || hostPlatform.parsed.cpu.name == "armv7l" || hostPlatform.parsed.cpu.name == "aarch64" && hostPlatform.parsed.cpu.bits == 64 || hostPlatform.parsed.cpu.name == "powerpc64" || hostPlatform.parsed.cpu.name == "riscv64" || hostPlatform.parsed.cpu.name == "mips" || hostPlatform.parsed.cpu.name == "mips64")) || !(hostPlatform.parsed.kernel.name == "linux" && (hostPlatform.parsed.cpu.name == "i686" || hostPlatform.parsed.cpu.name == "x86_64" && hostPlatform.parsed.cpu.bits == 64 || hostPlatform.parsed.cpu.significantByte == "littleEndian" && (hostPlatform.parsed.cpu.name == "armv6l" || hostPlatform.parsed.cpu.name == "armv7l" || hostPlatform.parsed.cpu.name == "aarch64" && hostPlatform.parsed.cpu.bits == 64 || hostPlatform.parsed.cpu.name == "powerpc64" || hostPlatform.parsed.cpu.name == "riscv64" || hostPlatform.parsed.cpu.name == "mips" || hostPlatform.parsed.cpu.name == "mips64")))) then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") && (hostPlatform.parsed.kernel.name == "linux" && (hostPlatform.parsed.cpu.name == "i686" || hostPlatform.parsed.cpu.name == "x86_64" && hostPlatform.parsed.cpu.bits == 64 || hostPlatform.parsed.cpu.significantByte == "littleEndian" && (hostPlatform.parsed.cpu.name == "armv6l" || hostPlatform.parsed.cpu.name == "armv7l" || hostPlatform.parsed.cpu.name == "aarch64" && hostPlatform.parsed.cpu.bits == 64 || hostPlatform.parsed.cpu.name == "powerpc64" || hostPlatform.parsed.cpu.name == "riscv64" || hostPlatform.parsed.cpu.name == "mips" || hostPlatform.parsed.cpu.name == "mips64")) || (hostPlatform.parsed.kernel.name == "android" || hostPlatform.parsed.kernel.name == "linux") && !(hostPlatform.parsed.kernel.name == "linux" && (hostPlatform.parsed.cpu.name == "i686" || hostPlatform.parsed.cpu.name == "x86_64" && hostPlatform.parsed.cpu.bits == 64 || hostPlatform.parsed.cpu.significantByte == "littleEndian" && (hostPlatform.parsed.cpu.name == "armv6l" || hostPlatform.parsed.cpu.name == "armv7l" || hostPlatform.parsed.cpu.name == "aarch64" && hostPlatform.parsed.cpu.bits == 64 || hostPlatform.parsed.cpu.name == "powerpc64" || hostPlatform.parsed.cpu.name == "riscv64" || hostPlatform.parsed.cpu.name == "mips" || hostPlatform.parsed.cpu.name == "mips64")))) then "linux_raw_sys" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".linux-raw-sys."0.1.4" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") && hostPlatform.isWindows then "windows_sys" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".windows-sys."0.42.0" { inherit profileName; }).out; }; }); @@ -4292,19 +4288,19 @@ in [ "logging" ] ]; dependencies = { - base64 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".base64."0.13.0" { inherit profileName; }).out; - log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.16" { inherit profileName; }).out; + base64 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".base64."0.13.1" { inherit profileName; }).out; + log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.17" { inherit profileName; }).out; ring = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".ring."0.16.20" { inherit profileName; }).out; sct = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".sct."0.6.1" { inherit profileName; }).out; webpki = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".webpki."0.21.4" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".rustls."0.20.6" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".rustls."0.20.8" = overridableMkRustCrate (profileName: rec { name = "rustls"; - version = "0.20.6"; + version = "0.20.8"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "5aab8ee6c7097ed6057f43c187a62418d0c05a4bd5f18b3571db50ee0f9ce033"; }; + src = fetchCratesIo { inherit name version; sha256 = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f"; }; features = builtins.concatLists [ (lib.optional (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/reqwest") "dangerous_configuration") (lib.optional (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/reqwest") "default") @@ -4313,7 +4309,7 @@ in [ "tls12" ] ]; dependencies = { - log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.16" { inherit profileName; }).out; + log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.17" { inherit profileName; }).out; ring = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".ring."0.16.20" { inherit profileName; }).out; sct = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".sct."0.7.0" { inherit profileName; }).out; webpki = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".webpki."0.22.0" { inherit profileName; }).out; @@ -4332,8 +4328,8 @@ in dependencies = { ${ if hostPlatform.isUnix && !(hostPlatform.parsed.kernel.name == "darwin") then "openssl_probe" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".openssl-probe."0.1.5" { inherit profileName; }).out; rustls = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rustls."0.19.1" { inherit profileName; }).out; - ${ if hostPlatform.isWindows then "schannel" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".schannel."0.1.19" { inherit profileName; }).out; - ${ if hostPlatform.parsed.kernel.name == "darwin" then "security_framework" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".security-framework."2.6.1" { inherit profileName; }).out; + ${ if hostPlatform.isWindows then "schannel" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".schannel."0.1.21" { inherit profileName; }).out; + ${ if hostPlatform.parsed.kernel.name == "darwin" then "security_framework" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".security-framework."2.8.0" { inherit profileName; }).out; }; }); @@ -4344,34 +4340,34 @@ in src = fetchCratesIo { inherit name version; sha256 = "0167bac7a9f490495f3c33013e7722b53cb087ecbe082fb0c6387c96f634ea50"; }; dependencies = { ${ if hostPlatform.isUnix && !(hostPlatform.parsed.kernel.name == "darwin") then "openssl_probe" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".openssl-probe."0.1.5" { inherit profileName; }).out; - rustls_pemfile = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rustls-pemfile."1.0.1" { inherit profileName; }).out; - ${ if hostPlatform.isWindows then "schannel" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".schannel."0.1.19" { inherit profileName; }).out; - ${ if hostPlatform.parsed.kernel.name == "darwin" then "security_framework" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".security-framework."2.6.1" { inherit profileName; }).out; + rustls_pemfile = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rustls-pemfile."1.0.2" { inherit profileName; }).out; + ${ if hostPlatform.isWindows then "schannel" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".schannel."0.1.21" { inherit profileName; }).out; + ${ if hostPlatform.parsed.kernel.name == "darwin" then "security_framework" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".security-framework."2.8.0" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".rustls-pemfile."1.0.1" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".rustls-pemfile."1.0.2" = overridableMkRustCrate (profileName: rec { name = "rustls-pemfile"; - version = "1.0.1"; + version = "1.0.2"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "0864aeff53f8c05aa08d86e5ef839d3dfcf07aeba2db32f12db0ef716e87bd55"; }; + src = fetchCratesIo { inherit name version; sha256 = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b"; }; dependencies = { - base64 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".base64."0.13.0" { inherit profileName; }).out; + base64 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".base64."0.21.0" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".rustversion."1.0.6" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".rustversion."1.0.11" = overridableMkRustCrate (profileName: rec { name = "rustversion"; - version = "1.0.6"; + version = "1.0.11"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f"; }; + src = fetchCratesIo { inherit name version; sha256 = "5583e89e108996506031660fe09baa5011b9dd0341b89029313006d1fb508d70"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".ryu."1.0.9" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".ryu."1.0.12" = overridableMkRustCrate (profileName: rec { name = "ryu"; - version = "1.0.9"; + version = "1.0.12"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f"; }; + src = fetchCratesIo { inherit name version; sha256 = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde"; }; }); "registry+https://github.com/rust-lang/crates.io-index".same-file."1.0.6" = overridableMkRustCrate (profileName: rec { @@ -4384,45 +4380,44 @@ in }; }); - "registry+https://github.com/rust-lang/crates.io-index".schannel."0.1.19" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".schannel."0.1.21" = overridableMkRustCrate (profileName: rec { name = "schannel"; - version = "0.1.19"; + version = "0.1.21"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75"; }; + src = fetchCratesIo { inherit name version; sha256 = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3"; }; dependencies = { - lazy_static = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".lazy_static."1.4.0" { inherit profileName; }).out; - winapi = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" { inherit profileName; }).out; + windows_sys = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".windows-sys."0.42.0" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".schemars."0.8.8" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".schemars."0.8.11" = overridableMkRustCrate (profileName: rec { name = "schemars"; - version = "0.8.8"; + version = "0.8.11"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "c6b5a3c80cea1ab61f4260238409510e814e38b4b563c06044edf91e7dc070e3"; }; + src = fetchCratesIo { inherit name version; sha256 = "2a5fb6c61f29e723026dc8e923d94c694313212abbecbbe5f55a7748eec5b307"; }; features = builtins.concatLists [ (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/schemars") "default") (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/schemars") "derive") (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/schemars") "schemars_derive") ]; dependencies = { - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/schemars" then "dyn_clone" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".dyn-clone."1.0.5" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/schemars" then "schemars_derive" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".schemars_derive."0.8.8" { profileName = "__noProfile"; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/schemars" then "serde" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/schemars" then "serde_json" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.81" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/schemars" then "dyn_clone" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".dyn-clone."1.0.10" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/schemars" then "schemars_derive" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".schemars_derive."0.8.11" { profileName = "__noProfile"; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/schemars" then "serde" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/schemars" then "serde_json" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.91" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".schemars_derive."0.8.8" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".schemars_derive."0.8.11" = overridableMkRustCrate (profileName: rec { name = "schemars_derive"; - version = "0.8.8"; + version = "0.8.11"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "41ae4dce13e8614c46ac3c38ef1c0d668b101df6ac39817aebdaa26642ddae9b"; }; + src = fetchCratesIo { inherit name version; sha256 = "f188d036977451159430f3b8dc82ec76364a42b7e289c2b18a9a18f4470058e9"; }; dependencies = { - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/schemars" then "proc_macro2" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.46" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/schemars" then "quote" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/schemars" then "serde_derive_internals" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_derive_internals."0.25.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/schemars" then "syn" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.94" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/schemars" then "proc_macro2" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/schemars" then "quote" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/schemars" then "serde_derive_internals" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_derive_internals."0.26.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/schemars" then "syn" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.107" { inherit profileName; }).out; }; }); @@ -4433,6 +4428,13 @@ in src = fetchCratesIo { inherit name version; sha256 = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"; }; }); + "registry+https://github.com/rust-lang/crates.io-index".scratch."1.0.3" = overridableMkRustCrate (profileName: rec { + name = "scratch"; + version = "1.0.3"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "ddccb15bcce173023b3fedd9436f882a0739b8dfb45e4f6b6002bee5929f61b2"; }; + }); + "registry+https://github.com/rust-lang/crates.io-index".sct."0.6.1" = overridableMkRustCrate (profileName: rec { name = "sct"; version = "0.6.1"; @@ -4466,16 +4468,16 @@ in (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "serde") ]; dependencies = { - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "zeroize" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".zeroize."1.5.4" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "zeroize" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".zeroize."1.5.7" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".security-framework."2.6.1" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".security-framework."2.8.0" = overridableMkRustCrate (profileName: rec { name = "security-framework"; - version = "2.6.1"; + version = "2.8.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc"; }; + src = fetchCratesIo { inherit name version; sha256 = "645926f31b250a2dca3c232496c2d898d91036e45ca0e97e0e2390c54e11be36"; }; features = builtins.concatLists [ [ "OSX_10_9" ] [ "default" ] @@ -4484,43 +4486,43 @@ in bitflags = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bitflags."1.3.2" { inherit profileName; }).out; core_foundation = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".core-foundation."0.9.3" { inherit profileName; }).out; core_foundation_sys = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".core-foundation-sys."0.8.3" { inherit profileName; }).out; - libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; - security_framework_sys = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".security-framework-sys."2.6.1" { inherit profileName; }).out; + libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; + security_framework_sys = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".security-framework-sys."2.8.0" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".security-framework-sys."2.6.1" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".security-framework-sys."2.8.0" = overridableMkRustCrate (profileName: rec { name = "security-framework-sys"; - version = "2.6.1"; + version = "2.8.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556"; }; + src = fetchCratesIo { inherit name version; sha256 = "31c9bb296072e961fcbd8853511dd39c2d8be2deb1e17c6860b1d30732b323b4"; }; features = builtins.concatLists [ [ "OSX_10_9" ] ]; dependencies = { core_foundation_sys = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".core-foundation-sys."0.8.3" { inherit profileName; }).out; - libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; + libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".semver."1.0.6" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".semver."1.0.16" = overridableMkRustCrate (profileName: rec { name = "semver"; - version = "1.0.6"; + version = "1.0.16"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "a4a3381e03edd24287172047536f20cabde766e2cd3e65e6b00fb3af51c4f38d"; }; + src = fetchCratesIo { inherit name version; sha256 = "58bc9567378fc7690d6b2addae4e60ac2eeea07becb2c64b9f218b53865cba2a"; }; features = builtins.concatLists [ [ "default" ] [ "std" ] ]; }); - "registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" = overridableMkRustCrate (profileName: rec { name = "serde"; - version = "1.0.137"; + version = "1.0.152"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1"; }; + src = fetchCratesIo { inherit name version; sha256 = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb"; }; features = builtins.concatLists [ - (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/k8s-openapi" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "alloc") + [ "alloc" ] [ "default" ] [ "derive" ] [ "rc" ] @@ -4528,7 +4530,7 @@ in [ "std" ] ]; dependencies = { - serde_derive = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_derive."1.0.137" { profileName = "__noProfile"; }).out; + serde_derive = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_derive."1.0.152" { profileName = "__noProfile"; }).out; }; }); @@ -4539,56 +4541,56 @@ in src = fetchCratesIo { inherit name version; sha256 = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c"; }; dependencies = { ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/k8s-openapi" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "ordered_float" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".ordered-float."2.10.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/k8s-openapi" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/k8s-openapi" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".serde_bytes."0.11.5" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".serde_bytes."0.11.8" = overridableMkRustCrate (profileName: rec { name = "serde_bytes"; - version = "0.11.5"; + version = "0.11.8"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "16ae07dd2f88a366f15bd0632ba725227018c69a1c8550a927324f8eb8368bb9"; }; + src = fetchCratesIo { inherit name version; sha256 = "718dc5fff5b36f99093fc49b280cfc96ce6fc824317783bff5a1fed0c7a64819"; }; features = builtins.concatLists [ [ "default" ] [ "std" ] ]; dependencies = { - serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; + serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".serde_derive."1.0.137" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".serde_derive."1.0.152" = overridableMkRustCrate (profileName: rec { name = "serde_derive"; - version = "1.0.137"; + version = "1.0.152"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578be"; }; + src = fetchCratesIo { inherit name version; sha256 = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e"; }; features = builtins.concatLists [ [ "default" ] ]; dependencies = { - proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.46" { inherit profileName; }).out; - quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; }).out; - syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.94" { inherit profileName; }).out; + proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; + quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; + syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.107" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".serde_derive_internals."0.25.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".serde_derive_internals."0.26.0" = overridableMkRustCrate (profileName: rec { name = "serde_derive_internals"; - version = "0.25.0"; + version = "0.26.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "1dbab34ca63057a1f15280bdf3c39f2b1eb1b54c17e98360e511637aef7418c6"; }; + src = fetchCratesIo { inherit name version; sha256 = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c"; }; dependencies = { - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/schemars" then "proc_macro2" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.46" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/schemars" then "quote" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/schemars" then "syn" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.94" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/schemars" then "proc_macro2" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/schemars" then "quote" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" || rootFeatures' ? "garage_rpc/schemars" then "syn" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.107" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.81" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.91" = overridableMkRustCrate (profileName: rec { name = "serde_json"; - version = "1.0.81"; + version = "1.0.91"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15c"; }; + src = fetchCratesIo { inherit name version; sha256 = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883"; }; features = builtins.concatLists [ (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/k8s-openapi" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "alloc") [ "default" ] @@ -4597,10 +4599,23 @@ in [ "std" ] ]; dependencies = { - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "indexmap" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".indexmap."1.8.0" { inherit profileName; }).out; - itoa = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".itoa."1.0.1" { inherit profileName; }).out; - ryu = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".ryu."1.0.9" { inherit profileName; }).out; - serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "indexmap" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".indexmap."1.9.2" { inherit profileName; }).out; + itoa = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".itoa."1.0.5" { inherit profileName; }).out; + ryu = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".ryu."1.0.12" { inherit profileName; }).out; + serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".serde_spanned."0.6.0" = overridableMkRustCrate (profileName: rec { + name = "serde_spanned"; + version = "0.6.0"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "2c68e921cef53841b8925c2abadd27c9b891d9613bdc43d6b823062866df38e8"; }; + features = builtins.concatLists [ + [ "serde" ] + ]; + dependencies = { + serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; }; }); @@ -4610,39 +4625,39 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"; }; dependencies = { - ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "form_urlencoded" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".form_urlencoded."1.0.1" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "itoa" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".itoa."1.0.1" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "ryu" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".ryu."1.0.9" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "serde" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "form_urlencoded" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".form_urlencoded."1.1.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "itoa" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".itoa."1.0.5" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "ryu" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".ryu."1.0.12" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "serde" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".serde_yaml."0.8.23" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".serde_yaml."0.8.26" = overridableMkRustCrate (profileName: rec { name = "serde_yaml"; - version = "0.8.23"; + version = "0.8.26"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "a4a521f2940385c165a24ee286aa8599633d162077a54bdcae2a6fd5a7bfa7a0"; }; + src = fetchCratesIo { inherit name version; sha256 = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b"; }; dependencies = { - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "indexmap" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".indexmap."1.8.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "ryu" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".ryu."1.0.9" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "indexmap" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".indexmap."1.9.2" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "ryu" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".ryu."1.0.12" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "yaml_rust" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".yaml-rust."0.4.5" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".sha1."0.10.4" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".sha1."0.10.5" = overridableMkRustCrate (profileName: rec { name = "sha1"; - version = "0.10.4"; + version = "0.10.5"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "006769ba83e921b3085caa8334186b00cf92b4cb1a6cf4632fbccc8eff5c7549"; }; + src = fetchCratesIo { inherit name version; sha256 = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3"; }; features = builtins.concatLists [ [ "default" ] [ "std" ] ]; dependencies = { cfg_if = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cfg-if."1.0.0" { inherit profileName; }).out; - ${ if hostPlatform.parsed.cpu.name == "aarch64" || hostPlatform.parsed.cpu.name == "i686" || hostPlatform.parsed.cpu.name == "x86_64" then "cpufeatures" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cpufeatures."0.2.2" { inherit profileName; }).out; - digest = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".digest."0.10.3" { inherit profileName; }).out; + ${ if hostPlatform.parsed.cpu.name == "aarch64" || hostPlatform.parsed.cpu.name == "i686" || hostPlatform.parsed.cpu.name == "x86_64" then "cpufeatures" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cpufeatures."0.2.5" { inherit profileName; }).out; + digest = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".digest."0.10.6" { inherit profileName; }).out; }; }); @@ -4658,25 +4673,25 @@ in dependencies = { block_buffer = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".block-buffer."0.9.0" { inherit profileName; }).out; cfg_if = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cfg-if."1.0.0" { inherit profileName; }).out; - ${ if hostPlatform.parsed.cpu.name == "aarch64" || hostPlatform.parsed.cpu.name == "x86_64" || hostPlatform.parsed.cpu.name == "i686" then "cpufeatures" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cpufeatures."0.2.2" { inherit profileName; }).out; + ${ if hostPlatform.parsed.cpu.name == "aarch64" || hostPlatform.parsed.cpu.name == "x86_64" || hostPlatform.parsed.cpu.name == "i686" then "cpufeatures" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cpufeatures."0.2.5" { inherit profileName; }).out; digest = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".digest."0.9.0" { inherit profileName; }).out; opaque_debug = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".opaque-debug."0.3.0" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".sha2."0.10.2" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".sha2."0.10.6" = overridableMkRustCrate (profileName: rec { name = "sha2"; - version = "0.10.2"; + version = "0.10.6"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676"; }; + src = fetchCratesIo { inherit name version; sha256 = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0"; }; features = builtins.concatLists [ [ "default" ] [ "std" ] ]; dependencies = { cfg_if = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cfg-if."1.0.0" { inherit profileName; }).out; - ${ if hostPlatform.parsed.cpu.name == "aarch64" || hostPlatform.parsed.cpu.name == "x86_64" || hostPlatform.parsed.cpu.name == "i686" then "cpufeatures" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cpufeatures."0.2.2" { inherit profileName; }).out; - digest = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".digest."0.10.3" { inherit profileName; }).out; + ${ if hostPlatform.parsed.cpu.name == "aarch64" || hostPlatform.parsed.cpu.name == "x86_64" || hostPlatform.parsed.cpu.name == "i686" then "cpufeatures" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cpufeatures."0.2.5" { inherit profileName; }).out; + digest = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".digest."0.10.6" { inherit profileName; }).out; }; }); @@ -4707,26 +4722,33 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0"; }; dependencies = { - libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; + libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".siphasher."0.2.3" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".siphasher."0.3.10" = overridableMkRustCrate (profileName: rec { name = "siphasher"; - version = "0.2.3"; + version = "0.3.10"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac"; }; + src = fetchCratesIo { inherit name version; sha256 = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de"; }; + features = builtins.concatLists [ + [ "default" ] + [ "std" ] + ]; }); - "registry+https://github.com/rust-lang/crates.io-index".slab."0.4.5" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".slab."0.4.7" = overridableMkRustCrate (profileName: rec { name = "slab"; - version = "0.4.5"; + version = "0.4.7"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5"; }; + src = fetchCratesIo { inherit name version; sha256 = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef"; }; features = builtins.concatLists [ [ "default" ] [ "std" ] ]; + buildDependencies = { + autocfg = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".autocfg."1.1.0" { profileName = "__noProfile"; }).out; + }; }); "registry+https://github.com/rust-lang/crates.io-index".sled."0.34.7" = overridableMkRustCrate (profileName: rec { @@ -4740,33 +4762,33 @@ in ]; dependencies = { crc32fast = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".crc32fast."1.3.2" { inherit profileName; }).out; - crossbeam_epoch = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".crossbeam-epoch."0.9.8" { inherit profileName; }).out; - crossbeam_utils = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".crossbeam-utils."0.8.8" { inherit profileName; }).out; + crossbeam_epoch = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".crossbeam-epoch."0.9.13" { inherit profileName; }).out; + crossbeam_utils = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".crossbeam-utils."0.8.14" { inherit profileName; }).out; ${ if hostPlatform.parsed.kernel.name == "linux" || hostPlatform.parsed.kernel.name == "darwin" || hostPlatform.parsed.kernel.name == "windows" then "fs2" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".fs2."0.4.3" { inherit profileName; }).out; fxhash = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".fxhash."0.2.1" { inherit profileName; }).out; - libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; - log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.16" { inherit profileName; }).out; + libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; + log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.17" { inherit profileName; }).out; parking_lot = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".parking_lot."0.11.2" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".smallvec."1.8.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".smallvec."1.10.0" = overridableMkRustCrate (profileName: rec { name = "smallvec"; - version = "1.8.0"; + version = "1.10.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83"; }; + src = fetchCratesIo { inherit name version; sha256 = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".socket2."0.4.4" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".socket2."0.4.7" = overridableMkRustCrate (profileName: rec { name = "socket2"; - version = "0.4.4"; + version = "0.4.7"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0"; }; + src = fetchCratesIo { inherit name version; sha256 = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd"; }; features = builtins.concatLists [ [ "all" ] ]; dependencies = { - ${ if hostPlatform.isUnix then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; + ${ if hostPlatform.isUnix then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; ${ if hostPlatform.isWindows then "winapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" { inherit profileName; }).out; }; }); @@ -4778,30 +4800,30 @@ in src = fetchCratesIo { inherit name version; sha256 = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".spin."0.9.2" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".spin."0.9.4" = overridableMkRustCrate (profileName: rec { name = "spin"; - version = "0.9.2"; + version = "0.9.4"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "511254be0c5bcf062b019a6c89c01a664aa359ded62f78aa72c6fc137c0590e5"; }; + src = fetchCratesIo { inherit name version; sha256 = "7f6002a767bff9e83f8eeecf883ecb8011875a21ae8da43bffb817a57e78cc09"; }; features = builtins.concatLists [ [ "mutex" ] [ "spin_mutex" ] ]; }); - "registry+https://github.com/rust-lang/crates.io-index".static_init."1.0.2" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".static_init."1.0.3" = overridableMkRustCrate (profileName: rec { name = "static_init"; - version = "1.0.2"; + version = "1.0.3"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "208e44bfab7faad5dee24112ea8af2f76aa0d501ea3370b5d4b81729a528f119"; }; + src = fetchCratesIo { inherit name version; sha256 = "8a2a1c578e98c1c16fc3b8ec1328f7659a500737d7a0c6d625e73e830ff9c1f6"; }; features = builtins.concatLists [ [ "default" ] ]; dependencies = { bitflags = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bitflags."1.3.2" { inherit profileName; }).out; - ${ if hostPlatform.parsed.kernel.name == "android" || hostPlatform.parsed.kernel.name == "linux" then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; + ${ if hostPlatform.parsed.kernel.name == "android" || hostPlatform.parsed.kernel.name == "linux" then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; ${ if !(hostPlatform.parsed.kernel.name == "linux" || hostPlatform.parsed.kernel.name == "android") then "parking_lot" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".parking_lot."0.11.2" { inherit profileName; }).out; - ${ if !(hostPlatform.parsed.kernel.name == "linux" || hostPlatform.parsed.kernel.name == "android") then "parking_lot_core" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".parking_lot_core."0.8.5" { inherit profileName; }).out; + ${ if !(hostPlatform.parsed.kernel.name == "linux" || hostPlatform.parsed.kernel.name == "android") then "parking_lot_core" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".parking_lot_core."0.8.6" { inherit profileName; }).out; static_init_macro = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".static_init_macro."1.0.2" { profileName = "__noProfile"; }).out; ${ if hostPlatform.parsed.kernel.name == "windows" then "winapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" { inherit profileName; }).out; }; @@ -4816,10 +4838,10 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "70a2595fc3aa78f2d0e45dd425b22282dd863273761cc77780914b2cf3003acf"; }; dependencies = { - memchr = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".memchr."2.4.1" { inherit profileName; }).out; - proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.46" { inherit profileName; }).out; - quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; }).out; - syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.94" { inherit profileName; }).out; + memchr = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".memchr."2.5.0" { inherit profileName; }).out; + proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; + quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; + syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.107" { inherit profileName; }).out; }; buildDependencies = { cfg_aliases = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".cfg_aliases."0.1.1" { profileName = "__noProfile"; }).out; @@ -4853,9 +4875,9 @@ in dependencies = { heck = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".heck."0.3.3" { inherit profileName; }).out; proc_macro_error = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro-error."1.0.4" { inherit profileName; }).out; - proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.46" { inherit profileName; }).out; - quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; }).out; - syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.94" { inherit profileName; }).out; + proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; + quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; + syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.107" { inherit profileName; }).out; }; }); @@ -4866,11 +4888,11 @@ in src = fetchCratesIo { inherit name version; sha256 = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".syn."1.0.94" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".syn."1.0.107" = overridableMkRustCrate (profileName: rec { name = "syn"; - version = "1.0.94"; + version = "1.0.107"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "a07e33e919ebcd69113d5be0e4d70c5707004ff45188910106854f38b960df4a"; }; + src = fetchCratesIo { inherit name version; sha256 = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5"; }; features = builtins.concatLists [ [ "clone-impls" ] [ "default" ] @@ -4885,19 +4907,19 @@ in [ "visit-mut" ] ]; dependencies = { - proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.46" { inherit profileName; }).out; - quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; }).out; - unicode_xid = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".unicode-xid."0.2.2" { inherit profileName; }).out; + proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; + quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; + unicode_ident = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".unicode-ident."1.0.6" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".synchronoise."1.0.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".synchronoise."1.0.1" = overridableMkRustCrate (profileName: rec { name = "synchronoise"; - version = "1.0.0"; + version = "1.0.1"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "d717ed0efc9d39ab3b642a096bc369a3e02a38a51c41845d7fe31bdad1d6eaeb"; }; + src = fetchCratesIo { inherit name version; sha256 = "3dbc01390fc626ce8d1cffe3376ded2b72a11bb70e1c75f404a210e4daa4def2"; }; dependencies = { - ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "crossbeam_queue" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".crossbeam-queue."0.1.2" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/lmdb" || rootFeatures' ? "garage_db/heed" || rootFeatures' ? "garage_db/lmdb" || rootFeatures' ? "garage_model/lmdb" then "crossbeam_queue" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".crossbeam-queue."0.3.8" { inherit profileName; }).out; }; }); @@ -4911,10 +4933,25 @@ in [ "proc-macro" ] ]; dependencies = { - proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.46" { inherit profileName; }).out; - quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; }).out; - syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.94" { inherit profileName; }).out; - unicode_xid = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".unicode-xid."0.2.2" { inherit profileName; }).out; + proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; + quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; + syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.107" { inherit profileName; }).out; + unicode_xid = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".unicode-xid."0.2.4" { inherit profileName; }).out; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".systemstat."0.2.3" = overridableMkRustCrate (profileName: rec { + name = "systemstat"; + version = "0.2.3"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "a24aec24a9312c83999a28e3ef9db7e2afd5c64bf47725b758cdc1cafd5b0bd2"; }; + dependencies = { + bytesize = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytesize."1.1.0" { inherit profileName; }).out; + lazy_static = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".lazy_static."1.4.0" { inherit profileName; }).out; + libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; + ${ if hostPlatform.parsed.kernel.name == "linux" || hostPlatform.parsed.kernel.name == "android" then "nom" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".nom."7.1.3" { inherit profileName; }).out; + time = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".time."0.3.17" { inherit profileName; }).out; + ${ if hostPlatform.isWindows then "winapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" { inherit profileName; }).out; }; }); @@ -4925,21 +4962,21 @@ in src = fetchCratesIo { inherit name version; sha256 = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4"; }; dependencies = { ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "cfg_if" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cfg-if."1.0.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "fastrand" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".fastrand."1.7.0" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp") && (hostPlatform.isUnix || hostPlatform.parsed.kernel.name == "wasi") then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp") && hostPlatform.parsed.kernel.name == "redox" then "syscall" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".redox_syscall."0.2.11" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "fastrand" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".fastrand."1.8.0" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp") && (hostPlatform.isUnix || hostPlatform.parsed.kernel.name == "wasi") then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp") && hostPlatform.parsed.kernel.name == "redox" then "syscall" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".redox_syscall."0.2.16" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "remove_dir_all" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".remove_dir_all."0.5.3" { inherit profileName; }).out; ${ if (rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp") && hostPlatform.isWindows then "winapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".termcolor."1.1.3" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".termcolor."1.2.0" = overridableMkRustCrate (profileName: rec { name = "termcolor"; - version = "1.1.3"; + version = "1.2.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"; }; + src = fetchCratesIo { inherit name version; sha256 = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"; }; dependencies = { - ${ if (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "garage_db/pretty_env_logger" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") && hostPlatform.isWindows then "winapi_util" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi-util."0.1.5" { inherit profileName; }).out; + ${ if hostPlatform.isWindows then "winapi_util" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi-util."0.1.5" { inherit profileName; }).out; }; }); @@ -4949,36 +4986,29 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"; }; dependencies = { - unicode_width = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".unicode-width."0.1.9" { inherit profileName; }).out; + unicode_width = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".unicode-width."0.1.10" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".textwrap."0.15.0" = overridableMkRustCrate (profileName: rec { - name = "textwrap"; - version = "0.15.0"; - registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb"; }; - }); - - "registry+https://github.com/rust-lang/crates.io-index".thiserror."1.0.31" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".thiserror."1.0.38" = overridableMkRustCrate (profileName: rec { name = "thiserror"; - version = "1.0.31"; + version = "1.0.38"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a"; }; + src = fetchCratesIo { inherit name version; sha256 = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0"; }; dependencies = { - thiserror_impl = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".thiserror-impl."1.0.31" { profileName = "__noProfile"; }).out; + thiserror_impl = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".thiserror-impl."1.0.38" { profileName = "__noProfile"; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".thiserror-impl."1.0.31" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".thiserror-impl."1.0.38" = overridableMkRustCrate (profileName: rec { name = "thiserror-impl"; - version = "1.0.31"; + version = "1.0.38"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a"; }; + src = fetchCratesIo { inherit name version; sha256 = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f"; }; dependencies = { - proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.46" { inherit profileName; }).out; - quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; }).out; - syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.94" { inherit profileName; }).out; + proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; + quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; + syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.107" { inherit profileName; }).out; }; }); @@ -4988,27 +5018,27 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180"; }; dependencies = { - once_cell = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".once_cell."1.10.0" { inherit profileName; }).out; + once_cell = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".once_cell."1.17.0" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".time."0.1.44" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".time."0.1.45" = overridableMkRustCrate (profileName: rec { name = "time"; - version = "0.1.44"; + version = "0.1.45"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255"; }; + src = fetchCratesIo { inherit name version; sha256 = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a"; }; dependencies = { - libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; + libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; ${ if hostPlatform.parsed.kernel.name == "wasi" then "wasi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".wasi."0.10.0+wasi-snapshot-preview1" { inherit profileName; }).out; ${ if hostPlatform.isWindows then "winapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".time."0.3.9" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".time."0.3.17" = overridableMkRustCrate (profileName: rec { name = "time"; - version = "0.3.9"; + version = "0.3.17"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "c2702e08a7a860f005826c6815dcac101b19b5eb330c27fe4a5928fec1d20ddd"; }; + src = fetchCratesIo { inherit name version; sha256 = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376"; }; features = builtins.concatLists [ [ "alloc" ] [ "default" ] @@ -5016,16 +5046,37 @@ in [ "std" ] ]; dependencies = { - ${ if hostPlatform.isUnix then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; - ${ if hostPlatform.isUnix then "num_threads" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num_threads."0.1.5" { inherit profileName; }).out; + serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; + time_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".time-core."0.1.0" { inherit profileName; }).out; + time_macros = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".time-macros."0.2.6" { profileName = "__noProfile"; }).out; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".time-core."0.1.0" = overridableMkRustCrate (profileName: rec { + name = "time-core"; + version = "0.1.0"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"; }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".time-macros."0.2.6" = overridableMkRustCrate (profileName: rec { + name = "time-macros"; + version = "0.2.6"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2"; }; + features = builtins.concatLists [ + [ "parsing" ] + ]; + dependencies = { + time_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".time-core."0.1.0" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".timeago."0.3.1" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".timeago."0.4.0" = overridableMkRustCrate (profileName: rec { name = "timeago"; - version = "0.3.1"; + version = "0.4.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "6ec32dde57efb15c035ac074118d7f32820451395f28cb0524a01d4e94983b26"; }; + src = fetchCratesIo { inherit name version; sha256 = "71bd60ed74255d99458a01fae2df715562d4806ceabfedd8130a82ae6b834993"; }; features = builtins.concatLists [ [ "chrono" ] [ "default" ] @@ -5033,16 +5084,16 @@ in [ "translations" ] ]; dependencies = { - chrono = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".chrono."0.4.19" { inherit profileName; }).out; - isolang = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".isolang."1.0.0" { inherit profileName; }).out; + chrono = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".chrono."0.4.23" { inherit profileName; }).out; + isolang = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".isolang."2.2.0" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".tinyvec."1.5.1" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".tinyvec."1.6.0" = overridableMkRustCrate (profileName: rec { name = "tinyvec"; - version = "1.5.1"; + version = "1.6.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2"; }; + src = fetchCratesIo { inherit name version; sha256 = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"; }; features = builtins.concatLists [ [ "alloc" ] [ "default" ] @@ -5060,11 +5111,11 @@ in src = fetchCratesIo { inherit name version; sha256 = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" = overridableMkRustCrate (profileName: rec { name = "tokio"; - version = "1.17.0"; + version = "1.24.2"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "2af73ac49756f3f7c01172e34a23e5d0216f6c32333757c2c61feb2bbff5a5ee"; }; + src = fetchCratesIo { inherit name version; sha256 = "597a12a59981d9e3c38d216785b0c37399f6e415e8d0712047620f189371b0bb"; }; features = builtins.concatLists [ [ "bytes" ] [ "default" ] @@ -5078,7 +5129,6 @@ in [ "mio" ] [ "net" ] [ "num_cpus" ] - [ "once_cell" ] (lib.optional (rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp") "parking_lot") [ "process" ] [ "rt" ] @@ -5089,21 +5139,23 @@ in [ "sync" ] [ "time" ] [ "tokio-macros" ] - [ "winapi" ] + [ "windows-sys" ] ]; dependencies = { - bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; - ${ if hostPlatform.isUnix then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; - memchr = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".memchr."2.4.1" { inherit profileName; }).out; - mio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".mio."0.8.2" { inherit profileName; }).out; - num_cpus = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num_cpus."1.13.1" { inherit profileName; }).out; - once_cell = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".once_cell."1.10.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "parking_lot" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".parking_lot."0.12.0" { inherit profileName; }).out; + bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; + ${ if hostPlatform.isUnix then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; + memchr = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".memchr."2.5.0" { inherit profileName; }).out; + mio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".mio."0.8.5" { inherit profileName; }).out; + num_cpus = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".num_cpus."1.15.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "parking_lot" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".parking_lot."0.12.1" { inherit profileName; }).out; pin_project_lite = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project-lite."0.2.9" { inherit profileName; }).out; ${ if hostPlatform.isUnix then "signal_hook_registry" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".signal-hook-registry."1.4.0" { inherit profileName; }).out; - socket2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".socket2."0.4.4" { inherit profileName; }).out; - tokio_macros = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-macros."1.7.0" { profileName = "__noProfile"; }).out; - ${ if hostPlatform.isWindows then "winapi" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" { inherit profileName; }).out; + ${ if !(hostPlatform.parsed.cpu.name == "wasm32" || hostPlatform.parsed.cpu.name == "wasm64") then "socket2" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".socket2."0.4.7" { inherit profileName; }).out; + tokio_macros = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-macros."1.8.2" { profileName = "__noProfile"; }).out; + ${ if hostPlatform.isWindows then "windows_sys" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".windows-sys."0.42.0" { inherit profileName; }).out; + }; + buildDependencies = { + autocfg = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".autocfg."1.1.0" { profileName = "__noProfile"; }).out; }; }); @@ -5114,19 +5166,19 @@ in src = fetchCratesIo { inherit name version; sha256 = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf"; }; dependencies = { ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "pin_project_lite" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project-lite."0.2.9" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tokio" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tokio" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".tokio-macros."1.7.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".tokio-macros."1.8.2" = overridableMkRustCrate (profileName: rec { name = "tokio-macros"; - version = "1.7.0"; + version = "1.8.2"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7"; }; + src = fetchCratesIo { inherit name version; sha256 = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8"; }; dependencies = { - proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.46" { inherit profileName; }).out; - quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; }).out; - syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.94" { inherit profileName; }).out; + proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; + quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; + syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.107" { inherit profileName; }).out; }; }); @@ -5137,7 +5189,7 @@ in src = fetchCratesIo { inherit name version; sha256 = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6"; }; dependencies = { rustls = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rustls."0.19.1" { inherit profileName; }).out; - tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; + tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; webpki = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".webpki."0.21.4" { inherit profileName; }).out; }; }); @@ -5153,85 +5205,122 @@ in [ "tls12" ] ]; dependencies = { - rustls = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rustls."0.20.6" { inherit profileName; }).out; - tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; + rustls = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rustls."0.20.8" { inherit profileName; }).out; + tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; webpki = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".webpki."0.22.0" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".tokio-stream."0.1.8" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".tokio-stream."0.1.11" = overridableMkRustCrate (profileName: rec { name = "tokio-stream"; - version = "0.1.8"; + version = "0.1.11"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "50145484efff8818b5ccd256697f36863f587da82cf8b409c53adf1e840798e3"; }; + src = fetchCratesIo { inherit name version; sha256 = "d660770404473ccd7bc9f8b28494a811bc18542b915c0855c51e8f419d5223ce"; }; features = builtins.concatLists [ [ "default" ] [ "net" ] [ "time" ] ]; dependencies = { - futures_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.21" { inherit profileName; }).out; + futures_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.25" { inherit profileName; }).out; pin_project_lite = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project-lite."0.2.9" { inherit profileName; }).out; - tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; + tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".tokio-util."0.6.9" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".tokio-util."0.6.10" = overridableMkRustCrate (profileName: rec { name = "tokio-util"; - version = "0.6.9"; + version = "0.6.10"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "9e99e1983e5d376cd8eb4b66604d2e99e79f5bd988c3055891dcd8c9e2604cc0"; }; + src = fetchCratesIo { inherit name version; sha256 = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507"; }; features = builtins.concatLists [ - [ "codec" ] + (lib.optional (rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp") "codec") [ "default" ] [ "io" ] ]; dependencies = { - bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; - futures_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.21" { inherit profileName; }).out; - futures_sink = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-sink."0.3.21" { inherit profileName; }).out; - log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.16" { inherit profileName; }).out; + bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; + futures_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.25" { inherit profileName; }).out; + futures_sink = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-sink."0.3.25" { inherit profileName; }).out; + log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.17" { inherit profileName; }).out; pin_project_lite = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project-lite."0.2.9" { inherit profileName; }).out; - tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; + tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".tokio-util."0.7.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".tokio-util."0.7.4" = overridableMkRustCrate (profileName: rec { name = "tokio-util"; - version = "0.7.0"; + version = "0.7.4"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "64910e1b9c1901aaf5375561e35b9c057d95ff41a44ede043a03e09279eabaf1"; }; + src = fetchCratesIo { inherit name version; sha256 = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740"; }; features = builtins.concatLists [ - (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "codec") + [ "codec" ] [ "compat" ] [ "default" ] [ "futures-io" ] [ "io" ] (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "slab") (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "time") + [ "tracing" ] ]; dependencies = { - bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; - futures_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.21" { inherit profileName; }).out; - futures_io = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-io."0.3.21" { inherit profileName; }).out; - futures_sink = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-sink."0.3.21" { inherit profileName; }).out; - log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.16" { inherit profileName; }).out; + bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; + futures_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.25" { inherit profileName; }).out; + futures_io = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-io."0.3.25" { inherit profileName; }).out; + futures_sink = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-sink."0.3.25" { inherit profileName; }).out; pin_project_lite = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project-lite."0.2.9" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "slab" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".slab."0.4.5" { inherit profileName; }).out; - tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "slab" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".slab."0.4.7" { inherit profileName; }).out; + tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; + tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".toml."0.5.8" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".toml."0.6.0" = overridableMkRustCrate (profileName: rec { name = "toml"; - version = "0.5.8"; + version = "0.6.0"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "4fb9d890e4dc9298b70f740f615f2e05b9db37dce531f6b24fb77ac993f9f217"; }; + features = builtins.concatLists [ + [ "default" ] + [ "display" ] + [ "parse" ] + ]; + dependencies = { + serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; + serde_spanned = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_spanned."0.6.0" { inherit profileName; }).out; + toml_datetime = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".toml_datetime."0.5.1" { inherit profileName; }).out; + toml_edit = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".toml_edit."0.18.0" { inherit profileName; }).out; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".toml_datetime."0.5.1" = overridableMkRustCrate (profileName: rec { + name = "toml_datetime"; + version = "0.5.1"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "4553f467ac8e3d374bc9a177a26801e5d0f9b211aa1673fb137a403afd1c9cf5"; }; + features = builtins.concatLists [ + [ "serde" ] + ]; + dependencies = { + serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".toml_edit."0.18.0" = overridableMkRustCrate (profileName: rec { + name = "toml_edit"; + version = "0.18.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa"; }; + src = fetchCratesIo { inherit name version; sha256 = "729bfd096e40da9c001f778f5cdecbd2957929a24e10e5883d9392220a751581"; }; features = builtins.concatLists [ [ "default" ] + [ "serde" ] ]; dependencies = { - serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.137" { inherit profileName; }).out; + indexmap = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".indexmap."1.9.2" { inherit profileName; }).out; + nom8 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".nom8."0.2.0" { inherit profileName; }).out; + serde = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde."1.0.152" { inherit profileName; }).out; + serde_spanned = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_spanned."0.6.0" { inherit profileName; }).out; + toml_datetime = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".toml_datetime."0.5.1" { inherit profileName; }).out; }; }); @@ -5257,27 +5346,27 @@ in ]; dependencies = { ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "async_stream" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".async-stream."0.3.3" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "async_trait" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".async-trait."0.1.52" { profileName = "__noProfile"; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "base64" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".base64."0.13.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "bytes" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "futures_core" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.21" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "futures_util" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.21" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "h2" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".h2."0.3.12" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "async_trait" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".async-trait."0.1.63" { profileName = "__noProfile"; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "base64" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".base64."0.13.1" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "bytes" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "futures_core" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.25" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "futures_util" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.25" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "h2" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".h2."0.3.15" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "http" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "http_body" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http-body."0.4.5" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "hyper" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.18" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "hyper" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."0.14.23" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "hyper_timeout" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper-timeout."0.4.1" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "percent_encoding" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".percent-encoding."2.1.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "percent_encoding" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".percent-encoding."2.2.0" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "pin_project" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project."1.0.12" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "prost1" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".prost."0.9.0" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "prost_derive" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".prost-derive."0.9.0" { profileName = "__noProfile"; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "tokio" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "tokio_stream" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-stream."0.1.8" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "tokio_util" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-util."0.6.9" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "tower" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tower."0.4.12" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "tower_layer" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tower-layer."0.3.1" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "tower_service" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tower-service."0.3.1" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "tracing" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "tokio" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "tokio_stream" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-stream."0.1.11" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "tokio_util" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-util."0.6.10" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "tower" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tower."0.4.13" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "tower_layer" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tower-layer."0.3.2" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "tower_service" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tower-service."0.3.2" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "tracing" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "tracing_futures" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing-futures."0.2.5" { inherit profileName; }).out; }; }); @@ -5293,18 +5382,18 @@ in (lib.optional (rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp") "transport") ]; dependencies = { - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "proc_macro2" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.46" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "proc_macro2" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "prost_build" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".prost-build."0.9.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "quote" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "syn" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.94" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "quote" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "syn" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.107" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".tower."0.4.12" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".tower."0.4.13" = overridableMkRustCrate (profileName: rec { name = "tower"; - version = "0.4.12"; + version = "0.4.13"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "9a89fd63ad6adf737582df5db40d286574513c69a11dac5214dc3b5603d6713e"; }; + src = fetchCratesIo { inherit name version; sha256 = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"; }; features = builtins.concatLists [ [ "__common" ] (lib.optional (rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp") "balance") @@ -5332,26 +5421,26 @@ in [ "util" ] ]; dependencies = { - futures_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.21" { inherit profileName; }).out; - futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.21" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "indexmap" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".indexmap."1.8.0" { inherit profileName; }).out; + futures_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.25" { inherit profileName; }).out; + futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.25" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "indexmap" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".indexmap."1.9.2" { inherit profileName; }).out; pin_project = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project."1.0.12" { inherit profileName; }).out; pin_project_lite = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project-lite."0.2.9" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "rand" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand."0.8.5" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "slab" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".slab."0.4.5" { inherit profileName; }).out; - tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.17.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tokio_util" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-util."0.7.0" { inherit profileName; }).out; - tower_layer = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tower-layer."0.3.1" { inherit profileName; }).out; - tower_service = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tower-service."0.3.1" { inherit profileName; }).out; - tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "slab" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".slab."0.4.7" { inherit profileName; }).out; + tokio = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio."1.24.2" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tokio_util" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tokio-util."0.7.4" { inherit profileName; }).out; + tower_layer = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tower-layer."0.3.2" { inherit profileName; }).out; + tower_service = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tower-service."0.3.2" { inherit profileName; }).out; + tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".tower-http."0.3.3" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".tower-http."0.3.5" = overridableMkRustCrate (profileName: rec { name = "tower-http"; - version = "0.3.3"; + version = "0.3.5"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "7d342c6d58709c0a6d48d48dabbb62d4ef955cf5f0f3bbfd845838e7ae88dbae"; }; + src = fetchCratesIo { inherit name version; sha256 = "f873044bf02dd1e8239e9c1293ea39dad76dc594ec16185d0a1bf31d8dc8d858"; }; features = builtins.concatLists [ (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "auth") (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "base64") @@ -5361,40 +5450,40 @@ in (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "tracing") ]; dependencies = { - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "base64" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".base64."0.13.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "base64" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".base64."0.13.1" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "bitflags" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bitflags."1.3.2" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "bytes" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.2.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "futures_core" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.21" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "futures_util" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.21" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "bytes" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.3.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "futures_core" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-core."0.3.25" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "futures_util" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.25" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "http" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."0.2.8" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "http_body" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http-body."0.4.5" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "http_range_header" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http-range-header."0.3.0" { inherit profileName; }).out; ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "pin_project_lite" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project-lite."0.2.9" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tower_layer" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tower-layer."0.3.1" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tower_service" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tower-service."0.3.1" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tracing" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tower_layer" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tower-layer."0.3.2" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tower_service" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tower-service."0.3.2" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "tracing" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".tower-layer."0.3.1" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".tower-layer."0.3.2" = overridableMkRustCrate (profileName: rec { name = "tower-layer"; - version = "0.3.1"; + version = "0.3.2"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "343bc9466d3fe6b0f960ef45960509f84480bf4fd96f92901afe7ff3df9d3a62"; }; + src = fetchCratesIo { inherit name version; sha256 = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".tower-service."0.3.1" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".tower-service."0.3.2" = overridableMkRustCrate (profileName: rec { name = "tower-service"; - version = "0.3.1"; + version = "0.3.2"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6"; }; + src = fetchCratesIo { inherit name version; sha256 = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" = overridableMkRustCrate (profileName: rec { name = "tracing"; - version = "0.1.32"; + version = "0.1.37"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "4a1bdf54a7c28a2bbf701e1d2233f6c77f473486b94bee4f9678da5a148dca7f"; }; + src = fetchCratesIo { inherit name version; sha256 = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"; }; features = builtins.concatLists [ [ "attributes" ] [ "default" ] @@ -5404,38 +5493,38 @@ in ]; dependencies = { cfg_if = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cfg-if."1.0.0" { inherit profileName; }).out; - log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.16" { inherit profileName; }).out; + log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.17" { inherit profileName; }).out; pin_project_lite = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project-lite."0.2.9" { inherit profileName; }).out; - tracing_attributes = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing-attributes."0.1.20" { profileName = "__noProfile"; }).out; - tracing_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing-core."0.1.23" { inherit profileName; }).out; + tracing_attributes = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing-attributes."0.1.23" { profileName = "__noProfile"; }).out; + tracing_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing-core."0.1.30" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".tracing-attributes."0.1.20" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".tracing-attributes."0.1.23" = overridableMkRustCrate (profileName: rec { name = "tracing-attributes"; - version = "0.1.20"; + version = "0.1.23"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "2e65ce065b4b5c53e73bb28912318cb8c9e9ad3921f1d669eb0e68b4c8143a2b"; }; + src = fetchCratesIo { inherit name version; sha256 = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a"; }; dependencies = { - proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.46" { inherit profileName; }).out; - quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; }).out; - syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.94" { inherit profileName; }).out; + proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; + quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; + syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.107" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".tracing-core."0.1.23" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".tracing-core."0.1.30" = overridableMkRustCrate (profileName: rec { name = "tracing-core"; - version = "0.1.23"; + version = "0.1.30"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "aa31669fa42c09c34d94d8165dd2012e8ff3c66aca50f3bb226b68f216f2706c"; }; + src = fetchCratesIo { inherit name version; sha256 = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a"; }; features = builtins.concatLists [ [ "default" ] - [ "lazy_static" ] + [ "once_cell" ] [ "std" ] [ "valuable" ] ]; dependencies = { - lazy_static = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".lazy_static."1.4.0" { inherit profileName; }).out; + once_cell = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".once_cell."1.17.0" { inherit profileName; }).out; ${ if false then "valuable" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".valuable."0.1.0" { inherit profileName; }).out; }; }); @@ -5453,7 +5542,7 @@ in ]; dependencies = { ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "pin_project" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project."1.0.12" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "tracing" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "tracing" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; }; }); @@ -5468,25 +5557,25 @@ in ]; dependencies = { lazy_static = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".lazy_static."1.4.0" { inherit profileName; }).out; - log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.16" { inherit profileName; }).out; - tracing_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing-core."0.1.23" { inherit profileName; }).out; + log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.17" { inherit profileName; }).out; + tracing_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing-core."0.1.30" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".tracing-subscriber."0.3.11" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".tracing-subscriber."0.3.16" = overridableMkRustCrate (profileName: rec { name = "tracing-subscriber"; - version = "0.3.11"; + version = "0.3.16"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "4bc28f93baff38037f64e6f43d34cfa1605f27a49c34e8a04c5e78b0babf2596"; }; + src = fetchCratesIo { inherit name version; sha256 = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70"; }; features = builtins.concatLists [ [ "alloc" ] [ "ansi" ] - [ "ansi_term" ] [ "default" ] [ "env-filter" ] [ "fmt" ] - [ "lazy_static" ] [ "matchers" ] + [ "nu-ansi-term" ] + [ "once_cell" ] [ "regex" ] [ "registry" ] [ "sharded-slab" ] @@ -5497,15 +5586,15 @@ in [ "tracing-log" ] ]; dependencies = { - ansi_term = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".ansi_term."0.12.1" { inherit profileName; }).out; - lazy_static = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".lazy_static."1.4.0" { inherit profileName; }).out; matchers = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".matchers."0.1.0" { inherit profileName; }).out; - regex = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".regex."1.5.5" { inherit profileName; }).out; + nu_ansi_term = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".nu-ansi-term."0.46.0" { inherit profileName; }).out; + once_cell = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".once_cell."1.17.0" { inherit profileName; }).out; + regex = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".regex."1.7.1" { inherit profileName; }).out; sharded_slab = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".sharded-slab."0.1.4" { inherit profileName; }).out; - smallvec = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".smallvec."1.8.0" { inherit profileName; }).out; + smallvec = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".smallvec."1.10.0" { inherit profileName; }).out; thread_local = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".thread_local."1.1.4" { inherit profileName; }).out; - tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.32" { inherit profileName; }).out; - tracing_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing-core."0.1.23" { inherit profileName; }).out; + tracing = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" { inherit profileName; }).out; + tracing_core = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing-core."0.1.30" { inherit profileName; }).out; tracing_log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing-log."0.1.3" { inherit profileName; }).out; }; }); @@ -5520,78 +5609,79 @@ in (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "with-serde-json") ]; dependencies = { - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde_json" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.81" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "serde_json" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".serde_json."1.0.91" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".try-lock."0.2.3" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".try-lock."0.2.4" = overridableMkRustCrate (profileName: rec { name = "try-lock"; - version = "0.2.3"; + version = "0.2.4"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642"; }; + src = fetchCratesIo { inherit name version; sha256 = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".typenum."1.15.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".typenum."1.16.0" = overridableMkRustCrate (profileName: rec { name = "typenum"; - version = "1.15.0"; + version = "1.16.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"; }; + src = fetchCratesIo { inherit name version; sha256 = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".unicode-bidi."0.3.7" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".unicode-bidi."0.3.10" = overridableMkRustCrate (profileName: rec { name = "unicode-bidi"; - version = "0.3.7"; + version = "0.3.10"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f"; }; + src = fetchCratesIo { inherit name version; sha256 = "d54675592c1dbefd78cbd98db9bacd89886e1ca50692a0692baefffdeb92dd58"; }; features = builtins.concatLists [ [ "default" ] + [ "hardcoded-data" ] [ "std" ] ]; }); - "registry+https://github.com/rust-lang/crates.io-index".unicode-ident."1.0.5" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".unicode-ident."1.0.6" = overridableMkRustCrate (profileName: rec { name = "unicode-ident"; - version = "1.0.5"; + version = "1.0.6"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3"; }; + src = fetchCratesIo { inherit name version; sha256 = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".unicode-normalization."0.1.19" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".unicode-normalization."0.1.22" = overridableMkRustCrate (profileName: rec { name = "unicode-normalization"; - version = "0.1.19"; + version = "0.1.22"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9"; }; + src = fetchCratesIo { inherit name version; sha256 = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"; }; features = builtins.concatLists [ [ "default" ] [ "std" ] ]; dependencies = { - tinyvec = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tinyvec."1.5.1" { inherit profileName; }).out; + tinyvec = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".tinyvec."1.6.0" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".unicode-segmentation."1.9.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".unicode-segmentation."1.10.0" = overridableMkRustCrate (profileName: rec { name = "unicode-segmentation"; - version = "1.9.0"; + version = "1.10.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99"; }; + src = fetchCratesIo { inherit name version; sha256 = "0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5a"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".unicode-width."0.1.9" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".unicode-width."0.1.10" = overridableMkRustCrate (profileName: rec { name = "unicode-width"; - version = "0.1.9"; + version = "0.1.10"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"; }; + src = fetchCratesIo { inherit name version; sha256 = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"; }; features = builtins.concatLists [ [ "default" ] ]; }); - "registry+https://github.com/rust-lang/crates.io-index".unicode-xid."0.2.2" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".unicode-xid."0.2.4" = overridableMkRustCrate (profileName: rec { name = "unicode-xid"; - version = "0.2.2"; + version = "0.2.4"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"; }; + src = fetchCratesIo { inherit name version; sha256 = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"; }; features = builtins.concatLists [ [ "default" ] ]; @@ -5604,32 +5694,35 @@ in src = fetchCratesIo { inherit name version; sha256 = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".url."2.2.2" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".url."2.3.1" = overridableMkRustCrate (profileName: rec { name = "url"; - version = "2.2.2"; + version = "2.3.1"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c"; }; + src = fetchCratesIo { inherit name version; sha256 = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"; }; + features = builtins.concatLists [ + [ "default" ] + ]; dependencies = { - form_urlencoded = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".form_urlencoded."1.0.1" { inherit profileName; }).out; - idna = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".idna."0.2.3" { inherit profileName; }).out; - matches = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".matches."0.1.9" { inherit profileName; }).out; - percent_encoding = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".percent-encoding."2.1.0" { inherit profileName; }).out; + form_urlencoded = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".form_urlencoded."1.1.0" { inherit profileName; }).out; + idna = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".idna."0.3.0" { inherit profileName; }).out; + percent_encoding = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".percent-encoding."2.2.0" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".uuid."0.8.2" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".uuid."1.2.2" = overridableMkRustCrate (profileName: rec { name = "uuid"; - version = "0.8.2"; + version = "1.2.2"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7"; }; + src = fetchCratesIo { inherit name version; sha256 = "422ee0de9031b5b948b97a8fc04e3aa35230001a722ddd27943e0be31564ce4c"; }; features = builtins.concatLists [ [ "default" ] [ "getrandom" ] + [ "rng" ] [ "std" ] [ "v4" ] ]; dependencies = { - getrandom = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".getrandom."0.2.5" { inherit profileName; }).out; + getrandom = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".getrandom."0.2.8" { inherit profileName; }).out; }; }); @@ -5676,8 +5769,8 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0"; }; dependencies = { - log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.16" { inherit profileName; }).out; - try_lock = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".try-lock."0.2.3" { inherit profileName; }).out; + log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.17" { inherit profileName; }).out; + try_lock = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".try-lock."0.2.4" { inherit profileName; }).out; }; }); @@ -5703,11 +5796,11 @@ in ]; }); - "registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen."0.2.79" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen."0.2.83" = overridableMkRustCrate (profileName: rec { name = "wasm-bindgen"; - version = "0.2.79"; + version = "0.2.83"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06"; }; + src = fetchCratesIo { inherit name version; sha256 = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268"; }; features = builtins.concatLists [ [ "default" ] [ "spans" ] @@ -5715,85 +5808,85 @@ in ]; dependencies = { cfg_if = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cfg-if."1.0.0" { inherit profileName; }).out; - wasm_bindgen_macro = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen-macro."0.2.79" { profileName = "__noProfile"; }).out; + wasm_bindgen_macro = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen-macro."0.2.83" { profileName = "__noProfile"; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen-backend."0.2.79" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen-backend."0.2.83" = overridableMkRustCrate (profileName: rec { name = "wasm-bindgen-backend"; - version = "0.2.79"; + version = "0.2.83"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "8b21c0df030f5a177f3cba22e9bc4322695ec43e7257d865302900290bcdedca"; }; + src = fetchCratesIo { inherit name version; sha256 = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142"; }; features = builtins.concatLists [ [ "spans" ] ]; dependencies = { - bumpalo = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bumpalo."3.9.1" { inherit profileName; }).out; - lazy_static = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".lazy_static."1.4.0" { inherit profileName; }).out; - log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.16" { inherit profileName; }).out; - proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.46" { inherit profileName; }).out; - quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; }).out; - syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.94" { inherit profileName; }).out; - wasm_bindgen_shared = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen-shared."0.2.79" { inherit profileName; }).out; + bumpalo = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bumpalo."3.12.0" { inherit profileName; }).out; + log = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.17" { inherit profileName; }).out; + once_cell = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".once_cell."1.17.0" { inherit profileName; }).out; + proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; + quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; + syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.107" { inherit profileName; }).out; + wasm_bindgen_shared = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen-shared."0.2.83" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen-futures."0.4.29" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen-futures."0.4.33" = overridableMkRustCrate (profileName: rec { name = "wasm-bindgen-futures"; - version = "0.4.29"; + version = "0.4.33"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "2eb6ec270a31b1d3c7e266b999739109abce8b6c87e4b31fcfcd788b65267395"; }; + src = fetchCratesIo { inherit name version; sha256 = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d"; }; dependencies = { ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "cfg_if" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".cfg-if."1.0.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "js_sys" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".js-sys."0.3.56" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "wasm_bindgen" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen."0.2.79" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && builtins.elem "atomics" hostPlatformFeatures then "web_sys" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".web-sys."0.3.56" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "js_sys" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".js-sys."0.3.60" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest" then "wasm_bindgen" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen."0.2.83" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") && builtins.elem "atomics" hostPlatformFeatures then "web_sys" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".web-sys."0.3.60" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen-macro."0.2.79" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen-macro."0.2.83" = overridableMkRustCrate (profileName: rec { name = "wasm-bindgen-macro"; - version = "0.2.79"; + version = "0.2.83"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01"; }; + src = fetchCratesIo { inherit name version; sha256 = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810"; }; features = builtins.concatLists [ [ "spans" ] ]; dependencies = { - quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; }).out; - wasm_bindgen_macro_support = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen-macro-support."0.2.79" { inherit profileName; }).out; + quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; + wasm_bindgen_macro_support = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen-macro-support."0.2.83" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen-macro-support."0.2.79" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen-macro-support."0.2.83" = overridableMkRustCrate (profileName: rec { name = "wasm-bindgen-macro-support"; - version = "0.2.79"; + version = "0.2.83"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc"; }; + src = fetchCratesIo { inherit name version; sha256 = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c"; }; features = builtins.concatLists [ [ "spans" ] ]; dependencies = { - proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.46" { inherit profileName; }).out; - quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.21" { inherit profileName; }).out; - syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.94" { inherit profileName; }).out; - wasm_bindgen_backend = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen-backend."0.2.79" { inherit profileName; }).out; - wasm_bindgen_shared = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen-shared."0.2.79" { inherit profileName; }).out; + proc_macro2 = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.50" { inherit profileName; }).out; + quote = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.23" { inherit profileName; }).out; + syn = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.107" { inherit profileName; }).out; + wasm_bindgen_backend = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen-backend."0.2.83" { inherit profileName; }).out; + wasm_bindgen_shared = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen-shared."0.2.83" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen-shared."0.2.79" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen-shared."0.2.83" = overridableMkRustCrate (profileName: rec { name = "wasm-bindgen-shared"; - version = "0.2.79"; + version = "0.2.83"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2"; }; + src = fetchCratesIo { inherit name version; sha256 = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".web-sys."0.3.56" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".web-sys."0.3.60" = overridableMkRustCrate (profileName: rec { name = "web-sys"; - version = "0.3.56"; + version = "0.3.60"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "c060b319f29dd25724f09a2ba1418f142f539b2be99fbf4d2d5a8f7330afb8eb"; }; + src = fetchCratesIo { inherit name version; sha256 = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f"; }; features = builtins.concatLists [ (lib.optional (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") "Blob") (lib.optional (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") "BlobPropertyBag") @@ -5804,6 +5897,7 @@ in (lib.optional (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") "FormData") (lib.optional (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") "Headers") (lib.optional (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") "MessageEvent") + (lib.optional (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") "ReadableStream") (lib.optional (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") "Request") (lib.optional (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") "RequestCredentials") (lib.optional (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") "RequestInit") @@ -5815,8 +5909,8 @@ in (lib.optional (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") "WorkerGlobalScope") ]; dependencies = { - js_sys = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".js-sys."0.3.56" { inherit profileName; }).out; - wasm_bindgen = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen."0.2.79" { inherit profileName; }).out; + js_sys = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".js-sys."0.3.60" { inherit profileName; }).out; + wasm_bindgen = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".wasm-bindgen."0.2.83" { inherit profileName; }).out; }; }); @@ -5851,15 +5945,15 @@ in }; }); - "registry+https://github.com/rust-lang/crates.io-index".which."4.2.5" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".which."4.4.0" = overridableMkRustCrate (profileName: rec { name = "which"; - version = "4.2.5"; + version = "4.4.0"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "5c4fb54e6113b6a8772ee41c3404fb0301ac79604489467e0a9ce1f3e97c24ae"; }; + src = fetchCratesIo { inherit name version; sha256 = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269"; }; dependencies = { - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "either" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".either."1.6.1" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp") && hostPlatform.isWindows then "lazy_static" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".lazy_static."1.4.0" { inherit profileName; }).out; - ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "either" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".either."1.8.0" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" then "libc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; + ${ if (rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp") && hostPlatform.isWindows then "once_cell" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".once_cell."1.17.0" { inherit profileName; }).out; }; }); @@ -5869,49 +5963,38 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"; }; features = builtins.concatLists [ - [ "cfg" ] + [ "activation" ] + [ "combaseapi" ] [ "consoleapi" ] [ "errhandlingapi" ] - [ "evntrace" ] [ "fileapi" ] [ "handleapi" ] (lib.optional (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") "impl-debug") (lib.optional (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") "impl-default") - [ "in6addr" ] - [ "inaddr" ] - [ "ioapiset" ] [ "knownfolders" ] - [ "lmcons" ] - [ "minschannel" ] [ "minwinbase" ] [ "minwindef" ] - [ "mswsock" ] - [ "namedpipeapi" ] [ "ntdef" ] [ "ntsecapi" ] [ "ntstatus" ] [ "objbase" ] + [ "pdh" ] [ "processenv" ] [ "processthreadsapi" ] [ "profileapi" ] - [ "schannel" ] - [ "securitybaseapi" ] + [ "roapi" ] [ "shlobj" ] - [ "sspi" ] [ "std" ] [ "synchapi" ] [ "sysinfoapi" ] - [ "threadpoollegacyapiset" ] [ "timezoneapi" ] [ "winbase" ] [ "wincon" ] - [ "wincrypt" ] - [ "windef" ] [ "winerror" ] - [ "winioctl" ] [ "winnt" ] (lib.optional (rootFeatures' ? "garage/consul-discovery" || rootFeatures' ? "garage_rpc/consul-discovery" || rootFeatures' ? "garage_rpc/reqwest") "winreg") [ "winsock2" ] + [ "winstring" ] [ "ws2def" ] [ "ws2ipdef" ] [ "ws2tcpip" ] @@ -5947,62 +6030,95 @@ in src = fetchCratesIo { inherit name version; sha256 = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".windows-sys."0.32.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".windows-sys."0.42.0" = overridableMkRustCrate (profileName: rec { name = "windows-sys"; - version = "0.32.0"; - registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "3df6e476185f92a12c072be4a189a0210dcdcf512a1891d6dff9edb874deadc6"; }; - features = builtins.concatLists [ - (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "Win32") - (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "Win32_Foundation") - (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "Win32_System") - (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "Win32_System_LibraryLoader") - (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "Win32_System_SystemServices") - (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "Win32_System_WindowsProgramming") - (lib.optional (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "default") + version = "0.42.0"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"; }; + features = builtins.concatLists [ + [ "Win32" ] + [ "Win32_Foundation" ] + (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "Win32_NetworkManagement") + (lib.optional (rootFeatures' ? "garage_db/clap" || rootFeatures' ? "garage_db/cli" || rootFeatures' ? "k2v-client/clap" || rootFeatures' ? "k2v-client/cli") "Win32_NetworkManagement_IpHelper") + [ "Win32_Networking" ] + [ "Win32_Networking_WinSock" ] + [ "Win32_Security" ] + [ "Win32_Security_Authentication" ] + [ "Win32_Security_Authentication_Identity" ] + [ "Win32_Security_Authorization" ] + [ "Win32_Security_Credentials" ] + [ "Win32_Security_Cryptography" ] + [ "Win32_Storage" ] + [ "Win32_Storage_FileSystem" ] + [ "Win32_System" ] + [ "Win32_System_Console" ] + [ "Win32_System_IO" ] + (lib.optional (rootFeatures' ? "garage/default" || rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/metrics" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/opentelemetry-prometheus" || rootFeatures' ? "garage/prometheus" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_api/metrics" || rootFeatures' ? "garage_api/opentelemetry-prometheus" || rootFeatures' ? "garage_api/prometheus" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") "Win32_System_LibraryLoader") + [ "Win32_System_Memory" ] + [ "Win32_System_Pipes" ] + [ "Win32_System_SystemServices" ] + [ "Win32_System_Threading" ] + [ "Win32_System_WindowsProgramming" ] + [ "default" ] ]; dependencies = { - ${ if (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") && (hostPlatform.config == "aarch64-pc-windows-msvc" || hostPlatform.config == "aarch64-uwp-windows-msvc") then "windows_aarch64_msvc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".windows_aarch64_msvc."0.32.0" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") && (hostPlatform.config == "i686-pc-windows-gnu" || hostPlatform.config == "i686-uwp-windows-gnu") then "windows_i686_gnu" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".windows_i686_gnu."0.32.0" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") && (hostPlatform.config == "i686-pc-windows-msvc" || hostPlatform.config == "i686-uwp-windows-msvc") then "windows_i686_msvc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".windows_i686_msvc."0.32.0" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") && (hostPlatform.config == "x86_64-pc-windows-gnu" || hostPlatform.config == "x86_64-uwp-windows-gnu") then "windows_x86_64_gnu" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".windows_x86_64_gnu."0.32.0" { inherit profileName; }).out; - ${ if (rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage/opentelemetry-otlp" || rootFeatures' ? "garage/telemetry-otlp" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery") && (hostPlatform.config == "x86_64-pc-windows-msvc" || hostPlatform.config == "x86_64-uwp-windows-msvc") then "windows_x86_64_msvc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".windows_x86_64_msvc."0.32.0" { inherit profileName; }).out; + ${ if hostPlatform.config == "aarch64-pc-windows-gnullvm" then "windows_aarch64_gnullvm" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".windows_aarch64_gnullvm."0.42.1" { inherit profileName; }).out; + ${ if hostPlatform.config == "aarch64-pc-windows-msvc" || hostPlatform.config == "aarch64-uwp-windows-msvc" then "windows_aarch64_msvc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".windows_aarch64_msvc."0.42.1" { inherit profileName; }).out; + ${ if hostPlatform.config == "i686-pc-windows-gnu" || hostPlatform.config == "i686-uwp-windows-gnu" then "windows_i686_gnu" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".windows_i686_gnu."0.42.1" { inherit profileName; }).out; + ${ if hostPlatform.config == "i686-pc-windows-msvc" || hostPlatform.config == "i686-uwp-windows-msvc" then "windows_i686_msvc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".windows_i686_msvc."0.42.1" { inherit profileName; }).out; + ${ if hostPlatform.config == "x86_64-pc-windows-gnu" || hostPlatform.config == "x86_64-uwp-windows-gnu" then "windows_x86_64_gnu" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".windows_x86_64_gnu."0.42.1" { inherit profileName; }).out; + ${ if hostPlatform.config == "x86_64-pc-windows-gnullvm" then "windows_x86_64_gnullvm" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".windows_x86_64_gnullvm."0.42.1" { inherit profileName; }).out; + ${ if hostPlatform.config == "x86_64-pc-windows-msvc" || hostPlatform.config == "x86_64-uwp-windows-msvc" then "windows_x86_64_msvc" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".windows_x86_64_msvc."0.42.1" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".windows_aarch64_msvc."0.32.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".windows_aarch64_gnullvm."0.42.1" = overridableMkRustCrate (profileName: rec { + name = "windows_aarch64_gnullvm"; + version = "0.42.1"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608"; }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".windows_aarch64_msvc."0.42.1" = overridableMkRustCrate (profileName: rec { name = "windows_aarch64_msvc"; - version = "0.32.0"; + version = "0.42.1"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "d8e92753b1c443191654ec532f14c199742964a061be25d77d7a96f09db20bf5"; }; + src = fetchCratesIo { inherit name version; sha256 = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".windows_i686_gnu."0.32.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".windows_i686_gnu."0.42.1" = overridableMkRustCrate (profileName: rec { name = "windows_i686_gnu"; - version = "0.32.0"; + version = "0.42.1"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "6a711c68811799e017b6038e0922cb27a5e2f43a2ddb609fe0b6f3eeda9de615"; }; + src = fetchCratesIo { inherit name version; sha256 = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".windows_i686_msvc."0.32.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".windows_i686_msvc."0.42.1" = overridableMkRustCrate (profileName: rec { name = "windows_i686_msvc"; - version = "0.32.0"; + version = "0.42.1"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "146c11bb1a02615db74680b32a68e2d61f553cc24c4eb5b4ca10311740e44172"; }; + src = fetchCratesIo { inherit name version; sha256 = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".windows_x86_64_gnu."0.32.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".windows_x86_64_gnu."0.42.1" = overridableMkRustCrate (profileName: rec { name = "windows_x86_64_gnu"; - version = "0.32.0"; + version = "0.42.1"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "c912b12f7454c6620635bbff3450962753834be2a594819bd5e945af18ec64bc"; }; + src = fetchCratesIo { inherit name version; sha256 = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45"; }; }); - "registry+https://github.com/rust-lang/crates.io-index".windows_x86_64_msvc."0.32.0" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".windows_x86_64_gnullvm."0.42.1" = overridableMkRustCrate (profileName: rec { + name = "windows_x86_64_gnullvm"; + version = "0.42.1"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463"; }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".windows_x86_64_msvc."0.42.1" = overridableMkRustCrate (profileName: rec { name = "windows_x86_64_msvc"; - version = "0.32.0"; + version = "0.42.1"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "504a2476202769977a040c6364301a3f65d0cc9e3fb08600b2bda150a0488316"; }; + src = fetchCratesIo { inherit name version; sha256 = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd"; }; }); "registry+https://github.com/rust-lang/crates.io-index".winreg."0.10.1" = overridableMkRustCrate (profileName: rec { @@ -6033,11 +6149,11 @@ in ]; }); - "registry+https://github.com/rust-lang/crates.io-index".xxhash-rust."0.8.4" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".xxhash-rust."0.8.6" = overridableMkRustCrate (profileName: rec { name = "xxhash-rust"; - version = "0.8.4"; + version = "0.8.6"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "83a16b7b403377d61184bb601d8349a4ff2c4cec08a305d004f710b7eaafef24"; }; + src = fetchCratesIo { inherit name version; sha256 = "735a71d46c4d68d71d4b24d03fdc2b98e38cea81730595801db779c04fe80d70"; }; features = builtins.concatLists [ [ "xxh3" ] ]; @@ -6049,64 +6165,88 @@ in registry = "registry+https://github.com/rust-lang/crates.io-index"; src = fetchCratesIo { inherit name version; sha256 = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85"; }; dependencies = { - ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "linked_hash_map" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".linked-hash-map."0.5.4" { inherit profileName; }).out; + ${ if rootFeatures' ? "garage/kubernetes-discovery" || rootFeatures' ? "garage_rpc/kube" || rootFeatures' ? "garage_rpc/kubernetes-discovery" then "linked_hash_map" else null } = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".linked-hash-map."0.5.6" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".zeroize."1.5.4" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".zeroize."1.5.7" = overridableMkRustCrate (profileName: rec { name = "zeroize"; - version = "1.5.4"; + version = "1.5.7"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "7eb5728b8afd3f280a869ce1d4c554ffaed35f45c231fc41bfbd0381bef50317"; }; + src = fetchCratesIo { inherit name version; sha256 = "c394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149f"; }; features = builtins.concatLists [ [ "alloc" ] [ "default" ] ]; }); - "registry+https://github.com/rust-lang/crates.io-index".zstd."0.9.2+zstd.1.5.1" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".zstd."0.11.2+zstd.1.5.2" = overridableMkRustCrate (profileName: rec { name = "zstd"; - version = "0.9.2+zstd.1.5.1"; + version = "0.11.2+zstd.1.5.2"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "2390ea1bf6c038c39674f22d95f0564725fc06034a47129179810b2fc58caa54"; }; + src = fetchCratesIo { inherit name version; sha256 = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4"; }; + dependencies = { + zstd_safe = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".zstd-safe."5.0.2+zstd.1.5.2" { inherit profileName; }).out; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".zstd."0.12.2+zstd.1.5.2" = overridableMkRustCrate (profileName: rec { + name = "zstd"; + version = "0.12.2+zstd.1.5.2"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "e9262a83dc741c0b0ffec209881b45dbc232c21b02a2b9cb1adb93266e41303d"; }; features = builtins.concatLists [ (lib.optional (rootFeatures' ? "garage/system-libs" || rootFeatures' ? "garage_block/system-libs") "pkg-config") ]; dependencies = { - zstd_safe = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".zstd-safe."4.1.3+zstd.1.5.1" { inherit profileName; }).out; + zstd_safe = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".zstd-safe."6.0.2+zstd.1.5.2" { inherit profileName; }).out; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".zstd-safe."5.0.2+zstd.1.5.2" = overridableMkRustCrate (profileName: rec { + name = "zstd-safe"; + version = "5.0.2+zstd.1.5.2"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { inherit name version; sha256 = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db"; }; + features = builtins.concatLists [ + [ "std" ] + ]; + dependencies = { + libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; + zstd_sys = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".zstd-sys."2.0.5+zstd.1.5.2" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".zstd-safe."4.1.3+zstd.1.5.1" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".zstd-safe."6.0.2+zstd.1.5.2" = overridableMkRustCrate (profileName: rec { name = "zstd-safe"; - version = "4.1.3+zstd.1.5.1"; + version = "6.0.2+zstd.1.5.2"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "e99d81b99fb3c2c2c794e3fe56c305c63d5173a16a46b5850b07c935ffc7db79"; }; + src = fetchCratesIo { inherit name version; sha256 = "a6cf39f730b440bab43da8fb5faf5f254574462f73f260f85f7987f32154ff17"; }; features = builtins.concatLists [ (lib.optional (rootFeatures' ? "garage/system-libs" || rootFeatures' ? "garage_block/system-libs") "pkg-config") [ "std" ] ]; dependencies = { - libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; - zstd_sys = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".zstd-sys."1.6.2+zstd.1.5.1" { inherit profileName; }).out; + libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; + zstd_sys = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".zstd-sys."2.0.5+zstd.1.5.2" { inherit profileName; }).out; }; }); - "registry+https://github.com/rust-lang/crates.io-index".zstd-sys."1.6.2+zstd.1.5.1" = overridableMkRustCrate (profileName: rec { + "registry+https://github.com/rust-lang/crates.io-index".zstd-sys."2.0.5+zstd.1.5.2" = overridableMkRustCrate (profileName: rec { name = "zstd-sys"; - version = "1.6.2+zstd.1.5.1"; + version = "2.0.5+zstd.1.5.2"; registry = "registry+https://github.com/rust-lang/crates.io-index"; - src = fetchCratesIo { inherit name version; sha256 = "2daf2f248d9ea44454bfcb2516534e8b8ad2fc91bf818a1885495fc42bc8ac9f"; }; + src = fetchCratesIo { inherit name version; sha256 = "edc50ffce891ad571e9f9afe5039c4837bede781ac4bb13052ed7ae695518596"; }; features = builtins.concatLists [ (lib.optional (rootFeatures' ? "garage/system-libs" || rootFeatures' ? "garage_block/system-libs") "pkg-config") [ "std" ] ]; dependencies = { - libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.121" { inherit profileName; }).out; + libc = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.139" { inherit profileName; }).out; }; buildDependencies = { - cc = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".cc."1.0.73" { profileName = "__noProfile"; }).out; - ${ if rootFeatures' ? "garage/system-libs" || rootFeatures' ? "garage_block/system-libs" then "pkg_config" else null } = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".pkg-config."0.3.24" { profileName = "__noProfile"; }).out; + cc = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".cc."1.0.78" { profileName = "__noProfile"; }).out; + pkg_config = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".pkg-config."0.3.26" { profileName = "__noProfile"; }).out; }; }); @@ -4,7 +4,7 @@ all: clear; cargo build release: - nix-build --arg release true + nix-build --attr pkgs.amd64.release --no-build-output shell: nix-shell diff --git a/default.nix b/default.nix index 1791b3c6..ecdf6436 100644 --- a/default.nix +++ b/default.nix @@ -1,7 +1,4 @@ -{ - system ? builtins.currentSystem, - git_version ? null, -}: +{ system ? builtins.currentSystem, git_version ? null, }: with import ./nix/common.nix; @@ -13,22 +10,21 @@ let debug = (compile { inherit system target git_version pkgsSrc cargo2nixOverlay; release = false; - }).workspace.garage { - compileMode = "build"; - }; + }).workspace.garage { compileMode = "build"; }; release = (compile { inherit system target git_version pkgsSrc cargo2nixOverlay; release = true; - }).workspace.garage { - compileMode = "build"; - }; + }).workspace.garage { compileMode = "build"; }; }); - test = (rustPkgs: pkgs.symlinkJoin { - name ="garage-tests"; - paths = builtins.map (key: rustPkgs.workspace.${key} { compileMode = "test"; }) (builtins.attrNames rustPkgs.workspace); - }); + test = (rustPkgs: + pkgs.symlinkJoin { + name = "garage-tests"; + paths = + builtins.map (key: rustPkgs.workspace.${key} { compileMode = "test"; }) + (builtins.attrNames rustPkgs.workspace); + }); in { pkgs = { @@ -55,8 +51,6 @@ in { inherit system git_version pkgsSrc cargo2nixOverlay; target = "x86_64-unknown-linux-musl"; compiler = "clippy"; - }).workspace.garage { - compileMode = "build"; - }; + }).workspace.garage { compileMode = "build"; }; }; } diff --git a/doc/api/garage-admin-v0.yml b/doc/api/garage-admin-v0.yml index a841f8d9..51968894 100644 --- a/doc/api/garage-admin-v0.yml +++ b/doc/api/garage-admin-v0.yml @@ -678,10 +678,12 @@ paths: properties: maxSize: type: integer + format: int64 nullable: true example: 19029801 maxObjects: type: integer + format: int64 nullable: true example: null @@ -1158,9 +1160,11 @@ components: $ref: '#/components/schemas/BucketKeyInfo' objects: type: integer + format: int64 example: 14827 bytes: type: integer + format: int64 example: 13189855625 unfinishedUploads: type: integer @@ -1171,10 +1175,12 @@ components: maxSize: nullable: true type: integer + format: int64 example: null maxObjects: nullable: true type: integer + format: int64 example: null diff --git a/doc/book/connect/_index.md b/doc/book/connect/_index.md index ca44ac17..93a2b87e 100644 --- a/doc/book/connect/_index.md +++ b/doc/book/connect/_index.md @@ -10,11 +10,12 @@ Garage implements the Amazon S3 protocol, which makes it compatible with many ex In particular, you will find here instructions to connect it with: - - [Browsing tools](@/documentation/connect/cli.md) - [Applications](@/documentation/connect/apps/index.md) - - [Website hosting](@/documentation/connect/websites.md) - - [Software repositories](@/documentation/connect/repositories.md) + - [Browsing tools](@/documentation/connect/cli.md) - [FUSE](@/documentation/connect/fs.md) + - [Observability](@/documentation/connect/observability.md) + - [Software repositories](@/documentation/connect/repositories.md) + - [Website hosting](@/documentation/connect/websites.md) ### Generic instructions diff --git a/doc/book/connect/apps/index.md b/doc/book/connect/apps/index.md index 737351a0..4d556ff8 100644 --- a/doc/book/connect/apps/index.md +++ b/doc/book/connect/apps/index.md @@ -13,7 +13,7 @@ In this section, we cover the following web applications: | [Matrix](#matrix) | ✅ | Tested with `synapse-s3-storage-provider` | | [Pixelfed](#pixelfed) | ❓ | Not yet tested | | [Pleroma](#pleroma) | ❓ | Not yet tested | -| [Lemmy](#lemmy) | ❓ | Not yet tested | +| [Lemmy](#lemmy) | ✅ | Supported with pict-rs | | [Funkwhale](#funkwhale) | ❓ | Not yet tested | | [Misskey](#misskey) | ❓ | Not yet tested | | [Prismo](#prismo) | ❓ | Not yet tested | @@ -484,7 +484,68 @@ And add a new line. For example, to run it every 10 minutes: ## Lemmy -Lemmy uses pict-rs that [supports S3 backends](https://git.asonix.dog/asonix/pict-rs/commit/f9f4fc63d670f357c93f24147c2ee3e1278e2d97) +Lemmy uses pict-rs that [supports S3 backends](https://git.asonix.dog/asonix/pict-rs/commit/f9f4fc63d670f357c93f24147c2ee3e1278e2d97). +This feature requires `pict-rs >= 4.0.0`. + +### Creating your bucket + +This is the usual Garage setup: + +```bash +garage key new --name pictrs-key +garage bucket create pictrs-data +garage bucket allow pictrs-data --read --write --key pictrs-key +``` + +Note the Key ID and Secret Key. + +### Migrating your data + +If your pict-rs instance holds existing data, you first need to migrate to the S3 bucket. + +Stop pict-rs, then run the migration utility from local filesystem to the bucket: + +``` +pict-rs \ + filesystem -p /path/to/existing/files \ + object-store \ + -e my-garage-instance.mydomain.tld:3900 \ + -b pictrs-data \ + -r garage \ + -a GK... \ + -s abcdef0123456789... +``` + +This is pretty slow, so hold on while migrating. + +### Running pict-rs with an S3 backend + +Pict-rs supports both a configuration file and environment variables. + +Either set the following section in your `pict-rs.toml`: + +``` +[store] +type = 'object_storage' +endpoint = 'http://my-garage-instance.mydomain.tld:3900' +bucket_name = 'pictrs-data' +region = 'garage' +access_key = 'GK...' +secret_key = 'abcdef0123456789...' +``` + +... or set these environment variables: + + +``` +PICTRS__STORE__TYPE=object_storage +PICTRS__STORE__ENDPOINT=http:/my-garage-instance.mydomain.tld:3900 +PICTRS__STORE__BUCKET_NAME=pictrs-data +PICTRS__STORE__REGION=garage +PICTRS__STORE__ACCESS_KEY=GK... +PICTRS__STORE__SECRET_KEY=abcdef0123456789... +``` + ## Funkwhale diff --git a/doc/book/connect/observability.md b/doc/book/connect/observability.md new file mode 100644 index 00000000..c5037fa4 --- /dev/null +++ b/doc/book/connect/observability.md @@ -0,0 +1,57 @@ ++++ +title = "Observability" +weight = 25 ++++ + +An object store can be used as data storage location for metrics, and logs which +can then be leveraged for systems observability. + +## Metrics + +### Prometheus + +Prometheus itself has no object store capabilities, however two projects exist +which support storing metrics in an object store: + + - [Cortex](https://cortexmetrics.io/) + - [Thanos](https://thanos.io/) + +## System logs + +### Vector + +[Vector](https://vector.dev/) natively supports S3 as a +[data sink](https://vector.dev/docs/reference/configuration/sinks/aws_s3/) +(and [source](https://vector.dev/docs/reference/configuration/sources/aws_s3/)). + +This can be configured with Garage with the following: + +```bash +garage key new --name vector-system-logs +garage bucket create system-logs +garage bucket allow system-logs --read --write --key vector-system-logs +``` + +The `vector.toml` can then be configured as follows: + +```toml +[sources.journald] +type = "journald" +current_boot_only = true + +[sinks.out] +encoding.codec = "json" +type = "aws_s3" +inputs = [ "journald" ] +bucket = "system-logs" +key_prefix = "%F/" +compression = "none" +region = "garage" +endpoint = "https://my-garage-instance.mydomain.tld" +auth.access_key_id = "" +auth.secret_access_key = "" +``` + +This is an example configuration - please refer to the Vector documentation for +all configuration and transformation possibilities. Also note that Garage +performs its own compression, so this should be disabled in Vector. diff --git a/doc/book/cookbook/real-world.md b/doc/book/cookbook/real-world.md index 5423bbab..9be1ba44 100644 --- a/doc/book/cookbook/real-world.md +++ b/doc/book/cookbook/real-world.md @@ -19,8 +19,12 @@ To run a real-world deployment, make sure the following conditions are met: - You have at least three machines with sufficient storage space available. -- Each machine has a public IP address which is reachable by other machines. - Running behind a NAT is likely to be possible but hasn't been tested for the latest version (TODO). +- Each machine has a public IP address which is reachable by other machines. It + is highly recommended that you use IPv6 for this end-to-end connectivity. If + IPv6 is not available, then using a mesh VPN such as + [Nebula](https://github.com/slackhq/nebula) or + [Yggdrasil](https://yggdrasil-network.github.io/) are approaches to consider + in addition to building out your own VPN tunneling. - This guide will assume you are using Docker containers to deploy Garage on each node. Garage can also be run independently, for instance as a [Systemd service](@/documentation/cookbook/systemd.md). diff --git a/doc/logo/garage_hires_crop.png b/doc/logo/garage_hires_crop.png Binary files differnew file mode 100644 index 00000000..2fd0babc --- /dev/null +++ b/doc/logo/garage_hires_crop.png diff --git a/doc/talks/.envrc b/doc/talks/.envrc new file mode 100644 index 00000000..4a4726a5 --- /dev/null +++ b/doc/talks/.envrc @@ -0,0 +1 @@ +use_nix diff --git a/doc/talks/2023-01-18-tocatta/.gitignore b/doc/talks/2023-01-18-tocatta/.gitignore new file mode 100644 index 00000000..9f1f00e6 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/.gitignore @@ -0,0 +1,17 @@ +* + +!*.txt +!*.md + +!assets + +!.gitignore +!*.svg +!*.png +!*.jpg +!*.tex +!Makefile +!.gitignore +!assets/*.drawio.pdf + +!talk.pdf diff --git a/doc/talks/2023-01-18-tocatta/Makefile b/doc/talks/2023-01-18-tocatta/Makefile new file mode 100644 index 00000000..554f7b97 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/Makefile @@ -0,0 +1,34 @@ +ASSETS=assets/consistent_hashing_1.pdf \ + assets/consistent_hashing_2.pdf \ + assets/consistent_hashing_3.pdf \ + assets/consistent_hashing_4.pdf \ + assets/garage_tables.pdf \ + assets/consensus.pdf_tex \ + assets/lattice1.pdf_tex \ + assets/lattice2.pdf_tex \ + assets/lattice3.pdf_tex \ + assets/lattice4.pdf_tex \ + assets/lattice5.pdf_tex \ + assets/lattice6.pdf_tex \ + assets/lattice7.pdf_tex \ + assets/lattice8.pdf_tex \ + assets/latticeB_1.pdf_tex \ + assets/latticeB_2.pdf_tex \ + assets/latticeB_3.pdf_tex \ + assets/latticeB_4.pdf_tex \ + assets/latticeB_5.pdf_tex \ + assets/latticeB_6.pdf_tex \ + assets/latticeB_7.pdf_tex \ + assets/latticeB_8.pdf_tex \ + assets/latticeB_9.pdf_tex \ + assets/latticeB_10.pdf_tex \ + assets/deuxfleurs.pdf + +talk.pdf: talk.tex $(ASSETS) + pdflatex talk.tex + +assets/%.pdf: assets/%.svg + inkscape -D -z --file=$^ --export-pdf=$@ + +assets/%.pdf_tex: assets/%.svg + inkscape -D -z --file=$^ --export-pdf=$@ --export-latex diff --git a/doc/talks/2023-01-18-tocatta/abstract.md b/doc/talks/2023-01-18-tocatta/abstract.md new file mode 100644 index 00000000..b2658868 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/abstract.md @@ -0,0 +1,39 @@ +### (fr) Garage, un système de stockage de données géo-distribué léger et robuste + +Garage est un système de stockage de données léger, géo-distribué, qui +implémente le protocole de stockage S3 de Amazon. Garage est destiné +principalement à l'auto-hébergement sur du matériel courant d'occasion. À ce +titre, il doit tolérer un grand nombre de pannes: coupures de courant, coupures +de connexion Internet, pannes de machines, ... Il doit également être facile à +déployer et à maintenir, afin de pouvoir être facilement utilisé par des +amateurs ou des petites organisations. + +Cette présentation vous proposera un aperçu de Garage et du choix technique +principal qui rend un système comme Garage possible: le refus d'utiliser des +algorithmes de consensus, remplacés avantageusement par des méthodes à +cohérence faible. Notre modèle est fortement inspiré de la base de donnée +Dynamo (DeCandia et al, 2007), et fait usage des types de données CRDT (Shapiro +et al, 2011). Nous exploreront comment ces méthodes s'appliquent à la +construction de l'abstraction "stockage objet" dans un système distribué, et +quelles autres abstractions peuvent ou ne peuvent pas être construites dans ce +modèle. + +### (en) Garage, a lightweight and robust geo-distributed data storage system + +Garage is a lightweight geo-distributed data store that implements the Amazon +S3 object storage protocol. Garage is meant primarily for self-hosting at home +on second-hand commodity hardware, meaning it has to tolerate a wide variety of +failure scenarios such as power cuts, Internet disconnections and machine +crashes. It also has to be easy to deploy and maintain, so that hobbyists and +small organizations can use it without trouble. + +This talk will present Garage and the key technical choice that made Garage +possible: refusing to use consensus algorithms and using instead weak +consistency methods, with a model that is loosely based on that of the Dynamo +database (DeCandia et al, 2007) and that makes heavy use of conflict-free +replicated data types (Shapiro et al, 2011). We will explore how these methods +are suited to building the "object store" abstraction in a distributed system, +and what other abstractions are possible or impossible to build in this model. + + + diff --git a/doc/talks/2023-01-18-tocatta/assets/AGPLv3_Logo.png b/doc/talks/2023-01-18-tocatta/assets/AGPLv3_Logo.png Binary files differnew file mode 100644 index 00000000..445284a3 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/AGPLv3_Logo.png diff --git a/doc/talks/2023-01-18-tocatta/assets/aerogramme.png b/doc/talks/2023-01-18-tocatta/assets/aerogramme.png Binary files differnew file mode 100644 index 00000000..3aabe3ad --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/aerogramme.png diff --git a/doc/talks/2023-01-18-tocatta/assets/aerogramme.svg b/doc/talks/2023-01-18-tocatta/assets/aerogramme.svg new file mode 100644 index 00000000..0c1ee127 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/aerogramme.svg @@ -0,0 +1,1241 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="1280" + height="720" + viewBox="0 0 338.66667 190.5" + version="1.1" + id="svg5" + inkscape:export-filename="aerogramme.png" + inkscape:export-xdpi="96" + inkscape:export-ydpi="96" + sodipodi:docname="aerogramme.svg" + inkscape:version="1.2 (dc2aedaf03, 2022-05-15)" + xml:space="preserve" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:document-units="mm" + showgrid="false" + units="px" + inkscape:snap-global="false" + inkscape:zoom="0.54488787" + inkscape:cx="574.43011" + inkscape:cy="349.61321" + inkscape:window-width="1678" + inkscape:window-height="993" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" + inkscape:showpageshadow="2" + inkscape:deskcolor="#d1d1d1" /><defs + id="defs2"><marker + style="overflow:visible;" + id="Arrow1Mend" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true"><path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt;" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path12266" /></marker><marker + style="overflow:visible;" + id="Arrow1Lend" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"><path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt;" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path12260" /></marker><marker + style="overflow:visible" + id="Arrow1Mend-3" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true" + viewBox="0 0 8.886927 5.078244" + markerWidth="8.8869267" + markerHeight="5.0782442" + preserveAspectRatio="xMidYMid"><path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path12266-5" /></marker><style + id="style2">.cls-1{fill:#3b2100;}.cls-2{fill:#ffd952;}.cls-3{fill:#45c8ff;}</style><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5100" + id="linearGradient5094" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(266.85692,297.64826)" + x1="192.00021" + y1="140.29999" + x2="192" + y2="332.29999" /><linearGradient + inkscape:collect="always" + id="linearGradient5100"><stop + style="stop-color:#fbfcfc;stop-opacity:0.1" + offset="0" + id="stop5096" /><stop + style="stop-color:#fbfcfc;stop-opacity:0;" + offset="1" + id="stop5098" /></linearGradient><radialGradient + inkscape:collect="always" + xlink:href="#linearGradient5100" + id="radialGradient5715" + cx="2.5446666e-06" + cy="243.20909" + fx="2.5446666e-06" + fy="243.20909" + r="76.000107" + gradientTransform="matrix(2.526312,2.526312,-2.5263122,2.5263122,881.27923,-176.47384)" + gradientUnits="userSpaceOnUse" /><filter + inkscape:collect="always" + style="color-interpolation-filters:sRGB" + id="filter13488" + x="-0.14" + width="1.28" + y="-0.105" + height="1.21"><feGaussianBlur + inkscape:collect="always" + stdDeviation="1.4" + id="feGaussianBlur13490" /></filter><filter + inkscape:collect="always" + style="color-interpolation-filters:sRGB" + id="filter13338" + x="-0.056" + width="1.112" + y="-0.042" + height="1.084"><feGaussianBlur + inkscape:collect="always" + stdDeviation="0.56" + id="feGaussianBlur13340" /></filter><filter + inkscape:collect="always" + style="color-interpolation-filters:sRGB" + id="filter13052" + x="-0.063652175" + width="1.1273044" + y="-0.038526317" + height="1.0770526"><feGaussianBlur + inkscape:collect="always" + stdDeviation="2.44" + id="feGaussianBlur13054" /></filter><filter + inkscape:collect="always" + style="color-interpolation-filters:sRGB" + id="filter13165" + x="-0.063652175" + width="1.1273044" + y="-0.038526317" + height="1.0770526"><feGaussianBlur + inkscape:collect="always" + stdDeviation="2.44" + id="feGaussianBlur13167" /></filter><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient14074" + id="linearGradient14078" + gradientUnits="userSpaceOnUse" + x1="80" + y1="252.29999" + x2="80" + y2="280.29999" + gradientTransform="translate(266.85714,297.64826)" /><linearGradient + inkscape:collect="always" + id="linearGradient14074"><stop + style="stop-color:#4d6570;stop-opacity:1" + offset="0" + id="stop14070" /><stop + style="stop-color:#4d6570;stop-opacity:0.06" + offset="1" + id="stop14072" /></linearGradient><filter + inkscape:collect="always" + style="color-interpolation-filters:sRGB" + id="filter12606" + x="-0.033333331" + width="1.0666667" + y="-0.085714286" + height="1.1714286"><feGaussianBlur + inkscape:collect="always" + stdDeviation="2" + id="feGaussianBlur12608" /></filter><filter + inkscape:collect="always" + style="color-interpolation-filters:sRGB" + id="filter13315" + x="-0.054750001" + width="1.1095" + y="-0.042731701" + height="1.0854634"><feGaussianBlur + inkscape:collect="always" + stdDeviation="2.9199997" + id="feGaussianBlur13317" /></filter><filter + id="Adobe_OpacityMaskFilter" + filterUnits="userSpaceOnUse" + x="162.68" + y="18.355" + width="14.927" + height="6.629"> + <feColorMatrix + type="matrix" + values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0" + id="feColorMatrix10045" /> + </filter><marker + style="overflow:visible" + id="Arrow1Mend-3-6" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true" + viewBox="0 0 8.886927 5.078244" + markerWidth="8.8869267" + markerHeight="5.0782442" + preserveAspectRatio="xMidYMid"><path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path12266-5-2" /></marker><marker + style="overflow:visible" + id="Arrow1Mend-3-1" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true" + viewBox="0 0 8.886927 5.078244" + markerWidth="8.8869267" + markerHeight="5.0782442" + preserveAspectRatio="xMidYMid"><path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path12266-5-27" /></marker><marker + style="overflow:visible" + id="Arrow1Mend-3-1-6" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true" + viewBox="0 0 8.886927 5.078244" + markerWidth="8.8869267" + markerHeight="5.0782442" + preserveAspectRatio="xMidYMid"><path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path12266-5-27-2" /></marker><marker + style="overflow:visible" + id="Arrow1Mend-3-1-6-9" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true" + viewBox="0 0 8.886927 5.078244" + markerWidth="8.8869267" + markerHeight="5.0782442" + preserveAspectRatio="xMidYMid"><path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path12266-5-27-2-2" /></marker></defs><g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"><text + xml:space="preserve" + style="font-size:12.5157px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583" + x="269.40045" + y="46.856514" + id="text4115-3-7"><tspan + sodipodi:role="line" + style="font-size:12.5157px;stroke-width:0.264583" + x="269.40045" + y="46.856514" + id="tspan4117-6-5">K2V API</tspan></text><text + xml:space="preserve" + style="font-size:12.7px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583" + x="269.39954" + y="152.73567" + id="text4115-3-7-3"><tspan + sodipodi:role="line" + style="font-size:12.7px;stroke-width:0.264583" + x="269.39954" + y="152.73567" + id="tspan559">S3 API</tspan></text><text + xml:space="preserve" + style="font-size:12.7px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583" + x="147.04097" + y="116.71946" + id="text4115-3-7-3-3"><tspan + sodipodi:role="line" + style="font-size:12.7px;stroke-width:0.264583" + x="147.04097" + y="116.71946" + id="tspan559-5">Aerogramme</tspan></text><g + id="g329" + transform="matrix(0.31121703,0,0,0.31121703,268.86086,51.929088)" + style="stroke-width:0.850155"><g + id="g1663" + transform="matrix(1.7099534,0,0,1.7099534,-88.607712,-87.994557)" + style="stroke-width:0.850155"><path + d="m 138.33068,100.19817 a 8.327649,8.327649 0 0 1 -2.77589,-0.288688 l -34.78736,-9.388036 a 8.4442361,8.4442361 0 0 1 -2.620433,-1.238044 z" + id="path6" + style="stroke-width:0.471988" /><path + class="cls-1" + d="m 85.377935,159.27452 5.163143,-0.0333 h 0.06662 q 2.864711,0 2.864711,2.69816 v 8.69407 a 24.849705,24.849705 0 0 1 -8.649651,1.43235 q -4.730105,0 -7.128468,-3.21447 -2.398363,-3.21447 -2.398363,-8.76068 0,-5.55177 2.981299,-8.62745 a 9.7600046,9.7600046 0 0 1 7.29502,-3.08123 13.368653,13.368653 0 0 1 7.811335,2.43167 3.9250986,3.9250986 0 0 1 -0.682867,1.76547 4.7634152,4.7634152 0 0 1 -1.282458,1.33242 9.798867,9.798867 0 0 0 -5.679457,-1.96533 5.3574542,5.3574542 0 0 0 -4.480275,2.04861 q -1.598909,2.03749 -1.598909,6.41229 0,8.22771 6.062529,8.22771 a 16.910679,16.910679 0 0 0 3.697476,-0.43303 v -3.16451 q 0,-1.49898 0.06662,-2.22071 h -2.442777 a 2.2873276,2.2873276 0 0 1 -1.515632,-0.41638 1.6655298,1.6655298 0 0 1 -0.483004,-1.33242 5.7072154,5.7072154 0 0 1 0.333106,-1.79322 z" + id="path8" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.471988" /><path + class="cls-1" + d="m 111.07151,169.73404 a 4.3137222,4.3137222 0 0 1 -0.55518,1.18253 4.0305821,4.0305821 0 0 1 -0.84942,0.94935 3.7640973,3.7640973 0 0 1 -3.05902,-1.95422 6.7453957,6.7453957 0 0 1 -4.76342,2.13188 q -2.564913,0 -3.886233,-1.49898 a 5.1298318,5.1298318 0 0 1 -1.299113,-3.4643 q 0,-2.77588 1.815427,-4.21379 a 7.3338829,7.3338829 0 0 1 4.669039,-1.3935 q 1.53228,0 2.89802,0.13325 v -0.99932 q 0,-2.63154 -2.53161,-2.63154 -1.79877,0 -5.096518,1.19918 a 4.674587,4.674587 0 0 1 -1.110353,-2.96464 18.581761,18.581761 0 0 1 7.217291,-1.49898 5.8682167,5.8682167 0 0 1 4.0639,1.39905 q 1.56559,1.39904 1.56559,4.23044 v 6.79537 q -0.0111,1.83208 0.9216,2.59822 z m -8.36096,-0.83276 a 4.7134493,4.7134493 0 0 0 3.33106,-1.59891 v -2.94244 a 22.368065,22.368065 0 0 0 -2.53161,-0.13324 2.775883,2.775883 0 0 0 -2.06525,0.68842 2.3928111,2.3928111 0 0 0 -0.69953,1.76546 2.3539488,2.3539488 0 0 0 0.55518,1.66553 1.8431863,1.8431863 0 0 0 1.41015,0.55518 z" + id="path10" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.471988" /><path + class="cls-1" + d="m 113.76966,157.00939 a 3.986168,3.986168 0 0 1 0.55518,-1.21583 3.3310596,3.3310596 0 0 1 0.84942,-0.94935 4.1638245,4.1638245 0 0 1 3.51427,2.96464 q 1.33242,-2.96464 4.29707,-2.96464 a 10.215249,10.215249 0 0 1 1.93201,0.23317 7.4782288,7.4782288 0 0 1 -0.99932,3.88624 8.4497879,8.4497879 0 0 0 -1.49897,-0.19987 q -2.03195,0 -3.26444,2.16519 v 10.64829 a 11.575432,11.575432 0 0 1 -2.03195,0.16655 12.769062,12.769062 0 0 1 -2.09857,-0.16655 v -11.15905 q -0.0222,-2.40947 -1.2547,-3.40879 z" + id="path12" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.471988" /><path + class="cls-1" + d="m 140.38483,169.73404 a 4.3137222,4.3137222 0 0 1 -0.58293,1.18253 4.0305821,4.0305821 0 0 1 -0.84942,0.94935 3.7640973,3.7640973 0 0 1 -3.05348,-1.95422 6.7453957,6.7453957 0 0 1 -4.76341,2.13188 q -2.56492,0 -3.88624,-1.49898 a 5.1298318,5.1298318 0 0 1 -1.29911,-3.4643 q 0,-2.77588 1.81543,-4.21379 a 7.3338829,7.3338829 0 0 1 4.64682,-1.4157 q 1.53229,0 2.89803,0.13324 v -0.99932 q 0,-2.63153 -2.53161,-2.63153 -1.79877,0 -5.09652,1.19918 a 4.674587,4.674587 0 0 1 -1.11035,-2.96465 18.581761,18.581761 0 0 1 7.21729,-1.49897 5.8682167,5.8682167 0 0 1 4.0639,1.39904 q 1.56559,1.39905 1.56559,4.23045 v 6.81757 q 0.0333,1.83208 0.96601,2.59822 z m -8.37206,-0.83276 a 4.7134493,4.7134493 0 0 0 3.33106,-1.59891 v -2.94244 a 22.368065,22.368065 0 0 0 -2.53161,-0.13324 2.775883,2.775883 0 0 0 -2.06526,0.69952 2.3928111,2.3928111 0 0 0 -0.69952,1.76546 2.3539488,2.3539488 0 0 0 0.55518,1.66553 1.8431863,1.8431863 0 0 0 1.41015,0.54408 z" + id="path14" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.471988" /><path + class="cls-1" + d="m 144.48203,169.6008 q -1.49897,-2.29843 -1.49897,-6.34567 0,-4.04724 1.8987,-6.34567 a 5.740526,5.740526 0 0 1 4.56355,-2.29843 6.4400486,6.4400486 0 0 1 4.49693,1.66553 3.7696491,3.7696491 0 0 1 2.63154,-1.43235 3.1200925,3.1200925 0 0 1 0.88273,0.93269 3.8862362,3.8862362 0 0 1 0.55518,1.16587 q -0.9327,0.79946 -0.9327,2.86472 v 9.438 q 0,5.29638 -1.73215,7.49488 -1.73215,2.1985 -5.69611,2.22071 a 16.100121,16.100121 0 0 1 -5.9626,-1.11036 4.4802752,4.4802752 0 0 1 1.03263,-3.03126 10.892565,10.892565 0 0 0 4.48028,1.03263 q 2.18184,0 3.0146,-1.11035 a 4.9965894,4.9965894 0 0 0 0.83277,-3.06458 v -1.33242 a 6.4011862,6.4011862 0 0 1 -4.16383,1.56559 4.9188647,4.9188647 0 0 1 -4.40255,-2.30953 z m 8.56083,-2.69816 v -7.72806 a 4.2915151,4.2915151 0 0 0 -2.86471,-1.36573 2.4039147,2.4039147 0 0 0 -2.18185,1.43235 8.6885138,8.6885138 0 0 0 -0.7828,4.09721 q 0,2.66485 0.71618,3.93065 a 2.1318781,2.1318781 0 0 0 1.88205,1.2658 4.2304457,4.2304457 0 0 0 3.23113,-1.63222 z" + id="path16" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.471988" /><path + class="cls-1" + d="m 174.20619,164.67083 h -9.32697 a 5.6405943,5.6405943 0 0 0 0.88273,3.04792 q 0.7828,1.0826 2.74813,1.0826 a 10.120869,10.120869 0 0 0 4.36369,-1.16587 4.3803434,4.3803434 0 0 1 1.19918,2.5316 10.759323,10.759323 0 0 1 -6.41229,1.8987 q -3.74744,0 -5.37966,-2.43167 -1.63222,-2.43167 -1.63222,-6.2957 0,-3.88624 1.79877,-6.2957 a 6.0181143,6.0181143 0 0 1 5.14649,-2.43168 q 3.33106,0 5.14648,2.01529 a 7.3449864,7.3449864 0 0 1 1.79878,5.07987 13.04665,13.04665 0 0 1 -0.33311,2.96464 z m -6.42895,-7.06184 q -2.73146,0 -2.93133,4.13051 h 5.79605 v -0.39973 a 4.7245529,4.7245529 0 0 0 -0.69953,-2.69816 2.4316735,2.4316735 0 0 0 -2.14298,-1.03262 z" + id="path18" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.471988" /><path + id="path24-3-6" + style="fill:#ffd952;fill-opacity:1;stroke-width:0.471988" + d="m 124.80273,70.162462 a 11.0036,11.0036 0 0 0 -4.33203,0.935547 L 76.261719,90.656602 a 1.5989086,1.5989086 0 0 0 -0.837891,2.138672 0.77169547,0.77169547 0 0 0 0.06641,0.177735 l 7.09375,14.021481 h 6.15625 l -0.875,-4.88867 c -0.07217,-0.39418 -0.711263,-3.187532 -1.316406,-5.197264 l 20.691398,6.462894 c 0.27198,1.28839 0.63292,2.49204 1.0625,3.62304 h 33.54883 c 0.36964,-1.13128 0.66138,-2.33705 0.85938,-3.62304 l 20.64648,-6.445316 c -0.60514,2.009734 -1.23639,4.785506 -1.30859,5.179686 l -0.875,4.88867 h 6.15429 l 7.02735,-13.894528 0.0664,-0.126953 0.0684,-0.171875 a 0.10548355,0.10548355 0 0 0 0,-0.04492 1.4878733,1.4878733 0 0 0 0.0664,-0.515625 1.5822533,1.5822533 0 0 0 -0.99414,-1.583985 L 129.35352,71.098009 a 11.0036,11.0036 0 0 0 -4.55079,-0.935547 z" /><path + id="path24-3" + style="fill:#49c8fa;fill-opacity:1;stroke-width:0.471988" + d="M 124.80273,79.416133 A 11.0036,11.0036 0 0 0 120.4707,80.35168 L 76.261719,99.910272 a 1.5989086,1.5989086 0 0 0 -0.837891,2.136718 0.77169547,0.77169547 0 0 0 0.06641,0.17773 l 3.847657,7.60352 h 8.175781 c -0.257897,-1.08856 -0.591943,-2.42953 -0.964844,-3.66797 l 11.744141,3.66797 h 53.371087 l 11.69336,-3.65039 c -0.37193,1.23522 -0.70076,2.56719 -0.95703,3.65039 h 8.17383 l 3.78125,-7.47656 0.0664,-0.12696 0.0684,-0.17187 a 0.10548355,0.10548355 0 0 0 0,-0.0449 1.4878733,1.4878733 0 0 0 0.0664,-0.51563 1.5822533,1.5822533 0 0 0 -0.99414,-1.582028 L 129.35352,80.35168 a 11.0036,11.0036 0 0 0 -4.55079,-0.935547 z" /><path + class="cls-2" + d="m 174.55595,110.92974 a 1.4878733,1.4878733 0 0 1 -0.0666,0.51631 0.10548355,0.10548355 0 0 1 0,0.0444 l -0.0666,0.17211 v 0 l -0.0666,0.12769 -10.69826,21.15223 c -1.48787,2.93688 -4.22489,2.84806 -3.76409,-0.12214 l 2.15408,-12.02512 c 0.0722,-0.39418 0.70508,-3.17006 1.31022,-5.1798 l -20.64702,6.4456 c -3.24223,21.05785 -30.95109,21.40761 -35.47023,0 l -20.691432,-6.46226 c 0.605143,2.00974 1.243596,4.80228 1.315769,5.19646 l 2.154085,12.02512 c 0.460796,2.9702 -2.276224,3.05902 -3.764098,0.12214 L 75.49024,111.66257 a 0.77169547,0.77169547 0 0 1 -0.06662,-0.17766 1.5989086,1.5989086 0 0 1 0.838317,-2.13743 L 120.47065,89.788613 a 11.0036,11.0036 0 0 1 8.88282,0 l 44.20871,19.558867 a 1.5822533,1.5822533 0 0 1 0.99377,1.58226 z" + id="path24" + style="stroke-width:0.471988" /><path + class="cls-3" + d="m 139.0413,114.61611 19.11473,-7.69475 a 0.81055784,0.81055784 0 0 0 0,-1.50453 c -2.2207,-0.92714 -4.96328,-1.99308 -7.65033,-3.10899 -0.49411,-0.20541 -5.17425,3.15341 -5.60173,3.49762 l -8.23882,6.58439 c -1.99309,1.67108 -0.26649,3.28665 2.37615,2.22626 z" + id="path26" + style="stroke-width:0.471988" /><circle + class="cls-3" + cx="125.18409" + cy="122.13319" + r="9.9654207" + id="circle28" + style="stroke-width:0.471988" /><path + d="m 138.33068,100.19817 a 8.327649,8.327649 0 0 1 -2.77589,-0.288688 l -34.78736,-9.388036 a 8.4442361,8.4442361 0 0 1 -2.620433,-1.238044 z" + id="path6-0" + style="stroke-width:0.471988" /><path + class="cls-1" + d="m 85.377935,159.27452 5.163143,-0.0333 h 0.06662 q 2.864711,0 2.864711,2.69816 v 8.69407 a 24.849705,24.849705 0 0 1 -8.649651,1.43235 q -4.730105,0 -7.128468,-3.21447 -2.398363,-3.21447 -2.398363,-8.76068 0,-5.55177 2.981299,-8.62745 a 9.7600046,9.7600046 0 0 1 7.29502,-3.08123 13.368653,13.368653 0 0 1 7.811335,2.43167 3.9250986,3.9250986 0 0 1 -0.682867,1.76547 4.7634152,4.7634152 0 0 1 -1.282458,1.33242 9.798867,9.798867 0 0 0 -5.679457,-1.96533 5.3574542,5.3574542 0 0 0 -4.480275,2.04861 q -1.598909,2.03749 -1.598909,6.41229 0,8.22771 6.062529,8.22771 a 16.910679,16.910679 0 0 0 3.697476,-0.43303 v -3.16451 q 0,-1.49898 0.06662,-2.22071 h -2.442777 a 2.2873276,2.2873276 0 0 1 -1.515632,-0.41638 1.6655298,1.6655298 0 0 1 -0.483004,-1.33242 5.7072154,5.7072154 0 0 1 0.333106,-1.79322 z" + id="path8-6" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.471988" /><path + class="cls-1" + d="m 111.07151,169.73404 a 4.3137222,4.3137222 0 0 1 -0.55518,1.18253 4.0305821,4.0305821 0 0 1 -0.84942,0.94935 3.7640973,3.7640973 0 0 1 -3.05902,-1.95422 6.7453957,6.7453957 0 0 1 -4.76342,2.13188 q -2.564913,0 -3.886233,-1.49898 a 5.1298318,5.1298318 0 0 1 -1.299113,-3.4643 q 0,-2.77588 1.815427,-4.21379 a 7.3338829,7.3338829 0 0 1 4.669039,-1.3935 q 1.53228,0 2.89802,0.13325 v -0.99932 q 0,-2.63154 -2.53161,-2.63154 -1.79877,0 -5.096518,1.19918 a 4.674587,4.674587 0 0 1 -1.110353,-2.96464 18.581761,18.581761 0 0 1 7.217291,-1.49898 5.8682167,5.8682167 0 0 1 4.0639,1.39905 q 1.56559,1.39904 1.56559,4.23044 v 6.79537 q -0.0111,1.83208 0.9216,2.59822 z m -8.36096,-0.83276 a 4.7134493,4.7134493 0 0 0 3.33106,-1.59891 v -2.94244 a 22.368065,22.368065 0 0 0 -2.53161,-0.13324 2.775883,2.775883 0 0 0 -2.06525,0.68842 2.3928111,2.3928111 0 0 0 -0.69953,1.76546 2.3539488,2.3539488 0 0 0 0.55518,1.66553 1.8431863,1.8431863 0 0 0 1.41015,0.55518 z" + id="path10-2" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.471988" /><path + class="cls-1" + d="m 113.76966,157.00939 a 3.986168,3.986168 0 0 1 0.55518,-1.21583 3.3310596,3.3310596 0 0 1 0.84942,-0.94935 4.1638245,4.1638245 0 0 1 3.51427,2.96464 q 1.33242,-2.96464 4.29707,-2.96464 a 10.215249,10.215249 0 0 1 1.93201,0.23317 7.4782288,7.4782288 0 0 1 -0.99932,3.88624 8.4497879,8.4497879 0 0 0 -1.49897,-0.19987 q -2.03195,0 -3.26444,2.16519 v 10.64829 a 11.575432,11.575432 0 0 1 -2.03195,0.16655 12.769062,12.769062 0 0 1 -2.09857,-0.16655 v -11.15905 q -0.0222,-2.40947 -1.2547,-3.40879 z" + id="path12-6" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.471988" /><path + class="cls-1" + d="m 140.38483,169.73404 a 4.3137222,4.3137222 0 0 1 -0.58293,1.18253 4.0305821,4.0305821 0 0 1 -0.84942,0.94935 3.7640973,3.7640973 0 0 1 -3.05348,-1.95422 6.7453957,6.7453957 0 0 1 -4.76341,2.13188 q -2.56492,0 -3.88624,-1.49898 a 5.1298318,5.1298318 0 0 1 -1.29911,-3.4643 q 0,-2.77588 1.81543,-4.21379 a 7.3338829,7.3338829 0 0 1 4.64682,-1.4157 q 1.53229,0 2.89803,0.13324 v -0.99932 q 0,-2.63153 -2.53161,-2.63153 -1.79877,0 -5.09652,1.19918 a 4.674587,4.674587 0 0 1 -1.11035,-2.96465 18.581761,18.581761 0 0 1 7.21729,-1.49897 5.8682167,5.8682167 0 0 1 4.0639,1.39904 q 1.56559,1.39905 1.56559,4.23045 v 6.81757 q 0.0333,1.83208 0.96601,2.59822 z m -8.37206,-0.83276 a 4.7134493,4.7134493 0 0 0 3.33106,-1.59891 v -2.94244 a 22.368065,22.368065 0 0 0 -2.53161,-0.13324 2.775883,2.775883 0 0 0 -2.06526,0.69952 2.3928111,2.3928111 0 0 0 -0.69952,1.76546 2.3539488,2.3539488 0 0 0 0.55518,1.66553 1.8431863,1.8431863 0 0 0 1.41015,0.54408 z" + id="path14-1" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.471988" /><path + class="cls-1" + d="m 144.48203,169.6008 q -1.49897,-2.29843 -1.49897,-6.34567 0,-4.04724 1.8987,-6.34567 a 5.740526,5.740526 0 0 1 4.56355,-2.29843 6.4400486,6.4400486 0 0 1 4.49693,1.66553 3.7696491,3.7696491 0 0 1 2.63154,-1.43235 3.1200925,3.1200925 0 0 1 0.88273,0.93269 3.8862362,3.8862362 0 0 1 0.55518,1.16587 q -0.9327,0.79946 -0.9327,2.86472 v 9.438 q 0,5.29638 -1.73215,7.49488 -1.73215,2.1985 -5.69611,2.22071 a 16.100121,16.100121 0 0 1 -5.9626,-1.11036 4.4802752,4.4802752 0 0 1 1.03263,-3.03126 10.892565,10.892565 0 0 0 4.48028,1.03263 q 2.18184,0 3.0146,-1.11035 a 4.9965894,4.9965894 0 0 0 0.83277,-3.06458 v -1.33242 a 6.4011862,6.4011862 0 0 1 -4.16383,1.56559 4.9188647,4.9188647 0 0 1 -4.40255,-2.30953 z m 8.56083,-2.69816 v -7.72806 a 4.2915151,4.2915151 0 0 0 -2.86471,-1.36573 2.4039147,2.4039147 0 0 0 -2.18185,1.43235 8.6885138,8.6885138 0 0 0 -0.7828,4.09721 q 0,2.66485 0.71618,3.93065 a 2.1318781,2.1318781 0 0 0 1.88205,1.2658 4.2304457,4.2304457 0 0 0 3.23113,-1.63222 z" + id="path16-8" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.471988" /><path + class="cls-1" + d="m 174.20619,164.67083 h -9.32697 a 5.6405943,5.6405943 0 0 0 0.88273,3.04792 q 0.7828,1.0826 2.74813,1.0826 a 10.120869,10.120869 0 0 0 4.36369,-1.16587 4.3803434,4.3803434 0 0 1 1.19918,2.5316 10.759323,10.759323 0 0 1 -6.41229,1.8987 q -3.74744,0 -5.37966,-2.43167 -1.63222,-2.43167 -1.63222,-6.2957 0,-3.88624 1.79877,-6.2957 a 6.0181143,6.0181143 0 0 1 5.14649,-2.43168 q 3.33106,0 5.14648,2.01529 a 7.3449864,7.3449864 0 0 1 1.79878,5.07987 13.04665,13.04665 0 0 1 -0.33311,2.96464 z m -6.42895,-7.06184 q -2.73146,0 -2.93133,4.13051 h 5.79605 v -0.39973 a 4.7245529,4.7245529 0 0 0 -0.69953,-2.69816 2.4316735,2.4316735 0 0 0 -2.14298,-1.03262 z" + id="path18-7" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.471988" /><path + id="path24-3-6-9" + style="fill:#ff9329;fill-opacity:1;stroke-width:0.471988" + d="m 124.80273,70.162462 a 11.0036,11.0036 0 0 0 -4.33203,0.935547 L 76.261719,90.656602 a 1.5989086,1.5989086 0 0 0 -0.837891,2.138672 0.77169547,0.77169547 0 0 0 0.06641,0.177735 l 7.09375,14.021481 h 6.15625 l -0.875,-4.88867 c -0.07217,-0.39418 -0.711263,-3.187532 -1.316406,-5.197264 l 20.691398,6.462894 c 0.27198,1.28839 0.63292,2.49204 1.0625,3.62304 h 33.54883 c 0.36964,-1.13128 0.66138,-2.33705 0.85938,-3.62304 l 20.64648,-6.445316 c -0.60514,2.009734 -1.23639,4.785506 -1.30859,5.179686 l -0.875,4.88867 h 6.15429 l 7.02735,-13.894528 0.0664,-0.126953 0.0684,-0.171875 a 0.10548355,0.10548355 0 0 0 0,-0.04492 1.4878733,1.4878733 0 0 0 0.0664,-0.515625 1.5822533,1.5822533 0 0 0 -0.99414,-1.583985 L 129.35352,71.098009 a 11.0036,11.0036 0 0 0 -4.55079,-0.935547 z" /><path + id="path24-3-2" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.471988" + d="M 124.80273,79.416133 A 11.0036,11.0036 0 0 0 120.4707,80.35168 L 76.261719,99.910272 a 1.5989086,1.5989086 0 0 0 -0.837891,2.136718 0.77169547,0.77169547 0 0 0 0.06641,0.17773 l 3.847657,7.60352 h 8.175781 c -0.257897,-1.08856 -0.591943,-2.42953 -0.964844,-3.66797 l 11.744141,3.66797 h 53.371087 l 11.69336,-3.65039 c -0.37193,1.23522 -0.70076,2.56719 -0.95703,3.65039 h 8.17383 l 3.78125,-7.47656 0.0664,-0.12696 0.0684,-0.17187 a 0.10548355,0.10548355 0 0 0 0,-0.0449 1.4878733,1.4878733 0 0 0 0.0664,-0.51563 1.5822533,1.5822533 0 0 0 -0.99414,-1.582028 L 129.35352,80.35168 a 11.0036,11.0036 0 0 0 -4.55079,-0.935547 z" /><path + class="cls-2" + d="m 174.55595,110.92974 a 1.4878733,1.4878733 0 0 1 -0.0666,0.51631 0.10548355,0.10548355 0 0 1 0,0.0444 l -0.0666,0.17211 v 0 l -0.0666,0.12769 -10.69826,21.15223 c -1.48787,2.93688 -4.22489,2.84806 -3.76409,-0.12214 l 2.15408,-12.02512 c 0.0722,-0.39418 0.70508,-3.17006 1.31022,-5.1798 l -20.64702,6.4456 c -3.24223,21.05785 -30.95109,21.40761 -35.47023,0 l -20.691432,-6.46226 c 0.605143,2.00974 1.243596,4.80228 1.315769,5.19646 l 2.154085,12.02512 c 0.460796,2.9702 -2.276224,3.05902 -3.764098,0.12214 L 75.49024,111.66257 a 0.77169547,0.77169547 0 0 1 -0.06662,-0.17766 1.5989086,1.5989086 0 0 1 0.838317,-2.13743 L 120.47065,89.788613 a 11.0036,11.0036 0 0 1 8.88282,0 l 44.20871,19.558867 a 1.5822533,1.5822533 0 0 1 0.99377,1.58226 z" + id="path24-0" + style="fill:#ff9329;fill-opacity:1;stroke-width:0.471988" /><path + class="cls-3" + d="m 139.0413,114.61611 19.11473,-7.69475 a 0.81055784,0.81055784 0 0 0 0,-1.50453 c -2.2207,-0.92714 -4.96328,-1.99308 -7.65033,-3.10899 -0.49411,-0.20541 -5.17425,3.15341 -5.60173,3.49762 l -8.23882,6.58439 c -1.99309,1.67108 -0.26649,3.28665 2.37615,2.22626 z" + id="path26-2" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.471988" /><circle + class="cls-3" + cx="125.18409" + cy="122.13319" + r="9.9654207" + id="circle28-3" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.471988" /></g></g><path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1" + d="M 308.22048,53.699542 V 43.088993 h -11.45897" + id="path689" + sodipodi:nodetypes="ccc" /><path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1" + d="m 308.22048,127.19381 v 21.9817 h -15.37964" + id="path689-7" + sodipodi:nodetypes="ccc" /><g + inkscape:label="Layer 1" + id="layer1-5" + transform="matrix(0.14374001,0,0,0.15293639,-29.475642,13.625808)" + style="stroke-width:1.7845"><path + inkscape:connector-curvature="0" + id="path13319" + d="m 316.85714,449.94826 c -3.324,0 -6,2.67599 -6,6 v 8 c 0,3.324 2.676,6 6,6 h 14 v 16 h 8 v -16 h 2 c 3.324,0 6,-2.676 6,-6 v -8 c 0,-3.32401 -2.676,-6 -6,-6 z m 68.00001,0 c -3.324,0 -6,2.67599 -6,6 v 8 c 0,3.324 2.676,6 6,6 h 2 v 16 h 8 v -16 h 14 c 3.324,0 6,-2.676 6,-6 v -8 c 0,-3.32401 -2.676,-6 -6,-6 z m -86.00001,108 v 12 l 25.60742,38 c 2.06983,3.58859 5.93583,6 10.39258,6 h 56.00002 c 4.45674,0 8.32274,-2.41141 10.39257,-6 h 0.0117 l 25.59569,-38 v -12 z" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.2;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.607021;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;filter:url(#filter13315);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /><path + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.2;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.607021;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;filter:url(#filter13315);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="m 316.85714,445.94826 c -3.324,0 -6,2.67599 -6,6 v 8 c 0,3.324 2.676,6 6,6 h 14 v 16 h 8 v -16 h 2 c 3.324,0 6,-2.676 6,-6 v -8 c 0,-3.32401 -2.676,-6 -6,-6 z m 68.00001,0 c -3.324,0 -6,2.67599 -6,6 v 8 c 0,3.324 2.676,6 6,6 h 2 v 16 h 8 v -16 h 14 c 3.324,0 6,-2.676 6,-6 v -8 c 0,-3.32401 -2.676,-6 -6,-6 z m -86.00001,108 v 12 l 25.60742,38 c 2.06983,3.58859 5.93583,6 10.39258,6 h 56.00002 c 4.45674,0 8.32274,-2.41141 10.39257,-6 h 0.0117 l 25.59569,-38 v -12 z" + id="path13272-9" + inkscape:connector-curvature="0" /><path + sodipodi:nodetypes="cccssccccc" + inkscape:connector-curvature="0" + id="path13149" + d="m 290.85714,553.94826 8,12 25.60743,38 c 2.06982,3.58859 5.93583,6 10.39257,6 h 56.00001 c 4.45675,0 8.32275,-2.41141 10.39258,-6 h 0.0117 l 25.59572,-38 8,-12 z" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.2;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.607021;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;filter:url(#filter12606);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /><g + transform="translate(266.85714,297.64826)" + id="g13285" + style="stroke-width:1.7845"><path + inkscape:connector-curvature="0" + style="fill:#607d8b;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.670974px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 32,116 v 12 l 25.607422,38 c 2.069825,3.58859 5.935831,6 10.392578,6 h 56 c 4.45675,0 8.32275,-2.41141 10.39258,-6 h 0.0117 L 160,128 v -12 z" + transform="translate(0,140.3)" + id="path12541" /></g><rect + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#263238;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10.707;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="rect11626" + width="8" + height="28.000004" + x="330.85715" + y="453.94827" /><rect + y="453.94827" + x="386.85715" + height="28.000004" + width="8" + id="rect12099" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#263238;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10.707;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /><path + inkscape:connector-curvature="0" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#4d6570;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.607021;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="m 298.85714,564.94826 v 1 l 25.60743,38 c 2.06982,3.58859 5.93583,6 10.39257,6 h 56.00001 c 4.45675,0 8.32275,-2.41141 10.39258,-6 h 0.0117 l 25.59572,-38 v -1 l -25.5957,38 h -0.0117 c -2.06983,3.58859 -5.93583,6 -10.39258,6 h -56.00003 c -4.45674,0 -8.32275,-2.41141 -10.39257,-6 z" + id="path3138" /><rect + ry="11.044247" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#607d8b;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.607021;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="rect11624" + width="19.999992" + height="36" + x="445.94827" + y="-346.85715" + rx="10.380134" + transform="rotate(90)" /><rect + transform="rotate(90)" + rx="10.380134" + y="-414.85715" + x="445.94827" + height="36" + width="19.999992" + id="rect12097" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#607d8b;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.607021;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + ry="11.044247" /><path + inkscape:connector-curvature="0" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#4d6570;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.607021;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="m 310.85714,458.94826 v 1 c 0,3.324 2.676,6 6,6 h 24 c 3.324,0 6,-2.676 6,-6 v -1 c 0,3.324 -2.676,6 -6,6 h -24 c -3.324,0 -6,-2.676 -6,-6 z" + id="rect12496" /><path + inkscape:connector-curvature="0" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#4d6570;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.607021;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="m 378.85715,458.94826 v 1 c 0,3.324 2.676,6 6,6 h 24 c 3.324,0 6,-2.676 6,-6 v -1 c 0,3.324 -2.676,6 -6,6 h -24 c -3.324,0 -6,-2.676 -6,-6 z" + id="path12514" /><path + inkscape:connector-curvature="0" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#8097a2;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.607021;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="m 316.85714,445.94826 c -3.324,0 -6,2.676 -6,6 v 1 c 0,-3.324 2.676,-6 6,-6 h 24 c 3.324,0 6,2.676 6,6 v -1 c 0,-3.324 -2.676,-6 -6,-6 z" + id="path12516" /><path + inkscape:connector-curvature="0" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#8097a2;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.607021;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="m 384.85715,445.94826 c -3.324,0 -6,2.676 -6,6 v 1 c 0,-3.324 2.676,-6 6,-6 h 24 c 3.324,0 6,2.676 6,6 v -1 c 0,-3.324 -2.676,-6 -6,-6 z" + id="path12518" /><path + inkscape:connector-curvature="0" + id="path14047" + d="m 298.85715,553.94826 v 12 l 25.60742,38 c 2.06983,3.58859 5.93583,6 10.39258,6 h 56 c 4.45675,0 8.32275,-2.41141 10.39258,-6 h 0.0117 l 25.59572,-38 v -12 z" + style="fill:url(#linearGradient14078);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.670974px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /><g + transform="translate(266.85714,297.64826)" + id="g13270" + style="stroke-width:1.7845"><rect + ry="22.088493" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.2;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.607021;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;filter:url(#filter13052);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="rect13038" + width="92" + height="152" + x="180.3" + y="-172" + rx="20.760267" + transform="rotate(90)" /><rect + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.2;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.607021;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;filter:url(#filter13165);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="rect13151" + width="92" + height="152" + x="176.3" + y="-172" + rx="20.760267" + transform="rotate(90)" + ry="22.088493" /><rect + transform="rotate(90)" + rx="20.760267" + y="-172" + x="176.3" + height="152" + width="92" + id="rect11599" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#ff1744;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.607021;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + ry="22.088493" /><path + style="fill:none;fill-rule:evenodd;stroke:#fbe9e7;stroke-width:10.707;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 36,192.3 60,32 60,-32" + id="path11029-3" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccc" /><path + inkscape:connector-curvature="0" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#ff4569;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.607021;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="m 32,36 c -6.648001,0 -12,5.352 -12,12 v 1 c 0,-6.648 5.351999,-12 12,-12 h 128 c 6.648,0 12,5.352 12,12 v -1 c 0,-6.648 -5.352,-12 -12,-12 z" + transform="translate(0,140.3)" + id="rect12531" /><path + inkscape:connector-curvature="0" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#d81a3d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.607021;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="m 20,115 v 1 c 0,6.648 5.351999,12 12,12 h 128 c 6.648,0 12,-5.352 12,-12 v -1 c 0,6.648 -5.352,12 -12,12 H 32 c -6.648001,0 -12,-5.352 -12,-12 z" + transform="translate(0,140.3)" + id="path12537" /></g><g + transform="translate(266.85714,297.64826)" + id="g13464" + style="stroke-width:1.7845"><path + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.2;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:16.0606;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;filter:url(#filter13488);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="m 90,296.3 c -3.324,0 -6,2.676 -6,6 v 12 c 0,0.27298 0.02557,0.53962 0.06055,0.80273 2.55e-4,0.002 -2.57e-4,0.004 0,0.006 A 11.999994,11.999994 0 0 0 84,316.3 a 11.999994,11.999994 0 0 0 12,12 11.999994,11.999994 0 0 0 12,-12 11.999994,11.999994 0 0 0 -0.0664,-1.15234 C 107.9726,314.8702 108,314.58855 108,314.3 v -12 c 0,-3.324 -2.676,-6 -6,-6 z" + id="path13466" + inkscape:connector-curvature="0" /><path + inkscape:connector-curvature="0" + id="circle13321" + transform="translate(0,140.3)" + d="m 90,152 c -3.324,0 -6,2.676 -6,6 v 12 c 0,0.27298 0.02557,0.53962 0.06055,0.80273 2.55e-4,0.002 -2.57e-4,0.004 0,0.006 A 11.999994,11.999994 0 0 0 84,172 a 11.999994,11.999994 0 0 0 12,12 11.999994,11.999994 0 0 0 12,-12 11.999994,11.999994 0 0 0 -0.0664,-1.15234 C 107.9726,170.5702 108,170.28855 108,170 v -12 c 0,-3.324 -2.676,-6 -6,-6 z" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.2;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:16.0606;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;filter:url(#filter13338);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /><rect + ry="11.044246" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#263238;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.607021;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="rect11618" + width="24.000019" + height="23.999996" + x="292.29999" + y="-108" + rx="10.380132" + transform="rotate(90)" /><circle + r="11.999994" + cy="312.29999" + cx="96" + id="path11616" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#263238;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:16.0606;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /><path + inkscape:connector-curvature="0" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#37474f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.607021;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="m 90,152 c -3.324,0 -6,2.676 -6,6 v 1 c 0,-3.324 2.676,-6 6,-6 h 12 c 3.324,0 6,2.676 6,6 v -1 c 0,-3.324 -2.676,-6 -6,-6 z" + transform="translate(0,140.3)" + id="rect12574" /><path + inkscape:connector-curvature="0" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#1a252a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:16.0606;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="M 84.021484,171.42969 A 11.999994,11.999994 0 0 0 84,172 11.999994,11.999994 0 0 0 96,184 11.999994,11.999994 0 0 0 108,172 11.999994,11.999994 0 0 0 107.9805,171.58594 11.999994,11.999994 0 0 1 96,183 11.999994,11.999994 0 0 1 84.021484,171.42969 Z" + transform="translate(0,140.3)" + id="circle12577" /></g><path + style="fill:url(#radialGradient5715);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.670974px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 316.85692,445.94826 c -3.324,0 -6,2.676 -6,6 v 8 c 0,3.324 2.676,6 6,6 h 14 v 8 h -32 c -6.648,0 -12,5.352 -12,12 v 68 c 0,6.648 5.352,12 12,12 l 25.60743,38 c 2.06983,3.58859 5.93582,6 10.39257,6 h 16 a 11.999994,11.999994 0 0 0 12,12 11.999994,11.999994 0 0 0 11.99806,-12 h 16.00194 c 4.45675,0 8.32275,-2.41141 10.39258,-6 h 0.01 l 25.59765,-38 c 6.64709,-10e-4 12,-5.35265 12,-12 v -68 c 0,-6.648 -5.35395,-12 -12.00195,-12 h -31.99805 v -8 h 13.99805 c 3.324,0 6.00195,-2.676 6.00195,-6 v -8 c 0,-3.324 -2.67795,-6 -6.00195,-6 h -23.99804 c -3.324,0 -6,2.676 -6,6 v 8 c 0,3.324 2.676,6 6,6 h 2 v 8 h -48.00001 v -8 h 1.99805 c 3.324,0 6.00195,-2.676 6.00195,-6 v -8 c 0,-3.324 -2.67795,-6 -6.00195,-6 z" + id="path13540-7" + inkscape:connector-curvature="0" /><path + inkscape:connector-curvature="0" + id="path5092" + d="m 316.85692,445.94826 c -3.324,0 -6,2.676 -6,6 v 8 c 0,3.324 2.676,6 6,6 h 14 v 8 h -32 c -6.648,0 -12,5.352 -12,12 v 68 c 0,6.648 5.352,12 12,12 l 25.60743,38 c 2.06983,3.58859 5.93582,6 10.39257,6 h 16 a 11.999994,11.999994 0 0 0 12,12 11.999994,11.999994 0 0 0 11.99806,-12 h 16.00194 c 4.45675,0 8.32275,-2.41141 10.39258,-6 h 0.01 l 25.59765,-38 c 6.64709,-10e-4 12,-5.35265 12,-12 v -68 c 0,-6.648 -5.35395,-12 -12.00195,-12 h -31.99805 v -8 h 13.99805 c 3.324,0 6.00195,-2.676 6.00195,-6 v -8 c 0,-3.324 -2.67795,-6 -6.00195,-6 h -23.99804 c -3.324,0 -6,2.676 -6,6 v 8 c 0,3.324 2.676,6 6,6 h 2 v 8 h -48.00001 v -8 h 1.99805 c 3.324,0 6.00195,-2.676 6.00195,-6 v -8 c 0,-3.324 -2.67795,-6 -6.00195,-6 z" + style="fill:url(#linearGradient5094);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.670974px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /></g><image + width="30.360945" + height="28.817167" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHYAAABwCAYAAADL/oQMAAAW8npUWHRSYXcgcHJvZmlsZSB0eXBl IGV4aWYAAHjapZrndeS6loX/I4oJAd6EA7vWZDDhz7fBkq7cbfOe1K1yLBI4ZhuAZv/f/x7zP/xk F6qJqdTccrb8xBab7zyp9vnp96+z8f69PyW/PnOf3zfl9b71vBV4DM/L+vqCe3vfvZ/geeg8Sx9O VOfrg/H5gxZf569fTuSfh6AR6fl6nai9ThT884F7naA/07K51fJxCmM/j+ttJvX5b/Qn1s/D/va6 EL2VuE7wfgcXLH9DeA0g6L83ofMk85cXHOhC4nm476TwdjIC8lOc3n8aIzoaavzxoE9ZeX/2JVvn FTPzNVvRvw4JX4Kc3x9/fN+49OWD8H59//HKsb6e+c/v9+nyM6Iv0df/c1Y9d87MosdMqPNrUu9R u9M6a3AJXboahpZt4X/iFOX+Nn4rVT0phWWnHfxO15wnXcdFt1x3x+37ON1kiNFv4wtPvJ8+3Ddr KL75GZS/qF93fAktrFDJ67xpj8G/j8XdyzY7zb1a5crLcah3nMypFP721/ztF85RKzh3Y/lkmHF5 r2AzDGVOfzmMjLjzCmq6AX77/fqjvAYymBRltUgjsOM5xUjuHyQIN9GBAxOPTw+6sl4nIERcOjEY F8gAWaMrXHa2eF+cI5CVBHWG7kP0gwy4lPxikD7SOeSmel2arxR3D/XJ87bhfcCMTCT6q5CbFjrJ ijFRPyVWaqinkGJKKaeSamqp55BjTjnnkgWKvYQSTUkll1JqaaXXUGNNNddSa221N98CoJlabqXV 1lrvXLNz5s63Owf0PvwII45kRh5l1NFGn5TPjDPNPMuss82+/AoL/Fh5lVVXW327TSntuNPOu+y6 2+6HUjvBnHjSyaecetrp71l7pfXb719kzb2y5m+mdGB5zxrvlvJ2Cic4ScoZCfMmOjJelAIK2itn troYvTKnnNnm6YrkGWRSzpZTxshg3M6n495yZ/yTUWXuv8qbKfFT3vx/mjmj1P1l5r7n7aesLdHQ vBl7ulBBtYHu4xilmmerh3F2bDu3o9fZpWr05BCOkfZ0aQe9HrGUM1uYi5d70ih6dzONXG3Y2XZf +Wc/PprPb7Q+9/JlnLGYbRg5nuCZi4+JI+KsbrRWAeHZNt1ZxirxbJdOpUX6PnXk1RNBoiYWMbtZ GRTFcjnNllUfllQylmYLaNlPpiDqIab08yTZZo3dXdhnjBXp6GS3z6sxAjdHo3IAZ6GS4NWWvkXV ZC83osb0kyutN5A5mx7yOKudXNcYky8zF99Kzi42mqgPEhSZxg5pk/t4pgI2VuMVIN3rIkO5JkM6 t+JQJlPw6/Anltn7qU6/p6bSga9oHafhZaFejl0LPuBcjlFkiqc0Y2cncDmEnSrhbnM4XxT8hQCj a1AfJW4SPeiZJp5xqRc7I8dJd4U1ma2PJsCVPtQdTwlCwohGoizS9opCrmH7eUYoJ69Vy2KqUzFo Z51YG2Ohrcpa2bh2BiV/esp7aQY7lD7LnszcldH7XMV1hu+I5Mj5jDLHSJw7xEV585VwgDbTaCVA +MxCOSauvxSHfkoNh2tXSiqpHGvjwoR2TFfojljOINUzxT2ZZ98mpdim220RDa5PSZLb0svuy3qy 0hJ5WZR3X2PlMFpNmekvuCGgM2NGzx3KxzCZ44hN2oxTw3HMWUOiIBn4oEpBmamsVmULaGBujRzW lqJtbkswpmisW0UZ6kyspcXQSj4kdOURUl9zlrqOncc18AZA4DdMmoSZ1yVuo3SVIPP25OtjWYrM 7eJPPUzzPl18e3gwxTELiTF168PmKfVyIYIYcDxz9eqGOf/tSg6IOoDBdMOXOk1IcGnsLdiFQr75 OaOp9ig8qq3PFIhUoFIBNCTUsZ0+sntM64LaHRDaaZoKvMU6SgvOU/tlrpx8BSSrxFUhWVQCWEEc lxtgdLMXtum2xVCaInpcnwYVgLRbJB5dAPwwTLd2FbqBRwm1BqBkQVMFatYKYXhf0dy+P+1sBUyx GRXOO7gNl+nD00Jxuw4qI/NlMGBhdkDGuQRvtctYfH00ryeUC+VEFZUZzvaN8XTyQB+6ugXzao5d eQUzANoxEwoSov5Opxdn0vIXJFCZ9BPhJa9OHUZ/0eWlAV02L5AmLKqdLvWgwoSmQncEga4pi7I0 FLPt9HWdCM9W4hywCh4OgB6FsaTVLzrRDHvmTbah0HTwJAM4ARTCHvTgpmk3QVm8MSiwdaZQotD9 menOHJGxVdBIEMMvajeZ3xLQe/GSVFXvW+2+KpcSvrVrfize1FF05A3gOBvi2HBnmahYqhKdgUAP wc/cU/X78EEAszEZQO1K7aQN19oypm+wUUMbEprWQ8sbCFsbIpnOxwxDAMvUH4VOEnc5oOQwlCyz 7AybkfrdCqKMqovEDbGSKMlIfZAqhISfHclzowbVjPiRb42eLFHqwoDMg35pFBTxt55r5PFTu/70 aG5IwOnjQFGUU8ZkDF4xMQh0UDzRXR6OAttY3GQEqciBXhtKZAYVQa+V4VMsQXp6KgYOXSNb47tW AUKT9KYyHPIaSINzS6YWAHZai3Y/nAjtdsypZB4M94d4Ai1kil4l+/UkdAQF2XaCNjkTvClDxwgE mPOE1g+U83Sc+dh6B9Xz4N2v4K4MS+XfOlvu4qgH/k28UmlAk3wDVZd0wla/tjfqwDa6kIPRD1TF CmKkKLLjfIOpFapi4+OYD9oPjUmHbRizQJqTAULmNu8WEKIIjy3dOI8FCwbl70W85Dg7M0SsML3K k8jubhl7W9+TnMBb4DSG0x10HvtY2CYaYEHrvRjeT/GgxtP9xh8/Onr9uMEEKRcQxFjIADhwGqxa NoMuVOdG3Q5ACJ5F18kze4vovyoi+w4/ZLLe/4mi+Z6yX3b5W8qehCld8crZYZ50qWF+ShhpiR1b npZkD6f3KM8J9zJIAJiKZgaSg8usyhEH0OtuXaSMqA0YPLa6AIqCFERHVE0JWSruwI6Ls3nfA1YO lqPOs8G0DyQVPZuaC4Pz7Iz62w2cjHWjS3LfY38W1T25pUzmHrUiRQQGYvSgKlpct1YXvIDw8m39 bR6NnpTZwA7aXfWK6sb+DM0T3EfzZpR0gxZp22BrlUJCalpgABchTYJyKWA2BI783G7NIXmDKior bZzgjMvj4Oh2oASn0hC8SG5KJYuT+0moPHrFg3htASMZcEfyd77eUJE9EQDErz1OqQSz8TAZEHcL pzQyLzA0Ed3lo0Xmp+HJjDPt4TrSFj2IhSGEVEcKgvLYChS01isatasA/sUhGVmkLw7ptnUE5FC2 FnLCWdS2Y6aQ8ZQ1JpIauH5ZXmYpTUXU5Nyap+mwiRHohkRRqxPcxb04yg15D5tkt11FjI8Eok54 HJTYTIEjtPpBu5tHQkZ01sDUHGnxmmnzUtKivnPBj1A2HlQc4IzOuEUtS74RlQG6IADONH0HKpXw H6Tn9Q49hLypxEkfKAxp1HK2vWob540/VpfgrShavChIzMmOgeYRsi1nrrNKivIWxPEtvpgkhdhC TR4lt1XbtBNdTBWfDakXzLk/x0gjv73zhxT2idxn3ONm7Xik5s1btY9wgEOpFhgF2XJCAGHp5bLu 4d2KgwibclIkCXrAke91zN58UXlGAGX7VB+f79T7W/UV/MN+qq9hsKxzKj543mEGi3KFfDEIBrRd 3yUOfENodTDNPM8EQStIdmQoAE6+1/ZgPCkAU6AqgEcTDJwlRBGmcURfnSlKLB5ylG0eNAjoQq8E MCSiL+Hea4g1NgTNiQuh7hoBgdKlAo1LCXiiBgEi5IQvU/wtY1hlv2iS0fE31BS0A1QgeNVb6v7S k3wyStzijmglRHkS5iMtka/wIDRdqd6Jg6LviVoV0WleLjiMrlTBwN+hKRbYW0LowcBMTYI9nZUn JIG3Al4dQEMpIglvrs6JD/wXhAgwQOMU9OWldRcJyNkGr345IoLIFMVgUq5xylpuSSZw9110dks9 x1E3zeFyWDAW7EijDJ8NcSX9KA0M36UicM7ipekah3llBiiCwLvUPymLulSqwNVDNlzg6QGMXx8E btpb3men5NXhAVMNHdp9yfkPkNt8/4AA4Dgp3ATbtobadAfIIXN4YCRAQk76faUGLEiTOF3YQCEB EiG0ZdLzDRFZk454QgSs7Q98P9O3XPQbYWTN91S8JeLJw83CAYTgUczwz3mIWtKYy+I7MGE2NXni NUk2lIhgwmDTPt5jH5gg/DqhEyBzOxnRIsONCIZbfTSQTZFzWRFaYbBaiErVzTYbJLpyo/1hhU0d IwJog6kLxAWEX+V7OD+6mhERQGoa2EUvnZRRKiu+6YgBo2wtah6uqaGUztADDQPKLD8ItPy7FIf5 V0v47VH0OhtObkUSgj2le5iEUot0NtpRkbQg1n30EikkpOFEUC6I24L7WvLBywRRb4m4Pb8WXUhd 7JM37ESvpWAWLYq8T3PEqdVFRDT8XTv0C7jLf6EBoGrABtteK576Lsa09V7dGzaK5l2wSdAFmGPC nPLR4OwquCus6WhAmZz+4XTIFaLiRLAUGIF7ZJrZqAGJfODV4svDDNd1dy0AflluDNAZHt9iN+vw yD2RNnzEZEo12APUdQHEwJx0/dbZgUmtSPKZjEMxIHyzHOKi8xHs1HBVNaEQEpIKYReXcZSr/MqU YpwSDcdlRlw1QS0BXm6h6OmZLR0cZcW2VqkLJL6GEkgnGBQ4Xq5YVMHBETI3LMYsJRDv3GeWmgQO CVkGh1sDYw5Yngf2qYyEDR6tuFUNTE2/MPZfMOHCqNWlJQ4r8YROq1pa08opU5tI3gCwOaxsOxnn sYVJiaF2LWajJgrqdtEXTAE9O4Az2hjc0BIh1TQnhiZnOB6eMlZiFD4AI4d4fG1M0ADlJw2JTUDf lqFF73KqG3AcVIlS0coLHMGVA4A1SjdOi46epvazpjXxz7QrAcoXjGAYIkgZReeofhIh9tK6Ln7i VgUV00Dmbj511Keq5O0/q8tbldh1/xc1+WHlO9vR0LSMHB8M909wQmsDfKmA8yS9y2MCv6dW3ETG F08ArMooleq3dbloexBcRQIMwShVMJB+cdm7UKg1BiKKEWxZgrBeUyW7PZELqOqFocZ3AtrZk8A5 imcWmGzUATGCZwHSijxEJgV9Dd/DtEgZdok579X5KNV84De+PBcO1DXEovYvoTIPSQ+z3F55a9Gn Oo0e+Y1AkNMjY37lEOMKPj+xcSRYq8/YJO1KAL6llWMTdGrUsVDODLbcYcLbc3fUDPUYbY/ebb7U KNocySdMAu6r6nyKIHbUalSowxnkOmqDoKJkEcAUHsIXFhSyuWBhooFzdLVkRrD5yxGja/23FV+B N9yFR8QZtWA7EsNUaH8Wfy3kKUPZtRk0V/blWpWj1bHxEryio4+8bf7FQv9AqT/KGxqJAtm+Gq21 0nghUi8dv+co6D2J52HoV2jyZx7wGTjfBCbRvp7U5JS1XxC09tJsNOjN1Gr9Y7eIFtaGQBo6d7FL KCW8NRNYrOBtxabI+2iNjyq4wmr4I/fgwa3dMyZpTHdyEZ4IeDEuzGqCxhQMxs+fMu9KkUchjOHK XXLckqRXNmKr4WJqHC8KOe0tJdXQ7f5qd0RcClQ2/opC32FTvXhaXI/WQ/PQEq3QNzKRGFDjK27f 2iN1esLogiuwAVUzX+tH2f97j394pPBg/i2n5SsjDcrlyA3xIGYxcfYKrCEH7p5+1HJvwg1MZNFi wovq+5OFDvPzSsenhQ4aVxqL2UM+SPLjl48xp7bW0h4tId3xMX5ajKV3l4arxJ6DQ9WCLWh1WtQK CHhO2KnSEeFFFNeoUmQDsG122ANmI/3TAgqGRuS1Lh41kSVVuWA5OC9M+UYwpFlCHbWJ17RMl1eP GztSjtPK6G1gPEbGVj7gHX9n+JKkJ83j73ad9p2N9kgAsXqtQ9edCuT72Y3QoVUrMgD+GhOzBbgt Lb5qgRbooIze1N0xZMzNP9BrO7w2o+DPlJsbsphOC6mQCehg4tAWhlNco5Z9ZA1tvCZKnhnKpe4f 7t1be4uwXrAkYSOGk3gTFYc1o9dwbw4qsUCG8DHAgtBJQwMlcVqSefGbaFOOdF/BGkiLr2ezLGyf J4bDkOijZdatjeix8MAYXByhdgxk7NGSY0EHCD4pIvRE0f8DOlJQG0XSGsCzjL3tNNFTDQU1kNVW 7QRooT0Z9IYroI+tPaEapBFwglTbVtg/LMmav12T/b4kS6nBZ+bbxnRAyYANkYgCmtEVMEW31/Cu 5FGkHXh1It9v0DweAZNWndmB6EXZRvyro6lFjvl0pMnqrcJQbSMO0eYOJRUAb9RHDmFpvZuUWpkL B/inBvIBgtrjWbpN4MhMw2IwvEuIR0AZz9iB577JAe6RkSEFUAxIogjeo4v6YyG+AZCXiLlRcdod vUs1WAgQMUj2fG0PdYd5tQfav2mXnHzK/+EXxJy8fLqrdKT0/qHzclKkvVQthQkkHJyTAADzxijo 8yOO6QXZzPFNW2gF4X20kIKJusXYiRQvQMNcqewOJGS6CbDadJE2EnQKhCVmiF7Q0hFBylCm55Ko GugPFzmhok41PeAxsKKwMvo4bt2Kt08hi9AOHQ/+AfFkJsPzSCtJTcdRoCVMARhMiXu0FbxA93uN 1kJQzBPvDL9MlNwMjq7sWo7l7OQOTT+kIigjv6E2AP12x11AzPSwabC4R6rpxiVVrlQRZDacI9jM L9ZdJVimz7wABXCOh7Z9s+HTFrgzJvPPDtl/t0Fm/tkh+/Xubh8QwKFK+sAt7bPzdA7GOLrrBnVq HMyNOUwNnWGReFsF31FPKgG6G81OalpdfKW5CnFQOOveBtBEuHe9M81oYAhc9NZm2LHDaZ+gO0uX aCmDQSe+brdkhAC5Qttbq90DRd21YUYmoqjNaEu5+V7rf9Ee6g7zN+2RtGnf0GhYy26TgBxJeH1V NBirCGi6hQbArGvVXLeuMt0cKFndF5R80HIxigoF1Sh6wgS6gGSoHy0FRqSpQf4RL3rvsn7WzQ53 qbrgFo9uENxJpH4oQaIm2GWCAPFJyAsKe/d+sFnRFFSBB+5oGgkreJwRZTA/TMoWz0JfIWiRKdQq Ukrnj6Hmic9w1LqsNor8mD0oetoPR7S0TMklFTWkO9ZQSgH1Hekd3eKl2wVR8V7LLcSu5UdnwZKe ymZaH9eK/9MbGszvd/h+XfJvj+ZtSYrvEKVpqVZHqHJIeJ+IREXU6E6dRA6PFksBQb8RRW5TDQtB QT3J1CQcXFTVDFhS1hxP3nqkFbDY+qcxaadC95P5REfhOCZVTfIWkSb/MsLTAHpo9wXnj0inRQsV ybQDRlqGzdL4K9brcQvfRHwDmnMsemsHJZahI69MAXoQ3l4HvqTRJ2GEswIID2Vx72Cic24MrVYV gOACJYFxc6GzGd5UvnLTjrcLNQnitm4twlUjZBhdA6xRWAC/A4q7bpmC+8kXfabFFHptdFSOAHYU XcZH3e1FIeHUXE/0HrCD/wzSMbtmVIa2mhAYeHAiCkjFHtL0BjuGkkeX0Ee1TrDZh4p64JsTpFLd pQlNNfyTvMDmWkCKtLE2XFDnqnmmhjEo2hkJUH3SXXtYUiAQZF+MlIaCjdBq5VIGGHeSFQf23eq9 PSuQAS2sGVwRFhr6aqRqWHGadhUxULrdgLlCPH4MuZ6B4y+ipvksJ5bACYXiHecKHiUtrO+7J8m4 dBPHFta+ijkrAb8pazWS+X0nParp5zv8vtyB8PMBQTffafeoZ93dsrTQMqncW3ExSJDSDpTVyOmO iKq46zcPgw0tz4x1uoNPzimEd5QE+9SdX8uOaIfvVze/sWqCgGb+HyqjzFGMuijdAAABhWlDQ1BJ Q0MgcHJvZmlsZQAAeJx9kT1Iw0AcxV9TtSItDhYRcchQBcGCqIijVqEIFUqt0KqDyaVf0KQhSXFx FFwLDn4sVh1cnHV1cBUEwQ8QRycnRRcp8X9JoUWMB8f9eHfvcfcOEOplppod44CqWUYqHhMz2VUx 8Iou9COECEYlZupzyWQCnuPrHj6+3kV5lve5P0dIyZkM8InEs0w3LOIN4ulNS+e8TxxmRUkhPice M+iCxI9cl11+41xwWOCZYSOdmicOE4uFNpbbmBUNlXiKOKKoGuULGZcVzluc1XKVNe/JXxjMaSvL XKc5hDgWsYQkRMioooQyLERp1UgxkaL9mId/0PEnySWTqwRGjgVUoEJy/OB/8LtbMz854SYFY0Dn i21/DAOBXaBRs+3vY9tunAD+Z+BKa/krdWDmk/RaS4scAb3bwMV1S5P3gMsdYOBJlwzJkfw0hXwe eD+jb8oCfbdAz5rbW3Mfpw9AmrpK3AAHh8BIgbLXPd7d3d7bv2ea/f0AlftytT4drJ4AAA0aaVRY dFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENl aGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4 OnhtcHRrPSJYTVAgQ29yZSA0LjQuMC1FeGl2MiI+CiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6 Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogIDxyZGY6RGVzY3JpcHRp b24gcmRmOmFib3V0PSIiCiAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAv MS4wL21tLyIKICAgIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5 cGUvUmVzb3VyY2VFdmVudCMiCiAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1l bnRzLzEuMS8iCiAgICB4bWxuczpHSU1QPSJodHRwOi8vd3d3LmdpbXAub3JnL3htcC8iCiAgICB4 bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnhtcD0i aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgeG1wTU06RG9jdW1lbnRJRD0iZ2ltcDpk b2NpZDpnaW1wOmNiZjJlZTZmLThlZjItNGFjYi1hNzlkLTBkNWY4MTVlN2M1YyIKICAgeG1wTU06 SW5zdGFuY2VJRD0ieG1wLmlpZDoxM2U3NzE1Mi04M2E5LTQxNDktOTMwOC03Y2VlNmU3ZjM4ZWQi CiAgIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo4OGQ4YWI2OS02MDBmLTRjYWQt YjczZS0yZGIwMjI1NDUzZWMiCiAgIGRjOkZvcm1hdD0iaW1hZ2UvcG5nIgogICBHSU1QOkFQST0i Mi4wIgogICBHSU1QOlBsYXRmb3JtPSJMaW51eCIKICAgR0lNUDpUaW1lU3RhbXA9IjE2NTU5MDUw MTAzNjYxNTEiCiAgIEdJTVA6VmVyc2lvbj0iMi4xMC4zMCIKICAgdGlmZjpPcmllbnRhdGlvbj0i MSIKICAgeG1wOkNyZWF0b3JUb29sPSJHSU1QIDIuMTAiPgogICA8eG1wTU06SGlzdG9yeT4KICAg IDxyZGY6U2VxPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAg c3RFdnQ6Y2hhbmdlZD0iLyIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpkY2RiZTVm Ni1iY2E0LTQ2OWUtYWY5Ni03YzBmYzZjZjQ2MzYiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9 IkdpbXAgMi4xMCAoTGludXgpIgogICAgICBzdEV2dDp3aGVuPSIyMDIyLTA2LTIyVDE1OjM2OjUw KzAyOjAwIi8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9yeT4KICA8L3JkZjpEZXNj cmlwdGlvbj4KIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/Psh/3LgAAAAG YktHRAAAAAAAAPlDu38AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfmBhYNJDLHHIypAAAJ PklEQVR42u2dX08b2RnGH4+xsXFsxiYh7Xq1MYq6WWV3FUfK1q1EYCApaRUpQ7vWtr3pOp8g4RPY Ue+boPY69i0SUkHKtW2VK6gliDasmq0q3FW9TbxhASn8MVDcC2ZWhsVmxnNmfM7hPDdBBI898/P7 Pud9z5kzLnCoUqmkAIgDuAYgpv0sA4Db7UY4HIbH4znppUUA6wCeaz8vRaPRdRavgYsTkDEA4wCG tX9PlNfrRTgchiRJZg6/BGAWwEw0Gl0SYJ0BmgKgtoKpy+/3Q5Zlq29ZBjAJIEd7JLsYhCkDeAjg cy3NwiGox5UD8CgajZYFWOtQMwAe6H7ZQajUA3YxAlQBkDUaoQ5C1bUOYDIajWYEWONpN2vEQ4/L 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 " + id="image8180" + x="6.1239142" + y="133.71233" + style="stroke-width:1.3711" /><g + id="g10135" + transform="matrix(0.13518227,0,0,0.1370563,7.2998322,29.425797)" + style="stroke-width:1.94381"> + <g + id="g10109" + style="stroke-width:1.94381"> + <linearGradient + id="SVGID_1_" + gradientUnits="userSpaceOnUse" + x1="199.533" + y1="201.907" + x2="39.678699" + y2="42.0527"> + <stop + offset="0" + style="stop-color:#130036" + id="stop9943" /> + <stop + offset="0.2297" + style="stop-color:#18023B" + id="stop9945" /> + <stop + offset="0.5122" + style="stop-color:#26094A" + id="stop9947" /> + <stop + offset="0.8211" + style="stop-color:#3D1563" + id="stop9949" /> + <stop + offset="1" + style="stop-color:#4E1D75" + id="stop9951" /> + </linearGradient> + <path + class="st1" + d="M 188.887,35.492 C 174.386,26.02 155.841,22.954 145.606,21.883 134.652,20.738 125.138,20.94 116.77,22.168 c -0.709,-0.009 -1.414,-0.037 -2.127,-0.037 -0.544,0 -1.08,0.023 -1.627,0.029 0.225,-0.275 0.381,-0.445 0.381,-0.445 0,0 -0.44,0.069 -1.304,0.46 -2.717,0.044 -5.421,0.138 -8.085,0.32 3.711,-4.068 6.751,-6.2 6.751,-6.2 0,0 -3.608,0.528 -10.192,6.496 -3.132,0.288 -6.221,0.67 -9.258,1.145 6.918,-9.362 14.155,-13.304 14.155,-13.304 0,0 -8.772,-1.786 -22.507,12.016 -1.149,1.155 -2.215,2.356 -3.246,3.572 C 39.68,35.907 11.03,61.758 11.03,92.139 c 0,5.958 -1.829,12.511 0.143,19.054 -0.788,10.453 0.89,38.975 0.89,38.975 0,0 10.837,58.649 52.51,68.846 0.662,0.158 -8.707,-14.62 -12.851,-32.442 8.069,8.208 17.685,14.699 28.478,15.824 1.325,0.137 -6.165,-8.64 -12.725,-19.234 l 94.698,31.906 c 49.529,-21.274 43.763,-19.357 54.397,-30.875 23.428,-25.36 26.708,-39.75 20.806,-82.235 -3.993,-28.679 -25.16,-57.083 -48.489,-66.466 z" + id="path9954" + style="fill:url(#SVGID_1_);stroke-width:1.94381" /> + <polygon + class="st2" + points="201.939,95.591 22.687,62.276 8.546,142.68 16.387,166.974 172.911,219.015 " + id="polygon9956" + style="stroke-width:1.94381" /> + <g + id="g9960" + style="stroke-width:1.94381"> + <path + class="st3" + d="m 23.128,65.01 c 0.785,1.689 0.554,2.089 0.065,2.089 -0.22,0 -0.492,-0.081 -0.747,-0.161 -0.255,-0.081 -0.494,-0.161 -0.648,-0.161 -0.433,0 -0.189,0.639 2.263,3.72 3.468,4.406 54.399,81.293 57.182,81.293 0.015,0 0.028,-0.002 0.04,-0.006 23.71,-8.448 124.543,-43.058 124.543,-43.058 L 195.51,93.697 23.128,65.01" + id="path9958" + style="stroke-width:1.94381" /> + </g> + <path + class="st4" + d="m 24.607,63.121 c 0,0 0.76,3.932 4.281,8.284 3.5,4.392 50.51,75.571 52.869,74.944 30.795,-8.176 142.525,-51.674 142.525,-51.674 z" + id="path9962" + style="stroke-width:1.94381" /> + <polygon + class="st3" + points="19.094,171.178 168.976,221.012 167.321,217.161 18.568,167.703 " + id="polygon9964" + style="stroke-width:1.94381" /> + <linearGradient + id="SVGID_2_" + gradientUnits="userSpaceOnUse" + x1="10.2428" + y1="95.311302" + x2="57.703899" + y2="95.311302"> + <stop + offset="0" + style="stop-color:#3156A8" + id="stop9966" /> + <stop + offset="0.2474" + style="stop-color:#3351A4" + id="stop9968" /> + <stop + offset="0.5365" + style="stop-color:#3B4397" + id="stop9970" /> + <stop + offset="0.8453" + style="stop-color:#472C82" + id="stop9972" /> + <stop + offset="1" + style="stop-color:#4E1D75" + id="stop9974" /> + </linearGradient> + <path + class="st5" + d="m 57.704,59.795 c 0,0 -54.122,15.85 -29.288,71.033 0,0 -11.387,-10.426 -18.167,-23.757 C 9.944,106.474 21.55,65.242 21.55,65.242 Z" + id="path9977" + style="fill:url(#SVGID_2_);stroke-width:1.94381" /> + + <radialGradient + id="SVGID_3_" + cx="59.0732" + cy="113.9232" + r="85.246597" + gradientTransform="matrix(1,0,0,1.45,0,-51.2654)" + gradientUnits="userSpaceOnUse"> + <stop + offset="0.1654" + style="stop-color:#14CDDA" + id="stop9979" /> + <stop + offset="0.5478" + style="stop-color:#2061BD" + id="stop9981" /> + <stop + offset="0.6546" + style="stop-color:#2658AC" + id="stop9983" /> + <stop + offset="0.864" + style="stop-color:#373F81" + id="stop9985" /> + <stop + offset="1" + style="stop-color:#432D62" + id="stop9987" /> + </radialGradient> + <path + class="st6" + d="m 28.416,130.828 c -4.707,-0.081 -12.269,-3.964 -14.722,-8.665 -3.066,51.098 17.782,80.939 50.88,96.853 C 53.759,217.776 0,189.407 0,121.14 0,63.093 46.06,11.208 118.142,8.831 118.584,12.085 82.406,20.245 81.249,24.082 79.453,30.054 75.325,36.555 71.843,41.766 67.125,48.827 78.4,54.865 70.114,56.767 57.646,59.628 41.016,58.044 28.753,73.986 10.319,97.951 22.62,125.365 28.416,130.828 Z" + id="path9990" + style="fill:url(#SVGID_3_);stroke-width:1.94381" /> + <g + id="g10003" + style="stroke-width:1.94381"> + <linearGradient + id="SVGID_4_" + gradientUnits="userSpaceOnUse" + x1="44.5387" + y1="57.897499" + x2="191.515" + y2="57.897499"> + <stop + offset="0" + style="stop-color:#2061BD" + id="stop9992" /> + <stop + offset="0.1846" + style="stop-color:#2B51AC" + id="stop9994" /> + <stop + offset="0.6826" + style="stop-color:#442C84" + id="stop9996" /> + <stop + offset="0.9409" + style="stop-color:#4E1D75" + id="stop9998" /> + </linearGradient> + <path + class="st7" + d="M 137.048,10.699 C 90.366,7.117 66.341,25.796 50.918,47.516 c -5.617,7.906 -5.002,15.166 -3.068,23.937 0.831,3.744 1.671,5.538 0.659,9.355 -0.558,2.106 -0.465,4.072 -1.158,5.314 -0.959,1.717 -2.18,3.594 -2.589,6.677 -1.022,7.699 1.703,10.151 3.406,12.741 2.426,-2.409 7.165,-8.079 15.71,-11.466 8.545,-3.387 14.167,-8.477 24.876,-13.941 14.632,-7.463 31.782,3.859 64.3,-6.796 C 163.06,70.058 186.056,35.993 191.515,34.685 176.312,17.873 150.448,11.726 137.048,10.699 Z" + id="path10001" + style="fill:url(#SVGID_4_);stroke-width:1.94381" /> + </g> + <path + class="st8" + d="m 106.207,0.032 c 0,0 -8.335,4.026 -11.965,11.301 8.381,-4.225 13.246,-6.533 15.546,-6.808 0,0 -2.203,1.067 -4.935,6.87 4.83,-1.547 6.493,-2.522 7.819,-2.537 0,0 -0.385,0.61 -0.737,6.402 -7.417,-2.404 -21.693,0.397 -29.287,5.153 C 80.072,6.678 106.207,0.032 106.207,0.032 Z" + id="path10005" + style="stroke-width:1.94381" /> + <linearGradient + id="SVGID_5_" + gradientUnits="userSpaceOnUse" + x1="66.173599" + y1="23.205601" + x2="167.26421" + y2="111.0823"> + <stop + offset="0.0202" + style="stop-color:#48A8E0" + id="stop10007" /> + <stop + offset="0.3883" + style="stop-color:#2061BD" + id="stop10009" /> + <stop + offset="0.4968" + style="stop-color:#2B51AC" + id="stop10011" /> + <stop + offset="0.7892" + style="stop-color:#442C84" + id="stop10013" /> + <stop + offset="0.9409" + style="stop-color:#4E1D75" + id="stop10015" /> + </linearGradient> + <path + class="st9" + d="M 139.379,8.63 C 125.07,6.776 113.109,7.141 102.94,9.1 c 3.198,-3.065 6.898,-4.575 6.898,-4.575 -4.795,0.424 -10.781,3.554 -15.917,6.868 -2.588,0.826 -5.054,1.758 -7.39,2.799 1.43,-1.885 3.094,-3.899 4.72,-5.445 6.039,-5.743 15.006,-8.715 15.006,-8.715 -7.654,-0.562 -33.268,5.995 -48.681,37.213 -2.526,3.077 -4.883,6.235 -7.129,9.398 -5.798,8.164 -5.162,15.658 -3.162,24.715 0.852,3.867 1.009,10.04 0.168,14.029 -0.168,0.799 -2.363,2.863 -2.926,8.428 -0.602,5.905 1.505,8.804 3.582,11.203 C 55.489,94.226 62.77,92.087 62.77,92.087 73.1,87.855 77.4,83.335 88.458,77.694 c 15.108,-7.709 67.939,17.45 101.512,6.448 10.332,-3.384 -3.977,-47.359 1.663,-48.709 C 175.934,18.073 153.139,10.413 139.379,8.63 Z" + id="path10018" + style="fill:url(#SVGID_5_);stroke-width:1.94381" /> + <linearGradient + id="SVGID_6_" + gradientUnits="userSpaceOnUse" + x1="19.676201" + y1="337.41391" + x2="217.8353" + y2="43.630901"> + <stop + offset="0.3787" + style="stop-color:#3156A8" + id="stop10020" /> + <stop + offset="1" + style="stop-color:#4E1D75" + id="stop10022" /> + </linearGradient> + <path + class="st10" + d="M 244.176,103.288 C 235.9,60.051 196.08,20.716 164.059,18.536 149.848,17.568 154.212,24.855 145.32,27.63 107,39.589 106.414,46.571 106.414,46.571 c 81.252,3.819 82.484,84.064 60.724,104.366 6.123,-1.428 12.762,-8.914 18.859,-20.666 -0.732,4.931 -1.36,10.98 -2.274,17.729 -2.788,20.595 0.823,63.614 -58.356,92.405 0,0 32.372,-2.646 48.425,-20.717 -6.528,15.012 -24.441,23.121 -24.441,23.121 13.182,-1.928 47.81,-12.146 69.868,-39.732 24.966,-31.225 32.474,-60.519 24.957,-99.789 z" + id="path10025" + style="fill:url(#SVGID_6_);stroke-width:1.94381" /> + <linearGradient + id="SVGID_7_" + gradientUnits="userSpaceOnUse" + x1="96.745201" + y1="278.64581" + x2="206.3175" + y2="32.542301"> + <stop + offset="0" + style="stop-color:#29ABE2" + id="stop10027" /> + <stop + offset="0.7733" + style="stop-color:#385AA6" + id="stop10029" /> + <stop + offset="0.8575" + style="stop-color:#414293" + id="stop10031" /> + <stop + offset="1" + style="stop-color:#4E1D75" + id="stop10033" /> + </linearGradient> + <path + class="st11" + d="m 164.993,182.221 c 0,0 26.396,-7.38 34.903,-21.633 -1.032,16.619 -16.107,33.662 -16.107,33.662 0,0 22.038,-4.46 31.436,-19.968 -1.224,13.994 -18.191,32.907 -18.191,32.907 17.346,-3.113 60.93,-30.645 47.143,-103.901 -8.142,-43.262 -48.096,-82.572 -80.117,-84.752 -14.211,-0.968 -9.847,6.319 -18.739,9.094 -38.32,11.959 -38.906,18.941 -38.906,18.941 81.252,3.819 102.844,46.344 60.724,103.231 6.123,-1.429 8.578,-4.794 13.178,-10.301 -0.002,0 2.084,21.78 -15.324,42.72 z" + id="path10036" + style="fill:url(#SVGID_7_);stroke-width:1.94381" /> + <linearGradient + id="SVGID_8_" + gradientUnits="userSpaceOnUse" + x1="48.2686" + y1="92.033699" + x2="54.241402" + y2="95.4683"> + <stop + offset="0" + style="stop-color:#B0DCD6" + id="stop10038" /> + <stop + offset="1" + style="stop-color:#53ACE0" + id="stop10040" /> + </linearGradient> + <path + class="st12" + d="m 60.609,85.567 c 0,0 -4.719,3.301 -8.136,2.46 -4.045,-0.993 -4.73,-4.913 -4.73,-4.913 -0.089,0.803 -0.192,1.578 -0.341,2.273 -0.168,0.799 -2.363,2.863 -2.926,8.428 -0.602,5.905 1.615,9.325 3.692,11.724 7.381,-10.792 14.552,-13.452 14.552,-13.452 -2.809,-0.982 -2.111,-6.52 -2.111,-6.52 z" + id="path10043" + style="fill:url(#SVGID_8_);stroke-width:1.94381" /> + <defs + id="defs10048"> + <filter + id="filter10202" + filterUnits="userSpaceOnUse" + x="162.67999" + y="18.355" + width="14.927" + height="6.6290002"> + <feColorMatrix + type="matrix" + values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0" + id="feColorMatrix10200" /> + </filter> + </defs> + <mask + maskUnits="userSpaceOnUse" + x="162.68" + y="18.355" + width="14.927" + height="6.629" + id="SVGID_9_"> + <g + class="st13" + id="g10057"> + <radialGradient + id="SVGID_10_" + cx="154.384" + cy="67.998497" + r="51.967499" + gradientUnits="userSpaceOnUse"> + <stop + offset="0.868" + style="stop-color:#FFFFFF" + id="stop10050" /> + <stop + offset="1" + style="stop-color:#000000" + id="stop10052" /> + </radialGradient> + <rect + x="91.294998" + y="-7.2179999" + class="st14" + width="100.015" + height="93.338997" + id="rect10055" /> + </g> + </mask> + <g + class="st15" + mask="url(#SVGID_9_)" + id="g10075" + style="stroke-width:1.94381"> + <g + class="st16" + id="g10073" + style="stroke-width:1.94381"> + <g + class="st17" + id="g10071" + style="stroke-width:1.94381"> + <linearGradient + id="SVGID_11_" + gradientUnits="userSpaceOnUse" + x1="176.2139" + y1="23.0851" + x2="164.2403" + y2="20.555401"> + <stop + offset="0" + style="stop-color:#3092B9" + id="stop10060" /> + <stop + offset="0.2199" + style="stop-color:#258DB6" + id="stop10062" /> + <stop + offset="0.6564" + style="stop-color:#1685B1" + id="stop10064" /> + <stop + offset="1" + style="stop-color:#1082AF" + id="stop10066" /> + </linearGradient> + <path + class="st18" + d="m 163.513,18.434 c 1.106,-0.287 5.621,0.204 8.584,1.533 2.964,1.329 8.073,3.679 3.986,4.701 -4.088,1.022 -6.438,-0.613 -8.482,-2.351 -2.044,-1.738 -6.847,-3.168 -4.088,-3.883 z" + id="path10069" + style="fill:url(#SVGID_11_);stroke-width:1.94381" /> + </g> + </g> + </g> + <linearGradient + id="SVGID_12_" + gradientUnits="userSpaceOnUse" + x1="80.783798" + y1="38.0252" + x2="90.637001" + y2="77.544296"> + <stop + offset="0.0074" + style="stop-color:#1398D1;stop-opacity:0" + id="stop10077" /> + <stop + offset="0.2482" + style="stop-color:#1187C2;stop-opacity:0.6197" + id="stop10079" /> + <stop + offset="0.6422" + style="stop-color:#3F6499;stop-opacity:0.71" + id="stop10081" /> + <stop + offset="1" + style="stop-color:#2F4282;stop-opacity:0.5" + id="stop10083" /> + </linearGradient> + <path + class="st19" + d="m 61.051,84.921 c 0,0 25.888,-42.662 49.292,-54.175 2.173,-1.093 -32.405,9.191 -46.32,24.55 -8.271,9.129 -3.891,27.002 -2.972,29.625 z" + id="path10086" + style="fill:url(#SVGID_12_);stroke-width:1.94381" /> + <path + class="st20" + d="m 61.051,84.921 c 0.024,-0.015 0.05,-0.03 0.075,-0.045 C 67.82,80.74 79.292,78.358 82.99,70.861 97.227,41.992 110.344,30.746 110.344,30.746 86.939,42.259 61.051,84.921 61.051,84.921 Z" + id="path10088" + style="stroke-width:1.94381" /> + <path + class="st21" + d="m 63.512,77.118 c 0,0 -4.666,-7.159 2.053,-13.687 3.546,-3.44 8.919,-1.529 9.54,-0.91 2.644,2.622 0.982,8.156 -1.398,11.288 -1.345,1.764 -5.259,4.51 -10.195,3.309 z" + id="path10090" + style="stroke-width:1.94381" /> + + <linearGradient + id="SVGID_13_" + gradientUnits="userSpaceOnUse" + x1="48.7383" + y1="14.373" + x2="43.199299" + y2="11.3027" + gradientTransform="matrix(0.9994,0.0349,-0.0349,0.9994,24.5906,57.1202)"> + <stop + offset="0" + style="stop-color:#F9C21B" + id="stop10092" /> + <stop + offset="0.1479" + style="stop-color:#F3BA1B" + id="stop10094" /> + <stop + offset="0.3787" + style="stop-color:#E3A41B" + id="stop10096" /> + <stop + offset="0.6634" + style="stop-color:#C9801C" + id="stop10098" /> + <stop + offset="0.9884" + style="stop-color:#A44E1C" + id="stop10100" /> + <stop + offset="1" + style="stop-color:#A34C1C" + id="stop10102" /> + </linearGradient> + <path + class="st22" + d="m 66.187,76.674 c 0,0 -3.224,-4.949 1.422,-9.459 2.446,-2.376 6.161,-1.056 6.592,-0.63 1.826,1.812 0.676,5.637 -0.968,7.8 -0.929,1.223 -3.635,3.119 -7.046,2.289 z" + id="path10105" + style="fill:url(#SVGID_13_);stroke-width:1.94381" /> + <path + d="m 72.623,71.393 c -0.072,1.978 -1.746,3.522 -3.738,3.454 -1.996,-0.069 -3.558,-1.726 -3.487,-3.704 0.071,-1.977 1.744,-3.521 3.741,-3.453 1.992,0.069 3.553,1.727 3.484,3.703 z" + id="path10107" + style="stroke-width:1.94381" /> + </g> + <circle + class="st24" + cx="66.724998" + cy="70.287003" + r="1.136" + id="circle10111" + style="stroke-width:1.94381" /> + <linearGradient + id="SVGID_14_" + gradientUnits="userSpaceOnUse" + x1="206.2113" + y1="130.1391" + x2="169.42979" + y2="47.526402"> + <stop + offset="0" + style="stop-color:#409EC3" + id="stop10113" /> + <stop + offset="0.62" + style="stop-color:#2061BD" + id="stop10115" /> + </linearGradient> + <path + class="st23" + d="M 228.505,65.01 C 210.784,38.034 196.744,31.179 196.744,31.179 c 0,0 0.645,19.65 10.484,29.128 1.124,1.083 -11.774,-8.432 -11.774,-8.432 0,0 -2.758,9.076 3.562,19.51 -1.836,-2.439 -3.051,-3.363 -3.051,-3.363 0,0 -11.908,5.491 -15.423,13.109 -1.815,-3.426 -3.176,-5.444 -3.176,-5.444 0,0 -8.236,16.437 -7.201,35.495 1.684,30.988 -5.803,42.404 -5.803,42.404 0,0 20.057,-7.695 29.676,-32.468 3.974,10.533 -0.121,21.619 -0.121,21.619 0,0 16.206,-12.109 19.691,-34.18 3.863,6.23 2.727,18.664 2.727,18.664 0,0 10.344,-14.402 10.596,-30.086 4.794,3.343 5.235,16.399 5.235,16.399 0,0 15.336,-19.606 -3.661,-48.524 z" + id="path10118" + style="fill:url(#SVGID_14_);stroke-width:1.94381" /> + <linearGradient + id="SVGID_15_" + gradientUnits="userSpaceOnUse" + x1="176.7603" + y1="103.061" + x2="150.40691" + y2="21.9536"> + <stop + offset="0" + style="stop-color:#14B2DA" + id="stop10120" /> + <stop + offset="0.4028" + style="stop-color:#297CCC" + id="stop10122" /> + <stop + offset="0.5077" + style="stop-color:#256FC5" + id="stop10124" /> + <stop + offset="0.6492" + style="stop-color:#2164BF" + id="stop10126" /> + <stop + offset="0.8162" + style="stop-color:#2061BD" + id="stop10128" /> + <stop + offset="0.9835" + style="stop-color:#2061BD" + id="stop10130" /> + </linearGradient> + <path + class="st25" + d="m 211.282,46.158 c -4.631,-8.63 -12.803,-14.13 -19.986,-18.582 -17.909,-11.105 -29.427,-12.665 -29.427,-12.665 0,0 -16.528,3.074 -13.689,7.672 0.146,0.236 0.487,0.535 0.968,0.877 -14.498,-6.678 -22.722,8.677 -22.722,8.677 -8.284,-0.503 -18.371,3.575 -21.312,14.499 -0.305,1.134 3.711,0.496 5.777,0.945 12.079,2.626 23.45,8.32 28.675,11.134 12.154,6.548 19.365,17.451 23.528,25.629 5.037,9.894 7.094,27.304 7.094,27.304 0,0 13.253,-18.205 10.086,-27.552 5.249,3.26 6.285,14.891 6.285,14.891 0,0 8.835,-13.838 6.223,-25.891 6.815,4.153 7.042,12.601 7.042,12.601 0,0 6.939,-9.631 3.803,-25.427 6.858,5.453 8.293,12.517 8.293,12.517 0,0 5.606,-14.993 -0.638,-26.629 z" + id="path10133" + style="fill:url(#SVGID_15_);stroke-width:1.94381" /> +</g><image + width="45.539223" + height="26.901003" + preserveAspectRatio="none" + xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAYEBAUEBAYFBQUGBgYHCQ4JCQgICRINDQoOFRIWFhUS FBQXGiEcFxgfGRQUHScdHyIjJSUlFhwpLCgkKyEkJST/2wBDAQYGBgkICREJCREkGBQYJCQkJCQk JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCT/wAARCAI9A8oDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDP8c+K Nbg8W6iIdQlijMgwgVf7o9qyX8Va/IuF1WUv9F4/SrnjxVHi/VFwA6SAA9f4RXN7DEzuPmJHOOa+ shCKifNzleRqnxdr0ahf7Sm/2vlXr+VM/wCEv13eVOpz59lX/CskyZAOMsRyO9KpLL8oI47jmtHC PQiM3sjXHizxAXCf2nKU/wB1f8K734ffFu80yaPTNYuWktZHCpOQPkJPfpxyfyry8LsjO/qvWu++ G3w5m8QSw6pqcUiaejhlR1KmXDcjt6EZFYV4UuW8jajKfN7p7smpSzIkkVwWjcBlYY5B5FTC8nJ/ 17/kKrLBHDFHDEmyONQqr/dAHHNOAA78147V9j07tbk/2ydGJMzYAz0Fc94usb3VLF7i01Bre4t1 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 " + id="image11884" + x="123.94752" + y="77.886711" + style="stroke-width:5.63571" /><path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend-3)" + d="m 48.686201,95.267324 50.820238,0.392631" + id="path12300" /><path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend-3-6)" + d="M 48.686201,140.25119 99.506439,113.14441" + id="path12300-9" + sodipodi:nodetypes="cc" /><path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend-3-1)" + d="M 48.686201,52.965491 99.506439,76.696018" + id="path12300-0" + sodipodi:nodetypes="cc" /><path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend-3-1-6)" + d="M 192.19253,78.231345 234.18084,48.465927" + id="path12300-0-6" + sodipodi:nodetypes="cc" /><text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:7.76111px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="59.602123" + y="92.486649" + id="text12479"><tspan + sodipodi:role="line" + id="tspan12477" + style="font-size:7.76111px;stroke-width:0.264583px" + x="59.602123" + y="92.486649">IMAP</tspan></text><text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:7.76111px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="-8.8944416" + y="143.93439" + id="text12479-9" + transform="rotate(-29.79443)"><tspan + sodipodi:role="line" + id="tspan12477-3" + style="font-size:7.76111px;stroke-width:0.264583px" + x="-8.8944416" + y="143.93439">IMAP</tspan></text><text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:7.76111px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="85.542168" + y="17.383308" + id="text12479-6" + transform="rotate(30.05974)"><tspan + sodipodi:role="line" + id="tspan12477-0" + style="font-size:7.76111px;stroke-width:0.264583px" + x="85.542168" + y="17.383308">IMAP</tspan></text><path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend-3-1-6-9)" + d="m 191.24295,103.43423 42.93789,35.147" + id="path12300-0-6-0" + sodipodi:nodetypes="cc" /><text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="187.43295" + y="52.618786" + id="text15221"><tspan + sodipodi:role="line" + id="tspan15219" + style="font-size:8.46667px;stroke-width:0.264583px" + x="187.43295" + y="52.618786">Message</tspan><tspan + sodipodi:role="line" + style="font-size:8.46667px;stroke-width:0.264583px" + x="187.43295" + y="63.202122" + id="tspan15223">index</tspan></text><text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="242.57494" + y="110.62234" + id="text15221-2"><tspan + sodipodi:role="line" + id="tspan15219-3" + style="font-size:8.46667px;text-align:end;text-anchor:end;stroke-width:0.264583px" + x="242.57494" + y="110.62234">Message</tspan><tspan + sodipodi:role="line" + style="font-size:8.46667px;text-align:end;text-anchor:end;stroke-width:0.264583px" + x="242.57494" + y="121.20567" + id="tspan15223-7">bodies</tspan></text></g><style + type="text/css" + id="style9941"> + .st0{fill:#363959;} + .st1{fill:url(#SVGID_1_);} + .st2{fill:#FBFBFB;} + .st3{fill:#999999;} + .st4{fill:#F8F8F8;} + .st5{fill:url(#SVGID_2_);} + .st6{fill:url(#SVGID_3_);} + .st7{fill:url(#SVGID_4_);} + .st8{fill:#3F6499;} + .st9{fill:url(#SVGID_5_);} + .st10{fill:url(#SVGID_6_);} + .st11{fill:url(#SVGID_7_);} + .st12{fill:url(#SVGID_8_);} + .st13{filter:url(#Adobe_OpacityMaskFilter);} + .st14{fill:url(#SVGID_10_);} + .st15{mask:url(#SVGID_9_);} + .st16{opacity:0.6;} + .st17{opacity:0.2;} + .st18{fill:url(#SVGID_11_);} + .st19{fill:url(#SVGID_12_);} + .st20{opacity:0.1;fill:#F2F2F2;} + .st21{fill:#2F4282;} + .st22{fill:url(#SVGID_13_);} + .st23{fill:url(#SVGID_14_);} + .st24{fill:#FFFFFF;} + .st25{fill:url(#SVGID_15_);} + .st26{fill:url(#SVGID_16_);} + .st27{fill:url(#SVGID_17_);} + .st28{fill:url(#SVGID_18_);} + .st29{fill:url(#SVGID_19_);} + .st30{fill:url(#SVGID_20_);} + .st31{fill:url(#SVGID_21_);} + .st32{fill:url(#SVGID_22_);} + .st33{fill:url(#SVGID_23_);} + .st34{fill:url(#SVGID_24_);} + .st35{filter:url(#Adobe_OpacityMaskFilter_1_);} + .st36{fill:url(#SVGID_26_);} + .st37{mask:url(#SVGID_25_);} + .st38{fill:url(#SVGID_27_);} + .st39{fill:url(#SVGID_28_);} + .st40{fill:url(#SVGID_29_);} + .st41{fill:url(#SVGID_30_);} + .st42{fill:url(#SVGID_31_);} + .st43{fill:url(#SVGID_32_);} + .st44{fill:url(#SVGID_33_);} + .st45{fill:url(#SVGID_34_);} + .st46{fill:url(#SVGID_35_);} + .st47{fill:url(#SVGID_36_);} + .st48{fill:url(#SVGID_37_);} + .st49{fill:url(#SVGID_38_);} + .st50{fill:url(#SVGID_39_);} + .st51{fill:url(#SVGID_40_);} + .st52{filter:url(#Adobe_OpacityMaskFilter_2_);} + .st53{fill:url(#SVGID_42_);} + .st54{mask:url(#SVGID_41_);} + .st55{fill:url(#SVGID_43_);} + .st56{fill:url(#SVGID_44_);} + .st57{fill:url(#SVGID_45_);} + .st58{fill:url(#SVGID_46_);} + .st59{fill:url(#SVGID_47_);} + .st60{fill:url(#SVGID_48_);} +</style></svg> diff --git a/doc/talks/2023-01-18-tocatta/assets/aerogramme_components1.drawio.pdf b/doc/talks/2023-01-18-tocatta/assets/aerogramme_components1.drawio.pdf Binary files differnew file mode 100644 index 00000000..71a90f26 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/aerogramme_components1.drawio.pdf diff --git a/doc/talks/2023-01-18-tocatta/assets/aerogramme_components1.png b/doc/talks/2023-01-18-tocatta/assets/aerogramme_components1.png Binary files differnew file mode 100644 index 00000000..fb81b460 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/aerogramme_components1.png diff --git a/doc/talks/2023-01-18-tocatta/assets/aerogramme_components2.drawio.pdf b/doc/talks/2023-01-18-tocatta/assets/aerogramme_components2.drawio.pdf Binary files differnew file mode 100644 index 00000000..87e42eed --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/aerogramme_components2.drawio.pdf diff --git a/doc/talks/2023-01-18-tocatta/assets/aerogramme_components2.png b/doc/talks/2023-01-18-tocatta/assets/aerogramme_components2.png Binary files differnew file mode 100644 index 00000000..f9e2df14 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/aerogramme_components2.png diff --git a/doc/talks/2023-01-18-tocatta/assets/aerogramme_datatype.drawio.pdf b/doc/talks/2023-01-18-tocatta/assets/aerogramme_datatype.drawio.pdf Binary files differnew file mode 100644 index 00000000..0606e059 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/aerogramme_datatype.drawio.pdf diff --git a/doc/talks/2023-01-18-tocatta/assets/aerogramme_datatype.png b/doc/talks/2023-01-18-tocatta/assets/aerogramme_datatype.png Binary files differnew file mode 100644 index 00000000..c3b015a1 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/aerogramme_datatype.png diff --git a/doc/talks/2023-01-18-tocatta/assets/aerogramme_keys.drawio.pdf b/doc/talks/2023-01-18-tocatta/assets/aerogramme_keys.drawio.pdf Binary files differnew file mode 100644 index 00000000..8fea81c7 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/aerogramme_keys.drawio.pdf diff --git a/doc/talks/2023-01-18-tocatta/assets/aerogramme_keys.png b/doc/talks/2023-01-18-tocatta/assets/aerogramme_keys.png Binary files differnew file mode 100644 index 00000000..ed2077d9 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/aerogramme_keys.png diff --git a/doc/talks/2023-01-18-tocatta/assets/alex.jpg b/doc/talks/2023-01-18-tocatta/assets/alex.jpg Binary files differnew file mode 100644 index 00000000..eac0f0a9 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/alex.jpg diff --git a/doc/talks/2023-01-18-tocatta/assets/atuin.jpg b/doc/talks/2023-01-18-tocatta/assets/atuin.jpg Binary files differnew file mode 100644 index 00000000..f2fbd61d --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/atuin.jpg diff --git a/doc/talks/2023-01-18-tocatta/assets/compatibility.png b/doc/talks/2023-01-18-tocatta/assets/compatibility.png Binary files differnew file mode 100644 index 00000000..ce364a9b --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/compatibility.png diff --git a/doc/talks/2023-01-18-tocatta/assets/consensus.svg b/doc/talks/2023-01-18-tocatta/assets/consensus.svg new file mode 100644 index 00000000..8321e383 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/consensus.svg @@ -0,0 +1,137 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="800" + height="300" + viewBox="0 0 211.66666 79.374999" + version="1.1" + id="svg5" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + sodipodi:docname="consensus.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="1.4734708" + inkscape:cx="310.49139" + inkscape:cy="179.1688" + inkscape:window-width="1920" + inkscape:window-height="999" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" /> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="Arrow2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L" /> + </marker> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g1218" + transform="translate(-8.9161476,-12.502301)"> + <circle + style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-dasharray:none;stroke-opacity:1" + id="path111" + cx="38.904896" + cy="37.936272" + r="13.474442" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="38.879501" + y="40.908073" + id="text1105"><tspan + sodipodi:role="line" + id="tspan1103" + style="stroke-width:0.264583;fill:#000000" + x="38.879501" + y="40.908073">$\bot$</tspan></text> + </g> + <g + id="g1218-3" + transform="translate(127.41938,-12.502301)"> + <circle + style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-dasharray:none;stroke-opacity:1" + id="path111-5" + cx="38.904896" + cy="37.936272" + r="13.474442" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="38.879501" + y="40.908073" + id="text1105-6"><tspan + sodipodi:role="line" + id="tspan1103-2" + style="stroke-width:0.264583;fill:#000000" + x="38.879501" + y="40.908073">$x$</tspan></text> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2)" + d="M 44.289635,25.433971 H 145.90576" + id="path1414" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="92.729836" + y="21.781803" + id="text2092"><tspan + sodipodi:role="line" + id="tspan2090" + style="stroke-width:0.264583;fill:#000000" + x="92.729836" + y="21.781803">$propose(x) / x$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="166.29887" + y="69.89299" + id="text2092-9"><tspan + sodipodi:role="line" + id="tspan2090-1" + style="stroke-width:0.264583;fill:#000000" + x="166.29887" + y="69.89299">$propose(y) / x$</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2)" + d="m 155.82329,35.899857 c -8.35129,12.319651 0.54055,24.640898 11.72797,24.072085 8.65403,-0.440005 18.59818,-11.705963 11.8146,-20.570891" + id="path2150" + sodipodi:nodetypes="csc" /> + </g> +</svg> diff --git a/doc/talks/2023-01-18-tocatta/assets/consistent_hashing_1.svg b/doc/talks/2023-01-18-tocatta/assets/consistent_hashing_1.svg new file mode 100644 index 00000000..f8d24fd8 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/consistent_hashing_1.svg @@ -0,0 +1,301 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="648" + height="480" + viewBox="0 0 171.45 127" + version="1.1" + id="svg2147" + inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)" + sodipodi:docname="consistent_hashing_1.svg"> + <defs + id="defs2141"> + <marker + style="overflow:visible;" + id="marker3465" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path3463" /> + </marker> + <marker + style="overflow:visible;" + id="marker3455" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path3453" /> + </marker> + <marker + style="overflow:visible;" + id="marker3445" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path3443" /> + </marker> + <marker + style="overflow:visible;" + id="Arrow1Lend" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path3144" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.98994949" + inkscape:cx="297.97441" + inkscape:cy="245.37211" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + inkscape:document-rotation="0" + showgrid="false" + units="px" + inkscape:window-width="1404" + inkscape:window-height="1016" + inkscape:window-x="281" + inkscape:window-y="27" + inkscape:window-maximized="0" + showguides="true" + inkscape:guide-bbox="true" /> + <metadata + id="metadata2144"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g2851" + transform="matrix(0.84882735,0,0,0.84882735,-5.4514578,9.7344105)"> + <circle + style="fill:none;stroke:#000000;stroke-width:1" + id="path2710" + cx="89.153343" + cy="63.810429" + r="51.14566" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 118.92887,33.710015 131.54406,21.284558" + id="path2736" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 130.3168,71.515 17.36133,3.481276" + id="path2736-5" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 104.71157,102.41933 6.56219,16.44605" + id="path2736-6" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 51.073764,81.65523 35.108111,89.312443" + id="path2736-9" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 54.233873,39.571826 39.643162,29.539572" + id="path2736-3" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 69.962563,25.77499 61.999798,9.959512" + id="path2736-7" + sodipodi:nodetypes="cc" /> + </g> + <g + id="g2992" + transform="translate(-19.258685)"> + <image + width="16.223312" + height="16.223312" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image2981" + x="125.46542" + y="11.578013" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="140.23157" + y="26.731647" + id="text2987"><tspan + sodipodi:role="line" + id="tspan2985" + x="140.23157" + y="26.731647" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';stroke-width:0.264583">1</tspan></text> + </g> + <g + id="g2992-5" + transform="translate(-5.5636458,61.815287)"> + <image + width="16.223312" + height="16.223312" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image2981-0" + x="125.46542" + y="11.578013" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="140.23157" + y="26.731647" + id="text2987-4"><tspan + sodipodi:role="line" + id="tspan2985-8" + x="140.23157" + y="26.731647" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';stroke-width:0.264583">2</tspan></text> + </g> + <g + id="g2992-7" + transform="translate(-36.464671,99.052583)"> + <image + width="16.223312" + height="16.223312" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image2981-1" + x="125.46542" + y="11.578013" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="140.23157" + y="26.731647" + id="text2987-7"><tspan + sodipodi:role="line" + id="tspan2985-2" + x="140.23157" + y="26.731647" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';stroke-width:0.264583">3</tspan></text> + </g> + <g + id="g2992-72" + transform="translate(-117.33947,73.967241)"> + <image + width="16.223312" + height="16.223312" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image2981-2" + x="125.46542" + y="11.578013" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="140.23157" + y="26.731647" + id="text2987-6"><tspan + sodipodi:role="line" + id="tspan2985-1" + x="140.23157" + y="26.731647" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';stroke-width:0.264583">4</tspan></text> + </g> + <g + id="g2992-0" + transform="translate(-118.04937,17.044482)"> + <image + width="16.223312" + height="16.223312" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image2981-6" + x="125.46542" + y="11.578013" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="140.23157" + y="26.731647" + id="text2987-1"><tspan + sodipodi:role="line" + id="tspan2985-5" + x="140.23157" + y="26.731647" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';stroke-width:0.264583">5</tspan></text> + </g> + <g + id="g2992-9" + transform="translate(-94.51307,-9.6130091)"> + <image + width="16.223312" + height="16.223312" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image2981-4" + x="125.46542" + y="11.578013" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="140.23157" + y="26.731647" + id="text2987-9"><tspan + sodipodi:role="line" + id="tspan2985-0" + x="140.23157" + y="26.731647" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';stroke-width:0.264583">6</tspan></text> + </g> + <rect + style="fill:none;stroke:#000040;stroke-width:0.799999;stroke-dasharray:2.4, 0.79999900000000002;stroke-opacity:0.01249951" + id="rect894" + width="171.26611" + height="127.22334" + x="0.13010304" + y="0.24505959" /> + </g> +</svg> diff --git a/doc/talks/2023-01-18-tocatta/assets/consistent_hashing_2.svg b/doc/talks/2023-01-18-tocatta/assets/consistent_hashing_2.svg new file mode 100644 index 00000000..5ac8faf6 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/consistent_hashing_2.svg @@ -0,0 +1,334 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="648" + height="480" + viewBox="0 0 171.45 127" + version="1.1" + id="svg2147" + inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)" + sodipodi:docname="consistent_hashing_2.svg"> + <defs + id="defs2141"> + <marker + style="overflow:visible;" + id="marker3465" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path3463" /> + </marker> + <marker + style="overflow:visible;" + id="marker3455" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path3453" /> + </marker> + <marker + style="overflow:visible;" + id="marker3445" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path3443" /> + </marker> + <marker + style="overflow:visible;" + id="Arrow1Lend" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path3144" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.7" + inkscape:cx="166.38273" + inkscape:cy="269.80211" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + inkscape:document-rotation="0" + showgrid="false" + units="px" + inkscape:window-width="1404" + inkscape:window-height="1016" + inkscape:window-x="281" + inkscape:window-y="27" + inkscape:window-maximized="0" + showguides="true" + inkscape:guide-bbox="true" /> + <metadata + id="metadata2144"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g2851" + transform="matrix(0.84882735,0,0,0.84882735,-5.4514578,9.7344105)"> + <circle + style="fill:none;stroke:#000000;stroke-width:1" + id="path2710" + cx="89.153343" + cy="63.810429" + r="51.14566" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 118.92887,33.710015 131.54406,21.284558" + id="path2736" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 130.3168,71.515 17.36133,3.481276" + id="path2736-5" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 104.71157,102.41933 6.56219,16.44605" + id="path2736-6" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 51.073764,81.65523 35.108111,89.312443" + id="path2736-9" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 54.233873,39.571826 39.643162,29.539572" + id="path2736-3" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 69.962563,25.77499 61.999798,9.959512" + id="path2736-7" + sodipodi:nodetypes="cc" /> + </g> + <g + id="g2992" + transform="translate(-19.258685)"> + <image + width="16.223312" + height="16.223312" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image2981" + x="125.46542" + y="11.578013" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="140.23157" + y="26.731647" + id="text2987"><tspan + sodipodi:role="line" + id="tspan2985" + x="140.23157" + y="26.731647" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';stroke-width:0.264583">1</tspan></text> + </g> + <g + id="g2992-5" + transform="translate(-5.5636458,61.815287)"> + <image + width="16.223312" + height="16.223312" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image2981-0" + x="125.46542" + y="11.578013" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="140.23157" + y="26.731647" + id="text2987-4"><tspan + sodipodi:role="line" + id="tspan2985-8" + x="140.23157" + y="26.731647" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';stroke-width:0.264583">2</tspan></text> + </g> + <g + id="g2992-7" + transform="translate(-36.464671,99.052583)"> + <image + width="16.223312" + height="16.223312" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image2981-1" + x="125.46542" + y="11.578013" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="140.23157" + y="26.731647" + id="text2987-7"><tspan + sodipodi:role="line" + id="tspan2985-2" + x="140.23157" + y="26.731647" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';stroke-width:0.264583">3</tspan></text> + </g> + <g + id="g2992-72" + transform="translate(-117.33947,73.967241)"> + <image + width="16.223312" + height="16.223312" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image2981-2" + x="125.46542" + y="11.578013" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="140.23157" + y="26.731647" + id="text2987-6"><tspan + sodipodi:role="line" + id="tspan2985-1" + x="140.23157" + y="26.731647" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';stroke-width:0.264583">4</tspan></text> + </g> + <g + id="g2992-0" + transform="translate(-118.04937,17.044482)"> + <image + width="16.223312" + height="16.223312" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image2981-6" + x="125.46542" + y="11.578013" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="140.23157" + y="26.731647" + id="text2987-1"><tspan + sodipodi:role="line" + id="tspan2985-5" + x="140.23157" + y="26.731647" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';stroke-width:0.264583">5</tspan></text> + </g> + <g + id="g2992-9" + transform="translate(-94.51307,-9.6130091)"> + <image + width="16.223312" + height="16.223312" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image2981-4" + x="125.46542" + y="11.578013" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="140.23157" + y="26.731647" + id="text2987-9"><tspan + sodipodi:role="line" + id="tspan2985-0" + x="140.23157" + y="26.731647" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';stroke-width:0.264583">6</tspan></text> + </g> + <g + id="g3137" + transform="translate(6.1449507,10.235717)" + style="stroke:#0000ff;stroke-opacity:1"> + <path + style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 161.12836,39.73877 V 54.647494 L 146.163,54.488794 V 33.300302 h 8.7615 l 5.86826,6.195557 h -5.87342 v -6.047936" + id="path3085" + sodipodi:nodetypes="cccccccc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 148.46975,37.39937 h 4.21162" + id="path3087" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 148.46975,40.644703 h 4.21162" + id="path3087-7" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 148.46975,43.555576 h 9.81264" + id="path3087-1" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 148.46975,46.646723 h 9.81264" + id="path3087-1-1" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 148.46975,50.449131 h 9.81264" + id="path3087-1-5" + sodipodi:nodetypes="cc" /> + </g> + <rect + style="fill:none;stroke:#000040;stroke-width:0.799999;stroke-dasharray:2.4, 0.799999;stroke-opacity:0.0124995" + id="rect894" + width="171.26611" + height="127.22335" + x="0.13010304" + y="0.24505216" /> + </g> +</svg> diff --git a/doc/talks/2023-01-18-tocatta/assets/consistent_hashing_3.svg b/doc/talks/2023-01-18-tocatta/assets/consistent_hashing_3.svg new file mode 100644 index 00000000..fdfd3efc --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/consistent_hashing_3.svg @@ -0,0 +1,358 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="648" + height="480" + viewBox="0 0 171.45 127" + version="1.1" + id="svg2147" + inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)" + sodipodi:docname="consistent_hashing_3.svg"> + <defs + id="defs2141"> + <marker + style="overflow:visible;" + id="marker3465" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path3463" /> + </marker> + <marker + style="overflow:visible;" + id="marker3455" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path3453" /> + </marker> + <marker + style="overflow:visible;" + id="marker3445" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path3443" /> + </marker> + <marker + style="overflow:visible;" + id="Arrow1Mend" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path3150" /> + </marker> + <marker + style="overflow:visible;" + id="Arrow1Lend" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path3144" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.7" + inkscape:cx="166.38273" + inkscape:cy="269.80211" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + inkscape:document-rotation="0" + showgrid="false" + units="px" + inkscape:window-width="1404" + inkscape:window-height="1016" + inkscape:window-x="281" + inkscape:window-y="27" + inkscape:window-maximized="0" + showguides="true" + inkscape:guide-bbox="true" /> + <metadata + id="metadata2144"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g2851" + transform="matrix(0.84882735,0,0,0.84882735,-5.4514578,9.7344105)"> + <circle + style="fill:none;stroke:#000000;stroke-width:1" + id="path2710" + cx="89.153343" + cy="63.810429" + r="51.14566" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 118.92887,33.710015 131.54406,21.284558" + id="path2736" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 130.3168,71.515 17.36133,3.481276" + id="path2736-5" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 104.71157,102.41933 6.56219,16.44605" + id="path2736-6" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 51.073764,81.65523 35.108111,89.312443" + id="path2736-9" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 54.233873,39.571826 39.643162,29.539572" + id="path2736-3" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 69.962563,25.77499 61.999798,9.959512" + id="path2736-7" + sodipodi:nodetypes="cc" /> + </g> + <g + id="g2992" + transform="translate(-19.258685)"> + <image + width="16.223312" + height="16.223312" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image2981" + x="125.46542" + y="11.578013" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="140.23157" + y="26.731647" + id="text2987"><tspan + sodipodi:role="line" + id="tspan2985" + x="140.23157" + y="26.731647" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';stroke-width:0.264583">1</tspan></text> + </g> + <g + id="g2992-5" + transform="translate(-5.5636458,61.815287)"> + <image + width="16.223312" + height="16.223312" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image2981-0" + x="125.46542" + y="11.578013" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="140.23157" + y="26.731647" + id="text2987-4"><tspan + sodipodi:role="line" + id="tspan2985-8" + x="140.23157" + y="26.731647" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';stroke-width:0.264583">2</tspan></text> + </g> + <g + id="g2992-7" + transform="translate(-36.464671,99.052583)"> + <image + width="16.223312" + height="16.223312" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image2981-1" + x="125.46542" + y="11.578013" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="140.23157" + y="26.731647" + id="text2987-7"><tspan + sodipodi:role="line" + id="tspan2985-2" + x="140.23157" + y="26.731647" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';stroke-width:0.264583">3</tspan></text> + </g> + <g + id="g2992-72" + transform="translate(-117.33947,73.967241)"> + <image + width="16.223312" + height="16.223312" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image2981-2" + x="125.46542" + y="11.578013" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="140.23157" + y="26.731647" + id="text2987-6"><tspan + sodipodi:role="line" + id="tspan2985-1" + x="140.23157" + y="26.731647" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';stroke-width:0.264583">4</tspan></text> + </g> + <g + id="g2992-0" + transform="translate(-118.04937,17.044482)"> + <image + width="16.223312" + height="16.223312" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image2981-6" + x="125.46542" + y="11.578013" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="140.23157" + y="26.731647" + id="text2987-1"><tspan + sodipodi:role="line" + id="tspan2985-5" + x="140.23157" + y="26.731647" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';stroke-width:0.264583">5</tspan></text> + </g> + <g + id="g2992-9" + transform="translate(-94.51307,-9.6130091)"> + <image + width="16.223312" + height="16.223312" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image2981-4" + x="125.46542" + y="11.578013" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="140.23157" + y="26.731647" + id="text2987-9"><tspan + sodipodi:role="line" + id="tspan2985-0" + x="140.23157" + y="26.731647" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';stroke-width:0.264583">6</tspan></text> + </g> + <path + style="fill:none;stroke:#0000ff;stroke-width:0.848828;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 104.64946,54.902986 119.22518,51.23513" + id="path2736-1" + sodipodi:nodetypes="cc" /> + <g + id="g3137" + transform="translate(6.1449507,10.235717)" + style="stroke:#0000ff;stroke-opacity:1"> + <path + style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 161.12836,39.73877 V 54.647494 L 146.163,54.488794 V 33.300302 h 8.7615 l 5.86826,6.195557 h -5.87342 v -6.047936" + id="path3085" + sodipodi:nodetypes="cccccccc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 148.46975,37.39937 h 4.21162" + id="path3087" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 148.46975,40.644703 h 4.21162" + id="path3087-7" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 148.46975,43.555576 h 9.81264" + id="path3087-1" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 148.46975,46.646723 h 9.81264" + id="path3087-1-1" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 148.46975,50.449131 h 9.81264" + id="path3087-1-5" + sodipodi:nodetypes="cc" /> + </g> + <path + style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" + d="m 147.85661,51.721464 c -6.70172,-3.912196 -23.39473,-1.178632 -23.39473,-1.178632" + id="path3139" /> + <rect + style="fill:none;stroke:#000040;stroke-width:0.799999;stroke-dasharray:2.4, 0.799999;stroke-opacity:0.0124995" + id="rect894" + width="171.26611" + height="127.22335" + x="0.13010304" + y="0.24505216" /> + </g> +</svg> diff --git a/doc/talks/2023-01-18-tocatta/assets/consistent_hashing_4.svg b/doc/talks/2023-01-18-tocatta/assets/consistent_hashing_4.svg new file mode 100644 index 00000000..95ed0e02 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/consistent_hashing_4.svg @@ -0,0 +1,377 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="648" + height="480" + viewBox="0 0 171.45 127" + version="1.1" + id="svg2147" + inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)" + sodipodi:docname="consistent_hashing_4.svg"> + <defs + id="defs2141"> + <marker + style="overflow:visible;" + id="marker3465" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path3463" /> + </marker> + <marker + style="overflow:visible;" + id="marker3455" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path3453" /> + </marker> + <marker + style="overflow:visible;" + id="marker3445" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path3443" /> + </marker> + <marker + style="overflow:visible;" + id="Arrow1Mend" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path3150" /> + </marker> + <marker + style="overflow:visible;" + id="Arrow1Lend" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path3144" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.7" + inkscape:cx="166.38273" + inkscape:cy="269.80211" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + inkscape:document-rotation="0" + showgrid="false" + units="px" + inkscape:window-width="1404" + inkscape:window-height="1016" + inkscape:window-x="281" + inkscape:window-y="27" + inkscape:window-maximized="0" + showguides="true" + inkscape:guide-bbox="true" /> + <metadata + id="metadata2144"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g2851" + transform="matrix(0.84882735,0,0,0.84882735,-5.4514578,9.7344105)"> + <circle + style="fill:none;stroke:#000000;stroke-width:1" + id="path2710" + cx="89.153343" + cy="63.810429" + r="51.14566" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 118.92887,33.710015 131.54406,21.284558" + id="path2736" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 130.3168,71.515 17.36133,3.481276" + id="path2736-5" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 104.71157,102.41933 6.56219,16.44605" + id="path2736-6" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 51.073764,81.65523 35.108111,89.312443" + id="path2736-9" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 54.233873,39.571826 39.643162,29.539572" + id="path2736-3" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 69.962563,25.77499 61.999798,9.959512" + id="path2736-7" + sodipodi:nodetypes="cc" /> + </g> + <g + id="g2992" + transform="translate(-19.258685)"> + <image + width="16.223312" + height="16.223312" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image2981" + x="125.46542" + y="11.578013" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="140.23157" + y="26.731647" + id="text2987"><tspan + sodipodi:role="line" + id="tspan2985" + x="140.23157" + y="26.731647" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';stroke-width:0.264583">1</tspan></text> + </g> + <g + id="g2992-5" + transform="translate(-5.5636458,61.815287)"> + <image + width="16.223312" + height="16.223312" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image2981-0" + x="125.46542" + y="11.578013" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="140.23157" + y="26.731647" + id="text2987-4"><tspan + sodipodi:role="line" + id="tspan2985-8" + x="140.23157" + y="26.731647" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';stroke-width:0.264583">2</tspan></text> + </g> + <g + id="g2992-7" + transform="translate(-36.464671,99.052583)"> + <image + width="16.223312" + height="16.223312" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image2981-1" + x="125.46542" + y="11.578013" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="140.23157" + y="26.731647" + id="text2987-7"><tspan + sodipodi:role="line" + id="tspan2985-2" + x="140.23157" + y="26.731647" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';stroke-width:0.264583">3</tspan></text> + </g> + <g + id="g2992-72" + transform="translate(-117.33947,73.967241)"> + <image + width="16.223312" + height="16.223312" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image2981-2" + x="125.46542" + y="11.578013" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="140.23157" + y="26.731647" + id="text2987-6"><tspan + sodipodi:role="line" + id="tspan2985-1" + x="140.23157" + y="26.731647" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';stroke-width:0.264583">4</tspan></text> + </g> + <g + id="g2992-0" + transform="translate(-118.04937,17.044482)"> + <image + width="16.223312" + height="16.223312" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image2981-6" + x="125.46542" + y="11.578013" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="140.23157" + y="26.731647" + id="text2987-1"><tspan + sodipodi:role="line" + id="tspan2985-5" + x="140.23157" + y="26.731647" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';stroke-width:0.264583">5</tspan></text> + </g> + <g + id="g2992-9" + transform="translate(-94.51307,-9.6130091)"> + <image + width="16.223312" + height="16.223312" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image2981-4" + x="125.46542" + y="11.578013" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="140.23157" + y="26.731647" + id="text2987-9"><tspan + sodipodi:role="line" + id="tspan2985-0" + x="140.23157" + y="26.731647" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';stroke-width:0.264583">6</tspan></text> + </g> + <path + style="fill:none;stroke:#0000ff;stroke-width:0.848828;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 104.64946,54.902986 119.22518,51.23513" + id="path2736-1" + sodipodi:nodetypes="cc" /> + <g + id="g3137" + transform="translate(6.1449507,10.235717)" + style="stroke:#0000ff;stroke-opacity:1"> + <path + style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 161.12836,39.73877 V 54.647494 L 146.163,54.488794 V 33.300302 h 8.7615 l 5.86826,6.195557 h -5.87342 v -6.047936" + id="path3085" + sodipodi:nodetypes="cccccccc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 148.46975,37.39937 h 4.21162" + id="path3087" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 148.46975,40.644703 h 4.21162" + id="path3087-7" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 148.46975,43.555576 h 9.81264" + id="path3087-1" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 148.46975,46.646723 h 9.81264" + id="path3087-1-1" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 148.46975,50.449131 h 9.81264" + id="path3087-1-5" + sodipodi:nodetypes="cc" /> + </g> + <path + style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" + d="m 147.85661,51.721464 c -6.70172,-3.912196 -23.39473,-1.178632 -23.39473,-1.178632" + id="path3139" /> + <g + id="g3602" + style="stroke:#0000ff;stroke-opacity:1"> + <path + style="fill:none;stroke:#0000ff;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker3465);stroke-miterlimit:4;stroke-dasharray:2.4, 0.80000000000000004;stroke-dashoffset:0" + d="m 99.774673,58.026576 c -5.092676,4.046769 -2.589217,10.390276 3.295517,11.307367" + id="path3437" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker3455);stroke-miterlimit:4;stroke-dasharray:2.4, 0.80000000000000004;stroke-dashoffset:0" + d="M 98.854842,57.027565 C 87.49604,65.49508 80.412608,80.588074 82.926734,90.302514" + id="path3439" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker3445);stroke-miterlimit:4;stroke-dasharray:2.4, 0.80000000000000004;stroke-dashoffset:0" + d="M 98.611748,55.797585 C 83.469402,57.101491 46.01116,75.338227 43.693127,76.144807" + id="path3441" + sodipodi:nodetypes="cc" /> + </g> + <rect + style="fill:none;stroke:#000040;stroke-width:0.799999;stroke-dasharray:2.4, 0.799999;stroke-opacity:0.0124995" + id="rect894" + width="171.26611" + height="127.22335" + x="0.13010304" + y="0.24505216" /> + </g> +</svg> diff --git a/doc/talks/2023-01-18-tocatta/assets/deuxfleurs.svg b/doc/talks/2023-01-18-tocatta/assets/deuxfleurs.svg new file mode 100644 index 00000000..c298c22b --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/deuxfleurs.svg @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + viewBox="0 0 70.424515 70.300102" + version="1.1" + id="svg8" + sodipodi:docname="logo.svg" + inkscape:version="1.1 (c68e22c387, 2021-05-23)" + inkscape:export-filename="/home/quentin/Documents/dev/deuxfleurs/site/src/img/logo.png" + inkscape:export-xdpi="699.30194" + inkscape:export-ydpi="699.30194" + width="70.424515" + height="70.300102" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs12" /> + <sodipodi:namedview + id="namedview10" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="12.125" + inkscape:cx="43.092783" + inkscape:cy="48.082474" + inkscape:window-width="3072" + inkscape:window-height="1659" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg8" /> + <g + id="g79969" + transform="translate(-0.827,34.992103)"> + <path + fill="#ffffff" + d="m 15.632,34.661 c -0.799,-0.597 -1.498,-1.484 -2.035,-2.592 l -0.228,-0.47 -0.46,0.249 c -0.975,0.528 -1.913,0.858 -2.744,0.969 L 9.963,29.061 6.327,30.029 C 6.17,29.175 6.202,28.142 6.423,27.007 L 6.526,26.482 5.994,26.416 C 4.752,26.262 3.688,25.891 2.89,25.336 L 4.411,22.419 1.423,20.896 C 1.742,19.952 2.371,19.014 3.257,18.161 L 3.634,17.798 3.255,17.438 C 2.452,16.674 1.847,15.884 1.485,15.127 L 4.995,13.774 2.95,10.615 C 3.69,10.213 4.643,9.929 5.739,9.783 L 6.258,9.715 6.167,9.201 C 5.952,7.99 5.995,6.863 6.291,5.913 l 3.308,0.523 0.524,-3.308 c 0.988,0.013 2.08,0.326 3.164,0.907 L 13.749,4.283 13.975,3.81 C 14.454,2.807 15.019,1.986 15.628,1.406 L 18,4.326 20.372,1.406 c 0.609,0.58 1.175,1.401 1.653,2.404 l 0.226,0.473 0.462,-0.247 C 23.798,3.455 24.891,3.142 25.877,3.13 L 26.4,6.438 29.71,5.913 c 0.296,0.951 0.34,2.078 0.124,3.288 l -0.092,0.515 0.518,0.069 c 1.095,0.145 2.048,0.43 2.788,0.832 l -2.046,3.156 3.511,1.355 c -0.361,0.757 -0.966,1.547 -1.77,2.311 l -0.379,0.36 0.377,0.363 c 0.888,0.854 1.516,1.793 1.835,2.736 l -2.984,1.52 1.521,2.984 c -0.812,0.574 -1.871,0.964 -3.094,1.134 l -0.518,0.072 0.096,0.514 c 0.201,1.089 0.226,2.083 0.073,2.909 l -3.634,-0.97 -0.204,3.757 c -0.83,-0.11 -1.768,-0.44 -2.742,-0.968 l -0.459,-0.249 -0.228,0.47 c -0.539,1.107 -1.237,1.994 -2.036,2.591 L 18,32.293 Z" + id="path2" /> + <path + d="M 7.092,10.678 C 6.562,9.189 6.394,7.708 6.66,6.478 l 2.368,0.375 0.987,0.156 0.157,-0.988 0.375,-2.368 C 11.808,3.78 13.16,4.396 14.409,5.359 14.527,5.022 14.653,4.696 14.791,4.392 13.24,3.257 11.568,2.629 10.061,2.629 9.938,2.629 9.816,2.633 9.695,2.642 L 9.184,5.865 5.96,5.354 C 5.36,6.841 5.395,8.769 6.045,10.747 6.38,10.71 6.729,10.686 7.092,10.678 Z M 21.593,5.359 c 1.248,-0.962 2.6,-1.578 3.86,-1.705 l 0.376,2.368 0.156,0.988 0.987,-0.157 2.369,-0.376 c 0.266,1.23 0.098,2.71 -0.432,4.2 0.361,0.009 0.711,0.032 1.046,0.07 C 30.606,8.769 30.64,6.841 30.04,5.353 L 26.815,5.865 26.304,2.641 c -0.12,-0.008 -0.242,-0.012 -0.365,-0.012 -1.507,0 -3.179,0.628 -4.73,1.762 0.14,0.306 0.266,0.631 0.384,0.968 z M 7.368,27 h 0.035 c 0.067,0 0.157,-0.604 0.26,-0.947 -0.098,0.004 -0.197,0.046 -0.294,0.046 -1.496,0 -2.826,-0.303 -3.83,-0.89 L 4.628,23.081 5.082,22.194 4.191,21.742 2.055,20.654 C 2.563,19.503 3.57,18.404 4.873,17.511 4.586,17.292 4.312,17.07 4.063,16.842 2.376,18.059 1.217,19.597 0.828,21.152 l 2.908,1.483 -1.482,2.843 C 3.475,26.501 5.303,27 7.368,27 Z m 27.806,-5.846 c -0.39,-1.555 -1.548,-3.093 -3.234,-4.311 -0.25,0.228 -0.523,0.451 -0.81,0.669 1.304,0.893 2.31,1.992 2.817,3.145 l -2.136,1.088 -0.891,0.453 0.454,0.892 1.089,2.137 c -1.004,0.587 -2.332,0.904 -3.828,0.904 -0.099,0 -0.199,-0.01 -0.299,-0.013 0.103,0.344 0.192,0.683 0.26,1.011 l 0.039,0.002 c 2.066,0 3.892,-0.563 5.112,-1.587 l -1.482,-2.908 z m -12.653,9.182 c -0.447,1.517 -1.181,2.812 -2.119,3.651 L 18.707,32.293 18,31.586 l -0.707,0.707 -1.695,1.694 c -0.938,-0.839 -1.673,-2.136 -2.12,-3.652 -0.296,0.206 -0.593,0.397 -0.886,0.563 0.636,1.98 1.741,3.559 3.1,4.409 L 18,33 l 2.308,2.308 c 1.358,-0.851 2.464,-2.428 3.101,-4.408 -0.295,-0.168 -0.591,-0.359 -0.888,-0.564 z" + fill="#ea596e" + id="path4" /> + <path + fill="#ea596e" + d="m 20.118,5.683 c 0.426,1.146 0.748,2.596 0.841,4.284 l 0.2,3.683 3.564,-0.946 c 1.32,-0.351 2.655,-0.536 3.86,-0.536 0.16,0 0.318,0.003 0.474,0.01 l -1.827,2.819 3.139,1.211 c -0.958,0.759 -2.237,1.514 -3.814,2.123 l -3.441,1.328 2.001,3.099 c 0.918,1.42 1.509,2.782 1.838,3.96 L 23.709,25.853 23.527,29.21 C 22.508,28.533 21.395,27.55 20.329,26.237 L 18,23.374 15.672,26.236 c -1.066,1.312 -2.179,2.295 -3.198,2.972 l -0.18,-3.354 -3.248,0.864 c 0.329,-1.178 0.921,-2.54 1.839,-3.961 L 12.889,19.658 9.447,18.33 C 7.87,17.721 6.591,16.967 5.633,16.208 L 8.768,15 6.941,12.177 c 0.155,-0.006 0.313,-0.01 0.473,-0.01 1.206,0 2.541,0.185 3.861,0.536 l 3.564,0.947 0.202,-3.683 c 0.092,-1.688 0.415,-3.138 0.84,-4.284 L 18,8.292 20.118,5.683 M 20.308,0.692 18,3.533 15.692,0.692 C 13.703,2.224 12.271,5.684 12.046,9.804 10.429,9.374 8.854,9.167 7.414,9.167 c -2.11,0 -3.929,0.445 -5.161,1.289 l 1.989,3.073 -3.415,1.316 c 0.842,2.366 3.69,4.797 7.54,6.283 -2.241,3.465 -3.116,7.106 -2.407,9.516 l 3.537,-0.941 0.196,3.654 c 2.512,-0.07 5.703,-2.027 8.307,-5.228 2.603,3.201 5.796,5.158 8.306,5.228 l 0.198,-3.655 3.535,0.943 c 0.71,-2.411 -0.165,-6.05 -2.404,-9.517 3.849,-1.485 6.696,-3.918 7.538,-6.283 l -3.415,-1.318 1.99,-3.07 c -1.233,-0.844 -3.053,-1.29 -5.164,-1.29 -1.438,0 -3.013,0.207 -4.63,0.636 C 23.729,5.684 22.297,2.224 20.308,0.692 Z" + id="path6" /> + </g> + <g + id="g79964" + transform="translate(-1.043816,35.993714)"> + <path + fill="#ffffff" + d="m 51.92633,-2.0247139 c -0.799,-0.597 -1.498,-1.484 -2.035,-2.592 l -0.228,-0.47 -0.46,0.249 c -0.975,0.528 -1.913,0.858 -2.744,0.969 l -0.202,-3.7560001 -3.636,0.968 c -0.157,-0.854 -0.125,-1.887 0.096,-3.022 l 0.103,-0.525 -0.532,-0.066 c -1.242,-0.154 -2.306,-0.525 -3.104,-1.08 l 1.521,-2.917 -2.988,-1.523 c 0.319,-0.944 0.948,-1.882 1.834,-2.735 l 0.377,-0.363 -0.379,-0.36 c -0.803,-0.764 -1.408,-1.554 -1.77,-2.311 l 3.51,-1.353 -2.045,-3.159 c 0.74,-0.402 1.693,-0.686 2.789,-0.832 l 0.519,-0.068 -0.091,-0.514 c -0.215,-1.211 -0.172,-2.338 0.124,-3.288 l 3.308,0.523 0.524,-3.308 c 0.988,0.013 2.08,0.326 3.164,0.907 l 0.462,0.248 0.226,-0.473 c 0.479,-1.003 1.044,-1.824 1.653,-2.404 l 2.372,2.92 2.372,-2.92 c 0.609,0.58 1.175,1.401 1.653,2.404 l 0.226,0.473 0.462,-0.247 c 1.085,-0.581 2.178,-0.894 3.164,-0.906 l 0.523,3.308 3.31,-0.525 c 0.296,0.951 0.34,2.078 0.124,3.288 l -0.092,0.515 0.518,0.069 c 1.095,0.145 2.048,0.43 2.788,0.832 l -2.046,3.156 3.511,1.355 c -0.361,0.757 -0.966,1.547 -1.77,2.311 l -0.379,0.36 0.377,0.363 c 0.888,0.854 1.516,1.793 1.835,2.736 l -2.984,1.52 1.521,2.984 c -0.812,0.574 -1.871,0.964 -3.094,1.134 l -0.518,0.072 0.096,0.514 c 0.201,1.089 0.226,2.083 0.073,2.909 l -3.634,-0.97 -0.204,3.7570001 c -0.83,-0.11 -1.768,-0.44 -2.742,-0.968 l -0.459,-0.249 -0.228,0.47 c -0.539,1.107 -1.237,1.994 -2.036,2.591 l -2.367,-2.369 z" + id="path2-9" /> + <path + d="m 43.38633,-26.007714 c -0.53,-1.489 -0.698,-2.97 -0.432,-4.2 l 2.368,0.375 0.987,0.156 0.157,-0.988 0.375,-2.368 c 1.261,0.127 2.613,0.743 3.862,1.706 0.118,-0.337 0.244,-0.663 0.382,-0.967 -1.551,-1.135 -3.223,-1.763 -4.73,-1.763 -0.123,0 -0.245,0.004 -0.366,0.013 l -0.511,3.223 -3.224,-0.511 c -0.6,1.487 -0.565,3.415 0.085,5.393 0.335,-0.037 0.684,-0.061 1.047,-0.069 z m 14.501,-5.319 c 1.248,-0.962 2.6,-1.578 3.86,-1.705 l 0.376,2.368 0.156,0.988 0.987,-0.157 2.369,-0.376 c 0.266,1.23 0.098,2.71 -0.432,4.2 0.361,0.009 0.711,0.032 1.046,0.07 0.651,-1.978 0.685,-3.906 0.085,-5.394 l -3.225,0.512 -0.511,-3.224 c -0.12,-0.008 -0.242,-0.012 -0.365,-0.012 -1.507,0 -3.179,0.628 -4.73,1.762 0.14,0.306 0.266,0.631 0.384,0.968 z m -14.225,21.641 h 0.035 c 0.067,0 0.157,-0.604 0.26,-0.947 -0.098,0.004 -0.197,0.046 -0.294,0.046 -1.496,0 -2.826,-0.303 -3.83,-0.89 l 1.089,-2.128 0.454,-0.887 -0.891,-0.452 -2.136,-1.088 c 0.508,-1.151 1.515,-2.25 2.818,-3.143 -0.287,-0.219 -0.561,-0.441 -0.81,-0.669 -1.687,1.217 -2.846,2.755 -3.235,4.31 l 2.908,1.483 -1.482,2.843 c 1.221,1.023 3.049,1.522 5.114,1.522 z m 27.806,-5.846 c -0.39,-1.555 -1.548,-3.093 -3.234,-4.311 -0.25,0.228 -0.523,0.451 -0.81,0.669 1.304,0.893 2.31,1.992 2.817,3.145 l -2.136,1.088 -0.891,0.453 0.454,0.892 1.089,2.137 c -1.004,0.587 -2.332,0.904 -3.828,0.904 -0.099,0 -0.199,-0.01 -0.299,-0.013 0.103,0.344 0.192,0.683 0.26,1.011 l 0.039,0.002 c 2.066,0 3.892,-0.563 5.112,-1.587 l -1.482,-2.908 z m -12.653,9.182 c -0.447,1.5170001 -1.181,2.8120001 -2.119,3.6510001 l -1.695,-1.694 -0.707,-0.707 -0.707,0.707 -1.695,1.694 c -0.938,-0.839 -1.673,-2.136 -2.12,-3.6520001 -0.296,0.2060001 -0.593,0.3970001 -0.886,0.5630001 0.636,1.98 1.741,3.559 3.1,4.409 l 2.308,-2.307 2.308,2.308 c 1.358,-0.851 2.464,-2.428 3.101,-4.408 -0.295,-0.168 -0.591,-0.359 -0.888,-0.5640001 z" + fill="#ea596e" + id="path4-3" /> + <path + fill="#ea596e" + d="m 56.41233,-31.002714 c 0.426,1.146 0.748,2.596 0.841,4.284 l 0.2,3.683 3.564,-0.946 c 1.32,-0.351 2.655,-0.536 3.86,-0.536 0.16,0 0.318,0.003 0.474,0.01 l -1.827,2.819 3.139,1.211 c -0.958,0.759 -2.237,1.514 -3.814,2.123 l -3.441,1.328 2.001,3.099 c 0.918,1.42 1.509,2.782 1.838,3.96 l -3.244,-0.865 -0.182,3.357 c -1.019,-0.677 -2.132,-1.66 -3.198,-2.973 l -2.329,-2.863 -2.328,2.862 c -1.066,1.312 -2.179,2.295 -3.198,2.972 l -0.18,-3.354 -3.248,0.864 c 0.329,-1.178 0.921,-2.54 1.839,-3.961 l 2.004,-3.099 -3.442,-1.328 c -1.577,-0.609 -2.856,-1.363 -3.814,-2.122 l 3.135,-1.208 -1.827,-2.823 c 0.155,-0.006 0.313,-0.01 0.473,-0.01 1.206,0 2.541,0.185 3.861,0.536 l 3.564,0.947 0.202,-3.683 c 0.092,-1.688 0.415,-3.138 0.84,-4.284 l 2.119,2.609 2.118,-2.609 m 0.19,-4.991 -2.308,2.841 -2.308,-2.841 c -1.989,1.532 -3.421,4.992 -3.646,9.112 -1.617,-0.43 -3.192,-0.637 -4.632,-0.637 -2.11,0 -3.929,0.445 -5.161,1.289 l 1.989,3.073 -3.415,1.316 c 0.842,2.366 3.69,4.797 7.54,6.283 -2.241,3.465 -3.116,7.106 -2.407,9.5160001 l 3.537,-0.9410001 0.196,3.6540001 c 2.512,-0.07 5.703,-2.027 8.307,-5.2280001 2.603,3.2010001 5.796,5.1580001 8.306,5.2280001 l 0.198,-3.6550001 3.535,0.9430001 c 0.71,-2.4110001 -0.165,-6.0500001 -2.404,-9.5170001 3.849,-1.485 6.696,-3.918 7.538,-6.283 l -3.415,-1.318 1.99,-3.07 c -1.233,-0.844 -3.053,-1.29 -5.164,-1.29 -1.438,0 -3.013,0.207 -4.63,0.636 -0.225,-4.119 -1.657,-7.579 -3.646,-9.111 z" + id="path6-6" /> + </g> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:42.6667px;line-height:1.25;font-family:sans-serif;fill:#ea596e;fill-opacity:1;stroke:none" + x="2.2188232" + y="31.430677" + id="text46212"><tspan + sodipodi:role="line" + id="tspan46210" + x="2.2188232" + y="31.430677" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:42.6667px;font-family:'TeX Gyre Termes';-inkscape-font-specification:'TeX Gyre Termes'">D</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:42.6667px;line-height:1.25;font-family:sans-serif;fill:#ea596e;fill-opacity:1;stroke:none" + x="41.347008" + y="67.114784" + id="text46212-1"><tspan + sodipodi:role="line" + id="tspan46210-5" + x="41.347008" + y="67.114784" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:42.6667px;font-family:'TeX Gyre Termes';-inkscape-font-specification:'TeX Gyre Termes'">F</tspan></text> +</svg> diff --git a/doc/talks/2023-01-18-tocatta/assets/endpoint-latency-dc.png b/doc/talks/2023-01-18-tocatta/assets/endpoint-latency-dc.png Binary files differnew file mode 100644 index 00000000..7c7411cd --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/endpoint-latency-dc.png diff --git a/doc/talks/2023-01-18-tocatta/assets/garage.drawio.pdf b/doc/talks/2023-01-18-tocatta/assets/garage.drawio.pdf Binary files differnew file mode 100644 index 00000000..a54a163c --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/garage.drawio.pdf diff --git a/doc/talks/2023-01-18-tocatta/assets/garage.drawio.png b/doc/talks/2023-01-18-tocatta/assets/garage.drawio.png Binary files differnew file mode 100644 index 00000000..386dd862 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/garage.drawio.png diff --git a/doc/talks/2023-01-18-tocatta/assets/garage2.drawio.png b/doc/talks/2023-01-18-tocatta/assets/garage2.drawio.png Binary files differnew file mode 100644 index 00000000..8562fbcf --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/garage2.drawio.png diff --git a/doc/talks/2023-01-18-tocatta/assets/garage2a.drawio.pdf b/doc/talks/2023-01-18-tocatta/assets/garage2a.drawio.pdf Binary files differnew file mode 100644 index 00000000..422c9343 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/garage2a.drawio.pdf diff --git a/doc/talks/2023-01-18-tocatta/assets/garage2b.drawio.pdf b/doc/talks/2023-01-18-tocatta/assets/garage2b.drawio.pdf Binary files differnew file mode 100644 index 00000000..05a9710e --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/garage2b.drawio.pdf diff --git a/doc/talks/2023-01-18-tocatta/assets/garage_tables.svg b/doc/talks/2023-01-18-tocatta/assets/garage_tables.svg new file mode 100644 index 00000000..c7172713 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/garage_tables.svg @@ -0,0 +1,537 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="850" + height="480" + viewBox="0 0 224.89584 127" + version="1.1" + id="svg8" + inkscape:version="1.2 (dc2aedaf03, 2022-05-15)" + sodipodi:docname="garage_tables.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker1262" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1260" /> + </marker> + <marker + style="overflow:visible" + id="Arrow1Mend" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path965" /> + </marker> + <marker + style="overflow:visible" + id="Arrow1Lend" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path959" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.98994949" + inkscape:cx="429.31483" + inkscape:cy="289.40871" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + inkscape:document-rotation="0" + showgrid="false" + units="px" + inkscape:window-width="1678" + inkscape:window-height="993" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:showpageshadow="2" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="39.570904" + y="38.452755" + id="text2025"><tspan + sodipodi:role="line" + id="tspan2023" + x="39.570904" + y="38.452755" + style="font-size:5.64444px;stroke-width:0.264583" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="101.95796" + y="92.835831" + id="text2139"><tspan + sodipodi:role="line" + id="tspan2137" + x="101.95796" + y="92.835831" + style="stroke-width:0.264583"> </tspan></text> + <g + id="g2316" + transform="translate(-11.455511,1.5722486)"> + <g + id="g2277"> + <rect + style="fill:none;stroke:#000000;stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect833" + width="47.419891" + height="95.353409" + x="18.534418" + y="24.42766" /> + <rect + style="fill:none;stroke:#000000;stroke-width:0.799999;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect833-3" + width="47.419891" + height="86.973076" + x="18.534418" + y="32.807987" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="32.250839" + y="29.894743" + id="text852"><tspan + sodipodi:role="line" + id="tspan850" + x="32.250839" + y="29.894743" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono Bold';stroke-width:0.264583">Object</tspan></text> + </g> + <g + id="g2066" + transform="translate(-2.1807817,-3.0621439)"> + <g + id="g1969" + transform="matrix(0.12763631,0,0,0.12763631,0.7215051,24.717273)" + style="fill:#ff6600;fill-opacity:1;stroke:none;stroke-opacity:1"> + <path + style="fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1" + d="m 203.71837,154.80038 c -1.11451,3.75057 -2.45288,5.84095 -5.11132,7.98327 -2.2735,1.83211 -4.66721,2.65982 -8.09339,2.79857 -2.59227,0.10498 -2.92868,0.0577 -5.02863,-0.70611 -3.99215,-1.45212 -7.1627,-4.65496 -8.48408,-8.57046 -1.28374,-3.80398 -0.61478,-8.68216 1.64793,-12.01698 0.87317,-1.28689 3.15089,-3.48326 4.18771,-4.03815 l 0.53332,-28.51234 5.78454,-5.09197 6.95158,6.16704 -3.21112,3.49026 3.17616,3.45499 -3.17616,3.40822 2.98973,3.28645 -3.24843,3.3829 4.49203,4.58395 0.0516,5.69106 c 1.06874,0.64848 3.81974,3.24046 4.69548,4.56257 0.452,0.68241 1.06834,2.0197 1.36962,2.97176 0.62932,1.98864 0.88051,5.785 0.47342,7.15497 z m -10.0406,2.32604 c -0.88184,-3.17515 -4.92402,-3.78864 -6.75297,-1.02492 -0.58328,0.8814 -0.6898,1.28852 -0.58362,2.23056 0.26492,2.35041 2.45434,3.95262 4.60856,3.37255 1.19644,-0.32217 2.39435,-1.44872 2.72875,-2.56621 0.30682,-1.02529 0.30686,-0.9045 -7.9e-4,-2.01198 z" + id="path1971" + sodipodi:nodetypes="ssscsscccccccccccssscsssscc" /> + </g> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="28.809687" + y="44.070885" + id="text852-9"><tspan + sodipodi:role="line" + id="tspan850-4" + x="28.809687" + y="44.070885" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono Bold';stroke-width:0.264583">bucket </tspan></text> + </g> + <g + id="g2066-7" + transform="translate(-2.1807817,6.2627616)"> + <g + id="g1969-8" + transform="matrix(0.12763631,0,0,0.12763631,0.7215051,24.717273)" + style="fill:#ff6600;fill-opacity:1;stroke:none;stroke-opacity:1"> + <path + style="fill:#4040ff;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1" + d="m 203.71837,154.80038 c -1.11451,3.75057 -2.45288,5.84095 -5.11132,7.98327 -2.2735,1.83211 -4.66721,2.65982 -8.09339,2.79857 -2.59227,0.10498 -2.92868,0.0577 -5.02863,-0.70611 -3.99215,-1.45212 -7.1627,-4.65496 -8.48408,-8.57046 -1.28374,-3.80398 -0.61478,-8.68216 1.64793,-12.01698 0.87317,-1.28689 3.15089,-3.48326 4.18771,-4.03815 l 0.53332,-28.51234 5.78454,-5.09197 6.95158,6.16704 -3.21112,3.49026 3.17616,3.45499 -3.17616,3.40822 2.98973,3.28645 -3.24843,3.3829 4.49203,4.58395 0.0516,5.69106 c 1.06874,0.64848 3.81974,3.24046 4.69548,4.56257 0.452,0.68241 1.06834,2.0197 1.36962,2.97176 0.62932,1.98864 0.88051,5.785 0.47342,7.15497 z m -10.0406,2.32604 c -0.88184,-3.17515 -4.92402,-3.78864 -6.75297,-1.02492 -0.58328,0.8814 -0.6898,1.28852 -0.58362,2.23056 0.26492,2.35041 2.45434,3.95262 4.60856,3.37255 1.19644,-0.32217 2.39435,-1.44872 2.72875,-2.56621 0.30682,-1.02529 0.30686,-0.9045 -7.9e-4,-2.01198 z" + id="path1971-4" + sodipodi:nodetypes="ssscsscccccccccccssscsssscc" /> + </g> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="28.809687" + y="44.070885" + id="text852-9-5"><tspan + sodipodi:role="line" + id="tspan850-4-0" + x="28.809687" + y="44.070885" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono Bold';stroke-width:0.264583">file path </tspan></text> + <path + style="fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.0337704;stroke-opacity:1" + d="m 174.20027,104.45585 c -0.14225,0.47871 -0.31308,0.74552 -0.65239,1.01896 -0.29018,0.23384 -0.5957,0.33949 -1.03301,0.3572 -0.33087,0.0134 -0.37381,0.007 -0.64184,-0.0901 -0.50954,-0.18534 -0.91422,-0.59414 -1.08287,-1.0939 -0.16385,-0.48552 -0.0785,-1.10816 0.21033,-1.5338 0.11145,-0.16426 0.40217,-0.44459 0.53451,-0.51542 l 0.0681,-3.639207 0.73832,-0.64992 0.88727,0.787138 -0.40986,0.445484 0.4054,0.440982 -0.4054,0.435013 0.3816,0.41947 -0.41461,0.43178 0.57334,0.58508 0.007,0.72639 c 0.13641,0.0828 0.48753,0.4136 0.59931,0.58235 0.0577,0.0871 0.13636,0.25778 0.17481,0.3793 0.0803,0.25382 0.11239,0.73838 0.0604,0.91323 z m -1.28154,0.29689 c -0.11256,-0.40526 -0.62849,-0.48357 -0.86193,-0.13082 -0.0745,0.1125 -0.088,0.16447 -0.0745,0.2847 0.0338,0.3 0.31326,0.5045 0.58822,0.43046 0.15271,-0.0411 0.30561,-0.1849 0.34829,-0.32754 0.0392,-0.13086 0.0392,-0.11544 -1e-4,-0.2568 z" + id="path1971-3" + sodipodi:nodetypes="ssscsscccccccccccssscsssscc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="177.8474" + y="104.05132" + id="text852-9-6"><tspan + sodipodi:role="line" + id="tspan850-4-7" + x="177.8474" + y="104.05132" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono Bold';stroke-width:0.264583">= partition key </tspan></text> + <path + style="fill:#4040ff;fill-opacity:1;stroke:none;stroke-width:0.0337704;stroke-opacity:1" + d="m 174.20027,113.78076 c -0.14225,0.47871 -0.31308,0.74552 -0.65239,1.01895 -0.29018,0.23385 -0.5957,0.33949 -1.03301,0.3572 -0.33087,0.0134 -0.37381,0.007 -0.64184,-0.0901 -0.50954,-0.18534 -0.91422,-0.59414 -1.08287,-1.0939 -0.16385,-0.48553 -0.0785,-1.10816 0.21033,-1.53381 0.11145,-0.16425 0.40217,-0.44459 0.53451,-0.51541 l 0.0681,-3.63921 0.73832,-0.64992 0.88727,0.78714 -0.40986,0.44548 0.4054,0.44098 -0.4054,0.43502 0.3816,0.41947 -0.41461,0.43178 0.57334,0.58508 0.007,0.72638 c 0.13641,0.0828 0.48753,0.4136 0.59931,0.58235 0.0577,0.0871 0.13636,0.25779 0.17481,0.37931 0.0803,0.25382 0.11239,0.73837 0.0604,0.91323 z m -1.28154,0.29689 c -0.11256,-0.40527 -0.62849,-0.48357 -0.86193,-0.13082 -0.0745,0.1125 -0.088,0.16446 -0.0745,0.2847 0.0338,0.3 0.31326,0.5045 0.58822,0.43046 0.15271,-0.0411 0.30561,-0.18491 0.34829,-0.32754 0.0392,-0.13087 0.0392,-0.11545 -1e-4,-0.2568 z" + id="path1971-4-5" + sodipodi:nodetypes="ssscsscccccccccccssscsssscc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="177.8474" + y="113.37622" + id="text852-9-5-3"><tspan + sodipodi:role="line" + id="tspan850-4-0-5" + x="177.8474" + y="113.37622" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono Bold';stroke-width:0.264583">= sort key </tspan></text> + </g> + <g + id="g2161" + transform="translate(-62.264403,-59.333115)"> + <g + id="g2271" + transform="translate(0,67.042823)"> + <rect + style="fill:none;stroke:#000000;stroke-width:0.799999;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect833-6" + width="39.008453" + height="16.775949" + x="84.896881" + y="90.266838" /> + <rect + style="fill:none;stroke:#000000;stroke-width:0.799999;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect833-3-1" + width="39.008453" + height="8.673645" + x="84.896881" + y="98.369141" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="89.826942" + y="96.212921" + id="text852-0"><tspan + sodipodi:role="line" + id="tspan850-6" + x="89.826942" + y="96.212921" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono Bold';stroke-width:0.264583">Version 1</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="89.826942" + y="104.71013" + id="text852-0-3"><tspan + sodipodi:role="line" + id="tspan850-6-2" + x="89.826942" + y="104.71013" + style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono Bold';fill:#4d4d4d;stroke-width:0.264583">deleted</tspan></text> + </g> + </g> + <g + id="g2263" + transform="translate(0,-22.791204)"> + <g + id="g2161-1" + transform="translate(-62.264403,-10.910843)"> + <rect + style="fill:none;stroke:#000000;stroke-width:0.799999;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect833-6-5" + width="39.008453" + height="36.749603" + x="84.896881" + y="90.266838" /> + <rect + style="fill:none;stroke:#000000;stroke-width:0.799999;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect833-3-1-5" + width="39.008453" + height="28.647301" + x="84.896881" + y="98.369141" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="89.826942" + y="96.212921" + id="text852-0-4"><tspan + sodipodi:role="line" + id="tspan850-6-7" + x="89.826942" + y="96.212921" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono Bold';stroke-width:0.264583">Version 2</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="89.826942" + y="104.71013" + id="text852-0-3-6"><tspan + sodipodi:role="line" + id="tspan850-6-2-5" + x="89.826942" + y="104.71013" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono Bold';fill:#000000;stroke-width:0.264583">id</tspan></text> + </g> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="27.56254" + y="100.34132" + id="text852-0-3-6-6"><tspan + sodipodi:role="line" + id="tspan850-6-2-5-9" + x="27.56254" + y="100.34132" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono Bold';fill:#000000;stroke-width:0.264583">size</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="27.56254" + y="106.90263" + id="text852-0-3-6-6-3"><tspan + sodipodi:role="line" + id="tspan850-6-2-5-9-7" + x="27.56254" + y="106.90263" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono Bold';fill:#000000;stroke-width:0.264583">MIME type</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="27.56254" + y="111.92816" + id="text852-0-3-6-6-3-4"><tspan + sodipodi:role="line" + id="tspan850-6-2-5-9-7-5" + x="27.56254" + y="111.92816" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono Bold';fill:#000000;stroke-width:0.264583">...</tspan></text> + </g> + </g> + <g + id="g898" + transform="translate(-6.2484318,29.95006)"> + <rect + style="fill:none;stroke:#000000;stroke-width:0.799999;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect833-7" + width="47.419891" + height="44.007515" + x="95.443573" + y="24.42766" /> + <rect + style="fill:none;stroke:#000000;stroke-width:0.799999;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect833-3-4" + width="47.419891" + height="35.627186" + x="95.443573" + y="32.807987" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="107.46638" + y="29.894743" + id="text852-4"><tspan + sodipodi:role="line" + id="tspan850-3" + x="107.46638" + y="29.894743" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono Bold';stroke-width:0.264583">Version</tspan></text> + <path + style="fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.0337704;stroke-opacity:1" + d="m 102.90563,41.413279 c -0.14226,0.478709 -0.31308,0.745518 -0.65239,1.018956 -0.29019,0.233843 -0.59571,0.339489 -1.03301,0.357199 -0.33087,0.0134 -0.37381,0.0074 -0.64184,-0.09013 -0.50954,-0.185343 -0.914221,-0.594142 -1.082877,-1.093901 -0.163852,-0.485526 -0.07847,-1.108159 0.210335,-1.533803 0.111448,-0.164254 0.402172,-0.444591 0.534502,-0.515415 l 0.0681,-3.63921 0.73832,-0.64992 0.88727,0.787138 -0.40985,0.445484 0.40539,0.440982 -0.40539,0.435013 0.3816,0.41947 -0.41462,0.431781 0.57335,0.585078 0.007,0.726386 c 0.13641,0.08277 0.48753,0.413601 0.59931,0.58235 0.0577,0.0871 0.13636,0.257787 0.17481,0.379304 0.0803,0.253823 0.11239,0.738377 0.0604,0.913234 z m -1.28155,0.296888 c -0.11255,-0.405265 -0.62848,-0.483569 -0.86192,-0.130817 -0.0744,0.112498 -0.088,0.164461 -0.0745,0.2847 0.0338,0.299998 0.31326,0.504498 0.58822,0.43046 0.15271,-0.04112 0.3056,-0.184909 0.34828,-0.327542 0.0392,-0.130864 0.0392,-0.115447 -1e-4,-0.256801 z" + id="path1971-0" + sodipodi:nodetypes="ssscsscccccccccccssscsssscc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="104.99195" + y="41.008743" + id="text852-9-7"><tspan + sodipodi:role="line" + id="tspan850-4-8" + x="104.99195" + y="41.008743" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono Bold';stroke-width:0.264583">id </tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="104.99195" + y="49.168018" + id="text852-9-7-6"><tspan + sodipodi:role="line" + id="tspan850-4-8-8" + x="104.99195" + y="49.168018" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono Bold';stroke-width:0.264583">h(block 1)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="104.99195" + y="56.583336" + id="text852-9-7-6-8"><tspan + sodipodi:role="line" + id="tspan850-4-8-8-4" + x="104.99195" + y="56.583336" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono Bold';stroke-width:0.264583">h(block 2)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="104.99195" + y="64.265732" + id="text852-9-7-6-3"><tspan + sodipodi:role="line" + id="tspan850-4-8-8-1" + x="104.99195" + y="64.265732" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono Bold';stroke-width:0.264583">...</tspan></text> + </g> + <g + id="g898-3" + transform="translate(75.777779,38.888663)"> + <rect + style="fill:none;stroke:#000000;stroke-width:0.799999;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect833-7-6" + width="47.419891" + height="29.989157" + x="95.443573" + y="24.42766" /> + <rect + style="fill:none;stroke:#000000;stroke-width:0.799999;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect833-3-4-7" + width="47.419891" + height="21.608831" + x="95.443573" + y="32.807987" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="102.11134" + y="29.894743" + id="text852-4-5"><tspan + sodipodi:role="line" + id="tspan850-3-3" + x="102.11134" + y="29.894743" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono Bold';stroke-width:0.264583">Data block</tspan></text> + <path + style="fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.0337704;stroke-opacity:1" + d="m 102.90563,41.413279 c -0.14226,0.478709 -0.31308,0.745518 -0.65239,1.018956 -0.29019,0.233843 -0.59571,0.339489 -1.03301,0.357199 -0.33087,0.0134 -0.37381,0.0074 -0.64184,-0.09013 -0.50954,-0.185343 -0.914221,-0.594142 -1.082877,-1.093901 -0.163852,-0.485526 -0.07847,-1.108159 0.210335,-1.533803 0.111448,-0.164254 0.402172,-0.444591 0.534502,-0.515415 l 0.0681,-3.63921 0.73832,-0.64992 0.88727,0.787138 -0.40985,0.445484 0.40539,0.440982 -0.40539,0.435013 0.3816,0.41947 -0.41462,0.431781 0.57335,0.585078 0.007,0.726386 c 0.13641,0.08277 0.48753,0.413601 0.59931,0.58235 0.0577,0.0871 0.13636,0.257787 0.17481,0.379304 0.0803,0.253823 0.11239,0.738377 0.0604,0.913234 z m -1.28155,0.296888 c -0.11255,-0.405265 -0.62848,-0.483569 -0.86192,-0.130817 -0.0744,0.112498 -0.088,0.164461 -0.0745,0.2847 0.0338,0.299998 0.31326,0.504498 0.58822,0.43046 0.15271,-0.04112 0.3056,-0.184909 0.34828,-0.327542 0.0392,-0.130864 0.0392,-0.115447 -1e-4,-0.256801 z" + id="path1971-0-5" + sodipodi:nodetypes="ssscsscccccccccccssscsssscc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="104.99195" + y="41.008743" + id="text852-9-7-62"><tspan + sodipodi:role="line" + id="tspan850-4-8-9" + x="104.99195" + y="41.008743" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono Bold';stroke-width:0.264583">hash </tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="104.99195" + y="49.168018" + id="text852-9-7-6-1"><tspan + sodipodi:role="line" + id="tspan850-4-8-8-2" + x="104.99195" + y="49.168018" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono Bold';stroke-width:0.264583">data</tspan></text> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend)" + d="M 42.105292,69.455903 89.563703,69.317144" + id="path954" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1262)" + d="m 134.32612,77.363197 38.12618,0.260865" + id="path1258" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="8.6727352" + y="16.687063" + id="text852-3"><tspan + sodipodi:role="line" + id="tspan850-67" + x="8.6727352" + y="16.687063" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono Bold';stroke-width:0.264583">Objects table </tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="89.190445" + y="16.687063" + id="text852-3-5"><tspan + sodipodi:role="line" + id="tspan850-67-3" + x="89.190445" + y="16.687063" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono Bold';stroke-width:0.264583">Versions table </tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="174.55702" + y="16.687063" + id="text852-3-56"><tspan + sodipodi:role="line" + id="tspan850-67-2" + x="174.55702" + y="16.687063" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono Bold';stroke-width:0.264583">Blocks table</tspan></text> + </g> +</svg> diff --git a/doc/talks/2023-01-18-tocatta/assets/inframap.jpg b/doc/talks/2023-01-18-tocatta/assets/inframap.jpg Binary files differnew file mode 100644 index 00000000..19905a99 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/inframap.jpg diff --git a/doc/talks/2023-01-18-tocatta/assets/lattice1.svg b/doc/talks/2023-01-18-tocatta/assets/lattice1.svg new file mode 100644 index 00000000..8bfa5aa7 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/lattice1.svg @@ -0,0 +1,433 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="1000" + height="400" + viewBox="0 0 264.58333 105.83333" + version="1.1" + id="svg5" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + sodipodi:docname="lattice1.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="1.0419012" + inkscape:cx="445.81962" + inkscape:cy="222.66987" + inkscape:window-width="1920" + inkscape:window-height="999" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer2" /> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="Arrow2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3-2" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1-4" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8-7" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2-8" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6-4" /> + </marker> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + sodipodi:insensitive="true"> + <rect + style="fill:#ffffff;stroke:none;stroke-width:1;stop-color:#000000" + id="rect288" + width="209.84705" + height="104.42732" + x="0.77790999" + y="0.93738818" /> + </g> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="Layer 2"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="164.56372" + y="99.307442" + id="text951"><tspan + sodipodi:role="line" + id="tspan949" + style="stroke-width:0.264583;fill:#000000" + x="164.56372" + y="99.307442">$\{\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="164.56372" + y="13.151893" + id="text1005"><tspan + sodipodi:role="line" + id="tspan1003" + style="stroke-width:0.264583;fill:#000000" + x="164.56372" + y="13.151893">$\{a,b,c\}$</tspan></text> + <g + id="g1175" + transform="translate(51.996784,3.5774043)"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="49.27084" + y="67.008698" + id="text1009"><tspan + sodipodi:role="line" + id="tspan1007" + style="stroke-width:0.264583;fill:#000000" + x="49.27084" + y="67.008698">$\{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="112.90984" + y="67.017166" + id="text1009-3"><tspan + sodipodi:role="line" + id="tspan1007-6" + style="stroke-width:0.264583;fill:#000000" + x="112.90984" + y="67.017166">$\{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="176.20593" + y="67.008698" + id="text1009-7"><tspan + sodipodi:role="line" + id="tspan1007-5" + style="stroke-width:0.264583;fill:#000000" + x="176.20593" + y="67.008698">$\{c\}$</tspan></text> + </g> + <g + id="g1183" + transform="translate(51.996784,1.0317046)"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="112.90984" + y="40.841526" + id="text1117"><tspan + sodipodi:role="line" + id="tspan1115" + style="stroke-width:0.264583;fill:#000000" + x="112.90984" + y="40.841526">$\{a,c\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="49.27084" + y="40.841526" + id="text1117-3"><tspan + sodipodi:role="line" + id="tspan1115-5" + style="stroke-width:0.264583;fill:#000000" + x="49.27084" + y="40.841526">$\{a,b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="176.20593" + y="40.841526" + id="text1117-6"><tspan + sodipodi:role="line" + id="tspan1115-2" + style="stroke-width:0.264583;fill:#000000" + x="176.20593" + y="40.841526">$\{b,c\}$</tspan></text> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2)" + d="M 153.33622,90.367682 118.34198,73.428915" + id="path1300" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9)" + d="M 177.46016,90.367682 212.4544,73.428915" + id="path1300-2" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93)" + d="M 153.33622,61.655656 118.34198,44.716889" + id="path1300-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7)" + d="M 177.46016,61.655656 212.4544,44.716889" + id="path1300-2-6" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1)" + d="M 118.34198,61.655656 153.33622,44.716889" + id="path1300-0-7" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2)" + d="M 212.4544,61.655656 177.46016,44.716889" + id="path1300-2-6-9" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1-4)" + d="M 118.34198,34.227412 153.33622,17.288645" + id="path1300-0-7-5" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2-8)" + d="M 212.4544,34.227412 177.46016,17.288645" + id="path1300-2-6-9-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75)" + d="m 228.52843,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-2)" + d="m 101.90418,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-9" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7)" + d="m 165.29305,89.571762 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7-1)" + d="m 165.29305,32.445235 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6-9" + sodipodi:nodetypes="cc" /> + </g> +</svg> diff --git a/doc/talks/2023-01-18-tocatta/assets/lattice2.svg b/doc/talks/2023-01-18-tocatta/assets/lattice2.svg new file mode 100644 index 00000000..adcd92cb --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/lattice2.svg @@ -0,0 +1,514 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="1000" + height="400" + viewBox="0 0 264.58333 105.83333" + version="1.1" + id="svg5" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + sodipodi:docname="lattice2.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="1.0419012" + inkscape:cx="384.39345" + inkscape:cy="227.46879" + inkscape:window-width="1920" + inkscape:window-height="999" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer2" /> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="Arrow2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3-2" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1-4" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8-7" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2-8" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6-4" /> + </marker> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + sodipodi:insensitive="true"> + <rect + style="fill:#ffffff;stroke:none;stroke-width:1;stop-color:#000000" + id="rect288" + width="209.84705" + height="104.42732" + x="0.77790999" + y="0.93738818" /> + </g> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="Layer 2"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="164.56372" + y="99.307442" + id="text951"><tspan + sodipodi:role="line" + id="tspan949" + style="stroke-width:0.264583;fill:#000000" + x="164.56372" + y="99.307442">$\{\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="164.56372" + y="13.151893" + id="text1005"><tspan + sodipodi:role="line" + id="tspan1003" + style="stroke-width:0.264583;fill:#000000" + x="164.56372" + y="13.151893">$\{a,b,c\}$</tspan></text> + <g + id="g1175" + transform="translate(51.996784,3.5774043)"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="49.27084" + y="67.008698" + id="text1009"><tspan + sodipodi:role="line" + id="tspan1007" + style="stroke-width:0.264583;fill:#000000" + x="49.27084" + y="67.008698">$\{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="112.90984" + y="67.017166" + id="text1009-3"><tspan + sodipodi:role="line" + id="tspan1007-6" + style="stroke-width:0.264583;fill:#000000" + x="112.90984" + y="67.017166">$\{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="176.20593" + y="67.008698" + id="text1009-7"><tspan + sodipodi:role="line" + id="tspan1007-5" + style="stroke-width:0.264583;fill:#000000" + x="176.20593" + y="67.008698">$\{c\}$</tspan></text> + </g> + <g + id="g1183" + transform="translate(51.996784,1.0317046)" + style="fill:#000000"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="112.90984" + y="40.841526" + id="text1117"><tspan + sodipodi:role="line" + id="tspan1115" + style="stroke-width:0.264583;fill:#000000" + x="112.90984" + y="40.841526">$\{a,c\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="49.27084" + y="40.841526" + id="text1117-3"><tspan + sodipodi:role="line" + id="tspan1115-5" + style="stroke-width:0.264583;fill:#000000" + x="49.27084" + y="40.841526">$\{a,b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="176.20593" + y="40.841526" + id="text1117-6"><tspan + sodipodi:role="line" + id="tspan1115-2" + style="stroke-width:0.264583;fill:#000000" + x="176.20593" + y="40.841526">$\{b,c\}$</tspan></text> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2)" + d="M 153.33622,90.367682 118.34198,73.428915" + id="path1300" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9)" + d="M 177.46016,90.367682 212.4544,73.428915" + id="path1300-2" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93)" + d="M 153.33622,61.655656 118.34198,44.716889" + id="path1300-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7)" + d="M 177.46016,61.655656 212.4544,44.716889" + id="path1300-2-6" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1)" + d="M 118.34198,61.655656 153.33622,44.716889" + id="path1300-0-7" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2)" + d="M 212.4544,61.655656 177.46016,44.716889" + id="path1300-2-6-9" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1-4)" + d="M 118.34198,34.227412 153.33622,17.288645" + id="path1300-0-7-5" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2-8)" + d="M 212.4544,34.227412 177.46016,17.288645" + id="path1300-2-6-9-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75)" + d="m 228.52843,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-2)" + d="m 101.90418,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-9" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7)" + d="m 165.29305,89.571762 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7-1)" + d="m 165.29305,32.445235 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6-9" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663" + cx="147.35568" + cy="95.24971" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3" + cx="139.48744" + cy="95.24971" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6" + cx="131.61919" + cy="95.24971" + r="2.7302806" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1" + cx="18.004833" + cy="39.402473" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0" + cx="18.004833" + cy="30.371933" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6" + cx="18.004833" + cy="21.341394" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583;fill:#000000" + x="6.9525447" + y="13.702217" + id="text3707"><tspan + sodipodi:role="line" + id="tspan3705" + style="stroke-width:0.264583;fill:#000000" + x="6.9525447" + y="13.702217">$write(\{a\})$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="24.042637" + id="text3750"><tspan + sodipodi:role="line" + id="tspan3748" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="24.042637">$\not\sqsupseteq \{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="33.02087" + id="text3750-3"><tspan + sodipodi:role="line" + id="tspan3748-2" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="33.02087">$\not\sqsupseteq \{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523" + id="text3750-0"><tspan + sodipodi:role="line" + id="tspan3748-6" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523">$\not\sqsupseteq \{a\}$</tspan></text> + </g> +</svg> diff --git a/doc/talks/2023-01-18-tocatta/assets/lattice3.svg b/doc/talks/2023-01-18-tocatta/assets/lattice3.svg new file mode 100644 index 00000000..640dc468 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/lattice3.svg @@ -0,0 +1,515 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="1000" + height="400" + viewBox="0 0 264.58333 105.83333" + version="1.1" + id="svg5" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + sodipodi:docname="lattice3.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="1.4734708" + inkscape:cx="324.06479" + inkscape:cy="168.98876" + inkscape:window-width="1920" + inkscape:window-height="999" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer2" /> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="Arrow2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3-2" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1-4" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8-7" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2-8" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6-4" /> + </marker> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + sodipodi:insensitive="true"> + <rect + style="fill:#ffffff;stroke:none;stroke-width:1;stop-color:#000000" + id="rect288" + width="209.84705" + height="104.42732" + x="0.77790999" + y="0.93738818" /> + </g> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="Layer 2"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="164.56372" + y="99.307442" + id="text951"><tspan + sodipodi:role="line" + id="tspan949" + style="stroke-width:0.264583;fill:#000000" + x="164.56372" + y="99.307442">$\{\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="164.56372" + y="13.151893" + id="text1005"><tspan + sodipodi:role="line" + id="tspan1003" + style="stroke-width:0.264583;fill:#000000" + x="164.56372" + y="13.151893">$\{a,b,c\}$</tspan></text> + <g + id="g1175" + transform="translate(51.996784,3.5774043)" + style="fill:#000000"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="49.27084" + y="67.008698" + id="text1009"><tspan + sodipodi:role="line" + id="tspan1007" + style="stroke-width:0.264583;fill:#000000" + x="49.27084" + y="67.008698">$\{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="112.90984" + y="67.017166" + id="text1009-3"><tspan + sodipodi:role="line" + id="tspan1007-6" + style="stroke-width:0.264583;fill:#000000" + x="112.90984" + y="67.017166">$\{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="176.20593" + y="67.008698" + id="text1009-7"><tspan + sodipodi:role="line" + id="tspan1007-5" + style="stroke-width:0.264583;fill:#000000" + x="176.20593" + y="67.008698">$\{c\}$</tspan></text> + </g> + <g + id="g1183" + transform="translate(51.996784,1.0317046)" + style="fill:#000000"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="112.90984" + y="40.841526" + id="text1117"><tspan + sodipodi:role="line" + id="tspan1115" + style="stroke-width:0.264583;fill:#000000" + x="112.90984" + y="40.841526">$\{a,c\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="49.27084" + y="40.841526" + id="text1117-3"><tspan + sodipodi:role="line" + id="tspan1115-5" + style="stroke-width:0.264583;fill:#000000" + x="49.27084" + y="40.841526">$\{a,b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="176.20593" + y="40.841526" + id="text1117-6"><tspan + sodipodi:role="line" + id="tspan1115-2" + style="stroke-width:0.264583;fill:#000000" + x="176.20593" + y="40.841526">$\{b,c\}$</tspan></text> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2)" + d="M 153.33622,90.367682 118.34198,73.428915" + id="path1300" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9)" + d="M 177.46016,90.367682 212.4544,73.428915" + id="path1300-2" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93)" + d="M 153.33622,61.655656 118.34198,44.716889" + id="path1300-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7)" + d="M 177.46016,61.655656 212.4544,44.716889" + id="path1300-2-6" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1)" + d="M 118.34198,61.655656 153.33622,44.716889" + id="path1300-0-7" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2)" + d="M 212.4544,61.655656 177.46016,44.716889" + id="path1300-2-6-9" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1-4)" + d="M 118.34198,34.227412 153.33622,17.288645" + id="path1300-0-7-5" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2-8)" + d="M 212.4544,34.227412 177.46016,17.288645" + id="path1300-2-6-9-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75)" + d="m 228.52843,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-2)" + d="m 101.90418,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-9" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7)" + d="m 165.29305,89.571762 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7-1)" + d="m 165.29305,32.445235 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6-9" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663" + cx="147.35568" + cy="95.24971" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3" + cx="139.48744" + cy="95.24971" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6" + cx="119.58919" + cy="67.645035" + r="2.7302806" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1" + cx="18.004833" + cy="39.402473" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0" + cx="18.004833" + cy="30.371933" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6" + cx="18.004833" + cy="21.341394" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583;fill:#000000" + x="6.9525447" + y="13.702217" + id="text3707"><tspan + sodipodi:role="line" + id="tspan3705" + style="stroke-width:0.264583;fill:#000000" + x="6.9525447" + y="13.702217">$write(\{a\})$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637" + id="text3750"><tspan + sodipodi:role="line" + id="tspan3748" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637">$\sqsupseteq \{a\} \to$ OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="33.02087" + id="text3750-3"><tspan + sodipodi:role="line" + id="tspan3748-2" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="33.02087">$\not\sqsupseteq \{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523" + id="text3750-0"><tspan + sodipodi:role="line" + id="tspan3748-6" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523">$\not\sqsupseteq \{a\}$</tspan></text> + </g> +</svg> diff --git a/doc/talks/2023-01-18-tocatta/assets/lattice4.svg b/doc/talks/2023-01-18-tocatta/assets/lattice4.svg new file mode 100644 index 00000000..b2a99e28 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/lattice4.svg @@ -0,0 +1,525 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="1000" + height="400" + viewBox="0 0 264.58333 105.83333" + version="1.1" + id="svg5" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + sodipodi:docname="lattice4.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="0.73673541" + inkscape:cx="287.07728" + inkscape:cy="294.54265" + inkscape:window-width="1920" + inkscape:window-height="999" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer2" /> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="Arrow2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3-2" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1-4" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8-7" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2-8" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6-4" /> + </marker> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + sodipodi:insensitive="true"> + <rect + style="fill:#ffffff;stroke:none;stroke-width:1;stop-color:#000000" + id="rect288" + width="209.84705" + height="104.42732" + x="0.77790999" + y="0.93738818" /> + </g> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="Layer 2"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="164.56372" + y="99.307442" + id="text951"><tspan + sodipodi:role="line" + id="tspan949" + style="stroke-width:0.264583;fill:#000000" + x="164.56372" + y="99.307442">$\{\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="164.56372" + y="13.151893" + id="text1005"><tspan + sodipodi:role="line" + id="tspan1003" + style="stroke-width:0.264583;fill:#000000" + x="164.56372" + y="13.151893">$\{a,b,c\}$</tspan></text> + <g + id="g1175" + transform="translate(51.996784,3.5774043)"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="49.27084" + y="67.008698" + id="text1009"><tspan + sodipodi:role="line" + id="tspan1007" + style="stroke-width:0.264583;fill:#000000" + x="49.27084" + y="67.008698">$\{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="112.90984" + y="67.017166" + id="text1009-3"><tspan + sodipodi:role="line" + id="tspan1007-6" + style="stroke-width:0.264583;fill:#000000" + x="112.90984" + y="67.017166">$\{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="176.20593" + y="67.008698" + id="text1009-7"><tspan + sodipodi:role="line" + id="tspan1007-5" + style="stroke-width:0.264583;fill:#000000" + x="176.20593" + y="67.008698">$\{c\}$</tspan></text> + </g> + <g + id="g1183" + transform="translate(51.996784,1.0317046)" + style="fill:#000000"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="112.90984" + y="40.841526" + id="text1117"><tspan + sodipodi:role="line" + id="tspan1115" + style="stroke-width:0.264583;fill:#000000" + x="112.90984" + y="40.841526">$\{a,c\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="49.27084" + y="40.841526" + id="text1117-3"><tspan + sodipodi:role="line" + id="tspan1115-5" + style="stroke-width:0.264583;fill:#000000" + x="49.27084" + y="40.841526">$\{a,b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="176.20593" + y="40.841526" + id="text1117-6"><tspan + sodipodi:role="line" + id="tspan1115-2" + style="stroke-width:0.264583;fill:#000000" + x="176.20593" + y="40.841526">$\{b,c\}$</tspan></text> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2)" + d="M 153.33622,90.367682 118.34198,73.428915" + id="path1300" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9)" + d="M 177.46016,90.367682 212.4544,73.428915" + id="path1300-2" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93)" + d="M 153.33622,61.655656 118.34198,44.716889" + id="path1300-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7)" + d="M 177.46016,61.655656 212.4544,44.716889" + id="path1300-2-6" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1)" + d="M 118.34198,61.655656 153.33622,44.716889" + id="path1300-0-7" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2)" + d="M 212.4544,61.655656 177.46016,44.716889" + id="path1300-2-6-9" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1-4)" + d="M 118.34198,34.227412 153.33622,17.288645" + id="path1300-0-7-5" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2-8)" + d="M 212.4544,34.227412 177.46016,17.288645" + id="path1300-2-6-9-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75)" + d="m 228.52843,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-2)" + d="m 101.90418,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-9" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7)" + d="m 165.29305,89.571762 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7-1)" + d="m 165.29305,32.445235 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6-9" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663" + cx="147.35568" + cy="95.24971" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3" + cx="126.08154" + cy="67.968384" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6" + cx="119.58919" + cy="67.645035" + r="2.7302806" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1" + cx="18.004833" + cy="39.402473" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0" + cx="18.004833" + cy="30.371933" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6" + cx="18.004833" + cy="21.341394" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583;fill:#000000" + x="6.9525447" + y="13.702217" + id="text3707"><tspan + sodipodi:role="line" + id="tspan3705" + style="stroke-width:0.264583;fill:#000000" + x="6.9525447" + y="13.702217">$write(\{a\})$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637" + id="text3750"><tspan + sodipodi:role="line" + id="tspan3748" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637">$\sqsupseteq \{a\} \to$ OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="33.02087" + id="text3750-3"><tspan + sodipodi:role="line" + id="tspan3748-2" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="33.02087">$\sqsupseteq \{a\} \to$ OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523" + id="text3750-0"><tspan + sodipodi:role="line" + id="tspan3748-6" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523">$\not\sqsupseteq \{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="14.395845" + y="52.022549" + id="text4280"><tspan + sodipodi:role="line" + id="tspan4278" + style="fill:#000000;stroke-width:0.264583" + x="14.395845" + y="52.022549">return OK</tspan></text> + </g> +</svg> diff --git a/doc/talks/2023-01-18-tocatta/assets/lattice5.svg b/doc/talks/2023-01-18-tocatta/assets/lattice5.svg new file mode 100644 index 00000000..bc6b7195 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/lattice5.svg @@ -0,0 +1,536 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="1000" + height="400" + viewBox="0 0 264.58333 105.83333" + version="1.1" + id="svg5" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + sodipodi:docname="lattice5.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="1.0419012" + inkscape:cx="276.89766" + inkscape:cy="254.34273" + inkscape:window-width="1920" + inkscape:window-height="999" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer2" /> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="Arrow2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3-2" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1-4" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8-7" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2-8" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6-4" /> + </marker> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + sodipodi:insensitive="true"> + <rect + style="fill:#ffffff;stroke:none;stroke-width:1;stop-color:#000000" + id="rect288" + width="209.84705" + height="104.42732" + x="0.77790999" + y="0.93738818" /> + </g> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="Layer 2"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="164.56372" + y="99.307442" + id="text951"><tspan + sodipodi:role="line" + id="tspan949" + style="stroke-width:0.264583;fill:#000000" + x="164.56372" + y="99.307442">$\{\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="164.56372" + y="13.151893" + id="text1005"><tspan + sodipodi:role="line" + id="tspan1003" + style="stroke-width:0.264583;fill:#000000" + x="164.56372" + y="13.151893">$\{a,b,c\}$</tspan></text> + <g + id="g1175" + transform="translate(51.996784,3.5774043)"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="49.27084" + y="67.008698" + id="text1009"><tspan + sodipodi:role="line" + id="tspan1007" + style="stroke-width:0.264583;fill:#000000" + x="49.27084" + y="67.008698">$\{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="112.90984" + y="67.017166" + id="text1009-3"><tspan + sodipodi:role="line" + id="tspan1007-6" + style="stroke-width:0.264583;fill:#000000" + x="112.90984" + y="67.017166">$\{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="176.20593" + y="67.008698" + id="text1009-7"><tspan + sodipodi:role="line" + id="tspan1007-5" + style="stroke-width:0.264583;fill:#000000" + x="176.20593" + y="67.008698">$\{c\}$</tspan></text> + </g> + <g + id="g1183" + transform="translate(51.996784,1.0317046)" + style="fill:#000000"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="112.90984" + y="40.841526" + id="text1117"><tspan + sodipodi:role="line" + id="tspan1115" + style="stroke-width:0.264583;fill:#000000" + x="112.90984" + y="40.841526">$\{a,c\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="49.27084" + y="40.841526" + id="text1117-3"><tspan + sodipodi:role="line" + id="tspan1115-5" + style="stroke-width:0.264583;fill:#000000" + x="49.27084" + y="40.841526">$\{a,b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="176.20593" + y="40.841526" + id="text1117-6"><tspan + sodipodi:role="line" + id="tspan1115-2" + style="stroke-width:0.264583;fill:#000000" + x="176.20593" + y="40.841526">$\{b,c\}$</tspan></text> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2)" + d="M 153.33622,90.367682 118.34198,73.428915" + id="path1300" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9)" + d="M 177.46016,90.367682 212.4544,73.428915" + id="path1300-2" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93)" + d="M 153.33622,61.655656 118.34198,44.716889" + id="path1300-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7)" + d="M 177.46016,61.655656 212.4544,44.716889" + id="path1300-2-6" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1)" + d="M 118.34198,61.655656 153.33622,44.716889" + id="path1300-0-7" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2)" + d="M 212.4544,61.655656 177.46016,44.716889" + id="path1300-2-6-9" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1-4)" + d="M 118.34198,34.227412 153.33622,17.288645" + id="path1300-0-7-5" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2-8)" + d="M 212.4544,34.227412 177.46016,17.288645" + id="path1300-2-6-9-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75)" + d="m 228.52843,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-2)" + d="m 101.90418,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-9" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7)" + d="m 165.29305,89.571762 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7-1)" + d="m 165.29305,32.445235 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6-9" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663" + cx="147.35568" + cy="95.24971" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3" + cx="126.08154" + cy="67.968384" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6" + cx="119.58919" + cy="67.645035" + r="2.7302806" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1" + cx="18.004833" + cy="39.402473" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0" + cx="18.004833" + cy="30.371933" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6" + cx="18.004833" + cy="21.341394" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583;fill:#000000" + x="6.9525447" + y="13.702217" + id="text3707"><tspan + sodipodi:role="line" + id="tspan3705" + style="stroke-width:0.264583;fill:#000000" + x="6.9525447" + y="13.702217">$write(\{a\})$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="65.261436" + id="text3707-1"><tspan + sodipodi:role="line" + id="tspan3705-5" + style="fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="65.261436">$read()$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637" + id="text3750"><tspan + sodipodi:role="line" + id="tspan3748" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637">$\sqsupseteq \{a\} \to$ OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="33.02087" + id="text3750-3"><tspan + sodipodi:role="line" + id="tspan3748-2" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="33.02087">$\sqsupseteq \{a\} \to$ OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523" + id="text3750-0"><tspan + sodipodi:role="line" + id="tspan3748-6" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523">$\not\sqsupseteq \{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="14.395845" + y="52.022549" + id="text4280"><tspan + sodipodi:role="line" + id="tspan4278" + style="fill:#000000;stroke-width:0.264583" + x="14.395845" + y="52.022549">return OK</tspan></text> + </g> +</svg> diff --git a/doc/talks/2023-01-18-tocatta/assets/lattice6.svg b/doc/talks/2023-01-18-tocatta/assets/lattice6.svg new file mode 100644 index 00000000..176b1715 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/lattice6.svg @@ -0,0 +1,553 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="1000" + height="400" + viewBox="0 0 264.58333 105.83333" + version="1.1" + id="svg5" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + sodipodi:docname="lattice6.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="1.0419012" + inkscape:cx="277.85744" + inkscape:cy="254.34273" + inkscape:window-width="1920" + inkscape:window-height="999" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer2" /> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="Arrow2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3-2" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1-4" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8-7" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2-8" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6-4" /> + </marker> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + sodipodi:insensitive="true"> + <rect + style="fill:#ffffff;stroke:none;stroke-width:1;stop-color:#000000" + id="rect288" + width="209.84705" + height="104.42732" + x="0.77790999" + y="0.93738818" /> + </g> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="Layer 2"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="164.56372" + y="99.307442" + id="text951"><tspan + sodipodi:role="line" + id="tspan949" + style="stroke-width:0.264583;fill:#000000" + x="164.56372" + y="99.307442">$\{\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="164.56372" + y="13.151893" + id="text1005"><tspan + sodipodi:role="line" + id="tspan1003" + style="stroke-width:0.264583;fill:#000000" + x="164.56372" + y="13.151893">$\{a,b,c\}$</tspan></text> + <g + id="g1175" + transform="translate(51.996784,3.5774043)"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="49.27084" + y="67.008698" + id="text1009"><tspan + sodipodi:role="line" + id="tspan1007" + style="stroke-width:0.264583;fill:#000000" + x="49.27084" + y="67.008698">$\{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="112.90984" + y="67.017166" + id="text1009-3"><tspan + sodipodi:role="line" + id="tspan1007-6" + style="stroke-width:0.264583;fill:#000000" + x="112.90984" + y="67.017166">$\{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="176.20593" + y="67.008698" + id="text1009-7"><tspan + sodipodi:role="line" + id="tspan1007-5" + style="stroke-width:0.264583;fill:#000000" + x="176.20593" + y="67.008698">$\{c\}$</tspan></text> + </g> + <g + id="g1183" + transform="translate(51.996784,1.0317046)" + style="fill:#000000"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="112.90984" + y="40.841526" + id="text1117"><tspan + sodipodi:role="line" + id="tspan1115" + style="stroke-width:0.264583;fill:#000000" + x="112.90984" + y="40.841526">$\{a,c\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="49.27084" + y="40.841526" + id="text1117-3"><tspan + sodipodi:role="line" + id="tspan1115-5" + style="stroke-width:0.264583;fill:#000000" + x="49.27084" + y="40.841526">$\{a,b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="176.20593" + y="40.841526" + id="text1117-6"><tspan + sodipodi:role="line" + id="tspan1115-2" + style="stroke-width:0.264583;fill:#000000" + x="176.20593" + y="40.841526">$\{b,c\}$</tspan></text> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2)" + d="M 153.33622,90.367682 118.34198,73.428915" + id="path1300" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9)" + d="M 177.46016,90.367682 212.4544,73.428915" + id="path1300-2" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93)" + d="M 153.33622,61.655656 118.34198,44.716889" + id="path1300-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7)" + d="M 177.46016,61.655656 212.4544,44.716889" + id="path1300-2-6" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1)" + d="M 118.34198,61.655656 153.33622,44.716889" + id="path1300-0-7" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2)" + d="M 212.4544,61.655656 177.46016,44.716889" + id="path1300-2-6-9" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1-4)" + d="M 118.34198,34.227412 153.33622,17.288645" + id="path1300-0-7-5" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2-8)" + d="M 212.4544,34.227412 177.46016,17.288645" + id="path1300-2-6-9-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75)" + d="m 228.52843,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-2)" + d="m 101.90418,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-9" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7)" + d="m 165.29305,89.571762 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7-1)" + d="m 165.29305,32.445235 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6-9" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663" + cx="147.35568" + cy="95.24971" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3" + cx="126.08154" + cy="67.968384" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6" + cx="119.58919" + cy="67.645035" + r="2.7302806" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1" + cx="18.004833" + cy="39.402473" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0" + cx="18.004833" + cy="30.371933" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6" + cx="18.004833" + cy="21.341394" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583;fill:#000000" + x="6.9525447" + y="13.702217" + id="text3707"><tspan + sodipodi:role="line" + id="tspan3705" + style="stroke-width:0.264583;fill:#000000" + x="6.9525447" + y="13.702217">$write(\{a\})$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="65.261436" + id="text3707-1"><tspan + sodipodi:role="line" + id="tspan3705-5" + style="fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="65.261436">$read()$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637" + id="text3750"><tspan + sodipodi:role="line" + id="tspan3748" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637">$\sqsupseteq \{a\} \to$ OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="33.02087" + id="text3750-3"><tspan + sodipodi:role="line" + id="tspan3748-2" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="33.02087">$\sqsupseteq \{a\} \to$ OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523" + id="text3750-0"><tspan + sodipodi:role="line" + id="tspan3748-6" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523">$\not\sqsupseteq \{a\}$</tspan></text> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6-4" + cx="18.004833" + cy="70.942116" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="73.643356" + id="text3750-7"><tspan + sodipodi:role="line" + id="tspan3748-65" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="73.643356">$\to \{\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="14.395845" + y="52.022549" + id="text4280"><tspan + sodipodi:role="line" + id="tspan4278" + style="fill:#000000;stroke-width:0.264583" + x="14.395845" + y="52.022549">return OK</tspan></text> + </g> +</svg> diff --git a/doc/talks/2023-01-18-tocatta/assets/lattice7.svg b/doc/talks/2023-01-18-tocatta/assets/lattice7.svg new file mode 100644 index 00000000..7ce8bda8 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/lattice7.svg @@ -0,0 +1,581 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="1000" + height="400" + viewBox="0 0 264.58333 105.83333" + version="1.1" + id="svg5" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + sodipodi:docname="lattice7.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="1.0419012" + inkscape:cx="276.89766" + inkscape:cy="254.34273" + inkscape:window-width="1920" + inkscape:window-height="999" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer2" /> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="Arrow2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3-2" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1-4" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8-7" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2-8" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6-4" /> + </marker> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + sodipodi:insensitive="true"> + <rect + style="fill:#ffffff;stroke:none;stroke-width:1;stop-color:#000000" + id="rect288" + width="209.84705" + height="104.42732" + x="0.77790999" + y="0.93738818" /> + </g> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="Layer 2"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="164.56372" + y="99.307442" + id="text951"><tspan + sodipodi:role="line" + id="tspan949" + style="stroke-width:0.264583;fill:#000000" + x="164.56372" + y="99.307442">$\{\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="164.56372" + y="13.151893" + id="text1005"><tspan + sodipodi:role="line" + id="tspan1003" + style="stroke-width:0.264583;fill:#000000" + x="164.56372" + y="13.151893">$\{a,b,c\}$</tspan></text> + <g + id="g1175" + transform="translate(51.996784,3.5774043)"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="49.27084" + y="67.008698" + id="text1009"><tspan + sodipodi:role="line" + id="tspan1007" + style="stroke-width:0.264583;fill:#000000" + x="49.27084" + y="67.008698">$\{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="112.90984" + y="67.017166" + id="text1009-3"><tspan + sodipodi:role="line" + id="tspan1007-6" + style="stroke-width:0.264583;fill:#000000" + x="112.90984" + y="67.017166">$\{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="176.20593" + y="67.008698" + id="text1009-7"><tspan + sodipodi:role="line" + id="tspan1007-5" + style="stroke-width:0.264583;fill:#000000" + x="176.20593" + y="67.008698">$\{c\}$</tspan></text> + </g> + <g + id="g1183" + transform="translate(51.996784,1.0317046)" + style="fill:#000000"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="112.90984" + y="40.841526" + id="text1117"><tspan + sodipodi:role="line" + id="tspan1115" + style="stroke-width:0.264583;fill:#000000" + x="112.90984" + y="40.841526">$\{a,c\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="49.27084" + y="40.841526" + id="text1117-3"><tspan + sodipodi:role="line" + id="tspan1115-5" + style="stroke-width:0.264583;fill:#000000" + x="49.27084" + y="40.841526">$\{a,b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="176.20593" + y="40.841526" + id="text1117-6"><tspan + sodipodi:role="line" + id="tspan1115-2" + style="stroke-width:0.264583;fill:#000000" + x="176.20593" + y="40.841526">$\{b,c\}$</tspan></text> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2)" + d="M 153.33622,90.367682 118.34198,73.428915" + id="path1300" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9)" + d="M 177.46016,90.367682 212.4544,73.428915" + id="path1300-2" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93)" + d="M 153.33622,61.655656 118.34198,44.716889" + id="path1300-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7)" + d="M 177.46016,61.655656 212.4544,44.716889" + id="path1300-2-6" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1)" + d="M 118.34198,61.655656 153.33622,44.716889" + id="path1300-0-7" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2)" + d="M 212.4544,61.655656 177.46016,44.716889" + id="path1300-2-6-9" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1-4)" + d="M 118.34198,34.227412 153.33622,17.288645" + id="path1300-0-7-5" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2-8)" + d="M 212.4544,34.227412 177.46016,17.288645" + id="path1300-2-6-9-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75)" + d="m 228.52843,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-2)" + d="m 101.90418,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-9" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7)" + d="m 165.29305,89.571762 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7-1)" + d="m 165.29305,32.445235 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6-9" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663" + cx="147.35568" + cy="95.24971" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3" + cx="126.08154" + cy="67.968384" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6" + cx="119.58919" + cy="67.645035" + r="2.7302806" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1" + cx="18.004833" + cy="39.402473" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0" + cx="18.004833" + cy="30.371933" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6" + cx="18.004833" + cy="21.341394" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583;fill:#000000" + x="6.9525447" + y="13.702217" + id="text3707"><tspan + sodipodi:role="line" + id="tspan3705" + style="stroke-width:0.264583;fill:#000000" + x="6.9525447" + y="13.702217">$write(\{a\})$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="65.261436" + id="text3707-1"><tspan + sodipodi:role="line" + id="tspan3705-5" + style="fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="65.261436">$read()$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637" + id="text3750"><tspan + sodipodi:role="line" + id="tspan3748" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637">$\sqsupseteq \{a\} \to$ OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="33.02087" + id="text3750-3"><tspan + sodipodi:role="line" + id="tspan3748-2" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="33.02087">$\sqsupseteq \{a\} \to$ OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523" + id="text3750-0"><tspan + sodipodi:role="line" + id="tspan3748-6" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523">$\not\sqsupseteq \{a\}$</tspan></text> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6-4" + cx="18.004833" + cy="70.942116" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="73.643356" + id="text3750-7"><tspan + sodipodi:role="line" + id="tspan3748-65" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="73.643356">$\to \{\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="14.395845" + y="52.022549" + id="text4280"><tspan + sodipodi:role="line" + id="tspan4278" + style="fill:#000000;stroke-width:0.264583" + x="14.395845" + y="52.022549">return OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="14.395845" + y="92.005798" + id="text4280-3"><tspan + sodipodi:role="line" + id="tspan4278-7" + style="fill:#000000;stroke-width:0.264583" + x="14.395845" + y="92.005798">return $\{\}\sqcup\{a\}=\{a\}$</tspan></text> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1-5" + cx="18.004833" + cy="81.007744" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="83.577797" + id="text3750-0-6"><tspan + sodipodi:role="line" + id="tspan3748-6-9" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="83.577797">$\to \{a\}$</tspan></text> + </g> +</svg> diff --git a/doc/talks/2023-01-18-tocatta/assets/lattice8.svg b/doc/talks/2023-01-18-tocatta/assets/lattice8.svg new file mode 100644 index 00000000..c94a69b2 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/lattice8.svg @@ -0,0 +1,581 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="1000" + height="400" + viewBox="0 0 264.58333 105.83333" + version="1.1" + id="svg5" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + sodipodi:docname="lattice8.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="1.4734708" + inkscape:cx="399.39712" + inkscape:cy="248.39311" + inkscape:window-width="1920" + inkscape:window-height="999" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer2" /> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="Arrow2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3-2" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1-4" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8-7" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2-8" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6-4" /> + </marker> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + sodipodi:insensitive="true"> + <rect + style="fill:#ffffff;stroke:none;stroke-width:1;stop-color:#000000" + id="rect288" + width="209.84705" + height="104.42732" + x="0.77790999" + y="0.93738818" /> + </g> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="Layer 2"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="164.56372" + y="99.307442" + id="text951"><tspan + sodipodi:role="line" + id="tspan949" + style="stroke-width:0.264583;fill:#000000" + x="164.56372" + y="99.307442">$\{\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="164.56372" + y="13.151893" + id="text1005"><tspan + sodipodi:role="line" + id="tspan1003" + style="stroke-width:0.264583;fill:#000000" + x="164.56372" + y="13.151893">$\{a,b,c\}$</tspan></text> + <g + id="g1175" + transform="translate(51.996784,3.5774043)"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="49.27084" + y="67.008698" + id="text1009"><tspan + sodipodi:role="line" + id="tspan1007" + style="stroke-width:0.264583;fill:#000000" + x="49.27084" + y="67.008698">$\{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="112.90984" + y="67.017166" + id="text1009-3"><tspan + sodipodi:role="line" + id="tspan1007-6" + style="stroke-width:0.264583;fill:#000000" + x="112.90984" + y="67.017166">$\{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="176.20593" + y="67.008698" + id="text1009-7"><tspan + sodipodi:role="line" + id="tspan1007-5" + style="stroke-width:0.264583;fill:#000000" + x="176.20593" + y="67.008698">$\{c\}$</tspan></text> + </g> + <g + id="g1183" + transform="translate(51.996784,1.0317046)" + style="fill:#000000"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="112.90984" + y="40.841526" + id="text1117"><tspan + sodipodi:role="line" + id="tspan1115" + style="stroke-width:0.264583;fill:#000000" + x="112.90984" + y="40.841526">$\{a,c\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="49.27084" + y="40.841526" + id="text1117-3"><tspan + sodipodi:role="line" + id="tspan1115-5" + style="stroke-width:0.264583;fill:#000000" + x="49.27084" + y="40.841526">$\{a,b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583;fill:#000000" + x="176.20593" + y="40.841526" + id="text1117-6"><tspan + sodipodi:role="line" + id="tspan1115-2" + style="stroke-width:0.264583;fill:#000000" + x="176.20593" + y="40.841526">$\{b,c\}$</tspan></text> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2)" + d="M 153.33622,90.367682 118.34198,73.428915" + id="path1300" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9)" + d="M 177.46016,90.367682 212.4544,73.428915" + id="path1300-2" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93)" + d="M 153.33622,61.655656 118.34198,44.716889" + id="path1300-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7)" + d="M 177.46016,61.655656 212.4544,44.716889" + id="path1300-2-6" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1)" + d="M 118.34198,61.655656 153.33622,44.716889" + id="path1300-0-7" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2)" + d="M 212.4544,61.655656 177.46016,44.716889" + id="path1300-2-6-9" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1-4)" + d="M 118.34198,34.227412 153.33622,17.288645" + id="path1300-0-7-5" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2-8)" + d="M 212.4544,34.227412 177.46016,17.288645" + id="path1300-2-6-9-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75)" + d="m 228.52843,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-2)" + d="m 101.90418,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-9" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7)" + d="m 165.29305,89.571762 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7-1)" + d="m 165.29305,32.445235 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6-9" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663" + cx="132.33408" + cy="68.007973" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3" + cx="126.08154" + cy="67.968384" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6" + cx="119.58919" + cy="67.645035" + r="2.7302806" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1" + cx="18.004833" + cy="39.402473" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0" + cx="18.004833" + cy="30.371933" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6" + cx="18.004833" + cy="21.341394" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583;fill:#000000" + x="6.9525447" + y="13.702217" + id="text3707"><tspan + sodipodi:role="line" + id="tspan3705" + style="stroke-width:0.264583;fill:#000000" + x="6.9525447" + y="13.702217">$write(\{a\})$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="65.261436" + id="text3707-1"><tspan + sodipodi:role="line" + id="tspan3705-5" + style="fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="65.261436">$read()$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637" + id="text3750"><tspan + sodipodi:role="line" + id="tspan3748" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637">$\sqsupseteq \{a\} \to$ OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="33.02087" + id="text3750-3"><tspan + sodipodi:role="line" + id="tspan3748-2" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="33.02087">$\sqsupseteq \{a\} \to$ OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="41.972523" + id="text3750-0"><tspan + sodipodi:role="line" + id="tspan3748-6" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="41.972523">$\sqsupseteq \{a\}$</tspan></text> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6-4" + cx="18.004833" + cy="70.942116" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="73.643356" + id="text3750-7"><tspan + sodipodi:role="line" + id="tspan3748-65" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="73.643356">$\to \{\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="14.395845" + y="52.022549" + id="text4280"><tspan + sodipodi:role="line" + id="tspan4278" + style="fill:#000000;stroke-width:0.264583" + x="14.395845" + y="52.022549">return OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="14.395845" + y="92.005798" + id="text4280-3"><tspan + sodipodi:role="line" + id="tspan4278-7" + style="fill:#000000;stroke-width:0.264583" + x="14.395845" + y="92.005798">return $\{\}\sqcup\{a\}=\{a\}$</tspan></text> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1-5" + cx="18.004833" + cy="81.007744" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="83.577797" + id="text3750-0-6"><tspan + sodipodi:role="line" + id="tspan3748-6-9" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="83.577797">$\to \{a\}$</tspan></text> + </g> +</svg> diff --git a/doc/talks/2023-01-18-tocatta/assets/latticeB_1.svg b/doc/talks/2023-01-18-tocatta/assets/latticeB_1.svg new file mode 100644 index 00000000..92232a1b --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/latticeB_1.svg @@ -0,0 +1,576 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="1000" + height="600" + viewBox="0 0 264.58333 158.75" + version="1.1" + id="svg5" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + sodipodi:docname="latticeB_1.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="1.0419012" + inkscape:cx="469.81422" + inkscape:cy="257.22209" + inkscape:window-width="1920" + inkscape:window-height="999" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer2" /> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="Arrow2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3-2" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1-4" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8-7" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2-8" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6-4" /> + </marker> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + sodipodi:insensitive="true"> + <rect + style="fill:#ffffff;stroke:none;stroke-width:0.999998;stop-color:#000000" + id="rect288" + width="262.58151" + height="156.82782" + x="0.77790999" + y="0.93738818" /> + </g> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="Layer 2"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="164.56372" + y="99.307442" + id="text951"><tspan + sodipodi:role="line" + id="tspan949" + style="fill:#000000;stroke-width:0.264583" + x="164.56372" + y="99.307442">$\{\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="164.56372" + y="13.151893" + id="text1005"><tspan + sodipodi:role="line" + id="tspan1003" + style="fill:#000000;stroke-width:0.264583" + x="164.56372" + y="13.151893">$\{a,b,c\}$</tspan></text> + <g + id="g1175" + transform="translate(51.996784,3.5774043)"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="49.27084" + y="67.008698" + id="text1009"><tspan + sodipodi:role="line" + id="tspan1007" + style="fill:#000000;stroke-width:0.264583" + x="49.27084" + y="67.008698">$\{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="112.90984" + y="67.017166" + id="text1009-3"><tspan + sodipodi:role="line" + id="tspan1007-6" + style="fill:#000000;stroke-width:0.264583" + x="112.90984" + y="67.017166">$\{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="176.20593" + y="67.008698" + id="text1009-7"><tspan + sodipodi:role="line" + id="tspan1007-5" + style="fill:#000000;stroke-width:0.264583" + x="176.20593" + y="67.008698">$\{c\}$</tspan></text> + </g> + <g + id="g1183" + transform="translate(51.996784,1.0317046)" + style="fill:#000000"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="112.90984" + y="40.841526" + id="text1117"><tspan + sodipodi:role="line" + id="tspan1115" + style="fill:#000000;stroke-width:0.264583" + x="112.90984" + y="40.841526">$\{a,c\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="49.27084" + y="40.841526" + id="text1117-3"><tspan + sodipodi:role="line" + id="tspan1115-5" + style="fill:#000000;stroke-width:0.264583" + x="49.27084" + y="40.841526">$\{a,b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="176.20593" + y="40.841526" + id="text1117-6"><tspan + sodipodi:role="line" + id="tspan1115-2" + style="fill:#000000;stroke-width:0.264583" + x="176.20593" + y="40.841526">$\{b,c\}$</tspan></text> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2)" + d="M 153.33622,90.367682 118.34198,73.428915" + id="path1300" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9)" + d="M 177.46016,90.367682 212.4544,73.428915" + id="path1300-2" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93)" + d="M 153.33622,61.655656 118.34198,44.716889" + id="path1300-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7)" + d="M 177.46016,61.655656 212.4544,44.716889" + id="path1300-2-6" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1)" + d="M 118.34198,61.655656 153.33622,44.716889" + id="path1300-0-7" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2)" + d="M 212.4544,61.655656 177.46016,44.716889" + id="path1300-2-6-9" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1-4)" + d="M 118.34198,34.227412 153.33622,17.288645" + id="path1300-0-7-5" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2-8)" + d="M 212.4544,34.227412 177.46016,17.288645" + id="path1300-2-6-9-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75)" + d="m 228.52843,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-2)" + d="m 101.90418,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-9" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7)" + d="m 165.29305,89.571762 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7-1)" + d="m 165.29305,32.445235 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6-9" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663" + cx="147.35568" + cy="95.24971" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3" + cx="141.05479" + cy="95.316383" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6" + cx="134.56244" + cy="94.993034" + r="2.7302806" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1" + cx="18.004833" + cy="39.402473" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0" + cx="18.004833" + cy="30.371933" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6" + cx="18.004833" + cy="21.341394" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="13.702217" + id="text3707"><tspan + sodipodi:role="line" + id="tspan3705" + style="fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="13.702217">$write(\{a\})$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="24.042637" + id="text3750"><tspan + sodipodi:role="line" + id="tspan3748" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="24.042637">$\not\sqsupseteq \{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="33.02087" + id="text3750-3"><tspan + sodipodi:role="line" + id="tspan3748-2" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="33.02087">$\not\sqsupseteq \{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523" + id="text3750-0"><tspan + sodipodi:role="line" + id="tspan3748-6" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523">$\not\sqsupseteq \{a\}$</tspan></text> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1-4" + cx="18.004833" + cy="90.979645" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0-5" + cx="18.004833" + cy="81.949104" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6-2" + cx="18.004833" + cy="72.918564" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="65.279381" + id="text3707-5"><tspan + sodipodi:role="line" + id="tspan3705-4" + style="fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="65.279381">$write(\{b\})$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="75.619804" + id="text3750-7"><tspan + sodipodi:role="line" + id="tspan3748-4" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="75.619804">$\not\sqsupseteq \{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="84.598038" + id="text3750-3-4"><tspan + sodipodi:role="line" + id="tspan3748-2-3" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="84.598038">$\not\sqsupseteq \{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="93.54969" + id="text3750-0-0"><tspan + sodipodi:role="line" + id="tspan3748-6-7" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="93.54969">$\not\sqsupseteq \{b\}$</tspan></text> + </g> +</svg> diff --git a/doc/talks/2023-01-18-tocatta/assets/latticeB_10.svg b/doc/talks/2023-01-18-tocatta/assets/latticeB_10.svg new file mode 100644 index 00000000..34c24e0d --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/latticeB_10.svg @@ -0,0 +1,715 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="1000" + height="600" + viewBox="0 0 264.58333 158.75" + version="1.1" + id="svg5" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + sodipodi:docname="latticeB_10.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="1.0419012" + inkscape:cx="664.65036" + inkscape:cy="366.63745" + inkscape:window-width="1920" + inkscape:window-height="999" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer2" /> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="Arrow2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3-2" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1-4" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8-7" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2-8" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6-4" /> + </marker> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + sodipodi:insensitive="true"> + <rect + style="fill:#ffffff;stroke:none;stroke-width:0.999998;stop-color:#000000" + id="rect288" + width="262.58151" + height="156.82782" + x="0.77790999" + y="0.93738818" /> + </g> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="Layer 2"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="164.56372" + y="99.307442" + id="text951"><tspan + sodipodi:role="line" + id="tspan949" + style="fill:#000000;stroke-width:0.264583" + x="164.56372" + y="99.307442">$\{\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="164.56372" + y="13.151893" + id="text1005"><tspan + sodipodi:role="line" + id="tspan1003" + style="fill:#000000;stroke-width:0.264583" + x="164.56372" + y="13.151893">$\{a,b,c\}$</tspan></text> + <g + id="g1175" + transform="translate(51.996784,3.5774043)"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="49.27084" + y="67.008698" + id="text1009"><tspan + sodipodi:role="line" + id="tspan1007" + style="fill:#000000;stroke-width:0.264583" + x="49.27084" + y="67.008698">$\{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="112.90984" + y="67.017166" + id="text1009-3"><tspan + sodipodi:role="line" + id="tspan1007-6" + style="fill:#000000;stroke-width:0.264583" + x="112.90984" + y="67.017166">$\{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="176.20593" + y="67.008698" + id="text1009-7"><tspan + sodipodi:role="line" + id="tspan1007-5" + style="fill:#000000;stroke-width:0.264583" + x="176.20593" + y="67.008698">$\{c\}$</tspan></text> + </g> + <g + id="g1183" + transform="translate(51.996784,1.0317046)" + style="fill:#000000"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="112.90984" + y="40.841526" + id="text1117"><tspan + sodipodi:role="line" + id="tspan1115" + style="fill:#000000;stroke-width:0.264583" + x="112.90984" + y="40.841526">$\{a,c\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="49.27084" + y="40.841526" + id="text1117-3"><tspan + sodipodi:role="line" + id="tspan1115-5" + style="fill:#000000;stroke-width:0.264583" + x="49.27084" + y="40.841526">$\{a,b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="176.20593" + y="40.841526" + id="text1117-6"><tspan + sodipodi:role="line" + id="tspan1115-2" + style="fill:#000000;stroke-width:0.264583" + x="176.20593" + y="40.841526">$\{b,c\}$</tspan></text> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2)" + d="M 153.33622,90.367682 118.34198,73.428915" + id="path1300" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9)" + d="M 177.46016,90.367682 212.4544,73.428915" + id="path1300-2" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93)" + d="M 153.33622,61.655656 118.34198,44.716889" + id="path1300-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7)" + d="M 177.46016,61.655656 212.4544,44.716889" + id="path1300-2-6" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1)" + d="M 118.34198,61.655656 153.33622,44.716889" + id="path1300-0-7" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2)" + d="M 212.4544,61.655656 177.46016,44.716889" + id="path1300-2-6-9" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1-4)" + d="M 118.34198,34.227412 153.33622,17.288645" + id="path1300-0-7-5" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2-8)" + d="M 212.4544,34.227412 177.46016,17.288645" + id="path1300-2-6-9-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75)" + d="m 228.52843,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-2)" + d="m 101.90418,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-9" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7)" + d="m 165.29305,89.571762 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7-1)" + d="m 165.29305,32.445235 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6-9" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663" + cx="147.35568" + cy="95.24971" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3" + cx="176.97627" + cy="68.155472" + r="2.7302806" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1" + cx="18.004833" + cy="39.402473" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0" + cx="18.004833" + cy="30.371933" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6" + cx="18.004833" + cy="21.341394" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="13.702217" + id="text3707"><tspan + sodipodi:role="line" + id="tspan3705" + style="fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="13.702217">$write(\{a\})$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637" + id="text3750"><tspan + sodipodi:role="line" + id="tspan3748" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637">$\sqsupseteq \{a\} \to$ OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="33.02087" + id="text3750-3"><tspan + sodipodi:role="line" + id="tspan3748-2" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="33.02087">$\not\sqsupseteq \{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523" + id="text3750-0"><tspan + sodipodi:role="line" + id="tspan3748-6" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523">$\not\sqsupseteq \{a\}$</tspan></text> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1-4" + cx="18.004833" + cy="90.979645" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0-5" + cx="18.004833" + cy="81.949104" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6-2" + cx="18.004833" + cy="72.918564" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="65.279381" + id="text3707-5"><tspan + sodipodi:role="line" + id="tspan3705-4" + style="fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="65.279381">$write(\{b\})$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="59.340172" + y="118.94403" + id="text3707-5-3"><tspan + sodipodi:role="line" + id="tspan3705-4-6" + style="fill:#000000;stroke-width:0.264583" + x="59.340172" + y="118.94403">$read()$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="75.619804" + id="text3750-7"><tspan + sodipodi:role="line" + id="tspan3748-4" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="75.619804">$\not\sqsupseteq \{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="84.598038" + id="text3750-3-4"><tspan + sodipodi:role="line" + id="tspan3748-2-3" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="84.598038">$\sqsupseteq \{b\} \to$ OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="93.54969" + id="text3750-0-0"><tspan + sodipodi:role="line" + id="tspan3748-6-7" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="93.54969">$\not\sqsupseteq \{b\}$</tspan></text> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6" + cx="118.63729" + cy="67.630196" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6-0" + cx="67.201363" + cy="124.91125" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="72.653946" + y="127.6125" + id="text3750-9"><tspan + sodipodi:role="line" + id="tspan3748-3" + style="fill:#000000;stroke-width:0.264583" + x="72.653946" + y="127.6125">$\to \{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="62.764446" + y="146.3129" + id="text4280-6"><tspan + sodipodi:role="line" + style="fill:#000000;stroke-width:0.264583" + x="62.764446" + y="146.3129" + id="tspan2630">return $\{a\}$</tspan></text> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0-7" + cx="67.201363" + cy="133.94179" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="72.653946" + y="136.59073" + id="text3750-3-6"><tspan + sodipodi:role="line" + id="tspan3748-2-0" + style="fill:#000000;stroke-width:0.264583" + x="72.653946" + y="136.59073">$\to \{\}$</tspan></text> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6-0-6" + cx="174.36296" + cy="124.91125" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="179.81555" + y="127.6125" + id="text3750-9-1"><tspan + sodipodi:role="line" + id="tspan3748-3-8" + style="fill:#000000;stroke-width:0.264583" + x="179.81555" + y="127.6125">$\to \{\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="162.7999" + y="118.94403" + id="text3707-5-3-7"><tspan + sodipodi:role="line" + id="tspan3705-4-6-5" + style="fill:#000000;stroke-width:0.264583" + x="162.7999" + y="118.94403">$read()$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583" + x="134.97845" + y="132.58472" + id="text3899"><tspan + sodipodi:role="line" + id="tspan3897" + style="stroke-width:0.264583" + x="134.97845" + y="132.58472">;</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="169.92604" + y="146.3129" + id="text4280-6-7"><tspan + sodipodi:role="line" + style="fill:#000000;stroke-width:0.264583" + x="169.92604" + y="146.3129" + id="tspan2630-9">return $\{b\}$</tspan></text> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0-7-2" + cx="174.36296" + cy="133.94179" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="179.81555" + y="136.59073" + id="text3750-3-6-0"><tspan + sodipodi:role="line" + id="tspan3748-2-0-2" + style="fill:#000000;stroke-width:0.264583" + x="179.81555" + y="136.59073">$\to \{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:end;text-anchor:end;fill:#ff0000;stroke-width:0.264583" + x="259.75" + y="135.53111" + id="text9043"><tspan + sodipodi:role="line" + id="tspan9041" + style="fill:#ff0000;stroke-width:0.264583" + x="259.75" + y="135.53111">${\Large\textbf{??!}}$~~~~~</tspan><tspan + sodipodi:role="line" + style="fill:#ff0000;stroke-width:0.264583" + x="259.75" + y="146.11446" + id="tspan9372">$\{a\} \not\sqsubseteq \{b\}$</tspan></text> + </g> +</svg> diff --git a/doc/talks/2023-01-18-tocatta/assets/latticeB_2.svg b/doc/talks/2023-01-18-tocatta/assets/latticeB_2.svg new file mode 100644 index 00000000..c07cba2b --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/latticeB_2.svg @@ -0,0 +1,576 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="1000" + height="600" + viewBox="0 0 264.58333 158.75" + version="1.1" + id="svg5" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + sodipodi:docname="latticeB_2.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="1.4734708" + inkscape:cx="586.70996" + inkscape:cy="321.01077" + inkscape:window-width="1920" + inkscape:window-height="999" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer2" /> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="Arrow2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3-2" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1-4" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8-7" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2-8" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6-4" /> + </marker> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + sodipodi:insensitive="true"> + <rect + style="fill:#ffffff;stroke:none;stroke-width:0.999998;stop-color:#000000" + id="rect288" + width="262.58151" + height="156.82782" + x="0.77790999" + y="0.93738818" /> + </g> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="Layer 2"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="164.56372" + y="99.307442" + id="text951"><tspan + sodipodi:role="line" + id="tspan949" + style="fill:#000000;stroke-width:0.264583" + x="164.56372" + y="99.307442">$\{\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="164.56372" + y="13.151893" + id="text1005"><tspan + sodipodi:role="line" + id="tspan1003" + style="fill:#000000;stroke-width:0.264583" + x="164.56372" + y="13.151893">$\{a,b,c\}$</tspan></text> + <g + id="g1175" + transform="translate(51.996784,3.5774043)"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="49.27084" + y="67.008698" + id="text1009"><tspan + sodipodi:role="line" + id="tspan1007" + style="fill:#000000;stroke-width:0.264583" + x="49.27084" + y="67.008698">$\{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="112.90984" + y="67.017166" + id="text1009-3"><tspan + sodipodi:role="line" + id="tspan1007-6" + style="fill:#000000;stroke-width:0.264583" + x="112.90984" + y="67.017166">$\{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="176.20593" + y="67.008698" + id="text1009-7"><tspan + sodipodi:role="line" + id="tspan1007-5" + style="fill:#000000;stroke-width:0.264583" + x="176.20593" + y="67.008698">$\{c\}$</tspan></text> + </g> + <g + id="g1183" + transform="translate(51.996784,1.0317046)" + style="fill:#000000"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="112.90984" + y="40.841526" + id="text1117"><tspan + sodipodi:role="line" + id="tspan1115" + style="fill:#000000;stroke-width:0.264583" + x="112.90984" + y="40.841526">$\{a,c\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="49.27084" + y="40.841526" + id="text1117-3"><tspan + sodipodi:role="line" + id="tspan1115-5" + style="fill:#000000;stroke-width:0.264583" + x="49.27084" + y="40.841526">$\{a,b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="176.20593" + y="40.841526" + id="text1117-6"><tspan + sodipodi:role="line" + id="tspan1115-2" + style="fill:#000000;stroke-width:0.264583" + x="176.20593" + y="40.841526">$\{b,c\}$</tspan></text> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2)" + d="M 153.33622,90.367682 118.34198,73.428915" + id="path1300" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9)" + d="M 177.46016,90.367682 212.4544,73.428915" + id="path1300-2" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93)" + d="M 153.33622,61.655656 118.34198,44.716889" + id="path1300-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7)" + d="M 177.46016,61.655656 212.4544,44.716889" + id="path1300-2-6" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1)" + d="M 118.34198,61.655656 153.33622,44.716889" + id="path1300-0-7" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2)" + d="M 212.4544,61.655656 177.46016,44.716889" + id="path1300-2-6-9" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1-4)" + d="M 118.34198,34.227412 153.33622,17.288645" + id="path1300-0-7-5" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2-8)" + d="M 212.4544,34.227412 177.46016,17.288645" + id="path1300-2-6-9-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75)" + d="m 228.52843,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-2)" + d="m 101.90418,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-9" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7)" + d="m 165.29305,89.571762 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7-1)" + d="m 165.29305,32.445235 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6-9" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663" + cx="147.35568" + cy="95.24971" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3" + cx="141.05479" + cy="95.316383" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6" + cx="118.63729" + cy="67.630196" + r="2.7302806" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1" + cx="18.004833" + cy="39.402473" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0" + cx="18.004833" + cy="30.371933" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6" + cx="18.004833" + cy="21.341394" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="13.702217" + id="text3707"><tspan + sodipodi:role="line" + id="tspan3705" + style="fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="13.702217">$write(\{a\})$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637" + id="text3750"><tspan + sodipodi:role="line" + id="tspan3748" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637">$\sqsupseteq \{a\} \to$ OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="33.02087" + id="text3750-3"><tspan + sodipodi:role="line" + id="tspan3748-2" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="33.02087">$\not\sqsupseteq \{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523" + id="text3750-0"><tspan + sodipodi:role="line" + id="tspan3748-6" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523">$\not\sqsupseteq \{a\}$</tspan></text> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1-4" + cx="18.004833" + cy="90.979645" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0-5" + cx="18.004833" + cy="81.949104" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6-2" + cx="18.004833" + cy="72.918564" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="65.279381" + id="text3707-5"><tspan + sodipodi:role="line" + id="tspan3705-4" + style="fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="65.279381">$write(\{b\})$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="75.619804" + id="text3750-7"><tspan + sodipodi:role="line" + id="tspan3748-4" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="75.619804">$\not\sqsupseteq \{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="84.598038" + id="text3750-3-4"><tspan + sodipodi:role="line" + id="tspan3748-2-3" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="84.598038">$\not\sqsupseteq \{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="93.54969" + id="text3750-0-0"><tspan + sodipodi:role="line" + id="tspan3748-6-7" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="93.54969">$\not\sqsupseteq \{b\}$</tspan></text> + </g> +</svg> diff --git a/doc/talks/2023-01-18-tocatta/assets/latticeB_3.svg b/doc/talks/2023-01-18-tocatta/assets/latticeB_3.svg new file mode 100644 index 00000000..198d1f5d --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/latticeB_3.svg @@ -0,0 +1,576 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="1000" + height="600" + viewBox="0 0 264.58333 158.75" + version="1.1" + id="svg5" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + sodipodi:docname="latticeB_3.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="2.0838024" + inkscape:cx="465.25525" + inkscape:cy="269.21938" + inkscape:window-width="1920" + inkscape:window-height="999" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer2" /> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="Arrow2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3-2" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1-4" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8-7" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2-8" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6-4" /> + </marker> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + sodipodi:insensitive="true"> + <rect + style="fill:#ffffff;stroke:none;stroke-width:0.999998;stop-color:#000000" + id="rect288" + width="262.58151" + height="156.82782" + x="0.77790999" + y="0.93738818" /> + </g> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="Layer 2"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="164.56372" + y="99.307442" + id="text951"><tspan + sodipodi:role="line" + id="tspan949" + style="fill:#000000;stroke-width:0.264583" + x="164.56372" + y="99.307442">$\{\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="164.56372" + y="13.151893" + id="text1005"><tspan + sodipodi:role="line" + id="tspan1003" + style="fill:#000000;stroke-width:0.264583" + x="164.56372" + y="13.151893">$\{a,b,c\}$</tspan></text> + <g + id="g1175" + transform="translate(51.996784,3.5774043)"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="49.27084" + y="67.008698" + id="text1009"><tspan + sodipodi:role="line" + id="tspan1007" + style="fill:#000000;stroke-width:0.264583" + x="49.27084" + y="67.008698">$\{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="112.90984" + y="67.017166" + id="text1009-3"><tspan + sodipodi:role="line" + id="tspan1007-6" + style="fill:#000000;stroke-width:0.264583" + x="112.90984" + y="67.017166">$\{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="176.20593" + y="67.008698" + id="text1009-7"><tspan + sodipodi:role="line" + id="tspan1007-5" + style="fill:#000000;stroke-width:0.264583" + x="176.20593" + y="67.008698">$\{c\}$</tspan></text> + </g> + <g + id="g1183" + transform="translate(51.996784,1.0317046)" + style="fill:#000000"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="112.90984" + y="40.841526" + id="text1117"><tspan + sodipodi:role="line" + id="tspan1115" + style="fill:#000000;stroke-width:0.264583" + x="112.90984" + y="40.841526">$\{a,c\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="49.27084" + y="40.841526" + id="text1117-3"><tspan + sodipodi:role="line" + id="tspan1115-5" + style="fill:#000000;stroke-width:0.264583" + x="49.27084" + y="40.841526">$\{a,b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="176.20593" + y="40.841526" + id="text1117-6"><tspan + sodipodi:role="line" + id="tspan1115-2" + style="fill:#000000;stroke-width:0.264583" + x="176.20593" + y="40.841526">$\{b,c\}$</tspan></text> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2)" + d="M 153.33622,90.367682 118.34198,73.428915" + id="path1300" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9)" + d="M 177.46016,90.367682 212.4544,73.428915" + id="path1300-2" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93)" + d="M 153.33622,61.655656 118.34198,44.716889" + id="path1300-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7)" + d="M 177.46016,61.655656 212.4544,44.716889" + id="path1300-2-6" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1)" + d="M 118.34198,61.655656 153.33622,44.716889" + id="path1300-0-7" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2)" + d="M 212.4544,61.655656 177.46016,44.716889" + id="path1300-2-6-9" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1-4)" + d="M 118.34198,34.227412 153.33622,17.288645" + id="path1300-0-7-5" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2-8)" + d="M 212.4544,34.227412 177.46016,17.288645" + id="path1300-2-6-9-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75)" + d="m 228.52843,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-2)" + d="m 101.90418,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-9" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7)" + d="m 165.29305,89.571762 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7-1)" + d="m 165.29305,32.445235 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6-9" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663" + cx="147.35568" + cy="95.24971" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3" + cx="176.97627" + cy="68.155472" + r="2.7302806" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1" + cx="18.004833" + cy="39.402473" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0" + cx="18.004833" + cy="30.371933" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6" + cx="18.004833" + cy="21.341394" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="13.702217" + id="text3707"><tspan + sodipodi:role="line" + id="tspan3705" + style="fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="13.702217">$write(\{a\})$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637" + id="text3750"><tspan + sodipodi:role="line" + id="tspan3748" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637">$\sqsupseteq \{a\} \to$ OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="33.02087" + id="text3750-3"><tspan + sodipodi:role="line" + id="tspan3748-2" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="33.02087">$\not\sqsupseteq \{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523" + id="text3750-0"><tspan + sodipodi:role="line" + id="tspan3748-6" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523">$\not\sqsupseteq \{a\}$</tspan></text> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1-4" + cx="18.004833" + cy="90.979645" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0-5" + cx="18.004833" + cy="81.949104" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6-2" + cx="18.004833" + cy="72.918564" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="65.279381" + id="text3707-5"><tspan + sodipodi:role="line" + id="tspan3705-4" + style="fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="65.279381">$write(\{b\})$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="75.619804" + id="text3750-7"><tspan + sodipodi:role="line" + id="tspan3748-4" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="75.619804">$\not\sqsupseteq \{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="84.598038" + id="text3750-3-4"><tspan + sodipodi:role="line" + id="tspan3748-2-3" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="84.598038">$\sqsupseteq \{b\} \to$ OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="93.54969" + id="text3750-0-0"><tspan + sodipodi:role="line" + id="tspan3748-6-7" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="93.54969">$\not\sqsupseteq \{b\}$</tspan></text> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6" + cx="118.63729" + cy="67.630196" + r="2.7302806" /> + </g> +</svg> diff --git a/doc/talks/2023-01-18-tocatta/assets/latticeB_4.svg b/doc/talks/2023-01-18-tocatta/assets/latticeB_4.svg new file mode 100644 index 00000000..c5f6148d --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/latticeB_4.svg @@ -0,0 +1,587 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="1000" + height="600" + viewBox="0 0 264.58333 158.75" + version="1.1" + id="svg5" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + sodipodi:docname="latticeB_4.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="1.0419012" + inkscape:cx="505.32622" + inkscape:cy="316.72869" + inkscape:window-width="1920" + inkscape:window-height="999" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer2" /> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="Arrow2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3-2" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1-4" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8-7" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2-8" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6-4" /> + </marker> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + sodipodi:insensitive="true"> + <rect + style="fill:#ffffff;stroke:none;stroke-width:0.999998;stop-color:#000000" + id="rect288" + width="262.58151" + height="156.82782" + x="0.77790999" + y="0.93738818" /> + </g> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="Layer 2"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="164.56372" + y="99.307442" + id="text951"><tspan + sodipodi:role="line" + id="tspan949" + style="fill:#000000;stroke-width:0.264583" + x="164.56372" + y="99.307442">$\{\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="164.56372" + y="13.151893" + id="text1005"><tspan + sodipodi:role="line" + id="tspan1003" + style="fill:#000000;stroke-width:0.264583" + x="164.56372" + y="13.151893">$\{a,b,c\}$</tspan></text> + <g + id="g1175" + transform="translate(51.996784,3.5774043)"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="49.27084" + y="67.008698" + id="text1009"><tspan + sodipodi:role="line" + id="tspan1007" + style="fill:#000000;stroke-width:0.264583" + x="49.27084" + y="67.008698">$\{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="112.90984" + y="67.017166" + id="text1009-3"><tspan + sodipodi:role="line" + id="tspan1007-6" + style="fill:#000000;stroke-width:0.264583" + x="112.90984" + y="67.017166">$\{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="176.20593" + y="67.008698" + id="text1009-7"><tspan + sodipodi:role="line" + id="tspan1007-5" + style="fill:#000000;stroke-width:0.264583" + x="176.20593" + y="67.008698">$\{c\}$</tspan></text> + </g> + <g + id="g1183" + transform="translate(51.996784,1.0317046)" + style="fill:#000000"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="112.90984" + y="40.841526" + id="text1117"><tspan + sodipodi:role="line" + id="tspan1115" + style="fill:#000000;stroke-width:0.264583" + x="112.90984" + y="40.841526">$\{a,c\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="49.27084" + y="40.841526" + id="text1117-3"><tspan + sodipodi:role="line" + id="tspan1115-5" + style="fill:#000000;stroke-width:0.264583" + x="49.27084" + y="40.841526">$\{a,b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="176.20593" + y="40.841526" + id="text1117-6"><tspan + sodipodi:role="line" + id="tspan1115-2" + style="fill:#000000;stroke-width:0.264583" + x="176.20593" + y="40.841526">$\{b,c\}$</tspan></text> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2)" + d="M 153.33622,90.367682 118.34198,73.428915" + id="path1300" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9)" + d="M 177.46016,90.367682 212.4544,73.428915" + id="path1300-2" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93)" + d="M 153.33622,61.655656 118.34198,44.716889" + id="path1300-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7)" + d="M 177.46016,61.655656 212.4544,44.716889" + id="path1300-2-6" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1)" + d="M 118.34198,61.655656 153.33622,44.716889" + id="path1300-0-7" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2)" + d="M 212.4544,61.655656 177.46016,44.716889" + id="path1300-2-6-9" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1-4)" + d="M 118.34198,34.227412 153.33622,17.288645" + id="path1300-0-7-5" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2-8)" + d="M 212.4544,34.227412 177.46016,17.288645" + id="path1300-2-6-9-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75)" + d="m 228.52843,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-2)" + d="m 101.90418,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-9" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7)" + d="m 165.29305,89.571762 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7-1)" + d="m 165.29305,32.445235 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6-9" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663" + cx="147.35568" + cy="95.24971" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3" + cx="176.97627" + cy="68.155472" + r="2.7302806" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1" + cx="18.004833" + cy="39.402473" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0" + cx="18.004833" + cy="30.371933" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6" + cx="18.004833" + cy="21.341394" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="13.702217" + id="text3707"><tspan + sodipodi:role="line" + id="tspan3705" + style="fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="13.702217">$write(\{a\})$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637" + id="text3750"><tspan + sodipodi:role="line" + id="tspan3748" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637">$\sqsupseteq \{a\} \to$ OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="33.02087" + id="text3750-3"><tspan + sodipodi:role="line" + id="tspan3748-2" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="33.02087">$\not\sqsupseteq \{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523" + id="text3750-0"><tspan + sodipodi:role="line" + id="tspan3748-6" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523">$\not\sqsupseteq \{a\}$</tspan></text> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1-4" + cx="18.004833" + cy="90.979645" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0-5" + cx="18.004833" + cy="81.949104" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6-2" + cx="18.004833" + cy="72.918564" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="65.279381" + id="text3707-5"><tspan + sodipodi:role="line" + id="tspan3705-4" + style="fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="65.279381">$write(\{b\})$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="59.340172" + y="118.94403" + id="text3707-5-3"><tspan + sodipodi:role="line" + id="tspan3705-4-6" + style="fill:#000000;stroke-width:0.264583" + x="59.340172" + y="118.94403">$read()$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="75.619804" + id="text3750-7"><tspan + sodipodi:role="line" + id="tspan3748-4" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="75.619804">$\not\sqsupseteq \{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="84.598038" + id="text3750-3-4"><tspan + sodipodi:role="line" + id="tspan3748-2-3" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="84.598038">$\sqsupseteq \{b\} \to$ OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="93.54969" + id="text3750-0-0"><tspan + sodipodi:role="line" + id="tspan3748-6-7" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="93.54969">$\not\sqsupseteq \{b\}$</tspan></text> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6" + cx="118.63729" + cy="67.630196" + r="2.7302806" /> + </g> +</svg> diff --git a/doc/talks/2023-01-18-tocatta/assets/latticeB_5.svg b/doc/talks/2023-01-18-tocatta/assets/latticeB_5.svg new file mode 100644 index 00000000..c2b668be --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/latticeB_5.svg @@ -0,0 +1,604 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="1000" + height="600" + viewBox="0 0 264.58333 158.75" + version="1.1" + id="svg5" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + sodipodi:docname="latticeB_5.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="1.4734708" + inkscape:cx="408.21983" + inkscape:cy="319.65343" + inkscape:window-width="1920" + inkscape:window-height="999" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer2" /> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="Arrow2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3-2" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1-4" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8-7" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2-8" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6-4" /> + </marker> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + sodipodi:insensitive="true"> + <rect + style="fill:#ffffff;stroke:none;stroke-width:0.999998;stop-color:#000000" + id="rect288" + width="262.58151" + height="156.82782" + x="0.77790999" + y="0.93738818" /> + </g> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="Layer 2"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="164.56372" + y="99.307442" + id="text951"><tspan + sodipodi:role="line" + id="tspan949" + style="fill:#000000;stroke-width:0.264583" + x="164.56372" + y="99.307442">$\{\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="164.56372" + y="13.151893" + id="text1005"><tspan + sodipodi:role="line" + id="tspan1003" + style="fill:#000000;stroke-width:0.264583" + x="164.56372" + y="13.151893">$\{a,b,c\}$</tspan></text> + <g + id="g1175" + transform="translate(51.996784,3.5774043)"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="49.27084" + y="67.008698" + id="text1009"><tspan + sodipodi:role="line" + id="tspan1007" + style="fill:#000000;stroke-width:0.264583" + x="49.27084" + y="67.008698">$\{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="112.90984" + y="67.017166" + id="text1009-3"><tspan + sodipodi:role="line" + id="tspan1007-6" + style="fill:#000000;stroke-width:0.264583" + x="112.90984" + y="67.017166">$\{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="176.20593" + y="67.008698" + id="text1009-7"><tspan + sodipodi:role="line" + id="tspan1007-5" + style="fill:#000000;stroke-width:0.264583" + x="176.20593" + y="67.008698">$\{c\}$</tspan></text> + </g> + <g + id="g1183" + transform="translate(51.996784,1.0317046)" + style="fill:#000000"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="112.90984" + y="40.841526" + id="text1117"><tspan + sodipodi:role="line" + id="tspan1115" + style="fill:#000000;stroke-width:0.264583" + x="112.90984" + y="40.841526">$\{a,c\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="49.27084" + y="40.841526" + id="text1117-3"><tspan + sodipodi:role="line" + id="tspan1115-5" + style="fill:#000000;stroke-width:0.264583" + x="49.27084" + y="40.841526">$\{a,b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="176.20593" + y="40.841526" + id="text1117-6"><tspan + sodipodi:role="line" + id="tspan1115-2" + style="fill:#000000;stroke-width:0.264583" + x="176.20593" + y="40.841526">$\{b,c\}$</tspan></text> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2)" + d="M 153.33622,90.367682 118.34198,73.428915" + id="path1300" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9)" + d="M 177.46016,90.367682 212.4544,73.428915" + id="path1300-2" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93)" + d="M 153.33622,61.655656 118.34198,44.716889" + id="path1300-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7)" + d="M 177.46016,61.655656 212.4544,44.716889" + id="path1300-2-6" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1)" + d="M 118.34198,61.655656 153.33622,44.716889" + id="path1300-0-7" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2)" + d="M 212.4544,61.655656 177.46016,44.716889" + id="path1300-2-6-9" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1-4)" + d="M 118.34198,34.227412 153.33622,17.288645" + id="path1300-0-7-5" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2-8)" + d="M 212.4544,34.227412 177.46016,17.288645" + id="path1300-2-6-9-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75)" + d="m 228.52843,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-2)" + d="m 101.90418,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-9" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7)" + d="m 165.29305,89.571762 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7-1)" + d="m 165.29305,32.445235 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6-9" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663" + cx="147.35568" + cy="95.24971" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3" + cx="176.97627" + cy="68.155472" + r="2.7302806" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1" + cx="18.004833" + cy="39.402473" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0" + cx="18.004833" + cy="30.371933" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6" + cx="18.004833" + cy="21.341394" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="13.702217" + id="text3707"><tspan + sodipodi:role="line" + id="tspan3705" + style="fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="13.702217">$write(\{a\})$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637" + id="text3750"><tspan + sodipodi:role="line" + id="tspan3748" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637">$\sqsupseteq \{a\} \to$ OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="33.02087" + id="text3750-3"><tspan + sodipodi:role="line" + id="tspan3748-2" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="33.02087">$\not\sqsupseteq \{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523" + id="text3750-0"><tspan + sodipodi:role="line" + id="tspan3748-6" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523">$\not\sqsupseteq \{a\}$</tspan></text> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1-4" + cx="18.004833" + cy="90.979645" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0-5" + cx="18.004833" + cy="81.949104" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6-2" + cx="18.004833" + cy="72.918564" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="65.279381" + id="text3707-5"><tspan + sodipodi:role="line" + id="tspan3705-4" + style="fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="65.279381">$write(\{b\})$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="59.340172" + y="118.94403" + id="text3707-5-3"><tspan + sodipodi:role="line" + id="tspan3705-4-6" + style="fill:#000000;stroke-width:0.264583" + x="59.340172" + y="118.94403">$read()$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="75.619804" + id="text3750-7"><tspan + sodipodi:role="line" + id="tspan3748-4" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="75.619804">$\not\sqsupseteq \{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="84.598038" + id="text3750-3-4"><tspan + sodipodi:role="line" + id="tspan3748-2-3" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="84.598038">$\sqsupseteq \{b\} \to$ OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="93.54969" + id="text3750-0-0"><tspan + sodipodi:role="line" + id="tspan3748-6-7" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="93.54969">$\not\sqsupseteq \{b\}$</tspan></text> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6" + cx="118.63729" + cy="67.630196" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6-0" + cx="67.201363" + cy="124.91125" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="72.653946" + y="127.6125" + id="text3750-9"><tspan + sodipodi:role="line" + id="tspan3748-3" + style="fill:#000000;stroke-width:0.264583" + x="72.653946" + y="127.6125">$\to \{a\}$</tspan></text> + </g> +</svg> diff --git a/doc/talks/2023-01-18-tocatta/assets/latticeB_6.svg b/doc/talks/2023-01-18-tocatta/assets/latticeB_6.svg new file mode 100644 index 00000000..980823fc --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/latticeB_6.svg @@ -0,0 +1,632 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="1000" + height="600" + viewBox="0 0 264.58333 158.75" + version="1.1" + id="svg5" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + sodipodi:docname="latticeB_6.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="1.4734708" + inkscape:cx="408.21983" + inkscape:cy="319.65343" + inkscape:window-width="1920" + inkscape:window-height="999" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer2" /> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="Arrow2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3-2" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1-4" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8-7" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2-8" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6-4" /> + </marker> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + sodipodi:insensitive="true"> + <rect + style="fill:#ffffff;stroke:none;stroke-width:0.999998;stop-color:#000000" + id="rect288" + width="262.58151" + height="156.82782" + x="0.77790999" + y="0.93738818" /> + </g> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="Layer 2"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="164.56372" + y="99.307442" + id="text951"><tspan + sodipodi:role="line" + id="tspan949" + style="fill:#000000;stroke-width:0.264583" + x="164.56372" + y="99.307442">$\{\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="164.56372" + y="13.151893" + id="text1005"><tspan + sodipodi:role="line" + id="tspan1003" + style="fill:#000000;stroke-width:0.264583" + x="164.56372" + y="13.151893">$\{a,b,c\}$</tspan></text> + <g + id="g1175" + transform="translate(51.996784,3.5774043)"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="49.27084" + y="67.008698" + id="text1009"><tspan + sodipodi:role="line" + id="tspan1007" + style="fill:#000000;stroke-width:0.264583" + x="49.27084" + y="67.008698">$\{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="112.90984" + y="67.017166" + id="text1009-3"><tspan + sodipodi:role="line" + id="tspan1007-6" + style="fill:#000000;stroke-width:0.264583" + x="112.90984" + y="67.017166">$\{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="176.20593" + y="67.008698" + id="text1009-7"><tspan + sodipodi:role="line" + id="tspan1007-5" + style="fill:#000000;stroke-width:0.264583" + x="176.20593" + y="67.008698">$\{c\}$</tspan></text> + </g> + <g + id="g1183" + transform="translate(51.996784,1.0317046)" + style="fill:#000000"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="112.90984" + y="40.841526" + id="text1117"><tspan + sodipodi:role="line" + id="tspan1115" + style="fill:#000000;stroke-width:0.264583" + x="112.90984" + y="40.841526">$\{a,c\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="49.27084" + y="40.841526" + id="text1117-3"><tspan + sodipodi:role="line" + id="tspan1115-5" + style="fill:#000000;stroke-width:0.264583" + x="49.27084" + y="40.841526">$\{a,b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="176.20593" + y="40.841526" + id="text1117-6"><tspan + sodipodi:role="line" + id="tspan1115-2" + style="fill:#000000;stroke-width:0.264583" + x="176.20593" + y="40.841526">$\{b,c\}$</tspan></text> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2)" + d="M 153.33622,90.367682 118.34198,73.428915" + id="path1300" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9)" + d="M 177.46016,90.367682 212.4544,73.428915" + id="path1300-2" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93)" + d="M 153.33622,61.655656 118.34198,44.716889" + id="path1300-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7)" + d="M 177.46016,61.655656 212.4544,44.716889" + id="path1300-2-6" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1)" + d="M 118.34198,61.655656 153.33622,44.716889" + id="path1300-0-7" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2)" + d="M 212.4544,61.655656 177.46016,44.716889" + id="path1300-2-6-9" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1-4)" + d="M 118.34198,34.227412 153.33622,17.288645" + id="path1300-0-7-5" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2-8)" + d="M 212.4544,34.227412 177.46016,17.288645" + id="path1300-2-6-9-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75)" + d="m 228.52843,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-2)" + d="m 101.90418,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-9" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7)" + d="m 165.29305,89.571762 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7-1)" + d="m 165.29305,32.445235 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6-9" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663" + cx="147.35568" + cy="95.24971" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3" + cx="176.97627" + cy="68.155472" + r="2.7302806" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1" + cx="18.004833" + cy="39.402473" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0" + cx="18.004833" + cy="30.371933" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6" + cx="18.004833" + cy="21.341394" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="13.702217" + id="text3707"><tspan + sodipodi:role="line" + id="tspan3705" + style="fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="13.702217">$write(\{a\})$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637" + id="text3750"><tspan + sodipodi:role="line" + id="tspan3748" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637">$\sqsupseteq \{a\} \to$ OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="33.02087" + id="text3750-3"><tspan + sodipodi:role="line" + id="tspan3748-2" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="33.02087">$\not\sqsupseteq \{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523" + id="text3750-0"><tspan + sodipodi:role="line" + id="tspan3748-6" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523">$\not\sqsupseteq \{a\}$</tspan></text> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1-4" + cx="18.004833" + cy="90.979645" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0-5" + cx="18.004833" + cy="81.949104" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6-2" + cx="18.004833" + cy="72.918564" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="65.279381" + id="text3707-5"><tspan + sodipodi:role="line" + id="tspan3705-4" + style="fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="65.279381">$write(\{b\})$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="59.340172" + y="118.94403" + id="text3707-5-3"><tspan + sodipodi:role="line" + id="tspan3705-4-6" + style="fill:#000000;stroke-width:0.264583" + x="59.340172" + y="118.94403">$read()$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="75.619804" + id="text3750-7"><tspan + sodipodi:role="line" + id="tspan3748-4" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="75.619804">$\not\sqsupseteq \{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="84.598038" + id="text3750-3-4"><tspan + sodipodi:role="line" + id="tspan3748-2-3" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="84.598038">$\sqsupseteq \{b\} \to$ OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="93.54969" + id="text3750-0-0"><tspan + sodipodi:role="line" + id="tspan3748-6-7" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="93.54969">$\not\sqsupseteq \{b\}$</tspan></text> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6" + cx="118.63729" + cy="67.630196" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6-0" + cx="67.201363" + cy="124.91125" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="72.653946" + y="127.6125" + id="text3750-9"><tspan + sodipodi:role="line" + id="tspan3748-3" + style="fill:#000000;stroke-width:0.264583" + x="72.653946" + y="127.6125">$\to \{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="62.764446" + y="146.3129" + id="text4280-6"><tspan + sodipodi:role="line" + style="fill:#000000;stroke-width:0.264583" + x="62.764446" + y="146.3129" + id="tspan2630">return $\{a\}$</tspan></text> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0-7" + cx="67.201363" + cy="133.94179" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="72.653946" + y="136.59073" + id="text3750-3-6"><tspan + sodipodi:role="line" + id="tspan3748-2-0" + style="fill:#000000;stroke-width:0.264583" + x="72.653946" + y="136.59073">$\to \{\}$</tspan></text> + </g> +</svg> diff --git a/doc/talks/2023-01-18-tocatta/assets/latticeB_7.svg b/doc/talks/2023-01-18-tocatta/assets/latticeB_7.svg new file mode 100644 index 00000000..154c0b7d --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/latticeB_7.svg @@ -0,0 +1,654 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="1000" + height="600" + viewBox="0 0 264.58333 158.75" + version="1.1" + id="svg5" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + sodipodi:docname="latticeB_7.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="1.4734708" + inkscape:cx="553.45515" + inkscape:cy="346.80022" + inkscape:window-width="1920" + inkscape:window-height="999" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer2" /> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="Arrow2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3-2" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1-4" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8-7" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2-8" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6-4" /> + </marker> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + sodipodi:insensitive="true"> + <rect + style="fill:#ffffff;stroke:none;stroke-width:0.999998;stop-color:#000000" + id="rect288" + width="262.58151" + height="156.82782" + x="0.77790999" + y="0.93738818" /> + </g> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="Layer 2"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="164.56372" + y="99.307442" + id="text951"><tspan + sodipodi:role="line" + id="tspan949" + style="fill:#000000;stroke-width:0.264583" + x="164.56372" + y="99.307442">$\{\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="164.56372" + y="13.151893" + id="text1005"><tspan + sodipodi:role="line" + id="tspan1003" + style="fill:#000000;stroke-width:0.264583" + x="164.56372" + y="13.151893">$\{a,b,c\}$</tspan></text> + <g + id="g1175" + transform="translate(51.996784,3.5774043)"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="49.27084" + y="67.008698" + id="text1009"><tspan + sodipodi:role="line" + id="tspan1007" + style="fill:#000000;stroke-width:0.264583" + x="49.27084" + y="67.008698">$\{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="112.90984" + y="67.017166" + id="text1009-3"><tspan + sodipodi:role="line" + id="tspan1007-6" + style="fill:#000000;stroke-width:0.264583" + x="112.90984" + y="67.017166">$\{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="176.20593" + y="67.008698" + id="text1009-7"><tspan + sodipodi:role="line" + id="tspan1007-5" + style="fill:#000000;stroke-width:0.264583" + x="176.20593" + y="67.008698">$\{c\}$</tspan></text> + </g> + <g + id="g1183" + transform="translate(51.996784,1.0317046)" + style="fill:#000000"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="112.90984" + y="40.841526" + id="text1117"><tspan + sodipodi:role="line" + id="tspan1115" + style="fill:#000000;stroke-width:0.264583" + x="112.90984" + y="40.841526">$\{a,c\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="49.27084" + y="40.841526" + id="text1117-3"><tspan + sodipodi:role="line" + id="tspan1115-5" + style="fill:#000000;stroke-width:0.264583" + x="49.27084" + y="40.841526">$\{a,b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="176.20593" + y="40.841526" + id="text1117-6"><tspan + sodipodi:role="line" + id="tspan1115-2" + style="fill:#000000;stroke-width:0.264583" + x="176.20593" + y="40.841526">$\{b,c\}$</tspan></text> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2)" + d="M 153.33622,90.367682 118.34198,73.428915" + id="path1300" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9)" + d="M 177.46016,90.367682 212.4544,73.428915" + id="path1300-2" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93)" + d="M 153.33622,61.655656 118.34198,44.716889" + id="path1300-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7)" + d="M 177.46016,61.655656 212.4544,44.716889" + id="path1300-2-6" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1)" + d="M 118.34198,61.655656 153.33622,44.716889" + id="path1300-0-7" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2)" + d="M 212.4544,61.655656 177.46016,44.716889" + id="path1300-2-6-9" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1-4)" + d="M 118.34198,34.227412 153.33622,17.288645" + id="path1300-0-7-5" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2-8)" + d="M 212.4544,34.227412 177.46016,17.288645" + id="path1300-2-6-9-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75)" + d="m 228.52843,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-2)" + d="m 101.90418,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-9" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7)" + d="m 165.29305,89.571762 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7-1)" + d="m 165.29305,32.445235 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6-9" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663" + cx="147.35568" + cy="95.24971" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3" + cx="176.97627" + cy="68.155472" + r="2.7302806" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1" + cx="18.004833" + cy="39.402473" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0" + cx="18.004833" + cy="30.371933" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6" + cx="18.004833" + cy="21.341394" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="13.702217" + id="text3707"><tspan + sodipodi:role="line" + id="tspan3705" + style="fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="13.702217">$write(\{a\})$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637" + id="text3750"><tspan + sodipodi:role="line" + id="tspan3748" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637">$\sqsupseteq \{a\} \to$ OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="33.02087" + id="text3750-3"><tspan + sodipodi:role="line" + id="tspan3748-2" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="33.02087">$\not\sqsupseteq \{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523" + id="text3750-0"><tspan + sodipodi:role="line" + id="tspan3748-6" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523">$\not\sqsupseteq \{a\}$</tspan></text> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1-4" + cx="18.004833" + cy="90.979645" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0-5" + cx="18.004833" + cy="81.949104" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6-2" + cx="18.004833" + cy="72.918564" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="65.279381" + id="text3707-5"><tspan + sodipodi:role="line" + id="tspan3705-4" + style="fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="65.279381">$write(\{b\})$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="59.340172" + y="118.94403" + id="text3707-5-3"><tspan + sodipodi:role="line" + id="tspan3705-4-6" + style="fill:#000000;stroke-width:0.264583" + x="59.340172" + y="118.94403">$read()$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="75.619804" + id="text3750-7"><tspan + sodipodi:role="line" + id="tspan3748-4" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="75.619804">$\not\sqsupseteq \{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="84.598038" + id="text3750-3-4"><tspan + sodipodi:role="line" + id="tspan3748-2-3" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="84.598038">$\sqsupseteq \{b\} \to$ OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="93.54969" + id="text3750-0-0"><tspan + sodipodi:role="line" + id="tspan3748-6-7" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="93.54969">$\not\sqsupseteq \{b\}$</tspan></text> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6" + cx="118.63729" + cy="67.630196" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6-0" + cx="67.201363" + cy="124.91125" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="72.653946" + y="127.6125" + id="text3750-9"><tspan + sodipodi:role="line" + id="tspan3748-3" + style="fill:#000000;stroke-width:0.264583" + x="72.653946" + y="127.6125">$\to \{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="62.764446" + y="146.3129" + id="text4280-6"><tspan + sodipodi:role="line" + style="fill:#000000;stroke-width:0.264583" + x="62.764446" + y="146.3129" + id="tspan2630">return $\{a\}$</tspan></text> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0-7" + cx="67.201363" + cy="133.94179" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="72.653946" + y="136.59073" + id="text3750-3-6"><tspan + sodipodi:role="line" + id="tspan3748-2-0" + style="fill:#000000;stroke-width:0.264583" + x="72.653946" + y="136.59073">$\to \{\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="162.7999" + y="118.94403" + id="text3707-5-3-7"><tspan + sodipodi:role="line" + id="tspan3705-4-6-5" + style="fill:#000000;stroke-width:0.264583" + x="162.7999" + y="118.94403">$read()$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583" + x="134.97845" + y="132.58472" + id="text3899"><tspan + sodipodi:role="line" + id="tspan3897" + style="stroke-width:0.264583" + x="134.97845" + y="132.58472">;</tspan></text> + </g> +</svg> diff --git a/doc/talks/2023-01-18-tocatta/assets/latticeB_8.svg b/doc/talks/2023-01-18-tocatta/assets/latticeB_8.svg new file mode 100644 index 00000000..21766415 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/latticeB_8.svg @@ -0,0 +1,671 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="1000" + height="600" + viewBox="0 0 264.58333 158.75" + version="1.1" + id="svg5" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + sodipodi:docname="latticeB_8.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="1.4734708" + inkscape:cx="448.94001" + inkscape:cy="322.36811" + inkscape:window-width="1920" + inkscape:window-height="999" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer2" /> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="Arrow2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3-2" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1-4" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8-7" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2-8" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6-4" /> + </marker> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + sodipodi:insensitive="true"> + <rect + style="fill:#ffffff;stroke:none;stroke-width:0.999998;stop-color:#000000" + id="rect288" + width="262.58151" + height="156.82782" + x="0.77790999" + y="0.93738818" /> + </g> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="Layer 2"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="164.56372" + y="99.307442" + id="text951"><tspan + sodipodi:role="line" + id="tspan949" + style="fill:#000000;stroke-width:0.264583" + x="164.56372" + y="99.307442">$\{\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="164.56372" + y="13.151893" + id="text1005"><tspan + sodipodi:role="line" + id="tspan1003" + style="fill:#000000;stroke-width:0.264583" + x="164.56372" + y="13.151893">$\{a,b,c\}$</tspan></text> + <g + id="g1175" + transform="translate(51.996784,3.5774043)"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="49.27084" + y="67.008698" + id="text1009"><tspan + sodipodi:role="line" + id="tspan1007" + style="fill:#000000;stroke-width:0.264583" + x="49.27084" + y="67.008698">$\{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="112.90984" + y="67.017166" + id="text1009-3"><tspan + sodipodi:role="line" + id="tspan1007-6" + style="fill:#000000;stroke-width:0.264583" + x="112.90984" + y="67.017166">$\{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="176.20593" + y="67.008698" + id="text1009-7"><tspan + sodipodi:role="line" + id="tspan1007-5" + style="fill:#000000;stroke-width:0.264583" + x="176.20593" + y="67.008698">$\{c\}$</tspan></text> + </g> + <g + id="g1183" + transform="translate(51.996784,1.0317046)" + style="fill:#000000"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="112.90984" + y="40.841526" + id="text1117"><tspan + sodipodi:role="line" + id="tspan1115" + style="fill:#000000;stroke-width:0.264583" + x="112.90984" + y="40.841526">$\{a,c\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="49.27084" + y="40.841526" + id="text1117-3"><tspan + sodipodi:role="line" + id="tspan1115-5" + style="fill:#000000;stroke-width:0.264583" + x="49.27084" + y="40.841526">$\{a,b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="176.20593" + y="40.841526" + id="text1117-6"><tspan + sodipodi:role="line" + id="tspan1115-2" + style="fill:#000000;stroke-width:0.264583" + x="176.20593" + y="40.841526">$\{b,c\}$</tspan></text> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2)" + d="M 153.33622,90.367682 118.34198,73.428915" + id="path1300" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9)" + d="M 177.46016,90.367682 212.4544,73.428915" + id="path1300-2" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93)" + d="M 153.33622,61.655656 118.34198,44.716889" + id="path1300-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7)" + d="M 177.46016,61.655656 212.4544,44.716889" + id="path1300-2-6" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1)" + d="M 118.34198,61.655656 153.33622,44.716889" + id="path1300-0-7" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2)" + d="M 212.4544,61.655656 177.46016,44.716889" + id="path1300-2-6-9" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1-4)" + d="M 118.34198,34.227412 153.33622,17.288645" + id="path1300-0-7-5" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2-8)" + d="M 212.4544,34.227412 177.46016,17.288645" + id="path1300-2-6-9-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75)" + d="m 228.52843,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-2)" + d="m 101.90418,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-9" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7)" + d="m 165.29305,89.571762 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7-1)" + d="m 165.29305,32.445235 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6-9" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663" + cx="147.35568" + cy="95.24971" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3" + cx="176.97627" + cy="68.155472" + r="2.7302806" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1" + cx="18.004833" + cy="39.402473" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0" + cx="18.004833" + cy="30.371933" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6" + cx="18.004833" + cy="21.341394" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="13.702217" + id="text3707"><tspan + sodipodi:role="line" + id="tspan3705" + style="fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="13.702217">$write(\{a\})$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637" + id="text3750"><tspan + sodipodi:role="line" + id="tspan3748" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637">$\sqsupseteq \{a\} \to$ OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="33.02087" + id="text3750-3"><tspan + sodipodi:role="line" + id="tspan3748-2" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="33.02087">$\not\sqsupseteq \{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523" + id="text3750-0"><tspan + sodipodi:role="line" + id="tspan3748-6" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523">$\not\sqsupseteq \{a\}$</tspan></text> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1-4" + cx="18.004833" + cy="90.979645" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0-5" + cx="18.004833" + cy="81.949104" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6-2" + cx="18.004833" + cy="72.918564" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="65.279381" + id="text3707-5"><tspan + sodipodi:role="line" + id="tspan3705-4" + style="fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="65.279381">$write(\{b\})$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="59.340172" + y="118.94403" + id="text3707-5-3"><tspan + sodipodi:role="line" + id="tspan3705-4-6" + style="fill:#000000;stroke-width:0.264583" + x="59.340172" + y="118.94403">$read()$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="75.619804" + id="text3750-7"><tspan + sodipodi:role="line" + id="tspan3748-4" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="75.619804">$\not\sqsupseteq \{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="84.598038" + id="text3750-3-4"><tspan + sodipodi:role="line" + id="tspan3748-2-3" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="84.598038">$\sqsupseteq \{b\} \to$ OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="93.54969" + id="text3750-0-0"><tspan + sodipodi:role="line" + id="tspan3748-6-7" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="93.54969">$\not\sqsupseteq \{b\}$</tspan></text> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6" + cx="118.63729" + cy="67.630196" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6-0" + cx="67.201363" + cy="124.91125" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="72.653946" + y="127.6125" + id="text3750-9"><tspan + sodipodi:role="line" + id="tspan3748-3" + style="fill:#000000;stroke-width:0.264583" + x="72.653946" + y="127.6125">$\to \{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="62.764446" + y="146.3129" + id="text4280-6"><tspan + sodipodi:role="line" + style="fill:#000000;stroke-width:0.264583" + x="62.764446" + y="146.3129" + id="tspan2630">return $\{a\}$</tspan></text> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0-7" + cx="67.201363" + cy="133.94179" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="72.653946" + y="136.59073" + id="text3750-3-6"><tspan + sodipodi:role="line" + id="tspan3748-2-0" + style="fill:#000000;stroke-width:0.264583" + x="72.653946" + y="136.59073">$\to \{\}$</tspan></text> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6-0-6" + cx="174.36296" + cy="124.91125" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="179.81555" + y="127.6125" + id="text3750-9-1"><tspan + sodipodi:role="line" + id="tspan3748-3-8" + style="fill:#000000;stroke-width:0.264583" + x="179.81555" + y="127.6125">$\to \{\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="162.7999" + y="118.94403" + id="text3707-5-3-7"><tspan + sodipodi:role="line" + id="tspan3705-4-6-5" + style="fill:#000000;stroke-width:0.264583" + x="162.7999" + y="118.94403">$read()$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583" + x="134.97845" + y="132.58472" + id="text3899"><tspan + sodipodi:role="line" + id="tspan3897" + style="stroke-width:0.264583" + x="134.97845" + y="132.58472">;</tspan></text> + </g> +</svg> diff --git a/doc/talks/2023-01-18-tocatta/assets/latticeB_9.svg b/doc/talks/2023-01-18-tocatta/assets/latticeB_9.svg new file mode 100644 index 00000000..b60f8afe --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/latticeB_9.svg @@ -0,0 +1,699 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="1000" + height="600" + viewBox="0 0 264.58333 158.75" + version="1.1" + id="svg5" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + sodipodi:docname="latticeB_9.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="1.0419012" + inkscape:cx="664.65036" + inkscape:cy="366.63745" + inkscape:window-width="1920" + inkscape:window-height="999" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer2" /> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="Arrow2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-8" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-75-7-1" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-9-3-2" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-93-1-4" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-6-8-7" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2-9-7-2-8" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Arrow2" + markerWidth="7.6999998" + markerHeight="5.5999999" + viewBox="0 0 7.7 5.6" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="arrow2L-1-0-6-4" /> + </marker> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + sodipodi:insensitive="true"> + <rect + style="fill:#ffffff;stroke:none;stroke-width:0.999998;stop-color:#000000" + id="rect288" + width="262.58151" + height="156.82782" + x="0.77790999" + y="0.93738818" /> + </g> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="Layer 2"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="164.56372" + y="99.307442" + id="text951"><tspan + sodipodi:role="line" + id="tspan949" + style="fill:#000000;stroke-width:0.264583" + x="164.56372" + y="99.307442">$\{\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="164.56372" + y="13.151893" + id="text1005"><tspan + sodipodi:role="line" + id="tspan1003" + style="fill:#000000;stroke-width:0.264583" + x="164.56372" + y="13.151893">$\{a,b,c\}$</tspan></text> + <g + id="g1175" + transform="translate(51.996784,3.5774043)"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="49.27084" + y="67.008698" + id="text1009"><tspan + sodipodi:role="line" + id="tspan1007" + style="fill:#000000;stroke-width:0.264583" + x="49.27084" + y="67.008698">$\{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="112.90984" + y="67.017166" + id="text1009-3"><tspan + sodipodi:role="line" + id="tspan1007-6" + style="fill:#000000;stroke-width:0.264583" + x="112.90984" + y="67.017166">$\{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="176.20593" + y="67.008698" + id="text1009-7"><tspan + sodipodi:role="line" + id="tspan1007-5" + style="fill:#000000;stroke-width:0.264583" + x="176.20593" + y="67.008698">$\{c\}$</tspan></text> + </g> + <g + id="g1183" + transform="translate(51.996784,1.0317046)" + style="fill:#000000"> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="112.90984" + y="40.841526" + id="text1117"><tspan + sodipodi:role="line" + id="tspan1115" + style="fill:#000000;stroke-width:0.264583" + x="112.90984" + y="40.841526">$\{a,c\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="49.27084" + y="40.841526" + id="text1117-3"><tspan + sodipodi:role="line" + id="tspan1115-5" + style="fill:#000000;stroke-width:0.264583" + x="49.27084" + y="40.841526">$\{a,b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583" + x="176.20593" + y="40.841526" + id="text1117-6"><tspan + sodipodi:role="line" + id="tspan1115-2" + style="fill:#000000;stroke-width:0.264583" + x="176.20593" + y="40.841526">$\{b,c\}$</tspan></text> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2)" + d="M 153.33622,90.367682 118.34198,73.428915" + id="path1300" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9)" + d="M 177.46016,90.367682 212.4544,73.428915" + id="path1300-2" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93)" + d="M 153.33622,61.655656 118.34198,44.716889" + id="path1300-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7)" + d="M 177.46016,61.655656 212.4544,44.716889" + id="path1300-2-6" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1)" + d="M 118.34198,61.655656 153.33622,44.716889" + id="path1300-0-7" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2)" + d="M 212.4544,61.655656 177.46016,44.716889" + id="path1300-2-6-9" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-93-1-4)" + d="M 118.34198,34.227412 153.33622,17.288645" + id="path1300-0-7-5" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-7-2-8)" + d="M 212.4544,34.227412 177.46016,17.288645" + id="path1300-2-6-9-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75)" + d="m 228.52843,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-2)" + d="m 101.90418,61.091809 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-9" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7)" + d="m 165.29305,89.571762 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2-9-75-7-1)" + d="m 165.29305,32.445235 0.33313,-12.554874 m -0.33313,12.554874 0.33313,-12.554874" + id="path1300-2-2-6-9" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663" + cx="147.35568" + cy="95.24971" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3" + cx="176.97627" + cy="68.155472" + r="2.7302806" /> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1" + cx="18.004833" + cy="39.402473" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0" + cx="18.004833" + cy="30.371933" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6" + cx="18.004833" + cy="21.341394" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="13.702217" + id="text3707"><tspan + sodipodi:role="line" + id="tspan3705" + style="fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="13.702217">$write(\{a\})$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637" + id="text3750"><tspan + sodipodi:role="line" + id="tspan3748" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="24.042637">$\sqsupseteq \{a\} \to$ OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="33.02087" + id="text3750-3"><tspan + sodipodi:role="line" + id="tspan3748-2" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="33.02087">$\not\sqsupseteq \{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523" + id="text3750-0"><tspan + sodipodi:role="line" + id="tspan3748-6" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="41.972523">$\not\sqsupseteq \{a\}$</tspan></text> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-1-4" + cx="18.004833" + cy="90.979645" + r="2.7302806" /> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0-5" + cx="18.004833" + cy="81.949104" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6-2" + cx="18.004833" + cy="72.918564" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="65.279381" + id="text3707-5"><tspan + sodipodi:role="line" + id="tspan3705-4" + style="fill:#000000;stroke-width:0.264583" + x="6.9525447" + y="65.279381">$write(\{b\})$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="59.340172" + y="118.94403" + id="text3707-5-3"><tspan + sodipodi:role="line" + id="tspan3705-4-6" + style="fill:#000000;stroke-width:0.264583" + x="59.340172" + y="118.94403">$read()$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="75.619804" + id="text3750-7"><tspan + sodipodi:role="line" + id="tspan3748-4" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="75.619804">$\not\sqsupseteq \{b\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="23.457415" + y="84.598038" + id="text3750-3-4"><tspan + sodipodi:role="line" + id="tspan3748-2-3" + style="fill:#000000;stroke-width:0.264583" + x="23.457415" + y="84.598038">$\sqsupseteq \{b\} \to$ OK</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#999999;stroke-width:0.264583" + x="23.457415" + y="93.54969" + id="text3750-0-0"><tspan + sodipodi:role="line" + id="tspan3748-6-7" + style="fill:#999999;stroke-width:0.264583" + x="23.457415" + y="93.54969">$\not\sqsupseteq \{b\}$</tspan></text> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6" + cx="118.63729" + cy="67.630196" + r="2.7302806" /> + <circle + style="fill:#800080;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6-0" + cx="67.201363" + cy="124.91125" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="72.653946" + y="127.6125" + id="text3750-9"><tspan + sodipodi:role="line" + id="tspan3748-3" + style="fill:#000000;stroke-width:0.264583" + x="72.653946" + y="127.6125">$\to \{a\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="62.764446" + y="146.3129" + id="text4280-6"><tspan + sodipodi:role="line" + style="fill:#000000;stroke-width:0.264583" + x="62.764446" + y="146.3129" + id="tspan2630">return $\{a\}$</tspan></text> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0-7" + cx="67.201363" + cy="133.94179" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="72.653946" + y="136.59073" + id="text3750-3-6"><tspan + sodipodi:role="line" + id="tspan3748-2-0" + style="fill:#000000;stroke-width:0.264583" + x="72.653946" + y="136.59073">$\to \{\}$</tspan></text> + <circle + style="fill:#ff0000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-6-6-0-6" + cx="174.36296" + cy="124.91125" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="179.81555" + y="127.6125" + id="text3750-9-1"><tspan + sodipodi:role="line" + id="tspan3748-3-8" + style="fill:#000000;stroke-width:0.264583" + x="179.81555" + y="127.6125">$\to \{\}$</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="162.7999" + y="118.94403" + id="text3707-5-3-7"><tspan + sodipodi:role="line" + id="tspan3705-4-6-5" + style="fill:#000000;stroke-width:0.264583" + x="162.7999" + y="118.94403">$read()$:</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583" + x="134.97845" + y="132.58472" + id="text3899"><tspan + sodipodi:role="line" + id="tspan3897" + style="stroke-width:0.264583" + x="134.97845" + y="132.58472">;</tspan></text> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="169.92604" + y="146.3129" + id="text4280-6-7"><tspan + sodipodi:role="line" + style="fill:#000000;stroke-width:0.264583" + x="169.92604" + y="146.3129" + id="tspan2630-9">return $\{b\}$</tspan></text> + <circle + style="fill:#008000;stroke:none;stroke-width:0.499999;stroke-dasharray:none;stop-color:#000000" + id="path3663-3-0-7-2" + cx="174.36296" + cy="133.94179" + r="2.7302806" /> + <text + xml:space="preserve" + style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke-width:0.264583" + x="179.81555" + y="136.59073" + id="text3750-3-6-0"><tspan + sodipodi:role="line" + id="tspan3748-2-0-2" + style="fill:#000000;stroke-width:0.264583" + x="179.81555" + y="136.59073">$\to \{b\}$</tspan></text> + </g> +</svg> diff --git a/doc/talks/2023-01-18-tocatta/assets/location-aware.png b/doc/talks/2023-01-18-tocatta/assets/location-aware.png Binary files differnew file mode 100644 index 00000000..f5966865 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/location-aware.png diff --git a/doc/talks/2023-01-18-tocatta/assets/logo_chatons.png b/doc/talks/2023-01-18-tocatta/assets/logo_chatons.png Binary files differnew file mode 100644 index 00000000..890cf17e --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/logo_chatons.png diff --git a/doc/talks/2023-01-18-tocatta/assets/map.png b/doc/talks/2023-01-18-tocatta/assets/map.png Binary files differnew file mode 100644 index 00000000..1dff3ab6 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/map.png diff --git a/doc/talks/2023-01-18-tocatta/assets/minio.png b/doc/talks/2023-01-18-tocatta/assets/minio.png Binary files differnew file mode 100644 index 00000000..a71e9ccc --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/minio.png diff --git a/doc/talks/2023-01-18-tocatta/assets/neptune.jpg b/doc/talks/2023-01-18-tocatta/assets/neptune.jpg Binary files differnew file mode 100644 index 00000000..e59f0bfa --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/neptune.jpg diff --git a/doc/talks/2023-01-18-tocatta/assets/quentin.jpg b/doc/talks/2023-01-18-tocatta/assets/quentin.jpg Binary files differnew file mode 100644 index 00000000..d9a7b1e7 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/quentin.jpg diff --git a/doc/talks/2023-01-18-tocatta/assets/rust_logo.png b/doc/talks/2023-01-18-tocatta/assets/rust_logo.png Binary files differnew file mode 100644 index 00000000..0e4809ec --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/rust_logo.png diff --git a/doc/talks/2023-01-18-tocatta/assets/slide1.png b/doc/talks/2023-01-18-tocatta/assets/slide1.png Binary files differnew file mode 100644 index 00000000..eb2e67a0 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/slide1.png diff --git a/doc/talks/2023-01-18-tocatta/assets/slide2.png b/doc/talks/2023-01-18-tocatta/assets/slide2.png Binary files differnew file mode 100644 index 00000000..126a39b8 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/slide2.png diff --git a/doc/talks/2023-01-18-tocatta/assets/slide3.png b/doc/talks/2023-01-18-tocatta/assets/slide3.png Binary files differnew file mode 100644 index 00000000..a39f96bf --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/slide3.png diff --git a/doc/talks/2023-01-18-tocatta/assets/slideB1.png b/doc/talks/2023-01-18-tocatta/assets/slideB1.png Binary files differnew file mode 100644 index 00000000..b14b6070 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/slideB1.png diff --git a/doc/talks/2023-01-18-tocatta/assets/slideB2.png b/doc/talks/2023-01-18-tocatta/assets/slideB2.png Binary files differnew file mode 100644 index 00000000..a881a796 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/slideB2.png diff --git a/doc/talks/2023-01-18-tocatta/assets/slideB3.png b/doc/talks/2023-01-18-tocatta/assets/slideB3.png Binary files differnew file mode 100644 index 00000000..830709d2 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/slideB3.png diff --git a/doc/talks/2023-01-18-tocatta/assets/slides.svg b/doc/talks/2023-01-18-tocatta/assets/slides.svg new file mode 100644 index 00000000..9946c6fb --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/slides.svg @@ -0,0 +1,4326 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="1280" + height="720" + viewBox="0 0 338.66667 190.5" + version="1.1" + id="svg5" + inkscape:export-filename="/home/lx/Deuxfleurs/garage/doc/talks/2022-02-06-fosdem/assets/slide1.png" + inkscape:export-xdpi="96" + inkscape:export-ydpi="96" + sodipodi:docname="slides.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:document-units="mm" + showgrid="false" + units="px" + inkscape:snap-global="false" + inkscape:zoom="0.77058782" + inkscape:cx="609.27514" + inkscape:cy="365.95439" + inkscape:window-width="1918" + inkscape:window-height="1033" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" /> + <defs + id="defs2"> + <marker + style="overflow:visible;" + id="Arrow1Mend" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt;" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path12266" /> + </marker> + <marker + style="overflow:visible;" + id="Arrow1Lend" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt;" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path12260" /> + </marker> + <marker + style="overflow:visible" + id="Arrow1Mend-3" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path12266-5" /> + </marker> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <image + width="26.416821" + height="26.416821" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 +AAAAAElFTkSuQmCC +" + id="image1263" + x="134.51895" + y="20.857262" + style="stroke-width:2.00314" /> + <image + width="23.48313" + height="25.232662" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 +gg== +" + id="image1275" + x="220.0013" + y="21.449341" + style="stroke-width:10.7374" /> + <image + width="30.300915" + height="29.702868" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATAAAAEqCAYAAACStgwOAAAOv3pUWHRSYXcgcHJvZmlsZSB0eXBl +IGV4aWYAAHjarZprduM6DoT/cxWzBL4JLofPc2YHs/z5QNmOncTd6dvXTixbligSKFQVlJj1v/9u +8x8eMaVsYiqSa86WR6yx+sYbsdejnVdn43k9j3B/5173G0683nq24TpSH5Kvrbvvv51w3zo9Lz0N +JOP2RX/9osZr6+XTQP42M52Rvp+3geptoOCvL9xtgHYty+Yq5XkJfV3b2/lXGPg1+hLlddpfPhei +NxPXCd6v4ILl1Yd4TSDorzOh8abyyhcc6EI+eyyvKdxnQkC+i5N9mpX5nBX7Jiu7PWL0kpSQryMM +O16DmR/bb/e79Gn/bUBzQvyMk/GAw8t+qe7Lcu6/e08xe69rdS1mQppvi7ov8bzjwE7Iwzkt8yz8 +Jt6X86w8xYDeQcqnHbbzHK46T1q2i2665rZbZzvcYIrRL1/Yej9IlO6TUHz1I1hDnqI+3faF7M0g +5G+Q3sBe/5iLO9et53LDCReejiO9YzDHGd7oy7/xfDvQ3gp5504wr3pkXl6Lgmlo5vSVo0iI23cc +pRPg+/PzQ/MayGA6YRYW2Gy/hujJ3bClOAon0YEDE9ur1lyZtwEIEddOTMYFMmCzC8llZ4v3xTni +KOSnMZBobXRS4FLyk1n6GEImOeL12pxT3DnWJ3/thrNIRKKYCqmhvMhVhNjAT4kChloKCbJLOZUk +qaaWQ4455ZxLVvJrJZRYUsmlFCm1NAkSJUmWImKkSqu+Bsgx1VxLlVpra1y0MXLj7MYBrXXfQ489 +9dxLl157G8BnxJFGHmWIGXW06WeY8MTMs0yZdbblFlBacaWVV1my6mobqO2w404777Jl190eWXPm +SuuX58+z5u5Z8ydTemB5ZI1TS7kP4ZROkuaMjPnoyHjRDABorzmz4mL0RlOnObPVUxXJM8ukyZlO +M0YG43I+bffI3UfmXvJmYvyrvPl75oym7t/InNHUvcnc17x9k7WpFDxsMCdDWoYaVBsoPw5qXvhB +k75sK8fDoclbCdMK81Xp40tzf/O32x8NVCus0lrZzLfEGdbZwQQru9jB3mHmXi5v6Y4DJfcEDMbi +M6Gpw6fsepI9hoRA5EpfWQB9nr6P2LPvhVzM0UYzLUK6dQRfd/S+E9++9GrweRrEsqS8V85tZtlt +ZQ3KXC3NVRkEePpWxx6tGAlrxFJYwe6BLG+/Nho9spthp+7crLnblHWa6E3xFAlZ7LP1CcprmlBS +tcnETQLW1rqJycWkNuKfbM2fnDAI7ozUa2+ZSDw+MolmstiwfNPA3MKCZbkHhrys3feK3pWg36SZ ++gb1lIaTXJRv+3RluGS2yyWlbWeIheqYvZHQbQvZqn2V6NbIfawmJ4rqZTaOpablU+enzZBX9SkZ +H1aOxH10gp5ynxrnRu647EJHmX8hwzOMR4Ik7+wDR/ZdYPwV7KrbtCnSBmDxnZoeRewqEllIWjNa +2QnmqE/ZOckJEyp4LSHzpqb+eHsbKBN8YAYAidX++Ejg2QEpo1UU8xBsRNmrt142NKgTLHNv76zp +9VTNapM4AbFox0et4SZDhT6vzzuSlLhHqjOFEfJ2k7PAKxfbJshso9zTs5QcoKrOdKTmkfLqcXb4 +LkVZidDhCoA73NspmsXJlE1oIHt7Lc/5Ujf3tFARMBy9AZl7pAepkjWg4vnIDrMU813dROrXbsoz +ogGKa5D4u6356YEBKdmIzF6rtjLPR3YfXtJd1NqW1p7q4KMKWnlXOAjc50I0tzcMy1qhqefUlOfU +jBl6Q/OId7M7h7QorV6WGxv4NDOXl75QGIoGDRmOA9XhIgWFMlG71su7AnuqL3MrsNqyMJXdZh8W +mmOBzCr00VsV6T6noZKvJjD1zhsSP9cueXbI2rtqmJjTCAiRGb7buryHrFFHyDBDjAIcYusJAW1Q +JZIMsKXF47txcABQYvJmIn/h90n7bVLN5zTeMntP9JekPpPbldZLKMyzUnyb17hizBQcdp/WNwft +P0YNqYd7wrbmyzB8OQmrIxeKJQqnFFwAtpZusW9JBcmSNCma2mtMACFS2rs2uj9Ho9I95W3CIE8O +88bIzCxQj7mTl5mH5hVXAFEMyLClQp1idaLaz04HlDUQnRq1TQbIpnj3ZBiNGsYExOi6h/SCIGtM +BhIrC2Z1RQ7pLKbV90U/EagWaMOUEHSRg5VsBhbWAlOkPe0Sane7ouwQR0eNwF6ecJ8vNe3mqAKi +wjJ6mMnQKHoYCf9HSXSU1qXWUZbSi3p1y0E9tulQ/65crTaRkZOX3fmOipHasYDGYx64/sLZ+U23 +thbJKj5c4LUdu3BsFSq25Bm6bZ5+yzdiVGghCK42jn0GLovXIDVbIw4feYkd3wjcLzXPLb+XYfN7 +fVZBflFoPn7I8923mP1On1/U+Uxobik0l6WRkEYa2AGfp1wctsjcKaNVlR3SJiBP8Mx+jLjOrQbA +CZUoaduZFnqzkoINq4RztVB4DOCIXBDLSCrrprbxu/P0tFLx1JYBmFMO0EihSg6KMskoqsIAMK1K +bpuflaLVAOSp5p+G+wWfTzHLcb8F4xR8oNFd2/s598XLHg4NPe1Q0SjiEJZweWah2ChgV66xCzzV +xSVSLTDnMpQgHjJ7dftrdlKCTeibDnGsBDhp+hUIQ2kXCU2pyYWUCLsBftzlAbcB3e0TuNkst7+C +u8taKnc7uokhJtCECPIAnzQ1QZldi9SrUQadRSAEDzPPSf8BboAMpACBzNhCqfQaWhcaymN4BMZF +zw2SGpWyuhqD8nMj89m/mJ8amIbrk+Vo0HsITm8uwEiBWOcKVYZpjuqQSToeHB4H+V3huobnRxyW +atsu64KYEgivriUaKw8wcwPCFc9QxKSw18D95FI/0Jspo/Sgygu94L0UtzbxXfsZihcSzQcUU3Ib ++3ox5bsG5y2Dmt9R6HsGvcbeDvdnLw/5dMElPZ66hgT9C73mMCgd7DlBH6x+7ASZ0CF1jy/DZ69F +xwRnqf1Yc9ATD1vbJNiCeODtG7VfwRarZu30xThFlkdrlYljXBTDtNOTNRqwi15ds0Vmhl7nO3pd +KVtKAPW78NcxJUQItjYNHNtSAk1wX46r2krTD425fJY74/hFa9k9DTBXhbMZjN7+RF8ZTzHJ1OGq +EUmuE0dncnDRXaWddzR1tmiHseDQCrrW9nB8p+/PamjtiAqizpdFCbXsEjLeAioFh1QtlcrV3TEb +on4Xp0MREKlN4pMzNJTQR86pemwY1Y0XCu8NjKMgGHCDxnWAwtwgGjdNw1IfjN0QBs09NHosWjBK +iG7WgdPqChaBWOLbzrgQGjp4vTefLlpiak4t2g56iwT8W9LIVMcINbC+Q3Uu+a6aB3CV6jrVagKq +SGc2hL4h8MSZdr1pMpsHk5Em3Wp1UaHwnteusHcKjGYgQq0BfK7GgsgadZkxUgBNE+3p3MSTUpCg +CqDeiYZzJyH8LZKiPSxumQmGoJVFM8oc9zDxVjJRto8/AcwdLw+0bG2CtlnaZ81FAbUyILmr7bp2 +6J19KIggLAKDBZy5qC9gXg6VmFvjjT67ydJYyuoealE7XSj+tQibo+Gi/LHlKaEG9mANa6MmD4Hq +OAu9cKgrbAwhU4aPGh4TwbhXFVZhqDnJtFIWgEY6Y76PaFaSsbWMEcxUP7G4CbBnPNC6VBIcPVRy +jXTQh+M4+OO7O/4ahDxAlHRHpFbDZ/u97KCJ2PEaHFIJc3zIRV1jjbY4bDmFlKBRRVFBtwHZDU9f +SDEY6MsjTegcDYODSbE3pBD5jIIy6l+EuD4VXLA5qgQp2MIqo7YiUZO91FKKmQPPy8gFJh+CakSs +chzgqvt1StSRwFBtVULaCwUqvklK1990kFdEEfiYhnxGX6cDRwPd3OoURBpoTlCqm7em+5e8xNa8 +w9sTP12Ie0HYA3J3wOlA16Cdc6r6oo5+VBdoKejnODD6AsGiIG3o3UBLnPcIfQWc8syRZQTn8jZQ +x5GIgN5AUAFnRObc4WblukaTT7IP2c0H2Tn6i4wkQT/KdTCd+aC6L/iLd/yl+itpvJTR/FNppEoO +ijA6eu91mDuKdhHBSuh9waZ5RNiQE/KIEkLluZVIADSN1QmNkbpTOKbRiE8AonciOv0uPlB7Bp+P +PeMQrGcDnxKP+1I04fPgsun9wACjsdg9ZxNscm7xLjgbZXMLjsUQqttKtSyM3dB71UAVpQRx1Sl1 +UzHp3MRRbdeoKzfrjVAE1vzprcIJc5+u07KuF4GkpGnRrxb53LpY27WckF5YkB3Xx/dj6x1zbC7a +j1uAeOneKiWjt3WrVWgpBKnQzcDnFlOqttuo6VW2KZSUVeTDNzW2NgwMGHzVu6Oi45fejlnihNP8 +XGiA7C8qoYBuAkOHnakH6IjxZykGN6PTobC5OoTrAhYHosYzi1qajLFbR2RS/CQynSLKtHDLZ51R +L9hTt7pmnnlhQiL+OS3CykUFU1mFlOexP2MCRHQ84pVI88hkmpSHoJlwv96VxFrqXzHQVG0fGtJ5 +yTSu6ztjYH546+NJyVgUdYf2qtKoqBQVDDO1W0R4MD9be83r/se14/uRi65MnffEPwNwmnnXC7oG +UrplNdSKFrkl8HQeE+evZI+pbAl/1Y8cD9CAnGG9jgEAkkS6DuBjwiNw9L+Q9xoYEqqNYNDcsiAX +KjNGVUNqapykYUYo6pdCsda4v7qv/rE176vnz4rH6JuU/bHNypF4Ixoyep4cM2j2MNUIc9mOkUB2 +wKqETJQ3oXZDL68EkKuBlCfl0fPwrkd6F0KHGNMQBb2LRNGopxjAHJLOOFIuB2WFsWeM5aF13bSm +NXb+cQHjSzf2DwNl/pKGHoE0T2E7UXwO7KpBFexX8dF/KEhI/zT0KtpIW/TITz+A5UHeVOSJ9ROb +6uncafKBMBwlW++6qYWi4fQlRmSSbkpMhJjpWQIt9yPCWa09JrOhrOn8L8mwl1d43y+bf+UvB7eB +YnH6PwwE8Za0Qn3QcVm4cKB1qmpJ6iqemvooqXlVym3K5jbnv/67n/ntgQj5rNTS/wEy4kxsAPkh +XQAAAYVpQ0NQSUNDIHByb2ZpbGUAAHicfZE9SMNAHMVfW8UPWhzsUMQhQ3WyICpFcNEqFKFCqBVa +dTC59AuaNCQpLo6Ca8HBj8Wqg4uzrg6ugiD4AeLm5qToIiX+Lym0iPHguB/v7j3u3gH+RoWpZtc4 +oGqWkU4mhGxuVeh5RR8iCGEGcYmZ+pwopuA5vu7h4+tdjGd5n/tzhJS8yQCfQDzLdMMi3iCOb1o6 +533iMCtJCvE58ZhBFyR+5Lrs8hvnosN+nhk2Mul54jCxUOxguYNZyVCJp4ijiqpRvj/rssJ5i7Na +qbHWPfkLg3ltZZnrNIeRxCKWIEKAjBrKqMBCjFaNFBNp2k94+Iccv0gumVxlMHIsoAoVkuMH/4Pf +3ZqFyQk3KZgAul9s+2ME6NkFmnXb/j627eYJEHgGrrS2v9oApj9Jr7e16BEwsA1cXLc1eQ+43AEi +T7pkSI4UoOkvFID3M/qmHDB4C/Svub219nH6AGSoq9QNcHAIjBYpe93j3b2dvf17ptXfD/nLct0c +jlvtAAANGmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlk +PSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpu +czptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNC40LjAtRXhpdjIiPgogPHJkZjpSREYgeG1sbnM6 +cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRm +OkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9i +ZS5jb20veGFwLzEuMC9tbS8iCiAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94 +YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9y +Zy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6R0lNUD0iaHR0cDovL3d3dy5naW1wLm9yZy94 +bXAvIgogICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICB4 +bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgIHhtcE1NOkRvY3VtZW50 +SUQ9ImdpbXA6ZG9jaWQ6Z2ltcDozYmZlYzk3MS01ODI1LTRlMTEtODk3YS00ODBjOGUzY2ZlODci +CiAgIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Y2E4N2VhMzAtNTY2NC00ZDU4LThmZGItODZi +NWI3YmJiMWI4IgogICB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6YWYxNmU4Mjct +MDJjYS00YjQ3LTkxYzEtYmJiOGY4NmMyYTI4IgogICBkYzpGb3JtYXQ9ImltYWdlL3BuZyIKICAg +R0lNUDpBUEk9IjIuMCIKICAgR0lNUDpQbGF0Zm9ybT0iTGludXgiCiAgIEdJTVA6VGltZVN0YW1w +PSIxNjMyNDkyMDU0NzQwNTU2IgogICBHSU1QOlZlcnNpb249IjIuMTAuMjQiCiAgIHRpZmY6T3Jp +ZW50YXRpb249IjEiCiAgIHhtcDpDcmVhdG9yVG9vbD0iR0lNUCAyLjEwIj4KICAgPHhtcE1NOkhp +c3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2 +ZWQiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5p +aWQ6Y2MzMmRmN2ItYjQ2YS00NTM0LTlhYjgtMmRhOTRjOTYwY2NmIgogICAgICBzdEV2dDpzb2Z0 +d2FyZUFnZW50PSJHaW1wIDIuMTAgKExpbnV4KSIKICAgICAgc3RFdnQ6d2hlbj0iMjAyMS0wOS0y +NFQxNjowMDo1NCswMjowMCIvPgogICAgPC9yZGY6U2VxPgogICA8L3htcE1NOkhpc3Rvcnk+CiAg +PC9yZGY6RGVzY3JpcHRpb24+CiA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9Inci +Pz55r0WaAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5QkY +DgA218SFAwAAIABJREFUeNrtndl3Glfert8qqjQgNFvzBAjZElAMshPHAo1MstP/57k5w+rO3N9a +5+ac7tjxEOc76+vEkkAzAqHBEZoioOpcFGC7MycequB9bnKRrJWlAh5efnvvdwuapmkghBATIvIR +EEIoMEIIocAIIYQCI4RQYIQQQoERQggFRgghFBghhAIjhBAKjBBCKDBCCAVGCCEUGCGEUGCEEEKB +EUIoMEIIocDeJMVika80IRSY+SiVSvjuu++Qy+VQKpX4ihNSQ0i1/gcWCgX8x3/8HW2tbbgzMwO7 +3Q6r1cpXnhAKzPioqor19Q3867/+hWfPniEWjyMQCKCrqwsWi4XvAEIoMOP/jNza3MT+fhZbW1tY +XFzE7NwcHA4Hmpub+S4ghAIzLgIATdOQP8nj8aPH2N3dRSqVQiweh8/nQ3d3N9MYIRSYwUUmCCgW +i9jd2cXnn32Ozc0tLC0tIjw7yzRGCAVmDokBwMnJCZ48fozM3h6SqRQikQiCwSBnY4RQYOYQWaFQ +wPb2No6Pj7GeWkckGsHc3BzGxsbQ3NxclR0hhAIzpMQ0TUM+n8d/fvMN9vezSK6tIRaLwx/wczZG +CAVmDq6urrC9tY2jwyNsbm4iFothJhSC3W5nGiOEAjM+mqbh9PQUTx4/we7uLtaSSUSjUfj9fnR2 +dkKS+LgIocAMTqlUwl56D59+/Am2NrewsLiAcDjMNEYIBWauNPbwq6+ws7ONVCqFaDQKn8+Hrq4u +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 +" + id="image1287" + x="175.31808" + y="19.214237" + style="stroke-width:3.53931" /> + <image + width="29.202602" + height="29.202602" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 +CkvGGFWwV9YDEF1SwgLIYD2Q2SEME02Fgc5Qhu4WKndlxyBtslYOunEW0+Yk/9ACqQf/3LR7saUl +ZKNI1xbp8kBcEWqJbjm+yoStoaw1zM8eoz15E/rohzi8/X3o8XlQinGsFCJO1NdIGtfv0xcdILdg +CD42SgZM7RmuoWZPFZ1umEHyeFRt5KYa6V5SuQABhfCX41r628IejAY/rlc9aH+O3EROA+oArbmw +5Ia3w/oRus4tKWTGD/L+mn/LJIL/lmGFiJtqi/tNE2dt1dFlTZfROswHMKcwCoVkQJl2iE45LXjv +eRMmAKadx6wOV8jWXdnM14Av//LfxP/8F/4dfAagCy+TfxQUlstftl+F4c/hne//unzwkz+JMk99 +5zIENbJbQ7Rs0tLwgGK4hLmzxK4ewLtmUBw5wWdmUEhPk6iHNozasLPHn3E5kFW2RRuAUnwyTTMp +atTjO8E7Fen3Vp1Pa7PDiywkaXRV4zuV9B8QB99OG0eft2uvQzseIDdPII/egH3wOuzxO5DFudiC +eM9WcAkg8QLZVm2I9ZjTAElwjdGSMiLDRYdYSigsQi9cX7CVVpkYjuGGMMQCs7iYn+9jrbkZGa2D +rjwckNoJ74iEl6CjRj++DfdlYOYyNpk4YOC0XANoRXcJx2lg/bdSt5qiKyzeijEhEvGuhlFBDlad +jbnp4bPhJtdjd3MFbsHzkRmTFxIbx8S5vDQvaIdBrC22ffgTvPrV/xG//p/9Bv5t+b07J9pnTP7R +UVhdLvHf268C+Gcg+Ofk8Y9/xW6eP0S93gHwrjfk6XZczwxjA9NVWQiAQMdbJW4HgNriXNbi/eUy +5cwd2VHF4RYNqPKolKfbgHzHeFwFpkLero13z4F6nKca23dJWgBSJm+IUcoqXp0Koy5+P7HDLxWC +A0wmyHTp93u4hjz6MfD6t2BPXoftryBVEIyoCQ+wQZmvCHBLty7G8+fnSiosv2xCFaL+M42i7hKm +Xgl3hy5g6ikoDM3zAGHFxRijjw+A4drDreEVqj/77O9XG2TqCsuM546MXwT4QzEhXo87jutUlsb4 +3EmDaMTqRcVF0DsrDftQuJm189iSYYA7REG1FFdWtoxEpa7sysSg+YIVcJRKN65HrLqy2lw6hff+ +cAPRZ/bq176LX/31P5z+5D/7jeXPye8DuMJZznKWs5zlLGc5y1nOcpaznOUsZznLWc5ylrOc5Sxn +OctZznKWs5zlLGc5y1nOcpaznOUsZznLWc5ylrOc5SxnOctZznKWs5zlLGc5y1nOcpaznOUsZznL +Wc5ylrOc5SxnOctZznKWs5zlLGc5y1nOcpaznOUsZznLWc5ylrOc5SxnOctZznKWs5zlLGc5y1nO +cpaznOUsZznLWc5ylrOc5SxnOctZznKWs5zlLGc5y1nOcpaznOUsZznLWc5ylrOc5SxnOcvnV/5/ +fl07WlwHHbMAAAAASUVORK5CYII= +" + id="image1359" + x="90.934036" + y="19.464371" + style="stroke-width:2.71808" /> + <text + xml:space="preserve" + style="font-size:12.7px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583" + x="169.47803" + y="66.103424" + id="text4115"><tspan + sodipodi:role="line" + style="font-size:12.7px;stroke-width:0.264583" + x="169.47803" + y="66.103424" + id="tspan4117">User-facing application</tspan></text> + <text + xml:space="preserve" + style="font-size:12.7px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583" + x="73.229004" + y="183.68733" + id="text4115-3"><tspan + sodipodi:role="line" + style="font-size:12.7px;stroke-width:0.264583" + x="73.229004" + y="183.68733" + id="tspan4117-6">Database</tspan></text> + <text + xml:space="preserve" + style="font-size:12.7px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583" + x="266.38498" + y="182.65727" + id="text4115-3-7"><tspan + sodipodi:role="line" + style="font-size:12.7px;stroke-width:0.264583" + x="266.38498" + y="182.65727" + id="tspan4117-6-5">Filesystem</tspan></text> + <image + width="65.039139" + height="65.039139" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABmJLR0QA/wD/AP+gvaeTAAAgAElE +QVR4nO3debxddX3v/9fnG4aQAYgQhqiAcQASLWIcqqBYxKEK1TpUH3qx2sd1eLS92tbWsbe1va11 +6PWn1qpwb2uLQyveqjU4IbaCwWolCMUEEA2DSoCACZBAmL6f3x9rHziJCRnY53z32ev1fDzWI2ft +nCw++3D2+r7XWt8BJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmS +JEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmS +JEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmS +JEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmS +JEmSJEmSJEmSJI2iaF2ApKHbG5gzaX8PYP6k/QD23+rfbABy0v6twN2T9m8D7hhijZIaMwBIbc0H +DgEOBPYb7O8HzAXmllL2Hbw2NzPn0jXc8yb+HlhA19jvPc1130EXCtYDmwbbRmBDREzs31prvXnw +fZuAm+mCxc3AjcB1g31JDRgApOGaCzyYrkFfOPjzkFLKgcCBmbkQOHjS3013wz1q7qALA+uA6yLi +RuDGWus64PrB6zcOtp/RBQlJQ2AAkHbNAmAxsAg4tJSyGFicmROvHYKfq6m0GbgWWBMRa2qta4C1 +E68BVwG1XXnSzOGJStrSHODIwfaoUsoRmXkYMLH1/Yp91N0BXANcExHX1FqvAn4IXD7YbmtYmzRS +DADqq4kr+aWllCV0V/FLgaOA0rQyTaW1wKrB3YPVwCq6OwdXsmUnSGnsGQA07g4AlgHHllKOzMyj +6a7uF7QtSyNmPXB5RKyutV4OXASsBG5qW5Y0dQwAGif7AY8BlpVSlmXmMuBo/D3X7lsLrMzMlXSB +4D/pOidKM54nRs1U+wOPxsZe089QoLHgyVIzxcOAp5VSnp6ZT6N7fi+NijURcV6t9ZvAuXSjEaSR +ZgDQqFoMHF9KOS4zn0kXAKSZYm1ErKi1ngOcD6zGToYaMQYAjYqjgRNKKU/LzBPoxtRL4+LaiPhm +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 +P2vmuIUtH0lsb+TDgklfz6JrvDVzXJSZH6Obvc/JsbRDBgDtjmWllNdm5ivwKk5qaXNELK+1no4d ++7SLDAB6IBYAL42Il9OtbubvkzT1KrAiMz8NfIb+9iHRA+QJW8PyELqFh04FlrUuRhpDqzPzs8An +gB+3LkYznwFAU+GXSikvz8yX0g3ZkrR7roqIz9RaPwVc0roYjRcDgKbaUuDkiDgFeAr+zkk7snrw +XP8s4Hy6KXulofNkrOm0mG5Fwucys9dKl4bpDuBbmfll4AvAlY3rUU8YANTKHOAppZRTMvP5dLO5 +SX1xXUR8vda6HPga3VBNaVoZADQqjgSeVko5ITOfTjftqzQufhoR36y1ngecC/ywdUGSAUCjahFw +XCnlpMw8nm5BF2mmWBsRK2qt59A9x1/VuiBpawYAzRSHAycM7hA8DXhE64KkSa6IiPNqrefSXeFf +07ogaUcMAJqp9gMeQzcr4bLMXAYcjb/TmnprgZWZuRJYCXwXuKFtSdKu82SpcbIv8EsYCjQ8Wzf2 +36FbuEma8TwxatwtAB4HHFtKOTIzjwaOoluRTppwE3BZRFxaa70MuIiuwXeaXY0tA4D6agHdvARL +SylLgMWZuZRuNMKsppVpKq0FVkXEmlrrarrOeWsGm9QrBgBpS/vQhYAjgUeVUg7PzMOAw+g6Is5u +WZx2aDNwNXBNRFxTa72absjd5YPt9pbFSaPEACDtmgV0QxQPBRaXUhbT3T2YeO0IoLQrb+ytp7uK +v3ZwFT9x9b4WuBa4im61PEk7YACQhmsfuiBwEHAgsBA4qJRyEHBgZi4cvHbw4O/3aVXoiLgduBG4 +HlgXEeuAG2ut19N1tls36e+vwyt4aWgMAFJb87gvEMwH9h+8NheYW0pZMPE1MC8z96ebRnku3aiH +fYE96YZFTqebgbvoprC9BdgE3BYRG4CNg/1Ntdb1E18PXt8A3ErXoN8weF1SAwYAafwEXZCYbMEO +9tfvYH8DrkonSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk +SZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk +SZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk +SZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk +SZIkSZIkSdKU+/8B8UD79J00AfcAAAAASUVORK5CYII= +" + id="image7444" + x="42.921436" + y="103.45746" + style="stroke-width:2.08285" /> + <image + width="48.37225" + height="48.37225" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 +" + id="image7640" + x="242.05431" + y="112.98055" + style="stroke-width:2.62548" /> + <path + style="fill:none;stroke:#000000;stroke-width:1.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" + d="M 147.15073,80.962811 V 93.477746 H 74.989012 v 12.859624" + id="path12236" /> + <path + style="fill:none;stroke:#000000;stroke-width:1.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend-3)" + d="m 190.64085,80.962811 v 12.514935 h 72.16171 v 12.859624" + id="path12236-6" /> + <image + width="34.06498" + height="34.06498" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AACAAElEQVR42uydd3iUVdqH75n03isJ +pJDQe+9FqiIIYsFe97Ouurrrqrtrd9V1197ddRVRFBUQQaR3CDXUQEgCJCQhvffMzPfHAItKyTlT +3pnJua9rLhDzvOecSTLv8z7l94BCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKh +UCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKG6LTegMKhULhooQBMUDc6b8H +A0GnX8FAyK/+2wMIANx/dR0vwPdX/1YBGIEqoBWoAVqAWqAJKANKgVNAyTmvM//doPWbo9Ae5QAo +FAqFON5AZyAFSADi+d/NPgbocPprHJUa4BiQffqVc87fczE7EwoXRzkACoVCcX50QCLQDUjFfLM/ +84oH9Fpv0Ea0YnYCDgPpwJ7TrxzApPXmFNZDOQAKhUIBfkBPoM/pV+/Tr0CtN+ZAVGN2CNIxOwS7 +gIOYUxEKJ0Q5AAqFor3hDvQChgFDTr9ScN0neltSAWwE1p9+pQMGrTelaBvKAVAo2hdhF3iFn/7T +F3PR2bn4AZ7n/PeZYrNmoA5z0Vn9OX82ApVAOeZitHP/1OLmEAiMAYZjvukPPH0mhfWpxuwQbADW +ATtREQKHRTkAro0ec3Vx8Om/B53+95CL2Jz5EK/G/EFee/qlioKcA0/MeeszBWqdz3l14rcV5vam +CnN1ehlQBJwATp5+5Z7+Mx+zcyGLHzASGHf6NQBw0/jc7ZUiYMnp10pU94FDoRwA50OHucI4EegI +RGKuPI46/e+h/O+mb8385ZmWowbMjkHx6VcRUIi5tajg9H8Xn/57ndZvlovjj/nmdiaM3Q/zz4Sz +3+xMmNvV8oCjQAZwBHNR2lHMTuqv6Qpccfo1EnNLncKxqMfsBJxxCIq13lB7RzkAjos/0ANzIVIP +zE9wSadfXhZc157UY37Cyz7P6xiWPeW1N3SYi9SGYr7ZDwa64/w3e1EMwHHMzkAG5ojHFUCy1htT +CGEEtgBfAN9griVQ2BnlADgGAZg/0Idizk/2xvyE78rfHyPmJ7xsIAtzNfF+YB/m8LDCnLKZCEw9 +/YrRekMKhQ1oxBwR+BxYjrkNUWEHXPkG48hEAxMwFyYNxdxn3N6e5C5GAf9zBvaffh2ifUQM+mC+ +2U8BRqB9zl6hsCdFwFfAZ5g7ChQ2RDkA9sEXGIv5pj8BcyhXvfditGCOEmwDtgNpmMPArlBhnATc +Atx8+u8KhcLcQfAm5hRBe3D+7Y66CdmOEMy5yZmYn+Z8Lbuc4jxUAzswOwNpmB2DU1pvqo0EAddg +vvGPRP0uuhzu7u6EhoYSFhb2m1d4ePjZv/v7+xMcHIxOpyMkJASdTkdwcPAFr1tdXY3BYDj7Z1VV +FUajkaqqKhobGykpKaG0tJRTp06d/fuZ/66urtb6bZGhEHgf+BBVOGhV1IeOdQkAZgNzMD/xq0pk ++3MEcw/yesx9yPlab+gcdJgjQLcDVwE+Wm9IIY+npydxcXEkJSWRlJREbGwsMTExZ/87ISEBvd6x +tIWam5s5efIkOTk5v3kdOXKE2tparbd4MRoxpwfeBPZqvRlXQDkAlqPHfLO/DZiFEhhxNLL5n0rZ +Osy95vbGE7geeAyzAp3CiQgLC6NXr1706NHj7J/JycnExLhWTabJZOLEiRPs3buX9PT0s38eO3ZM +662djzXAc5h/rxWSKAdAnnDgd6dfnbTejKLNZAI/n36tw7ZaBYHA/wG/x6zVoHBg3Nzc6N69O4MG +DaJnz55nX652oxelsrKS9PR00tPT2bZtGxs2bKCwsFDrbZ1hDfA0sEnrjTgjygEQpxfmD/QbUSFc +Z6cJ2AyswOwQ7MU60846AA9hvvmrYTIOSkxMDAMHDmTAgAEMGDCAESNGEBISYvmF2wE5OTls3ryZ +TZs2sWrVKnJycrTe0krMjsBWrTfiTCgHoO2MB54ELtN6IwqbcRL4EVgMrOX8inMXIxh4ArOD6JCz +4N3c3IiIiCAyMpLo6GiioqIICQnB19eX4OBg/Pz88PX1JSAg4ILXqKmpobW1lfr6epqamqitraWi +ooLKykoqKyupqKigrKyMgoICampqtD7yWTp37sz48eMZN24cI0eOJC5OBWWsxYkTJ1izZg0//vgj +K1as0LKWYDlmR2C71u+JM6AcgEszFngWGK31Ri6Ft7c3MTExxMbGEhISQkBAAAEBAYSEhBAYGEhA +QABeXmYRQXd39998yJ+pJD5DdXU19fX11NbWUlVVRVVVFbW1tVRWVlJaWkpxcTEVFS4r4FWLOSqw +BLNTcDFxIg/gXuCvmFNDmuLt7U2PHj1ISUkhOTmZzp07k5ycTHJyMtHR0XYtTKuvr+fUqVMUFhaS +l5fH8ePHOXbs2Nk/jx07RmurbXRfYmNjmTBhAuPHj2f8+PHEx8fb7dztmaamJtauXcsPP/zAjz/+ +SF5enr23YMJcLPg4ZqdecQGUA3BhRmEuMhmr9UbO4OfnR+fOnUlJSaFz58507tyZTp06ERMTQ0xM +DKGhoXbfU0tLy9lWo5MnT3Ly5Eny8/M5ceIE+fn55OXlcezYMZqbnbqNtxVzvcACYCHmuQdnuBr4 +O+bBO3bHz8+PIUOGMGDAAPr06UOfPn3o2rUr7u7OoR/U3NxMVlYWGRkZHDlyhAMHDpCenk5mZiYG +g9jgQL1ez8CBA7nyyiu54oor6Nu3Lzqd+ojTmj179rB48WK+/PJLjh49as+l6zD/bv4TcweB4leo +347fkgj8A/MHuybodDqSkpLo378//fv3p1+/fvTq1YvY2Fit3xspDAYDeXl5ZGVlkZ2dffYD/+DB +gxw/flzr7QkfB3Pl8VLMXR8j7Ll4aGgoo0aNYtSoUYwcOZIBAwY4zc1ehLq6Ovbt28fu3bvPFp7l +5v62gcPNzY3Ro0dz/fXXc9VVVxEZGan11hUXYevWrXzxxRfMnz+f8vJyey17DHgUs/OuOAflAPwP +P8w5/j9g5/ytt7c3Q4cOZezYsYwaNYoBAwYQFBRk+YWdgOrqag4cOMCBAwfYv3//2T/LytQ4gDP0 +6dOHyy+/nCuuuIKhQ4fi5tY+VaNPnDjBhg0b2LhxI4cOHWLmzJnceOONREdHa701hSDNzc0sW7aM +zz//nGXLltHUJFpuI8Uq4GHMiqIKlANwhusxh4ns8oit1+sZOnQoEydOZOzYsQwdOhRvb4esGdOM +wsJCDhw4wL59+0hLS2Pbtm1a5BI1QafTMWTIEObMmcOsWbNUsZrCpSktLeWTTz7hvffes8fveAvm +tMCLKHnhdu8ARAHvYodwv5eXF+PHj+eqq65ixowZREVFaX12p6OgoIC0tDS2bt1KWloaO3fupL6+ +XuttWY3u3btzww03MGfOHJKS1EgARfuitbWV77//nrfeeovNmzfberkDmBU5d2p9bi1pzw7ANcB7 +2LBq293dnSlTpnDjjTdy+eWXExioWsKtSWtrK/v372fbtm1s2bKFNWvWUFBQoPW2hPDy8mL27Nnc +c889jBw5UuvtKDSkut4cBm9qbqW5tRWjyURtQzNuOh1+Pp6/+Fo3vR5fb098vTxwd3MsuWFrsHPn +Tt566y2+/vprWxYQt2KO/D6NeMuvS9AeHYBw4N/AdFst0KVLF26//XZuueWWdq8iZm+OHDnC2rVr +z75KSkosv6gNSEhI4L777uP2228nPFzzzkGFlWluNVBYVk1hWQ2lVXVU1DZQVl1PRU0DFbX1VNc1 +UdfQTF1jM7WNzdQ3yt/k9Hod/t6eeHt54OXuTpC/N6EBPoQE+BIe5EtogC9hgb6EBfkRFuhLbFig +0zgN+fn5vPzyy3z88ce2rBPYhzkasFvr89qb9uYADMU8WtLqDcGenp5cf/31/O53v2PECLsWhisu +gMlk4sCBA6xdu5Y1a9awbt26X+gcaEH37t15/PHHmTNnDh4ealaUs2I0msgvqyK/pJqCsmrzzb68 +xvz30mpKq+swWUNT0ga46fVEhwYQHxlEXEQQ8RHBxEcG0TEyhI6Rwej1jndbOHnyJC+//DKffPKJ +rRyBVuCF0y+x/lMnxvG+07bjd8DbmAezWI2AgADuvvtuHnnkEVWs5eC0tLSwadMmfvrpJ5YuXcqh +Q4fstvbAgQN56qmnmD59usNNiFNcnOLKWnIKyjmaX0pOQRlZ+WXkFJbT1GIbASMt8fHyIKVDOF07 +RtAl3vxKjg3Dw90xOk/y8vL4+9//zr///W9bpQbWATdgHkHs8rQHByAA+Bi4zpoXjYqK4ve//z33 +3nuv0g93Uo4fP86yZctYtmwZa9asoaGhweprpKSk8OKLLzJ79mwlSuMEFFXUcOBYEfuPneLQiSKy +Tpaezc23Vzzc3UiJC6d/SgcGpHagb3IsAb5emu4pNzeXv/71r8ydOxeT9UMtxcBNmOcLuDSu/onU +E/geK6q0BQYG8vjjj/PII4/g46NmAbkKDQ0NrFixgu+//54lS5ZYLHEcFRXF3/72N+6++24V6ncS +TCZIy8jly9V72HrohMOG8LVGr9eRGhdB/5RYBnaJY2BqHL7eVg2stpm0tDQeeugh0tLSrH1pA/AM +8BJg1ORwdsCVHYCxwCLAKoo6Hh4e/O53v+Ppp58mIiJC67MpbEhLSwvr1q3j+++/Z9GiRZw6darN +tu7u7jzwwAM899xzFx2oowWtBiMFZdUUlFZTVl1HRU0DJVXmP6vqGmlqaaWuoZn6phaaWlp/W5im +0xHg44Wnuxvenu74+Xji6e6Gr7cnPp7u+Hh5nC08Cwv0IzzQl/BgP0IDfJ2m6OwMOYXlfLU6nWVp +h10y1G9NPN3dGNgljjF9khjVO5HIYH+7rm8ymZg7dy5PPPGELbqA1mJOCbT9Q8CJcFUH4Frgc8Aq +caqZM2fy8ssvk5qaqvW5Lkh9YzOF5TVU1jacrjRuoLK2kcraBhqaWswf6s2tNLW2Ut/YgsFwfqfW +w90Nby93vNzd8fJ0P/vBHuDrRaCv9+k/vQj08yYs0JeIYH98vVz3CddoNLJ582a++uorFixYQGlp +6QW/dujQobz//vv07dtX0z03tbSSnV9G5slSMk+WcvxUOSdLqzhVXoPRqM1jbWiADxHB/nSKCqFj +VDAJUSF0jDIXnfn7aPP02BYqahpYsH4fX67eQ21Du9eNuSQ6HXTrFMXYPkmM7ZtMUoz95pPU1tby +0ksv8frrr9PYaFXp/3zMXWMu1yXgig7Ag8AbgMWPHB06dOD999/nyiuv1PpMANQ1NpOdX0ZWQRnH +T1X8ovK4uk67WRc+Xh5EnG4xigkLJC4i6JxXMKEBrpEqaWlpYeXKlcyfP59FixadHXUbEBDAq6++ +yu9+9ztNCvwKSqtJzy4gPauA9OxCjp8q1+xGL0NYoC8J0aF0iY+gR0IU3TpFEh8RjCOVTFTXNTJ3 +5W6+XruX+qYWrbfjNHTvFMkVQ7sxZXAXgvzso3aamZnJHXfcYW0xoTrMdQGL7HIIO+FAv2JWOcvT +p1+WXUin44477uC1114jODhYk8PUNTazL6eQvdmFZOaVkJVfRkFZtSZ7sRRfb0+zMxD+P8cgISqE +lLhwzYuJZKmrq+Pbb79l7dq1PP300yQmJtpv7cZm0jLy2HzgOFsPnaC4QrPZ6zYjwNeLbp0i6dEp +iu4JUfTrHEuwv/aOZEVNA//9eSffrt+vUgMCeLi7MaJnAtOGdmVEzwSbdxUYjUbeeustnnrqKWuq +hZowT4h9xrbvlv1wFQdAB3wE3GXphRITE/noo4+YMGGCXQ9QXd/EtkMnzE9xWQVkFZQ51VOcLDGh +AaTERZAaH05Kh3BS48PpEB6E3pEe/xyAytoGVu3KYvXuo+zJKqDV4LJ1SedFr9OREhfO4K7xDOoa +T7/OsfhomHoqqazj0+U7WLjpIC2t7aZt3CqEBvgwa3QvrhnTm7BAX5uulZWVxZ133smGDRusedmP +gfsxzxVwalzlU/Y1zOMeLeKGG27gww8/xN/fPkUsx06Vs3HfcTYdOMberEIMxvb1oX4hfL086Nwh +nJS4cHokRNErKZqEqFCHCgnbg8bmVlbvPsrPOzNJO5Snfj7OwcPdjV6J0Qzp1pExfZLo3CFMk30U +lFbzxncbWbMnW+u3xOnwcHdj0sBU5ozvQ9eOthvjbDQaee+99/jzn/9MXV2dtS67GpgNVNr+nbId +rvCR+nfgz5ZcwMvLi3/+85/cf//9Nt/syZIqlqUd5qe0I+SVVNrpLXJ+Av286Z0UTa/EGPokx9A9 +Icpliw+zC8r4bsMBlqVlqMKzNhIfEcy4fsmM75dMj4RouzuL2zPyeG3BBnIK1BhrGfqndOCGy/oy +pk+yzb53R48e5brrrmPPnj3WumQGMBlw2jGlzu4A/BVzTkaaTp06sWDBAgYNGmSzTVbXN7Fq11GW +bstgX06h6i+2Am56PZ07hNEnOYZ+KR0YmBpHiBMXGxpNJjbuO8bclbtJz3KugUaORmSIP2P7JDN5 +UCp9ku03i8NgNPLNun189GMaNe1cPEiW1PgI7rlyCKN6JdnEEWhsbOSRRx7hgw8+sNYlc4HLgCz7 +vUvWw5kdgEeAf1lygSlTpvDFF18QFmab8GFuUSXzVu/hx60ZqmDIxuh0kNIhnIFd4hncNZ7+KbGa +iZOI0Gow8vOOI3z28y5yCsu13o7L0SkqhOnDu3P5kK5EBPvZZc2KmgbeW7yVxZsPYlTevhTdO0Xy +f1cOZUTPBJtc/+uvv+buu+8+28ljIfnARMwRAafCWR2AOcA8S/Z/11138f777+Pu7m71ze3OzOeL +VXvYtP+Y+gDQCDe9nh6JUQzuGs+Qbh3pkxTjUENOjCYTy7cf4YMl2ygodc7uDmdCr9cxvEcnpg/v +zqheiXbRtt+XXchzc1dx/JRlqpLtmV6J0dx31XAGdbH+nJWjR49y7bXXkp6ebo3LFQOTgL32fYcs +w3E+EdvOAGAjIB3v/ctf/sJzzz1ndW323Zn5vL1wM/uPuaRolFMT6OfNsO4dGdkrkeE9OtmtJ/l8 +bD5wnHcXbSHzZKnlF1MIExroy+zRvZg9prfNNSqaWwx8+OM2vli5RxVxWsD4fsk8PHsUsWGBVr1u +Y2Mj999/P//5z3+scbkKYAqwXYO3SApncwCigR2AlDuo1+t56623rF7sl11QxtsLN7Np/3Gt3x9F +G9DrdfRKjGZkr0RG904kOdY+FeS5xZX8Y/56th46ofVboAA8PdyYMqgLN1zWz+ZdBIdOFPPc5yvJ +yldFgrJ4ebhzy6T+3Dp5IN6e1o3cvvrqqzzxxBMYLXfSqoFpmB9SHR5ncgC8gDXAcBljT09P5s2b +x+zZs622odKqOt5dtIWlaYfbRc++q5IYHcplAzozoX+KTW4EzS0G/vvzTv77806aW1TPuCMyuFs8 +N03oz/AenWy2Rkurgf/8tINPl+9sdzoO1iQ6NICHrx7JhAFWm/EGwMKFC7n55put0SpYh7kmYKtG +b1GbcSYH4N/AHTKGbm5ufPPNN8yaNctqm1myNYPXF2xo96NCXY17pw/jzsut1xGyN7uQZ/67UrV8 +Ogk9E6P53bQhNnUEDucW8+Qny8ktrtT6uE7NqF6JPHnjeKsWd+7atYvp06dbY6hQBTAG2K/hW3RJ +nMUBuBd4T+qAOh2ffvopt956q1U2Ulhew4tfrGbboVyt3xOFlZk1qid/vmGcVVQIm1sNfLhkG3NX +7lbRISekd1IMd08bzLDutnEE6hubefmrdSxLO6z1UZ2aQF8vHrtuDJcP6Wq1a548eZLp06dbQy+g +EBgFOKxKlDM4AF2BXYCUZuTbb7/NAw88YJWNfLdhP29+t0kNA3FBpg3rxtO3TLRK73FOQRlP/nu5 +yve6AL2TY3hgxnD6p3awyfWXpR3m5a/W/Xb0skKI0b2TePLGcYQHWScaUFtby8yZM1m1apWll8rB +7AQ4pLiH7XthLMMDWAZIueEvvvgijz5qsUIwDU0tPPv5Kv67fCctKnfncozvl8zzt0+2SpvgT9uP +8Oj7P7rkgJ72SFFFLUu2ZpCVX0rXTpFW7x5JiQvnsv6d2ZtdSGmV1WRq2x0niir4YWsGseGBVinq +9fT05Nprr2Xfvn1kZmZacqkQzGqBXwMNWr9Pv8bRHYDngOtkDO+9915efvllizdw/FQF97+1iB2H +nVbtUXERhnbvyKv/dwXubpaN8W1uNfDa1xt4Z9EWVeDlghw7VcH3Gw9Q29BMj4QovDysV4Ue5OfN +tGHdqKlv4uDxIq2P6rQ0tbSyencWFTUNDO4Wj5uFo7nd3d2ZPXs2R44c4eDBg5ZcKhIYC8wHHCrU +48gOwAjMhX/C38WRI0cyf/583NwsO96aPVk89O4S9TTnovROjuHNB2ZY/GFeUdPA799ZzFo1EMal +MRpN7MspZPHmQ/h4edCtU6TVtETc9HpG9EwgOjSArQdPYFB1I9IcOlHE1oMnGNKto8Xjxt3c3Jg1 +axa5ubmWCgbFAX0wRwIc5pvrqA5AAPAzIBzLiYmJYeXKlQQHB1u0gW/W7eO5z1fRrEZ9uiSxYYG8 +9/Asiz8g8koqufeNhWTmKVGf9kJjcyubDxxnw75jdOsUZdUq9C7xEYzomcCWgyfUICgLKKmq44ct +h+gYGUxSTKhF19Lr9cyYMYOqqiq2bdtmyaVSMdeyrdT6/TmDozoArwJTRY28vb35+eef6drVsorQ +D5Zs4+2Fmx3HTVNYFX8fT95/ZJbFqmK7M/O5781FKkLUTimrrueHLYdobG6hT3KsxWmkM4QH+TFx +QCr7c05RpH62pGlpNbB691Eam1sZ1DXeomiNTqdjypQp1nAChgMngHSt3x9wTAegJ5Kh/w8//JBp +06ZJL2w0mvj7l2uZt8pq4yIVDoabXs8/751Gr6Roi66zaf9xHnl/CfWNqiOkPWMymdibXcjPOzJJ +jA4lLiLIKtf18/Zk6pCulFTWcSSvROtjOjV7swvJPFnK6N6Wz4CYPHkyJ06csDQdMBVYiwOMEXZE +B2A+kCxqdN111/Hiiy9KL2oywTOfreSHLYe0Pr/ChvzxujFMHpRq0TXW7Mnizx//RItKDylOU1Pf +xLK0w5RW1TGwS5xVhg256fWM6ZOEu5uenZkntT6iU3OiqIJth3IZ3TvRoimhOp2OK6+8kv3793P4 +sLSGgztmueAFQJWW74ujOQDXAX8UNYqJieHHH3/E11dKKgCAfy5Yz8JNFlV6Khycy4d05YGZUkrS +Z/lp+xH++p8VqtJfcV4ycotZvTuLHglRRIb4W+Wa/VI6EBcRxKYDx5WolAWUVtWxclcWg7vFExYo +f6/Q6/VcddVVbNu2jZycHNnL+AHjgC/QsDPAkRwAP2AxIBxDmz9/Pn369JFe+OOl2/ns511an19h +Q5Jiw/jnvdMsejJbsyeLv/znZ/UhrLgoVXWNLNmagclkom/nWKsoS6bEhdM7MYZ1e3NU5MkC6hqb ++Wn7EbrERxAfGSx9HXd3d2bNmsWaNWvIz8+XvUw00AX4Rqv3w5EcgGcwh0WEuPPOO3nsscekF/1m +3T7e+n6T1mdX2BBfLw/effgqIoLln8i2HcrlTx8tw6Ce/BVtwGQysSszn22HchncNd7ibhOADhFB +jOiZwIa9OUqN1AJaWg2s2p1FUkwoiRZ0CHh6ejJr1iyWLVtGcXGx7GW6A0XATi3eC0eRAo7FrJcs +JLOVkJDAvn37CAgIkFp066ETPPT2DxhN6onOlXnxzikW5f33ZRdy/1uLaFAfugoJAn29ePb2SYzq +lWiV650qr+G+NxaqYUIW4qbX88xtE5k6uItF1zl+/DhDhgyxxAloAAYCdi9Ac5QIwAuYhX+E+PTT +T6VD/4XlNTzw5iIam1u1PrvChlw+pCt3XzFY2j6nsJx731hIndJqV0jS1GJgxc5MmlsNDEyNs1g8 +yN/Hi8v6d2bLwRNU1DqcuqzTYDKZWJ+eQ2SIP107RkpfJzg4mGHDhjFv3jwMBqn0jAfQH/gUO4sE +OYIDEA18fvpNaDPjx4/n73//u9SCzS0Gfv/2Ik6WaFqAqbAxkcH+/Ov+K6WV/qrqGrnv9YWUKI12 +hRVIzypgV2Y+w3p0sqgSHcDX25PJg7uw48hJSirVz6csJmDj/mME+HrRK1G+Nbhjx4507NiRRYsW +yV4iHsgHdtvz/I7gALwAjBQxcHd3Z9GiRURGynltL325lk37j2t9boUN0eng1f+7XHowSEurgYff +XaJ6sBVWpbC8hhU7j9IvpYPFCoJeHu5c1j+FXZn5FFcqwSBL2HboBEF+3vS0wAno27cvNTU1bN26 +VfYSI4BPsOPQIK0dAKmn/3vvvZfbbrtNasEVOzN5b7H0N0jhJFw7tg/XjZPvDHnxizWs2yvd4qNQ +XBBzJfphs0ythZPrvDzcmTQwhfSsAk6V12h9NKdm66ETxEUEkRIXLn2NCRMmsGPHDrKysmTMfQAj +sNpeZ9baARB++g8NDeX777+X6vkvr2ng4XeXqLy/ixMbFsg/7rlCuuXvuw37+feyHVofQ+HCtBqM +rN6ThV6no19KBywpC/Bwd2NC/87sPHJSRQIsZMO+Y3SJj6BTVIiUvV6vZ9q0aSxcuJCysjKZSwwE +/gvYxZuzjni1HOHA70SNnnjiCcLC5LzmV75aS6UqmnF5Hp8zFh8voaDSWY7klfDPBRu0PoKiHWAy +meeO/OU/y2lusay339fbk7cenGFRMZsCDEYjT3z8E7szpXv7CQoK4vPPP8fdXar2yAf4g73Oq2UE +4AEEB/6EhYUxd+5cvLzEe2pX7Mzkk6XbNTyuwh5MHJDC7VMHSdnWNzbzwFuLKa+u1/oYinZEdkEZ +e7ILGNe3M54e8h/JXh7ujO+XzOYDJ6ioUQ86shiMRtbsyWZo945EBMnVaXTo0IHm5mY2btwoY94D +eA9osvVZtYoA6IF7RI0eeeQRqZ7/6vom/vH1eo2OqrAXAb5ePHrtaGn75+au5kRRhdbHULRDdmfm +87t/fkuphR0nwf4+vPfwTDpGBWt9JKemrrGZh95eTKEFdRV/+9vf6NWrl4xpIHCXPc6plQMwFRBS +xQgKCuKBBx6QWuyTpduVR9wOuHf6UMIlPfZlaYdZteuo1kdQtGMyT5Zyxz8WWCzwExboy/sPz7Ta +LIL2SnlNA394d4m06qKnpycvvfSS7PL3YAehPq0cgPtEDR588EGCgsRHbZ4sqWLB+n0aHVNhL5Ji +Qrl6tJS3TXFlLa+pCJHCASgoreaufyzgcK60qhwAUSEBvP3gDKtIELdnjuaX8rdPV0irxU6bNo0h +Q4bImKYAlk0uawNa1AAkAm8h4N34+/vz1VdfSVX+vzhvDVn5UtWYCifi2dsnSVXumkzw5L9/Uj8j +CoehobmVlbuOMqhLPJEWzK8IDfCld2IMP+/MxKAGWElz/FQFBqOJQV3jpew7derE3LlzZUxNwA+2 +PJsWEYB7RNe96aabCA8X783cl13Imj1S/ZgKJ2J4z04M79FJyvaHLQfZcuCE1kdQKH5BTX0T97+5 +kH05hRZdp39qB567bZJVJhK2Zz5dvoPl249I2U6cOJEBAwbImF4NWCYZeQnsHQFwwyz8I+TWfvTR +R8TExAgv9tdPV1BYpsQxXBk3vZ7X7plGSICPsG15TQOPvv8jTS1KF0LheDS3Gli5K4v+KR2IDpUb +eAbmUdj+vl5sPagcXUvYfOAEo3olECZRZ2QwGFi6dKmomTewCfOgPJtg7wjAWCBKxGDQoEH069dP +eKF9OYXsPirfy6lwDq4Y2pUkyZGeb363ieq6Rq2PoFBckPrGZh58axF7sgosus6c8X2la2QUZppa +Wnn281UYjOIjwefMmYOPj/hDCjDTlmeytwNwrajB734nrBUEwGc/77Lz0RT2xsPdjbskJ/3tyjzJ +srQMrY+gUFyS+qYWHn7nBw4dL7LoOn+8bgwDu8RpfRyn5kheidS9JTg4mKuvvlpmyStseR57OgAe +wCwRg8DAQK6//nrhhXIKy9mwT+m4uzozR/YgNixQ2K7VYOTlL9chWdirUNidusZmHnx7MTkF8sWq +7m56Xvnd5cRFiHdTKf7Hf3/eRXW9uEbPnDlzZJaLB1JtdRZ7OgATMMv/tpkbb7wRf3/xKtjPV+xS +H+4ujqeHG7dNGShl++36/Rw7Va71ERQKIarqGrnn9e8tEqsK8vPmjfun4+9j09oyl6a+sZlvJVrL +x40bJ9XJBlxmq7PY0wEQDv/fdNNNwouUV9dLV2sqnIfZo3tJtUjVNjTzyTIlCa1wTsprGnjwrcUW +Df1JiA7h+Tsmq84AC5i/Jl14foOPjw9jxoyRWW6crc5hLwfAE5ghYhAXF8ewYcOEF/px22FaDeJF +Ggrnwd1Nzw2XiReGAvznp+1qIJTCqSkoq+bBtxZTIxGGPsOoXoncPlUugqYwO2JbDh4XtpsyZYrM +ckNtdQ57OQDjACGVllmzZqGT8FCXbDlkpyMptOLyIV2l2qIKy2uYv3av1ttXKCwmu6CMP3/8k0UP +O/83bSiDu8mJ2yhgpYR0+OTJk2WWigdibXEGezkAk0QNrrnmGuFF9mUXqtyui6PTwU0T+0vZ/nvZ +dovHrioUjkJaRi7PfLZSut5Jr9fx8l1TibFAY6A9s3HfMWENkdTUVEJDpdqW5dqdLoG9HICJIl8c +ExPD8OHiMsiL1dO/yzO2T7JU339+aRU/blVtfwrXYvn2I3y8NE3aPtDPmxfvnIK7m1ZjYZyX+qYW +9hwV02fQ6XRSujZAN1ucwR7f9Rigp4jBrFmz0OvFttZ4Wj9b4drcMEEu9//vZTtUbYjCJfl4aRor +dmZK2/dOjuHBmSO0PoZTsjdbXKBp4ECp2ouutti/PRyAiQiONZw5U1z8aOuhE9Q3NtvhOAqt6BIf +Qb/O4qmwvJJKlm47rPX2FQqbYDLBc5+vsmiC4A2X9WNo945aH8XpkFFolHQAuthi//ZyANqMj48P +I0aIe6Pr0pXwj6tz/fi+UnZzV+yWku9UKJyFxuZWHn1/KWXV9VL2Oh08c+tEqZka7ZkDx04JRxb7 +9Okjs5RTOgA6zAJAbWb48OF4e3sLLWIwGtm4/5iNj6LQkpAAHyYPFBfEKq9pUE//inZBUUUNf/xw +Kc2tcoWu4UF+/PXmCSh5gLbT2NzKyZIqIZuEhATc3ITn8AUjOEenLdjaAegJRIsYXHaZuOjR7qMF +aqiLi3PViB54eogPr/xm3V417U/RbtiXXcgb326Uth/dO5HZo3trfQyn4rhg55mHhwfx8VLtl1av +A7C1AyCs5DN+/HjhRdbusdm0RIUDoNPB9BHdhe0amlpYsE5cslOhcGa+WbePn3fIFwU+PHsknaKE +ZFvaNcdPiUszJyUlySzV2dp7t7UDMEjki4OCgqQKJDap8L9LMyA1jviIYGG7ZWmHqVKRIUU75MUv +Vktronh5uPP0LRPQ61UuoC0cl5jNkJycLLOU06UAhoh88dixY4VzIwVl1RSUVdv4GAotmTGih5Td +AomBHQqFK1Df1MLjHy6joalFyr53coy03HZ7o7CsRtgmISFBZqkIa+/dlg6AL4LiBSNHjhReZHdm +vg2PoNCaQF8vLusnHvnafTSfrHz50akKhbOTU1jOP75eL21/7/ShKhXQBsqq64RtIiKk7uVO5QAM +BNyFDCTC/7syT9rwCAqtuax/imTxn3r6Vyh+2HJIWiTIy8OdZ26bqFIBl0Cm9TIsLExmqUhr792W +DoCQdrFer5eSSNx1VEUAXJkJA8Sf/sur61mXrgpDFQqAl79cy6ly8TA1QK/EaK4dq7oCLkZNfZPw +jJH24AAIFQB27tyZoKAgoQVOlddQUKry/65KSIAPA7vECdv9tP2Ikv1VKE5TXd/E3z5dgdEoNzXo +vunDiAz21/oYDk1FrVgUIDw8XGYZp0oBCI1skwn/p0vIMCqch/H9OuMmOBMCzGFPhULxP3YfzeeL +VbulbH29PXnsutFaH8GhqRcstpSMAEh5DRfDVg6AF5AoYiDjABzOK7HR9hWOgIzy36HjRWQXqOI/ +heLXfPDDNunfjfH9OjO6t9BHeruisVlMbCwgQGoEsydWvmfbygFIAYQqtwYMGCC8SKZyAFyW8CA/ ++koM/vlRyf4qFOeludXAs5+vkp6L8cfrx+LtKVTX3W4Qbbf09PSUXUra8HzYygEQHlzQu7d4ockR +5QC4LOP7dRauPjaaTKzZk6X11hUKh+XQ8SI++3mXlG1MaAC3TZaaZOfyiEYAPDw8hEfen8bLmvt2 +CAcgIiKC4OBgoQVOldcolTcXZtLAFGGbvdmFlFaJ9+QqFO2JT5ZuJ7eoUsr25kn9iQ0L1PoIDofM +vBHJKIDrOQCpqeK5XktmXyscm8gQf3onxwjbrd59VOutKxQOT3OrgRfmrcYk0RTg5eHOQ1eLC7a5 +OjJKCR4eHjJLOYUDIDS1qHNn8V7vo0rlzWUZ3TsRveBMUpMJ1qihUApFm9idmS8tEHRZ/85S7bmu +jE5ihrKXl9S93ClqAIQe6WUiAHnFlTbaukJrhnXvJGyz/1ghxRW1Wm9doXAa/rVgA7UNzVK2f7hm +tLCT7srY8a1w+AhAJBAsYqAcAMUZ3N30Uk8Xq3ap4j+FQoSy6nreW7xVyjY1LpypQ6w+nt5pkYkA +NDdLOV9WVTizhQMQL2ogkwLIL62ywdYVWtM7OQY/b7Eol8kEa1X1v0IhzLcb9nHohFw91T3Th0rN +6VCYaWmRmtTYZM092MIBEK7eEnUA6hqbKa9psMHWFVozXCL8f+hEEYWSWucKRXvGaDTx8pdrpGSC +Y0IDuHZsH62P4BB4e4oX9ElGAOTmO18AWzgAHUS+ODAwEH9/MZ3p/BL19O+qDOsh7gBs2n9M620r +FE7LoRPFfLthv5TtHVMGEuBr1bS0U+IjKJBkNBoxGMQGCJ1GrmjjAtjCARCSb4uNFVd7y1MOgEsS +FuhLapz4vItth3K13rpC4dR88MNWquvFo8uBft7ceJn4FFdXw9dLLAIg+fQPTuAACKUAoqOjhReQ +HW2pcGyGdOsoXE1bU98kncNUKBRmquubmLtCTiFwzmV9CfLz1voImuIjWLfU2CgtYufwDoBQCkDG +ASirFhu9qHAOhkuE/3dmnpTWNlcoFP/jqzXpFFeKt9L6eXty00Sh4a8uh2gKoLKyUnYph3cAhGL6 +MTHiim/KAXBN+qcK+Y4ApGWo8L9CYQ0am1v5cEmalO11Y3sT7O+j9RE0w1cwAiDpALQA4prDF8Ep +HYBy5QC4HDGhAUQGixWDAqQdytN66wqFy7Bk6yFyCsuF7Xy9Pbnhsr5ab18T/Lw98XQXa4esqpKq +Y6uw9t6t7QDogDARA5kiwLJqNfDF1ZAZ/VtQVk1eSaXWW1coXAaj0cQ7CzdL2c4e01u4GM4VCAkQ +j3xUVEjdy8U9s0tgbQfADxByhcLChPwF87ugNABcjl5J4rUgqvpfobA+G/YdY09WgbBdoK8X04Z1 +13r7dkemAFIyAlBp7b1b2wEQnhMZEBAg9PVGk4kK5QC4HL2TxFNBO4+c1HrbCoVL8r6kRPANl/VF +r29fMwJkIgCSNQAOHwGwuQNQ19Csqr5dDF8vD1LiwoXt9ucUar11hcIl2X00n3SJKEBcRBBj+yRp +vX27IlP8WFJSIrOUw9cAiN3NEXcAGpqsqoSocAB6JEThphf7USytqlPyvwqFDfnP8h1SdjdNaF8t +gaEBvsI2hYVSDy8O7wDYPAJQrxwAl0OmAHBfzimtt61QuDRbDpyQEtnqnRwjldJzVqJDxbuX8vPz +ZZZyPQdAdA5AQ7NyAFyNnoniBYAHjikHQKGwNf9dvlPK7sYJ7UceWKZ9uaioSGYpq3/oaZoC8PDw +wNtbrIJSpQBcjy7x4vr/ygFQKGzPuvRsjp0Srz0b1zeZmFDhjLBTEiVxTskUgHhRxiXQNAIgGv4H +5QC4GqEBPoQH+QnZGIxGMnKV/r9CYWuMJhP/XS4+I0Cv1zFtWDett28XogQjAC0tLbJFgA7vAAjN +hfTxEa+eVDUArkWKxPS/oydLlSOoUNiJFTszpeTXpw3rJjzcy9nwdHcjRLAIsKioCKNcJ5tU4cDF +sLYDICQC5OYmJp8I0NRsVSlkhcakSrT/qel/CoX9aGk1sHDjAWG7DuFB9E+J03r7NiUqJEDYycnN +lRIwMwJShQMXw9oOgND19IKtX2AOSSlch1SJ/H/mSanwmUKhkOTbDftpNYg/tbp6GiAuIkjYJjs7 +W2apIqw8CAic0AFQuBYyEYCjJ0u13rZC0a4orapjXbr4jWtC/87Ck/KcifjIYGGbY8eOySxlE9Uz +TVMAMg6ASUUAXAZPdzc6RYUI2ZhMSE0rUygUlvHN+n3CNj5eHkzo31nrrdsMmQiApANgk7GnTugA +2OJtUGhBQkwo7m5iPwOnKmqoqW/SeusKRbtjd2Y+2QVlwnbThrpuGiA+UtwByMnJkVlKKm9wKZwu +BaBqAFyHxGixp3+Aoyr/r1Boxo9bM4Rt+naOlZqY5wx0lEgBuLIDYPMIgMJ1kPnlycoXfwJRKBTW +Yfn2IxiNYg9her2O4T06ab11q6PX64gNExO/bWpqoqBAqp1fymu45Bm0vJ5OoklU1QC4DjIFNMoB +UCi0o6Sqjh1HxNPRI3slar11q9MhLAgPd7FW9uzsbFkNAJtEANytfD2hkzU1iedyRXPGCsdFxgE4 +LiFLqlAo/oeXhzteHm7o9Xr8vD2pbWg6+2BlNJmobWi+qP2ytCMM6dZRaM1hPTrhpte71Cj3pNhQ +YZtDhw7JLGUATtjiDNZ2AITu6I2NjcILeHlYe8sKrYgXrKA1meBkSZXW21YoHJJAXy+SYsPoEB5E +h/BAYsICiQjyIyTAh0A/b4L8vPH18mjTtWobmqlvbKauqZmauiYqahsoraqjrLqeppZWTCaEBHAC +fb3okxzD7qNWF7PTjOTYMGEbSQfgJNAsY3gprH03bRD5YhkHwFM5AC5BoK8Xwf5iUtDlNfVKClqh +ADw93OiVGMOA1A506xRJSodwoq04fMffxxN/H+v27w/r0andOwAZGeJFlECWrc7gdBEAb+UAuAQy +4f+84kqtt41eryM6JIC4iCDiIoKICgkg0M+LoNNPWIG/qnZuNRiprmukqq6RytpGyqrrOH6qgmOn +yskvqXapkKjCtsSGBzK2TzJj+iTSKzEGTw9xKXUt6Z0kPvbbkbFjBEDKa2gL1r6bCt3R5SIAzvVD +rzg/MgIaeXYO//t5e9K9UyQ9EqPp3imK5NhQYsMChQt/LkRLq4HDeSXszsxn19GTpB8tUBEOxS8I +9PXiiqHdmDasm9TYbEeiW6co9HqdcBeBI+LupqdTVLCQjcFgIDMzU2Y513QAWltbaWlpwcOjbXkp +UA6AqxAVIh6uPFlSadM9Bfv7MKhLHEO6daRv51g6RgWjt+E4Mw93N3olRtMrMZpbJw+gucXApgPH +WL79CJsOHKe5xWDT8yocl6TYMG6e2J9JA1Ncpu7J18uD6NAACkqrtd6KxXSMDJbqAJB56MVVHQAw +RwFEHACVAnANokLEZmgD5BVbNwKg1+nomRTNmN5JDOkWT2p8hE1v+JfC08ON8f06M75fZ6rrGlmw +fj/z16ZTUSNUWqNwYpJiw7j7isFc1r+zpj+LtiI+ItglHIAUmSmmcuF/AGnDS6FpESCYHYCAgLY/ +DXp5KgfAFYiUcAAKyyz/4NDrdQxI6cC4fp0Z1zeZiGA/rd+K8xLo582dlw/ipon9WLTpIB/9mEZV +ndTTg8IJ8PP25N7pw7h2bG/0ete78Z/Bp41dCI5O146RwjZ79+6VWaocG4wBPoOmRYAAtbW1RES0 +PbcVIlg5rnBMooLFHYDiyjrp9VLjwpk2rBtTBnUhNNBX6+O3GS8Pd64b14cpg7vw9sLN/LD5kJLD +djHG9EniiRvGER7kmM6oNXEVITcZB2DPnj0yS9ns6R+s7wDUixoUFRWRmNh2lagAX2883d1oblX5 +UWdGNAJgNJoorRJzAAJ9vZg2rBtXDu9OSgfxkJ0jEeTnzV9uuoxpQ7vx1L9/pqiiRustKSzE08ON +h68eyTVj+gj11DszrpDO0umQKsiUdABslv8H6zsAwpNaiorEohs6HYQE+KoPQCfG3U0v/BReVl3f +5pa5bh0jmT2mF5MHdcHbxVJGfTvHMu+p6/nbf1ew5YBNxMEUdiAs0Jc3HphON4knSWfmZKnzC3nF +hgUR6OslZFNaWkpubq7MclJ5g7Zi7U9H4VyFqAMAEBakHABnJizQT7jAqaSy9qL/X6eD4T0SuG3K +QPp1jtX6iDYl2N+HN+6fzpvfbWLeKqmnCoWGdIoK4e0HZxAbLjZIxhXwtFILrZZ07Wi3p38Am/6C +W9sBqMTcCdDm2Y9SDkCA8+RwFb8lJEC8jqPoAg6Am17PxIEp3Dp5gNOH+UXQ63Q8MnsU/j5efLhk +m9bbUbSRxOhQPnr0aqnfAVfANRwAu+X/jcA+W57FFvHREiC+rV8sGwFQOC/B/uKzwUt+VQDo6e7G +9BHduXlifzqEi4sKuQp3XzEYLw833vp+s9ZbUVyCmNAA3n3oKrve/I0mE5U1DVTWNlBR20BtQzMt +rQbqm1poNfwypebn7UmArxeBvl4E+nqb/+7nhZsa2/4LenSKEraRdACygVoZw7ZiCwegCBs7AJES +FeQKx0F0BgBAZa25eEiv0zF5UCr3zhgmPIvbVbll0gBOldfwzTqbPiwoLMDX25O3f3+VVPtrWzAY +jRwrrODQiSKO5JWQW1RJXkklhWU1FstN+3p7EuTrRZC/DzGhAXSIMA8bGtUrUXj+gLN3sOh1Onok +ijsAu3fvllnO5vk9WzkAbebUqVPCC8joyCscB5lWzsraRoZ068jvZ41weElUkwnqGputPkzlYjx2 +7RgKyqrZtP+41sdXnIe/3XwZCdEhVr3mqfIaNu0/zpaDx9lx5CQNNpKRrm80TwYsLK/hcG7x2X/3 +9/Fi6uAuQtdydgcgKTYUP2+x3+vy8nKOHj0qs1y6rc+juQNw7Ngx4QVEx8gqHAuZCMBtkwfY7OlJ +hOYWA9mFZRw9WcrJkipOlddQUFZNcUUttQ1NNDS30nJOi6qvlwfeXh6EBfjSKTqEhOgQkmJCGZAa +R5gV9Qj0eh3P3z6Z65//UhXIOhjXjOnNhAEpVrlWc4uBFTszWbI1gz1H8zW9obq7iacGfp12cDZ6 +JcYI26SlpcnqH6Tb+jy2cACE5j0WFBRQX1+Pr2/bPwxVBMC5CfQTa6EBOeVAa5BbXMnuzHx2H83n +cF4JJ05VCIVU65taqG9qoby6nqP5pWf/XaeDrvGRjOiVwBVDuxIfEWzxXgN8vXjmtonc/8ZCp3/S +chWiQgJ4cOZwi6/T2NzKdxv2M3flbmE9DFsR4CP+e1zbYJOx9najl8REw23bpIt0d9r6PLZwAHJE +vthkMpGTk0PPnj3bbBPk502grxfV9cLCgwoHwNeB5UCr65vYdugEm/YfZ8fhPEps9GFrMkFGbjEZ +ucX8Z9kOxvVL5tZJA+ieIJ5fPJdBXeK4fnwfvlydrsG7p/g1j88Zg69gyPjXrN+bw2tfr6ew3LEi +OwGCvfAGo5GGJuUAtJFsJHR1RLGFA5AtapCVlSXkAADERQZz6LjNJJIVNsTb07EcgJLKOlbuOsr6 +vTmkZxVYXDQlitFkYvXuLFbvzmL68O784ZrRFtUP/N+VQ1m+/QjlLqC65swM7d6R0b2TpO0bmlp4 +cd4alm8/ovVRzotoBKC2oRlnDkwF+nqREBUqZGM0Gtm+fbvMcjvscSZbOABZwgZZwibERwQpB8BJ +cQR1vpr6JlbuOsrPOzI1z6Weyw9bDrEtI5dnb5vEoC5xUtfw8/bk/64cyt+/XKv1cdo1v7tiiLRt +YXkND7/zA9kFZVL2ep2OQD9vAv288PPypLK2gaq6RuqtWCgoGgGobXDuiG2vpBhhyebDhw9TWVkp +s5zTOgCnMPcutjlpK+UAqDoAp8VHwwhARm4x323Yz887Mm1WNW0pxRW1/P7txbxwx2Qu699Z6hpX +jezB/DV7OXaqXOvjtEsGd4und7J4wRhAfmkV9/zr+zaH/H29PRmY2oGBXeJIiYsgOSb0glLbzS0G +Mk+WsP1wHj9uyyC3qFL6jKIOQI2Tp2z7p3QQtrEg/y8VNhDFFg6ACXMdQO+2GshGABTOib0jAE0t +razYeZRv1+/joJNEjVpaDTzxyU/87eYJTBvWTdjeTa/n1skDeOazlVofpV1y/bi+UnbVdY3c98ai +S978dToY1SuRK4d3Z0TPhDYr7Hl6uNEzMZqeidHcOnkA89fs5a3vNwunvXy9PYW7AGqcvACwX4q4 +xLikA9CKHTQAwDYOAJjrAGzrAKgIgNPibaciwIKyauav2cuPWw85ZcGo0WjihS9W0yEiSGq+waRB +qbyzaIvDVI23F8ICfRnRs5OwndFk4i//+Zn8SwzMGdQljj9cO9pi6Ws3vZ4bJ/SjqaWV9xZvFbIV +FQACs3PjrPh4edBdQgFw48aNMsvtB+zyS2srB0Dojn7y5Emamprw8mp7SCkxWqwYQ+E42DoCUFBa +zb9/2sHSbRl26zt20+vp1imSrh0j6BAeRICPF/4+njQ2t1Jd30hVXSMVNQ2cLKniaH5pm8eithqM +PPnxT8x7ao7wBEVPdzeuGdOb938Q+3BXWMYVQ7tKyecu3nyQLQcvPuHxwZkjuGXSAKuOD54xooeE +AyDeluvM+hS9kqKFIx5FRUUcOSJVwLnBXueyZQSgzRgMBo4dO0bXrl3bbBPg60VkiD/FFTaVSlbY +AFvVAGhx448I8uO2KQO5fEhXoZzoyZIqth/OY+O+Y2w9dOKi+y2pquO5uat44/7pwvu7amQPPvxx +G0ajYxQ5tgfG9k0WtqmoaeDthVsu+jW3Th7ArZMHWH2/Ml0vMaHiMtynHKyNUYT+ncXz/xs2bJAV +AJIKG8jgEA4AQEZGhpADANA5Nkw5AE6Il5UjAIXlNXz8YxrL0g7bVWlsVK9EXrxz8tk+7/qmFjJO +FHGssIKK2gYam81Fht6eHkQG+xEZ4k9yTBiRIf7ERQQRFxHErFE9qahpYOGmA3y5Ov3szINfs2n/ +cbZn5DG4W5vHbADmcPTA1Di2H86z2/vSngn086Zngniv+Fdr0i8aIvfx8uDOqYNssucdEj8bMikA +p3YAUuUcAEm2yBqK4hApAIADBw4wc+ZMIZuk2LBLhswUrktzq4G5K3bz6fIdNDa32nXtxOhQXvm/ +y/F0dyMzr4QPlqSx7dAJms+RAb4Qwf4+DEjtwLDunRjfL5mQAB/umDqI68f14f0ftvH12r3nbUt8 +47uNfPHUHPSC8d9JA1OVA2AnhnbriF4v9v2pb2rh2/UXH+QUGuBrsaDQ+TCaTFJDpGLakQPg6eEm +5dStX79eZrkjQKG9zmYrByAXcxGDX1sNDhw4ILxIcmyYjbavcHS2HDjBa9+sJ7e4UpP1rxnbG093 +N/ZmF3LvG9/T3GK+8Qf7+5AaH06wnw/+Pp60tBqoqjPXABSW11BcUUtlbcNZ4Z9X5q/jsv6duWPK +QJJiw3j02tH0T+3Ak58s/8VMAYDMk6WsS89mfD+x1sDx/ZL5+5dr7S5w1B7pI9H6t3p31iWLVE+V +11Bd10ign/go7Yvxw+ZDUp0xMRKTOB1NybCt9E2OxdOjbV0WZygrK+PgwYMyy9kt/A+2cwCMQAYw +sK0GMm+WcgCcFAtEd4ora3l1/nrWpQtnmaxKh3DzB+DPO47Q3GKgZ2I0f7p+LN07RV7UrrSqjkMn +itmXU8jP249QWF7D8u1HWLEzkxsv68f9Vw1nXN9k/jxnLM/PXf0b+4UbDwo7AIF+3nTvFMn+Y+KT +NxVidO0YKWyzevelJ8UZjEY+W7GLB2eOsNpes/LL+Ne3cvcb0S6sxubWC6a3HJ3BXcXSbgCbNm3C +KOdw29UBEC9VbTtCj/SZmZk0N4v1iSZGhwiHQxXaY5AsSFubns2c57/U/OYPUHU6X9sh3KxHYTQa +6daGD//wID9G907kgauGs/jF2/jgkVkM7hqP0Whi7srdPPnJT4C5Mvt842PTMnIpKKsW3u8giQ8x +hRh6vY7UOLHWvIamFtIy2paembdqD9vb+LWXoriylj+8v4T6RvHe/ABfL0IDxCZ6FpRVO60M8JDu +HYVtJMP/YMcOALCtAyD0SN/S0iLcMuHj5UFsuHgoSqEtDc1iCnwmE3ywZBt/+nDp2Ruv1mw+cByA +qUO64uPlwaETxSzcJJbG0ut0DOwSx3sPz+S52yfh7qZnzZ5sdhw5CcDwHgm/sTGaTCzddlh4vwMl +ZYUVbScmNBAfQY2LjBPFv0n1XIhWg5E/fbSUXZknLdpnblEld732LQWl4o4kQEcJDZY8jVJ1lhLs +70OX+Ahhu7VrpWS484Hj9jyfwzgAIJcGSIpRaQBno7FJrGCvqKKGT5Zud6gniHXpORRX1BIa4MPd +pzXf//nNBvZmy9XvDEyNO3vzaDldT+Dudv7o1laJwtc+yTFS89sVbScmTLwwTjQtU9vQzANvLear +NelS8yuWbz/CzX+fL33zB+gUFSJsc8ICyWEtGdQlTjjKXFxczN69e2WWkw4byOIwKQCQKwTs3EE5 +AM5GveBIUD8bVD9bSlNLK28v3AzATRP6MaJnAk0trTz87g/sySoQulZFTQOPfbiUmvomkmPDzrb6 +bT98/ie9g8eLhHXVvTzcSVI1MzZFpjJeZthPS6uBf36zgTteXUBaRm6bHOMDx07x4FuL+ct/fqZO +Iux/LjIqrLnFFRatqRVDuomH/1etWiXb/7/J3uezpSTbSaAKaLNov4wDkBSjFAGdjQbBlj0/b090 +OotqB23CT9uPMKJnAlMGd+Glu6Zw3xsLOXi8iPvfWMjvZ43k2nG9L/n0kJVfxh8/WEpeSSUBvl68 +cOdk3N30bDlwgsO5xee1MRiN7Mw8yThBwZluHSPJzLP5iPF2S0SwuDrepWR/L8aBY6e4/81FJMWG +MbZPEgO7xBETFkCwnw8trQYKy2vYl1PI2j3Z7D6ab7VzdooKFrbRqlvHUmTy/ytWrJBdzq4FgGBb +B8CEOQ0wvK0GMimAzhbqYSvsT0OjWA2AXq/Dx9PDqqNMrcWzn68iNMCXwd3ief+RWTz+4TK2HjK3 +KP60/TC3TxnIqN6Jv5GGPX6qgvlr01m06SCtBiNhgb78895ppHQIp6KmgZfnXzyHuDszX9gB6Nox +gsWbtX7HXBeZSFVhmeWtcTkFZeQUlPGfn+wyQVYuAuCEKYCOUcHCUR2TycSqVatklitGIm1uKbYe +yybkAOTk5FBfX4+vb9s1zxNjQvDycKepxb5CMAp5RIsAwfzh6ogOQEurgcc+XMp7D11Fz8Ro3nxw +Ol+tTufdxVs4eLyIxz5Yiq+3J72TogkN8KWmvoljp8o5WfK/J7/hPTvxl5suIzLYn7rGZh794MdL +5mgzLhAduBgyLWqKtiPjAFTXO0ZRqwjxEcFCX1/f2ExZtfMNpBrZM0HY5tChQ+TnS0VbVmF+aLYr +9nAA2ozRaCQjI4MBA9qud+2m19O5Q5jTjHlVIHUj9/X2BAedalff2Mzv/vUdj107hlmjenLjhH5M +HJjCl6vTWbz5IDX1TWw7lPsLG71ex/Aenbh+XF+Gng4zFlfU8vC7P5B5svSSa2bmlWA0moRU51Lj +wnHT65UgkI3w9RbrADAYjXZXsLSUkACzwJUIeSVVDpe+awsjJBwAC8L/msztdigHAGDfvn1CDgCY +n2yUA+A8yPQe+wl+uNqb5hYDL81bw67Mkzw0aySRIf48fPVIfj9zBIdzi8k8WUp1fSPubnqSYsLo +Eh9ByOleapMJfthykDe+29Tm4r76phZOFFcITcX08nAnMSaErHzxwjPFpdEJVos3OdnNH+TC/87Y +Aujr5UG/FHH9/5Urpe/jq2UNLcHWDoBwVd/u3bu5/fbbhWxk+jQV2iFThWwLHXRb8POOTNbuyWbG +iB7cNLEfHcKD6J4QRfeE384Sb2hqYdXuLOau3E2ORDV4xoli4bHYXTtGKgfARohWfuslRgZrjWj4 +H5yzAHBwt454uovJ/zY1NckOAMoANBnWYWsH4BRQCrS5Um/37t3Ci6jcpnMhlQLwcg4HAMxDihas +38eC9fvoEh9Bn+QY4iKC8PHyoKGphZLKOg7nFrM3u7BNw4MuxOHcEi4fIjZBs2t8JD9uzdD6LXJJ +REcuiw4NcgTiI9rc1HWWc+tdnIURPTsJ22zYsIG6Oqk0pSbhf7C9AwCwB5jY1i/eu3cvBoMBN7e2 +e1+dO4Th7qa36yhYhTx1Da6XArgQR/JKOGKj1rvDEoWA3TopZ9lWiBYie7i5odfrhB0HLWkPKQCd +Ti7//+OPP8ouKV04YCn2iEEJPdLX1dUJSwJ7urspPQAnwpVTAPbkcF6JsBpcSly4mp9hI2oFHVud +DgJ9rTvdz9bIRADynCwCkBIXQaSEpsPSpUtllmvGzvr/52IPB2CPqIFKA7g2MikAZ40A2JL6xmbh +pytfLw+pUa6KS1PbIKbOCBDo56X1toWIE4wA1De1OF0L4KheCcI2GRkZZGdLDSnbBGg2J9nhIgAg +6wCoQkBnQaYLwJlqAOzJ4Vzx9EJijLiWu+LSVAvKMwNST5paEezvQ6CvmMNysrjS6VoAx/QRE9gC +6ad/gGVantUeDkAWZkngNiPlAMSrCICzoFIA1kNGSz5BsHNA0TZKKsWfdGUm62lFB4nJq87WARAV +EtCmsd6/xoL8v7TnYA3s4QCYAKHRSOnp6cItNSlx4U5ZVdsekXEAVArg/BwrLBe2SYxWEQBbUFxZ +K2wjU1SnFTLRCmfL/4/tm4RoiUxFRQWbN0tpbB8DxGd7WxF7NaIKPdJXVVWRlZUltICPlwedItUH +mzNQLzgLABCes95eyJFwAFQEwDYUV4incp0pAhAe5CdsU1wh7hRpyVjB+RoAP//8M62tUqJOmj79 +g/0cADsVAqo6AGegUWJug7enPTpWnY+TJVW0CGoJqAiAbaiobRCObjlTBCAiWNwBKHFQ+e7zEejn +Tf+UWGE7C8L/mub/wUEjACDnAHTrFCVso7A/ojcsAA9BVa72gsFoFO4ECPTzJvS0DLHCephMkC2o +shgXEeQ0qUuZCECJRFpEK0b1+u3UzkvR0tIiWwDYAKzX+sz2cgAOnz5wm5FxAHomKAfAGZCZ3Ojl +riIAF+LYqQphmwSlm2ETsgSLMj3d3aTkdbVAygFwogjA2L5JwjZr1qyhsrJSZrnVQL3WZ7aXA9CK +YCHgnj3CWQO6doxUT4pOgNFoElZt9PRQ39cLIVMImBCl0gC2ICv/0pMcf02f5Bitt90mRKNGRpOJ +8mrN73FtwsfLg2HdxeV/v//+e9klF2t9ZrCfAwCCdQBlZWUcO3ZMaAFPDzdS4to8dkChIc2CUQBP +DxUBuBByhYDKAbAFMoOWeic5hwPg7yOmAVBT3+Q08uwjeyYI1xkZDAYWL5a6jxsB6cIBa+KwDgBA +Wlqa8CI9E6LteCSFLE0tYnUAXioCcEGOF4mnAKJDA7TetksiEwHo7SQRAD9BLQ4ZZUStmDgwRdhm +8+bNFBVJjaHfgnlQnubY0wEQTupLOQCJqg7AGTAYxZ4MRItz2hP5Er3W0SHKAbAF1fVNFAm2AyZG +hxLo5/gzAfx8RB0Acb0PLdAg/L9I6zOfwZ6fqvsBIZdw27Ztwov0TFQRAGdA1AFwlkppLahrbKZG +UIZWRQBsx5E8sSiATge9kxz7c8vT3Q1PwfoqGcEvLRjVK1FYZ8RkMrFw4ULZJR0i/w/2dQCaEUwD +7Nmzh6YmsQ+2+IhggpzAm27viE5AVRPsLk5hudhTZ0iAryqstBF7juYL2/RNFu8/tyeiT//gPA6A +TPh/586d5Obmyiy3H7M8vkNg77iqUEy/qamJ9PR0oQV0Ouih0gAOj1FFAKzKKUEHQKdTaQBbsSvz +pLDNsB7iIWh7IjOMyxlSAL7engyXeO9dIfwPDu4AgGQaQBUCOjyic+xVBODinCqvFraJCnGeSXTO +xOG8EuGUTGpcBJEO/P2Q+fWTEfyyN2P7JOEl0WG0YMEC2SUdJvwP9ncAhO/mcoWAygFwdIyCOQC9 +KgK8KIVl4jr0qg7ANhiNJvZkFQjZ6HTmVjRHRWakrzM47RMGdBa2SUtLIzs7W2a5HGCX1mc+F3t/ +qh4DhPomZCIAvRKjpTxWhf0QjwBovWPHRrQGAJQDYEt2S9QBjOyVoPW22xWBft4Mlaj+nz9/vuyS +32h95l+jxWPVdpEvPnbsmHCvZYCvFx3VZECXQqc8uotSWCaeAoiQGO+qaBs7j4jXAQzu2tFhCzNN +iIcAHP1XduKAFOHOBqPRaEn4X9rQVmjhAKg0gEK4r9/gJIpiWlEmIbka7K8GAtmKzJMlVAvWAXh7 +ujOwS5zWWz8/EikAR3faLx/SVdhmw4YN5OeLR3cwh//FB9zYGC0cAPsUAqpOAIfGXdABcBZJUa2o +rBWatQVAkJ+YtKui7RiNJrYdOiFsN7aP+Dx6e2CSKAJwZAegQ3iQlASzBeF/h3v6B+1SAELloTIR +gF4qAuDQuLsJOgCCbYPtjcbmVhqbxeYrBPmpCIAtWbtHvFDssv6dhX837IHMBE8/bzFxHXsydUgX +4RRFS0sL3333neySygE4TQ3m8cBtZseOHRgMYi0lqXER+ApqVyvsh5uoA6AiAJekQjAKEOyvBLNs +yeYDx2kWnHkR5OctJUtra2okevpFhwfZk6mDuwjbrFy5ktJS8VkPmIvfHS78D9o4ACBYB1BTU8PB +gwfFDqbX0cdJpmy1R9wEy/pFpYPbI6JpAGfQn3dm6pta2HEkT9hu8qBUrbf+G1paDcIRpgBfx3QA +uidE0UliHPbXX38tu+R8pKoobI9WDoBwTF8mDdAvxbHlNdsz4kWADvn741CIOgCe7m74CmqgK8RY +l54jbDOmT5KwNr09EJ3uF+CgEYDLB4sX/9XW1lqi/veF1me+EE4RAQDYsmWL8CKOrq/dnhGuARBM +AbVHKmsbhW3U3Azbsn5fjrDmhY+XB2P6JGm99d9QI+oAOGAEwMPdjSmDxSMs33//PbW1tTJL7gIO +aX3uC6GVA3AQEGpc3rhxo/AiPROjhfs8FbZHpwMvTzH5zWYnkBXVmioJB0ClAWxLeXU9+7ILhe0c +MQ0gKm/s6+XpcGO8R/VKlGp//fzzz2WXnKv1mS+GVt8dI4KSiNnZ2RQUiMlrenq40a1TpEZHVFwI +Lw93YZnQxibxKuT2hkyltqgjphBnzR7x4W/De3QiPMhP663/AlEHQKfD4c4wY0R3YZu8vDzWrl0r +s1wrIF04YA+0dM+2ihrIRAH6dlZpAEdDpjujrsnxJ4tpjYwD4OGmImS2Zvn2I8JFrG56PVcO66b1 +1n+BjNiUIw2cigjyk+qwmDt3rvD00tOsAE5pfe6LoaUDsEnUQMYB6Ne5g4ZHVJwPH0/xAqeGphat +t+3wyKRJVIrM9pTXNLDtkPjs+JkjezrUQJ3SqjphG0eacDhtWDepseJz50pH8aXzBvZCSwdgM4KC +QLIRADVL3rGQqTyvb1QOwKVoEmzTAnNRlML2LN0mJH0CQGx4IAO7Oo40sJQD4EDzJq4YKh5RSUtL +4/Bh8e8d5hq3JVqf+VJo6QBUA/tFDPbv3095ebnQIv4+nnSODdPwmIpf4yOhENbQrByASyGTAnDU +4TOuxrq92cI5dDBHARwFOQfAMWoA+nWOJSFavPf/s88+k13yW0A8Z2JntC7R3CDyxSaTic2bNwsv +0lelARwKlQKwDU2CqnOgUgD2ornFwOrd4sWAY/skERrgGJLNpVXi9zNHSQFcOVy8+K+xsdES8R+H +7f0/F60dAOGYvlQdgBIEcihkRE6UA3BpWiRqAFQKwH4s3ZYhbOPh7sa0YeI3L1vgrCkAP29PJgxI +EbZbuHChcMT5NLnAeq3P3RaczgHYsEEoaACYwz8KxyFQQiCkXjkAl0SmXkxUklkhT3p2AfmlVcJ2 +s8f0cog6ppKqOmFRI0eIAEwd0kWq7uiTTz6RXXIe5lZ3h0drB6AIyBQx2L17N3V1Yp5oeJAfcRFB +Gh9VcYbQQF9hG5lxt+0NGdEVNWTJfphMsGiT2EwTgNiwQMY6gDJgS6uBMsE0QGSwv+adDDJ1FDk5 +ObK9/wBfanpgAbR2AEAwCtDS0sK2bcJKwioK4EAES6jPycjctjdkxsgqB8C+LNx0UKpd8/rxfbXe +OgCnKmqEvt7dTU+IhjUMvZNj6BIfIWz38ccfYxKMdpxmF3BAswML4nQOAMjWAahCQEdBRopTdNRt +e0QmTKwcAPtSWdvAGoliwP4pHejuAKqmp8rFHADQtg7g6lHiT/+tra0uK/37a5zSAZCpAxiQqhwA +R0HGAahSDsAlkQm1KgfA/ny7Qaj7+SzXju2j9dYpLJNwADSqAwj085Yq/lu6dKmw7PxpWjCP/nUa +HMEByAGEhmanpaXR3CwmDdshPIjY8ECtz6oA4ZCgyaRSAG1BLgWghizZm/SsAo7klQjbTR6USphE +/Yw1Ka4UdwCiQgI02eu0od3w8hCfdfHxxx/LLvkD5ro2p8ERHAAwqwK2mfr6enbtEpolBMDgrvFa +n1OB+AjamoYmYS319oi3xGCfVvW+asLCTeJpYg93N2aP6a3pvmUiANGh9o8A6HQwSyL8f/LkSZYv +Xy677Ed2P6iFOIoDYJc6AOUAOAaiEYDKGhX+bwv+PuLtlc0S4kEKy1mWdoS6RvEBV9eO7S3V0mYt +iipqhW20iAAMSI2TUv77z3/+g0EuKpYDrLL7QS3EaR0AmRaNgV3ipXqlFdbDy8MdP8FpgKoAsG0E +SOgryMjTKiynvrGZH7eKCwMF+Xlz1cgemu1bpghQi4mAMvUSra2tfPSR9EP8RzhJ7/+5OIoDcAAo +EzHYuHGjcB1AaIAPnWPDtT5ruyZKIhxYUePwktoOQaCveHtldZ2qrdCKL1enYzSKt5rdOKGfVL2H +Naiqa6BRcOhUdKh9IwAxoQFSugmLFy8mPz9fZslm4FO7HtJKOIoDYAK2iBjU1dVJ6QEMUmkATZH5 +MCiuFA87tkdkIgBVygHQjPzSKtamZwvbRYUEMHVwF032bDJBsWAaICLYT0qkSpZrxvaWaol95513 +ZJdcCBTb7YBWxFEcABAcDASwevVq4UVUHYC2xISKd2LIhB3bI6IOQEurQUksa8xnK8SLmQFunTxQ +M4U90d9HN72esCD7dC94ebgzY4R4iiQjI4P166Xl+z+0y+FsgCM5AGtEDVatEq+56J8Sq1n4TCGX +DzxVriIAbUF0apzK/2vPoeNF7M0uFLZLiA5htEbywKJqgGC/NMDUIV2Eu4wA3nvvPVnlvyxgnV0O +ZwMc6U6YDpSKGGzfvp3q6mqhRXy9PemREKX1WdstMh8EKgJwafQ6HRGCimtV9Sr87wh8sXK3lN0d +Uwdpsl+ZToDwQD+77O26ceLFfzU1NZYo/72POYXtlDiSA2BE0JNqbW2VUgVUaQDtUA6AbQgN9MVT +cLSv6GAXhW1YvzeHvJJKYbvunSIZ2SvB7vstkajJsYeAUf/UDqR0EC/y/uKLL4QfJE/ThJNJ//4a +R3IAAIST+jJpAFUIqB0xYWIOQEurQWoOeXtDJrVSqBwrh8BoMvHFyj1StndfMcTu+y2X0OWwx0Cg +68f1lbJ77733ZJf8FhCXdHQgnN4BkCkE7JUYjY+GYhrtFZ1OXBSkuLJWeAZ5e0RFVpybJVsPUVIp +7uj2SIhieI9Odt1rmYRDbusIQGy43MjktWvXcuCA9PC+D2x6KDvgaA7AUeC4iMHBgwc5deqU0CIe +7m5qPLAGhAaIh6nVTaptyDgAhWVSYU+FDWhuMTBXshbgrisG23WvZRK6HKE2dgBuGN9PqvXvjTfe +kF0yA0EJe0fE0RwAACGJP5PJxJo1wg0EDOyi0gD2JkrqJqUcgLaQGB0qbKMcAMfi+437pcLrvZNi +GNKto932KVM7EhpgOwcg0NeL6SO6C9tlZWXx448/yi7r1MV/Z3BEB8AudQBDuikHwN5ES+SpZSqO +2yNJseIOgGqvdCwam1v5arVcLcC904faTea8qaWVesE5BqGBtqsBmD1Gbj7CW2+9hVFuGFYD8IXN +DmRHHNUBEPKsZOoAUuLCpebSK+SRGQpSJNFz3N7Q6SA5NkzIptVglOrnVtiWb9bto1pCn6FnYjSj +e9tPF6C0WiwKEGajCICnu5tU619VVRX//e9/ZZf9CqiwyYHsjCM6AKeAQyIGubm5HD16VOzgOh2D +usRpfdZ2RUSweC+wukldmqiQAOEBSyeKKmhpVZMAHY26xma+XrtXyva+GcPspg4oOqHT19sTD8H6 +n7YwdUhXqQLDTz75hJoa6c+WN61+EI1wRAcAJMYqykQBhvdM0Pqc7QqZcbWlEpXR7Q2Z8H9WvtDs +LYUd+WpNOrUN4qOCk2PDmGKnGQEyEtLenu5W3YNOZx6MJIrBYLBE9/9nYJ9VD6IhjuoA2KUdcETP +BM30tNsj/j5iT6mAVDi0vdEzIVrYJitfSHRTYUeq6xqZt0quI+Ce6UNt8qT9axqbxR0A0Q6gSzGy +ZyJJMeLO7/fff8/x48dll33DqofQGEd1ANYBQj9ha9asES7oCA3woWunSK3P2m7w9xaPANQJFhu1 +R3omijsA2QUqAuDIzFudTmWteEdAbFggV0kMwxGlQXAkMGB17ZWbJ/aXsnvrrbdklzyIOQLgMjiq +A1AD7BQxKC8vZ9cu8claI1UawG74eot9AJhMUCcRCm1P6HRyDoBKATg29Y3N/PdnuUmBd14+yOrh +9l/TIJEC8PKw3p56J8XQP7WDsN3WrVvZtGmT7LKv4wKtf+fiqA4ASKQBfvrpJ+FF7K2i1Z5xE5zC +2GowKBXAS5AYHUqg4Bjg8poGCpQGgMPzzbq9FMsM3gnyk6qMF6FRIgLgZUWnRHYQ0iuvvCK7ZDEw +z2oHcBBcygFYunSp8CLdE6KEx6gqFI5Cr6QYYZsDx8THzyrsT3OLgX//tEPK9tbJAwkQdAxFkIkA +WCsqkRoXzgiJyG1GRgZLliyRXfY9wOXGZzqyA7AFECoB37lzJ0VFRWJvgE7H0O4qCmAPRMst1bP/ +pZERtErPUg6As7B480FOllQJ2wX6eknnyNuCTBGgt5VSALdNGSglevSPf/xDVvinCRfQ/T8fjuwA +NAMbRQyMRiM//yxeo6HFSE3FpXGT0PZuT+h1OqnR1vtzlAPgLLQajHz0Y5qU7ZzxfW2mwd9qEL+R +WiMC0DEqmAn9U4Tt8vPzmTdPOoI/FxB7snQSHNkBABBO6i9btkx4kaHdO+Gmd/S3wvkRrRx20+ut +WjjkanTtGCGsZtlqMHLoRLHWW1cIsHzHEXIKy4XtfLw8uOty2wwK0mnUPn3b5IFSQ39ef/11mpul +CopNmIv/XBJHv+sJJ/VXrFhBa6vYjSbQ14veSeKV1Aox6hrEe/r9BDsH2hMyqauDx4toahEv4FJo +h9Fo4oMftknZzhrVk45RwVbfk0x0TiZqcC7RoQFMlRA6qqys5KOPPpJd9mcElWmdCUd3ALKBTBGD +iooKtm7dKryQTFGJQgwZ9TAZ9cD2gkzqauuhE1pvWyHB2vQsMnLFIzfubnoenDnC6vuReQpvlcu/ +n+Xmif2lRI7ee+89S2R//2XRph0cR3cAQCIKIJMGGKHqAGyOjLxpeJD4/ID2QGSwv1T//9aDygFw +RkwmeH+x+IMNwLi+yfTtHGvV/cik5gwG+bLesEBfrhopLnDU0NBgifDPASRk6Z0JZ3AA7FIH0Dk2 +nEiJcbWKtlNWLa7rLzNAqD0wtm+ysIx1VV0jGSr/77RsOXiCPVkFUrYPXz3SquOCfb3EZb2bLUg9 +3Tp5oJTT8cknnwh3hp3Dv3DxZiRncAA2YFYGbDP79u0jLy9PaBGdTqkC2hoZUZPIYOWUnY/x/ZKF +bdIycpWwkpPzzsLNUnY9E6OlqucvhKiqJ8hFAAEigvy4enRPYbumpiZeffVV2SMWAV/Kv0POgTM4 +AE1IiAJJpQGUA2BTiiUm+8VHBmu9bYcjIsiP/iniMqgb9h3TeusKC9mbXciaPdlStg/MHG61QUEy +g71qJYqAwdz3L/P0/9///peTJ0/KHvFfmO89Lo0zOABgpzTAoK7xVp9YpfgfMhGARIlpX67OtGHd +hIuwmlsNbFQOgEvwzsLNUhX1HcKDuGZMb6vsISRAXF+gRsIBiAz2Z+ZI8af/lpYWXn75ZdnjlQPv +W/YOOQfO4gD8iGAuZvXq1TQ1if3A+Xp50E/iyUrRNvJLqzAIVgLLjPt0ZXQ6mD6iu7Dd9ow8NVnR +RcgtruS7DfulbO+6fJDw7IjzESFYnGs0mqhvFO8Cum3KQDw9xB/KvvjiC0tH/kq3DTgTzuIAFAD7 +RAzq6upYv3698EKjeiVqfVaXpbnVQF6xmKxpkJ+3qgM4h34pHYiPCBa2W7MnS+utK6zIJ8u2S+XU +A/28uV1ykM65iBbnllbXCdefRIUESFX+GwwG/v73v8serQp42+I3yElwFgcAQDimL5MGGNM3yarV +sopfIqNo1kuJNJ1FZtZ7S6uB9XtztN66wopU1DTw35+FJqaf5bpxfYgNC5ReO8jPWzgnXySR/rt9 +ykCplOz8+fM5evSo7PHeBiql3xwnw5kcALvUAcSEBtAlPlLrs7osOQXic+h7S0y8c0X8fTwZ36+z +sN3mA8epqnO5QWbtnq9Wp1NUIR6p9nR34/6rhkuv21GiMFe0/ic6NIAZEqkuo9HIiy++KHu0OkBa +NMAZcSYHYAsgdPc4evSolCc4tk+S1md1WWR06PskKwcAYMrgLlIDVX7cdljrrStsQFNLK+8tlpMI +njQwle4JUVK2CdEhwjaiEYDfTRsi1bGwYMECMjIypM6FufCvRNbYGXEmB8AArBQ1+uGHH4QXGifR +Y61oG/uPFSLait69UxSBft5ab11zpg8XD/9X1jaw+cBxrbeusBE/pR3mSJ74PUung4dnjZRaMyFa +vDD3ZEllm782MTqUaUO7Ca9hMBh45plnpM4ENOLCQ38uhDM5ACBRB7Bo0SLhRZJjw6QKrRSXpqKm +gTyBDwMw644P7dZR661rSq/EaLp3Ek9N/bwjk5ZWg9bbV9gIo8nEm99tkrLtn9qB0b3Fo51JseIO +gEjtz70zhknNGpg3bx6HD0tHuz7GXGzernA2B2A5INRHtmXLFikpyLF9VRrAVsjMox/eQ3zynSsx +57K+UnYLNx3QeusKG7P9cB5bDsjNeHhw1nDhUeg9EsSLctvqAPRMjGZcX/EIbEtLC88++6zUewC0 +AP+UNXZmnM0BKAF2iBgYjUapNMBYiR9CRdtIyxCTaQYY3SfJaipmzkZUSACX9Rcv/tuXXUhWvnjR +pcL5ePP7TRiN4jLPidGhQq12HcKDCA3wEVqjqq6R8ur6Nn3t/VcNl+rC+vTTT8nJke50+RRol1Oy +nM0BAInpgDJpgF5J0YQFiqtdKS7N1kMnhHuCA329GNa9faYBrhvXW/gpDeBbSbEYhfORXVDGD1vk +xtbfefmgNrfbybTkZuWXtunrhnbvyKAuccLXb2pq4oUXXpA6O9AKvCJr7Ow4owOwSNRg9erVwvOg +9TodY1Q3gE2oqGmQmko3eVAXrbdud3y8PLhKQgq1qq6R1buV+E974sMl22hoElfbiwz2Z0Yb9SX6 +JouPFd6Xc+qSX6PTId2a+NFHHwkPfzuHeUC7FclwRgdgPyDU29fU1CSlCaDSALZDpjJ9XN9kgtpZ +N8C0od2kpFsXbjxAkwXjVxXOR0lVHV+s2iNle+vkAW1KscnU4rSl5mdC/xS6dRQvcq2vr7dE9c8A +SBu7As7oAAAIJ/Vl0gCDu8a3uxuOvVi5U1yfwdPDjenDxcVBnBW9Tsf14/sI27UajHyzXkg5W+Ei +zF2xi7I25tvPJTo0gCuHXbz1LiE6hNhwMQVBk+nSEQB3Nz33zhgmdd733nuPwkLxouLTLACOyBq7 +As7qACwSNVi2bJnwcCB3N72KAtiIY6fKOdrG3OC5zBrdE3070Woe0TOBTlHioiurd2dJTV5UOD/1 +TS18uEROHOi2KQMvWmsi8/SfW1xBZW3DRb/mmjG9pdQFKysrLZn4ZwCelzV2FZzVAdgCXDqxdA7V +1dWsWbNGeKGJA1K0PqvLsmJHprBNfERwu2nRvGFCPym7L1fLhYEVrsHizYc4fqpC2C42LPCi3SYy +D0NpGbkX/f+Bvl7cdcVgqXO++uqrlJVJd7l8BshVTboQzuoAGIElokYyaYBBXeMI9hdre1G0jeXb +jwh3AwBWmWbm6KTGhUtVRO/LLuTgcXHdC4XrYDAa+XhpmpTtTRdwOmNCA+jXWXxU+qZL1PrcdcVg +qTRrfn4+b775puxb1AhIiwa4Es7qAAAsFjZYvBiDQUwVzU2vZ7ySBrYJheU1UgIm3TpGurww0A2X +yT39f7UmXeutKxyAlTuPSk3e7J4QRd/Ov630nzqkq3B/fmNzK7uO5F/w/8dHBHPNmN5S53v22Wep +rxevdTjN+0CurLEr4cwOwCpAqLevqKiI9evXCy80ob9KA9iKbzfIFavdN2OYy9YChAf5MXlQqrDd +qfIa1uzJ1nr7CgfAaDLxydLtUra3TR74m3+bOkS8BXfnkZMX7UR5cNYIKXGvw4cP8+mnn8q+NTW0 +88r/c3FmB6AJiRHB33zzjfBCA7p0EFa/UrSNLQdOUFBaLWzXtWMkUwa7pi7ArFE9pT4Yv167F4NR +SClb4cKs2iUXBRjZK4Geif8T/Omf2oFEiQFA6/deuL2+X+dY6cjqk08+SWurdIvrv2hnE/8uhjM7 +ACDRDfD9998L//C46fWMk5jDrrg0RpOJ+WvTpWzvnTEMLw/x8biOjF6v46o2irKcS31jM4s2H9R6 ++woHwmgyMU9SF+CeK4ee/fsN4/sK2ze3GFi9+/ytvjodPHLNaKl9bd26lYULF8q+JSW0U83/C+Hs +DsASoEHEoKSkhLVr1wovNEF1A9iM7zceoKJG6NsImAuT7pasIHZURvZMJDLEX9hu8ZZD1NSLtbkq +XJ+fth+mXOJ3a2j3jgxIjSMuIkhqYuDG/ceovsDP49TBXaUmWwI8/vjjlrwdLyGYNnZ1nN0BqMU8 +IVAIqTRASgcig8U/mBWXprG5Vbp47aaJ/encIUzrI1iNq0eLy/4ajSbmr9mr9dYVDkhzi4FvJUWh +Hr1mFDdc1ldqNO/SbRnn/XdfLw8emCkn+bt48WI2btwo+1bkYi7+U5yDszsAYFZzEmLhwoW0tIhp +Zuv1OiZJFGYp2sY36/ZKPcG6u+n5y02XSQ3LcTRiQgMYJtHdsG5vDvmlVVpvX+GgfLt+n5QsdGp8 +BNeMEVeiLK9pYMvB83f33DF1kNSDVHNzM3/84x8teRuewVw3pjgH5//UNMsCC/WDlJWVsWrVKuGF +LnfRojNHoLahmU+XC016PkvPxGjuvNz5tQFmjOgh1dnwzTr19K+4MOU1DXy7Xm4ypEyjzaJNB2g1 +/LYYtWNksLS41bvvvsvRo+Ly4ac5AsyVNXZlXMEBqEMiDbBggXDggNT4CJJjXSfc7Gh8tWYvJ0vk +nmTvumIw/VPFhUocBZ0OLh/SVdjuRFEFuzJPar19hYPz6fKd1EtMChSlpdXAN+vOn3L4wzWj2zx2 ++FzKy8stGfcL8CTmsb+KX+EKDgBIpAEWLVpEc3Oz8EJTVRTAZrS0GvhAUsdcr9Px7G2TCHHSds0B +qXHCg1YAvttwAAkxRUU7o7K2gQXrbD8gasXOTEqr6n7z76N6JTKyV4LUNZ9++mnKy8XbGU+zA5Bu +G3B1XMUBWII5EtBmKioqWLFihfBCUwZ3cVkBGkfg5x1H2JstN90rJjSAl++e6pT1AFcM7SZs09xi +uGCxlULxaz5fseuClfnWYt7q9N/8m6e7G3+4dpTU9TIyMvjggw8s2dITgHKRL4DzfVKenzrgZ1Gj +L7/8Unih6NAA+qbECtsp2obJBC/OW0NLq5hk8xkGpMbxh2vkPmy0wtvTncskRFFW7T5KVV2j1ttX +OAlVdY3S6oBtIS0jl8y832rs3DSxP/ERwVLXfPTRRy0R/VkFrLbZgV0AV3EAQDINUFUlnnNWaQDb +klNQxtyVu6XtrxvXh1sm9df6GG1mTJ8kfL09he0Wb273w8wUgnyzbi8nisQnBV4Kkwne/+G36bvI +EH9umzJQ4oqwevVqfvpJWOz1DEbgz1Y/qIvhSg6AcBqgoaFBSlVqQv8UPD3Ei1kUbeeTZdst+qB6 +cOZIqaI6LbhiiHj4v6Csmj1H84XtFO2bVoOR17+V7qW/IGvTszhw7LcT2h+ZPQpfLw/xfba28tBD +D1mypU+AXVY/qIvhSg5AHRLSwHPnineHBPh6MbaPmhBoS5pbDPzl3z9LpwJ0OvjbLROYNNCxtRtC +A30Z0j1e2G7ZtsNSo5QVik37j1t1aJTBaOS9xVt/8+/De3RioqSC6ttvv83Bg9LS1lXAX612QBfG +lRwAAOGk/rp16zh5UryNavrw7lqf1eXJyC2W7goAs0jQC3dMdujv1ZRBqcJFiyYTLEs7rPXWFU7M +P+avo7ZBvAvqfPy4NYPjp34ZrfP2dOfxOWOlrnfq1CmeffZZS7b0HFBslcO5OK7mAKxEcNKT0Whk +3rx5wgsN7hZPdGiA1ud1eeau2M2OI/J97nq9jr/ePIE5EgNN7MFUiTTF/mOF5BZXar11hRNTUlXH +2ws3W3ydmvqm8z7933X5YDqEB0ld8/HHH5eqzTpNJvCO9d4p18bVHIAWQFjo/4svvhBeSK/TceUw +8dytQgyjycRT/15OUYX8DA+dDh69djR3OdjgoKSYULp1FB+Kop7+Fdbg+437LyjZ21bmrtxNWfUv +hViTY8O4aaJcEe7mzZul0rLn8ChgndBGO8DVHAAA4cf5AwcOkJ6eLrzQlcO6K00AO1BeXc8fP1hK +c4tcPcAZ7rlyKH+/e6pUUZItkClSbG41sGKntCSqQnEWkwme/Wyl1CTOM8wY0Z1AX6+z/63TwZM3 +jsfdTfzWYjAYePDBBzHJ17b8DPxo23fNtXBFB2AbkCNqJON1xoYHMrBLnNbnbRccOlHMi/PWWHyd +iQNS+OyJ60iIDtH0PHqdjikS7aSb9h+nWvX+K6xEWXU9z32+SlpNskN4EM/fMfnsg9BVI3rSJzlG +6loffvghe/bskT1KK/CYzd8wF8NVe9kigdEiBsePH+fhhx9GL1iQ5abXW7WiVnFhjp4sRa/TWaz5 +H+Lvw7Sh3cgrqSKnUFpi1CL6pXRgzmV9he3eWbTFJn3civZLbnEloYE+9EiIkrLvGBkMOh3HCsv4 +573T8PJ0F75GaWkps2bNoqFBOhrxNvC5vd4zV8FVHYBC4H4Rg9raWgYNGkRqqljbWHxkMAvW77M4 +PK1oGzszTxIR7CeVOz8XD3c3JgxIISE6hD1ZBTTYYVDKudw4oT89E6OFbCprG3j5q3UYjar9T2Fd +dh45ybh+ydKzNPqlxDKwSzxxEXKFfw899BCbN0sXJZYBswH5XIbluANRmB8+Q06/fE7vyWjBdW2K +K6YAADKQEIH45JNPhBfy8nBXyoB25u9frmX9XuEsz3mZNDCVb5+5mRkjekiNPpVBp4Nx/ZKE7Vbs +zJTWRVAoLkZTSytPfbKcxmY52V29Tkf3TnJO+aZNm/j3v/9tyfafBuwRygsGRgL/hznisAo4iLnz +rAUoALLPeeVjLkg8BezBPJL4EWAU4BCFSK5cwXY/gu0g7u7u5ObmEhMjlsPKLijjuufEWwkV8nh6 +uPHa/01jeM9OVrvm7sx8Xluw4bx65takR0IUn/35OmG7O/6xgH2Sg5IUirZw+ZCuPHf7JLut19zc +TP/+/S0R/TkA9MO64371QGegD9AX6H367+KKXRemAnPB4jfAMjSKErhqCgDMHthDmEMzbcJoNBIe +Hs7IkSOFFgoN8GXnkZMUlsu3qinEMBhNrN6dRZf4SDpGBVvlmjFhgcwa1YvU+HBOnKr4TXuTtbh+ +XF/6dhYbKFVUUcMbNpBwVSjO5Wh+KUF+3sLpKVleeeUV5s+fb8klbgSyJG3dgE7AAGAKcDfwF+B1 +4A/ANZif1lMBudzGhfHB7FTccPoMRmAfYNcQnytHAADmA0KPWikpKRw5cgSdYDx4xc5Mnvxkudbn +bXd4urvxwp2TGd+vs1WvazLB2vRsPlm23eoRgQXP3ERidKiQzbxVe2yi4a5Q/Bp3Nz0f/uFq6Wr+ +tpKdnU2vXr0sKfxbDFx1kf8fhDkvH3H6lQgkA0mn/0wAxKdw2Y6jmFMES+21oKs7AFMA4XFSa9eu +ZezYsUI2La0GrnjyU8pt9NSouDB6vY4/XTeW2WN62eT6B48X8cOWQ6zYmUmNhfPUI0P8Wfb3O4Tt +bnvlm/MOW1EobEFEkB9fPDWHsEBfm60xadIkVq5cacklNmMuADyzyWDMufUIIBzHurmL8CnwAGDz +m4krpwAAjgF3AIEiRgaDgVmzZgkt5KbXU1PfxJ6sAq3P3O4wmWDTgeO0GowM6mrNNJ2ZyGB/RvVK +ZM74viTFhNJqMFFSVSdVkDe+XzJj+4oNkiqprOON79TTv8J+1De1cPDYKS4f0hW93vrPifPmzeO1 +116z9DIdgS6Yn+iTgFggGgjAue9t/TBHNpYA1bZcyJnfpLZgwuwJjhIxOnr0KPfddx8+PmItMXGR +wXy9dq+0qIbCMsb0SaK3DcOW7m56OncIZ/KgVG6Z1J9h3TsRHRpAq8FIRW0Dhja0590yaQCdO4QL +rbtiZyYb9h2z+funUJzLqfIaahqaGNEzwarXLS8vZ8aMGdTVCU1vb29EAldjLhAss9Uiru4AAORh +Dqe02Y1tbW0lLi6OwYPFtOMDfLzIOFGihFo04LYpA+2q9a/X6YgODWBAahwzRvTg9qmDmDasG0O7 +daJLxwiiQwOICgkgItiPID9vvD3dcXfT89DVI/ERlCL+ZOl29TOl0ISDx4uIiwgiJU7Mab0Yv//9 +79m4UUW02kAQMB34Gqi1xQKuXgNwho2Y+zfbTK9evdi3b5/wQlsPneDBtxZrfd52xVUje/DUjZfZ +rY/fnjS3GLjssY/sLlSkUJzB18uDL56aY1b8s5DVq1czceJES/T+2yM7Md+/LCtAOg+uKgT0az4W +Ndi/fz/r168XXmhot04kxYhVeCvkGd8vmSdvGO+SN3+AA8dPqZu/QlPqm1p46pPlFotQ1dbWcvfd +d6ubvzgDgZdtceH24gAsQEIp6p13xMdK63Rww2X9tD5vu2BQlzheuHOKTYqUHIU9R81FpYG+XvRO +jmF4z05c1r8zA7vEkdIh/BeT2BQKW5AaH8GIXgnUNFg2ZffJJ5/k2DFVyyLJ7zHrFVgV1/3k/C2v +Aw+LGLi7u3Ps2DHi4sQm/jW3GJj25H8ot2DMpuLidO8UyQePzMLX21k7fdrGvuxCIkL8iQkNOO// +N5ngRFEF+3IK2bjvGFsOnqCpxZqiaIr2SFRIAFeN7MG0Yd0u+LMnQn5+PomJibS0uG40y93dncDA +QEwmE3V1dTQ3W+YwnYd1wDhrXrA9OQBdgUOiZ/7LX/7C888/L7zYRz+m8dGPaVqf2SXpFBXCJ4/N +lh5c4srUN7WwatdRvt2wn0PHi7TejsLJGNw1nuvH92VkzwSrR9Y2bdrEvffey4EDB7Q+pjT+/v70 +6tWLHj16nH0lJSURHh5OUNAvxQINBgOHDx9m9+7dbNmyhfnz51NZWWnpFq7CLIBkFdqTAwCwFhgr +YhAVFcWJEyfw8hILtZbXNDDtyf+oKYFWJjLEn//88RqiLXgqMZlM/PGPfyQhIYG7775b+HvrLGw/ +nMcnS7ez+2i+1ltRODhdO0byyOyRDEgVi3aKYjQa+eabb3jttdfYtUt4XptdiY2NpW/fvr94JScn +C4+MP0N9fT3z5s3jiSeeoKxMurNvAzDGWmdsbw7A9cBXokZffPEFN954o/Biz89dzeLN0kMuFL8i +yM+bT/44W1hG99c88sgjvPHGGwDEx8fz1FNPcfvtt+Pp6ZrphA37jvH3eWsoqVJ914pf4unhxr3T +h3HDZX1xk7yxyXLgwAG++uorli9fTnp6Okaj/efh6PV6OnbsSGpqKqmpqXTp0oUuXbrQt29fIiIi +bLJmfn4+N910E+vWrZO9RHfME28tpr05AJ6YdQGE5lYOHTqUrVu3Ci+WXVDG9c/PU8JAVsDXy4P3 +H5lFj4Qoi67zwgsv8Ne//vU3/56QkMAjjzzCrbfe+ptQnitQXd/EK1+t5ecdmVpvReEgxIYF8sr/ +XU63jnJjfK1JcXEx27dvZ8+ePezdu5cjR46Ql5dHVVWVRdf19vamQ4cOxMbGEh8fT0xMDPHx8cTH +x5OSkkJKSgre3t52P29dXR0jR44kPT1dxvxl4Alr7KO9OQBgfvMeFzXasWMHAwcOFF7s4Xd/YNP+ +41qf2alxd9Pzr3uvtHj07wcffMC999570a/x8/Pjxhtv5Pbbb2fo0KFaH93qfLp8J+8t3qKc0nZO +146RvPP7GQT7O3YdTXV1NXl5edTU1FBbW0tFRQW1tbVniwl9fHzO3sB9fX0JDg4mKCiIoKAggoOD +CQiwvIDRVuTm5tKjRw9qa4U1ftIxywVbTHt0ABIxT10SUkGcM2cOX375pfBi+3IKuePVBVqf2WnR +6eBvt0zkymHdLLrON998w5w5c4TCjKmpqdx4443MmjWLnj17av1WWI0VOzP526craDVoMoJcoTE9 +EqJ45/dXEaBaSDXn3HSkACbMUw4tHlPaHh0AgIVcfIzkb3B3dyczM5PExEThxe59/Xt2HDmp9Zmd +kvtmDOOOqYMsusbKlSuZNm2aRW05SUlJXHnllVx22WWMHj3a6dMEy9IO88x/V2JUoYB2RWxYIJ/9 ++TrVQeMg5ObmkpCQICOONBFYZen67WEWwPkoAm4TMTAajRiNRqZOnSq8WFRoAEu3WaVmo11x9ehe +/H7WCIuukZaWxhVXXGHJzHEAKioqSEtL46uvvuIf//gHP/zwA3v27KGwsBCAgIAAp+omSIkLJ9DP +my0HT2i9FYWd8PHy4P2HZ9EhXGg4qsKGBAUF8dlnn8m0B6YD2yxdv71GAMD8BvYRMfDz8+PEiROE +hYUJL3bHqwvYl1Oo9ZmdhjF9kvjH/11hUS/yoUOHGD16tCUtN0LExMTQuXNnOnToQFRUFJGRkQQH +B+Pr60vv3r3p37+/vd6+NvPsZytZslU5p+2Bx64dw/XjhT7yFHZg9uzZfPfdd6JmrwF/tHRtd60P +ryFvAv8RMairq+Pdd9/lb3/7m/Bid0wdxMPv/qD1mZ2C3skxvHSXZRK/ubm5TJ482W43f4DCwsKz +EYFfc/311/PVV8IdqDbnT9eP5eDxInIKhZWyFU5E76QYrh3X2+rXbWppZevBExRX1jF7TC/0rjqU +w4b4+/vLmFll4Ex7mQVwPr5CoojinXfekQonj+iZQJd42/SVuhIJ0SG8ft+VeHnI+6YlJSVMmjSJ +kycdp+5i4sSJWm/hvPh4efDCHZPt3gOusC+PXTvaajfnytoGlqUd5omPf2LiYx/z2AdLeXX+Oh54 +cxFl1fVaH9XpqKmpkTETmyl+AdprDQBAKxAIjBYxqq+vJzY2lkGDxArTdDqICPZTfdgXITzIjw/+ +MIuIID/pa9TU1DBp0iT279+v9XHO8uc//5k//tHiaB25RZUs3nKQNXuyycovw9PDzaL36gxhQX5U +1jZwUEkHuyQjeiZwyyTL5sg0tbSyYmcm/1ywgVfnr2fNnmxyCstpOaeTJL+0miVbDuHv40nX+Eh0 +KhrQJl577TUKCgpEzXYBFoeU2/t3KBY4hlkgqM0kJydz5MgR3NzE/SdVC3B+/Lw9+fjRq0m1IErS +3NzM1KlTWbNmjdbHOcv06dNZuHChtHwoQG1DM28v3MzCjQd+U7WfFBPKtGHdmTmyh0VtXTX1TVz9 +9OdqgJUL8p8/XUPvpBgpW6PJxA+bD/HeD1spF3i67xIfwd1XDGZMn2SXHdV9BpMJ6TOWlZURGRkp +o4L4T+AxS/feniMAADVAZ6CviFFFRQWdO3emTx/xgpq4iCB+VEVXv8DD3Y1/3XclvZPlPqTA3KVx +yy23sGTJEq2Pc5auXbuybNkyi5TGsvLLuOu1b9lxOI/zNQpV1DaQlpHLwo0HCAnwlU4zeXm4g05H +Wkau1m+bwookxYTywEy5TpriiloeeGsx327YT0OT2BS/sup6Vuw8yuo9Wbi76ekYGYynu/Pfbqrr +m9ifc4r1+3JYuPEA81btoUN4ILFhcp0VixYtkikABJgPbLf0PC7um7WJ7sABBN+LlJQUMjIypKIA +D7y1iG2H1ActmD3n52+fzJTBXSy6zmOPPcY///lPrY9zlsDAQNLS0ujatav0NQ7nFnPvGwupqW9q +s82sUT358w3jpPK9dY3NTHvyU6H1FI7N/VcN5/Yp4gqmRRU13PmPbzlVLpWf/g3enu6M79eZcf2S +GdqtIz5eVklh2wyj0UReSSWZJ0s5evqVebKUoor/vR9Bft68+cB0eiZGS68zZMgQtm+Xuo9PAlZa +ek7lAJhZBMwQNfrss8+45ZZbhBc7dKKYW1+er+RYgd/PGsktkyxrj3v99df5wx/+oPVRzqLX61m4 +cCHTp0+XvsbxUxXc9dq3VNaKh+RnjuzJUzeNl1r37YWb+exnx57Spmg7S166nRjByZnNrQbufHUB +GbnFNtmTp4cb/VM60Dc5lt7JMfRMjMZXA4fAaDRxqqKG/NJq8kuqyC+tIr+0mpMlleQUltPY3HpB +26iQAN55aIZFg8nWrl3L+PFSv6cmzF0AlZa+B8oBMDMM2CJq1LlzZzIyMnB3F69Y/9OHy1izJ0vr +c2vKnPF9efRaoRrM3/D1119zww03aDJJ7EI888wzPP3009L2FTUN3P7qN5wskR+E8odrRnPDZX2F +7Y6fqmD2M3Pt8TYpbEzHqGC+f1b8AeXfy3bw/g/iw89k0et0RIcFkBQTSlJMGNGhAUSHBhAV4k9Y +oC8Bvl5CXUF1jc1U1TZSWdtAZV0j1XWNVJ1+lVXXm2/0JdUUlldLyWEPSI3jpbumEBboK33mlpYW +Bg0axN69e2XM9yKYtr4Q7VkH4Fy2AusRnLOclZXFF198wW233Sa84H0zhrFhX0671WOfMCCFR64Z +ZdE11q1bx6233upQN/8ZM2acd9pgW2luMfDoBz9adPMHeGfhZoZ0iyc5Vky0KiE6hNT4CDLzLJYZ +V2jMgJQ4YZua+iY+W2HfCJDRZKKgtJqC0uoLDk7zcHcjwMcTH6//1WvrdbqzRbEGo5H6xmbqGlsw +2OjzQK/TcduUgdxz5VCLNEoAXn31VdmbP4DVCp2cvyrDehQBN4oaHThwgPvuu0+4yjvY34fq+kb2 +Hzul9bntTr/Osbx2zzTc3eQr4/fv38/kyZOpq3OcGffdunVj6dKl0kV/JhP87dMVVpHnNRhNHD9V +wTSJIUo19U1sP5xn8/dLYVtumtCPzh3ChWwWbjzI+r05Wm/9NxiNJhqaW6mpbzr7qq5vPPv32oZm +mloMMpr6bSLY34dX/u9yZo3qaXF7486dO7ntttswGAyyl3gQ8/3KYpT6x/9Yjjm0IkR2djaff/65 +1IJ3XzGk3Q3l6BgVzGv3TsPTQ973zMvLY+rUqRbPCrcmkQMmfS0AADINSURBVJGR/PDDDwQGyuus +v//DVlbstJ5OxM4jJ6WKTQd3jbfJe6SwL107RgrbrNildEp+zcAucXz51ByG97BsHDlAUVERs2bN +oqlJutA2DdhnrbMpB+B/mIC/yxi+8MILUt/QAF8v7p0+TOtz242QAB/eemAGQX7ybXEVFRVMnTqV +/Px8rY9zFj8/P5YsWULnzp2lr/HT9iP856cdVt/bvFV7hG26dIxw+CptxcXR63XCQ39q6ps4eEyJ +QZ3B19uTP88Zx/sPzyIyREqu9xc0NDQwe/Zs8vIsiq69Y80zKgfglyzA3BIoxLFjx3j77belFrxq +RA9S48TCdM6Ip4cb/7xnGnER8mN0GxsbmTFjBgcPHtT6OGfx9fXl22+/ZfDgwdLXyMwr4cUvVttk +f2kZuZRUiqVJ3PR6unUSf3pUOA6xYYF4CPbdH84rsVn+3NkY3TuRr/92I7PH9LKKkFFzczOzZ89m +06ZNllwmC3P/v9VQDsAvMQLPyhi+9NJLUoNn9HqdxZXwjo5ep+O52yZZLPRz0003sXHjRq2Pc5aI +iAhWr17NlClTpK9RVdfIYx8svWjLkSUYTSY27j8mbJcQFWKT/SjsQ8fIYGGboydV4WeH8CBev/9K +/nXflcLtkxeipaWFG264gWXLlll6qacxS9hbDeUA/JbvkKgFqKio4Pnnn5dacEBqnMVCOI7MAzOH +M2FAikXXeOihh2QVs2zC4MGD2bJlC0OHDpW+htFo4olPfqKgrNqme5WRnpaVjlU4BiEB4i1q+aW2 +/Tl0ZPx9PLlvxjC+efpGRvVKtNp16+vrmTlzpjU+u7ZiHmBnVZQD8FtMwDMyhu+//z5ZWXK9/Y9e +M5pgf9crCJw1qqfFg0heeeUV3nnHqqkvafz9/Xn99dfZsmWLRTl/gLcWbmZ7hu2r7WVG/UYGW57z +VGiHv4/QeBMASqscp6PGXni4u3H9+D4sev5W7pg6yKIppL+msrKSyZMns3TpUksv1Qj8DrB6i4Ny +AM7PYmC3qFFzczN//vOfpRYMCfDhDxb2xTsaw3t04vE5Yy26xty5c3niiSe0PgphYWE8+eSTZGZm +8vDDD0tJQJ/LsrTDfLFS+EdMiuq6RmEbS/ucFdri5y3uAFTWiv+cOCse7m7MGtWT7569mceuHWP1 +h68jR44wdOhQS3P+Z3gSidq0tqCEgM7PmSiA8LjF7777js2bNzNihPgAjsuHdOWntCNsPWR5H7jW +pMaF8/LdUy2aM79y5UruvPNOm/X2Xgq9Xs/w4cO56aabuPnmm/H1lVf+OpdDx4t48Qv7TSwUHeQC +tFuBKldBJgLQ3GKbOhRHwtPdjRkjenDr5AFEWynH/2uWL1/OnDlzqKystMblVgNv2ur9UA7AhfkR +szzwcFHDhx56iLS0NKmnxCduHMd1z82T+tB2FMKD/Hj9/ivxlXgKOcP+/fuZPXs2LS32fR88PDwY +M2YMs2bN4qqrriImxrq58NKqOh77cClNdvywDZJ4ummRFylROACiHQAATa2u+z2PDQ/k6lG9mD68 +u820VwwGAy+88ALPP/+8JSI/51IK3Ia5ON0mKAfgwpiAP2AuvhCKh+7atYv33nuPBx98UHjR2LBA +Hpw5glfnr9P6/FJ4ebjzr3unERUi710XFBRwxRVXUF1t+6IkNzc3BgwYwLhx4xg7diwjR47E3982 ++e/ahmZ+//ZiiitqbX6uc5FpM1URAOdG5vvnakkffx9PxvRJZvLAVIb26Cg1IbOtFBYWcuONN7J2 +7VprXbIRuAo4acv3SDkAFycNc9/lHFHDv/zlL1x99dXExsYKL3rNmN5sO3SCDfvE27e0RKeDZ26b +SPeEKOlr1NbWcuWVV1oqlnFBAgMDGTRoEEOHDmXYsGGMGjXKIvW+ttLcYuAP7y0h82Spzdf6NaN7 +i1c1KwfAuWmReJr3lIgaOBphgb4M69GJ8f2SGdq9k13O9PXXX/Pggw9SUmK1NkoT5if/zbbeu3IA +Ls2TwExASL6uurqaRx55hK+//lp4QZ0O/nbLBOY8/yUlTlSZ+3/ThjLRgnY/g8HAnDlz2L3bOsVx +bm5udO/enSFDhjB06FCGDBlC9+7dhec2WIrBaOSJT35i91H7qxd2CA9ibN9kYTvlADg3Mt8/H2/n +U3/09fakV2I0Q7rFM7R7J1I6hFtFuKctnDp1ivvvv5/vv//e2pd+EhC/cUigHIBLcxxzEcbjoobf +fPMNd9xxB5MnTxZeNNjfh2dvm8QDby06O/HKkZk6uAt3Xi6vhgfm2okff/xR2t7f35+RI0cyZswY +hg0bxoABA2wWzm8r9U0t/PnjZWw5YP/CTp0OHr9+rNRTkHIAnBuZ4tvnbpvEe4u38tP2I1IRBFuj +1+voGBlM146R9E6Kpm9yLJ07hGvSsfLFF1/w8MMPS4m/XYJXgJftdQ7lALSNl4DbAWF91Pvvv5/9 ++/fj4yNeeDK4Wzw3T+rPZz/bdzynKL2TY/jrzRMs8rz/9a9/8e677wrbdenShZkzZzJ9+nQGDRqE +u7vj/EiXVtXx8LtLOJxbrMn6t0wawPCecgNMWlURoFMTEewnbBMe5MffbpnAQ1ePZP3eHDbuO8be +7ALKaxrsunc3vZ6YsADiI4LpGBVM5w5hpMZFkBwbhrentr/f+fn53HvvvSxZYrWJvOfyIvAXe57H +cT4tHZtqzG2B74kaZmdn8+yzz/Lyy3JO3X0zhpGRW2wXwRgZYsMCee0ey6b7LVy4kD/+8Y9t/vro +6Gjuvvtu5syZQ7du4uNu7cHh3GL++MFSCstrNFm/X+dY7pshP2iqpVVFAJyZ8CBxB+AMQX7eTB/e +nenDuwOQW1xJVn4pJ4oqyS2qoLC8hvKaBipr6qmobaCtAUoPdzcCfL0I8PEi0NeLkAAfIkP8CQv0 +IyrEn/AgP+LCg4gND7RoVLgtaGho4LXXXuOVV16x1QjyZ5CUobcEVyv8tCXumCWCu4saurm5sW7d +OkaOHCm1cHV9E7e9/DW5xZVavwe/wM/bk//86RqSY8Okr7F9+3bGjRtHfX39Jb922LBhPPDAA8ye +PRtPT/kWQ1tiMBr5YuUePliyTbMwalRIAJ8/cR1hgfK6BV+uTudfCzZosn+F5Xz11xtI6WCfIWO1 +Dc0YTSbqG5t/M0zI38cLnU6Hp7ub5k/vMphMJr755hv+9Kc/kZsrPlq7DRiAx4A3tDif831HtKMV ++CMgrOtoMBi49dZbSU9PJyBAvD0u0NeL1++/ktte+Yaaeuk50lZFr9fx0l1TLLr5nzhxgunTp1/y +5j9gwAD+/ve/M3HiRK2PfVHSswp45at1HM23f6X/GXy9PHj9/istuvmDqgFwdiIsiACIckZ0KNDX +S+tjW5WdO3fy8MMPs3mzzYrxa4EbAJvkE9qCY8VZHJ9lgFTJZ05ODo888oj0wp2iQvj7XZYp61mT +x64dzYieCdL2NTU1XHnllRQVXXj+uJ+fH6+//jppaWkOffPffjiPe1//nrte+1bTm7+bXs8Ld06x +ynhpVQPgvHi6uxHk53pzRezFGRGywYMH2/LmXwCMRcObPygHQIYHgUoZw3//+98sXrxYeuGh3Tvy +7G0TNddpv2VSf64d20fa/ky73/79+y/4NSkpKWzbts0quvu2wGg0sS49m1tf/pr73ljIjiM21eu4 +JHqdjqdvnSDV838+VATAeQkP8rNbK5wrcfDgQa699lr69u3Ld999Z0sJ8g3AQEDz6m6VAhCnAHNL +4Icyxr/73e8YOnQoUVFyYjlTBnehxWDk+c9XadIeOHVwFx6cKVfLcIbHHnvsohOy+vTpw+rVqwkL +k08v2Ir9x06xfPsRVu46Snn1pesW7IFOB3+8fgyXD+lqtWsqB8B5CZfoAGjPbNu2jTfeeIMFCxZg +NNr0596Euc3vr5hTypqjHAA5PsacuxkjalhcXMz111/PypUrpVvWrhzWjVaDgZfmrWlzBa41mDgg +hWdum2jR08VHH33EG2+8ccH/n5SUxKpVqxzm5m80mcjMK2FtejbLt2eSX1ql9ZZ+gV6n40/Xj2X2 +mF5Wva5KATgvapTzpamrq+Orr77i/ffft5rw2CUoA25FoobMligHQA4T5vnMexFUCARYt24df/rT +n/jXv/4lvYGZI3vi7ubGS/PW2KXafNLAVJ6/Y5JFNQirV6/mgQceuOD/9/T05OuvvyY83D7Vyxei +uKKWbRm5pGXksv1wHhV27oNuK256PU/fOsGqT/5nUBEA58WeBYDOhMFgYMOGDSxYsIAvv/ySqiq7 +OfMrgDuxsa6/DMoBkCcTeB6zeIMwr7/+OoMGDWLOHOExA2e5clg3OoQH8qcPl1FZa7ub1A2X9ePh +2SMtGqZx5MgRrrnmmotO97vrrrsYOHCgzc5xIYora9mfc4o9WfmkHcrj2Klyu+9BFD9vT168cwoj +eyXY5PrKAXBeZESAXBWDwcD69etZsGABCxcuvGjRsQ2oBR7FHDF2SDlXVSpiGR7ATqC3jLGfnx9b +tmyhd28p87Pkl1bxyLtLyCm07o3L092NR68dzdWjLQsvl5eXM3ToUI4ePXrBr9Hr9Zw4cYK4uDir +nuHXtBqMHM4tZv+xU+zPOcXe7EKKKrQR65ElNjyQ1++70qIWzEvx0rw1fL/xgNZHVUjw3O2TbBIV +chaysrJYtWoVq1atYs2aNVRUVGixjdWYo8Q5Wr8fF0NFACyjBbgL2ILEe1lXV8esWbNIS0uzKOfd +ITyIz5+4ng+WbOPL1XswGi13NuMjgnnxril07ySsfvzLN6ilhauvvvqiN3+AoUOH2uTmX1HTwL6c +QvZmF7Av5xQZJ4ppanGI+hspRvVK5OlbJxDsb9s2LxUBcF4i2lENgNFo5NChQ2zfvp0tW7awevVq +jh8/ruWWSjE/9c/FQZ/6z0U5AJazA3gBs5SjMNnZ2VxxxRWsXr0aPz/50J23pzsPXz2SSQNTeWHu +Kumxsx7ubtw4oR93XzEYLw/LfjxMJhP33HMP69atu+TXjh071qK1ztDY3Mr2w3ls2n+MXZn5nCjS +xPu3Oh7ubjw4czhzxvezS4uXcgCcF9EagJaWFv7yl78wdepURowYgYeHY04FbG1tJSsri4MHD7Jr +1y62bdvGzp07qalxiAieEfgM+BNmJ8ApUCkA66AH1iDRFXCGyZMn88MPP1hF4tZoNLFubw7z16S3 +eQStp4cbUwZ14a4rBhMbFmiVN+Wpp57ipZdeatPXvv/++9xzzz1S67S0Gth04Dg/bs1g26Fcp37C +Px89E6P5682X2TTk/2ue+PgnVu46avmFFHZn/Rv34Ofd9s+RvLw8OnbsCEBgYCDDhw9n8ODBDB48 +mF69ehEfH4/OTsICRqORwsJCjh8/zokTJ8jMzOTQoUNkZGSQmZlJc3OzJu/pJdgG/AHYqvVGRFER +AOtgxDwtMB2Qunv+/PPP3HrrrcybN8/iefV6vY7x/ZIZ3y+ZjNxiVuzIZOeRk2QVlJ3tGNDrdESH +BpAcG8bIXglMGJBCkJ9wQ8MFefvtt9t88wfzB48MS7dl8Nb3mylzkJ58a+Lv48n/XTmU68b2sbv4 +k8EKaSSF/fH19hS6+QMUFBSc/Xt1dTXLly9n+fLl/7umry+pqakkJSXRoUMHYmNjiY2NxcfHh+Dg +YNzd3QkMDMTLywtfX1/8/Pzw9PQ8m3tvaGigsbERk8lEWVkZZWVllJeX/+LP/Px8cnNzycvLu2ih +sINxFHgKWKD1RmRRDoD1OIa56GO+7AXmz59PeHg4b7/9ttU21a1jJN06mvP4rQYj9U0tNDa1EOzv +Y9EEv4vx9ddf8/DDDwvZVFZWSq01slciWw/lsnz7EZucRQvc9HquHt2T300bYvNc/4VRDoAzItMC +eK4DcD7q6+tJT08nPT1d6+M5CmXAc8D7mOvAnBblAFiXr4ERmOWCpXjnnXcwGo28/fbbFkcCfo27 +m55AXy+bDu346aefuOWWW4QVtTIyMqTWC/Lz5oU7JnPtmN68s3gLuzPblvJwRDzc3bhiaFdumTSA +jpHBmu5FA5FJhRWIChEvALyUA6A4SzXwDvAa4BLFRcoBsD6PAv0xOwJSvPfee5SVlfH555877Njb +8zF//nxuvfVWqTxdWwoFL0bv5Bg++sPV7M7M55v1+1iXnu00hWyhAT5cObw7143rY3UVN4PBwNat +W4VHUav7v3MSHSo+bTQ/33mdZjtRC7wLvAo4vkiIAMoBsD4twBzM+gDSPXRff/01FRUVfPfdd/j7 +O35bz3vvvceDDz4oraV94MABdu7cabEQUP/UDvRP7UBpVR0/78hk/d4c0rMLrNIaaU083N0Y0i2e +K4Z2Y2yfJDzcrZ+OaWpq4uabbyY2NlbcAVAhAKdExgGw0Zx7V6AM8xP/G0gOgHN0lANgG/KAmZg7 +A6Tj7StWrGDChAl8//33xMbGan2mC/Lcc8/x9NNPW3ydl19+mW+//dYqewoP8uPGCf24cUI/Kmsb +2H44j/05p9h/7BRH8krsIp/8a0ICfBjUJZ6RvRIY1SuRABumYoqKipg1axZbtmyxaAy1wrlQDoBV +2AV8BHwBuF518TkoB8B2bAHuBj635CJpaWn069ePuXPnMmnSJK3P9Auqqqq48847+e6776xyve++ ++44VK1ZY/ZzB/j5MGpjKpIGpADS3GDicW8yRkyXkFJRz/FQ5x05VUFpVZ7U1PdzdSIoJpWvHSLp2 +jKBPciwpHcLt0sOfnp7OjBkzzn6wy7RwqQCAcxIdohwASWow3/A/APZpvRl7oRwA2zIX6Ao8aclF +iouLmTp1Kk888QTPPPOM9BRBa7Jz506uu+46cnKsq3R56623snv3bmJiYmy2d08PN3onx9A7+Zdr +1NQ3UVRRS3FFLWU19ZRU1lJWXU9Lq4HahmaMJhM19U2YMOHn5Ymbmx4vD3eC/b0J9vchLNCX6NAA +4iKCiA4JsHvrHsDnn3/OfffdR13d/5wZuR5u5QE4I6IRgNbW1vZcA1CLeTrfd8AywHpPAE6C9ncS +1+cvQBTmaVDSGI1GXnzxRTZu3MhHH31Ely5dNDlMa2srb731Fk8++SRNTU1Wv/6pU6eYPn06q1at +IigoyK5nC/D1IsDXi84dHGMUsQg1NTXcd999fPHFF7/5fzLdJCoC4HzodOIOQEFBAa2triWcdQkq +gZXAj5hv/O3upn8u1u0zU5wPE3APsMQaF9uwYQO9e/fmscces+c4y7NrDxgwgEcffdQmN/8z7Ny5 +k8svv5zycpcquLUZW7duZcCAAee9+YNkCkBFAJyOkABfYW2PdhD+bwLWY5ZqH425MPtazKnZdn3z +B+UA2ItW4DrMP4gW09zczD//+U+6dOnCv//9b5t78EePHuWGG25g7Nix7Ntnn/TYli1bGD58+CWH +CLVnampq+P3vf8/IkSMvOWlRFBUBcD5UASAAjZgleV8CJgKhwFjgWWAjTi7cY22UA2A/GoDLMXcG +WIWioiLuuusuUlJSePPNN6XV9C7EunXrmDFjBl27duWrr76ye2vYkSNHGDBgAPPmzbPrus7AokWL +6NmzJ2+//fYlWy9VBKB90A4LAFuAQ5hrrR4GRgEhwHDMEr2rcPEqfktRDoB9qQemY6VIwBmOHz/O +ww8/TExMDHPmzOGbb76RcgZMJhPbt2/nqaeeokePHowbN44ffvhBurffGtTU1HDTTTcxdepUsrKy +NNuHo7Br1y7GjRvHzJkz2/zhLVUEqO7/TkdMmMs6AFWYdVW+wvwkfyNmsTU/oAdwC/AmsAlzBEDR +RlQRoP2pwxwJ+Aa4wpoXbmxsZP78+cyfPx93d3d69OjBkCFD6NatG0lJSURHR+Pj44OXlxfV1dVU +VlZSWFjIwYMH2bdvH7t376aoqEjr9+e8LF++nJ49e/KnP/2Jxx9/3KLRyc7I4cOHefHFF/nyyy+F +HTKVAmgfRNk+AnAC8AQisN69oxooAIqBfKDo9H+fwjxfJfP0/1PYAOUAaEM9cBXwMXCbLRZobW1l +79697N27V+uzWo2mpiaef/75s6qDDzzwAGFhzlexL8LevXv517/+xbx58zAY5MSLZBwAo/IAnA6Z +CMCJEydEvnwO/xt5G3H6FY7ZKfAAfi1Z6o45ltSIueWu+py/12B+GFIheg1RDoB2tAJ3YPZ6nwTs +3zRuX34GxgAWzxwuKyvjmWee4bXXXuPOO+/krrvuomfPnlqfz2o0NTXx3Xff8eGHH7JhwwaLr2ev +We4KbZEpAszLyxP58nO9hZLTL4UTo2oAtMWEWSfgOly3JcUEvII57XELVswu19bW8uabb9KrVy8G +DhzI22+/TWFhodbnlWbHjh08+uijxMXFceONN1rl5g+qCLC9IFoEWFlZKdJK3Iw5LK9wIVQEwDFY +gDnX9T2QpPVmrEgNcDOw+Jxz9gL+au2Fdu3axa5du3jooYfo168fl19+OZdddhkDBw502GFKra2t +pKWlsWjRIr799luOHz9uk3WkujfU/d+p8PZ0J9jfR8hGMP9/EnCO8ZqKNqMcAMdhL9AP89jJm7Te +jBXYcfocmb/696cxi3H8ny0WNZlM7N69m927d/PCCy/g5uZGz549GTZsGEOHDmXIkCGkpKTg5mb9 +6XuXoqWlhQMHDrBp0yZWrVrFunXrqK6utvm6MrUDahqgcxEdGiA8Z0LQAXCKdgGFGMoBcCyqMT8x +LwfextzT6mwYgJcxt+ucT3TDBNyLubXnTzbfjMFwthjygw8+AMDLy4suXbrQtWtXunfvTrdu3ejc +uTMxMTFERUVJFc2dS0tLCydOnCArK4usrCwOHjzIrl272Ldvn00VFC+ETBunuv07F3YQAVIOgAui +HADHZB5mEYt/ATdovRkB0oH7+F+l8IUwAY8DFZgVu+xapdbU1MS+ffvOq2ro5uZGVFQUMTExxMTE +4OPjQ1BQEHq9nuDg4F/k0+vq6mhubqauro7i4mKKioooLS2luLjYofTVZSIAqmzQuVAOgEIG5QA4 +LkWYBS/+C7wG/9/evQdnVR54HP++uV8JuQK50KBECIhALSoW6qoVHKu1FDsu1kFbL63dcTu647q7 +dtbK4Bbb3WntrO4y2tVVWqfLytiFKq2Clxa5KcYqCM2FgCEkBAISciG3s3+cQFEx7/uc5H2f95z3 +95k5045znnPeJwSe3/tcucD2BxrGMdxx/f/A7QGI1ArgfeC/cbfstG5gYIDm5maam5ttf5RR46UH +IGThJEPxzssugIZLABUAAkirAOLfy7hzA27l48tw4kEn8GOgCvh3zBr/U9bh7uq1zXZlgspLD0DK +CIdBJLZisAtgbE8ek5jQ33J/GMT9llyFu5QuNifyfLajwE9wVyzcDxwe4fP2AfNwl0R2W65b4Hjp +AUhSD4CvxGAIQH8vA0gBwF/6cA++mAVcOfT/Y7mT1nbgdqAcdwLfaG7R2Qc8jDvU8XIM6xR4XnoA +kkL6p8FPTANAX1+f6Z4ZCgABpL/l/uTgniq4FBiPO1dgFaO/Z/YAsBX4B2AycBHwC6IbOuqABbhb +Jb8XxfckDE9DAMnqAfCLpFCIkrFme10cOHDA9PdCASCANAnQ/zqAXw1dSbjzBebgfpOeAZwPjI3g +OQ7QiDsp7z1gE+752R2W6vUbYC3uLokPAlMsfY541Q58AHwx3I3ehgD03cAvivKySU0x29fCcAIg +KAAEkgJAsAwCbw9dZyrC3XynBPfPPBf3L3Q/7uSeU6dx9UX8ptjV5zng17hbCf8t8GUSe5XaTuDn +uD0+i4kgAHjpAUjWHADfiMH4PygABJICQGI4PHTtsv1BPBrEXS2wDqjGnYfw10Cp7Q8WIz3Ai8B/ +4u4P4Zzx38NSAAi2GAWAiH7XxF/Uzyd+8wHwd0AF7kTIX+DumRA0g8CrwG3ABNxv+y/z8U36ohYA +QoPejh6W2BtfYH7WheEpgKAegEBSD4D41SDuRMiNuEMCs4GrcScQzgGybH9AD07gNvq/A17APSp6 +OBEFAE8bATkKAH5RWphnXEZDAAIKABIMDrBj6PoXIBV3qeTcM67P2f6QZ9GDu33y67iN/ibcY1dN +yoflqQdAAcA3yorHGJfZu3evye0ObjiVgFEAkCDqw92zYDvuhDlwV0LMGLouwF0dcS7uMspYOIa7 +xLHmjM/2PiObeBnFHgCd/OoXZYY9AI7jmK4C6MLbLp8S5xQAJFEcw13W+IdP/PdMYNIZVzFQyF9W +TuQDp75ipQHZZ5Q9jvsP40ncb0iHgbah/23F7cKvG7qORKFOUesBSArpPEA/CIXMJwEePHiQ7m6j +Hn1bS4ElyhQAJNF1466O8OMKiSgOAagHwA+K83JISzXbA8Cw+x/coCsBpFUAIv4VtSGAZPUA+EJZ +UdTH/0E9AIGlACDiXxH14/b2mswrdIVQAPCDCYUKAOKdAoCIf0XUA+AlACRpCMAXyovNlwAqAMgp +CgAi/hVRAOjpMd/ETRsB+kNpbHoANAcgoBQARPyrf+galpcAYHq4jNgRowBwzHY9JToUAET8LWzr +fvLkSeOHpqWl2q6XRMB0E6C+vj6amppMX9Nuu54SHQoAIv4WNgB46QHISE+3XS8JIzUlmeI8s3MA +9u/f72VZqAJAQCkAiPhbVHoA0tUDEPcmFOSSZDhZw0P3P0RnEyuJAwoAIv4WlR6A9PQ02/WSMEpj +swcAqAcgsBQARPwtKj0AGQoAcS9GEwBBASCwFABE/C06cwDSFADiXVmR+R4ADQ0NXl6lIYCAUgAQ +8bewuwH29vbiOGY7+6UrAMS9GA4BHLVdV4kOBQARfwv79d5xHOPdADUEEP/KYjMEMICGAAJLAUDE +36KyG6AmAca/MsNtgDs7O2lrazN9zWHcECABpAAg4m+dkdxkOhFQASC+ZWWkkZedYVTGY/f/Qdt1 +lehRABDxt4j2aTftAdAQQHzz0v3vcQJgi+26SvQoAIj4W0QntRn3AGgSYFyL4QTAVtt1lehRABDx +t4gCgHEPgHYCjGtlsQsA6gEIMAUAEX+LUg+AAkA8Ky003wNAPQDySQoAIv4W0RyArq4uo4empaYQ +MttmXmLIyxBAY2Ojl1cpAASYAoCIv0XUA9DREdFtp4VCIVJTkm3XTT5DeeyGAD60XVeJHgUAEX+L +qGU/fjyijoKP0TyA+DXBcBVAW1ubcQgcst92XSV6FABE/C2ilt1LAMhOVwCIRwW5mWQa/tl4/PY/ +ABywXV+JHgUAEX+LWg9ATma67brJWZR6OATIYwBoBvpt11eiRwFAxN+iMgcAIDtTewHEo4klY43L +eAwA+2zXVaJLAUDE36I2BJCjABCXyg3PAADPuwBq/D/gFABE/C16PQAZCgDxqMJDD0BdXZ2XVykA +BJwCgIi/nQTCnvXraRKgAkBcqvDQA1BbW+vlVZ66DcQ/FABE/C/s13tNAgwO0x6A7u5umpubvbzK +U2oQ/1AAEPG/sAHAyxCA5gDEnzFZ6cbHANfX1zM4OOjldZ7GDcQ/FABE/C/s13sNAQRDDMf/u3GX +AUqAKQCI+N9H4W5QAAgGLwHA4/h/HeCp20D8QwFAxP+OhLtBywCDwcseAB57ADT+nwAUAET873C4 +G06cOIHjOEYPzdYkwLjjZQ8AjwFA4/8JQAFAxP/CBoCBgQE6OzuNHqoegPgTwzkAO23XVaJPAUDE +/8IGADAfBtAcgPhTbngOQE9PD01NTV5epQCQABQARPwvogDQ3t5u9NBcDQHElTFZ6eTnZhqVaWho +8LIEcADYZbu+En0KACL+F1EAOHw4ottOy8vJIDlJ/0TEi8rxBcZlRrACoNt2fSX69LdbxP+iEgCS +QiHG5phtOiPRUzk+37iMxwDwvu26SmwoAIj4X1skN5kGAICC3CzbdZMhXgLABx984OVVCgAJQgFA +xP8OAmHX+HkKAGMUAOKFlwCwe/duL69613ZdJTYUAET8rxsIO8PvyJGw+wV9SqECQNzwMgdgz549 +Xl71lu26SmwoAIgEw4FwN3jpAVAAiA+pKcmUFY0xKtPa2uol9LUAH9qur8SGAoBIMIQNAIcOHTJ+ +qIYA4kNFcZ7xigyP3/63266rxI4CgEgwhA0ABw8eNH6oegDig5fuf48TABUAEogCgEgwhA0Azc3m +p7tqFUB8iOEEQAWABKIAIBIMYQNAe3s7J0+eNHqohgDiw+SyQuMyHgKAA7xtu64SOwoAIsHQGO4G +x3GMhwE0BBAfplaUGJfxMASwmwj3lJBgUAAQCYb6SG4yDQBjczJICoVs1y2hZWWkUV5idghQR0cH +H35oPJn/ddt1ldhSABAJhn1Ab7ibTOcBJCclqRfAsinlRcYhrKamxsshQAoACUYBQCQYBnBDwLC8 +HA07wXD9uYyuqRPNu/937Njh5VVv2K6rxJYCgEhw1IW7obGx0fihZYUKADZNrxxnXObtt43n8tUC +5stExNcUAESCI2wA2Lt3r/FDJygAWDW7qtS4jIcA8JrtekrsKQCIBEfYiYBeAkCpAoA1ZUV5jMvP +NSrT1dXlZRfA9bbrKrGnACASHDvD3eBlCKDCcAa6jB6v3/4HBgZMivQBr9iuq8SeAoBIcLwT7obj +x48bHxAzaYL5JjQyOj5fVWZc5vXXjSfzbwKO266rxJ4CgEhwHCGCHQHr6sJOFfiYgtxM8nMzbdct +4YRCcEn1RONyr732mmmRl2zXVexQABAJlnfD3bBr1y7jh07ycBiNjEz1xBJK8nOMyvT29rJ582bT +VykAJCgFAJFgqQl3w86dYacKfIqXvehlZOZfcI5xmS1bttDV1WVSpB54z3ZdxQ4FAJFgCdsD4CUA +eFmLLiNz2UzzAPDqq6+aFlltu55ijwKASLC8Fe6G999/3/ihMyZNsF2vhFJenEdVWZFxufXrjVfz +/a/tuoo9CgAiwdIADHsKTFNTE8eOHTN6aEXJWPKyM2zXLWFce0k1pmcwNTc3s23bNpMiDYCnPYMl +GBQARILnD+Fu2Lp1q9EDQyGYM7XCdr0SQlIoxFfmVhuXe+GFF0wPAFoNOLbrK/YoAIgET9hDXTzM +FOfyWefarldCmDO1ggkFZrv/AaxZs8a0yHO26yp2KQCIBE/YnWDefPNN44fOm1FJWmqy7boF3qJ5 +043LHD16lDfeMDrM720imDAqwaYAIBI8e4DW4W7YunWr6XaxZGekcfWcKbbrFmgTx43litmTjcut +WbOGvr4+kyJP2a6r2KcAIBI8DvDycDccP37ceB4AwJIrZ9muW6DdsuBCkpIMZ/8BTz75pMntPcCv +bNdV7FMAEAmmsAPCzz//vPFDq8qKuEiTAaOiJD+Hay6ealzuvffeY8uWLSZFXgCO2q6v2KcAIBJM +64HO4W5Ys2YNjmM+CVy9ANHx3esuITXFfI7FE088YVpkpe26SnxQABAJpm7C7PHe2Nhoum4cgC+e +X8nEcWNt1y9QplWO41oPS/96enr45S9/aVLkHeA12/WV+KAAIBJcYfv4V640/zKYFAqx5IpZtusW +GKEQ3HfjZSSZ7vwDrFq1ivb2dpMiP7VdX4kf5r9xIuIXucAh4DO38MvMzKSpqYmCArPT/rpP9vHV +HzzN0Y5u23X0va/Nm84Pbr7SuFx/fz9TpkyhoaEh0iIHgUqg13adJT6oB0AkuDpw5wJ8pu7ubp5+ ++mnjB2emp3Lrwi/Yrp/vVRSP5d4b5nsqu2rVKpPGH+Ax1PjLGRQARILtf8Ld8Pjjj5tuIQvANy67 +gHH55jvWiSslOYnlty0kKyPNuOzAwAArVqwwKXIMNwCInKYAIBJsa4FhD4ivr6/nxRdfNH5wWmoy +d3zlItv18617bpjv+Zjl5557jj179pgU+SluCBA5Tft6igRbLzALGHZ/2YaGBm6//Xbjh59XUczm +Xfs5dOyE7Xr6yje/PJvbPYanrq4uFi9ezEcffRRpkWPATbgbAImcph4AkeD7dbgbtm7dysaNG40f +nBQKcf+Sv/I0gz1RXXVhFd9fPM9z+Yceeoh9+/aZFPk39O1fzkI9ACLB1wjcDaQPd1NTUxO33HKL +8cOL87I5fLyLD/Ydsl3PuDd/xiQevv1qUpK9fffavXs3t956q8k5Di3AzWjyn5yFegBEgq8b+E24 +mzZu3Gi6pexp3188j/LiPNv1jGvXza3mX+/6CmkedvsDcByHu+++m95eo7b8AdzVICKfogAgkhjC +DgMALF++3NPDs9JTWfatBSQn6Z+Us7ll4YX889KrRvTzeeyxx3jllVdMirwFPG277hK/NAQgkhga +ge8BWcPdVFtby+WXX05lZaXxC8bl55IUCvHWnibbdY0b2RlpLPvWApZcMYuRTJN49913ufHGG+nv +74+0iAMsAYwmC0hiUQAQSQyDuLvAzQl3Y01NDXfeeSchDy3W7Mll7D90lPrmI7bra92UimIev2cR +syeXjeg5nZ2dLFy4kJaWFpNiq4BHbf8MJL4pAIgkjibgu+FuamlpYdKkScyaNcv4BaEQzJtRyZZd ++2j7qNO4fBCkpSZz2zUX8cNbr6IgN2vEz7vjjjvYsGGDSZE24HrC7P8gorU7IollOxB2D9+ioiJ2 +7dpFcXGxp5e0d3TzvZ+toe5AYvUEzJlSzv1LLqdyfP6oPG/ZsmU8+OCDpsVuIIKDoETUAyCSeK4L +d0NXVxctLS0sWrTI0wsy01O54vNVvLlzX0IcGDSlopgHbr6Sv/napYzNyRyVZz711FPce++9psWe +Bx6y/fMQf1APgEhiycKdGFYUyc3r169n4cKFnl/W3tHNvY+v5f29RuPXvnFeRTHfufZivnTBOSOa +5PdJL730Etdffz19fX0mxQ7i7vqoDRkkIgoAIonnh0BE/cqlpaXU1NR4HgoA6O0fYMWvXuX/3txl +u96jIjkpifkXTOKGL83g4uqJo9rwA7z88sssWrSIzk6jORSDwELAaJ2gJDYFAJHEU4jbC5Adyc3X +XHMN69at87Qq4EyrX/8Tjz7/R3p6I17KFlfG5efy1UurWTTvfEryc6LyjtWrV3PzzTebbvYD8APg +Yds/I/EXzQEQSTzdQBkRLAkEd2+AMWPGMHfu3BG9dHrlOK6eM4V9rUf5sC3ig2ysKsrL5rpLp3HP +DfO55xvzmTOlguxM8+N7I7Fy5Uq+/e1vm6z1P+V3wF24a/9FIqYeAJHEVA78GYhoxlpKSgq//e1v +WbBgwai8/Pdv/Zkn1m1jb0u77Z/Dp0wuK2TutM8xb0Yls6vKon7Q0cDAAA8++CAPP+zpC3wtMBdI +rOUWMioUAEQS1wrg/khvzsvLY9OmTUyfPj3SIsMadBxeq2ng6fXb2WXxIKGCMVl8vqqMudMmMnfa +56LWvX82ra2t3HTTTZ5OYsRt9C/FDXIixhQARBLXWKAOd05ARCorK9myZQvjxo0b1Q/y5w/beGVH +Ha+8Xcv+Q8eiVuFQCCaW5DPz3AnMripj5rkTmFgyNmrvG84bb7zBkiVLaG5u9lK8F7gaeNXKh5dA +UAAQSWz3AT82KXD++eezYcMGSkpKovKB6puP8KeGg+xsbGVXYyv1ze0MDA4aP6dgTBaTxhdwbmkh +k8uGrtJCsjKiM4YfqZ6eHpYvX84jjzziZbwfYAD4JhEe8CTyWRQARBJbGrADMOrXnz59Ohs2bBj1 +noCz6esf4GhHN20fdXLkeBdHO7oYGPz4fLfkpBD5uVkUjcmiaGw2BblZpCTH38mEGzZs4K677qK2 +ttbrIwaBbwHP2K6LiIj438VAP+4s8oiv6upq58CBA46Ed+jQIWfp0qVOKBQy+hl/4hoEvmP7l0VE +RILl53holEpLS51t27bZbl/jVkdHh7NixQonLy9vJA2/gxvQbrP9SyIiIsGTi7s5kHHjlJGR4Tzz +zDO229q40tnZ6Tz66KNOSUnJSBt+B/dUP2+HMoiIiETgEuAkHhqpUCjk3HfffU5PT4/ttteq1tZW +Z/ny5c748eNHo+F3gHZgvu1fDBERCb7vM4IGa9q0aQk5JLBjxw7nzjvvdDIzM0er4Xdw1/dX2/6F +EBGRxPEMI2i4UlJSnAceeCDwvQHt7e3OE0884Vx66aWj2eifutYC+bZ/EUREJLHkADsZYSNWXl7u +rFy50unr67PdVo+a7u5uZ+3atc7SpUudrKysaDT8/cA/oiXaIiJiSQWwl1Fo1KZOneqsXr3aGRwc +tN1+e9LW1uY8++yzzpIlS5wxY8ZEo9E/de0FLrP9By8iIjIZaGaUGriqqirnkUcecVpaWmy36cMa +GBhwtm/f7ixbtsy5+OKLnaSkpGg2+qeuZ3B7XkREROLCDOAwo9jYpaamOl//+teddevWOV1dXbbb +e+fkyZPOpk2bnBUrVjjXXnutk5+fH4sG/8yJfqNzxKKIIY0ziUg4c4Df4x4eNKoyMjKYN28eCxYs +4KqrrmLmzJmEonj87uDgIHV1ddTU1PDOO++wefNmtm3bRnd3d/R+emfXBfwI+Anu0kuRmFMAEJFI +TAdeBCZG8yWFhYXMnj2bmTNnUl1dzaRJkzjnnHMYP348GRkZET3jxIkTtLa20traSkNDA/X19dTV +1VFbW8vOnTs5ceKEzZ/jIPAc8ADuxksi1igAiEikJuAuT7vQxstzcnIoLCwkOzubzMzM0/+9v7+f +jo4O+vr6aGtro6enx/bP6bO8Avw98I7tDyIiImIqB3iW2I2R+/0aAH4DzLX9ByciIjIabgVOYL+B +jderB/gvYJrtPygREZHRNhXYiv3GNp6uOuA+oMj2H46IiEg0JeGeUX8E+42vrasdeBK4cujnISIi +kjCKcBvBfuw3yLG4juPOhbgWSLP9wxcREbHtPNyx717sN9KjfR3GXcK3GPjLMgQRERE5rRJ4HOjE +fsPt9ToJvAb8E/AF1L0vIiISsVzcFQMbcZfE2W7Uh7v6gO3Az3C79rU3vwSaNgISkViZCNwELMRd +F59u+fN8BLwJbAb+CGzD7bEQSQgKACJiQyZuCLh86JoFZEfxfW1AzSeu3bhb84okJAUAEYkX5biT +CKuG/vc8oBgoAAqBDCDrjPv7gQ7cRrwNd5LeYeAQsB+oP+Nqt105ERERERERERERERERERERERER +ERERERERERERERERERERERERERERERERERFJKP8PYkYH/DIvWIEAAAAASUVORK5CYII= +" + id="image13044" + x="74.692276" + y="130.02034" + style="stroke-width:3.97671" /> + <rect + style="fill:#ffffff;stroke:none;stroke-width:1.265;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:0.73301107" + id="rect13086" + width="130.82137" + height="113.0019" + x="32.462914" + y="73.501602" /> + <image + width="57.52919" + height="57.52919" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAMAAABOo35HAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ +bWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp +bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 +eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0 +MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo +dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw +dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv +IiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RS +ZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpD +cmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIFdpbmRvd3MiIHhtcE1NOkluc3RhbmNl +SUQ9InhtcC5paWQ6RDJGNjUxMzYzRkI5MTFFQTgxMTFCMzM0MTU3RjA5QjciIHhtcE1NOkRvY3Vt +ZW50SUQ9InhtcC5kaWQ6RDJGNjUxMzczRkI5MTFFQTgxMTFCMzM0MTU3RjA5QjciPiA8eG1wTU06 +RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpEMkY2NTEzNDNGQjkxMUVBODEx +MUIzMzQxNTdGMDlCNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpEMkY2NTEzNTNGQjkxMUVB +ODExMUIzMzQxNTdGMDlCNyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1w +bWV0YT4gPD94cGFja2V0IGVuZD0iciI/PhMrP1wAAAGAUExURWOmTOnp6pCQj1GYO2hLIm1tbfl6 +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 +MNJGE1brA6mS/l65sLZFnYpfQPusDlhpYAWGh5M16oXJPzeXD+sfKdUi3Jnsr5u1Xi+t3A0r2xOW +hevKPOaka8Kq0LomVIRmJNkyWudZWKpF0e97rpU+qJW0IXqj7bPcSjHXea79RbBaSkKtlHN0M9HU +7IsQwKq3d/D0xbDkfPhasKDXNjUhuF8x4uzUhectS3LadbIlttXsupl0eDQ211V51fZZXWlSOU+1 +9+aSyrliXVY6uqM9UpFuDItim5Fhh4M/Awtv1vVgNcod3hXPdm9J1x6WFS5eOE+jONqw0vVsl7hp +Soe0IrcbVxKsHaM6STRZM532JVsqNxalat3dnD8Kn0fYhHVNy4JbauW61Ljcqos/a1lqIxxJXw1W +t7hp6Sw672y3nLV7VAcPF6ZqWYfY/AwlT9083InozLlcR+pOzdXjpZLcCiiuDashZbpiPbe9XlZ7 +WtalsOT8FWAVuzKlPSYkValStgjNGLj3mSBXg9VUuvauZAYYb87qFNM3hoW7uCppd2eoZyGutYdl +FdM9Zx4URSbDw3dgcZnuTGnvlGFzgCbf48awLHqPK3SuslQx46ZS9M1hoXPNiJy9PXanI2R+87zP +qmiJD3eqfmbmIeMkfeq7sKgrZWH0MSfdW2tdDZZa1C/H7ujcLxVvUThiv7llgWulLM6IKNtbs+pE +4/QYDTd0WJFsrdzdSLbnB8HK2W8NS21kdefiPnfy8q1g6Uon64zE080kEE4GX6yz0rRF6lU+dFNY +Zx7NpfUE121gVZojN+bhunOzxYth6TU1BbYFa/M8LC2BbqnrXzOCUUrbslrDVjjuvkxe3wiWuhmh +c1RX+rygp3csN++GoIlKrYoKUiDT+sbhS2DVWL1vNTdbU3Nnu6GeLpb0WVWARXVZVq01j6T5xtOu +OoR28v8msFS8mVxEU/zkt54VO+XytdvAUlupnwLXNSRaNWXZE1alrn92c2eVsG4/TVgWfdBRcTs8 +/Z5SHZaV7th2Wefsjnfss2QV6GxXpvRasMKYk3Wn4y1RpX97HMfKt4HVkRp32+N03kompDccgpy+ +WGc1x4U0S7Y/ppys/bRTlDpKspDT+5kjpZcZEFg5penvw5YM5mDAEwjNK9HLzaicwKXTrOZdbgBL +ddj1rB8byedyuQwtF5oxcDas3gYWVjK1g5OUjLGZ3BZJPWE1rM3cG+uw5pyC0i5TAV9E+pqbo3PA +PZtpxXZ4VVIzdE/HBdYO1tYgA567OSeeyVlzmTr5dwFo3Ww0lNiO6+G4dnBYYDfKN44N9Vaj7ReX +HPUMpEHkFVpZtQ41pWUdLLrLBvBxPUfs1u+pGu4KpRQnZjQkR8u2C/aUvfnOaZKtuwGsSt19waUU +exvWdWBJtYjivohVSsj1gCVZlTPPK7hbluVsX3uTo1106pK9K7qBIRBNq9zrbmEZg9qasLhEwZ/v +hpa6vWf+hr5oWubqsODDwpl4z/xQwS4LTgumSnVrAQ+puSKp2FWCWpC1rlSoo2WJZ5KUbjubb97T +pq/V1VeGjFhU5OzHu9N4aWp7jk3shtWsKVUyvdaElCNc+lzJpxzJXbT3+XVWWEBPsBRL9kJHjRyZ +Mk6VhEy2HNZqSgtYSon6otGkVWjNLtvjGdqOU1ukG+J37XgveB/R2U6wWOWO17FODUElD+OJu2uG +wbFJBtacTObPelgWaT0dPFkspnS84WnzDRu3hwWyqEJZi+1gzk2KocVIJmfRD7kp0wrO6aXqel5d +xd3siDm40fwyWauAT1AiOOckwXgmayzdhTTHRpyW9nx3xVrXX0fuRViTZZQ1Etfpu9N2TozkN/W7 +JKbs+MZnplQsIu4YbldYZ09RCmLYScf1YgH4hvAd4A0vnA677npDMlFVFESyaAALksiBQFSz8ESy +5MmpAc72dw5vOgR4NivSGauFgm9XpOmi7hUqlpxDEONxeCeh6Nwsdy5jqVgcdRZ/Ql7XFJ+VMr4C +H2frtGMjW9PnACvZDH5w8Yy7qcCXLUYixfwFLhuGEvgKNH6Q9h2ytUuW0lx7caaq1TBlrdA2s5Za +GZNDnaFLmAS37Y/EPKRlE56LZyxJ+hN0Q1TRVsl7ZS3l1txnO99rseqvUztSHa1X1Lpeon/wWbOQ +wpevJoKvV6FqWe1qzn6H28LSCtgqlYo2u1s5s4URWQMjdT2ID1XIU/VEQ+fPyQ8rPd5I/xztdWrj +/NuFz9yk5gerje98nx4FU/r1VL6zsfNNt1e5NI12wbMvCPYvzcf1/ol6yw0aLrqaH1JFYzQDlgHL +gGXAMmAZsIxmwDJgGbAMWAYsA5bRDFgGLAOWAcuAZcAymgHLgGXAMmAZsAxYRjNgGbAMWAYsA5YB +y2gGLAOWAcuAZcAyYBnNgGXAMmAZsAxYBiyjGbAMWAYsA5YBy4BlNAOWAcuAZcAyYBmwjGbAum77 +/wIMAMjwwmKcHMt1AAAAAElFTkSuQmCC +" + id="image13664" + x="181.2438" + y="110.06655" + style="stroke-width:1.37973" /> + <image + width="30.972841" + height="42.781239" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 +AElFTkSuQmCC +" + id="image13722" + x="297.28098" + y="115.33748" + style="stroke-width:1.45791" /> + </g> +</svg> diff --git a/doc/talks/2023-01-18-tocatta/assets/slidesB.svg b/doc/talks/2023-01-18-tocatta/assets/slidesB.svg new file mode 100644 index 00000000..c0a6e97c --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/assets/slidesB.svg @@ -0,0 +1,444 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="1280" + height="720" + viewBox="0 0 338.66667 190.5" + version="1.1" + id="svg5" + inkscape:export-filename="slideB1.png" + inkscape:export-xdpi="96" + inkscape:export-ydpi="96" + sodipodi:docname="slidesB.svg" + inkscape:version="1.2 (dc2aedaf03, 2022-05-15)" + xml:space="preserve" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:document-units="mm" + showgrid="false" + units="px" + inkscape:snap-global="false" + inkscape:zoom="0.77058782" + inkscape:cx="408.77885" + inkscape:cy="376.98494" + inkscape:window-width="1678" + inkscape:window-height="993" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer2" + inkscape:showpageshadow="2" + inkscape:deskcolor="#d1d1d1" /><defs + id="defs2"><marker + style="overflow:visible;" + id="Arrow1Mend" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true"><path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt;" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path12266" /></marker><marker + style="overflow:visible;" + id="Arrow1Lend" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"><path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt;" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path12260" /></marker><marker + style="overflow:visible" + id="Arrow1Mend-3" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true"><path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path12266-5" /></marker><style + id="style2">.cls-1{fill:#3b2100;}.cls-2{fill:#ffd952;}.cls-3{fill:#45c8ff;}</style></defs><g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + sodipodi:insensitive="true"><image + width="26.416821" + height="26.416821" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAA GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAIABJREFUeJztnXd4lFXa/z/nmZkk k8ykRzoJASmGZgGUpiFUlXVfWXF17fXddXVFwLa7btz3/bEi2HVd31V0Lbsr1hVFkUCUJiKK0kRa IIChpE9mUmbmOb8/QKWkzMzzzDzTPtfFdYXMPOd8CfnOafe5b0GcoGAvmZOlKAl5XtQ8oSp5CNkZ RDbILODYH5EIMu3YIwlAyrGvnUDL0S9FHchmoApkJYgqoApJhVTkXpOkTLrNe+on31Ud2n9hbCCM FhDppJQ83gncgxTEEAQDJXKwgD5Aaoil1AM7QGxCyk0qbBReNjZMmn04xDqiirhB/GHhQpMte3d/ gXkUUo5GMBpJL6NltYukAiG+BLkKVax21DSsY3pxi9GyIoW4QTrAXvJIX4GcIhU5GckYfpoGRSpO YIVAfoiXj+on3r3DaEHhTNwgJ7NwocmWWTZWUUzTpFSngMg3WlKQ2SXhQ1TealjtXEFxsWq0oHAi bhCA4mLFPso2Ugp5mYDLEHQxWpJBVAGLVcnLzlXO5XGzxLhBrEse6WEyqzcANwjoabSeMGOvlGKB 1+Rd0Fh4z36jxRhF7Blk4UKTPbN8KsibEEwGTEZLCnO8SD5C4e+Oytz3mT7da7SgUBIzBskpfcbW JBuvRMqZQF+j9UQmYg/Iv5kU83O1hTNqjVYTCqLeIMkfz+1qMil3ALcC6UbriRJqQDzntZiedI2d UWG0mGAStQaxl87PRpWzgDsAq9F6opQWpHzJm2ApjlajRJ1B7CVzsoSw3C5hBqE/zY5VnFLygsQy xzn+zkNGi9GT6DHI4icT7QlNv0OI3xM3hlHUgfxfR5XryWg5rY8Kg9iXzZsKPAb0NlpLHAB2SuT9 DUV3v2G0EK1EtEHsy+f2E1I8IxFFRmuJcyoSuVTxclskh7NEpkFKi82pXtttUsj/R+THRkU7TQLm 1lc550TitCviDJJS+vBQRRXPA2cbrSWOX2wUqDfXF92zzmgh/hA5BiktNqeqyX+SiPuIn35HKl4h mVNvcv6ZwmKP0WJ8ISIMkl76lzyvan4VGGW0ljh6INYJr3pVJKxNFKMFdIR9+cM3eFXzJuLmiCLk cGkSX9pL5l9rtJKOCN8RpLQ4yS5TnkZyo9FS4gSVVxxW062MvKvRaCGtEZYGsS55pIfZLN8EOdxo LXGCj4QNJg/T6ibNLjNay8mE3RQrrWT+BLNZ3RA3R+wg4EzVzLqU5Y+E3XlWWBnEXjLvRlXIDzia FidObJGtSHWJbdnDvzZayPGEx3aplCJ1rK0YwaOEi6Y4RqAIxEUJ10zMbMkf9TGffCKNFmT8GmTx k4m2xKYXBeIKo6XECSMkbzmSTVcbvXg31CCdlsxLabTwrpSMN1JHnLDl08REdWrl6HscRgkwzCDp pY+le1XPB8BIozTEiQi+EG7TZKNSqxpikNSPHs2UFvXD+E5VHF+QsAGLe1LD2PuPhLrvkBvk2FXY UmBgqPuOE9FsRhGFjsJZlaHsNKTbvBlLH0pDlR8RN0cc/xmIKkvSVv4lI5SdhswgXRcVJ3sU0yLi YepxAmeI2mxanFP6jC1UHYbGIKXFSY5k2/vAmJD0Fyd6EeLcZtX5LoufTAxFd8E3iJTCJpOfB1kY 9L7ixAQSUZSa2PwyUgZ9DR30U2v7+fa5QhJW4QNxooKCpLI15uaXly4PZidBdaB92fybQP49mH3E iW0k8jcNRXc/G6z2g2aQtJL5E1QhFwPmYPURJw7gljC5oWh2UEaSoBgkY+lDPT2K6UsgOxjtx4lz EtWKh3OCcZ9E/0V6aXGSR5jeIm6OOKEj02vmLdY8qnsOZt2nP3av7RmEPEfvdiONkendmZSVT8+k VJJMZpweN07VTa27CZfXzeEWJzsba9jhrOZgi9NouRGPgDPtLu/fHKDrPXddp1j25Q/fgBQv6Nlm pNE/JYun+k9iRFpXn59xeFrY2VjNhvpDrKzdx8qacg63uIKoMnoRiGvqi2a9ol97OpG27OHeKmID YNerzUhjRFpX3h7yC+zmBE3tSGCbs5IVNeW8c3g7n9Xux/CbQ5FDg/DKs/RKKaSPQUqLzXZv8kqE OFeX9iKQnIRk1g6/jpyEZN3b3ttYx78ObuX1Q1vZ5arRvf0o5AtHWuoozrnVrbUhXRbpqWryn2LZ HAB3550bFHMA5FrTuLfXeWw490YWn3U5RZl5Qeknihhmq6u/X4+GNI8gqSXzh0khPyOG75KbhcLO 0b8m0xK6QlabGo7wdPl6Fh7ailfGJ2Ct4FGQI+qK7v5KSyPaRpDSYrMq5HPEsDkA+iZnhtQcAINs OTx3xhRWD7+WsRnxCtatYFYRC1j/nEVLI5oMYlNT7hFwppY2ooHsIE2tfOGMlGzeP3M6LxRcROeE eCWIkxhir6+/U0sDARvEXvJIXwF/0NJ5tFDraTJaApd1GsCX597If3c/C0UYn6wmbJA8mFr6aJ9A Hw/YIEJ4/wokBfp8NLHDVUOjV/OGiWbs5gQe7juOt4ZMC9qGQQRildL7VKAPB2QQ+7J5/xUve/YT jV43H1TuMlrGjxRl5rFq2DWMyehhtJTwQDI5dfm8iwJ51H+DLCxOAOYG0lk0M6dsNU1q+NSE6ZJo 472h05mVN8JoKWGBlDweyC1Evw1iz0qZAZzu73PRzk5XDbd9uwQ1jLZcTULwQP4Ynug/EVN8XdLH ntB8m78P+fVTO5ayZxfxOuRtMikrn6cHTKJTmO0oLTqygxu3fBBWo5wB1Aq3qbc/Sej8Or9IvHpC MYJx/uuKHXY11rDgwDccbHEiEHiRmIRAQWASxiXT75eSxXnp3XjvyA5aVK9hOgwmCbPqbfmH79d0 fR5BbCvm5Ai3ZTcQspQr0YZFKKSZk8i1pnF6cgZ9kzMZYu/EyPTupJg0nWf5zMqafUz75q1YHkmc 0kN+w6TZh315s+/3Qdzm3xM3hybcUqXS7aLS7eLL+oofv28WCmendmZcZh7TOw2gd3LwcqONyejB CwUXcc3m92I1RCVFmJkNzPblzT6NINZlj3Yz491J/NwjJAxP68oVnQu4svMZWIM0srz0/UZ+t+3j mAyjl+CS0pLvHH/noY7e69MaxHrdhD8A52tWFscnDjQ7WFK1m39UbMIrVQbaTiNR0Tfcbai9E27p ZU3tAV3bjQQEWBShNvuSMqjDESR71Vx7c7NSDqTroi6O32RYkvhj/mhu6DpE1zASr5RM3bCQVbX7 dGszgqhJUpJ7Him8raG9N3W4rdLSrNxI3ByGUuNu4q7vSihc/xobHAd1a9ckBC8UXBSrYSkZzarr uo7e1L5BFi40SeTteimKo40NjoMUrf8nfylbo9uBZJdEGwsKLo7Jg0QpuIuFC9udu7b7ov3WEZcg 4mlDfcVuTqBroo1cazq9kzPol5LFEHsnelnTsQgTlW7tiRhUJKtq9/Gl4yDjs3qRrMMiPs+aRpW7 6YSdtRghIzG5bn3Ly0u3t/WG9rd5hbxZd0lRQJJiZlhaF4baO9EnOZM+1gxOT8ns8D7GnsY6Ht37 Oa9UbNK8xbq0qozC9a/y7tDLyLdqnwE/kD+a945sp6K53Sl5NHIzsKitF9scV62lc7ubVWUPMX5b EEARgmGpXTg/oydjMnoyIq0rSUrgKcU+rtrNtZsX4dQhRL5TQgpvDpnGEPtpmttaePBbbtr6geZ2 IgyPB1NeY9FdrW7ntbkGsajKTcS4OQakZPPn3mPZOvJWlp59JX/IH835GT01mQNgYlY+zxdcpEtK mUMtTi7e8DqbG7SX77us84BYvL5rNuG9rq0XW/8/Ki5WbGNSygTE3E/Lqpi5qstAruk6iCH2TkHt 64Yt7/PmoW26tNU5IYWlZ19JrjVNUzubG44wat0/YusAUVDmKJzVGyFO+We3OoLYxthGx5o5bKYE ZuQOZ9PIW3ik3/igmwPg9p76ZWg92OLk59+8SbW7UVM7A205TMnurZOqCEHSy75sfqtpq1o1iCKY HlxF4UOyycJ9vUayddQtPNh7LKeF8ExgqL0z2Rb9+tvlquGWrR9q/vSfnRd7Kc5kG7/zpxqkuFiR qrw06IrCgJ/lnM76ETdwX6+RpJtDH2YmgB5J+l6t+bhqN0+Vf6GpjbNTu1CYmauToshASC6nuPgU P5zyDduYlAsQdAmNLGPoZU3nzSGX8uqgS+ieZGwqYa9UdW/zwV0r2djgUzR3m8zMjbGruoIu9tHJ o07+9qmOESKqR48buw3h8xHXMTEr32gpeKWkvKle93bdUuWObR9rOm0fk9GTPI0L/khDCqad/L1T DCKlnBwaOaHFbk7gpYFTeazfBM3btHqxtu5A0HJqfVV/kFcqNgf8vAB+2fkM/QRFAAJxyu/+CQax lzzSF4i6LYyh9k6sHHYNl57Wz2gpJ/DI3s+D2v6Du1bi0nAY+cvOBcGt8hp+9Etb9vAJv/8nGEQg p4RWT/CZnN2bJWf9UpdwDD15rWIzJVW6l9Q7gUq3ixe/3xjw8/nWdIb5UQgoGvAKZdLxfz/BIFKJ runVVV0G8s9BlwTtVl6gvPT9Ru7Y9nFI+nqy/AuaNSRpuCSnr45qwh8hOWGQ+MkgpcVmJKNDrihI zMgdzjMDJmM2MJPI8XilZHXtfi795i3u2PYx7iDsXrVGRXMDb2k4rY+90BN5AaXFPy5Sf/wi1Ws7 UwoZFUkZ7u11Hvf3OmXHLmiox3ajdrqq2e6qZndjLS6vG6fXTa2niWp3E+VNddS4jUly/a+DW7iy S0FAzw6y5ZBlsVKl8YQ+grAle+yDXLABjg93FzJ0v1FB5KZuQ0Niju2uapZX72FFTTmravaHRYb3 tlhRU055Ux09k/zftlWEYFR6d947okvJv4jArKijONkgEiLeIBfn9GFe3+Dl1K5xN/Huke38++AW PougZAcSeOfwdn7Xc1hAz4/N6BlTBuGoF56GEy9MnWeMFn0Ym9GTFwumBuXq6E5XDY/tXce/D24J 2dpBb0qr9wZskME63DWJKMRPg4UCkFL6cGegm2GCNNIl0caLBRfrnhqnvKmOG7a8zzmfL+CVik0R aw6Az+oOBLybdXpyps5qwhsp6WFbMu80ODaCmFUGR+p/vSIEz51xoa6ZOdxS5YUDX/PgrpW63PoL Bxq9btbXVzAqvbvfz2ZZrGRarH6F0gvgrNQuDLLlkGZO5IjbxdraA+xurPW7f0MwMxBYbgZQpTKI U++KRAT39xrFBTpuRW5uOML1W97nO2eVbm2GC1sajgRkEIA+yRmsq/PNIL/o1J8H8se0Gsv1We0B 7t/5SdgniFBgMLD86CGBIgcZKycwxmT0YJaOUacvfr+RovWvRaU54OjOW6D4Ms0SwPy+RSwouLjN QMfz0rvx8dlX8KsuAwPWEgqkFIPg2BRLSgZFWsxNgmLisX4TdMk06DkW/fqqhuC+SGCHBoNk+VDm +u6887ile8dFjy1C4en+k/i+2UFp9d6ANQUVcXTQUAAEBFwF1Ch+13MYfXVYPDarXq7bvCjqzQGw t7Eu4Gft5oR2X++ZlMYsP24imoTgiX4TSdB5Y0VH+gAo9pI5WURYxahca5ouUyun183Pvl4YM3v8 Dd6WgJ+1mdo3yA3dBvu9i5hnTWNcZl7AmoJMRnrpY+mKoiTkGa3EX/7Sp1BzAGKL6uXKTe9G1IGf Vhye4BnkgozArugWBvhcKHDjzlO8Kr2MFuIPg+2ncVGOthmhKiW3fvth+M5/g0Sj6sET4FmOrYMP pK4BXl3uZvCV5/ZQVNFLERC+Fm6FWbnnar7E8/CetZoiXCOZygCDDh0dTM8yDEh6EWyEEHkKQnY2 Woiv9E3O5Gc52ipQr6rdx9w9a3RSFHnscAa2k7XTVdPmaxahBBzF0KBh2hdspJSdFBDZRgvxlbty R2ja1q1yN3Ljlg9itTYfcLQctL+oUvJB5c42X7d1sMPVHg5vc8DPBh1BtgIyy2gdvpBuTmJap/6a 2nhg54pYzF5+Ai9XbPL7Z/DmoW3samcE0TK9agjnUB4psxQgIkaQX3TqrykYcW3dAV6t2KSjosjE 5XVz3ZZFPtdK39tYxz072i/lp6Uqr5adtaAjRLYCRESoppYUNKqUzPyuJLYSMrfDZ7UHuGzj2x0G H35Vf5DJX/27w9uEWg5s9zfrnxdMNyRZZiKg9rnW7BrvV+5kkw7lAaKJ0uq9nLV2Abf3PIdpp/X/ MXZKlZIv6it4pWITr1Vs9mm9piUcvr3Fv9FISDEDga+wQsT0zgM0be3O37NWNy3RRLW7kQd3reTB XSuxmixkmpM43OL0+96Llg8vLfFhwUYgEyPCIIGe0sLRT8qvHR3Wi495Gr1uDgSwYM60WClICWwZ e7DFGd5rEESCQpgbxGqycHZq4Lm0X44vzIPK2IweAW+9bw/zawUSEsPeICPTugW8e+XwtLD4SNv7 93G0M0lDEvB1dd/rqER/xDGDhDVaEpe9ffg7GlWPjmriHI/VZOGS0wLPvLiiplxHNcFBAcJ5Eshw DQvAj6t266gkzslMzenTYZRvWzSrXj4P8xFEQnPYGyTQPXb1WKrPOMHj6i6B39T+vO5A2I/uItwN kmZODDhbycaGw34XtDQLha6JNlLNiQH1GUucc6xufKB8UhMJVw1ki5kwNoiWA6gvfMyaIYBpnfpz XdfBjEzv/mOy64rmBhYd2cHj5evY3+QIWEe0oqXQpwTdyl8HE4loNgNhG72nxSC+hHVnWJL4x8Cf tZo2qEuijVu6n8nVXQfx22+X8MahbwPWEm2cae/MZA2loj+r3c8eDffjQ4UApxkI283obkmBR8F0 dEJrVcy8PWRah2csVsXM8wUXAcRNwtFEffP7FWmKbPj3wa266QkylQrISqNVtEWgOyQAuxrbj/H5 ff4onw8gBfBk/4l0TkgJWE+0cH3XwQzTcHDbpHp45/B3OioKKpUKiLAdQewaFsvt1eJINyf5lL/p eFJMFn7b85yA9UQD3ZPsPJA/RlMbbxz6ljpPGF+SOgFZpSAJ4xEk8Mwl7eXUHZ+VF1Cl24s1XveN ZMxC4YUzLibDEvjlKK+UPLZ3nY6qgo1SqYAI20i+QKdYHWXv6Jsc2CXKvKQ0LGFS0i3UPJA/mvPS tRUAeOvQtrAObz8ZITisSEXdY7QQvantoNRZSoAjkyKETyk4o43pnQfwu9zhmtqQwKNBLnutN1Kl TDGh7DFaSFt83xzY+cOBDp7TkmEwRUOCgkhkYlY+zw6YojnV0tuHtrHVGbaz+VZRFVGmyBYluMW6 NbA8wMRuy6r3tPt6MFNwRhOj0rvz8sCpmqeVTq+bP+z8VCdVoSPB696j1E++qxoIy1ObkqqydrNp tEaT6uHl79u/A6IlF1NqjIwgF2X34e2hvyBZhxrzc8pWdziqhyE1NRPurfvhoyEsL024pcpd20v8 ymM1p2wN+5raTwSgJdVMj6SIyvMdEDd2G8Krgy7BGsBO38lsdVbyt31f6aAq1IgdcKz8AYiwvXZX Wr2X325b4lOammf3fcUTPmwjVrpdAeuJ5np9ySYLfxswhcf6TdClGKpXSu7ctjRCazuqG+GHKrdS btK8Cgsir1Vs5ltnJXP6XMDIVkqI7XLVULxrJf85st2n9rRsNUarQQps2bxYMJX+KfrlEXyobA1r 6yIze74QRweNozUKYWO47+7/kKOplzWdc9O6cVpCMjWeJjY5jvC146BfOa8ONDto9LoDKqEw2BZd JZGtJgt39hzGzNwRuhazWVFTzvy9kZtNRlXVnwwiEtzf4Na+GAsFZY21lGmslKpKya7GWgbacvx+ Ns+aRo+k1A7XOeGOWShc1mkAD/QeTbdEfUsQHGxxcsOW9yM7B3KCdzMcW4M0jL3/CBBT1++05GPS ck/eaBIUE9d3HcxX597Ic2dM0d0cTaqH6zYv4nBL4Os8o5FQfswT/DizEhBTNQE2Og4H/Gw4V0Vq iwEp2TzYeyxbR97KE/0ntlmFVgteKbll62LWRP5V51U/fPHTPp5gNZLphsgxAC0ZNS7O6UOKydJu QKTRZFmsjMnowZiMnhRl5pFvTQ96n3d9t5R3D/u2URLWCLH6hy9/NIhArJYxlN55g+MQDk9Lh9Vb WyPZZOHinNN53aCLP5kWK7lJaWRYkkgzJ2I3J5BispBvTef05Ez6JGfQIyktpBuT/7t7FS9+vzGE PQYPSSsGqRMN39hlSgMRkMxaDzxSZXXtvoCvjl7ZuSDkBpmS3ZsZucMZntpVl/rweiCBP+78lCfL vzBail7UOyt7/FgT/Kfd3cJiD7DSCEVG8amGadYFmbkMCmAXLBASFBPPDpjM64P/i3PTuoWNOdxS 5dati6PJHID8hOnTfzyVPuH4Qwg+Cr0g43jvyA7UALciBTBTQ2YPf3ii3wR+1WVgSPryFZfXzS83 vhNJ98t9QnKiB048H/TID0OqxmD2NdWzpi7wHZef5/TVVDzGFyZn9w47c+xwVTP+y3+ytCpsA8ED xiQtS47/+wkGqZ949w5gV0gVGYyWT0BFCOb2HaejmlOZ0VPbRSW9ef3gVsZ+8Qqbo7Mg0ba68TNO yFd7SoSJhJgaRd45/B2NGrZrizLzNJembosMSxIjNOQm1pNGr5vfblvCzVsXh/X2thZOnl5BKwZB 5a2QqAkTHJ4W/hNAaeTjeej0cUG5SJWblBYWC/KPKncxfN1LHd6ziXSEkG+e/L1TDNKw2rkCCO+0 2zrz6N7PA16sw9F0OE8PmKSjoqMIg0Os9zbWcfnGd5i+8R32RkAmRI3sd6xwfXbyN08dQYqLVYmI qVFkm7OKxZXall6XntaP67sO1knRUfY31xtydFvlbuTPu1cy/PMX+VDjzyViECykuPiUiyutRrkL lYXBVxRezNOh0OfcvuM4R0PWwZM50uLia8dB3drriIMtTu7f+QkFa/6P+Xs+D/vyBHoiaP13vlWD OFY3rAEiIT+9bmxwHKRE47ZlkmLmjSGX6rr1+1T5et3aaosv6yu487ulDF7zd54uX48rShfhbSN3 1xfOavUqauv3pIqLVSnFgqBqCkN+v/NTzddDsyxW3h36C7on6RNG/tahbXxQqX/KgPKmOh7es5az 1y6gcP1rLDjwDU0xNGKcgOQFhGh1NtvmKtBaOre7WVX2APpdM4sA/tx7LHdqTJIGRw8hf/71m7rU AU8xWXix4GJNJQcavW4+qzvApzXlfFpTzoZ6/25hRjEer1fNdU28p9WNqXa3SezL5n0AXBgUWWGK 1WThixHX0TNJ+32JGncTl218W5dqrooQXNVlIDNzR9Crg9D1A80Odrpq2OmqYYermq8dh1hfX+FT 4ovYQ77nKLr7krZebd8gy+ddguRd/UWFN1NzTue1QW3+zPzC5XVz53dLdY1Z6peSRb41nSTFjMPb gtPbgtPjpt7bzOEWVwyuITTxM0fR7EVtvdj+RvvChSZ71t7vgMDH9gjlrwMmc5WOMVD/PriVO79b Gv/lDScEZY7K3NOPj949mfaTmUyf7hWCJ3UXFgHM3L6Mb3XMJfvLzmewatg1FGZG3nXdaEUi5rdn DujIIIDVzQuEcZm2YNHodXPt5kW6fuL3Sc7gP0Mv46WBU3VPlhDHb6pT3PIfHb2pwx0q56tL3YnX TsoARusiK4KodDeyv9nBVJ2DEQekZHNz9zPpkmjjW2dVBFVcih6EkPOqJ9z9cUfv82kL13zTlK2K qv4GiIzkWTqyueEIqpS6p/oxC4WzUjtzc/cz6ZeSicPbQnmTMaElMYhTesRVLa8udXb0Rp8M4n5x SUPitROyQJynXVvksbp2P1kWq89FP/3BJAQFthyu6FzANV0H0zkxBVVKDrU4262SFUcDQjzeMGH2 f3x6q69t2kvnZ6PK3UBMTp4VIXjhjIuY1ql/SPprVr2sq/uerxwH2emqZoerhl2uGuo9zTEVIxUE GqSH3g2TZvuUGM2veGr7snkPAfcEJCsKSFBMPH/GRfz8tL6G6vBKicPbTLW7iX1N9ZRUlfFqxWaq 3I2G6ooEhOR/6sfPfsDn9/vTuL1kThbCsgvQPy1fhGASgnl9i7ip21CjpZxAvaeZe3eU8mrF5o7f HLvUmBRzfm3hDJ+TO/sVZ9Xy8rLGxGsmuRFM9F9bdCCBJVW7kUjGhFGO3kTFzEU5fXB53XyuQ2hL NCIE99aNm+lXLTi/qx44qhueAqIgv6Q2Hir7jN98+1HYrQce7D1Wc7nmKGVbfWrqs/4+5H9ZkOnF LcAsv5+LQl6t2EzR+td0idjVC0UIivPHGi0j7BCIuzjnVr9PfQOqm+Momr1IIpcG8my0sbnhCGO/ eMWwPL2tcW56N93uo0QJi+uLZgWUrSfgwlKKl9uA+LYJR8sc37x1MTdu+YBDLR2ePQUdQfRVwgoU CS4FeUegzwdskPqJd+9A8D+BPh+NvHHoW85eu4Dn9n9leHWldEuSof2HC0KKB+qK7g4484Sm0oQO 4ZwnIRJr/AaNek8zs7cv5/z1r/BZrXEFLCO5wpOOfONIt2uKRteceCmtdO45qqqsJcau5vrKeend mNFzuKbrsv7ikSr5K/9KracpZH2GIR6vqgx3TZi5QUsjmn+pm/9R8n3SdRNMIM7X2lY0sr/JwRuH tlFSVUZOQgr51oygZ0tcVLmDfx3cEtQ+wh0pKHaOn/W61nb0+Z8qLTbb1ZQVQEwGM/pD10Qbv+g0 gCs6F1Bgy9a9fafXzegvXmaXhlrwUcBqR1Xu+R1dhvIF3T7K0koey1eFZwOQqleb0c4gWw6XdurP BRk9GWrvjEnjyNKkerh286LYyYbYOnUmxTO0tvC+PXo0putYby+Zfy1CvqRnm7FCqjmRUendOT+j J2enduH05AwyLVafn9/YcJjfbVvKl/UVQVQZ/gjBr+rHzf6nbu3p1dAP2Jc9/HcQN+ndbiySabHS JzmDvsmZdEpIIfVYwU6b6WjRTq+UR6N5q8uMp1MEAAAFLklEQVT4tKZcUwLuaEDAs/VFs3+jZ5vm jt/iH47mpN/aE5uHAMP0bjvWqHY3sq6uUZe8WjHA5/XNiTP0bjQo2ynWJY/0MJvVL4HQVLmME+sc 9ijq2Y2F9wReT68NNB0UtkXjpJn7VKFcAYRXqGucaMQtVS4PhjkgSAYBcI6buQzJfwer/ThxAKTk 9oYJsz8JVvtBMwiAY/zsF5D8JZh9xIldhJB/bhg/+7mg9hHMxgGQUtiXz38ZuCrofcWJGYQQr9cX zryirbIFehHUEQQAIaRDcd4skMuC3lecmEAil9Y3JVwbbHNAKAwCUFjcZHO5fgasCEl/caKZz6xK yqVceEdI0lGGtIxq5uInU90JzcsQnBPKfuNEB0LytUj0jKsbc1/IAs1CXmf4WAK6UkC/2gJxYgC5 CekpdIy/P6SJ1EMzxToOR+GsSiXBMxb4PNR9x4lMJHyFoowLtTnAAIMA1I25r8aseicBq43oP04E IVhlUb3jHIWz9CvW4geGGASgZsK9dXaXc6KEDlPQx4lVRGmSSJ5SM+HeOqMUGGYQgO+nFrsaqpxT gVeN1BEn/BCINxxKw4VHCm9rMFZHOCClSF0+/08S/mS0lDjGIyVPNhTNujMU5xwdER4GOYZ92bzr geeIwUI9cQDwSMlvgx0+4g9hZRAA27J54wT8m3iofKxxWKpcHszAw0AIO4MAWJc92s0sPW8ixLlG a4kTEr40IabVFs3aa7SQkzF0kd4WjUV3HXC0JF0gZWyWoI4ppPw/R5VzZDiaA8J0BDme1GXzr5bI p4lnS4k26oTgN3omWAgGYW8QgPRl83O9yFeAMUZriaMDUq5VBFdpyZkbKsJyinUytUWz9joU5zgJ xcSv8UYyHil4wFGdNzoSzAERMoIcT0rJvMGK4HniWVMijW8URb2prvCe9UYL8YeIGEGOxzl+9kaH 4hwppLgTMPSUNY5PNAL3OhTnOZFmDojAEeR40pY93FsV4mkkk43WEqdVFivSfHvd+Bm7jRYSKBFt kB9IKZk3XhHicZAFRmuJA8B2pJzpGH/3+0YL0UpUGASA9c9Z7LX1tyP4I5ButJwYpUZI8WB9uv2v gRTMDEeixyDHyF41197crPwGuA9IM1pPjNAAPKMkeOaG8jpsKIg6g/yAvWROFsIyW8LtApKN1hON SHAheV5imeMcf+cho/UEg6g1yA+klDzeySTct0v4NZBptJ4ooUogn1U94qmGSbMPGy0mmES9QX5k 8ZOJqUlNl0sp7gf6GS0nIhGUCVU8YfXK5w9Nmm18vesQEDsG+YGFC032rL0XAjcDFxIvPtoRHpCL QTzvqMpdrEdZs0gi9gxyHNZlj3YzoV4vhLwBSS+j9YQXcrdELFC96ouuiffEbIGSmDbI8diWP1Sg SNNlEnk1iHyj9RjEASl5S0jxhmP8zNXhcOXVaOIGOZniYsU+OnmUFEwTiClAX6MlBZnvQC5GVd52 rG5YQ3GxarSgcCJukA5IK3ks36t4JwvJFJDnA3ajNWmkHvhUIj80ecRHdZNmlxktKJyJG8QfFi40 peTsGWRSxWgVOVIRYrSU9DBaVnsIwT5VylUKYo1XKCudlT02x9pCWwtxg2jEXjo/W5ViiEmqg6Rg ICpDEPQGMkIspQbYiWCjUMUmVchNQhEbjcpIGC3EDRIk0ksfS3fjzlNU0UtArhSiCyrZILNQyEKS BTIRRBpHrx1YANuxxxsAN6CCrAPRjKAKlSoQVShUCikrJOxVFVmW4FHLjMw+GM38f4EawqbWMRX9 AAAAAElFTkSuQmCC " + id="image1263" + x="134.51895" + y="20.857262" + style="stroke-width:2.00314" /><image + width="23.48313" + height="25.232662" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 gg== " + id="image1275" + x="220.0013" + y="21.449341" + style="stroke-width:10.7374" /><image + width="30.300915" + height="29.702868" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 NXb+cQHjSzf2DwNl/pKGHoE0T2E7UXwO7KpBFexX8dF/KEhI/zT0KtpIW/TITz+A5UHeVOSJ9ROb 6uncafKBMBwlW++6qYWi4fQlRmSSbkpMhJjpWQIt9yPCWa09JrOhrOn8L8mwl1d43y+bf+UvB7eB YnH6PwwE8Za0Qn3QcVm4cKB1qmpJ6iqemvooqXlVym3K5jbnv/67n/ntgQj5rNTS/wEy4kxsAPkh XQAAAYVpQ0NQSUNDIHByb2ZpbGUAAHicfZE9SMNAHMVfW8UPWhzsUMQhQ3WyICpFcNEqFKFCqBVa dTC59AuaNCQpLo6Ca8HBj8Wqg4uzrg6ugiD4AeLm5qToIiX+Lym0iPHguB/v7j3u3gH+RoWpZtc4 oGqWkU4mhGxuVeh5RR8iCGEGcYmZ+pwopuA5vu7h4+tdjGd5n/tzhJS8yQCfQDzLdMMi3iCOb1o6 533iMCtJCvE58ZhBFyR+5Lrs8hvnosN+nhk2Mul54jCxUOxguYNZyVCJp4ijiqpRvj/rssJ5i7Na qbHWPfkLg3ltZZnrNIeRxCKWIEKAjBrKqMBCjFaNFBNp2k94+Iccv0gumVxlMHIsoAoVkuMH/4Pf 3ZqFyQk3KZgAul9s+2ME6NkFmnXb/j627eYJEHgGrrS2v9oApj9Jr7e16BEwsA1cXLc1eQ+43AEi T7pkSI4UoOkvFID3M/qmHDB4C/Svub219nH6AGSoq9QNcHAIjBYpe93j3b2dvf17ptXfD/nLct0c jlvtAAANGmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlk PSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpu czptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNC40LjAtRXhpdjIiPgogPHJkZjpSREYgeG1sbnM6 cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRm OkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9i ZS5jb20veGFwLzEuMC9tbS8iCiAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94 YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9y Zy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6R0lNUD0iaHR0cDovL3d3dy5naW1wLm9yZy94 bXAvIgogICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICB4 bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgIHhtcE1NOkRvY3VtZW50 SUQ9ImdpbXA6ZG9jaWQ6Z2ltcDozYmZlYzk3MS01ODI1LTRlMTEtODk3YS00ODBjOGUzY2ZlODci CiAgIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Y2E4N2VhMzAtNTY2NC00ZDU4LThmZGItODZi NWI3YmJiMWI4IgogICB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6YWYxNmU4Mjct MDJjYS00YjQ3LTkxYzEtYmJiOGY4NmMyYTI4IgogICBkYzpGb3JtYXQ9ImltYWdlL3BuZyIKICAg R0lNUDpBUEk9IjIuMCIKICAgR0lNUDpQbGF0Zm9ybT0iTGludXgiCiAgIEdJTVA6VGltZVN0YW1w PSIxNjMyNDkyMDU0NzQwNTU2IgogICBHSU1QOlZlcnNpb249IjIuMTAuMjQiCiAgIHRpZmY6T3Jp ZW50YXRpb249IjEiCiAgIHhtcDpDcmVhdG9yVG9vbD0iR0lNUCAyLjEwIj4KICAgPHhtcE1NOkhp c3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2 ZWQiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5p aWQ6Y2MzMmRmN2ItYjQ2YS00NTM0LTlhYjgtMmRhOTRjOTYwY2NmIgogICAgICBzdEV2dDpzb2Z0 d2FyZUFnZW50PSJHaW1wIDIuMTAgKExpbnV4KSIKICAgICAgc3RFdnQ6d2hlbj0iMjAyMS0wOS0y NFQxNjowMDo1NCswMjowMCIvPgogICAgPC9yZGY6U2VxPgogICA8L3htcE1NOkhpc3Rvcnk+CiAg PC9yZGY6RGVzY3JpcHRpb24+CiA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9Inci Pz55r0WaAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5QkY DgA218SFAwAAIABJREFUeNrtndl3Glfert8qqjQgNFvzBAjZElAMshPHAo1MstP/57k5w+rO3N9a 5+ac7tjxEOc76+vEkkAzAqHBEZoioOpcFGC7MycequB9bnKRrJWlAh5efnvvdwuapmkghBATIvIR EEIoMEIIocAIIYQCI4RQYIQQQoERQggFRgghFBghhAIjhBAKjBBCKDBCCAVGCCEUGCGEUGCEEEKB EUIoMEIIocDeJMVika80IRSY+SiVSvjuu++Qy+VQKpX4ihNSQ0i1/gcWCgX8x3/8HW2tbbgzMwO7 3Q6r1cpXnhAKzPioqor19Q3867/+hWfPniEWjyMQCKCrqwsWi4XvAEIoMOP/jNza3MT+fhZbW1tY XFzE7NwcHA4Hmpub+S4ghAIzLgIATdOQP8nj8aPH2N3dRSqVQiweh8/nQ3d3N9MYIRSYwUUmCCgW i9jd2cXnn32Ozc0tLC0tIjw7yzRGCAVmDokBwMnJCZ48fozM3h6SqRQikQiCwSBnY4RQYOYQWaFQ wPb2No6Pj7GeWkckGsHc3BzGxsbQ3NxclR0hhAIzpMQ0TUM+n8d/fvMN9vezSK6tIRaLwx/wczZG CAVmDq6urrC9tY2jwyNsbm4iFothJhSC3W5nGiOEAjM+mqbh9PQUTx4/we7uLtaSSUSjUfj9fnR2 dkKS+LgIocAMTqlUwl56D59+/Am2NrewsLiAcDjMNEYIBWauNPbwq6+ws7ONVCqFaDQKn8+Hrq4u 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 " + id="image1287" + x="175.31808" + y="19.214237" + style="stroke-width:3.53931" /><image + width="29.202602" + height="29.202602" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 CkvGGFWwV9YDEF1SwgLIYD2Q2SEME02Fgc5Qhu4WKndlxyBtslYOunEW0+Yk/9ACqQf/3LR7saUl ZKNI1xbp8kBcEWqJbjm+yoStoaw1zM8eoz15E/rohzi8/X3o8XlQinGsFCJO1NdIGtfv0xcdILdg CD42SgZM7RmuoWZPFZ1umEHyeFRt5KYa6V5SuQABhfCX41r628IejAY/rlc9aH+O3EROA+oArbmw 5Ia3w/oRus4tKWTGD/L+mn/LJIL/lmGFiJtqi/tNE2dt1dFlTZfROswHMKcwCoVkQJl2iE45LXjv eRMmAKadx6wOV8jWXdnM14Av//LfxP/8F/4dfAagCy+TfxQUlstftl+F4c/hne//unzwkz+JMk99 5zIENbJbQ7Rs0tLwgGK4hLmzxK4ewLtmUBw5wWdmUEhPk6iHNozasLPHn3E5kFW2RRuAUnwyTTMp atTjO8E7Fen3Vp1Pa7PDiywkaXRV4zuV9B8QB99OG0eft2uvQzseIDdPII/egH3wOuzxO5DFudiC eM9WcAkg8QLZVm2I9ZjTAElwjdGSMiLDRYdYSigsQi9cX7CVVpkYjuGGMMQCs7iYn+9jrbkZGa2D rjwckNoJ74iEl6CjRj++DfdlYOYyNpk4YOC0XANoRXcJx2lg/bdSt5qiKyzeijEhEvGuhlFBDlad jbnp4bPhJtdjd3MFbsHzkRmTFxIbx8S5vDQvaIdBrC22ffgTvPrV/xG//p/9Bv5t+b07J9pnTP7R UVhdLvHf268C+Gcg+Ofk8Y9/xW6eP0S93gHwrjfk6XZczwxjA9NVWQiAQMdbJW4HgNriXNbi/eUy 5cwd2VHF4RYNqPKolKfbgHzHeFwFpkLero13z4F6nKca23dJWgBSJm+IUcoqXp0Koy5+P7HDLxWC A0wmyHTp93u4hjz6MfD6t2BPXoftryBVEIyoCQ+wQZmvCHBLty7G8+fnSiosv2xCFaL+M42i7hKm Xgl3hy5g6ikoDM3zAGHFxRijjw+A4drDreEVqj/77O9XG2TqCsuM546MXwT4QzEhXo87jutUlsb4 3EmDaMTqRcVF0DsrDftQuJm189iSYYA7REG1FFdWtoxEpa7sysSg+YIVcJRKN65HrLqy2lw6hff+ cAPRZ/bq176LX/31P5z+5D/7jeXPye8DuMJZznKWs5zlLGc5y1nOcpaznOUsZznLWc5ylrOc5Sxn OctZznKWs5zlLGc5y1nOcpaznOUsZznLWc5ylrOc5SxnOctZznKWs5zlLGc5y1nOcpaznOUsZznL Wc5ylrOc5SxnOctZznKWs5zlLGc5y1nOcpaznOUsZznLWc5ylrOc5SxnOctZznKWs5zlLGc5y1nO cpaznOUsZznLWc5ylrOc5SxnOctZznKWs5zlLGc5y1nOcpaznOUsZznLWc5ylrOc5SxnOcvnV/5/ fl07WlwHHbMAAAAASUVORK5CYII= " + id="image1359" + x="90.934036" + y="19.464371" + style="stroke-width:2.71808" /><text + xml:space="preserve" + style="font-size:12.7px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583" + x="169.47803" + y="66.103424" + id="text4115"><tspan + sodipodi:role="line" + style="font-size:12.7px;stroke-width:0.264583" + x="169.47803" + y="66.103424" + id="tspan4117">User-facing application</tspan></text><text + xml:space="preserve" + style="font-size:12.7px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583" + x="73.229004" + y="183.68733" + id="text4115-3"><tspan + sodipodi:role="line" + style="font-size:12.7px;stroke-width:0.264583" + x="73.229004" + y="183.68733" + id="tspan4117-6">Database*</tspan></text><text + xml:space="preserve" + style="font-size:12.7px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583" + x="111.25725" + y="162.21248" + id="text4115-3-6"><tspan + sodipodi:role="line" + style="font-size:12.7px;stroke-width:0.264583" + x="111.25725" + y="162.21248" + id="tspan4117-6-8">K2V</tspan></text><text + xml:space="preserve" + style="font-size:12.7px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583" + x="266.38498" + y="182.65727" + id="text4115-3-7"><tspan + sodipodi:role="line" + style="font-size:12.7px;stroke-width:0.264583" + x="266.38498" + y="182.65727" + id="tspan4117-6-5">Object storage</tspan></text><path + style="fill:none;stroke:#000000;stroke-width:1.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend)" + d="M 147.15073,80.962811 V 93.477746 H 74.989012 v 12.859624" + id="path12236" /><path + style="fill:none;stroke:#000000;stroke-width:1.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend-3)" + d="m 190.64085,80.962811 v 12.514935 h 75.18482 v 12.859624" + id="path12236-6" + sodipodi:nodetypes="cccc" /><g + id="g329" + transform="matrix(0.25773706,0,0,0.25773706,234.20703,108.42714)" + style="stroke-width:1.02656"><g + id="g1663" + transform="matrix(1.7099534,0,0,1.7099534,-88.607712,-87.994557)" + style="stroke-width:1.02656"><path + d="m 138.33068,100.19817 a 8.327649,8.327649 0 0 1 -2.77589,-0.288688 l -34.78736,-9.388036 a 8.4442361,8.4442361 0 0 1 -2.620433,-1.238044 z" + id="path6" + style="stroke-width:0.569924" /><path + class="cls-1" + d="m 85.377935,159.27452 5.163143,-0.0333 h 0.06662 q 2.864711,0 2.864711,2.69816 v 8.69407 a 24.849705,24.849705 0 0 1 -8.649651,1.43235 q -4.730105,0 -7.128468,-3.21447 -2.398363,-3.21447 -2.398363,-8.76068 0,-5.55177 2.981299,-8.62745 a 9.7600046,9.7600046 0 0 1 7.29502,-3.08123 13.368653,13.368653 0 0 1 7.811335,2.43167 3.9250986,3.9250986 0 0 1 -0.682867,1.76547 4.7634152,4.7634152 0 0 1 -1.282458,1.33242 9.798867,9.798867 0 0 0 -5.679457,-1.96533 5.3574542,5.3574542 0 0 0 -4.480275,2.04861 q -1.598909,2.03749 -1.598909,6.41229 0,8.22771 6.062529,8.22771 a 16.910679,16.910679 0 0 0 3.697476,-0.43303 v -3.16451 q 0,-1.49898 0.06662,-2.22071 h -2.442777 a 2.2873276,2.2873276 0 0 1 -1.515632,-0.41638 1.6655298,1.6655298 0 0 1 -0.483004,-1.33242 5.7072154,5.7072154 0 0 1 0.333106,-1.79322 z" + id="path8" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" /><path + class="cls-1" + d="m 111.07151,169.73404 a 4.3137222,4.3137222 0 0 1 -0.55518,1.18253 4.0305821,4.0305821 0 0 1 -0.84942,0.94935 3.7640973,3.7640973 0 0 1 -3.05902,-1.95422 6.7453957,6.7453957 0 0 1 -4.76342,2.13188 q -2.564913,0 -3.886233,-1.49898 a 5.1298318,5.1298318 0 0 1 -1.299113,-3.4643 q 0,-2.77588 1.815427,-4.21379 a 7.3338829,7.3338829 0 0 1 4.669039,-1.3935 q 1.53228,0 2.89802,0.13325 v -0.99932 q 0,-2.63154 -2.53161,-2.63154 -1.79877,0 -5.096518,1.19918 a 4.674587,4.674587 0 0 1 -1.110353,-2.96464 18.581761,18.581761 0 0 1 7.217291,-1.49898 5.8682167,5.8682167 0 0 1 4.0639,1.39905 q 1.56559,1.39904 1.56559,4.23044 v 6.79537 q -0.0111,1.83208 0.9216,2.59822 z m -8.36096,-0.83276 a 4.7134493,4.7134493 0 0 0 3.33106,-1.59891 v -2.94244 a 22.368065,22.368065 0 0 0 -2.53161,-0.13324 2.775883,2.775883 0 0 0 -2.06525,0.68842 2.3928111,2.3928111 0 0 0 -0.69953,1.76546 2.3539488,2.3539488 0 0 0 0.55518,1.66553 1.8431863,1.8431863 0 0 0 1.41015,0.55518 z" + id="path10" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" /><path + class="cls-1" + d="m 113.76966,157.00939 a 3.986168,3.986168 0 0 1 0.55518,-1.21583 3.3310596,3.3310596 0 0 1 0.84942,-0.94935 4.1638245,4.1638245 0 0 1 3.51427,2.96464 q 1.33242,-2.96464 4.29707,-2.96464 a 10.215249,10.215249 0 0 1 1.93201,0.23317 7.4782288,7.4782288 0 0 1 -0.99932,3.88624 8.4497879,8.4497879 0 0 0 -1.49897,-0.19987 q -2.03195,0 -3.26444,2.16519 v 10.64829 a 11.575432,11.575432 0 0 1 -2.03195,0.16655 12.769062,12.769062 0 0 1 -2.09857,-0.16655 v -11.15905 q -0.0222,-2.40947 -1.2547,-3.40879 z" + id="path12" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" /><path + class="cls-1" + d="m 140.38483,169.73404 a 4.3137222,4.3137222 0 0 1 -0.58293,1.18253 4.0305821,4.0305821 0 0 1 -0.84942,0.94935 3.7640973,3.7640973 0 0 1 -3.05348,-1.95422 6.7453957,6.7453957 0 0 1 -4.76341,2.13188 q -2.56492,0 -3.88624,-1.49898 a 5.1298318,5.1298318 0 0 1 -1.29911,-3.4643 q 0,-2.77588 1.81543,-4.21379 a 7.3338829,7.3338829 0 0 1 4.64682,-1.4157 q 1.53229,0 2.89803,0.13324 v -0.99932 q 0,-2.63153 -2.53161,-2.63153 -1.79877,0 -5.09652,1.19918 a 4.674587,4.674587 0 0 1 -1.11035,-2.96465 18.581761,18.581761 0 0 1 7.21729,-1.49897 5.8682167,5.8682167 0 0 1 4.0639,1.39904 q 1.56559,1.39905 1.56559,4.23045 v 6.81757 q 0.0333,1.83208 0.96601,2.59822 z m -8.37206,-0.83276 a 4.7134493,4.7134493 0 0 0 3.33106,-1.59891 v -2.94244 a 22.368065,22.368065 0 0 0 -2.53161,-0.13324 2.775883,2.775883 0 0 0 -2.06526,0.69952 2.3928111,2.3928111 0 0 0 -0.69952,1.76546 2.3539488,2.3539488 0 0 0 0.55518,1.66553 1.8431863,1.8431863 0 0 0 1.41015,0.54408 z" + id="path14" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" /><path + class="cls-1" + d="m 144.48203,169.6008 q -1.49897,-2.29843 -1.49897,-6.34567 0,-4.04724 1.8987,-6.34567 a 5.740526,5.740526 0 0 1 4.56355,-2.29843 6.4400486,6.4400486 0 0 1 4.49693,1.66553 3.7696491,3.7696491 0 0 1 2.63154,-1.43235 3.1200925,3.1200925 0 0 1 0.88273,0.93269 3.8862362,3.8862362 0 0 1 0.55518,1.16587 q -0.9327,0.79946 -0.9327,2.86472 v 9.438 q 0,5.29638 -1.73215,7.49488 -1.73215,2.1985 -5.69611,2.22071 a 16.100121,16.100121 0 0 1 -5.9626,-1.11036 4.4802752,4.4802752 0 0 1 1.03263,-3.03126 10.892565,10.892565 0 0 0 4.48028,1.03263 q 2.18184,0 3.0146,-1.11035 a 4.9965894,4.9965894 0 0 0 0.83277,-3.06458 v -1.33242 a 6.4011862,6.4011862 0 0 1 -4.16383,1.56559 4.9188647,4.9188647 0 0 1 -4.40255,-2.30953 z m 8.56083,-2.69816 v -7.72806 a 4.2915151,4.2915151 0 0 0 -2.86471,-1.36573 2.4039147,2.4039147 0 0 0 -2.18185,1.43235 8.6885138,8.6885138 0 0 0 -0.7828,4.09721 q 0,2.66485 0.71618,3.93065 a 2.1318781,2.1318781 0 0 0 1.88205,1.2658 4.2304457,4.2304457 0 0 0 3.23113,-1.63222 z" + id="path16" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" /><path + class="cls-1" + d="m 174.20619,164.67083 h -9.32697 a 5.6405943,5.6405943 0 0 0 0.88273,3.04792 q 0.7828,1.0826 2.74813,1.0826 a 10.120869,10.120869 0 0 0 4.36369,-1.16587 4.3803434,4.3803434 0 0 1 1.19918,2.5316 10.759323,10.759323 0 0 1 -6.41229,1.8987 q -3.74744,0 -5.37966,-2.43167 -1.63222,-2.43167 -1.63222,-6.2957 0,-3.88624 1.79877,-6.2957 a 6.0181143,6.0181143 0 0 1 5.14649,-2.43168 q 3.33106,0 5.14648,2.01529 a 7.3449864,7.3449864 0 0 1 1.79878,5.07987 13.04665,13.04665 0 0 1 -0.33311,2.96464 z m -6.42895,-7.06184 q -2.73146,0 -2.93133,4.13051 h 5.79605 v -0.39973 a 4.7245529,4.7245529 0 0 0 -0.69953,-2.69816 2.4316735,2.4316735 0 0 0 -2.14298,-1.03262 z" + id="path18" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" /><path + id="path24-3-6" + style="fill:#ffd952;fill-opacity:1;stroke-width:0.569924" + d="m 124.80273,70.162462 a 11.0036,11.0036 0 0 0 -4.33203,0.935547 L 76.261719,90.656602 a 1.5989086,1.5989086 0 0 0 -0.837891,2.138672 0.77169547,0.77169547 0 0 0 0.06641,0.177735 l 7.09375,14.021481 h 6.15625 l -0.875,-4.88867 c -0.07217,-0.39418 -0.711263,-3.187532 -1.316406,-5.197264 l 20.691398,6.462894 c 0.27198,1.28839 0.63292,2.49204 1.0625,3.62304 h 33.54883 c 0.36964,-1.13128 0.66138,-2.33705 0.85938,-3.62304 l 20.64648,-6.445316 c -0.60514,2.009734 -1.23639,4.785506 -1.30859,5.179686 l -0.875,4.88867 h 6.15429 l 7.02735,-13.894528 0.0664,-0.126953 0.0684,-0.171875 a 0.10548355,0.10548355 0 0 0 0,-0.04492 1.4878733,1.4878733 0 0 0 0.0664,-0.515625 1.5822533,1.5822533 0 0 0 -0.99414,-1.583985 L 129.35352,71.098009 a 11.0036,11.0036 0 0 0 -4.55079,-0.935547 z" /><path + id="path24-3" + style="fill:#49c8fa;fill-opacity:1;stroke-width:0.569924" + d="M 124.80273,79.416133 A 11.0036,11.0036 0 0 0 120.4707,80.35168 L 76.261719,99.910272 a 1.5989086,1.5989086 0 0 0 -0.837891,2.136718 0.77169547,0.77169547 0 0 0 0.06641,0.17773 l 3.847657,7.60352 h 8.175781 c -0.257897,-1.08856 -0.591943,-2.42953 -0.964844,-3.66797 l 11.744141,3.66797 h 53.371087 l 11.69336,-3.65039 c -0.37193,1.23522 -0.70076,2.56719 -0.95703,3.65039 h 8.17383 l 3.78125,-7.47656 0.0664,-0.12696 0.0684,-0.17187 a 0.10548355,0.10548355 0 0 0 0,-0.0449 1.4878733,1.4878733 0 0 0 0.0664,-0.51563 1.5822533,1.5822533 0 0 0 -0.99414,-1.582028 L 129.35352,80.35168 a 11.0036,11.0036 0 0 0 -4.55079,-0.935547 z" /><path + class="cls-2" + d="m 174.55595,110.92974 a 1.4878733,1.4878733 0 0 1 -0.0666,0.51631 0.10548355,0.10548355 0 0 1 0,0.0444 l -0.0666,0.17211 v 0 l -0.0666,0.12769 -10.69826,21.15223 c -1.48787,2.93688 -4.22489,2.84806 -3.76409,-0.12214 l 2.15408,-12.02512 c 0.0722,-0.39418 0.70508,-3.17006 1.31022,-5.1798 l -20.64702,6.4456 c -3.24223,21.05785 -30.95109,21.40761 -35.47023,0 l -20.691432,-6.46226 c 0.605143,2.00974 1.243596,4.80228 1.315769,5.19646 l 2.154085,12.02512 c 0.460796,2.9702 -2.276224,3.05902 -3.764098,0.12214 L 75.49024,111.66257 a 0.77169547,0.77169547 0 0 1 -0.06662,-0.17766 1.5989086,1.5989086 0 0 1 0.838317,-2.13743 L 120.47065,89.788613 a 11.0036,11.0036 0 0 1 8.88282,0 l 44.20871,19.558867 a 1.5822533,1.5822533 0 0 1 0.99377,1.58226 z" + id="path24" + style="stroke-width:0.569924" /><path + class="cls-3" + d="m 139.0413,114.61611 19.11473,-7.69475 a 0.81055784,0.81055784 0 0 0 0,-1.50453 c -2.2207,-0.92714 -4.96328,-1.99308 -7.65033,-3.10899 -0.49411,-0.20541 -5.17425,3.15341 -5.60173,3.49762 l -8.23882,6.58439 c -1.99309,1.67108 -0.26649,3.28665 2.37615,2.22626 z" + id="path26" + style="stroke-width:0.569924" /><circle + class="cls-3" + cx="125.18409" + cy="122.13319" + r="9.9654207" + id="circle28" + style="stroke-width:0.569924" /><path + d="m 138.33068,100.19817 a 8.327649,8.327649 0 0 1 -2.77589,-0.288688 l -34.78736,-9.388036 a 8.4442361,8.4442361 0 0 1 -2.620433,-1.238044 z" + id="path6-0" + style="stroke-width:0.569924" /><path + class="cls-1" + d="m 85.377935,159.27452 5.163143,-0.0333 h 0.06662 q 2.864711,0 2.864711,2.69816 v 8.69407 a 24.849705,24.849705 0 0 1 -8.649651,1.43235 q -4.730105,0 -7.128468,-3.21447 -2.398363,-3.21447 -2.398363,-8.76068 0,-5.55177 2.981299,-8.62745 a 9.7600046,9.7600046 0 0 1 7.29502,-3.08123 13.368653,13.368653 0 0 1 7.811335,2.43167 3.9250986,3.9250986 0 0 1 -0.682867,1.76547 4.7634152,4.7634152 0 0 1 -1.282458,1.33242 9.798867,9.798867 0 0 0 -5.679457,-1.96533 5.3574542,5.3574542 0 0 0 -4.480275,2.04861 q -1.598909,2.03749 -1.598909,6.41229 0,8.22771 6.062529,8.22771 a 16.910679,16.910679 0 0 0 3.697476,-0.43303 v -3.16451 q 0,-1.49898 0.06662,-2.22071 h -2.442777 a 2.2873276,2.2873276 0 0 1 -1.515632,-0.41638 1.6655298,1.6655298 0 0 1 -0.483004,-1.33242 5.7072154,5.7072154 0 0 1 0.333106,-1.79322 z" + id="path8-6" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" /><path + class="cls-1" + d="m 111.07151,169.73404 a 4.3137222,4.3137222 0 0 1 -0.55518,1.18253 4.0305821,4.0305821 0 0 1 -0.84942,0.94935 3.7640973,3.7640973 0 0 1 -3.05902,-1.95422 6.7453957,6.7453957 0 0 1 -4.76342,2.13188 q -2.564913,0 -3.886233,-1.49898 a 5.1298318,5.1298318 0 0 1 -1.299113,-3.4643 q 0,-2.77588 1.815427,-4.21379 a 7.3338829,7.3338829 0 0 1 4.669039,-1.3935 q 1.53228,0 2.89802,0.13325 v -0.99932 q 0,-2.63154 -2.53161,-2.63154 -1.79877,0 -5.096518,1.19918 a 4.674587,4.674587 0 0 1 -1.110353,-2.96464 18.581761,18.581761 0 0 1 7.217291,-1.49898 5.8682167,5.8682167 0 0 1 4.0639,1.39905 q 1.56559,1.39904 1.56559,4.23044 v 6.79537 q -0.0111,1.83208 0.9216,2.59822 z m -8.36096,-0.83276 a 4.7134493,4.7134493 0 0 0 3.33106,-1.59891 v -2.94244 a 22.368065,22.368065 0 0 0 -2.53161,-0.13324 2.775883,2.775883 0 0 0 -2.06525,0.68842 2.3928111,2.3928111 0 0 0 -0.69953,1.76546 2.3539488,2.3539488 0 0 0 0.55518,1.66553 1.8431863,1.8431863 0 0 0 1.41015,0.55518 z" + id="path10-2" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" /><path + class="cls-1" + d="m 113.76966,157.00939 a 3.986168,3.986168 0 0 1 0.55518,-1.21583 3.3310596,3.3310596 0 0 1 0.84942,-0.94935 4.1638245,4.1638245 0 0 1 3.51427,2.96464 q 1.33242,-2.96464 4.29707,-2.96464 a 10.215249,10.215249 0 0 1 1.93201,0.23317 7.4782288,7.4782288 0 0 1 -0.99932,3.88624 8.4497879,8.4497879 0 0 0 -1.49897,-0.19987 q -2.03195,0 -3.26444,2.16519 v 10.64829 a 11.575432,11.575432 0 0 1 -2.03195,0.16655 12.769062,12.769062 0 0 1 -2.09857,-0.16655 v -11.15905 q -0.0222,-2.40947 -1.2547,-3.40879 z" + id="path12-6" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" /><path + class="cls-1" + d="m 140.38483,169.73404 a 4.3137222,4.3137222 0 0 1 -0.58293,1.18253 4.0305821,4.0305821 0 0 1 -0.84942,0.94935 3.7640973,3.7640973 0 0 1 -3.05348,-1.95422 6.7453957,6.7453957 0 0 1 -4.76341,2.13188 q -2.56492,0 -3.88624,-1.49898 a 5.1298318,5.1298318 0 0 1 -1.29911,-3.4643 q 0,-2.77588 1.81543,-4.21379 a 7.3338829,7.3338829 0 0 1 4.64682,-1.4157 q 1.53229,0 2.89803,0.13324 v -0.99932 q 0,-2.63153 -2.53161,-2.63153 -1.79877,0 -5.09652,1.19918 a 4.674587,4.674587 0 0 1 -1.11035,-2.96465 18.581761,18.581761 0 0 1 7.21729,-1.49897 5.8682167,5.8682167 0 0 1 4.0639,1.39904 q 1.56559,1.39905 1.56559,4.23045 v 6.81757 q 0.0333,1.83208 0.96601,2.59822 z m -8.37206,-0.83276 a 4.7134493,4.7134493 0 0 0 3.33106,-1.59891 v -2.94244 a 22.368065,22.368065 0 0 0 -2.53161,-0.13324 2.775883,2.775883 0 0 0 -2.06526,0.69952 2.3928111,2.3928111 0 0 0 -0.69952,1.76546 2.3539488,2.3539488 0 0 0 0.55518,1.66553 1.8431863,1.8431863 0 0 0 1.41015,0.54408 z" + id="path14-1" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" /><path + class="cls-1" + d="m 144.48203,169.6008 q -1.49897,-2.29843 -1.49897,-6.34567 0,-4.04724 1.8987,-6.34567 a 5.740526,5.740526 0 0 1 4.56355,-2.29843 6.4400486,6.4400486 0 0 1 4.49693,1.66553 3.7696491,3.7696491 0 0 1 2.63154,-1.43235 3.1200925,3.1200925 0 0 1 0.88273,0.93269 3.8862362,3.8862362 0 0 1 0.55518,1.16587 q -0.9327,0.79946 -0.9327,2.86472 v 9.438 q 0,5.29638 -1.73215,7.49488 -1.73215,2.1985 -5.69611,2.22071 a 16.100121,16.100121 0 0 1 -5.9626,-1.11036 4.4802752,4.4802752 0 0 1 1.03263,-3.03126 10.892565,10.892565 0 0 0 4.48028,1.03263 q 2.18184,0 3.0146,-1.11035 a 4.9965894,4.9965894 0 0 0 0.83277,-3.06458 v -1.33242 a 6.4011862,6.4011862 0 0 1 -4.16383,1.56559 4.9188647,4.9188647 0 0 1 -4.40255,-2.30953 z m 8.56083,-2.69816 v -7.72806 a 4.2915151,4.2915151 0 0 0 -2.86471,-1.36573 2.4039147,2.4039147 0 0 0 -2.18185,1.43235 8.6885138,8.6885138 0 0 0 -0.7828,4.09721 q 0,2.66485 0.71618,3.93065 a 2.1318781,2.1318781 0 0 0 1.88205,1.2658 4.2304457,4.2304457 0 0 0 3.23113,-1.63222 z" + id="path16-8" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" /><path + class="cls-1" + d="m 174.20619,164.67083 h -9.32697 a 5.6405943,5.6405943 0 0 0 0.88273,3.04792 q 0.7828,1.0826 2.74813,1.0826 a 10.120869,10.120869 0 0 0 4.36369,-1.16587 4.3803434,4.3803434 0 0 1 1.19918,2.5316 10.759323,10.759323 0 0 1 -6.41229,1.8987 q -3.74744,0 -5.37966,-2.43167 -1.63222,-2.43167 -1.63222,-6.2957 0,-3.88624 1.79877,-6.2957 a 6.0181143,6.0181143 0 0 1 5.14649,-2.43168 q 3.33106,0 5.14648,2.01529 a 7.3449864,7.3449864 0 0 1 1.79878,5.07987 13.04665,13.04665 0 0 1 -0.33311,2.96464 z m -6.42895,-7.06184 q -2.73146,0 -2.93133,4.13051 h 5.79605 v -0.39973 a 4.7245529,4.7245529 0 0 0 -0.69953,-2.69816 2.4316735,2.4316735 0 0 0 -2.14298,-1.03262 z" + id="path18-7" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" /><path + id="path24-3-6-9" + style="fill:#ff9329;fill-opacity:1;stroke-width:0.569924" + d="m 124.80273,70.162462 a 11.0036,11.0036 0 0 0 -4.33203,0.935547 L 76.261719,90.656602 a 1.5989086,1.5989086 0 0 0 -0.837891,2.138672 0.77169547,0.77169547 0 0 0 0.06641,0.177735 l 7.09375,14.021481 h 6.15625 l -0.875,-4.88867 c -0.07217,-0.39418 -0.711263,-3.187532 -1.316406,-5.197264 l 20.691398,6.462894 c 0.27198,1.28839 0.63292,2.49204 1.0625,3.62304 h 33.54883 c 0.36964,-1.13128 0.66138,-2.33705 0.85938,-3.62304 l 20.64648,-6.445316 c -0.60514,2.009734 -1.23639,4.785506 -1.30859,5.179686 l -0.875,4.88867 h 6.15429 l 7.02735,-13.894528 0.0664,-0.126953 0.0684,-0.171875 a 0.10548355,0.10548355 0 0 0 0,-0.04492 1.4878733,1.4878733 0 0 0 0.0664,-0.515625 1.5822533,1.5822533 0 0 0 -0.99414,-1.583985 L 129.35352,71.098009 a 11.0036,11.0036 0 0 0 -4.55079,-0.935547 z" /><path + id="path24-3-2" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" + d="M 124.80273,79.416133 A 11.0036,11.0036 0 0 0 120.4707,80.35168 L 76.261719,99.910272 a 1.5989086,1.5989086 0 0 0 -0.837891,2.136718 0.77169547,0.77169547 0 0 0 0.06641,0.17773 l 3.847657,7.60352 h 8.175781 c -0.257897,-1.08856 -0.591943,-2.42953 -0.964844,-3.66797 l 11.744141,3.66797 h 53.371087 l 11.69336,-3.65039 c -0.37193,1.23522 -0.70076,2.56719 -0.95703,3.65039 h 8.17383 l 3.78125,-7.47656 0.0664,-0.12696 0.0684,-0.17187 a 0.10548355,0.10548355 0 0 0 0,-0.0449 1.4878733,1.4878733 0 0 0 0.0664,-0.51563 1.5822533,1.5822533 0 0 0 -0.99414,-1.582028 L 129.35352,80.35168 a 11.0036,11.0036 0 0 0 -4.55079,-0.935547 z" /><path + class="cls-2" + d="m 174.55595,110.92974 a 1.4878733,1.4878733 0 0 1 -0.0666,0.51631 0.10548355,0.10548355 0 0 1 0,0.0444 l -0.0666,0.17211 v 0 l -0.0666,0.12769 -10.69826,21.15223 c -1.48787,2.93688 -4.22489,2.84806 -3.76409,-0.12214 l 2.15408,-12.02512 c 0.0722,-0.39418 0.70508,-3.17006 1.31022,-5.1798 l -20.64702,6.4456 c -3.24223,21.05785 -30.95109,21.40761 -35.47023,0 l -20.691432,-6.46226 c 0.605143,2.00974 1.243596,4.80228 1.315769,5.19646 l 2.154085,12.02512 c 0.460796,2.9702 -2.276224,3.05902 -3.764098,0.12214 L 75.49024,111.66257 a 0.77169547,0.77169547 0 0 1 -0.06662,-0.17766 1.5989086,1.5989086 0 0 1 0.838317,-2.13743 L 120.47065,89.788613 a 11.0036,11.0036 0 0 1 8.88282,0 l 44.20871,19.558867 a 1.5822533,1.5822533 0 0 1 0.99377,1.58226 z" + id="path24-0" + style="fill:#ff9329;fill-opacity:1;stroke-width:0.569924" /><path + class="cls-3" + d="m 139.0413,114.61611 19.11473,-7.69475 a 0.81055784,0.81055784 0 0 0 0,-1.50453 c -2.2207,-0.92714 -4.96328,-1.99308 -7.65033,-3.10899 -0.49411,-0.20541 -5.17425,3.15341 -5.60173,3.49762 l -8.23882,6.58439 c -1.99309,1.67108 -0.26649,3.28665 2.37615,2.22626 z" + id="path26-2" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" /><circle + class="cls-3" + cx="125.18409" + cy="122.13319" + r="9.9654207" + id="circle28-3" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" /></g></g><g + id="g329-5" + transform="matrix(0.25773706,0,0,0.25773706,41.303976,108.42714)" + style="stroke-width:1.02656"><g + id="g1663-6" + transform="matrix(1.7099534,0,0,1.7099534,-88.607712,-87.994557)" + style="stroke-width:1.02656"><path + d="m 138.33068,100.19817 a 8.327649,8.327649 0 0 1 -2.77589,-0.288688 l -34.78736,-9.388036 a 8.4442361,8.4442361 0 0 1 -2.620433,-1.238044 z" + id="path6-9" + style="stroke-width:0.569924" /><path + class="cls-1" + d="m 85.377935,159.27452 5.163143,-0.0333 h 0.06662 q 2.864711,0 2.864711,2.69816 v 8.69407 a 24.849705,24.849705 0 0 1 -8.649651,1.43235 q -4.730105,0 -7.128468,-3.21447 -2.398363,-3.21447 -2.398363,-8.76068 0,-5.55177 2.981299,-8.62745 a 9.7600046,9.7600046 0 0 1 7.29502,-3.08123 13.368653,13.368653 0 0 1 7.811335,2.43167 3.9250986,3.9250986 0 0 1 -0.682867,1.76547 4.7634152,4.7634152 0 0 1 -1.282458,1.33242 9.798867,9.798867 0 0 0 -5.679457,-1.96533 5.3574542,5.3574542 0 0 0 -4.480275,2.04861 q -1.598909,2.03749 -1.598909,6.41229 0,8.22771 6.062529,8.22771 a 16.910679,16.910679 0 0 0 3.697476,-0.43303 v -3.16451 q 0,-1.49898 0.06662,-2.22071 h -2.442777 a 2.2873276,2.2873276 0 0 1 -1.515632,-0.41638 1.6655298,1.6655298 0 0 1 -0.483004,-1.33242 5.7072154,5.7072154 0 0 1 0.333106,-1.79322 z" + id="path8-3" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" /><path + class="cls-1" + d="m 111.07151,169.73404 a 4.3137222,4.3137222 0 0 1 -0.55518,1.18253 4.0305821,4.0305821 0 0 1 -0.84942,0.94935 3.7640973,3.7640973 0 0 1 -3.05902,-1.95422 6.7453957,6.7453957 0 0 1 -4.76342,2.13188 q -2.564913,0 -3.886233,-1.49898 a 5.1298318,5.1298318 0 0 1 -1.299113,-3.4643 q 0,-2.77588 1.815427,-4.21379 a 7.3338829,7.3338829 0 0 1 4.669039,-1.3935 q 1.53228,0 2.89802,0.13325 v -0.99932 q 0,-2.63154 -2.53161,-2.63154 -1.79877,0 -5.096518,1.19918 a 4.674587,4.674587 0 0 1 -1.110353,-2.96464 18.581761,18.581761 0 0 1 7.217291,-1.49898 5.8682167,5.8682167 0 0 1 4.0639,1.39905 q 1.56559,1.39904 1.56559,4.23044 v 6.79537 q -0.0111,1.83208 0.9216,2.59822 z m -8.36096,-0.83276 a 4.7134493,4.7134493 0 0 0 3.33106,-1.59891 v -2.94244 a 22.368065,22.368065 0 0 0 -2.53161,-0.13324 2.775883,2.775883 0 0 0 -2.06525,0.68842 2.3928111,2.3928111 0 0 0 -0.69953,1.76546 2.3539488,2.3539488 0 0 0 0.55518,1.66553 1.8431863,1.8431863 0 0 0 1.41015,0.55518 z" + id="path10-7" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" /><path + class="cls-1" + d="m 113.76966,157.00939 a 3.986168,3.986168 0 0 1 0.55518,-1.21583 3.3310596,3.3310596 0 0 1 0.84942,-0.94935 4.1638245,4.1638245 0 0 1 3.51427,2.96464 q 1.33242,-2.96464 4.29707,-2.96464 a 10.215249,10.215249 0 0 1 1.93201,0.23317 7.4782288,7.4782288 0 0 1 -0.99932,3.88624 8.4497879,8.4497879 0 0 0 -1.49897,-0.19987 q -2.03195,0 -3.26444,2.16519 v 10.64829 a 11.575432,11.575432 0 0 1 -2.03195,0.16655 12.769062,12.769062 0 0 1 -2.09857,-0.16655 v -11.15905 q -0.0222,-2.40947 -1.2547,-3.40879 z" + id="path12-4" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" /><path + class="cls-1" + d="m 140.38483,169.73404 a 4.3137222,4.3137222 0 0 1 -0.58293,1.18253 4.0305821,4.0305821 0 0 1 -0.84942,0.94935 3.7640973,3.7640973 0 0 1 -3.05348,-1.95422 6.7453957,6.7453957 0 0 1 -4.76341,2.13188 q -2.56492,0 -3.88624,-1.49898 a 5.1298318,5.1298318 0 0 1 -1.29911,-3.4643 q 0,-2.77588 1.81543,-4.21379 a 7.3338829,7.3338829 0 0 1 4.64682,-1.4157 q 1.53229,0 2.89803,0.13324 v -0.99932 q 0,-2.63153 -2.53161,-2.63153 -1.79877,0 -5.09652,1.19918 a 4.674587,4.674587 0 0 1 -1.11035,-2.96465 18.581761,18.581761 0 0 1 7.21729,-1.49897 5.8682167,5.8682167 0 0 1 4.0639,1.39904 q 1.56559,1.39905 1.56559,4.23045 v 6.81757 q 0.0333,1.83208 0.96601,2.59822 z m -8.37206,-0.83276 a 4.7134493,4.7134493 0 0 0 3.33106,-1.59891 v -2.94244 a 22.368065,22.368065 0 0 0 -2.53161,-0.13324 2.775883,2.775883 0 0 0 -2.06526,0.69952 2.3928111,2.3928111 0 0 0 -0.69952,1.76546 2.3539488,2.3539488 0 0 0 0.55518,1.66553 1.8431863,1.8431863 0 0 0 1.41015,0.54408 z" + id="path14-5" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" /><path + class="cls-1" + d="m 144.48203,169.6008 q -1.49897,-2.29843 -1.49897,-6.34567 0,-4.04724 1.8987,-6.34567 a 5.740526,5.740526 0 0 1 4.56355,-2.29843 6.4400486,6.4400486 0 0 1 4.49693,1.66553 3.7696491,3.7696491 0 0 1 2.63154,-1.43235 3.1200925,3.1200925 0 0 1 0.88273,0.93269 3.8862362,3.8862362 0 0 1 0.55518,1.16587 q -0.9327,0.79946 -0.9327,2.86472 v 9.438 q 0,5.29638 -1.73215,7.49488 -1.73215,2.1985 -5.69611,2.22071 a 16.100121,16.100121 0 0 1 -5.9626,-1.11036 4.4802752,4.4802752 0 0 1 1.03263,-3.03126 10.892565,10.892565 0 0 0 4.48028,1.03263 q 2.18184,0 3.0146,-1.11035 a 4.9965894,4.9965894 0 0 0 0.83277,-3.06458 v -1.33242 a 6.4011862,6.4011862 0 0 1 -4.16383,1.56559 4.9188647,4.9188647 0 0 1 -4.40255,-2.30953 z m 8.56083,-2.69816 v -7.72806 a 4.2915151,4.2915151 0 0 0 -2.86471,-1.36573 2.4039147,2.4039147 0 0 0 -2.18185,1.43235 8.6885138,8.6885138 0 0 0 -0.7828,4.09721 q 0,2.66485 0.71618,3.93065 a 2.1318781,2.1318781 0 0 0 1.88205,1.2658 4.2304457,4.2304457 0 0 0 3.23113,-1.63222 z" + id="path16-2" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" /><path + class="cls-1" + d="m 174.20619,164.67083 h -9.32697 a 5.6405943,5.6405943 0 0 0 0.88273,3.04792 q 0.7828,1.0826 2.74813,1.0826 a 10.120869,10.120869 0 0 0 4.36369,-1.16587 4.3803434,4.3803434 0 0 1 1.19918,2.5316 10.759323,10.759323 0 0 1 -6.41229,1.8987 q -3.74744,0 -5.37966,-2.43167 -1.63222,-2.43167 -1.63222,-6.2957 0,-3.88624 1.79877,-6.2957 a 6.0181143,6.0181143 0 0 1 5.14649,-2.43168 q 3.33106,0 5.14648,2.01529 a 7.3449864,7.3449864 0 0 1 1.79878,5.07987 13.04665,13.04665 0 0 1 -0.33311,2.96464 z m -6.42895,-7.06184 q -2.73146,0 -2.93133,4.13051 h 5.79605 v -0.39973 a 4.7245529,4.7245529 0 0 0 -0.69953,-2.69816 2.4316735,2.4316735 0 0 0 -2.14298,-1.03262 z" + id="path18-5" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" /><path + id="path24-3-6-4" + style="fill:#ffd952;fill-opacity:1;stroke-width:0.569924" + d="m 124.80273,70.162462 a 11.0036,11.0036 0 0 0 -4.33203,0.935547 L 76.261719,90.656602 a 1.5989086,1.5989086 0 0 0 -0.837891,2.138672 0.77169547,0.77169547 0 0 0 0.06641,0.177735 l 7.09375,14.021481 h 6.15625 l -0.875,-4.88867 c -0.07217,-0.39418 -0.711263,-3.187532 -1.316406,-5.197264 l 20.691398,6.462894 c 0.27198,1.28839 0.63292,2.49204 1.0625,3.62304 h 33.54883 c 0.36964,-1.13128 0.66138,-2.33705 0.85938,-3.62304 l 20.64648,-6.445316 c -0.60514,2.009734 -1.23639,4.785506 -1.30859,5.179686 l -0.875,4.88867 h 6.15429 l 7.02735,-13.894528 0.0664,-0.126953 0.0684,-0.171875 a 0.10548355,0.10548355 0 0 0 0,-0.04492 1.4878733,1.4878733 0 0 0 0.0664,-0.515625 1.5822533,1.5822533 0 0 0 -0.99414,-1.583985 L 129.35352,71.098009 a 11.0036,11.0036 0 0 0 -4.55079,-0.935547 z" /><path + id="path24-3-7" + style="fill:#49c8fa;fill-opacity:1;stroke-width:0.569924" + d="M 124.80273,79.416133 A 11.0036,11.0036 0 0 0 120.4707,80.35168 L 76.261719,99.910272 a 1.5989086,1.5989086 0 0 0 -0.837891,2.136718 0.77169547,0.77169547 0 0 0 0.06641,0.17773 l 3.847657,7.60352 h 8.175781 c -0.257897,-1.08856 -0.591943,-2.42953 -0.964844,-3.66797 l 11.744141,3.66797 h 53.371087 l 11.69336,-3.65039 c -0.37193,1.23522 -0.70076,2.56719 -0.95703,3.65039 h 8.17383 l 3.78125,-7.47656 0.0664,-0.12696 0.0684,-0.17187 a 0.10548355,0.10548355 0 0 0 0,-0.0449 1.4878733,1.4878733 0 0 0 0.0664,-0.51563 1.5822533,1.5822533 0 0 0 -0.99414,-1.582028 L 129.35352,80.35168 a 11.0036,11.0036 0 0 0 -4.55079,-0.935547 z" /><path + class="cls-2" + d="m 174.55595,110.92974 a 1.4878733,1.4878733 0 0 1 -0.0666,0.51631 0.10548355,0.10548355 0 0 1 0,0.0444 l -0.0666,0.17211 v 0 l -0.0666,0.12769 -10.69826,21.15223 c -1.48787,2.93688 -4.22489,2.84806 -3.76409,-0.12214 l 2.15408,-12.02512 c 0.0722,-0.39418 0.70508,-3.17006 1.31022,-5.1798 l -20.64702,6.4456 c -3.24223,21.05785 -30.95109,21.40761 -35.47023,0 l -20.691432,-6.46226 c 0.605143,2.00974 1.243596,4.80228 1.315769,5.19646 l 2.154085,12.02512 c 0.460796,2.9702 -2.276224,3.05902 -3.764098,0.12214 L 75.49024,111.66257 a 0.77169547,0.77169547 0 0 1 -0.06662,-0.17766 1.5989086,1.5989086 0 0 1 0.838317,-2.13743 L 120.47065,89.788613 a 11.0036,11.0036 0 0 1 8.88282,0 l 44.20871,19.558867 a 1.5822533,1.5822533 0 0 1 0.99377,1.58226 z" + id="path24-4" + style="fill:#ffd952;stroke-width:0.569924" /><path + class="cls-3" + d="m 139.0413,114.61611 19.11473,-7.69475 a 0.81055784,0.81055784 0 0 0 0,-1.50453 c -2.2207,-0.92714 -4.96328,-1.99308 -7.65033,-3.10899 -0.49411,-0.20541 -5.17425,3.15341 -5.60173,3.49762 l -8.23882,6.58439 c -1.99309,1.67108 -0.26649,3.28665 2.37615,2.22626 z" + id="path26-4" + style="fill:#45c8ff;stroke-width:0.569924" /><circle + class="cls-3" + cx="125.18409" + cy="122.13319" + r="9.9654207" + id="circle28-30" + style="fill:#45c8ff;stroke-width:0.569924" /><path + d="m 138.33068,100.19817 a 8.327649,8.327649 0 0 1 -2.77589,-0.288688 l -34.78736,-9.388036 a 8.4442361,8.4442361 0 0 1 -2.620433,-1.238044 z" + id="path6-0-7" + style="stroke-width:0.569924" /><path + class="cls-1" + d="m 85.377935,159.27452 5.163143,-0.0333 h 0.06662 q 2.864711,0 2.864711,2.69816 v 8.69407 a 24.849705,24.849705 0 0 1 -8.649651,1.43235 q -4.730105,0 -7.128468,-3.21447 -2.398363,-3.21447 -2.398363,-8.76068 0,-5.55177 2.981299,-8.62745 a 9.7600046,9.7600046 0 0 1 7.29502,-3.08123 13.368653,13.368653 0 0 1 7.811335,2.43167 3.9250986,3.9250986 0 0 1 -0.682867,1.76547 4.7634152,4.7634152 0 0 1 -1.282458,1.33242 9.798867,9.798867 0 0 0 -5.679457,-1.96533 5.3574542,5.3574542 0 0 0 -4.480275,2.04861 q -1.598909,2.03749 -1.598909,6.41229 0,8.22771 6.062529,8.22771 a 16.910679,16.910679 0 0 0 3.697476,-0.43303 v -3.16451 q 0,-1.49898 0.06662,-2.22071 h -2.442777 a 2.2873276,2.2873276 0 0 1 -1.515632,-0.41638 1.6655298,1.6655298 0 0 1 -0.483004,-1.33242 5.7072154,5.7072154 0 0 1 0.333106,-1.79322 z" + id="path8-6-8" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" /><path + class="cls-1" + d="m 111.07151,169.73404 a 4.3137222,4.3137222 0 0 1 -0.55518,1.18253 4.0305821,4.0305821 0 0 1 -0.84942,0.94935 3.7640973,3.7640973 0 0 1 -3.05902,-1.95422 6.7453957,6.7453957 0 0 1 -4.76342,2.13188 q -2.564913,0 -3.886233,-1.49898 a 5.1298318,5.1298318 0 0 1 -1.299113,-3.4643 q 0,-2.77588 1.815427,-4.21379 a 7.3338829,7.3338829 0 0 1 4.669039,-1.3935 q 1.53228,0 2.89802,0.13325 v -0.99932 q 0,-2.63154 -2.53161,-2.63154 -1.79877,0 -5.096518,1.19918 a 4.674587,4.674587 0 0 1 -1.110353,-2.96464 18.581761,18.581761 0 0 1 7.217291,-1.49898 5.8682167,5.8682167 0 0 1 4.0639,1.39905 q 1.56559,1.39904 1.56559,4.23044 v 6.79537 q -0.0111,1.83208 0.9216,2.59822 z m -8.36096,-0.83276 a 4.7134493,4.7134493 0 0 0 3.33106,-1.59891 v -2.94244 a 22.368065,22.368065 0 0 0 -2.53161,-0.13324 2.775883,2.775883 0 0 0 -2.06525,0.68842 2.3928111,2.3928111 0 0 0 -0.69953,1.76546 2.3539488,2.3539488 0 0 0 0.55518,1.66553 1.8431863,1.8431863 0 0 0 1.41015,0.55518 z" + id="path10-2-6" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" /><path + class="cls-1" + d="m 113.76966,157.00939 a 3.986168,3.986168 0 0 1 0.55518,-1.21583 3.3310596,3.3310596 0 0 1 0.84942,-0.94935 4.1638245,4.1638245 0 0 1 3.51427,2.96464 q 1.33242,-2.96464 4.29707,-2.96464 a 10.215249,10.215249 0 0 1 1.93201,0.23317 7.4782288,7.4782288 0 0 1 -0.99932,3.88624 8.4497879,8.4497879 0 0 0 -1.49897,-0.19987 q -2.03195,0 -3.26444,2.16519 v 10.64829 a 11.575432,11.575432 0 0 1 -2.03195,0.16655 12.769062,12.769062 0 0 1 -2.09857,-0.16655 v -11.15905 q -0.0222,-2.40947 -1.2547,-3.40879 z" + id="path12-6-8" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" /><path + class="cls-1" + d="m 140.38483,169.73404 a 4.3137222,4.3137222 0 0 1 -0.58293,1.18253 4.0305821,4.0305821 0 0 1 -0.84942,0.94935 3.7640973,3.7640973 0 0 1 -3.05348,-1.95422 6.7453957,6.7453957 0 0 1 -4.76341,2.13188 q -2.56492,0 -3.88624,-1.49898 a 5.1298318,5.1298318 0 0 1 -1.29911,-3.4643 q 0,-2.77588 1.81543,-4.21379 a 7.3338829,7.3338829 0 0 1 4.64682,-1.4157 q 1.53229,0 2.89803,0.13324 v -0.99932 q 0,-2.63153 -2.53161,-2.63153 -1.79877,0 -5.09652,1.19918 a 4.674587,4.674587 0 0 1 -1.11035,-2.96465 18.581761,18.581761 0 0 1 7.21729,-1.49897 5.8682167,5.8682167 0 0 1 4.0639,1.39904 q 1.56559,1.39905 1.56559,4.23045 v 6.81757 q 0.0333,1.83208 0.96601,2.59822 z m -8.37206,-0.83276 a 4.7134493,4.7134493 0 0 0 3.33106,-1.59891 v -2.94244 a 22.368065,22.368065 0 0 0 -2.53161,-0.13324 2.775883,2.775883 0 0 0 -2.06526,0.69952 2.3928111,2.3928111 0 0 0 -0.69952,1.76546 2.3539488,2.3539488 0 0 0 0.55518,1.66553 1.8431863,1.8431863 0 0 0 1.41015,0.54408 z" + id="path14-1-8" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" /><path + class="cls-1" + d="m 144.48203,169.6008 q -1.49897,-2.29843 -1.49897,-6.34567 0,-4.04724 1.8987,-6.34567 a 5.740526,5.740526 0 0 1 4.56355,-2.29843 6.4400486,6.4400486 0 0 1 4.49693,1.66553 3.7696491,3.7696491 0 0 1 2.63154,-1.43235 3.1200925,3.1200925 0 0 1 0.88273,0.93269 3.8862362,3.8862362 0 0 1 0.55518,1.16587 q -0.9327,0.79946 -0.9327,2.86472 v 9.438 q 0,5.29638 -1.73215,7.49488 -1.73215,2.1985 -5.69611,2.22071 a 16.100121,16.100121 0 0 1 -5.9626,-1.11036 4.4802752,4.4802752 0 0 1 1.03263,-3.03126 10.892565,10.892565 0 0 0 4.48028,1.03263 q 2.18184,0 3.0146,-1.11035 a 4.9965894,4.9965894 0 0 0 0.83277,-3.06458 v -1.33242 a 6.4011862,6.4011862 0 0 1 -4.16383,1.56559 4.9188647,4.9188647 0 0 1 -4.40255,-2.30953 z m 8.56083,-2.69816 v -7.72806 a 4.2915151,4.2915151 0 0 0 -2.86471,-1.36573 2.4039147,2.4039147 0 0 0 -2.18185,1.43235 8.6885138,8.6885138 0 0 0 -0.7828,4.09721 q 0,2.66485 0.71618,3.93065 a 2.1318781,2.1318781 0 0 0 1.88205,1.2658 4.2304457,4.2304457 0 0 0 3.23113,-1.63222 z" + id="path16-8-4" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" /><path + class="cls-1" + d="m 174.20619,164.67083 h -9.32697 a 5.6405943,5.6405943 0 0 0 0.88273,3.04792 q 0.7828,1.0826 2.74813,1.0826 a 10.120869,10.120869 0 0 0 4.36369,-1.16587 4.3803434,4.3803434 0 0 1 1.19918,2.5316 10.759323,10.759323 0 0 1 -6.41229,1.8987 q -3.74744,0 -5.37966,-2.43167 -1.63222,-2.43167 -1.63222,-6.2957 0,-3.88624 1.79877,-6.2957 a 6.0181143,6.0181143 0 0 1 5.14649,-2.43168 q 3.33106,0 5.14648,2.01529 a 7.3449864,7.3449864 0 0 1 1.79878,5.07987 13.04665,13.04665 0 0 1 -0.33311,2.96464 z m -6.42895,-7.06184 q -2.73146,0 -2.93133,4.13051 h 5.79605 v -0.39973 a 4.7245529,4.7245529 0 0 0 -0.69953,-2.69816 2.4316735,2.4316735 0 0 0 -2.14298,-1.03262 z" + id="path18-7-3" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" /><path + id="path24-3-6-9-1" + style="fill:#ff9329;fill-opacity:1;stroke-width:0.569924" + d="m 124.80273,70.162462 a 11.0036,11.0036 0 0 0 -4.33203,0.935547 L 76.261719,90.656602 a 1.5989086,1.5989086 0 0 0 -0.837891,2.138672 0.77169547,0.77169547 0 0 0 0.06641,0.177735 l 7.09375,14.021481 h 6.15625 l -0.875,-4.88867 c -0.07217,-0.39418 -0.711263,-3.187532 -1.316406,-5.197264 l 20.691398,6.462894 c 0.27198,1.28839 0.63292,2.49204 1.0625,3.62304 h 33.54883 c 0.36964,-1.13128 0.66138,-2.33705 0.85938,-3.62304 l 20.64648,-6.445316 c -0.60514,2.009734 -1.23639,4.785506 -1.30859,5.179686 l -0.875,4.88867 h 6.15429 l 7.02735,-13.894528 0.0664,-0.126953 0.0684,-0.171875 a 0.10548355,0.10548355 0 0 0 0,-0.04492 1.4878733,1.4878733 0 0 0 0.0664,-0.515625 1.5822533,1.5822533 0 0 0 -0.99414,-1.583985 L 129.35352,71.098009 a 11.0036,11.0036 0 0 0 -4.55079,-0.935547 z" /><path + id="path24-3-2-4" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" + d="M 124.80273,79.416133 A 11.0036,11.0036 0 0 0 120.4707,80.35168 L 76.261719,99.910272 a 1.5989086,1.5989086 0 0 0 -0.837891,2.136718 0.77169547,0.77169547 0 0 0 0.06641,0.17773 l 3.847657,7.60352 h 8.175781 c -0.257897,-1.08856 -0.591943,-2.42953 -0.964844,-3.66797 l 11.744141,3.66797 h 53.371087 l 11.69336,-3.65039 c -0.37193,1.23522 -0.70076,2.56719 -0.95703,3.65039 h 8.17383 l 3.78125,-7.47656 0.0664,-0.12696 0.0684,-0.17187 a 0.10548355,0.10548355 0 0 0 0,-0.0449 1.4878733,1.4878733 0 0 0 0.0664,-0.51563 1.5822533,1.5822533 0 0 0 -0.99414,-1.582028 L 129.35352,80.35168 a 11.0036,11.0036 0 0 0 -4.55079,-0.935547 z" /><path + class="cls-2" + d="m 174.55595,110.92974 a 1.4878733,1.4878733 0 0 1 -0.0666,0.51631 0.10548355,0.10548355 0 0 1 0,0.0444 l -0.0666,0.17211 v 0 l -0.0666,0.12769 -10.69826,21.15223 c -1.48787,2.93688 -4.22489,2.84806 -3.76409,-0.12214 l 2.15408,-12.02512 c 0.0722,-0.39418 0.70508,-3.17006 1.31022,-5.1798 l -20.64702,6.4456 c -3.24223,21.05785 -30.95109,21.40761 -35.47023,0 l -20.691432,-6.46226 c 0.605143,2.00974 1.243596,4.80228 1.315769,5.19646 l 2.154085,12.02512 c 0.460796,2.9702 -2.276224,3.05902 -3.764098,0.12214 L 75.49024,111.66257 a 0.77169547,0.77169547 0 0 1 -0.06662,-0.17766 1.5989086,1.5989086 0 0 1 0.838317,-2.13743 L 120.47065,89.788613 a 11.0036,11.0036 0 0 1 8.88282,0 l 44.20871,19.558867 a 1.5822533,1.5822533 0 0 1 0.99377,1.58226 z" + id="path24-0-9" + style="fill:#ff9329;fill-opacity:1;stroke-width:0.569924" /><path + class="cls-3" + d="m 139.0413,114.61611 19.11473,-7.69475 a 0.81055784,0.81055784 0 0 0 0,-1.50453 c -2.2207,-0.92714 -4.96328,-1.99308 -7.65033,-3.10899 -0.49411,-0.20541 -5.17425,3.15341 -5.60173,3.49762 l -8.23882,6.58439 c -1.99309,1.67108 -0.26649,3.28665 2.37615,2.22626 z" + id="path26-2-2" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" /><circle + class="cls-3" + cx="125.18409" + cy="122.13319" + r="9.9654207" + id="circle28-3-0" + style="fill:#4e4e4e;fill-opacity:1;stroke-width:0.569924" /></g></g><text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="118.24205" + y="182.54555" + id="text1882"><tspan + sodipodi:role="line" + id="tspan1880" + x="118.24205" + y="182.54555" + style="font-size:5.64444px;stroke-width:0.264583px">*(not really a database)</tspan></text></g><g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="Layer 2" + style="display:inline"><rect + style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.265;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect13086-2" + width="154.11569" + height="77.61647" + x="33.112736" + y="109.40408" /><image + width="65.039139" + height="65.039139" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABmJLR0QA/wD/AP+gvaeTAAAgAElE QVR4nO3debxddX3v/9fnG4aQAYgQhqiAcQASLWIcqqBYxKEK1TpUH3qx2sd1eLS92tbWsbe1va11 6PWn1qpwb2uLQyveqjU4IbaCwWolCMUEEA2DSoCACZBAmL6f3x9rHziJCRnY53z32ev1fDzWI2ft nCw++3D2+r7XWt8BJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmS JEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmS JEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmS JEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmS JEmSJEmSJEmSJI2iaF2ApKHbG5gzaX8PYP6k/QD23+rfbABy0v6twN2T9m8D7hhijZIaMwBIbc0H DgEOBPYb7O8HzAXmllL2Hbw2NzPn0jXc8yb+HlhA19jvPc1130EXCtYDmwbbRmBDREzs31prvXnw fZuAm+mCxc3AjcB1g31JDRgApOGaCzyYrkFfOPjzkFLKgcCBmbkQOHjS3013wz1q7qALA+uA6yLi RuDGWus64PrB6zcOtp/RBQlJQ2AAkHbNAmAxsAg4tJSyGFicmROvHYKfq6m0GbgWWBMRa2qta4C1 E68BVwG1XXnSzOGJStrSHODIwfaoUsoRmXkYMLH1/Yp91N0BXANcExHX1FqvAn4IXD7YbmtYmzRS DADqq4kr+aWllCV0V/FLgaOA0rQyTaW1wKrB3YPVwCq6OwdXsmUnSGnsGQA07g4AlgHHllKOzMyj 6a7uF7QtSyNmPXB5RKyutV4OXASsBG5qW5Y0dQwAGif7AY8BlpVSlmXmMuBo/D3X7lsLrMzMlXSB 4D/pOidKM54nRs1U+wOPxsZe089QoLHgyVIzxcOAp5VSnp6ZT6N7fi+NijURcV6t9ZvAuXSjEaSR ZgDQqFoMHF9KOS4zn0kXAKSZYm1ErKi1ngOcD6zGToYaMQYAjYqjgRNKKU/LzBPoxtRL4+LaiPhm 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 P2vmuIUtH0lsb+TDgklfz6JrvDVzXJSZH6Obvc/JsbRDBgDtjmWllNdm5ivwKk5qaXNELK+1no4d +7SLDAB6IBYAL42Il9OtbubvkzT1KrAiMz8NfIb+9iHRA+QJW8PyELqFh04FlrUuRhpDqzPzs8An gB+3LkYznwFAU+GXSikvz8yX0g3ZkrR7roqIz9RaPwVc0roYjRcDgKbaUuDkiDgFeAr+zkk7snrw XP8s4Hy6KXulofNkrOm0mG5Fwucys9dKl4bpDuBbmfll4AvAlY3rUU8YANTKHOAppZRTMvP5dLO5 SX1xXUR8vda6HPga3VBNaVoZADQqjgSeVko5ITOfTjftqzQufhoR36y1ngecC/ywdUGSAUCjahFw XCnlpMw8nm5BF2mmWBsRK2qt59A9x1/VuiBpawYAzRSHAycM7hA8DXhE64KkSa6IiPNqrefSXeFf 07ogaUcMAJqp9gMeQzcr4bLMXAYcjb/TmnprgZWZuRJYCXwXuKFtSdKu82SpcbIv8EsYCjQ8Wzf2 36FbuEma8TwxatwtAB4HHFtKOTIzjwaOoluRTppwE3BZRFxaa70MuIiuwXeaXY0tA4D6agHdvARL SylLgMWZuZRuNMKsppVpKq0FVkXEmlrrarrOeWsGm9QrBgBpS/vQhYAjgUeVUg7PzMOAw+g6Is5u WZx2aDNwNXBNRFxTa72absjd5YPt9pbFSaPEACDtmgV0QxQPBRaXUhbT3T2YeO0IoLQrb+ytp7uK v3ZwFT9x9b4WuBa4im61PEk7YACQhmsfuiBwEHAgsBA4qJRyEHBgZi4cvHbw4O/3aVXoiLgduBG4 HlgXEeuAG2ut19N1tls36e+vwyt4aWgMAFJb87gvEMwH9h+8NheYW0pZMPE1MC8z96ebRnku3aiH fYE96YZFTqebgbvoprC9BdgE3BYRG4CNg/1Ntdb1E18PXt8A3ErXoN8weF1SAwYAafwEXZCYbMEO 9tfvYH8DrkonSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk SZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk SZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk SZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk SZIkSZIkSdKU+/8B8UD79J00AfcAAAAASUVORK5CYII= " + id="image7444" + x="42.921436" + y="103.45746" + style="stroke-width:2.08285" /><image + width="34.06498" + height="34.06498" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image13044" + x="74.692276" + y="130.02034" + style="stroke-width:3.97671" /><text + xml:space="preserve" + style="font-size:12.7px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583" + x="73.229004" + y="183.68733" + id="text4115-3-5"><tspan + sodipodi:role="line" + style="font-size:12.7px;stroke-width:0.264583" + x="73.229004" + y="183.68733" + id="tspan4117-6-6">Database</tspan></text><rect + style="fill:#ffffff;fill-opacity:0.733011;stroke:none;stroke-width:1.265;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect13086" + width="130.82137" + height="113.0019" + x="37.281914" + y="74.605423" /></g><g + inkscape:groupmode="layer" + id="layer3" + inkscape:label="Layer 3" + style="display:none;fill:#ffffff" + sodipodi:insensitive="true"><rect + style="display:inline;fill:#ffffff;fill-opacity:1;stroke-width:1.2745" + id="rect2004" + width="172.00893" + height="19.827272" + x="80.964157" + y="52.231174" /><rect + style="fill:#ffffff;fill-opacity:0.703087;stroke-width:1.2745" + id="rect2006" + width="185.24678" + height="32.308674" + x="77.66877" + y="16.311932" /><text + xml:space="preserve" + style="font-size:12.7px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke-width:0.264583" + x="169.47803" + y="66.103424" + id="text4115-0"><tspan + sodipodi:role="line" + style="font-size:12.7px;fill:#000000;fill-opacity:1;stroke-width:0.264583" + x="169.47803" + y="66.103424" + id="tspan4117-4"><tspan + style="font-style:normal;font-weight:bold;fill:#000000;fill-opacity:1" + id="tspan2744">Custom</tspan> user-facing application</tspan></text><path + style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1.05833;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1" + d="M 81.62001,34.797981 H 251.8384" + id="path2876" /></g></svg> diff --git a/doc/talks/2023-01-18-tocatta/talk.pdf b/doc/talks/2023-01-18-tocatta/talk.pdf Binary files differnew file mode 100644 index 00000000..97966061 --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/talk.pdf diff --git a/doc/talks/2023-01-18-tocatta/talk.tex b/doc/talks/2023-01-18-tocatta/talk.tex new file mode 100644 index 00000000..43399d8e --- /dev/null +++ b/doc/talks/2023-01-18-tocatta/talk.tex @@ -0,0 +1,935 @@ +%\nonstopmode +\documentclass[aspectratio=169]{beamer} +\usepackage[utf8]{inputenc} +% \usepackage[frenchb]{babel} +\usepackage{amsmath} +\usepackage{mathtools} +\usepackage{breqn} +\usepackage{multirow} +\usetheme{boxes} +\usepackage{graphicx} +\usepackage{import} +\usepackage{adjustbox} +%\useoutertheme[footline=authortitle,subsection=false]{miniframes} +%\useoutertheme[footline=authorinstitute,subsection=false]{miniframes} +\useoutertheme{infolines} +\setbeamertemplate{headline}{} + +\beamertemplatenavigationsymbolsempty + +\definecolor{TitleOrange}{RGB}{255,137,0} +\setbeamercolor{title}{fg=TitleOrange} +\setbeamercolor{frametitle}{fg=TitleOrange} + +\definecolor{ListOrange}{RGB}{255,145,5} +\setbeamertemplate{itemize item}{\color{ListOrange}$\blacktriangleright$} + +\definecolor{verygrey}{RGB}{70,70,70} +\setbeamercolor{normal text}{fg=verygrey} + + +\usepackage{tabu} +\usepackage{multicol} +\usepackage{vwcol} +\usepackage{stmaryrd} +\usepackage{graphicx} + +\usepackage[normalem]{ulem} + +\AtBeginSection[]{ + \begin{frame} + \vfill + \centering + \begin{beamercolorbox}[sep=8pt,center,shadow=true,rounded=true]{title} + \usebeamerfont{title}\insertsectionhead\par% + \end{beamercolorbox} + \vfill + \end{frame} +} + +\title{Garage} +\subtitle{a lightweight and robust geo-distributed data storage system} +\author{Alex Auvolat, Deuxfleurs Association} +\date{Inria, 2023-01-18} + +\begin{document} + +\begin{frame} + \centering + \includegraphics[width=.3\linewidth]{../../sticker/Garage.pdf} + \vspace{1em} + + {\large\bf Alex Auvolat, Deuxfleurs Association} + \vspace{1em} + + \url{https://garagehq.deuxfleurs.fr/} + + Matrix channel: \texttt{\#garage:deuxfleurs.fr} +\end{frame} + +\begin{frame} + \frametitle{Who I am} + \begin{columns}[t] + \begin{column}{.2\textwidth} + \centering + \adjincludegraphics[width=.4\linewidth, valign=t]{assets/alex.jpg} + \end{column} + \begin{column}{.6\textwidth} + \textbf{Alex Auvolat}\\ + PhD; co-founder of Deuxfleurs + \end{column} + \begin{column}{.2\textwidth} + ~ + \end{column} + \end{columns} + \vspace{2em} + + \begin{columns}[t] + \begin{column}{.2\textwidth} + \centering + \adjincludegraphics[width=.5\linewidth, valign=t]{assets/deuxfleurs.pdf} + \end{column} + \begin{column}{.6\textwidth} + \textbf{Deuxfleurs}\\ + A non-profit self-hosting collective,\\ + member of the CHATONS network + \end{column} + \begin{column}{.2\textwidth} + \centering + \adjincludegraphics[width=.7\linewidth, valign=t]{assets/logo_chatons.png} + \end{column} + \end{columns} + +\end{frame} + +\begin{frame} + \frametitle{Our objective at Deuxfleurs} + + \begin{center} + \textbf{Promote self-hosting and small-scale hosting\\ + as an alternative to large cloud providers} + \end{center} + \vspace{2em} + \visible<2->{ + Why is it hard? + } + \visible<3->{ + \vspace{2em} + \begin{center} + \textbf{\underline{Resilience}}\\ + {\footnotesize (we want good uptime/availability with low supervision)} + \end{center} + } +\end{frame} + +\begin{frame} + \frametitle{How to make a \underline{stable} system} + + Enterprise-grade systems typically employ: + \vspace{1em} + \begin{itemize} + \item RAID + \item Redundant power grid + UPS + \item Redundant Internet connections + \item Low-latency links + \item ... + \end{itemize} + \vspace{1em} + $\to$ it's costly and only worth it at DC scale +\end{frame} + +\begin{frame} + \frametitle{How to make a \underline{resilient} system} + + \only<1,4-5>{ + Instead, we use: + \vspace{1em} + \begin{itemize} + \item \textcolor<2->{gray}{Commodity hardware (e.g. old desktop PCs)} + \vspace{.5em} + \item<4-> \textcolor<5->{gray}{Commodity Internet (e.g. FTTB, FTTH) and power grid} + \vspace{.5em} + \item<5-> \textcolor<6->{gray}{\textbf{Geographical redundancy} (multi-site replication)} + \end{itemize} + } + \only<2>{ + \begin{center} + \includegraphics[width=.8\linewidth]{assets/atuin.jpg} + \end{center} + } + \only<3>{ + \begin{center} + \includegraphics[width=.8\linewidth]{assets/neptune.jpg} + \end{center} + } + \only<6>{ + \begin{center} + \includegraphics[width=.5\linewidth]{assets/inframap.jpg} + \end{center} + } +\end{frame} + +\begin{frame} + \frametitle{How to make this happen} + \begin{center} + \only<1>{\includegraphics[width=.8\linewidth]{assets/slide1.png}}% + \only<2>{\includegraphics[width=.8\linewidth]{assets/slide2.png}}% + \only<3>{\includegraphics[width=.8\linewidth]{assets/slide3.png}}% + \end{center} +\end{frame} + +\begin{frame} + \frametitle{Distributed file systems are slow} + File systems are complex, for example: + \vspace{1em} + \begin{itemize} + \item Concurrent modification by several processes + \vspace{1em} + \item Folder hierarchies + \vspace{1em} + \item Other requirements of the POSIX spec (e.g.~locks) + \end{itemize} + \vspace{1em} + Coordination in a distributed system is costly + + \vspace{1em} + Costs explode with commodity hardware / Internet connections\\ + {\small (we experienced this!)} +\end{frame} + +\begin{frame} + \frametitle{A simpler solution: object storage} + Only two operations: + \vspace{1em} + \begin{itemize} + \item Put an object at a key + \vspace{1em} + \item Retrieve an object from its key + \end{itemize} + \vspace{1em} + {\footnotesize (and a few others)} + + \vspace{1em} + Sufficient for many applications! +\end{frame} + +\begin{frame} + \frametitle{A simpler solution: object storage} + \begin{center} + \includegraphics[height=6em]{../2020-12-02_wide-team/img/Amazon-S3.jpg} + \hspace{3em} + \includegraphics[height=5em]{assets/minio.png} + \hspace{3em} + \includegraphics[height=6em]{../../logo/garage_hires_crop.png} + \end{center} + \vspace{1em} + S3: a de-facto standard, many compatible applications + + \vspace{1em} + + MinIO is self-hostable but not suited for geo-distributed deployments + + \vspace{1em} + + \textbf{Garage is a self-hosted drop-in replacement for the Amazon S3 object store} +\end{frame} + + +\begin{frame} + \frametitle{The data model of object storage} + Object storage is basically a key-value store: + \vspace{1em} + + \begin{center} + \begin{tabular}{|l|p{8cm}|} + \hline + \textbf{Key: file path + name} & \textbf{Value: file data + metadata} \\ + \hline + \hline + \texttt{index.html} & + \texttt{Content-Type: text/html; charset=utf-8} \newline + \texttt{Content-Length: 24929} \newline + \texttt{<binary blob>} \\ + \hline + \texttt{img/logo.svg} & + \texttt{Content-Type: text/svg+xml} \newline + \texttt{Content-Length: 13429} \newline + \texttt{<binary blob>} \\ + \hline + \texttt{download/index.html} & + \texttt{Content-Type: text/html; charset=utf-8} \newline + \texttt{Content-Length: 26563} \newline + \texttt{<binary blob>} \\ + \hline + \end{tabular} + \end{center} + +\end{frame} + +\begin{frame} + \frametitle{Garage's architecture} + \begin{center} + \includegraphics[width=.35\linewidth]{assets/garage.drawio.pdf} + \end{center} +\end{frame} + +\begin{frame} + \frametitle{Two big problems} + \begin{enumerate} + \item \textbf{How to place data on different nodes?}\\ + \vspace{1em} + \underline{Constraints:} heterogeneous hardware\\ + \underline{Objective:} $n$ copies of everything, maximize usable capacity, maximize resilience\\ + \vspace{1em} + $\to$ the Dynamo model + optimization algorithms + \vspace{2em} + \item<2-> \textbf{How to guarantee consistency?}\\ + \vspace{1em} + \underline{Constraints:} slow network (geographical distance), node unavailability/crashes\\ + \underline{Objective:} maximize availability, read-after-write guarantee\\ + \vspace{1em} + $\to$ CRDTs, monotonicity, read and write quorums + \end{enumerate} +\end{frame} + +\section{Problem 1: placing data} + +\begin{frame} + \frametitle{Key-value stores, upgraded: the Dynamo model} + \textbf{Two keys:} + \begin{itemize} + \item Partition key: used to divide data into partitions {\small (a.k.a.~shards)} + \item Sort key: used to identify items inside a partition + \end{itemize} + + \vspace{1em} + + \begin{center} + \begin{tabular}{|l|l|p{3cm}|} + \hline + \textbf{Partition key: bucket} & \textbf{Sort key: filename} & \textbf{Value} \\ + \hline + \hline + \texttt{website} & \texttt{index.html} & (file data) \\ + \hline + \texttt{website} & \texttt{img/logo.svg} & (file data) \\ + \hline + \texttt{website} & \texttt{download/index.html} & (file data) \\ + \hline + \hline + \texttt{backup} & \texttt{borg/index.2822} & (file data) \\ + \hline + \texttt{backup} & \texttt{borg/data/2/2329} & (file data) \\ + \hline + \texttt{backup} & \texttt{borg/data/2/2680} & (file data) \\ + \hline + \hline + \texttt{private} & \texttt{qq3a2nbe1qjq0ebbvo6ocsp6co} & (file data) \\ + \hline + \end{tabular} + \end{center} +\end{frame} + +\begin{frame} + \frametitle{Key-value stores, upgraded: the Dynamo model} + \begin{itemize} + \item Data with different partition keys is stored independently,\\ + on a different set of nodes\\ + \vspace{.5em} + $\to$ no easy way to list all partition keys\\ + $\to$ no cross-shard transactions\\ + \vspace{2em} + \item Placing data: hash the partition key, select nodes accordingly\\ + \vspace{.5em} + $\to$ distributed hash table (DHT) + \vspace{2em} + \item For a given value of the partition key, items can be listed using their sort keys + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{How to spread files over different cluster nodes?} + \textbf{Consistent hashing (Dynamo):} + \vspace{1em} + + \begin{center} + \only<1>{\includegraphics[width=.40\columnwidth]{assets/consistent_hashing_1.pdf}}% + \only<2>{\includegraphics[width=.40\columnwidth]{assets/consistent_hashing_2.pdf}}% + \only<3>{\includegraphics[width=.40\columnwidth]{assets/consistent_hashing_3.pdf}}% + \only<4>{\includegraphics[width=.40\columnwidth]{assets/consistent_hashing_4.pdf}}% + \end{center} +\end{frame} + +\begin{frame} + \frametitle{Constraint: location-awareness} + \begin{center} + \includegraphics[width=\linewidth]{assets/location-aware.png} + \end{center} + \vspace{2em} + Garage replicates data on different zones when possible +\end{frame} + +\begin{frame} + \frametitle{Constraint: location-awareness} + \begin{center} + \includegraphics[width=.8\linewidth]{assets/map.png} + \end{center} +\end{frame} + +\begin{frame} + \frametitle{Issues with consistent hashing} + \begin{itemize} + \item Consistent hashing doesn't dispatch data based on geographical location of nodes + \vspace{1em} + \item<2-> Geographically aware adaptation, try 1:\\ + data quantities not well balanced between nodes + \vspace{1em} + \item<3-> Geographically aware adaptation, try 2:\\ + too many reshuffles when adding/removing nodes + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{How to spread files over different cluster nodes?} + \textbf{Garage's method: build an index table} + \vspace{1em} + + Realization: we can actually precompute an optimal solution + \vspace{1em} + + \visible<2->{ + \begin{center} + \begin{tabular}{|l|l|l|l|} + \hline + \textbf{Partition} & \textbf{Node 1} & \textbf{Node 2} & \textbf{Node 3} \\ + \hline + \hline + Partition 0 & Io (jupiter) & Drosera (atuin) & Courgette (neptune) \\ + \hline + Partition 1 & Datura (atuin) & Courgette (neptune) & Io (jupiter) \\ + \hline + Partition 2 & Io(jupiter) & Celeri (neptune) & Drosera (atuin) \\ + \hline + \hspace{1em}$\vdots$ & \hspace{1em}$\vdots$ & \hspace{1em}$\vdots$ & \hspace{1em}$\vdots$ \\ + \hline + Partition 255 & Concombre (neptune) & Io (jupiter) & Drosera (atuin) \\ + \hline + \end{tabular} + \end{center} + } + \vspace{1em} + \visible<3->{ + The index table is built centrally using an optimal algorithm,\\ + then propagated to all nodes + } +\end{frame} + +\begin{frame} + \frametitle{The relationship between \emph{partition} and \emph{partition key}} + \begin{center} + \begin{tabular}{|l|l|l|l|} + \hline + \textbf{Partition key} & \textbf{Partition} & \textbf{Sort key} & \textbf{Value} \\ + \hline + \hline + \texttt{website} & Partition 12 & \texttt{index.html} & (file data) \\ + \hline + \texttt{website} & Partition 12 & \texttt{img/logo.svg} & (file data) \\ + \hline + \texttt{website} & Partition 12 &\texttt{download/index.html} & (file data) \\ + \hline + \hline + \texttt{backup} & Partition 42 & \texttt{borg/index.2822} & (file data) \\ + \hline + \texttt{backup} & Partition 42 & \texttt{borg/data/2/2329} & (file data) \\ + \hline + \texttt{backup} & Partition 42 & \texttt{borg/data/2/2680} & (file data) \\ + \hline + \hline + \texttt{private} & Partition 42 & \texttt{qq3a2nbe1qjq0ebbvo6ocsp6co} & (file data) \\ + \hline + \end{tabular} + \end{center} + \vspace{1em} + \textbf{To read or write an item:} hash partition key + \\ \hspace{5cm} $\to$ determine partition number (first 8 bits) + \\ \hspace{5cm} $\to$ find associated nodes +\end{frame} + +\begin{frame} + \frametitle{Garage's internal data structures} + \centering + \includegraphics[width=.75\columnwidth]{assets/garage_tables.pdf} +\end{frame} + +\begin{frame} + \frametitle{Storing and retrieving files} + \begin{center} + \only<1>{\includegraphics[width=.45\linewidth]{assets/garage2a.drawio.pdf}}% + \only<2>{\includegraphics[width=.45\linewidth]{assets/garage2b.drawio.pdf}}% + \end{center} +\end{frame} + +\section{Problem 2: ensuring consistency} + +\begin{frame} + \frametitle{Consensus vs weak consistency} + + \hspace{1em} + \begin{minipage}{7cm} + \textbf{Consensus-based systems:} + \vspace{1em} + \begin{itemize} + \item \textbf{Leader-based:} a leader is elected to coordinate + all reads and writes + \vspace{1em} + \item \textbf{Linearizability} of all operations\\ + (strongest consistency guarantee) + \vspace{1em} + \item Any sequential specification can be implemented as a \textbf{replicated state machine} + \vspace{1em} + \item \textbf{Costly}, the leader is a bottleneck; + leader elections on failure take time + \end{itemize} + \end{minipage} + \hfill + \begin{minipage}{7cm} \visible<2->{ + \textbf{Weakly consistent systems:} + \vspace{1em} + \begin{itemize} + \item \textbf{Nodes are equivalent}, any node + can originate a read or write operation + \vspace{1em} + \item \textbf{Read-after-write consistency} with quorums, + eventual consistency without + \vspace{1em} + \item \textbf{Operations have to commute}, i.e.~we + can only implement CRDTs + \vspace{1em} + \item \textbf{Fast}, no single bottleneck;\\ + works the same with offline nodes + \end{itemize} + } \end{minipage} + \hspace{1em} +\end{frame} + +\begin{frame} + \frametitle{Consensus vs weak consistency} + \begin{center} + \textbf{From a theoretical point of view:}\\ + + \end{center} + \vspace{2em} + + \hspace{1em} + \begin{minipage}{6.5cm} + \underline{Consensus-based systems:} + + \vspace{1em} + + Require \textbf{additional assumptions} such as a fault detector or a strong RNG\\ + (FLP impossibility theorem) + \end{minipage} + \hfill + \begin{minipage}{6.5cm} + \underline{Weakly consistent systems:} + + \vspace{1em} + + Can be implemented in \textbf{any\\asynchronous message passing\\distributed system} with node crashes + \end{minipage} + \hspace{1em} + + \vspace{3em} + \begin{center} + They represent \textbf{different classes of computational capability}\\ + \end{center} +\end{frame} + +\begin{frame} + \frametitle{Consensus vs weak consistency} + \begin{center} + \textbf{The same objects cannot be implemented in both models.} + \end{center} + \vspace{2em} + + \hspace{1em} + \begin{minipage}{6.5cm} + \underline{Consensus-based systems:} + + \vspace{1em} + + \textbf{Any sequential specification}\\~ + + \vspace{1em} + \textbf{Easier to program for}: just write your program as if it were sequential on a single machine + + \end{minipage} + \hfill + \begin{minipage}{6.5cm} + \underline{Weakly consistent systems:} + + \vspace{1em} + + \textbf{Only CRDTs}\\(conflict-free replicated data types) + + \vspace{1em} + Part of the complexity is \textbf{reported to the consumer of the API}\\~ + \end{minipage} + \hspace{1em} +\end{frame} + +\begin{frame} + \frametitle{Understanding the power of consensus} + \textbf{Consensus:} an API with a single operation, $propose(x)$ + \begin{enumerate} + \item nodes all call $propose(x)$ with their proposed value; + \item nodes all receive the same value as a return value, which is one of the proposed values + \end{enumerate} + \vspace{1em} + + \visible<2->{ + \textbf{Equivalent to} a distributed algorithm that gives a total order on all requests + } + \vspace{1em} + + \visible<3->{ + \textbf{Implemented by} this simple replicated state machine: + \vspace{.5em} + \begin{figure} + \centering + \def\svgwidth{.5\textwidth} + \large + \import{assets/}{consensus.pdf_tex} + \end{figure} + \vspace{1em} + } +\end{frame} + +\begin{frame} + \frametitle{Can my object be implemented without consensus?} + \underline{Given the specification of an API:} + \vspace{2em} + \begin{itemize} + \item \textbf{Using this API, we can implement the consensus object} (the $propose$ function)\\ + $\to$ the API is equivalent to consensus/total ordering of messages\\ + $\to$ the API cannot be implemented in a weakly consistent system + \vspace{2em} + \item<2-> \textbf{This API can be implemented using only weak primitives}\\ + (e.g. in the asynchronous message passing model with no further assumption)\\ + $\to$ the API is strictly weaker than consensus\\ + $\to$ we can implement it in Garage! + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Why avoid consensus?} + Consensus can be implemented reasonably well in practice, so why avoid it? + \vspace{2em} + \begin{itemize} + \item \textbf{Software complexity:} RAFT and PAXOS are complex beasts;\\ + harder to prove, harder to reason about + \vspace{1.5em} + \item \textbf{Performance issues:} + \vspace{1em} + \begin{itemize} + \item Theoretical requirements (RNG, failure detector) translate into \textbf{practical costs} + \vspace{1em} + \item The leader is a \textbf{bottleneck} for all requests;\\ + even in leaderless approaches, \textbf{all nodes must process all operations in order} + \vspace{1em} + \item Particularly \textbf{sensitive to higher latency} between nodes + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Performance gains in practice} + \begin{center} + \includegraphics[width=.8\linewidth]{assets/endpoint-latency-dc.png} + \end{center} +\end{frame} + +\begin{frame} + \frametitle{What can we implement without consensus?} + \begin{itemize} + \item Any \textbf{conflict-free replicated data type} (CRDT) + \vspace{1em} + \item<2-> Non-transactional key-value stores such as S3 are equivalent to a simple CRDT:\\ + a map of \textbf{last-writer-wins registers} (each key is its own CRDT) + \vspace{1em} + \item<3-> \textbf{Read-after-write consistency} can be implemented + using quorums on read and write operations + \vspace{1em} + \item<4-> \textbf{Monotonicity of reads} can be implemented with repair-on-read\\ + (makes reads more costly, not implemented in Garage) + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{CRDTs and quorums: read-after-write consistency} + \begin{figure} + \centering + \def\svgwidth{.8\textwidth} + \only<1>{\import{assets/}{lattice1.pdf_tex}}% + \only<2>{\import{assets/}{lattice2.pdf_tex}}% + \only<3>{\import{assets/}{lattice3.pdf_tex}}% + \only<4>{\import{assets/}{lattice4.pdf_tex}}% + \only<5>{\import{assets/}{lattice5.pdf_tex}}% + \only<6>{\import{assets/}{lattice6.pdf_tex}}% + \only<7>{\import{assets/}{lattice7.pdf_tex}}% + \only<8>{\import{assets/}{lattice8.pdf_tex}}% + \end{figure} +\end{frame} + +\begin{frame} + \frametitle{CRDTs and quorums: read-after-write consistency} + \textbf{Property:} If node $A$ did an operation $write(x)$ and received an OK response,\\ + \hspace{2cm} and node $B$ starts an operation $read()$ after $A$ received OK,\\ + \hspace{2cm} then $B$ will read a value $x' \sqsupseteq x$. + + \vspace{1em} + + \hspace{1em} + \begin{minipage}{6.8cm} + \textbf{Algorithm $write(x)$:} + \begin{enumerate} + \item Broadcast $write(x)$ to all nodes + \item Wait for $k > n/2$ nodes to reply OK + \item Return OK + \end{enumerate} + \end{minipage} + \hfill + \begin{minipage}{6.8cm} + \vspace{1em} + \textbf{Algorithm $read()$:} + \begin{enumerate} + \item Broadcast $read()$ to all nodes + \item Wait for $k > n/2$ nodes to reply\\ + with values $x_1, \dots, x_k$ + \item Return $x_1 \sqcup \dots \sqcup x_k$ + \end{enumerate} + \end{minipage} + \hspace{1em} + + \vspace{2em} + \textbf{Why does it work?} There is at least one node at the intersection between the two sets of nodes that replied to each request, that ``saw'' $x$ before the $read()$ started ($x_i \sqsupseteq x$). +\end{frame} + +\begin{frame} + \frametitle{CRDTs and quorums: monotonic-reads consistency} + \begin{figure} + \centering + \def\svgwidth{.8\textwidth} + \only<1>{\import{assets/}{latticeB_1.pdf_tex}}% + \only<2>{\import{assets/}{latticeB_2.pdf_tex}}% + \only<3>{\import{assets/}{latticeB_3.pdf_tex}}% + \only<4>{\import{assets/}{latticeB_4.pdf_tex}}% + \only<5>{\import{assets/}{latticeB_5.pdf_tex}}% + \only<6>{\import{assets/}{latticeB_6.pdf_tex}}% + \only<7>{\import{assets/}{latticeB_7.pdf_tex}}% + \only<8>{\import{assets/}{latticeB_8.pdf_tex}}% + \only<9>{\import{assets/}{latticeB_9.pdf_tex}}% + \only<10>{\import{assets/}{latticeB_10.pdf_tex}}% + \end{figure} +\end{frame} + +\begin{frame} + \frametitle{CRDTs and quorums: monotonic-reads consistency} + \textbf{Property:} If node $A$ did an operation $read()$ and received $x$ as a response,\\ + \hspace{2cm} and node $B$ starts an operation $read()$ after $A$ received $x$,\\ + \hspace{2cm} then $B$ will read a value $x' \sqsupseteq x$. + + \vspace{1em} + + \textbf{Algorithm $monotonic\_read()$:} {\small (a.k.a. repair-on-read)} + \begin{enumerate} + \item Broadcast $read()$ to all nodes + \item Wait for $k > n/2$ nodes to reply with values $x_1, \dots, x_k$ + \item If $x_i \ne x_j$ for some nodes $i$ and $j$,\\ + \hspace{1cm}then call $write(x_1 \sqcup \dots \sqcup x_k)$ and wait for OK from $k' > n/2$ nodes + \item Return $x_1 \sqcup \dots \sqcup x_k$ + \end{enumerate} + + \vspace{1em} + + This makes reads slower in some cases, and is \textbf{not implemented in Garage}. +\end{frame} + +\begin{frame} + \frametitle{A hard problem: layout changes} + \begin{itemize} + \item We rely on quorums $k > n/2$ within each partition:\\ + $$n=3,~~~~~~~k\ge 2$$ + \item<2-> When rebalancing, the set of nodes responsible for a partition can change:\\ + $$\{n_A, n_B, n_C\} \to \{n_A, n_D, n_E\}$$ + \vspace{.01em} + \item<3-> During the rebalancing, $D$ and $E$ don't yet have the data,\\ + ~~~~~~~~~~~~~~~~~~~and $B$ and $C$ want to get rid of the data to free up space\\ + \vspace{.2em} + $\to$ quorums only within the new set of nodes don't work\\ + $\to$ how to coordinate? \textbf{currently, we don't...} + + \end{itemize} +\end{frame} + +\section{Going further than the S3 API} + +\begin{frame} + \frametitle{Using Garage for everything} + \begin{center} + \only<1>{\includegraphics[width=.8\linewidth]{assets/slideB1.png}}% + \only<2>{\includegraphics[width=.8\linewidth]{assets/slideB2.png}}% + \only<3>{\includegraphics[width=.8\linewidth]{assets/slideB3.png}}% + \end{center} +\end{frame} + +\begin{frame} + \frametitle{K2V Design} + \begin{itemize} + \item A new, custom, minimal API\\ + \vspace{.5em} + \begin{itemize} + \item Single-item operations + \item Operations on ranges and batches of items + \item Polling operations to help implement a PubSub pattern + \end{itemize} + \vspace{1em} + \item<2-> Exposes the partitoning mechanism of Garage\\ + K2V = partition key / sort key / value (like Dynamo) + \vspace{1em} + \item<3-> Weakly consistent, CRDT-friendly\\ + $\to$ no support for transactions (not ACID) + \vspace{1em} + \item<4-> Cryptography-friendly: values are binary blobs + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Handling concurrent values} + \textbf{How to handle concurrency?} Example: + \vspace{1em} + \begin{enumerate} + \item Client $A$ reads the initial value of a key, $x_0$ + \vspace{1em} + \item<2-> Client $B$ also reads the initial value $x_0$ of that key + \vspace{1em} + \item<3-> Client $A$ modifies $x_0$, and writes a new value $x_1$ + \vspace{1em} + \item<4-> Client $B$ also modifies $x_0$, and writes a new value $x'_1$,\\ + without having a chance to first read $x_1$\\ + \vspace{1em} + $\to$ what should the final state be? + \end{enumerate} +\end{frame} + +\begin{frame} + \frametitle{Handling concurrent values} + \begin{itemize} + \item If we keep only $x_1$ or $x'_1$, we risk \textbf{loosing application data} + \vspace{1.5em} + \item<2-> Values are opaque binary blobs, \textbf{K2V cannot resolve conflicts} by itself\\ + (e.g. by implementing a CRDT) + \vspace{1.5em} + \item<3-> Solution: \textbf{we keep both!}\\ + $\to$ the value of the key is now $\{x_1, x'_1\}$\\ + $\to$ the client application can decide how to resolve conflicts on the next read + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Keeping track of causality} + How does K2V know that $x_1$ and $x'_1$ are concurrent? + \vspace{1em} + \begin{itemize} + \item $read()$ returns \textbf{a set of values} and an associated \textbf{causality token}\\ + \vspace{1.5em} + \item<2-> When calling $write()$, the client sends \textbf{the causality token from its last read} + \vspace{1.5em} + \item<3-> The causality token represents the set of values \textbf{already seen by the client}\\ + $\to$ those values are the \textbf{causal past} of the write operation\\ + $\to$ K2V can keep concurrent values and overwrite all ones in the causal past + \vspace{1.5em} + \item<4-> Internally, the causality token is \textbf{a vector clock} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Application: an e-mail storage server} + \begin{center} + \only<1>{\includegraphics[width=.9\linewidth]{assets/aerogramme.png}}% + \end{center} +\end{frame} + +\begin{frame} + \frametitle{Aerogramme data model} + \begin{center} + \only<1>{\includegraphics[width=.4\linewidth]{assets/aerogramme_datatype.drawio.pdf}}% + \only<2->{\includegraphics[width=.9\linewidth]{assets/aerogramme_keys.drawio.pdf}\vspace{1em}}% + \end{center} + \visible<3->{Aerogramme encrypts all stored values for privacy\\ + (Garage server administrators can't read your mail)} +\end{frame} + +\begin{frame} + \frametitle{Different deployment scenarios} + \begin{center} + \only<1>{\includegraphics[width=.9\linewidth]{assets/aerogramme_components1.drawio.pdf}}% + \only<2>{\includegraphics[width=.9\linewidth]{assets/aerogramme_components2.drawio.pdf}}% + \end{center} +\end{frame} + +\begin{frame} + \frametitle{A new model for building resilient software} + How to build an application using only Garage as a data store: + \vspace{1em} + \begin{enumerate} + \item Design a data model suited to K2V\\ + {\footnotesize (see Cassandra docs on porting SQL data models to Cassandra)} + \vspace{1em} + \begin{itemize} + \item Use CRDTs or other eventually consistent data types (see e.g. Bayou) + \vspace{1em} + \item Store opaque binary blobs to provide End-to-End Encryption\\ + \end{itemize} + \vspace{1em} + \item<2-> Store big blobs (files) using the S3 API + \vspace{1em} + \item<3-> Let Garage manage sharding, replication, failover, etc. + \end{enumerate} +\end{frame} + +\section{Conclusion} + +\begin{frame} + \frametitle{Perspectives} + \begin{itemize} + \item Fix the consistency issue when rebalancing + \vspace{1em} + \item Write about Garage's architecture and properties,\\ + and about our proposed architecture for (E2EE) apps over K2V+S3 + \vspace{1em} + \item Continue developing Garage; finish Aerogramme; build new applications... + \vspace{1em} + \item Anything else? + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Where to find us} + \begin{center} + \includegraphics[width=.25\linewidth]{../../logo/garage_hires.png}\\ + \vspace{-1em} + \url{https://garagehq.deuxfleurs.fr/}\\ + \url{mailto:garagehq@deuxfleurs.fr}\\ + \texttt{\#garage:deuxfleurs.fr} on Matrix + + \vspace{1.5em} + \includegraphics[width=.06\linewidth]{assets/rust_logo.png} + \includegraphics[width=.13\linewidth]{assets/AGPLv3_Logo.png} + \end{center} +\end{frame} + +\end{document} + +%% vim: set ts=4 sw=4 tw=0 noet spelllang=en : diff --git a/doc/talks/shell.nix b/doc/talks/shell.nix new file mode 100644 index 00000000..161a61e1 --- /dev/null +++ b/doc/talks/shell.nix @@ -0,0 +1,12 @@ +{ pkgs ? import <nixpkgs> { } }: +let + latex = (pkgs.texlive.combine { + inherit (pkgs.texlive) + scheme-basic + beamer amsmath mathtools breqn + environ + multirow graphics import adjustbox tabu vwcol stmaryrd ulem ragged2e + dvisvgm dvipng wrapfig hyperref capt-of; + }); +in pkgs.mkShell { nativeBuildInputs = [ pkgs.gnumake latex ]; } + @@ -1,7 +1,9 @@ { - description = "Garage, an S3-compatible distributed object store for self-hosted deployments"; + description = + "Garage, an S3-compatible distributed object store for self-hosted deployments"; - inputs.nixpkgs.url = "github:NixOS/nixpkgs/a3073c49bc0163fea6a121c276f526837672b555"; + inputs.nixpkgs.url = + "github:NixOS/nixpkgs/a3073c49bc0163fea6a121c276f526837672b555"; inputs.cargo2nix = { # As of 2022-10-18: two small patches over unstable branch, one for clippy and one to fix feature detection url = "github:Alexis211/cargo2nix/a7a61179b66054904ef6a195d8da736eaaa06c36"; @@ -24,13 +26,11 @@ release = true; }).workspace.garage { compileMode = "build"; }; }; - devShell = ((compile { + devShell = (compile { inherit system git_version; pkgsSrc = nixpkgs; cargo2nixOverlay = cargo2nix.overlays.default; release = false; - }).workspaceShell { - packages = [ pkgs.rustfmt cargo2nix.packages.${system}.default ]; - }); + }).workspaceShell { packages = [ pkgs.rustfmt ]; }; }); } diff --git a/nix/build_index.nix b/nix/build_index.nix index 4625e3ae..7cc4f62c 100644 --- a/nix/build_index.nix +++ b/nix/build_index.nix @@ -1,10 +1,8 @@ -{ - path ? "/../aws-list.txt", -}: +{ path ? "/../aws-list.txt", }: with import ./common.nix; -let - pkgs = import pkgsSrc {}; +let + pkgs = import pkgsSrc { }; lib = pkgs.lib; /* Converts a key list and a value list to a set @@ -13,139 +11,182 @@ let listToSet [ "name" "version" ] [ "latex" "3.14" ] => { name = "latex"; version = "3.14"; } */ - listToSet = keys: values: - builtins.listToAttrs - (lib.zipListsWith - (a: b: { name = a; value = b; }) - keys - values); + listToSet = keys: values: + builtins.listToAttrs (lib.zipListsWith (a: b: { + name = a; + value = b; + }) keys values); /* Says if datetime a is more recent than datetime b - Example: - cmpDate { date = "2021-09-10"; time = "22:12:15"; } { date = "2021-02-03"; time = "23:54:12"; } - => true + Example: + cmpDate { date = "2021-09-10"; time = "22:12:15"; } { date = "2021-02-03"; time = "23:54:12"; } + => true */ - cmpDate = a: b: - let da = (builtins.head a.builds).date; - db = (builtins.head b.builds).date; - in - if da == db then (builtins.head a.builds).time > (builtins.head b.builds).time - else da > db; - - /* Pretty platforms */ + cmpDate = a: b: + let + da = (builtins.head a.builds).date; + db = (builtins.head b.builds).date; + in if da == db then + (builtins.head a.builds).time > (builtins.head b.builds).time + else + da > db; + + # Pretty platforms prettyPlatform = name: - if name == "aarch64-unknown-linux-musl" then "linux/arm64" - else if name == "armv6l-unknown-linux-musleabihf" then "linux/arm" - else if name == "x86_64-unknown-linux-musl" then "linux/amd64" - else if name == "i686-unknown-linux-musl" then "linux/386" - else name; - - /* Parsing */ + if name == "aarch64-unknown-linux-musl" then + "linux/arm64" + else if name == "armv6l-unknown-linux-musleabihf" then + "linux/arm" + else if name == "x86_64-unknown-linux-musl" then + "linux/amd64" + else if name == "i686-unknown-linux-musl" then + "linux/386" + else + name; + + # Parsing list = builtins.readFile (./. + path); entries = lib.splitString "\n" list; - elems = builtins.filter - (e: (builtins.length e) == 4) - (map - (x: builtins.filter (e: e != "") (lib.splitString " " x)) - entries); + elems = builtins.filter (e: (builtins.length e) == 4) + (map (x: builtins.filter (e: e != "") (lib.splitString " " x)) entries); - keys = ["date" "time" "size" "path"]; + keys = [ "date" "time" "size" "path" ]; parsed = map (entry: listToSet keys entry) elems; - subkeys = ["root" "version" "platform" "binary" ]; - builds = map (entry: entry // listToSet subkeys (lib.splitString "/" entry.path) // { url = "https://garagehq.deuxfleurs.fr/" + entry.path; }) parsed; - - /* Aggregation */ - builds_per_version = lib.foldl (acc: v: acc // { ${v.version} = if builtins.hasAttr v.version acc then acc.${v.version} ++ [ v ] else [ v ]; }) {} builds; + subkeys = [ "root" "version" "platform" "binary" ]; + builds = map (entry: + entry // listToSet subkeys (lib.splitString "/" entry.path) // { + url = "https://garagehq.deuxfleurs.fr/" + entry.path; + }) parsed; + + # Aggregation + builds_per_version = lib.foldl (acc: v: + acc // { + ${v.version} = if builtins.hasAttr v.version acc then + acc.${v.version} ++ [ v ] + else + [ v ]; + }) { } builds; versions = builtins.attrNames builds_per_version; - versions_release = builtins.filter (x: builtins.match "v[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?" x != null) versions; - versions_commit = builtins.filter (x: builtins.match "[0-9a-f]{40}" x != null) versions; - versions_extra = lib.subtractLists (versions_release ++ versions_commit) versions; + versions_release = builtins.filter + (x: builtins.match "v[0-9]+.[0-9]+.[0-9]+(.[0-9]+)?" x != null) versions; + versions_commit = + builtins.filter (x: builtins.match "[0-9a-f]{40}" x != null) versions; + versions_extra = + lib.subtractLists (versions_release ++ versions_commit) versions; sorted_builds = [ { name = "Release"; hide = false; type = "tag"; - description = "Release builds are the official builds, they are tailored for productions and are the most tested."; - builds = builtins.sort (a: b: a.version > b.version) (map (x: { version = x; builds = builtins.getAttr x builds_per_version; }) versions_release); + description = + "Release builds are the official builds, they are tailored for productions and are the most tested."; + builds = builtins.sort (a: b: a.version > b.version) (map (x: { + version = x; + builds = builtins.getAttr x builds_per_version; + }) versions_release); } { name = "Extra"; hide = true; type = "tag"; - description = "Extra builds are built on demand to test a specific feature or a specific need."; - builds = builtins.sort cmpDate (map (x: { version = x; builds = builtins.getAttr x builds_per_version; }) versions_extra); + description = + "Extra builds are built on demand to test a specific feature or a specific need."; + builds = builtins.sort cmpDate (map (x: { + version = x; + builds = builtins.getAttr x builds_per_version; + }) versions_extra); } { name = "Development"; hide = true; type = "commit"; - description = "Development builds are built periodically. Use them if you want to test a specific feature that is not yet released."; - builds = builtins.sort cmpDate (map (x: { version = x; builds = builtins.getAttr x builds_per_version; }) versions_commit); + description = + "Development builds are built periodically. Use them if you want to test a specific feature that is not yet released."; + builds = builtins.sort cmpDate (map (x: { + version = x; + builds = builtins.getAttr x builds_per_version; + }) versions_commit); } ]; - json = pkgs.writeTextDir "share/_releases.json" (builtins.toJSON sorted_builds); + json = + pkgs.writeTextDir "share/_releases.json" (builtins.toJSON sorted_builds); html = pkgs.writeTextDir "share/_releases.html" '' -<!doctype html> -<html> - <head> - <meta charset="utf-8" /> - <title>Garage releases</title> - <style> - html, body { margin:0; padding: 0 } - body { font-family: 'Helvetica', Sans; } - section { margin: 1rem; } - ul { padding:0; margin: 0.2rem } - li { - border-radius: 0.2rem; - display: inline; - border: 2px #0b5d83 solid; - padding: 0.5rem; - line-height: 3rem; - color: #0b5d83; - } - li:hover { background-color: #0b5d83; color: #fff; } - li a, li a:hover { color: inherit; text-decoration: none } - </style> - </head> - <body> - ${ builtins.toString (lib.forEach sorted_builds (r: '' - <section> - <h2>${r.name} builds</h2> - - <p>${r.description}</p> - - ${if r.hide then "<details><summary>Show ${r.name} builds</summary>" else ""} - ${ builtins.toString (lib.forEach r.builds (x: '' - <h3> ${x.version} (${(builtins.head x.builds).date}) </h3> - <p>See this build on</p> - <p> Binaries: - <ul> - ${ builtins.toString (lib.forEach x.builds (b: '' - <li><a href="/${b.path}">${prettyPlatform b.platform}</a></li> - ''))} - </ul></p> - <p> Sources: - <ul> - <li><a href="https://git.deuxfleurs.fr/Deuxfleurs/garage/src/${r.type}/${x.version}">gitea</a></li> - <li><a href="https://git.deuxfleurs.fr/Deuxfleurs/garage/archive/${x.version}.zip">.zip</a></li> - <li><a href="https://git.deuxfleurs.fr/Deuxfleurs/garage/archive/${x.version}.tar.gz">.tar.gz</a></li> - </ul></p> - '')) } - ${ if builtins.length r.builds == 0 then "<em>There is no build for this category</em>" else "" } - ${if r.hide then "</details>" else ""} - </section> - ''))} - </body> -</html> -''; -in - pkgs.symlinkJoin { - name = "releases"; - paths = [ json html ]; - } + <!doctype html> + <html> + <head> + <meta charset="utf-8" /> + <title>Garage releases</title> + <style> + html, body { margin:0; padding: 0 } + body { font-family: 'Helvetica', Sans; } + section { margin: 1rem; } + ul { padding:0; margin: 0.2rem } + li { + border-radius: 0.2rem; + display: inline; + border: 2px #0b5d83 solid; + padding: 0.5rem; + line-height: 3rem; + color: #0b5d83; + } + li:hover { background-color: #0b5d83; color: #fff; } + li a, li a:hover { color: inherit; text-decoration: none } + </style> + </head> + <body> + ${ + builtins.toString (lib.forEach sorted_builds (r: '' + <section> + <h2>${r.name} builds</h2> + + <p>${r.description}</p> + + ${ + if r.hide then + "<details><summary>Show ${r.name} builds</summary>" + else + "" + } + ${ + builtins.toString (lib.forEach r.builds (x: '' + <h3> ${x.version} (${(builtins.head x.builds).date}) </h3> + <p>See this build on</p> + <p> Binaries: + <ul> + ${builtins.toString (lib.forEach x.builds (b: '' + <li><a href="/${b.path}">${ + prettyPlatform b.platform + }</a></li> + ''))} + </ul></p> + <p> Sources: + <ul> + <li><a href="https://git.deuxfleurs.fr/Deuxfleurs/garage/src/${r.type}/${x.version}">gitea</a></li> + <li><a href="https://git.deuxfleurs.fr/Deuxfleurs/garage/archive/${x.version}.zip">.zip</a></li> + <li><a href="https://git.deuxfleurs.fr/Deuxfleurs/garage/archive/${x.version}.tar.gz">.tar.gz</a></li> + </ul></p> + '')) + } + ${ + if builtins.length r.builds == 0 then + "<em>There is no build for this category</em>" + else + "" + } + ${if r.hide then "</details>" else ""} + </section> + '')) + } + </body> + </html> + ''; +in pkgs.symlinkJoin { + name = "releases"; + paths = [ json html ]; +} diff --git a/nix/common.nix b/nix/common.nix index 90e3afaf..57f354dd 100644 --- a/nix/common.nix +++ b/nix/common.nix @@ -1,10 +1,9 @@ rec { - /* - * Fixed dependencies - */ + # * Fixed dependencies pkgsSrc = fetchTarball { # As of 2022-10-13 - url = "https://github.com/NixOS/nixpkgs/archive/a3073c49bc0163fea6a121c276f526837672b555.zip"; + url = + "https://github.com/NixOS/nixpkgs/archive/a3073c49bc0163fea6a121c276f526837672b555.zip"; sha256 = "1bz632psfbpmicyzjb8b4265y50shylccvfm6ry6mgnv5hvz324s"; }; cargo2nixSrc = fetchGit { @@ -14,9 +13,7 @@ rec { rev = "a7a61179b66054904ef6a195d8da736eaaa06c36"; }; - /* - * Shared objects - */ + # * Shared objects cargo2nix = import cargo2nixSrc; cargo2nixOverlay = cargo2nix.overlays.default; } diff --git a/nix/compile.nix b/nix/compile.nix index 3ea5035e..54e920db 100644 --- a/nix/compile.nix +++ b/nix/compile.nix @@ -1,227 +1,240 @@ -{ - system, - target ? null, - pkgsSrc, - cargo2nixOverlay, - compiler ? "rustc", - release ? false, - git_version ? null, - features ? null, -}: +{ system, target ? null, pkgsSrc, cargo2nixOverlay, compiler ? "rustc" +, release ? false, git_version ? null, features ? null, }: let log = v: builtins.trace v v; - pkgs = - if target != null then - import pkgsSrc { - inherit system; - crossSystem = { - config = target; - isStatic = true; - }; - overlays = [ cargo2nixOverlay ]; - } - else - import pkgsSrc { - inherit system; - overlays = [ cargo2nixOverlay ]; + pkgs = if target != null then + import pkgsSrc { + inherit system; + crossSystem = { + config = target; + isStatic = true; }; + overlays = [ cargo2nixOverlay ]; + } + else + import pkgsSrc { + inherit system; + overlays = [ cargo2nixOverlay ]; + }; - /* - Cargo2nix is built for rustOverlay which installs Rust from Mozilla releases. - This is fine for 64-bit platforms, but for 32-bit platforms, we need our own Rust - to avoid incompatibilities with time_t between different versions of musl - (>= 1.2.0 shipped by NixOS, < 1.2.0 with which rustc was built), which lead to compilation breakage. - So we want a Rust release that is bound to our Nix repository to avoid these problems. - See here for more info: https://musl.libc.org/time64.html - Because Cargo2nix does not support the Rust environment shipped by NixOS, - we emulate the structure of the Rust object created by rustOverlay. - In practise, rustOverlay ships rustc+cargo in a single derivation while - NixOS ships them in separate ones. We reunite them with symlinkJoin. + /* Cargo2nix is built for rustOverlay which installs Rust from Mozilla releases. + This is fine for 64-bit platforms, but for 32-bit platforms, we need our own Rust + to avoid incompatibilities with time_t between different versions of musl + (>= 1.2.0 shipped by NixOS, < 1.2.0 with which rustc was built), which lead to compilation breakage. + So we want a Rust release that is bound to our Nix repository to avoid these problems. + See here for more info: https://musl.libc.org/time64.html + Because Cargo2nix does not support the Rust environment shipped by NixOS, + we emulate the structure of the Rust object created by rustOverlay. + In practise, rustOverlay ships rustc+cargo in a single derivation while + NixOS ships them in separate ones. We reunite them with symlinkJoin. */ - toolchainOptions = - if target == null || target == "x86_64-unknown-linux-musl" || target == "aarch64-unknown-linux-musl" then { - rustVersion = "1.63.0"; - extraRustComponents = [ "clippy" ]; - } else { - rustToolchain = pkgs.symlinkJoin { - name = "rust-static-toolchain-${target}"; - paths = [ - pkgs.rustPlatform.rust.cargo - pkgs.rustPlatform.rust.rustc - # clippy not needed, it only runs on amd64 - ]; - }; + toolchainOptions = if target == null || target == "x86_64-unknown-linux-musl" + || target == "aarch64-unknown-linux-musl" then { + rustVersion = "1.63.0"; + extraRustComponents = [ "clippy" ]; + } else { + rustToolchain = pkgs.symlinkJoin { + name = "rust-static-toolchain-${target}"; + paths = [ + pkgs.rustPlatform.rust.cargo + pkgs.rustPlatform.rust.rustc + # clippy not needed, it only runs on amd64 + ]; }; + }; + buildEnv = (drv: + { + rustc = drv.setBuildEnv; + clippy = '' + ${drv.setBuildEnv or ""} + echo + echo --- BUILDING WITH CLIPPY --- + echo + + export NIX_RUST_BUILD_FLAGS="''${NIX_RUST_BUILD_FLAGS} --deny warnings" + export RUSTC="''${CLIPPY_DRIVER}" + ''; + }.${compiler}); + + /* Cargo2nix provides many overrides by default, you can take inspiration from them: + https://github.com/cargo2nix/cargo2nix/blob/master/overlay/overrides.nix + + You can have a complete list of the available options by looking at the overriden object, mkcrate: + https://github.com/cargo2nix/cargo2nix/blob/master/overlay/mkcrate.nix + */ + packageOverrides = pkgs: + pkgs.rustBuilder.overrides.all ++ [ + /* [1] We add some logic to compile our crates with clippy, it provides us many additional lints + + [2] We need to alter Nix hardening to make static binaries: PIE, + Position Independent Executables seems to be supported only on amd64. Having + this flag set either 1. make our executables crash or 2. compile as dynamic on some platforms. + Here, we deactivate it. Later (find `codegenOpts`), we reactivate it for supported targets + (only amd64 curently) through the `-static-pie` flag. + PIE is a feature used by ASLR, which helps mitigate security issues. + Learn more about Nix Hardening at: https://github.com/NixOS/nixpkgs/blob/master/pkgs/build-support/cc-wrapper/add-hardening.sh + + [3] We want to inject the git version while keeping the build deterministic. + As we do not want to consider the .git folder as part of the input source, + we ask the user (the CI often) to pass the value to Nix. + + [4] We don't want libsodium-sys and zstd-sys to try to use pkgconfig to build against a system library. + However the features to do so get activated for some reason (due to a bug in cargo2nix?), + so disable them manually here. + */ + (pkgs.rustBuilder.rustLib.makeOverride { + name = "garage"; + overrideAttrs = drv: + (if git_version != null then { + # [3] + preConfigure = '' + ${drv.preConfigure or ""} + export GIT_VERSION="${git_version}" + ''; + } else + { }) // { + # [1] + setBuildEnv = (buildEnv drv); + # [2] + hardeningDisable = [ "pie" ]; + }; + }) + + (pkgs.rustBuilder.rustLib.makeOverride { + name = "garage_rpc"; + overrideAttrs = drv: { # [1] + setBuildEnv = (buildEnv drv); + }; + }) - buildEnv = (drv: { - rustc = drv.setBuildEnv; - clippy = '' - ${drv.setBuildEnv or "" } - echo - echo --- BUILDING WITH CLIPPY --- - echo + (pkgs.rustBuilder.rustLib.makeOverride { + name = "garage_db"; + overrideAttrs = drv: { # [1] + setBuildEnv = (buildEnv drv); + }; + }) - export NIX_RUST_BUILD_FLAGS="''${NIX_RUST_BUILD_FLAGS} --deny warnings" - export RUSTC="''${CLIPPY_DRIVER}" - ''; - }.${compiler}); + (pkgs.rustBuilder.rustLib.makeOverride { + name = "garage_util"; + overrideAttrs = drv: { # [1] + setBuildEnv = (buildEnv drv); + }; + }) - /* - Cargo2nix provides many overrides by default, you can take inspiration from them: - https://github.com/cargo2nix/cargo2nix/blob/master/overlay/overrides.nix + (pkgs.rustBuilder.rustLib.makeOverride { + name = "garage_table"; + overrideAttrs = drv: { # [1] + setBuildEnv = (buildEnv drv); + }; + }) - You can have a complete list of the available options by looking at the overriden object, mkcrate: - https://github.com/cargo2nix/cargo2nix/blob/master/overlay/mkcrate.nix - */ - packageOverrides = pkgs: pkgs.rustBuilder.overrides.all ++ [ - /* - [1] We add some logic to compile our crates with clippy, it provides us many additional lints - - [2] We need to alter Nix hardening to make static binaries: PIE, - Position Independent Executables seems to be supported only on amd64. Having - this flag set either 1. make our executables crash or 2. compile as dynamic on some platforms. - Here, we deactivate it. Later (find `codegenOpts`), we reactivate it for supported targets - (only amd64 curently) through the `-static-pie` flag. - PIE is a feature used by ASLR, which helps mitigate security issues. - Learn more about Nix Hardening at: https://github.com/NixOS/nixpkgs/blob/master/pkgs/build-support/cc-wrapper/add-hardening.sh - - [3] We want to inject the git version while keeping the build deterministic. - As we do not want to consider the .git folder as part of the input source, - we ask the user (the CI often) to pass the value to Nix. - - [4] We don't want libsodium-sys and zstd-sys to try to use pkgconfig to build against a system library. - However the features to do so get activated for some reason (due to a bug in cargo2nix?), - so disable them manually here. - */ - (pkgs.rustBuilder.rustLib.makeOverride { - name = "garage"; - overrideAttrs = drv: - (if git_version != null then { - /* [3] */ preConfigure = '' - ${drv.preConfigure or ""} - export GIT_VERSION="${git_version}" - ''; - } else {}) - // - { - /* [1] */ setBuildEnv = (buildEnv drv); - /* [2] */ hardeningDisable = [ "pie" ]; - }; - }) - - (pkgs.rustBuilder.rustLib.makeOverride { - name = "garage_rpc"; - overrideAttrs = drv: { /* [1] */ setBuildEnv = (buildEnv drv); }; - }) - - (pkgs.rustBuilder.rustLib.makeOverride { - name = "garage_db"; - overrideAttrs = drv: { /* [1] */ setBuildEnv = (buildEnv drv); }; - }) - - (pkgs.rustBuilder.rustLib.makeOverride { - name = "garage_util"; - overrideAttrs = drv: { /* [1] */ setBuildEnv = (buildEnv drv); }; - }) - - (pkgs.rustBuilder.rustLib.makeOverride { - name = "garage_table"; - overrideAttrs = drv: { /* [1] */ setBuildEnv = (buildEnv drv); }; - }) - - (pkgs.rustBuilder.rustLib.makeOverride { - name = "garage_block"; - overrideAttrs = drv: { /* [1] */ setBuildEnv = (buildEnv drv); }; - }) - - (pkgs.rustBuilder.rustLib.makeOverride { - name = "garage_model"; - overrideAttrs = drv: { /* [1] */ setBuildEnv = (buildEnv drv); }; - }) - - (pkgs.rustBuilder.rustLib.makeOverride { - name = "garage_api"; - overrideAttrs = drv: { /* [1] */ setBuildEnv = (buildEnv drv); }; - }) - - (pkgs.rustBuilder.rustLib.makeOverride { - name = "garage_web"; - overrideAttrs = drv: { /* [1] */ setBuildEnv = (buildEnv drv); }; - }) - - (pkgs.rustBuilder.rustLib.makeOverride { - name = "k2v-client"; - overrideAttrs = drv: { /* [1] */ setBuildEnv = (buildEnv drv); }; - }) - - (pkgs.rustBuilder.rustLib.makeOverride { - name = "libsodium-sys"; - overrideArgs = old: { - features = [ ]; /* [4] */ - }; - }) + (pkgs.rustBuilder.rustLib.makeOverride { + name = "garage_block"; + overrideAttrs = drv: { # [1] + setBuildEnv = (buildEnv drv); + }; + }) - (pkgs.rustBuilder.rustLib.makeOverride { - name = "zstd-sys"; - overrideArgs = old: { - features = [ ]; /* [4] */ - }; - }) - ]; - - /* - We ship some parts of the code disabled by default by putting them behind a flag. - It speeds up the compilation (when the feature is not required) and released crates have less dependency by default (less attack surface, disk space, etc.). - But we want to ship these additional features when we release Garage. - In the end, we chose to exclude all features from debug builds while putting (all of) them in the release builds. - */ - rootFeatures = if features != null then features else - ([ - "garage/bundled-libs" - "garage/sled" - "garage/k2v" - ] ++ (if release then [ - "garage/consul-discovery" - "garage/kubernetes-discovery" - "garage/metrics" - "garage/telemetry-otlp" - "garage/lmdb" - "garage/sqlite" - ] else [])); + (pkgs.rustBuilder.rustLib.makeOverride { + name = "garage_model"; + overrideAttrs = drv: { # [1] + setBuildEnv = (buildEnv drv); + }; + }) + + (pkgs.rustBuilder.rustLib.makeOverride { + name = "garage_api"; + overrideAttrs = drv: { # [1] + setBuildEnv = (buildEnv drv); + }; + }) + + (pkgs.rustBuilder.rustLib.makeOverride { + name = "garage_web"; + overrideAttrs = drv: { # [1] + setBuildEnv = (buildEnv drv); + }; + }) + + (pkgs.rustBuilder.rustLib.makeOverride { + name = "k2v-client"; + overrideAttrs = drv: { # [1] + setBuildEnv = (buildEnv drv); + }; + }) + (pkgs.rustBuilder.rustLib.makeOverride { + name = "libsodium-sys"; + overrideArgs = old: { + features = [ ]; # [4] + }; + }) + + (pkgs.rustBuilder.rustLib.makeOverride { + name = "zstd-sys"; + overrideArgs = old: { + features = [ ]; # [4] + }; + }) + ]; + + /* We ship some parts of the code disabled by default by putting them behind a flag. + It speeds up the compilation (when the feature is not required) and released crates have less dependency by default (less attack surface, disk space, etc.). + But we want to ship these additional features when we release Garage. + In the end, we chose to exclude all features from debug builds while putting (all of) them in the release builds. + */ + rootFeatures = if features != null then + features + else + ([ "garage/bundled-libs" "garage/sled" "garage/k2v" ] ++ (if release then [ + "garage/consul-discovery" + "garage/kubernetes-discovery" + "garage/metrics" + "garage/telemetry-otlp" + "garage/lmdb" + "garage/sqlite" + ] else + [ ])); packageFun = import ../Cargo.nix; - /* - We compile fully static binaries with musl to simplify deployment on most systems. - When possible, we reactivate PIE hardening (see above). + /* We compile fully static binaries with musl to simplify deployment on most systems. + When possible, we reactivate PIE hardening (see above). - Also, if you set the RUSTFLAGS environment variable, the following parameters will - be ignored. + Also, if you set the RUSTFLAGS environment variable, the following parameters will + be ignored. - For more information on static builds, please refer to Rust's RFC 1721. - https://rust-lang.github.io/rfcs/1721-crt-static.html#specifying-dynamicstatic-c-runtime-linkage + For more information on static builds, please refer to Rust's RFC 1721. + https://rust-lang.github.io/rfcs/1721-crt-static.html#specifying-dynamicstatic-c-runtime-linkage */ codegenOpts = { - "armv6l-unknown-linux-musleabihf" = [ "target-feature=+crt-static" "link-arg=-static" ]; /* compile as dynamic with static-pie */ - "aarch64-unknown-linux-musl" = [ "target-feature=+crt-static" "link-arg=-static" ]; /* segfault with static-pie */ - "i686-unknown-linux-musl" = [ "target-feature=+crt-static" "link-arg=-static" ]; /* segfault with static-pie */ - "x86_64-unknown-linux-musl" = [ "target-feature=+crt-static" "link-arg=-static-pie" ]; + "armv6l-unknown-linux-musleabihf" = [ + "target-feature=+crt-static" + "link-arg=-static" + ]; # compile as dynamic with static-pie + "aarch64-unknown-linux-musl" = [ + "target-feature=+crt-static" + "link-arg=-static" + ]; # segfault with static-pie + "i686-unknown-linux-musl" = [ + "target-feature=+crt-static" + "link-arg=-static" + ]; # segfault with static-pie + "x86_64-unknown-linux-musl" = + [ "target-feature=+crt-static" "link-arg=-static-pie" ]; }; - /* - NixOS and Rust/Cargo triples do not match for ARM, fix it here. - */ - rustTarget = if target == "armv6l-unknown-linux-musleabihf" - then "arm-unknown-linux-musleabihf" - else target; - -in - pkgs.rustBuilder.makePackageSet ({ - inherit release packageFun packageOverrides codegenOpts rootFeatures; - target = rustTarget; - } // toolchainOptions) + # NixOS and Rust/Cargo triples do not match for ARM, fix it here. + rustTarget = if target == "armv6l-unknown-linux-musleabihf" then + "arm-unknown-linux-musleabihf" + else + target; + +in pkgs.rustBuilder.makePackageSet ({ + inherit release packageFun packageOverrides codegenOpts rootFeatures; + target = rustTarget; +} // toolchainOptions) diff --git a/nix/kaniko.nix b/nix/kaniko.nix index 140328b8..64cadd14 100644 --- a/nix/kaniko.nix +++ b/nix/kaniko.nix @@ -15,7 +15,8 @@ pkgs.buildGoModule rec { checkPhase = "true"; meta = with pkgs.lib; { - description = "kaniko is a tool to build container images from a Dockerfile, inside a container or Kubernetes cluster."; + description = + "kaniko is a tool to build container images from a Dockerfile, inside a container or Kubernetes cluster."; homepage = "https://github.com/GoogleContainerTools/kaniko"; license = licenses.asl20; platforms = platforms.linux; diff --git a/nix/manifest-tool.nix b/nix/manifest-tool.nix index 182ccc0e..1090a6ef 100644 --- a/nix/manifest-tool.nix +++ b/nix/manifest-tool.nix @@ -15,7 +15,8 @@ pkgs.buildGoModule rec { checkPhase = "true"; meta = with pkgs.lib; { - description = "Command line tool to create and query container image manifest list/indexes"; + description = + "Command line tool to create and query container image manifest list/indexes"; homepage = "https://github.com/estesp/manifest-tool"; license = licenses.asl20; platforms = platforms.linux; diff --git a/nix/toolchain.nix b/nix/toolchain.nix index 079fcf13..532db74e 100644 --- a/nix/toolchain.nix +++ b/nix/toolchain.nix @@ -1,6 +1,4 @@ -{ - system ? builtins.currentSystem, -}: +{ system ? builtins.currentSystem, }: with import ./common.nix; @@ -11,27 +9,23 @@ let #"aarch64-unknown-linux-musl" "armv6l-unknown-linux-musleabihf" ]; - pkgsList = builtins.map (target: import pkgsSrc { - inherit system; - crossSystem = { - config = target; - isStatic = true; - }; - overlays = [ cargo2nixOverlay ]; - }) platforms; - pkgsHost = import pkgsSrc {}; + pkgsList = builtins.map (target: + import pkgsSrc { + inherit system; + crossSystem = { + config = target; + isStatic = true; + }; + overlays = [ cargo2nixOverlay ]; + }) platforms; + pkgsHost = import pkgsSrc { }; lib = pkgsHost.lib; kaniko = (import ./kaniko.nix) pkgsHost; winscp = (import ./winscp.nix) pkgsHost; manifestTool = (import ./manifest-tool.nix) pkgsHost; -in - lib.flatten (builtins.map (pkgs: [ - pkgs.rustPlatform.rust.rustc - pkgs.rustPlatform.rust.cargo - pkgs.buildPackages.stdenv.cc - ]) pkgsList) ++ [ - kaniko - winscp - manifestTool - ] +in lib.flatten (builtins.map (pkgs: [ + pkgs.rustPlatform.rust.rustc + pkgs.rustPlatform.rust.cargo + pkgs.buildPackages.stdenv.cc +]) pkgsList) ++ [ kaniko winscp manifestTool ] diff --git a/nix/winscp.nix b/nix/winscp.nix index 10d3cb28..113f4506 100644 --- a/nix/winscp.nix +++ b/nix/winscp.nix @@ -11,12 +11,12 @@ pkgs.stdenv.mkDerivation rec { }; buildPhase = '' - cat > winscp <<EOF -#!${pkgs.bash}/bin/bash + cat > winscp <<EOF + #!${pkgs.bash}/bin/bash -WINEDEBUG=-all -${pkgs.winePackages.minimal}/bin/wine $out/opt/WinSCP.com -EOF + WINEDEBUG=-all + ${pkgs.winePackages.minimal}/bin/wine $out/opt/WinSCP.com + EOF ''; installPhase = '' @@ -1,6 +1,4 @@ -{ - system ? builtins.currentSystem, -}: +{ system ? builtins.currentSystem, }: with import ./nix/common.nix; @@ -13,161 +11,152 @@ let manifest-tool = (import ./nix/manifest-tool.nix) pkgs; winscp = (import ./nix/winscp.nix) pkgs; -in - { - /* --- Rust Shell --- - * Use it to compile Garage - */ - rust = pkgs.mkShell { - nativeBuildInputs = [ - #pkgs.rustPlatform.rust.rustc - pkgs.rustPlatform.rust.cargo - #pkgs.clippy - pkgs.rustfmt - #pkgs.perl - #pkgs.protobuf - #pkgs.pkg-config - #pkgs.openssl - pkgs.file - #cargo2nix.packages.x86_64-linux.cargo2nix - ]; - }; - - /* --- Integration shell --- - * Use it to test Garage with common S3 clients - */ - integration = pkgs.mkShell { - nativeBuildInputs = [ - winscp - pkgs.s3cmd - pkgs.awscli2 - pkgs.minio-client - pkgs.rclone - pkgs.socat - pkgs.psmisc - pkgs.which - pkgs.openssl - pkgs.curl - pkgs.jq - ]; - }; - - /* --- Release shell --- - * A shell built to make releasing easier - */ - release = pkgs.mkShell { - shellHook = '' -function refresh_toolchain { - pass show deuxfleurs/nix_priv_key > /tmp/nix-signing-key.sec - nix copy \ - --to 's3://nix?endpoint=garage.deuxfleurs.fr®ion=garage&secret-key=/tmp/nix-signing-key.sec' \ - $(nix-store -qR \ - $(nix-build --no-build-output --no-out-link nix/toolchain.nix)) - rm /tmp/nix-signing-key.sec -} - -function refresh_cache { - pass show deuxfleurs/nix_priv_key > /tmp/nix-signing-key.sec - for attr in clippy.amd64 test.amd64 pkgs.{amd64,i386,arm,arm64}.{debug,release}; do - echo "Updating cache for ''${attr}" - derivation=$(nix-instantiate --attr ''${attr}) - nix copy -j8 \ - --to 's3://nix?endpoint=garage.deuxfleurs.fr®ion=garage&secret-key=/tmp/nix-signing-key.sec' \ - $(nix-store -qR ''${derivation%\!bin}) - done - rm /tmp/nix-signing-key.sec -} - -function refresh_flake_cache { - pass show deuxfleurs/nix_priv_key > /tmp/nix-signing-key.sec - for attr in packages.x86_64-linux.default; do - echo "Updating cache for ''${attr}" - derivation=$(nix path-info --derivation ".#''${attr}") - nix copy -j8 \ - --to 's3://nix?endpoint=garage.deuxfleurs.fr®ion=garage&secret-key=/tmp/nix-signing-key.sec' \ - $(nix-store -qR ''${derivation}) - done - rm /tmp/nix-signing-key.sec -} - -function to_s3 { - aws \ - --endpoint-url https://garage.deuxfleurs.fr \ - --region garage \ - s3 cp \ - ./result-bin/bin/garage \ - s3://garagehq.deuxfleurs.fr/_releases/''${DRONE_TAG:-$DRONE_COMMIT}/''${TARGET}/garage -} - -function to_docker { - executor \ - --force \ - --customPlatform="''${DOCKER_PLATFORM}" \ - --destination "''${CONTAINER_NAME}:''${CONTAINER_TAG}" \ - --context dir://`pwd` \ - --verbosity=debug -} - -function multiarch_docker { - manifest-tool push from-spec <(cat <<EOF -image: dxflrs/garage:''${CONTAINER_TAG} -manifests: - - - image: dxflrs/arm64_garage:''${CONTAINER_TAG} - platform: - architecture: arm64 - os: linux - - - image: dxflrs/amd64_garage:''${CONTAINER_TAG} - platform: - architecture: amd64 - os: linux - - - image: dxflrs/386_garage:''${CONTAINER_TAG} - platform: - architecture: 386 - os: linux - - - image: dxflrs/arm_garage:''${CONTAINER_TAG} - platform: - architecture: arm - os: linux -EOF - ) -} - -function refresh_index { - aws \ - --endpoint-url https://garage.deuxfleurs.fr \ - --region garage \ - s3 ls \ - --recursive \ - s3://garagehq.deuxfleurs.fr/_releases/ \ - > aws-list.txt - - nix-build nix/build_index.nix +in { + # --- Rust Shell --- + # Use it to compile Garage + rust = pkgs.mkShell { + nativeBuildInputs = [ + #pkgs.rustPlatform.rust.rustc + pkgs.rustPlatform.rust.cargo + #pkgs.clippy + pkgs.rustfmt + #pkgs.perl + #pkgs.protobuf + #pkgs.pkg-config + #pkgs.openssl + pkgs.file + #cargo2nix.packages.x86_64-linux.cargo2nix + ]; + }; - aws \ - --endpoint-url https://garage.deuxfleurs.fr \ - --region garage \ - s3 cp \ - result/share/_releases.json \ - s3://garagehq.deuxfleurs.fr/ + # --- Integration shell --- + # Use it to test Garage with common S3 clients + integration = pkgs.mkShell { + nativeBuildInputs = [ + winscp + pkgs.s3cmd + pkgs.awscli2 + pkgs.minio-client + pkgs.rclone + pkgs.socat + pkgs.psmisc + pkgs.which + pkgs.openssl + pkgs.curl + pkgs.jq + ]; + }; - aws \ - --endpoint-url https://garage.deuxfleurs.fr \ - --region garage \ - s3 cp \ - result/share/_releases.html \ - s3://garagehq.deuxfleurs.fr/ + # --- Release shell --- + # A shell built to make releasing easier + release = pkgs.mkShell { + shellHook = '' + function refresh_toolchain { + pass show deuxfleurs/nix_priv_key > /tmp/nix-signing-key.sec + nix copy \ + --to 's3://nix?endpoint=garage.deuxfleurs.fr®ion=garage&secret-key=/tmp/nix-signing-key.sec' \ + $(nix-store -qR \ + $(nix-build --no-build-output --no-out-link nix/toolchain.nix)) + rm /tmp/nix-signing-key.sec + } + + function refresh_cache { + pass show deuxfleurs/nix_priv_key > /tmp/nix-signing-key.sec + for attr in clippy.amd64 test.amd64 pkgs.{amd64,i386,arm,arm64}.{debug,release}; do + echo "Updating cache for ''${attr}" + derivation=$(nix-instantiate --attr ''${attr}) + nix copy -j8 \ + --to 's3://nix?endpoint=garage.deuxfleurs.fr®ion=garage&secret-key=/tmp/nix-signing-key.sec' \ + $(nix-store -qR ''${derivation%\!bin}) + done + rm /tmp/nix-signing-key.sec + } + + function refresh_flake_cache { + pass show deuxfleurs/nix_priv_key > /tmp/nix-signing-key.sec + for attr in packages.x86_64-linux.default devShell.x86_64-linux; do + echo "Updating cache for ''${attr}" + derivation=$(nix path-info --derivation ".#''${attr}") + nix copy -j8 \ + --to 's3://nix?endpoint=garage.deuxfleurs.fr®ion=garage&secret-key=/tmp/nix-signing-key.sec' \ + $(nix-store -qR ''${derivation}) + done + rm /tmp/nix-signing-key.sec + } + + function to_s3 { + aws \ + --endpoint-url https://garage.deuxfleurs.fr \ + --region garage \ + s3 cp \ + ./result-bin/bin/garage \ + s3://garagehq.deuxfleurs.fr/_releases/''${DRONE_TAG:-$DRONE_COMMIT}/''${TARGET}/garage + } + + function to_docker { + executor \ + --force \ + --customPlatform="''${DOCKER_PLATFORM}" \ + --destination "''${CONTAINER_NAME}:''${CONTAINER_TAG}" \ + --context dir://`pwd` \ + --verbosity=debug + } + + function multiarch_docker { + manifest-tool push from-spec <(cat <<EOF + image: dxflrs/garage:''${CONTAINER_TAG} + manifests: + - + image: dxflrs/arm64_garage:''${CONTAINER_TAG} + platform: + architecture: arm64 + os: linux + - + image: dxflrs/amd64_garage:''${CONTAINER_TAG} + platform: + architecture: amd64 + os: linux + - + image: dxflrs/386_garage:''${CONTAINER_TAG} + platform: + architecture: 386 + os: linux + - + image: dxflrs/arm_garage:''${CONTAINER_TAG} + platform: + architecture: arm + os: linux + EOF + ) + } + + function refresh_index { + aws \ + --endpoint-url https://garage.deuxfleurs.fr \ + --region garage \ + s3 ls \ + --recursive \ + s3://garagehq.deuxfleurs.fr/_releases/ \ + > aws-list.txt + + nix-build nix/build_index.nix + + aws \ + --endpoint-url https://garage.deuxfleurs.fr \ + --region garage \ + s3 cp \ + result/share/_releases.json \ + s3://garagehq.deuxfleurs.fr/ + + aws \ + --endpoint-url https://garage.deuxfleurs.fr \ + --region garage \ + s3 cp \ + result/share/_releases.html \ + s3://garagehq.deuxfleurs.fr/ + } + ''; + nativeBuildInputs = [ pkgs.awscli2 kaniko manifest-tool ]; + }; } - ''; - nativeBuildInputs = [ - pkgs.awscli2 - kaniko - manifest-tool - ]; - }; - } - diff --git a/src/api/Cargo.toml b/src/api/Cargo.toml index dba0bbef..24c48604 100644 --- a/src/api/Cargo.toml +++ b/src/api/Cargo.toml @@ -21,28 +21,28 @@ garage_util = { version = "0.8.1", path = "../util" } garage_rpc = { version = "0.8.1", path = "../rpc" } async-trait = "0.1.7" -base64 = "0.13" +base64 = "0.21" bytes = "1.0" chrono = "0.4" crypto-common = "0.1" err-derive = "0.3" hex = "0.4" hmac = "0.12" -idna = "0.2" -tracing = "0.1.30" +idna = "0.3" +tracing = "0.1" md-5 = "0.10" nom = "7.1" sha2 = "0.10" futures = "0.3" futures-util = "0.3" -pin-project = "1.0.11" +pin-project = "1.0.12" tokio = { version = "1.0", default-features = false, features = ["rt", "rt-multi-thread", "io-util", "net", "time", "macros", "sync", "signal", "fs"] } tokio-stream = "0.1" form_urlencoded = "1.0.0" http = "0.2" -httpdate = "0.3" +httpdate = "1.0" http-range = "0.1" hyper = { version = "0.14", features = ["server", "http1", "runtime", "tcp", "stream"] } multer = "2.0" @@ -52,7 +52,7 @@ serde = { version = "1.0", features = ["derive"] } serde_bytes = "0.11" serde_json = "1.0" quick-xml = { version = "0.21", features = [ "serialize" ] } -url = "2.1" +url = "2.3" opentelemetry = "0.17" opentelemetry-prometheus = { version = "0.10", optional = true } diff --git a/src/api/admin/api_server.rs b/src/api/admin/api_server.rs index 2d325fb1..7a534f32 100644 --- a/src/api/admin/api_server.rs +++ b/src/api/admin/api_server.rs @@ -77,6 +77,53 @@ impl AdminApiServer { .body(Body::empty())?) } + async fn handle_check_website_enabled( + &self, + req: Request<Body>, + ) -> Result<Response<Body>, Error> { + let has_domain_header = req.headers().contains_key("domain"); + + if !has_domain_header { + return Err(Error::bad_request("No domain header found")); + } + + let domain = &req + .headers() + .get("domain") + .ok_or_internal_error("Could not parse domain header")?; + + let domain_string = String::from( + domain + .to_str() + .ok_or_bad_request("Invalid characters found in domain header")?, + ); + + let bucket_id = self + .garage + .bucket_helper() + .resolve_global_bucket_name(&domain_string) + .await? + .ok_or_else(|| HelperError::NoSuchBucket(domain_string))?; + + let bucket = self + .garage + .bucket_helper() + .get_existing_bucket(bucket_id) + .await?; + + let bucket_state = bucket.state.as_option().unwrap(); + let bucket_website_config = bucket_state.website_config.get(); + + match bucket_website_config { + Some(_v) => Ok(Response::builder() + .status(StatusCode::OK) + .body(Body::from("Bucket authorized for website hosting"))?), + None => Err(Error::bad_request( + "Bucket is not authorized for website hosting", + )), + } + } + fn handle_health(&self) -> Result<Response<Body>, Error> { let health = self.garage.system.health(); @@ -174,6 +221,7 @@ impl ApiHandler for AdminApiServer { match endpoint { Endpoint::Options => self.handle_options(&req), + Endpoint::CheckWebsiteEnabled => self.handle_check_website_enabled(req).await, Endpoint::Health => self.handle_health(), Endpoint::Metrics => self.handle_metrics(), Endpoint::GetClusterStatus => handle_get_cluster_status(&self.garage).await, diff --git a/src/api/admin/router.rs b/src/api/admin/router.rs index 62e6abc3..0dcb1546 100644 --- a/src/api/admin/router.rs +++ b/src/api/admin/router.rs @@ -17,6 +17,7 @@ router_match! {@func #[derive(Debug, Clone, PartialEq, Eq)] pub enum Endpoint { Options, + CheckWebsiteEnabled, Health, Metrics, GetClusterStatus, @@ -91,6 +92,7 @@ impl Endpoint { let res = router_match!(@gen_path_parser (req.method(), path, query) [ OPTIONS _ => Options, + GET "/check" => CheckWebsiteEnabled, GET "/health" => Health, GET "/metrics" => Metrics, GET "/v0/status" => GetClusterStatus, @@ -136,6 +138,7 @@ impl Endpoint { pub fn authorization_type(&self) -> Authorization { match self { Self::Health => Authorization::None, + Self::CheckWebsiteEnabled => Authorization::None, Self::Metrics => Authorization::MetricsToken, _ => Authorization::AdminToken, } diff --git a/src/api/k2v/batch.rs b/src/api/k2v/batch.rs index abc9403c..26d678da 100644 --- a/src/api/k2v/batch.rs +++ b/src/api/k2v/batch.rs @@ -1,5 +1,6 @@ use std::sync::Arc; +use base64::prelude::*; use hyper::{Body, Request, Response, StatusCode}; use serde::{Deserialize, Serialize}; @@ -26,9 +27,11 @@ pub async fn handle_insert_batch( for it in items { let ct = it.ct.map(|s| CausalContext::parse_helper(&s)).transpose()?; let v = match it.v { - Some(vs) => { - DvvsValue::Value(base64::decode(vs).ok_or_bad_request("Invalid base64 value")?) - } + Some(vs) => DvvsValue::Value( + BASE64_STANDARD + .decode(vs) + .ok_or_bad_request("Invalid base64 value")?, + ), None => DvvsValue::Deleted, }; items2.push((it.pk, it.sk, ct, v)); @@ -358,7 +361,7 @@ impl ReadBatchResponseItem { .values() .iter() .map(|v| match v { - DvvsValue::Value(x) => Some(base64::encode(x)), + DvvsValue::Value(x) => Some(BASE64_STANDARD.encode(x)), DvvsValue::Deleted => None, }) .collect::<Vec<_>>(); diff --git a/src/api/k2v/item.rs b/src/api/k2v/item.rs index 787a7df3..e13a0f30 100644 --- a/src/api/k2v/item.rs +++ b/src/api/k2v/item.rs @@ -1,5 +1,6 @@ use std::sync::Arc; +use base64::prelude::*; use http::header; use hyper::{Body, Request, Response, StatusCode}; @@ -81,7 +82,7 @@ impl ReturnFormat { .iter() .map(|v| match v { DvvsValue::Deleted => serde_json::Value::Null, - DvvsValue::Value(v) => serde_json::Value::String(base64::encode(v)), + DvvsValue::Value(v) => serde_json::Value::String(BASE64_STANDARD.encode(v)), }) .collect::<Vec<_>>(); let json_body = diff --git a/src/api/s3/list.rs b/src/api/s3/list.rs index e5f486c8..5cb0d65a 100644 --- a/src/api/s3/list.rs +++ b/src/api/s3/list.rs @@ -3,6 +3,7 @@ use std::collections::{BTreeMap, BTreeSet}; use std::iter::{Iterator, Peekable}; use std::sync::Arc; +use base64::prelude::*; use hyper::{Body, Response}; use garage_util::data::*; @@ -129,11 +130,11 @@ pub async fn handle_list( next_continuation_token: match (query.is_v2, &pagination) { (true, Some(RangeBegin::AfterKey { key })) => Some(s3_xml::Value(format!( "]{}", - base64::encode(key.as_bytes()) + BASE64_STANDARD.encode(key.as_bytes()) ))), (true, Some(RangeBegin::IncludingKey { key, .. })) => Some(s3_xml::Value(format!( "[{}", - base64::encode(key.as_bytes()) + BASE64_STANDARD.encode(key.as_bytes()) ))), _ => None, }, @@ -583,14 +584,16 @@ impl ListObjectsQuery { (Some(token), _) => match &token[..1] { "[" => Ok(RangeBegin::IncludingKey { key: String::from_utf8( - base64::decode(token[1..].as_bytes()) + BASE64_STANDARD + .decode(token[1..].as_bytes()) .ok_or_bad_request("Invalid continuation token")?, )?, fallback_key: None, }), "]" => Ok(RangeBegin::AfterKey { key: String::from_utf8( - base64::decode(token[1..].as_bytes()) + BASE64_STANDARD + .decode(token[1..].as_bytes()) .ok_or_bad_request("Invalid continuation token")?, )?, }), diff --git a/src/api/s3/post_object.rs b/src/api/s3/post_object.rs index d063faa4..da542526 100644 --- a/src/api/s3/post_object.rs +++ b/src/api/s3/post_object.rs @@ -4,6 +4,7 @@ use std::ops::RangeInclusive; use std::sync::Arc; use std::task::{Context, Poll}; +use base64::prelude::*; use bytes::Bytes; use chrono::{DateTime, Duration, Utc}; use futures::{Stream, StreamExt}; @@ -138,7 +139,9 @@ pub async fn handle_post_object( .get_existing_bucket(bucket_id) .await?; - let decoded_policy = base64::decode(&policy).ok_or_bad_request("Invalid policy")?; + let decoded_policy = BASE64_STANDARD + .decode(&policy) + .ok_or_bad_request("Invalid policy")?; let decoded_policy: Policy = serde_json::from_slice(&decoded_policy).ok_or_bad_request("Invalid policy")?; diff --git a/src/api/s3/put.rs b/src/api/s3/put.rs index c08fe40a..350ab884 100644 --- a/src/api/s3/put.rs +++ b/src/api/s3/put.rs @@ -1,6 +1,7 @@ use std::collections::{BTreeMap, BTreeSet, HashMap}; use std::sync::Arc; +use base64::prelude::*; use futures::prelude::*; use hyper::body::{Body, Bytes}; use hyper::header::{HeaderMap, HeaderValue}; @@ -207,7 +208,7 @@ fn ensure_checksum_matches( } } if let Some(expected_md5) = content_md5 { - if expected_md5.trim_matches('"') != base64::encode(data_md5sum) { + if expected_md5.trim_matches('"') != BASE64_STANDARD.encode(data_md5sum) { return Err(Error::bad_request("Unable to validate content-md5")); } else { trace!("Successfully validated content-md5"); diff --git a/src/block/Cargo.toml b/src/block/Cargo.toml index 1e4eb64e..a7e8bc2c 100644 --- a/src/block/Cargo.toml +++ b/src/block/Cargo.toml @@ -25,11 +25,11 @@ arc-swap = "1.5" async-trait = "0.1.7" bytes = "1.0" hex = "0.4" -tracing = "0.1.30" +tracing = "0.1" rand = "0.8" async-compression = { version = "0.3", features = ["tokio", "zstd"] } -zstd = { version = "0.9", default-features = false } +zstd = { version = "0.12", default-features = false } serde = { version = "1.0", default-features = false, features = ["derive", "rc"] } serde_bytes = "0.11" diff --git a/src/db/Cargo.toml b/src/db/Cargo.toml index c479d9d1..95bde6d5 100644 --- a/src/db/Cargo.toml +++ b/src/db/Cargo.toml @@ -19,18 +19,18 @@ required-features = ["cli"] [dependencies] err-derive = "0.3" hexdump = "0.1" -tracing = "0.1.30" +tracing = "0.1" heed = { version = "0.11", default-features = false, features = ["lmdb"], optional = true } -rusqlite = { version = "0.27", optional = true } +rusqlite = { version = "0.28", optional = true } sled = { version = "0.34", optional = true } # cli deps -clap = { version = "3.1.18", optional = true, features = ["derive", "env"] } +clap = { version = "4.1", optional = true, features = ["derive", "env"] } pretty_env_logger = { version = "0.4", optional = true } [dev-dependencies] -mktemp = "0.4" +mktemp = "0.5" [features] default = [ "sled" ] diff --git a/src/garage/Cargo.toml b/src/garage/Cargo.toml index b43b0242..f938f356 100644 --- a/src/garage/Cargo.toml +++ b/src/garage/Cargo.toml @@ -33,10 +33,10 @@ garage_web = { version = "0.8.1", path = "../web" } backtrace = "0.3" bytes = "1.0" bytesize = "1.1" -timeago = "0.3" +timeago = "0.4" parse_duration = "2.1" hex = "0.4" -tracing = { version = "0.1.30" } +tracing = { version = "0.1" } tracing-subscriber = { version = "0.3", features = ["env-filter"] } rand = "0.8" async-trait = "0.1.7" @@ -45,7 +45,7 @@ sodiumoxide = { version = "0.2.5-0", package = "kuska-sodiumoxide" } serde = { version = "1.0", default-features = false, features = ["derive", "rc"] } serde_bytes = "0.11" structopt = { version = "0.3", default-features = false } -toml = "0.5" +toml = "0.6" futures = "0.3" futures-util = "0.3" @@ -69,7 +69,7 @@ sha2 = "0.10" static_init = "1.0" assert-json-diff = "2.0" serde_json = "1.0" -base64 = "0.13" +base64 = "0.21" [features] diff --git a/src/garage/admin.rs b/src/garage/admin.rs index 305c5c65..4eabebca 100644 --- a/src/garage/admin.rs +++ b/src/garage/admin.rs @@ -15,6 +15,7 @@ use garage_util::time::*; use garage_table::replication::*; use garage_table::*; +use garage_rpc::ring::PARTITION_BITS; use garage_rpc::*; use garage_block::manager::BlockResyncErrorInfo; @@ -783,6 +784,7 @@ impl AdminRpcHandler { for node in ring.layout.node_ids().iter() { let mut opt = opt.clone(); opt.all_nodes = false; + opt.skip_global = true; writeln!(&mut ret, "\n======================").unwrap(); writeln!(&mut ret, "Stats for node {:?}:", node).unwrap(); @@ -799,6 +801,15 @@ impl AdminRpcHandler { Err(e) => writeln!(&mut ret, "Network error: {}", e).unwrap(), } } + + writeln!(&mut ret, "\n======================").unwrap(); + write!( + &mut ret, + "Cluster statistics:\n\n{}", + self.gather_cluster_stats() + ) + .unwrap(); + Ok(AdminRpc::Ok(ret)) } else { Ok(AdminRpc::Ok(self.gather_stats_local(opt)?)) @@ -819,22 +830,6 @@ impl AdminRpcHandler { writeln!(&mut ret, "\nDatabase engine: {}", self.garage.db.engine()).unwrap(); - // Gather ring statistics - let ring = self.garage.system.ring.borrow().clone(); - let mut ring_nodes = HashMap::new(); - for (_i, loc) in ring.partitions().iter() { - for n in ring.get_nodes(loc, ring.replication_factor).iter() { - if !ring_nodes.contains_key(n) { - ring_nodes.insert(*n, 0usize); - } - *ring_nodes.get_mut(n).unwrap() += 1; - } - } - writeln!(&mut ret, "\nRing nodes & partition count:").unwrap(); - for (n, c) in ring_nodes.iter() { - writeln!(&mut ret, " {:?} {}", n, c).unwrap(); - } - // Gather table statistics let mut table = vec![" Table\tItems\tMklItems\tMklTodo\tGcTodo".into()]; table.push(self.gather_table_stats(&self.garage.bucket_table, opt.detailed)?); @@ -881,12 +876,108 @@ impl AdminRpcHandler { .unwrap(); if !opt.detailed { - writeln!(&mut ret, "\nIf values are missing (marked as NC), consider adding the --detailed flag - this will be slow.").unwrap(); + writeln!(&mut ret, "\nIf values are missing above (marked as NC), consider adding the --detailed flag (this will be slow).").unwrap(); + } + + if !opt.skip_global { + write!(&mut ret, "\n{}", self.gather_cluster_stats()).unwrap(); } Ok(ret) } + fn gather_cluster_stats(&self) -> String { + let mut ret = String::new(); + + // Gather storage node and free space statistics + let layout = &self.garage.system.ring.borrow().layout; + let mut node_partition_count = HashMap::<Uuid, u64>::new(); + for short_id in layout.ring_assignation_data.iter() { + let id = layout.node_id_vec[*short_id as usize]; + *node_partition_count.entry(id).or_default() += 1; + } + let node_info = self + .garage + .system + .get_known_nodes() + .into_iter() + .map(|n| (n.id, n)) + .collect::<HashMap<_, _>>(); + + let mut table = vec![" ID\tHostname\tZone\tCapacity\tPart.\tDataAvail\tMetaAvail".into()]; + for (id, parts) in node_partition_count.iter() { + let info = node_info.get(id); + let status = info.map(|x| &x.status); + let role = layout.roles.get(id).and_then(|x| x.0.as_ref()); + let hostname = status.map(|x| x.hostname.as_str()).unwrap_or("?"); + let zone = role.map(|x| x.zone.as_str()).unwrap_or("?"); + let capacity = role.map(|x| x.capacity_string()).unwrap_or("?".into()); + let avail_str = |x| match x { + Some((avail, total)) => { + let pct = (avail as f64) / (total as f64) * 100.; + let avail = bytesize::ByteSize::b(avail); + let total = bytesize::ByteSize::b(total); + format!("{}/{} ({:.1}%)", avail, total, pct) + } + None => "?".into(), + }; + let data_avail = avail_str(status.and_then(|x| x.data_disk_avail)); + let meta_avail = avail_str(status.and_then(|x| x.meta_disk_avail)); + table.push(format!( + " {:?}\t{}\t{}\t{}\t{}\t{}\t{}", + id, hostname, zone, capacity, parts, data_avail, meta_avail + )); + } + write!( + &mut ret, + "Storage nodes:\n{}", + format_table_to_string(table) + ) + .unwrap(); + + let meta_part_avail = node_partition_count + .iter() + .filter_map(|(id, parts)| { + node_info + .get(id) + .and_then(|x| x.status.meta_disk_avail) + .map(|c| c.0 / *parts) + }) + .collect::<Vec<_>>(); + let data_part_avail = node_partition_count + .iter() + .filter_map(|(id, parts)| { + node_info + .get(id) + .and_then(|x| x.status.data_disk_avail) + .map(|c| c.0 / *parts) + }) + .collect::<Vec<_>>(); + if !meta_part_avail.is_empty() && !data_part_avail.is_empty() { + let meta_avail = + bytesize::ByteSize(meta_part_avail.iter().min().unwrap() * (1 << PARTITION_BITS)); + let data_avail = + bytesize::ByteSize(data_part_avail.iter().min().unwrap() * (1 << PARTITION_BITS)); + writeln!( + &mut ret, + "\nEstimated available storage space cluster-wide (might be lower in practice):" + ) + .unwrap(); + if meta_part_avail.len() < node_partition_count.len() + || data_part_avail.len() < node_partition_count.len() + { + writeln!(&mut ret, " data: < {}", data_avail).unwrap(); + writeln!(&mut ret, " metadata: < {}", meta_avail).unwrap(); + writeln!(&mut ret, "A precise estimate could not be given as information is missing for some storage nodes.").unwrap(); + } else { + writeln!(&mut ret, " data: {}", data_avail).unwrap(); + writeln!(&mut ret, " metadata: {}", meta_avail).unwrap(); + } + } + + ret + } + fn gather_table_stats<F, R>( &self, t: &Arc<Table<F, R>>, diff --git a/src/garage/cli/cmd.rs b/src/garage/cli/cmd.rs index 46e9113c..af7f1aa1 100644 --- a/src/garage/cli/cmd.rs +++ b/src/garage/cli/cmd.rs @@ -59,18 +59,29 @@ pub async fn cmd_status(rpc_cli: &Endpoint<SystemRpc, ()>, rpc_host: NodeID) -> let layout = fetch_layout(rpc_cli, rpc_host).await?; println!("==== HEALTHY NODES ===="); - let mut healthy_nodes = vec!["ID\tHostname\tAddress\tTags\tZone\tCapacity".to_string()]; + let mut healthy_nodes = + vec!["ID\tHostname\tAddress\tTags\tZone\tCapacity\tDataAvail\tMetaAvail".to_string()]; for adv in status.iter().filter(|adv| adv.is_up) { match layout.roles.get(&adv.id) { Some(NodeRoleV(Some(cfg))) => { + let data_avail = match &adv.status.data_disk_avail { + _ if cfg.capacity.is_none() => "N/A".into(), + Some((avail, total)) => { + let pct = (*avail as f64) / (*total as f64) * 100.; + let avail = bytesize::ByteSize::b(*avail); + format!("{} ({:.1}%)", avail, pct) + } + None => "?".into(), + }; healthy_nodes.push(format!( - "{id:?}\t{host}\t{addr}\t[{tags}]\t{zone}\t{capacity}", + "{id:?}\t{host}\t{addr}\t[{tags}]\t{zone}\t{capacity}\t{data_avail}", id = adv.id, host = adv.status.hostname, addr = adv.addr, tags = cfg.tags.join(","), zone = cfg.zone, capacity = cfg.capacity_string(), + data_avail = data_avail, )); } _ => { diff --git a/src/garage/cli/structs.rs b/src/garage/cli/structs.rs index 661a71f0..01ae92da 100644 --- a/src/garage/cli/structs.rs +++ b/src/garage/cli/structs.rs @@ -504,6 +504,11 @@ pub struct StatsOpt { /// Gather detailed statistics (this can be long) #[structopt(short = "d", long = "detailed")] pub detailed: bool, + + /// Don't show global cluster stats (internal use in RPC) + #[structopt(skip)] + #[serde(default)] + pub skip_global: bool, } #[derive(Serialize, Deserialize, StructOpt, Debug, Eq, PartialEq, Clone)] diff --git a/src/garage/tests/common/garage.rs b/src/garage/tests/common/garage.rs index 44d727f9..8f994f49 100644 --- a/src/garage/tests/common/garage.rs +++ b/src/garage/tests/common/garage.rs @@ -25,6 +25,7 @@ pub struct Instance { pub s3_port: u16, pub k2v_port: u16, pub web_port: u16, + pub admin_port: u16, } impl Instance { @@ -105,6 +106,7 @@ api_bind_addr = "127.0.0.1:{admin_port}" s3_port: port, k2v_port: port + 1, web_port: port + 3, + admin_port: port + 4, } } diff --git a/src/garage/tests/k2v/batch.rs b/src/garage/tests/k2v/batch.rs index 6abba1c5..595d0ba8 100644 --- a/src/garage/tests/k2v/batch.rs +++ b/src/garage/tests/k2v/batch.rs @@ -3,6 +3,7 @@ use std::collections::HashMap; use crate::common; use assert_json_diff::assert_json_eq; +use base64::prelude::*; use serde_json::json; use super::json_body; @@ -36,12 +37,12 @@ async fn test_batch() { {{"pk": "root", "sk": "d.2", "ct": null, "v": "{}"}}, {{"pk": "root", "sk": "e", "ct": null, "v": "{}"}} ]"#, - base64::encode(values.get(&"a").unwrap()), - base64::encode(values.get(&"b").unwrap()), - base64::encode(values.get(&"c").unwrap()), - base64::encode(values.get(&"d.1").unwrap()), - base64::encode(values.get(&"d.2").unwrap()), - base64::encode(values.get(&"e").unwrap()), + BASE64_STANDARD.encode(values.get(&"a").unwrap()), + BASE64_STANDARD.encode(values.get(&"b").unwrap()), + BASE64_STANDARD.encode(values.get(&"c").unwrap()), + BASE64_STANDARD.encode(values.get(&"d.1").unwrap()), + BASE64_STANDARD.encode(values.get(&"d.2").unwrap()), + BASE64_STANDARD.encode(values.get(&"e").unwrap()), ) .into_bytes(), ) @@ -120,12 +121,12 @@ async fn test_batch() { "tombstones": false, "singleItem": false, "items": [ - {"sk": "a", "ct": ct.get("a").unwrap(), "v": [base64::encode(values.get("a").unwrap())]}, - {"sk": "b", "ct": ct.get("b").unwrap(), "v": [base64::encode(values.get("b").unwrap())]}, - {"sk": "c", "ct": ct.get("c").unwrap(), "v": [base64::encode(values.get("c").unwrap())]}, - {"sk": "d.1", "ct": ct.get("d.1").unwrap(), "v": [base64::encode(values.get("d.1").unwrap())]}, - {"sk": "d.2", "ct": ct.get("d.2").unwrap(), "v": [base64::encode(values.get("d.2").unwrap())]}, - {"sk": "e", "ct": ct.get("e").unwrap(), "v": [base64::encode(values.get("e").unwrap())]} + {"sk": "a", "ct": ct.get("a").unwrap(), "v": [BASE64_STANDARD.encode(values.get("a").unwrap())]}, + {"sk": "b", "ct": ct.get("b").unwrap(), "v": [BASE64_STANDARD.encode(values.get("b").unwrap())]}, + {"sk": "c", "ct": ct.get("c").unwrap(), "v": [BASE64_STANDARD.encode(values.get("c").unwrap())]}, + {"sk": "d.1", "ct": ct.get("d.1").unwrap(), "v": [BASE64_STANDARD.encode(values.get("d.1").unwrap())]}, + {"sk": "d.2", "ct": ct.get("d.2").unwrap(), "v": [BASE64_STANDARD.encode(values.get("d.2").unwrap())]}, + {"sk": "e", "ct": ct.get("e").unwrap(), "v": [BASE64_STANDARD.encode(values.get("e").unwrap())]} ], "more": false, "nextStart": null, @@ -141,10 +142,10 @@ async fn test_batch() { "tombstones": false, "singleItem": false, "items": [ - {"sk": "c", "ct": ct.get("c").unwrap(), "v": [base64::encode(values.get("c").unwrap())]}, - {"sk": "d.1", "ct": ct.get("d.1").unwrap(), "v": [base64::encode(values.get("d.1").unwrap())]}, - {"sk": "d.2", "ct": ct.get("d.2").unwrap(), "v": [base64::encode(values.get("d.2").unwrap())]}, - {"sk": "e", "ct": ct.get("e").unwrap(), "v": [base64::encode(values.get("e").unwrap())]} + {"sk": "c", "ct": ct.get("c").unwrap(), "v": [BASE64_STANDARD.encode(values.get("c").unwrap())]}, + {"sk": "d.1", "ct": ct.get("d.1").unwrap(), "v": [BASE64_STANDARD.encode(values.get("d.1").unwrap())]}, + {"sk": "d.2", "ct": ct.get("d.2").unwrap(), "v": [BASE64_STANDARD.encode(values.get("d.2").unwrap())]}, + {"sk": "e", "ct": ct.get("e").unwrap(), "v": [BASE64_STANDARD.encode(values.get("e").unwrap())]} ], "more": false, "nextStart": null, @@ -160,9 +161,9 @@ async fn test_batch() { "tombstones": false, "singleItem": false, "items": [ - {"sk": "c", "ct": ct.get("c").unwrap(), "v": [base64::encode(values.get("c").unwrap())]}, - {"sk": "d.1", "ct": ct.get("d.1").unwrap(), "v": [base64::encode(values.get("d.1").unwrap())]}, - {"sk": "d.2", "ct": ct.get("d.2").unwrap(), "v": [base64::encode(values.get("d.2").unwrap())]}, + {"sk": "c", "ct": ct.get("c").unwrap(), "v": [BASE64_STANDARD.encode(values.get("c").unwrap())]}, + {"sk": "d.1", "ct": ct.get("d.1").unwrap(), "v": [BASE64_STANDARD.encode(values.get("d.1").unwrap())]}, + {"sk": "d.2", "ct": ct.get("d.2").unwrap(), "v": [BASE64_STANDARD.encode(values.get("d.2").unwrap())]}, ], "more": false, "nextStart": null, @@ -178,8 +179,8 @@ async fn test_batch() { "tombstones": false, "singleItem": false, "items": [ - {"sk": "c", "ct": ct.get("c").unwrap(), "v": [base64::encode(values.get("c").unwrap())]}, - {"sk": "b", "ct": ct.get("b").unwrap(), "v": [base64::encode(values.get("b").unwrap())]}, + {"sk": "c", "ct": ct.get("c").unwrap(), "v": [BASE64_STANDARD.encode(values.get("c").unwrap())]}, + {"sk": "b", "ct": ct.get("b").unwrap(), "v": [BASE64_STANDARD.encode(values.get("b").unwrap())]}, ], "more": false, "nextStart": null, @@ -195,8 +196,8 @@ async fn test_batch() { "tombstones": false, "singleItem": false, "items": [ - {"sk": "c", "ct": ct.get("c").unwrap(), "v": [base64::encode(values.get("c").unwrap())]}, - {"sk": "b", "ct": ct.get("b").unwrap(), "v": [base64::encode(values.get("b").unwrap())]}, + {"sk": "c", "ct": ct.get("c").unwrap(), "v": [BASE64_STANDARD.encode(values.get("c").unwrap())]}, + {"sk": "b", "ct": ct.get("b").unwrap(), "v": [BASE64_STANDARD.encode(values.get("b").unwrap())]}, ], "more": false, "nextStart": null, @@ -212,7 +213,7 @@ async fn test_batch() { "tombstones": false, "singleItem": false, "items": [ - {"sk": "a", "ct": ct.get("a").unwrap(), "v": [base64::encode(values.get("a").unwrap())]} + {"sk": "a", "ct": ct.get("a").unwrap(), "v": [BASE64_STANDARD.encode(values.get("a").unwrap())]} ], "more": true, "nextStart": "b", @@ -228,8 +229,8 @@ async fn test_batch() { "tombstones": false, "singleItem": false, "items": [ - {"sk": "d.1", "ct": ct.get("d.1").unwrap(), "v": [base64::encode(values.get("d.1").unwrap())]}, - {"sk": "d.2", "ct": ct.get("d.2").unwrap(), "v": [base64::encode(values.get("d.2").unwrap())]} + {"sk": "d.1", "ct": ct.get("d.1").unwrap(), "v": [BASE64_STANDARD.encode(values.get("d.1").unwrap())]}, + {"sk": "d.2", "ct": ct.get("d.2").unwrap(), "v": [BASE64_STANDARD.encode(values.get("d.2").unwrap())]} ], "more": false, "nextStart": null, @@ -255,10 +256,10 @@ async fn test_batch() { {{"pk": "root", "sk": "d.2", "ct": null, "v": "{}"}} ]"#, ct.get(&"b").unwrap(), - base64::encode(values.get(&"c'").unwrap()), + BASE64_STANDARD.encode(values.get(&"c'").unwrap()), ct.get(&"d.1").unwrap(), - base64::encode(values.get(&"d.1'").unwrap()), - base64::encode(values.get(&"d.2'").unwrap()), + BASE64_STANDARD.encode(values.get(&"d.1'").unwrap()), + BASE64_STANDARD.encode(values.get(&"d.2'").unwrap()), ) .into_bytes(), ) @@ -333,11 +334,11 @@ async fn test_batch() { "tombstones": false, "singleItem": false, "items": [ - {"sk": "a", "ct": ct.get("a").unwrap(), "v": [base64::encode(values.get("a").unwrap())]}, - {"sk": "c", "ct": ct.get("c").unwrap(), "v": [base64::encode(values.get("c").unwrap()), base64::encode(values.get("c'").unwrap())]}, - {"sk": "d.1", "ct": ct.get("d.1").unwrap(), "v": [base64::encode(values.get("d.1'").unwrap())]}, - {"sk": "d.2", "ct": ct.get("d.2").unwrap(), "v": [base64::encode(values.get("d.2").unwrap()), base64::encode(values.get("d.2'").unwrap())]}, - {"sk": "e", "ct": ct.get("e").unwrap(), "v": [base64::encode(values.get("e").unwrap())]} + {"sk": "a", "ct": ct.get("a").unwrap(), "v": [BASE64_STANDARD.encode(values.get("a").unwrap())]}, + {"sk": "c", "ct": ct.get("c").unwrap(), "v": [BASE64_STANDARD.encode(values.get("c").unwrap()), BASE64_STANDARD.encode(values.get("c'").unwrap())]}, + {"sk": "d.1", "ct": ct.get("d.1").unwrap(), "v": [BASE64_STANDARD.encode(values.get("d.1'").unwrap())]}, + {"sk": "d.2", "ct": ct.get("d.2").unwrap(), "v": [BASE64_STANDARD.encode(values.get("d.2").unwrap()), BASE64_STANDARD.encode(values.get("d.2'").unwrap())]}, + {"sk": "e", "ct": ct.get("e").unwrap(), "v": [BASE64_STANDARD.encode(values.get("e").unwrap())]} ], "more": false, "nextStart": null, @@ -353,8 +354,8 @@ async fn test_batch() { "tombstones": false, "singleItem": false, "items": [ - {"sk": "d.1", "ct": ct.get("d.1").unwrap(), "v": [base64::encode(values.get("d.1'").unwrap())]}, - {"sk": "d.2", "ct": ct.get("d.2").unwrap(), "v": [base64::encode(values.get("d.2").unwrap()), base64::encode(values.get("d.2'").unwrap())]}, + {"sk": "d.1", "ct": ct.get("d.1").unwrap(), "v": [BASE64_STANDARD.encode(values.get("d.1'").unwrap())]}, + {"sk": "d.2", "ct": ct.get("d.2").unwrap(), "v": [BASE64_STANDARD.encode(values.get("d.2").unwrap()), BASE64_STANDARD.encode(values.get("d.2'").unwrap())]}, ], "more": false, "nextStart": null, @@ -370,7 +371,7 @@ async fn test_batch() { "tombstones": false, "singleItem": false, "items": [ - {"sk": "d.1", "ct": ct.get("d.1").unwrap(), "v": [base64::encode(values.get("d.1'").unwrap())]}, + {"sk": "d.1", "ct": ct.get("d.1").unwrap(), "v": [BASE64_STANDARD.encode(values.get("d.1'").unwrap())]}, ], "more": false, "nextStart": null, @@ -386,7 +387,7 @@ async fn test_batch() { "tombstones": false, "singleItem": false, "items": [ - {"sk": "d.1", "ct": ct.get("d.1").unwrap(), "v": [base64::encode(values.get("d.1'").unwrap())]}, + {"sk": "d.1", "ct": ct.get("d.1").unwrap(), "v": [BASE64_STANDARD.encode(values.get("d.1'").unwrap())]}, ], "more": true, "nextStart": "d.2", @@ -402,7 +403,7 @@ async fn test_batch() { "tombstones": false, "singleItem": false, "items": [ - {"sk": "d.2", "ct": ct.get("d.2").unwrap(), "v": [base64::encode(values.get("d.2").unwrap()), base64::encode(values.get("d.2'").unwrap())]}, + {"sk": "d.2", "ct": ct.get("d.2").unwrap(), "v": [BASE64_STANDARD.encode(values.get("d.2").unwrap()), BASE64_STANDARD.encode(values.get("d.2'").unwrap())]}, ], "more": false, "nextStart": null, @@ -418,8 +419,8 @@ async fn test_batch() { "tombstones": false, "singleItem": false, "items": [ - {"sk": "d.2", "ct": ct.get("d.2").unwrap(), "v": [base64::encode(values.get("d.2").unwrap()), base64::encode(values.get("d.2'").unwrap())]}, - {"sk": "d.1", "ct": ct.get("d.1").unwrap(), "v": [base64::encode(values.get("d.1'").unwrap())]}, + {"sk": "d.2", "ct": ct.get("d.2").unwrap(), "v": [BASE64_STANDARD.encode(values.get("d.2").unwrap()), BASE64_STANDARD.encode(values.get("d.2'").unwrap())]}, + {"sk": "d.1", "ct": ct.get("d.1").unwrap(), "v": [BASE64_STANDARD.encode(values.get("d.1'").unwrap())]}, ], "more": false, "nextStart": null, @@ -435,8 +436,8 @@ async fn test_batch() { "tombstones": false, "singleItem": false, "items": [ - {"sk": "d.2", "ct": ct.get("d.2").unwrap(), "v": [base64::encode(values.get("d.2").unwrap()), base64::encode(values.get("d.2'").unwrap())]}, - {"sk": "d.1", "ct": ct.get("d.1").unwrap(), "v": [base64::encode(values.get("d.1'").unwrap())]}, + {"sk": "d.2", "ct": ct.get("d.2").unwrap(), "v": [BASE64_STANDARD.encode(values.get("d.2").unwrap()), BASE64_STANDARD.encode(values.get("d.2'").unwrap())]}, + {"sk": "d.1", "ct": ct.get("d.1").unwrap(), "v": [BASE64_STANDARD.encode(values.get("d.1'").unwrap())]}, ], "more": false, "nextStart": null, @@ -452,8 +453,8 @@ async fn test_batch() { "tombstones": false, "singleItem": false, "items": [ - {"sk": "d.1", "ct": ct.get("d.1").unwrap(), "v": [base64::encode(values.get("d.1'").unwrap())]}, - {"sk": "d.2", "ct": ct.get("d.2").unwrap(), "v": [base64::encode(values.get("d.2").unwrap()), base64::encode(values.get("d.2'").unwrap())]}, + {"sk": "d.1", "ct": ct.get("d.1").unwrap(), "v": [BASE64_STANDARD.encode(values.get("d.1'").unwrap())]}, + {"sk": "d.2", "ct": ct.get("d.2").unwrap(), "v": [BASE64_STANDARD.encode(values.get("d.2").unwrap()), BASE64_STANDARD.encode(values.get("d.2'").unwrap())]}, ], "more": false, "nextStart": null, @@ -563,8 +564,8 @@ async fn test_batch() { "tombstones": false, "singleItem": false, "items": [ - {"sk": "c", "ct": ct.get("c").unwrap(), "v": [base64::encode(values.get("c").unwrap()), base64::encode(values.get("c'").unwrap())]}, - {"sk": "e", "ct": ct.get("e").unwrap(), "v": [base64::encode(values.get("e").unwrap())]} + {"sk": "c", "ct": ct.get("c").unwrap(), "v": [BASE64_STANDARD.encode(values.get("c").unwrap()), BASE64_STANDARD.encode(values.get("c'").unwrap())]}, + {"sk": "e", "ct": ct.get("e").unwrap(), "v": [BASE64_STANDARD.encode(values.get("e").unwrap())]} ], "more": false, "nextStart": null, @@ -580,8 +581,8 @@ async fn test_batch() { "tombstones": false, "singleItem": false, "items": [ - {"sk": "e", "ct": ct.get("e").unwrap(), "v": [base64::encode(values.get("e").unwrap())]}, - {"sk": "c", "ct": ct.get("c").unwrap(), "v": [base64::encode(values.get("c").unwrap()), base64::encode(values.get("c'").unwrap())]}, + {"sk": "e", "ct": ct.get("e").unwrap(), "v": [BASE64_STANDARD.encode(values.get("e").unwrap())]}, + {"sk": "c", "ct": ct.get("c").unwrap(), "v": [BASE64_STANDARD.encode(values.get("c").unwrap()), BASE64_STANDARD.encode(values.get("c'").unwrap())]}, ], "more": false, "nextStart": null, @@ -599,10 +600,10 @@ async fn test_batch() { "items": [ {"sk": "a", "ct": ct.get("a").unwrap(), "v": [null]}, {"sk": "b", "ct": ct.get("b").unwrap(), "v": [null]}, - {"sk": "c", "ct": ct.get("c").unwrap(), "v": [base64::encode(values.get("c").unwrap()), base64::encode(values.get("c'").unwrap())]}, + {"sk": "c", "ct": ct.get("c").unwrap(), "v": [BASE64_STANDARD.encode(values.get("c").unwrap()), BASE64_STANDARD.encode(values.get("c'").unwrap())]}, {"sk": "d.1", "ct": ct.get("d.1").unwrap(), "v": [null]}, {"sk": "d.2", "ct": ct.get("d.2").unwrap(), "v": [null]}, - {"sk": "e", "ct": ct.get("e").unwrap(), "v": [base64::encode(values.get("e").unwrap())]}, + {"sk": "e", "ct": ct.get("e").unwrap(), "v": [BASE64_STANDARD.encode(values.get("e").unwrap())]}, ], "more": false, "nextStart": null, diff --git a/src/garage/tests/k2v/item.rs b/src/garage/tests/k2v/item.rs index 2641386f..588836c7 100644 --- a/src/garage/tests/k2v/item.rs +++ b/src/garage/tests/k2v/item.rs @@ -3,6 +3,7 @@ use std::time::Duration; use crate::common; use assert_json_diff::assert_json_eq; +use base64::prelude::*; use serde_json::json; use super::json_body; @@ -222,7 +223,10 @@ async fn test_items_and_indices() { let res_json = json_body(res).await; assert_json_eq!( res_json, - [base64::encode(&content2), base64::encode(&content3)] + [ + BASE64_STANDARD.encode(&content2), + BASE64_STANDARD.encode(&content3) + ] ); // ReadIndex -- now there should be some stuff @@ -411,7 +415,7 @@ async fn test_item_return_format() { "application/json" ); let res_body = json_body(res).await; - assert_json_eq!(res_body, json!([base64::encode(&single_value)])); + assert_json_eq!(res_body, json!([BASE64_STANDARD.encode(&single_value)])); // f2: binary let res = ctx @@ -452,7 +456,7 @@ async fn test_item_return_format() { "application/json" ); let res_body = json_body(res).await; - assert_json_eq!(res_body, json!([base64::encode(&single_value)])); + assert_json_eq!(res_body, json!([BASE64_STANDARD.encode(&single_value)])); // -- Test with a second, concurrent value -- let res = ctx @@ -488,8 +492,8 @@ async fn test_item_return_format() { assert_json_eq!( res_body, json!([ - base64::encode(&single_value), - base64::encode(&concurrent_value) + BASE64_STANDARD.encode(&single_value), + BASE64_STANDARD.encode(&concurrent_value) ]) ); @@ -512,8 +516,8 @@ async fn test_item_return_format() { assert_json_eq!( res_body, json!([ - base64::encode(&single_value), - base64::encode(&concurrent_value) + BASE64_STANDARD.encode(&single_value), + BASE64_STANDARD.encode(&concurrent_value) ]) ); @@ -550,8 +554,8 @@ async fn test_item_return_format() { assert_json_eq!( res_body, json!([ - base64::encode(&single_value), - base64::encode(&concurrent_value) + BASE64_STANDARD.encode(&single_value), + BASE64_STANDARD.encode(&concurrent_value) ]) ); @@ -587,7 +591,10 @@ async fn test_item_return_format() { "application/json" ); let res_body = json_body(res).await; - assert_json_eq!(res_body, json!([base64::encode(&concurrent_value), null])); + assert_json_eq!( + res_body, + json!([BASE64_STANDARD.encode(&concurrent_value), null]) + ); // f1: not specified let res = ctx @@ -612,7 +619,10 @@ async fn test_item_return_format() { .unwrap() .to_string(); let res_body = json_body(res).await; - assert_json_eq!(res_body, json!([base64::encode(&concurrent_value), null])); + assert_json_eq!( + res_body, + json!([BASE64_STANDARD.encode(&concurrent_value), null]) + ); // f2: binary let res = ctx @@ -644,7 +654,10 @@ async fn test_item_return_format() { "application/json" ); let res_body = json_body(res).await; - assert_json_eq!(res_body, json!([base64::encode(&concurrent_value), null])); + assert_json_eq!( + res_body, + json!([BASE64_STANDARD.encode(&concurrent_value), null]) + ); // -- Delete everything -- let res = ctx diff --git a/src/garage/tests/s3/website.rs b/src/garage/tests/s3/website.rs index 244a2fa0..f57e31ee 100644 --- a/src/garage/tests/s3/website.rs +++ b/src/garage/tests/s3/website.rs @@ -1,5 +1,8 @@ use crate::common; use crate::common::ext::*; +use crate::k2v::json_body; + +use assert_json_diff::assert_json_eq; use aws_sdk_s3::{ model::{CorsConfiguration, CorsRule, ErrorDocument, IndexDocument, WebsiteConfiguration}, types::ByteStream, @@ -9,6 +12,7 @@ use hyper::{ body::{to_bytes, Body}, Client, }; +use serde_json::json; const BODY: &[u8; 16] = b"<h1>bonjour</h1>"; const BODY_ERR: &[u8; 6] = b"erreur"; @@ -49,6 +53,28 @@ async fn test_website() { BODY.as_ref() ); /* check that we do not leak body */ + let admin_req = || { + Request::builder() + .method("GET") + .uri(format!("http://127.0.0.1:{}/check", ctx.garage.admin_port)) + .header("domain", format!("{}", BCKT_NAME)) + .body(Body::empty()) + .unwrap() + }; + + let admin_resp = client.request(admin_req()).await.unwrap(); + assert_eq!(admin_resp.status(), StatusCode::BAD_REQUEST); + let res_body = json_body(admin_resp).await; + assert_json_eq!( + res_body, + json!({ + "code": "InvalidRequest", + "message": "Bad request: Bucket is not authorized for website hosting", + "region": "garage-integ-test", + "path": "/check", + }) + ); + ctx.garage .command() .args(["bucket", "website", "--allow", BCKT_NAME]) @@ -62,6 +88,22 @@ async fn test_website() { BODY.as_ref() ); + let admin_req = || { + Request::builder() + .method("GET") + .uri(format!("http://127.0.0.1:{}/check", ctx.garage.admin_port)) + .header("domain", format!("{}", BCKT_NAME)) + .body(Body::empty()) + .unwrap() + }; + + let mut admin_resp = client.request(admin_req()).await.unwrap(); + assert_eq!(admin_resp.status(), StatusCode::OK); + assert_eq!( + to_bytes(admin_resp.body_mut()).await.unwrap().as_ref(), + b"Bucket authorized for website hosting" + ); + ctx.garage .command() .args(["bucket", "website", "--deny", BCKT_NAME]) @@ -74,6 +116,28 @@ async fn test_website() { to_bytes(resp.body_mut()).await.unwrap().as_ref(), BODY.as_ref() ); /* check that we do not leak body */ + + let admin_req = || { + Request::builder() + .method("GET") + .uri(format!("http://127.0.0.1:{}/check", ctx.garage.admin_port)) + .header("domain", format!("{}", BCKT_NAME)) + .body(Body::empty()) + .unwrap() + }; + + let admin_resp = client.request(admin_req()).await.unwrap(); + assert_eq!(admin_resp.status(), StatusCode::BAD_REQUEST); + let res_body = json_body(admin_resp).await; + assert_json_eq!( + res_body, + json!({ + "code": "InvalidRequest", + "message": "Bad request: Bucket is not authorized for website hosting", + "region": "garage-integ-test", + "path": "/check", + }) + ); } #[tokio::test] @@ -322,3 +386,75 @@ async fn test_website_s3_api() { ); } } + +#[tokio::test] +async fn test_website_check_website_enabled() { + let ctx = common::context(); + + let client = Client::new(); + + let admin_req = || { + Request::builder() + .method("GET") + .uri(format!("http://127.0.0.1:{}/check", ctx.garage.admin_port)) + .body(Body::empty()) + .unwrap() + }; + + let admin_resp = client.request(admin_req()).await.unwrap(); + assert_eq!(admin_resp.status(), StatusCode::BAD_REQUEST); + let res_body = json_body(admin_resp).await; + assert_json_eq!( + res_body, + json!({ + "code": "InvalidRequest", + "message": "Bad request: No domain header found", + "region": "garage-integ-test", + "path": "/check", + }) + ); + + let admin_req = || { + Request::builder() + .method("GET") + .uri(format!("http://127.0.0.1:{}/check", ctx.garage.admin_port)) + .header("domain", "foobar") + .body(Body::empty()) + .unwrap() + }; + + let admin_resp = client.request(admin_req()).await.unwrap(); + assert_eq!(admin_resp.status(), StatusCode::NOT_FOUND); + let res_body = json_body(admin_resp).await; + assert_json_eq!( + res_body, + json!({ + "code": "NoSuchBucket", + "message": "Bucket not found: foobar", + "region": "garage-integ-test", + "path": "/check", + }) + ); + + let admin_req = || { + Request::builder() + .method("GET") + .uri(format!("http://127.0.0.1:{}/check", ctx.garage.admin_port)) + .header("domain", "☹") + .body(Body::empty()) + .unwrap() + }; + + let admin_resp = client.request(admin_req()).await.unwrap(); + assert_eq!(admin_resp.status(), StatusCode::BAD_REQUEST); + let res_body = json_body(admin_resp).await; + assert_json_eq!( + res_body, + json!({ + "code": "InvalidRequest", + "message": "Bad request: Invalid characters found in domain header: failed to convert header to a str", + "region": "garage-integ-test", + "path": "/check", + }) + ); +} diff --git a/src/k2v-client/Cargo.toml b/src/k2v-client/Cargo.toml index 7ab38e02..88d52747 100644 --- a/src/k2v-client/Cargo.toml +++ b/src/k2v-client/Cargo.toml @@ -9,20 +9,20 @@ repository = "https://git.deuxfleurs.fr/Deuxfleurs/garage" readme = "../../README.md" [dependencies] -base64 = "0.13.0" -http = "0.2.6" +base64 = "0.21" +http = "0.2" log = "0.4" rusoto_core = { version = "0.48.0", default-features = false, features = ["rustls"] } rusoto_credential = "0.48.0" rusoto_signature = "0.48.0" hyper-rustls = { version = "0.23", default-features = false, features = [ "http1", "http2", "tls12" ] } -serde = "1.0.137" -serde_json = "1.0.81" -thiserror = "1.0.31" -tokio = "1.17.0" +serde = "1.0" +serde_json = "1.0" +thiserror = "1.0" +tokio = "1.24" # cli deps -clap = { version = "3.1.18", optional = true, features = ["derive", "env"] } +clap = { version = "4.1", optional = true, features = ["derive", "env"] } garage_util = { version = "0.8.1", path = "../util", optional = true } diff --git a/src/model/Cargo.toml b/src/model/Cargo.toml index 323c2d64..d1c7cd29 100644 --- a/src/model/Cargo.toml +++ b/src/model/Cargo.toml @@ -22,13 +22,13 @@ garage_util = { version = "0.8.1", path = "../util" } async-trait = "0.1.7" arc-swap = "1.0" -blake2 = "0.9" +blake2 = "0.10" err-derive = "0.3" hex = "0.4" -base64 = "0.13" -tracing = "0.1.30" +base64 = "0.21" +tracing = "0.1" rand = "0.8" -zstd = { version = "0.9", default-features = false } +zstd = { version = "0.12", default-features = false } serde = { version = "1.0", default-features = false, features = ["derive", "rc"] } serde_bytes = "0.11" diff --git a/src/model/k2v/causality.rs b/src/model/k2v/causality.rs index b1ec8035..c80ebd39 100644 --- a/src/model/k2v/causality.rs +++ b/src/model/k2v/causality.rs @@ -7,6 +7,7 @@ //! "causality token", is used in the API and must be sent along with //! each write or delete operation to indicate the previously seen //! versions that we want to overwrite or delete. +use base64::prelude::*; use std::collections::BTreeMap; use std::convert::TryInto; @@ -67,13 +68,13 @@ impl CausalContext { bytes.extend(u64::to_be_bytes(i)); } - base64::encode_config(bytes, base64::URL_SAFE_NO_PAD) + BASE64_URL_SAFE_NO_PAD.encode(bytes) } /// Parse from base64-encoded binary representation. /// Returns None on error. pub fn parse(s: &str) -> Option<Self> { - let bytes = base64::decode_config(s, base64::URL_SAFE_NO_PAD).ok()?; + let bytes = BASE64_URL_SAFE_NO_PAD.decode(s).ok()?; if bytes.len() % 16 != 8 || bytes.len() < 8 { return None; } diff --git a/src/model/k2v/item_table.rs b/src/model/k2v/item_table.rs index bc2b1aef..28646f37 100644 --- a/src/model/k2v/item_table.rs +++ b/src/model/k2v/item_table.rs @@ -176,9 +176,9 @@ impl Crdt for DvvsEntry { impl PartitionKey for K2VItemPartition { fn hash(&self) -> Hash { - use blake2::{Blake2b, Digest}; + use blake2::{Blake2b512, Digest}; - let mut hasher = Blake2b::new(); + let mut hasher = Blake2b512::new(); hasher.update(self.bucket_id.as_slice()); hasher.update(self.partition_key.as_bytes()); let mut hash = [0u8; 32]; diff --git a/src/model/k2v/seen.rs b/src/model/k2v/seen.rs index 314d0f9e..51098710 100644 --- a/src/model/k2v/seen.rs +++ b/src/model/k2v/seen.rs @@ -9,6 +9,7 @@ use std::collections::BTreeMap; +use base64::prelude::*; use serde::{Deserialize, Serialize}; use garage_util::data::Uuid; @@ -78,12 +79,12 @@ impl RangeSeenMarker { let bytes = nonversioned_encode(&self)?; let bytes = zstd::stream::encode_all(&mut &bytes[..], zstd::DEFAULT_COMPRESSION_LEVEL)?; - Ok(base64::encode(&bytes)) + Ok(BASE64_STANDARD.encode(&bytes)) } /// Decode from msgpack+zstd+b64 representation, returns None on error. pub fn decode(s: &str) -> Option<Self> { - let bytes = base64::decode(&s).ok()?; + let bytes = BASE64_STANDARD.decode(&s).ok()?; let bytes = zstd::stream::decode_all(&mut &bytes[..]).ok()?; nonversioned_decode(&bytes).ok() } diff --git a/src/rpc/Cargo.toml b/src/rpc/Cargo.toml index e9a0929a..87ae15ac 100644 --- a/src/rpc/Cargo.toml +++ b/src/rpc/Cargo.toml @@ -20,9 +20,10 @@ arc-swap = "1.0" bytes = "1.0" gethostname = "0.2" hex = "0.4" -tracing = "0.1.30" +tracing = "0.1" rand = "0.8" sodiumoxide = { version = "0.2.5-0", package = "kuska-sodiumoxide" } +systemstat = "0.2.3" async-trait = "0.1.7" serde = { version = "1.0", default-features = false, features = ["derive", "rc"] } diff --git a/src/rpc/lib.rs b/src/rpc/lib.rs index a8cc0030..5aec92c0 100644 --- a/src/rpc/lib.rs +++ b/src/rpc/lib.rs @@ -3,6 +3,9 @@ #[macro_use] extern crate tracing; +mod metrics; +mod system_metrics; + #[cfg(feature = "consul-discovery")] mod consul; #[cfg(feature = "kubernetes-discovery")] @@ -13,9 +16,6 @@ pub mod replication_mode; pub mod ring; pub mod system; -mod metrics; pub mod rpc_helper; pub use rpc_helper::*; - -pub mod system_metrics; diff --git a/src/rpc/system.rs b/src/rpc/system.rs index 90f6a4c2..e0ced8cc 100644 --- a/src/rpc/system.rs +++ b/src/rpc/system.rs @@ -3,6 +3,7 @@ use std::collections::HashMap; use std::io::{Read, Write}; use std::net::{IpAddr, SocketAddr}; use std::path::{Path, PathBuf}; +use std::sync::atomic::Ordering; use std::sync::{Arc, RwLock}; use std::time::{Duration, Instant}; @@ -38,7 +39,6 @@ use crate::replication_mode::*; use crate::ring::*; use crate::rpc_helper::*; -#[cfg(feature = "metrics")] use crate::system_metrics::*; const DISCOVERY_INTERVAL: Duration = Duration::from_secs(60); @@ -106,7 +106,7 @@ pub struct System { consul_discovery: Option<ConsulDiscovery>, #[cfg(feature = "kubernetes-discovery")] kubernetes_discovery: Option<KubernetesDiscoveryConfig>, - #[cfg(feature = "metrics")] + metrics: SystemMetrics, replication_mode: ReplicationMode, @@ -118,18 +118,28 @@ pub struct System { /// Path to metadata directory pub metadata_dir: PathBuf, + /// Path to data directory + pub data_dir: PathBuf, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct NodeStatus { /// Hostname of the node pub hostname: String, + /// Replication factor configured on the node pub replication_factor: usize, /// Cluster layout version pub cluster_layout_version: u64, /// Hash of cluster layout staging data pub cluster_layout_staging_hash: Hash, + + /// Disk usage on partition containing metadata directory (tuple: `(avail, total)`) + #[serde(default)] + pub meta_disk_avail: Option<(u64, u64)>, + /// Disk usage on partition containing data directory (tuple: `(avail, total)`) + #[serde(default)] + pub data_disk_avail: Option<(u64, u64)>, } #[derive(Debug, Clone, Serialize, Deserialize)] @@ -271,18 +281,11 @@ impl System { } }; - let local_status = NodeStatus { - hostname: gethostname::gethostname() - .into_string() - .unwrap_or_else(|_| "<invalid utf-8>".to_string()), - replication_factor, - cluster_layout_version: cluster_layout.version, - cluster_layout_staging_hash: cluster_layout.staging_hash, - }; - - #[cfg(feature = "metrics")] let metrics = SystemMetrics::new(replication_factor); + let mut local_status = NodeStatus::initial(replication_factor, &cluster_layout); + local_status.update_disk_usage(&config.metadata_dir, &config.data_dir, &metrics); + let ring = Ring::new(cluster_layout, replication_factor); let (update_ring, ring) = watch::channel(Arc::new(ring)); @@ -373,12 +376,12 @@ impl System { consul_discovery, #[cfg(feature = "kubernetes-discovery")] kubernetes_discovery: config.kubernetes_discovery.clone(), - #[cfg(feature = "metrics")] metrics, ring, update_ring: Mutex::new(update_ring), metadata_dir: config.metadata_dir.clone(), + data_dir: config.data_dir.clone(), }); sys.system_endpoint.set_handler(sys.clone()); Ok(sys) @@ -416,12 +419,7 @@ impl System { .get(&n.id.into()) .cloned() .map(|(_, st)| st) - .unwrap_or(NodeStatus { - hostname: "?".to_string(), - replication_factor: 0, - cluster_layout_version: 0, - cluster_layout_staging_hash: Hash::from([0u8; 32]), - }), + .unwrap_or(NodeStatus::unknown()), }) .collect::<Vec<_>>(); known_nodes @@ -600,6 +598,9 @@ impl System { let ring = self.ring.borrow(); new_si.cluster_layout_version = ring.layout.version; new_si.cluster_layout_staging_hash = ring.layout.staging_hash; + + new_si.update_disk_usage(&self.metadata_dir, &self.data_dir, &self.metrics); + self.local_status.swap(Arc::new(new_si)); } @@ -864,6 +865,69 @@ impl EndpointHandler<SystemRpc> for System { } } +impl NodeStatus { + fn initial(replication_factor: usize, layout: &ClusterLayout) -> Self { + NodeStatus { + hostname: gethostname::gethostname() + .into_string() + .unwrap_or_else(|_| "<invalid utf-8>".to_string()), + replication_factor, + cluster_layout_version: layout.version, + cluster_layout_staging_hash: layout.staging_hash, + meta_disk_avail: None, + data_disk_avail: None, + } + } + + fn unknown() -> Self { + NodeStatus { + hostname: "?".to_string(), + replication_factor: 0, + cluster_layout_version: 0, + cluster_layout_staging_hash: Hash::from([0u8; 32]), + meta_disk_avail: None, + data_disk_avail: None, + } + } + + fn update_disk_usage(&mut self, meta_dir: &Path, data_dir: &Path, metrics: &SystemMetrics) { + use systemstat::{Platform, System}; + let mounts = System::new().mounts().unwrap_or_default(); + + let mount_avail = |path: &Path| { + mounts + .iter() + .filter(|x| path.starts_with(&x.fs_mounted_on)) + .max_by_key(|x| x.fs_mounted_on.len()) + .map(|x| (x.avail.as_u64(), x.total.as_u64())) + }; + + self.meta_disk_avail = mount_avail(meta_dir); + self.data_disk_avail = mount_avail(data_dir); + + if let Some((avail, total)) = self.meta_disk_avail { + metrics + .values + .meta_disk_avail + .store(avail, Ordering::Relaxed); + metrics + .values + .meta_disk_total + .store(total, Ordering::Relaxed); + } + if let Some((avail, total)) = self.data_disk_avail { + metrics + .values + .data_disk_avail + .store(avail, Ordering::Relaxed); + metrics + .values + .data_disk_total + .store(total, Ordering::Relaxed); + } + } +} + fn get_default_ip() -> Option<IpAddr> { pnet_datalink::interfaces() .iter() diff --git a/src/rpc/system_metrics.rs b/src/rpc/system_metrics.rs index d96b67e4..83f5fa97 100644 --- a/src/rpc/system_metrics.rs +++ b/src/rpc/system_metrics.rs @@ -1,14 +1,31 @@ +use std::sync::atomic::{AtomicU64, Ordering}; +use std::sync::Arc; + use opentelemetry::{global, metrics::*, KeyValue}; /// TableMetrics reference all counter used for metrics pub struct SystemMetrics { pub(crate) _garage_build_info: ValueObserver<u64>, pub(crate) _replication_factor: ValueObserver<u64>, + pub(crate) _disk_avail: ValueObserver<u64>, + pub(crate) _disk_total: ValueObserver<u64>, + pub(crate) values: Arc<SystemMetricsValues>, +} + +#[derive(Default)] +pub struct SystemMetricsValues { + pub(crate) data_disk_total: AtomicU64, + pub(crate) data_disk_avail: AtomicU64, + pub(crate) meta_disk_total: AtomicU64, + pub(crate) meta_disk_avail: AtomicU64, } impl SystemMetrics { pub fn new(replication_factor: usize) -> Self { let meter = global::meter("garage_system"); + let values = Arc::new(SystemMetricsValues::default()); + let values1 = values.clone(); + let values2 = values.clone(); Self { _garage_build_info: meter .u64_value_observer("garage_build_info", move |observer| { @@ -28,6 +45,33 @@ impl SystemMetrics { }) .with_description("Garage replication factor setting") .init(), + _disk_avail: meter + .u64_value_observer("garage_local_disk_avail", move |observer| { + match values1.data_disk_avail.load(Ordering::Relaxed) { + 0 => (), + x => observer.observe(x, &[KeyValue::new("volume", "data")]), + }; + match values1.meta_disk_avail.load(Ordering::Relaxed) { + 0 => (), + x => observer.observe(x, &[KeyValue::new("volume", "metadata")]), + }; + }) + .with_description("Garage available disk space on each node") + .init(), + _disk_total: meter + .u64_value_observer("garage_local_disk_total", move |observer| { + match values2.data_disk_total.load(Ordering::Relaxed) { + 0 => (), + x => observer.observe(x, &[KeyValue::new("volume", "data")]), + }; + match values2.meta_disk_total.load(Ordering::Relaxed) { + 0 => (), + x => observer.observe(x, &[KeyValue::new("volume", "metadata")]), + }; + }) + .with_description("Garage total disk space on each node") + .init(), + values, } } } diff --git a/src/table/Cargo.toml b/src/table/Cargo.toml index 3911c945..a8127f50 100644 --- a/src/table/Cargo.toml +++ b/src/table/Cargo.toml @@ -25,7 +25,7 @@ arc-swap = "1.0" bytes = "1.0" hex = "0.4" hexdump = "0.1" -tracing = "0.1.30" +tracing = "0.1" rand = "0.8" serde = { version = "1.0", default-features = false, features = ["derive", "rc"] } diff --git a/src/util/Cargo.toml b/src/util/Cargo.toml index 1017b1ce..abeccbbd 100644 --- a/src/util/Cargo.toml +++ b/src/util/Cargo.toml @@ -18,7 +18,7 @@ garage_db = { version = "0.8.1", path = "../db" } arc-swap = "1.0" async-trait = "0.1" -blake2 = "0.9" +blake2 = "0.10" bytes = "1.0" digest = "0.10" err-derive = "0.3" @@ -27,7 +27,7 @@ hexdump = "0.1" xxhash-rust = { version = "0.8", default-features = false, features = ["xxh3"] } hex = "0.4" lazy_static = "1.4" -tracing = "0.1.30" +tracing = "0.1" rand = "0.8" sha2 = "0.10" @@ -35,7 +35,7 @@ chrono = "0.4" rmp-serde = "0.15" serde = { version = "1.0", default-features = false, features = ["derive", "rc"] } serde_json = "1.0" -toml = "0.5" +toml = "0.6" futures = "0.3" tokio = { version = "1.0", default-features = false, features = ["rt", "rt-multi-thread", "io-util", "net", "time", "macros", "sync", "signal", "fs"] } @@ -48,7 +48,7 @@ hyper = "0.14" opentelemetry = { version = "0.17", features = [ "rt-tokio", "metrics", "trace" ] } [dev-dependencies] -mktemp = "0.4" +mktemp = "0.5" [features] k2v = [] diff --git a/src/util/data.rs b/src/util/data.rs index 3f61e301..bdd8daee 100644 --- a/src/util/data.rs +++ b/src/util/data.rs @@ -115,9 +115,9 @@ pub fn sha256sum(data: &[u8]) -> Hash { /// Compute the blake2 of a slice pub fn blake2sum(data: &[u8]) -> Hash { - use blake2::{Blake2b, Digest}; + use blake2::{Blake2b512, Digest}; - let mut hasher = Blake2b::new(); + let mut hasher = Blake2b512::new(); hasher.update(data); let mut hash = [0u8; 32]; hash.copy_from_slice(&hasher.finalize()[..32]); diff --git a/src/util/time.rs b/src/util/time.rs index 257b4d2a..42f41a44 100644 --- a/src/util/time.rs +++ b/src/util/time.rs @@ -25,6 +25,6 @@ pub fn increment_logical_clock_2(prev: u64, prev2: u64) -> u64 { pub fn msec_to_rfc3339(msecs: u64) -> String { let secs = msecs as i64 / 1000; let nanos = (msecs as i64 % 1000) as u32 * 1_000_000; - let timestamp = Utc.timestamp(secs, nanos); + let timestamp = Utc.timestamp_opt(secs, nanos).unwrap(); timestamp.to_rfc3339_opts(SecondsFormat::Millis, true) } diff --git a/src/web/Cargo.toml b/src/web/Cargo.toml index dbc5e5fb..19eaed17 100644 --- a/src/web/Cargo.toml +++ b/src/web/Cargo.toml @@ -20,7 +20,7 @@ garage_util = { version = "0.8.1", path = "../util" } garage_table = { version = "0.8.1", path = "../table" } err-derive = "0.3" -tracing = "0.1.30" +tracing = "0.1" percent-encoding = "2.1.0" futures = "0.3" |